From db9b25c8781c20442809e0634d569bfdea2ac819 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 19 May 2017 16:53:28 -0700 Subject: [PATCH 0001/1134] update SHA to working release PiperOrigin-RevId: 156613372 --- .../bazelbuild/rules_typescript/.clang-format | 1 + .../bazelbuild/rules_typescript/.gitignore | 3 + .../bazelbuild/rules_typescript/AUTHORS | 9 + .../bazelbuild/rules_typescript/BUILD | 22 ++ .../rules_typescript/CONTRIBUTING.md | 27 +++ .../bazelbuild/rules_typescript/CONTRIBUTORS | 12 + .../bazelbuild/rules_typescript/LICENSE | 202 ++++++++++++++++ .../bazelbuild/rules_typescript/README.md | 79 +++++++ .../bazelbuild/rules_typescript/WORKSPACE | 26 ++ .../bazelbuild/rules_typescript/defs.bzl | 21 ++ .../rules_typescript/examples/BUILD | 30 +++ .../rules_typescript/examples/bar.ts | 1 + .../rules_typescript/examples/foo.ts | 26 ++ .../rules_typescript/examples/tsconfig.json | 6 + .../rules_typescript/internal/BUILD | 24 ++ .../rules_typescript/internal/build_defs.bzl | 173 ++++++++++++++ .../internal/common/compilation.bzl | 222 ++++++++++++++++++ .../internal/common/json_marshal.bzl | 35 +++ .../internal/common/tsconfig.bzl | 143 +++++++++++ .../rules_typescript/internal/executables.bzl | 22 ++ .../rules_typescript/internal/node.bzl | 61 +++++ .../internal/node_install.bzl | 70 ++++++ .../internal/node_launcher.sh | 93 ++++++++ .../internal/tsc_wrapped/BUILD | 7 + .../internal/tsc_wrapped/tsconfig.json | 7 + .../internal/tsc_wrapped/tsconfig.ts | 131 +++++++++++ .../internal/yarn_install.bzl | 92 ++++++++ .../bazelbuild/rules_typescript/package.json | 12 + 28 files changed, 1557 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/.clang-format create mode 100644 third_party/github.com/bazelbuild/rules_typescript/.gitignore create mode 100644 third_party/github.com/bazelbuild/rules_typescript/AUTHORS create mode 100644 third_party/github.com/bazelbuild/rules_typescript/BUILD create mode 100644 third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTING.md create mode 100644 third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS create mode 100644 third_party/github.com/bazelbuild/rules_typescript/LICENSE create mode 100644 third_party/github.com/bazelbuild/rules_typescript/README.md create mode 100644 third_party/github.com/bazelbuild/rules_typescript/WORKSPACE create mode 100644 third_party/github.com/bazelbuild/rules_typescript/defs.bzl create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/BUILD create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/foo.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig.json create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/BUILD create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/common/json_marshal.bzl create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/yarn_install.bzl create mode 100644 third_party/github.com/bazelbuild/rules_typescript/package.json diff --git a/third_party/github.com/bazelbuild/rules_typescript/.clang-format b/third_party/github.com/bazelbuild/rules_typescript/.clang-format new file mode 100644 index 0000000000..f6cb8ad931 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/.clang-format @@ -0,0 +1 @@ +BasedOnStyle: Google diff --git a/third_party/github.com/bazelbuild/rules_typescript/.gitignore b/third_party/github.com/bazelbuild/rules_typescript/.gitignore new file mode 100644 index 0000000000..6c50b7cc13 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/.gitignore @@ -0,0 +1,3 @@ +.idea +node_modules +/bazel-* diff --git a/third_party/github.com/bazelbuild/rules_typescript/AUTHORS b/third_party/github.com/bazelbuild/rules_typescript/AUTHORS new file mode 100644 index 0000000000..8f95963acc --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/AUTHORS @@ -0,0 +1,9 @@ +# This the official list of Bazel authors for copyright purposes. +# This file is distinct from the CONTRIBUTORS files. +# See the latter for an explanation. + +# Names should be added to this file as: +# Name or Organization +# The email address is not required for organizations. + +Google Inc. diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD b/third_party/github.com/bazelbuild/rules_typescript/BUILD new file mode 100644 index 0000000000..8ec86ceb55 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD @@ -0,0 +1,22 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# The node_modules directory is created by `yarn install` +# WORKAROUND for https://github.com/bazelbuild/bazel/issues/374#issuecomment-296217940 +# see notes in internal/yarn_install.bzl +filegroup( + name = "node_modules", + srcs = glob(["node_modules/**/*"]), + visibility = ["//visibility:public"], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTING.md b/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTING.md new file mode 100644 index 0000000000..745cbdcba1 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTING.md @@ -0,0 +1,27 @@ +Want to contribute? Great! First, read this page (including the small print at the end). + +### Before you contribute +**Before we can use your code, you must sign the +[Google Individual Contributor License Agreement](https://developers.google.com/open-source/cla/individual?csw=1) +(CLA)**, which you can do online. + +The CLA is necessary mainly because you own the copyright to your changes, +even after your contribution becomes part of our codebase, so we need your +permission to use and distribute your code. We also need to be sure of +various other things for instance that you'll tell us if you know that +your code infringes on other people's patents. You don't have to sign +the CLA until after you've submitted your code for review and a member has +approved it, but you must do it before we can put your code into our codebase. + +Before you start working on a larger contribution, you should get in touch +with us first. Use the issue tracker to explain your idea so we can help and +possibly guide you. + +### Code reviews and other contributions. +**All submissions, including submissions by project members, require review.** +TODO(alexeagle): document how external contributions are handled. + +### The small print +Contributions made by corporations are covered by a different agreement than +the one above, the +[Software Grant and Corporate Contributor License Agreement](https://cla.developers.google.com/about/google-corporate). diff --git a/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS b/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS new file mode 100644 index 0000000000..174d3880b0 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS @@ -0,0 +1,12 @@ +# People who have agreed to one of the CLAs and can contribute patches. +# The AUTHORS file lists the copyright holders; this file +# lists people. For example, Google employees are listed here +# but not in AUTHORS, because Google holds the copyright. +# +# https://developers.google.com/open-source/cla/individual +# https://developers.google.com/open-source/cla/corporate +# +# Names should be added to this file as: +# Name + +Alex Eagle diff --git a/third_party/github.com/bazelbuild/rules_typescript/LICENSE b/third_party/github.com/bazelbuild/rules_typescript/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md new file mode 100644 index 0000000000..f895085cd1 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -0,0 +1,79 @@ +# TypeScript rules for Bazel + +**WARNING: this is an early release with limited features. Breaking changes are likely. Not recommended for general use.** + +The TypeScript rules integrate the TypeScript compiler with Bazel. + +## Installation + +First, install a current Bazel distribution. + +Create a `BUILD` file in your project root: + +```python +package(default_visibility = ["//visibility:public"]) +exports_files(["tsconfig.json"]) + +# NOTE: this will move to node_modules/BUILD in a later release +filegroup(name = "node_modules", srcs = glob(["node_modules/**/*"])) +``` + +> Note, on Mac file paths are case-insensitive, so make sure there isn't already +a `build` folder in the project root. + +Next create a `WORKSPACE` file in your project root (or edit the existing one) +containing: + +```python +load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") + +git_repository( + name = "io_bazel_rules_typescript", + remote = "sso://bazel/rules_typescript", + commit = "b25f535a7fdb4382dc67ed455c54b7ba23995c85") + +load("@io_bazel_rules_typescript//:defs.bzl", "node_repositories", "yarn_install") + +node_repositories() +yarn_install(package_json = "//:package.json") + +``` + +## Usage + +Currently, the only available rule is `ts_library` which invokes the TypeScript +compiler on one compilation unit (generally one directory of source files). + +Create a `BUILD` file next to your sources: + +``` +package(default_visibility=["//visibility:public"]) +load("@io_bazel_rules_typescript//:defs.bzl", "ts_library") + +ts_library( + name = "my_code", + srcs = glob(["*.ts"]), + deps = ["//path/to/other:library"], + tsconfig = "//:tsconfig.json", +) +``` + +(Note that you may want to name the ts_library target the same as the enclosing +directory, making it the default target in the package.) + +Then build it: + +`bazel build //path/to/package:target` + +The resulting `.d.ts` file paths will be printed. Additionally, the `.js` +outputs from TypeScript will be written to disk, next to the `.d.ts` files. + +## Notes + +If you'd like a "watch mode", try https://github.com/bazelbuild/bazel-watcher +(note, it's also quite new). + +At some point, we plan to release a tool similar to [gazelle] to generate the +BUILD files from your source code. + +[gazelle]: https://github.com/bazelbuild/rules_go/tree/master/go/tools/gazelle diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE new file mode 100644 index 0000000000..0d08b8fa82 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -0,0 +1,26 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +workspace(name = "io_bazel_rules_typescript") + +load("//:defs.bzl", "node_repositories", "yarn_install") + +# Install a hermetic version of node. +# After this is run, label @io_bazel_rules_typescript_node//:bin/node will exist +node_repositories() + +# Install yarn, and run yarn install to create node_modules. +# After this is run, label @yarn//installed:node_modules will exist. +# (But your rules can reference //:node_modules instead) +yarn_install(package_json = "//:package.json") diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl new file mode 100644 index 0000000000..6023524f76 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl @@ -0,0 +1,21 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" Public API surface is re-exported here. + +Users should not load files under "/internal" +""" +load("//internal:build_defs.bzl", "ts_library") +load("//internal:node_install.bzl", "node_repositories") +load("//internal:yarn_install.bzl", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/BUILD b/third_party/github.com/bazelbuild/rules_typescript/examples/BUILD new file mode 100644 index 0000000000..051e4a1830 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/BUILD @@ -0,0 +1,30 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +package(default_visibility = ["//visibility:public"]) + +load("//:defs.bzl", "ts_library") + +ts_library( + name = "foo_ts_library", + srcs = ["foo.ts"], + tsconfig = ":tsconfig.json", +) + +ts_library( + name = "bar_ts_library", + srcs = ["bar.ts"], + tsconfig = ":tsconfig.json", + deps = [":foo_ts_library"], +) \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts new file mode 100644 index 0000000000..50ddbb79ef --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts @@ -0,0 +1 @@ +import {greeter} from './foo'; \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/foo.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/foo.ts new file mode 100644 index 0000000000..391dec421f --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/foo.ts @@ -0,0 +1,26 @@ +/** + * @license + * Copyright 2017 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export class Greeter { + constructor(public greeting: string) {} + greet() { + return '

' + this.greeting + '

'; + } +}; + +export const greeter = new Greeter('Hello, world!'); +document.body.innerHTML = greeter.greet(); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig.json new file mode 100644 index 0000000000..a83e8e6596 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "strict": true + } +} + diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD new file mode 100644 index 0000000000..33605ddadf --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD @@ -0,0 +1,24 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +package(default_visibility = ["//visibility:public"]) + +load(":node.bzl", "node_binary") + +node_binary( + name = "tsc_wrapped", + data = ["@yarn//installed:node_modules"], + # TODO(alexeagle): plug in tsc_wrapped.js instead + main = "yarn/installed/node_modules/typescript/lib/tsc.js", +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl new file mode 100644 index 0000000000..2caffe03ca --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -0,0 +1,173 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""TypeScript rules. +""" +# pylint: disable=unused-argument +# pylint: disable=missing-docstring +load("//internal:common/compilation.bzl", "compile_ts") +load("//internal:executables.bzl", "get_tsc", "get_node") +load("//internal:common/json_marshal.bzl", "json_marshal") +load("//internal:common/tsconfig.bzl", "create_tsconfig") + +def _compile_action(ctx, inputs, outputs, config_file_path): + externs_files = [] + non_externs_files = [] + for output in outputs: + if output.basename.endswith(".externs.js"): + externs_files.append(output) + elif output.basename.endswith(".es5.MF"): + ctx.file_action(output, content="") + else: + non_externs_files.append(output) + + # TODO(plf): For now we mock creation of files other than {name}.js. + for externs_file in externs_files: + ctx.file_action(output=externs_file, content="") + + ctx.action( + inputs=inputs + [ctx.file.tsconfig], + outputs=non_externs_files, + arguments=["-p", config_file_path], + executable=ctx.executable._tsc) + + +def _devmode_compile_action(ctx, inputs, outputs, config_file_path): + _compile_action(ctx, inputs, outputs, config_file_path) + +def _tsc_wrapped_tsconfig(ctx, + files, + srcs, + devmode_manifest=None, + tsickle_externs=None, + type_blacklisted_declarations=[], + allowed_deps=set(), + jsx_factory=None, + ngc_out=[]): + variant = "" + if devmode_manifest: variant += "_es5" + tsconfig_json = ctx.new_file(ctx.label.name + variant + "_tsconfig.json") + + # The location of tsconfig.json is interpreted as the root of the project + # when it is passed to the TS compiler with the `-p` option: + # https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. + # Our tsconfig.json is in bazel-foo/bazel-out/local-fastbuild/bin/{package_path} + # because it's generated in the execution phase. However, our source files are in + # bazel-foo/ and therefore we need to strip some parent directories for each + # f.path. + + workspace_path = "/".join([".."] * len(tsconfig_json.dirname.split("/"))) + host_bin = "bazel-out/host/bin" + + if ctx.workspace_name == "io_bazel_rules_typescript": + runfiles = "internal/tsc_wrapped.runfiles" + else: + runfiles = "external/io_bazel_rules_typescript/internal/tsc_wrapped.runfiles" + + config = create_tsconfig(ctx, files, srcs, tsconfig_json.dirname, + devmode_manifest=devmode_manifest) + + config["compilerOptions"].update({ + "typeRoots": ["/".join([ + workspace_path, host_bin, runfiles, + "yarn/installed/node_modules/@types"] + )], + "baseUrl": workspace_path, + "paths": { + "*": [ + "/".join([host_bin, runfiles, "yarn/installed/node_modules/*"]), + "/".join([host_bin, runfiles, "yarn/installed/node_modules/@types/*"]), + ], + # Workaround https://github.com/Microsoft/TypeScript/issues/15962 + # Needed for Angular to build with Bazel. + # TODO(alexeagle): fix the bug upstream or find a better place for + # this workaround. + "zone.js": [ + "/".join([host_bin, runfiles, "yarn/installed/node_modules/zone.js/dist/zone.js.d.ts"]), + ] + }, + }) + + # If the user gives a tsconfig attribute, the generated file should extend + # from the user's tsconfig. + # See https://github.com/Microsoft/TypeScript/issues/9876 + # We subtract the ".json" from the end before handing to TypeScript because + # this gives extra error-checking. + if ctx.file.tsconfig: + config["extends"] = "{}/{}".format(workspace_path, ctx.file.tsconfig.path[:-5]) + + ctx.file_action(output=tsconfig_json, content=json_marshal(config)) + return tsconfig_json + +# ************ # +# ts_library # +# ************ # + + +def _ts_library_impl(ctx): + """Implementation of ts_library. + + Args: + ctx: the context. + Returns: + the struct returned by the call to compile_ts. + """ + ctx.file_action( + output = ctx.outputs._js_typings, + content = "") + + return compile_ts(ctx, is_library=True, compile_action=_compile_action, + devmode_compile_action=_devmode_compile_action, + tsc_wrapped_tsconfig=_tsc_wrapped_tsconfig) + +ts_library = rule( + _ts_library_impl, + attrs={ + "srcs": + attr.label_list( + allow_files=FileType([ + ".ts", + ".tsx", + ]), + mandatory=True,), + "deps": + attr.label_list(), + # TODO(evanm): make this the default and remove the option. + "runtime": + attr.string(default="browser"), + # TODO(alexeagle): reconcile with google3: ts_library rules should + # be portable across internal/external, so we need this attribute + # internally as well. + "tsconfig": + attr.label(allow_files = True, single_file=True), + "_additional_d_ts": + attr.label_list(), + "_tsc": + attr.label( + default=get_tsc(), + single_file=False, + allow_files=True, + executable=True, + cfg="host",), + "_node": + attr.label( + default=get_node(), + single_file=True, + allow_files=True, + executable=True, + cfg="host",), + "_node_modules": attr.label(default = Label("@yarn//installed:node_modules")) + }, + fragments=["js"], + outputs={"_js_typings": "_%{name}_js_typings.d.ts"},) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl new file mode 100644 index 0000000000..9a68439794 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -0,0 +1,222 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Used for compilation by the different implementations of build_defs.bzl. +""" + +# TODO(plf): Enforce this at analysis time. +def assert_js_or_typescript_deps(ctx): + for dep in ctx.attr.deps: + if not hasattr(dep, "typescript") and not hasattr(dep, "js"): + fail( + ("%s is neither a TypeScript nor a JS producing rule." % dep.label) + + "\nDependencies must be ts_library, ts_declaration, or " + + # TODO(plf): Leaving this here for now, but this message does not + # make sense in opensource. + "JavaScript library rules (js_library, pinto_library, etc, but " + + "also proto_library, soy_js).\n") + +def _collect_transitive_dts(ctx): + all_deps_declarations = set() + type_blacklisted_declarations = set() + for extra in ctx.files._additional_d_ts: + all_deps_declarations += set([extra]) + for dep in ctx.attr.deps: + if hasattr(dep, "typescript"): + all_deps_declarations += dep.typescript.transitive_declarations + type_blacklisted_declarations += ( + dep.typescript.type_blacklisted_declarations) + return struct( + transitive_declarations=list(all_deps_declarations), + type_blacklisted_declarations=list(type_blacklisted_declarations) + ) + +def _outputs(ctx, label, input_file): + """Returns closure js, devmode js, and .d.ts output files for |input_file|. + + Args: + ctx: ctx. + label: Label. package label. + input_file: File. the input_file + Returns: + A three-tuple of files (.closure.js, .js, .d.ts). + """ + dot = input_file.short_path.rfind(".") + beginning = len(label.package) + if label.package: + beginning += 1 + basename = input_file.short_path[beginning:dot] + return (ctx.new_file(basename + ".closure.js"), + ctx.new_file(basename + ".js"), + ctx.new_file(basename + ".d.ts")) + +def compile_ts(ctx, + is_library, + extra_dts_files=[], + compile_action=None, + devmode_compile_action=None, + jsx_factory=None, + tsc_wrapped_tsconfig=None): + """Creates actions to compile TypeScript code. + + This rule is shared between ts_library and ts_declaration. + + Args: + ctx: ctx. + is_library: boolean. False if only compiling .dts files. + extra_dts_files: list. Additional dts files to pass for compilation, + not included in the transitive closure of declarations. + compile_action: function. Creates the compilation action. + devmode_compile_action: function. Creates the compilation action + for devmode. + jsx_factory: optional string. Enables overriding jsx pragma. + tsc_wrapped_tsconfig: function. + Returns: + struct that will be returned by the rule implementation. + """ + assert_js_or_typescript_deps(ctx) + + ### Collect srcs and outputs. + srcs = ctx.files.srcs + transpiled_closure_js = [] + transpiled_devmode_js = [] + src_declarations = [] # d.ts found in inputs. + gen_declarations = [] # d.ts generated by the TypeScript compiler. + tsickle_externs = [] # externs.js generated by tsickle, if any. + has_sources = False + + # Compile the sources, if any. (For a ts_declaration rule this will + # type-check the d.ts sources and potentially generate externs.) + for src in ctx.attr.srcs: + # 'x/y.ts' ==> 'x/y.js' + if src.label.package != ctx.label.package: + # Sources can be in sub-folders, but not in sub-packages. + fail("Sources must be in the same package as the ts_library rule, " + + "but %s is not in %s" % (src.label, ctx.label.package), "srcs") + + for f in src.files: + has_sources = True + if is_library: + if f.path.endswith(".d.ts"): + fail("srcs must not contain any type declarations (.d.ts files), " + + "but %s contains %s" % (src.label, f.short_path), "srcs") + outs = _outputs(ctx, src.label, f) + transpiled_closure_js += [outs[0]] + transpiled_devmode_js += [outs[1]] + gen_declarations += [outs[2]] + else: + if not f.path.endswith(".d.ts"): + fail("srcs must contain only type declarations (.d.ts files), " + + "but %s contains %s" % (src.label, f.short_path), "srcs") + src_declarations += [f] + + if has_sources and ctx.attr.runtime != "nodejs": + # Note: setting this variable controls whether sickle is run at all. + tsickle_externs = [ctx.new_file(ctx.label.name + ".externs.js")] + + transitive_dts = _collect_transitive_dts(ctx) + input_declarations = transitive_dts.transitive_declarations + src_declarations + type_blacklisted_declarations = transitive_dts.type_blacklisted_declarations + if not is_library and not ctx.attr.generate_externs: + type_blacklisted_declarations += ctx.files.srcs + + # A manifest listing the order of this rule's *.ts files (non-transitive) + # Only generated if the rule has any sources. + devmode_manifest = None + + if has_sources: + compilation_inputs = input_declarations + extra_dts_files + srcs + tsickle_externs_path = tsickle_externs[0] if tsickle_externs else None + + # Calculate allowed dependencies for strict deps enforcement. + allowed_deps = srcs # A target's sources may depend on each other. + for dep in ctx.attr.deps: + if hasattr(dep, "typescript"): + allowed_deps += dep.typescript.declarations + allowed_deps += extra_dts_files + + tsconfig_json_es6 = tsc_wrapped_tsconfig( + ctx, + compilation_inputs, + srcs, + jsx_factory=jsx_factory, + tsickle_externs=tsickle_externs_path, + type_blacklisted_declarations=type_blacklisted_declarations, + allowed_deps=allowed_deps) + + inputs = compilation_inputs + [tsconfig_json_es6] + outputs = transpiled_closure_js + tsickle_externs + compile_action(ctx, inputs, outputs, tsconfig_json_es6.path) + + devmode_manifest = ctx.new_file(ctx.label.name + ".es5.MF") + tsconfig_json_es5 = tsc_wrapped_tsconfig( + ctx, + compilation_inputs, + srcs, + jsx_factory=jsx_factory, + devmode_manifest=devmode_manifest, + allowed_deps=allowed_deps) + inputs = compilation_inputs + [tsconfig_json_es5] + outputs = ( + transpiled_devmode_js + gen_declarations + [devmode_manifest]) + devmode_compile_action(ctx, inputs, outputs, tsconfig_json_es5.path) + + # TODO(martinprobst): Merge the generated .d.ts files, and enforce strict + # deps (do not re-export transitive types from the transitive closure). + transitive_decls = input_declarations + gen_declarations + + if is_library: + es6_sources = set(transpiled_closure_js + tsickle_externs) + es5_sources = set(transpiled_devmode_js) + else: + es6_sources = set(tsickle_externs) + es5_sources = set(tsickle_externs) + devmode_manifest = None + + # Downstream rules see the .d.ts files produced or declared by this rule + declarations = gen_declarations + src_declarations + + if not srcs: + # Re-export sources from deps. + # TODO(b/30018387): introduce an "exports" attribute. + for dep in ctx.attr.deps: + if hasattr(dep, "typescript"): + declarations += dep.typescript.declarations + + return struct( + files=set(declarations), + runfiles=ctx.runfiles( + # Note: don't include files=... here, or they will *always* be built + # by any dependent rule, regardless of whether it needs them. + # But these attributes are needed to pass along any input runfiles: + collect_default=True, + collect_data=True, + ), + # TODO(martinprobst): Prune transitive deps, only re-export what's needed. + typescript=struct( + declarations=declarations, + transitive_declarations=transitive_decls, + es6_sources=es6_sources, + es5_sources=es5_sources, + devmode_manifest=devmode_manifest, + js_typings=ctx.outputs._js_typings, + type_blacklisted_declarations=type_blacklisted_declarations, + tsickle_externs=tsickle_externs, + ), + # Expose the tags so that a Skylark aspect can access them. + tags=ctx.attr.tags, + instrumented_files=struct( + extensions=["ts"], + source_attributes=["srcs"], + dependency_attributes=["deps", "runtime_deps"])) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/json_marshal.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/json_marshal.bzl new file mode 100644 index 0000000000..cb2f58cddf --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/json_marshal.bzl @@ -0,0 +1,35 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Marshal an arbitrary Skylark object to JSON.""" +def json_marshal(data): + """Serializes arbitrary data to JSON. + + Args: + data: any object + + Returns: + JSON string representing the data + """ + if type(data) == "dict" or type(data) == "list": + return str(data).replace(": True", ": true").replace(": False", ": false").replace(": None", ": false") + elif type(data) == "int": + return str(data) + elif type(data) == "string": + return "\"" + data + "\"" + elif type(data) == "Label": + return "\"//{}:{}\"".format(data.package, data.name) + elif type(data) == "bool": + return "true" if data else "false" + return "unknown type {}: {}".format(type(data), data) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl new file mode 100644 index 0000000000..956bac0e1e --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -0,0 +1,143 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Helpers for configuring the TypeScript compiler. +""" +_DEBUG = False + +def create_tsconfig(ctx, files, srcs, tsconfig_path, + devmode_manifest=None, tsickle_externs=None, type_blacklisted_declarations=[], + out_dir=None, disable_strict_deps=False, allowed_deps=set(), + extra_root_dirs=[]): + """Creates an object representing the TypeScript configuration + to run the compiler under Bazel. + + Args: + ctx: the skylark execution context + files: Labels of all TypeScript compiler inputs + srcs: Immediate sources being compiled, as opposed to transitive deps. + tsconfig_path: where the resulting config will be written; paths will be relative + to this folder + devmode_manifest: path to the manifest file to write for --target=es5 + tsickle_externs: path to write tsickle-generated externs.js. + type_blacklisted_declarations: types declared in these files will never be + mentioned in generated .d.ts. + out_dir: directory for generated output. Default is ctx.bin_dir + disable_strict_deps: whether to disable the strict deps check + allowed_deps: the set of files that code in srcs may depend on (strict deps) + extra_root_dirs: Extra root dirs to be passed to tsc_wrapped. + """ + outdir_path = out_dir if out_dir != None else ctx.configuration.bin_dir.path + workspace_path = "/".join([".."] * len(tsconfig_path.split("/"))) + + perf_trace_path = "/".join([ctx.configuration.bin_dir.path, ctx.label.package, + ctx.label.name + ".trace"]) + # TODO(alexeagle): a better way to ask for the perf trace than editing here? + perf_trace_path = "" # Comment out => receive perf trace! + + # Options for running the TypeScript compiler under Bazel. + # See javascript/typescript/compiler/tsc_wrapped.ts:BazelOptions. + # Unlike compiler_options, the paths here are relative to the rootDir, + # not the location of the tsconfig.json file. + bazel_options = { + "target": ctx.label, + "tsickle": tsickle_externs != None, + "tsickleGenerateExterns": getattr(ctx.attr, "generate_externs", True), + "tsickleExternsPath": tsickle_externs.path if tsickle_externs else "", + "untyped": not getattr(ctx.attr, "tsickle_typed", False), + "typeBlackListPaths": [f.path for f in type_blacklisted_declarations], + + # Substitute commonjs with googmodule. + "googmodule": ctx.attr.runtime == "browser", + "es5Mode": devmode_manifest != None, + "manifest": devmode_manifest.path if devmode_manifest else "", + # Explicitly tell the compiler which sources we're interested in (emitting + # and type checking). + "compilationTargetSrc": [s.path for s in srcs], + "disableStrictDeps": disable_strict_deps, + "allowedStrictDeps": [f.path for f in allowed_deps], + "perfTracePath": perf_trace_path, + "enableConformance": getattr(ctx.attr, "enable_conformance", False), + } + + # Keep these options in sync with those in playground/playground.ts. + compiler_options = { + # De-sugar to this language level + "target": "es5" if devmode_manifest or ctx.attr.runtime == "nodejs" else "es6", + "downlevelIteration": devmode_manifest != None or ctx.attr.runtime == "nodejs", + + # Do not type-check the lib.*.d.ts. + # We think this shouldn't be necessary but haven't figured out why yet + # and builds are faster with the setting on. + # http://b/30709121 + "skipDefaultLibCheck": True, + + # Always produce commonjs modules (might get translated to goog.module). + "module": "commonjs", + "moduleResolution": "node", + + "outDir": "/".join([workspace_path, outdir_path]), + + # We must set a rootDir to avoid TypeScript emit paths varying + # due computeCommonSourceDirectory behavior. + # TypeScript requires the rootDir be a parent of all sources in + # files[], so it must be set to the workspace_path. + "rootDir": workspace_path, + + # Path handling for resolving modules, see specification at + # https://github.com/Microsoft/TypeScript/issues/5039 + # Paths where we attempt to load relative references. + # Longest match wins + # + # tsc_wrapped also uses this property to strip leading paths + # to produce a flattened output tree, see + # https://github.com/Microsoft/TypeScript/issues/8245 + "rootDirs": ["/".join([workspace_path, e]) for e in extra_root_dirs] + [ + workspace_path, + "/".join([workspace_path, ctx.configuration.genfiles_dir.path]), + "/".join([workspace_path, ctx.configuration.bin_dir.path]), + ], + + "traceResolution": _DEBUG, + "diagnostics": _DEBUG, + + # Inline const enums. + "preserveConstEnums": False, + + # permit `@Decorator` syntax and allow runtime reflection on their types. + "experimentalDecorators": True, + "emitDecoratorMetadata": True, + + # Interpret JSX as React calls (until someone asks for something different) + "jsx": "react", + "jsxFactory": "React.createElement", + + "noEmitOnError": False, + "declaration": True, + "stripInternal": True, + + # Embed source maps and sources in .js outputs + "inlineSourceMap": True, + "inlineSources": True, + + # Don't emit decorate/metadata helper code, we provide our own helpers.js. + "noEmitHelpers": ctx.attr.runtime == "browser", + } + + return { + "compilerOptions": compiler_options, + "bazelOptions": bazel_options, + "files": [workspace_path + "/" + f.path for f in files], + "compileOnSave": False + } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl new file mode 100644 index 0000000000..95844d3eba --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl @@ -0,0 +1,22 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""node and TypeScript compiler labels. +""" + +def get_tsc(): + return Label("//internal:tsc_wrapped") + +def get_node(): + return Label("@io_bazel_rules_typescript_node//:bin/node") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl new file mode 100644 index 0000000000..3489539fcb --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl @@ -0,0 +1,61 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Rules for executing programs in the nodejs runtime. +""" +load(":executables.bzl", "get_node") + +def _node_binary_impl(ctx): + node = ctx.file._node + script = ctx.attr.main + node_modules = ctx.files._node_modules + + ctx.template_action( + template=ctx.file._launcher_template, + output=ctx.outputs.executable, + substitutions={ + "TEMPLATED_node": ctx.workspace_name + "/" + node.path, + "TEMPLATED_args": " ".join(ctx.attr.args), + "TEMPLATED_script_path": script, + }, + executable=True, + ) + + return struct( + runfiles = ctx.runfiles( + files = [node] + node_modules, + collect_data = True, + ), + ) + +node_binary = rule( + _node_binary_impl, + attrs = { + "main": attr.string(), + "data": attr.label_list( + allow_files = True, + cfg = "data"), + "_node": attr.label( + default = get_node(), + allow_files = True, + single_file = True), + "_node_modules": attr.label( + default = Label("@yarn//installed:node_modules")), + "_launcher_template": attr.label( + default = Label("//internal:node_launcher.sh"), + allow_files = True, + single_file = True) + }, + executable = True, +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl new file mode 100644 index 0000000000..beb6aee233 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl @@ -0,0 +1,70 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Install NodeJS when the user runs node_repositories() from their WORKSPACE. + +We fetch a specific version of Node, to ensure builds are hermetic. +We then create a repository @io_bazel_rules_typescript_node which provides the +node binary to other rules. +""" + +def _node_impl(repository_ctx): + repository_ctx.file("BUILD", content=""" +package(default_visibility = ["//visibility:public"]) +exports_files([ + "bin/node", + "bin/npm", +]) +""") + repository_ctx.file("BUILD.bazel", content=""" +package(default_visibility = ["//visibility:public"]) +exports_files([ + "bin/node", + "bin/npm", +]) +""") + + os_name = repository_ctx.os.name.lower() + if os_name.startswith("mac os"): + repository_ctx.download_and_extract( + [ + "http://mirror.bazel.build/nodejs.org/dist/v6.10.2/node-v6.10.2-darwin-x64.tar.xz", + "https://nodejs.org/dist/v6.10.2/node-v6.10.2-darwin-x64.tar.xz", + ], + stripPrefix = "node-v6.10.2-darwin-x64", + sha256 = "360b887361b2597613f18968e3fc0e920079a363d0535fc4e40532e3426fc6eb" + ) + elif os_name.find("windows") != -1: + repository_ctx.download_and_extract( + [ + "http://mirror.bazel.build/nodejs.org/dist/v6.10.2/node-v6.10.2-win-x64.zip", + "http://nodejs.org/dist/v6.10.2/node-v6.10.2-win-x64.zip", + ], + stripPrefix = "node-v6.10.2-win-x64", + sha256 = "d778ed84685c6604192cfcf40192004e27fb11c9e65c3ce4b283d90703b4192c" + ) + else: + repository_ctx.download_and_extract( + [ + "http://mirror.bazel.build/nodejs.org/dist/v6.10.2/node-v6.10.2-linux-x64.tar.xz", + "http://nodejs.org/dist/v6.10.2/node-v6.10.2-linux-x64.tar.xz", + ], + stripPrefix = "node-v6.10.2-linux-x64", + sha256 = "b519cd616b0671ab789d2645c5c026deb7e016d73a867ab4b1b8c9ceba9c3503" + ) + +_node_repo = repository_rule(_node_impl, attrs = {}) + +def node_repositories(): + _node_repo(name = "io_bazel_rules_typescript_node") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh new file mode 100644 index 0000000000..30927360b9 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh @@ -0,0 +1,93 @@ +#!/usr/bin/env bash +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +# Launcher for NodeJS applications. +# Find our runfiles tree. We need this to launch node with the correct +# entry point. +# +# Call this program X. X was generated by a genrule and may be invoked +# in many ways: +# 1a) directly by a user, with $0 in the output tree +# 1b) via 'bazel run' (similar to case 1a) +# 2) directly by a user, with $0 in X's runfiles tree +# 3) by another program Y which has a data dependency on X, with $0 in Y's +# runfiles tree +# 4a) via 'bazel test' +# 4b) case 3 in the context of a test +# 5a) by a genrule cmd, with $0 in the output tree +# 6a) case 3 in the context of a genrule +# +# For case 1, $0 will be a regular file, and the runfiles tree will be +# at $0.runfiles. +# For case 2 or 3, $0 will be a symlink to the file seen in case 1. +# For case 4, $TEST_SRCDIR should already be set to the runfiles tree by +# blaze. +# Case 5a is handled like case 1. +# Case 6a is handled like case 3. + +case "$0" in + /*) self="$0" ;; + *) self="$PWD/$0" ;; +esac + +if [[ -n "$TEST_SRCDIR" ]]; then + # Case 4, bazel has identified runfiles for us. + RUNFILES="$TEST_SRCDIR" +else + while true; do + if [[ -e "$self.runfiles" ]]; then + RUNFILES="$self.runfiles" + break + fi + + if [[ $self == *.runfiles/* ]]; then + RUNFILES="${self%%.runfiles/*}.runfiles" + # don't break; this is a last resort for case 6b + fi + + if [[ ! -L "$self" ]]; then + break; + fi + + readlink="$(readlink "$self")" + if [[ "$readlink" = /* ]]; then + self="$readlink" + else + # resolve relative symlink + self="${self%%/*}/$readlink" + fi + done + + if [[ -z "$RUNFILES" ]]; then + echo " >>>> FAIL: RUNFILES environment variable is not set. <<<<" >&2 + exit 1 + fi +fi +export RUNFILES +export NODE_PATH="${RUNFILES}" + +ARGS=() +NODE_OPTIONS=() +ALL_ARGS=(TEMPLATED_args $@) +for ARG in "${ALL_ARGS[@]}"; do + case "$ARG" in + --node_options=*) NODE_OPTIONS+=( "${ARG#--node_options=}" ) ;; + *) ARGS+=( "$ARG" ) + esac +done + +exec "${RUNFILES}/TEMPLATED_node" "${NODE_OPTIONS[@]}" "${RUNFILES}/TEMPLATED_script_path" "${ARGS[@]}" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD new file mode 100644 index 0000000000..46754d28e4 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD @@ -0,0 +1,7 @@ +load("//:defs.bzl", "ts_library") + +ts_library( + name = "tsc_wrapped", + srcs = glob(["*.ts"]), + tsconfig = ":tsconfig.json", +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json new file mode 100644 index 0000000000..80c821cadb --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "types": [ + "node" + ] + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts new file mode 100644 index 0000000000..a2dda5fb65 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -0,0 +1,131 @@ +import * as path from 'path'; // from //third_party/javascript/typings/node +import * as ts from 'typescript'; + +/** + * The configuration block provided by the tsconfig "bazelOptions". + * Note that all paths here are relative to the rootDir, not absolute nor + * relative to the location containing the tsconfig file. + */ +export interface BazelOptions { + /** The full bazel target that is being built, e.g. //my/pkg:library. */ + target: string; + + /** If true, convert require()s into goog.module(). */ + googmodule: boolean; + + /** If true, emit ES5 into filename.es5.js. */ + es5Mode: boolean; + + /** If true, convert TypeScript code into a Closure-compatible variant. */ + tsickle: boolean; + + /** If true, generate externs from declarations in d.ts files. */ + tsickleGenerateExterns: boolean; + + /** Write generated externs to the given path. */ + tsickleExternsPath: string; + + /** Paths of declarations whose types must not appear in result .d.ts. */ + typeBlackListPaths: string[]; + + /** If true, emit Closure types in TypeScript->JS output. */ + untyped: boolean; + + /** The list of sources we're interested in (emitting and type checking). */ + compilationTargetSrc: string[]; + + /** Path to write the module dependency manifest to. */ + manifest: string; + + /** + * Whether to disable strict deps check. If true the next parameter is + * ignored. + */ + disableStrictDeps?: boolean; + + /** + * Paths of dependencies that are allowed by strict deps, i.e. that may be + * imported by the source files in compilationTargetSrc. + */ + allowedStrictDeps: string[]; + + /** Write a performance trace to this path. Disabled when falsy. */ + perfTracePath?: string; + + /** If true, enable the conformance check plugin in TSC. */ + enableConformance: boolean; + + /** + * An additional prelude to insert after the `goog.module` call, + * e.g. with additional imports or requires. + */ + prelude: string; + + /** + * Name of the current locale if processing a locale-specific file. + */ + locale?: string; + + /** + * A list of errors this compilation is expected to generate, in the form + * "TS1234:regexp". If empty, compilation is expected to succeed. + */ + expectedDiagnostics: string[]; +} + +export interface ParsedTsConfig { + options: ts.CompilerOptions; + bazelOpts: BazelOptions; + files: string[]; +} + +/** + * Load a tsconfig.json and convert all referenced paths (including + * bazelOptions) to absolute paths. + * Paths seen by TypeScript should be absolute, to match behavior + * of the tsc ModuleResolution implementation. + * @param tsconfigFile path to tsconfig, relative to process.cwd() or absolute + * @return configuration parsed from the file, or error diagnostics + */ +export function parseTsconfig( + tsconfigFile: string, host: ts.ParseConfigHost = ts.sys): + [ParsedTsConfig, ts.Diagnostic[], {target: string}] { + // TypeScript expects an absolute path for the tsconfig.json file + tsconfigFile = path.resolve(tsconfigFile); + + const {config, error} = ts.readConfigFile(tsconfigFile, host.readFile); + if (error) { + // target is in the config file we failed to load... + return [null, [error], {target: ''}]; + } + + const bazelOpts: BazelOptions = config.bazelOptions; + const target = bazelOpts.target; + const {options, errors} = + // All paths in the compilerOptions will be converted to absolute. + ts.convertCompilerOptionsFromJson( + config.compilerOptions, path.dirname(tsconfigFile)); + if (errors && errors.length) { + return [null, errors, {target}]; + } + + // The file list in the tsconfig is relative to the tsconfig dir + // and aren't transformed by convertCompilerOptionsFromJson. + // Transform them to be absolute here. + const files = config.files.map(f => { + return path.resolve(path.dirname(tsconfigFile), f); + }); + + // The bazelOpts paths in the tsconfig are relative to + // options.rootDir (the google3 root) and aren't transformed by + // convertCompilerOptionsFromJson (because TypeScript doesn't know + // about them). Transform them to also be absolute here. + bazelOpts.compilationTargetSrc = + bazelOpts.compilationTargetSrc.map(f => path.resolve(options.rootDir, f)); + bazelOpts.allowedStrictDeps = + bazelOpts.allowedStrictDeps.map(f => path.resolve(options.rootDir, f)); + bazelOpts.typeBlackListPaths = + bazelOpts.typeBlackListPaths.map(f => path.resolve(options.rootDir, f)); + + return [{options, bazelOpts, files}, null, {target}]; +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/yarn_install.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/yarn_install.bzl new file mode 100644 index 0000000000..ad886d54cd --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/yarn_install.bzl @@ -0,0 +1,92 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Install Yarn and run `yarn install` when the user calls yarn_install() from their WORKSPACE. + +Yarn is a package manager that downloads dependencies. Yarn is an improvement over the `npm` tool in +speed and correctness. + +We download a specific version of Yarn to ensure a hermetic build. +Then, using the package.json file supplied by the user, we call `yarn install` +to create or update a node_modules folder next to the package.json. +Finally we create a workspace that symlinks to the user's project. +We name this workspace "yarn" so there will be targets like +@yarn//installed:node_modules + +Within the user's project, they can refer to //:node_modules +but from other repositories, like the @io_bazel_rules_typescript +repository, we also need to find some labels under node_modules. +""" + +load(":executables.bzl", "get_node") + +def _yarn_install_impl(ctx): + project_dir = ctx.path(ctx.attr.package_json).dirname + ctx.file("yarn_install.sh", """#!/bin/bash +set -ex +ROOT=$(dirname $1) +NODE=$2 +YARN=$3 +(cd $ROOT; $NODE $YARN install) +""") + result = ctx.execute(["./yarn_install.sh", + ctx.path(ctx.attr.package_json), + ctx.path(ctx.attr._node), + ctx.path(ctx.attr._yarn)]) + if result.return_code > 0: + print(result.stdout) + print(result.stderr) + + # WORKAROUND for https://github.com/bazelbuild/bazel/issues/374#issuecomment-296217940 + # Bazel does not allow labels to start with `@`, so when installing eg. the `@types/node` + # module from the @types scoped package, you'll get an error. + # The workaround is to move the rule up one level, from /node_modules to the project root. + # For now, users must instead write their own /BUILD file on setup. + + # ctx.symlink(project_dir.get_child("node_modules"), "node_modules") + # add a BUILD file inside the user's node_modules project folder + # ctx.file("installed/BUILD", """ + # filegroup(name = "node_modules", srcs = glob(["node_modules/**/*"]), visibility = ["//visibility:public"]) + # """) + + # Instead symlink the root directory from the user's workspace + ctx.symlink(project_dir, "installed") + + +_yarn_install = repository_rule( + _yarn_install_impl, + attrs = { + "package_json": attr.label(), + "_node": attr.label(default = get_node(), allow_files=True, single_file=True), + "_yarn": attr.label(default = Label("@yarn_pkg//:bin/yarn.js")), + }, +) + +def yarn_install(package_json): + native.new_http_archive( + name = "yarn_pkg", + urls = [ + "http://mirror.bazel.build/github.com/yarnpkg/yarn/releases/download/v0.22.0/yarn-v0.22.0.tar.gz", + "https://github.com/yarnpkg/yarn/releases/download/v0.22.0/yarn-v0.22.0.tar.gz", + ], + strip_prefix = "dist", + type = "tar.gz", + build_file_content = """ +package(default_visibility = ["//visibility:public"]) +exports_files(["bin/yarn"]) +""", + ) + + _yarn_install(name = "yarn", package_json = package_json) + diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json new file mode 100644 index 0000000000..e5f6c79bca --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -0,0 +1,12 @@ +{ + "name": "bazel-ts", + "description": "Build TypeScript with Bazel", + "version": "0.0.0", + "dependencies": { + "typescript": "2.3" + }, + "devDependencies": { + "@types/node": "^7.0.18", + "clang-format": "1.0.49" + } +} From d707fa69ea5c88e5d911ddb810ce69b7e2183bdb Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Mon, 22 May 2017 09:57:06 -0700 Subject: [PATCH 0002/1134] Update rules_typescript settings after publish to github. PiperOrigin-RevId: 156749455 --- third_party/github.com/bazelbuild/rules_typescript/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index f895085cd1..71b4c4b0d3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -29,8 +29,9 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "io_bazel_rules_typescript", - remote = "sso://bazel/rules_typescript", - commit = "b25f535a7fdb4382dc67ed455c54b7ba23995c85") + remote = "https://github.com/bazelbuild/rules_typescript.git", + tag = "0.0.1", +) load("@io_bazel_rules_typescript//:defs.bzl", "node_repositories", "yarn_install") From 51e3c342255620b932207ece08d07bfbfbb6c2e6 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Tue, 23 May 2017 11:15:46 -0700 Subject: [PATCH 0003/1134] Add a module mapping feature, so that a ts_library can be imported using a short name (typically its npm package). PiperOrigin-RevId: 156885857 --- .../rules_typescript/examples/BUILD | 5 +- .../rules_typescript/examples/bar.ts | 3 +- .../examples/some_library/BUILD | 27 ++++++ .../examples/some_library/library.ts | 18 ++++ .../rules_typescript/internal/build_defs.bzl | 46 +++++----- .../internal/common/module_mappings.bzl | 87 +++++++++++++++++++ .../internal/common/tsconfig.bzl | 44 ++++++++-- 7 files changed, 203 insertions(+), 27 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/some_library/BUILD create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/some_library/library.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/BUILD b/third_party/github.com/bazelbuild/rules_typescript/examples/BUILD index 051e4a1830..97f08bfaf8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/BUILD @@ -26,5 +26,8 @@ ts_library( name = "bar_ts_library", srcs = ["bar.ts"], tsconfig = ":tsconfig.json", - deps = [":foo_ts_library"], + deps = [ + ":foo_ts_library", + "//examples/some_library:lib", + ], ) \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts index 50ddbb79ef..1757f615b9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts @@ -1 +1,2 @@ -import {greeter} from './foo'; \ No newline at end of file +import {greeter} from './foo'; +import {cool} from 'some-lib'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/BUILD b/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/BUILD new file mode 100644 index 0000000000..de8452749d --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/BUILD @@ -0,0 +1,27 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +package(default_visibility = ["//visibility:public"]) + +load("//:defs.bzl", "ts_library") + +ts_library( + name = "lib", + srcs = ["library.ts"], + # Allow this library to be imported from `some-lib` + module_name = "some-lib", + # The imported path should be the library.d.ts file + module_root = "library", + tsconfig = "//examples:tsconfig.json", +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/library.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/library.ts new file mode 100644 index 0000000000..1cc6cf3008 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/library.ts @@ -0,0 +1,18 @@ +/** + * @license + * Copyright 2017 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export const cool = 1; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index 2caffe03ca..de0ecd63eb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -16,10 +16,11 @@ """ # pylint: disable=unused-argument # pylint: disable=missing-docstring -load("//internal:common/compilation.bzl", "compile_ts") -load("//internal:executables.bzl", "get_tsc", "get_node") -load("//internal:common/json_marshal.bzl", "json_marshal") -load("//internal:common/tsconfig.bzl", "create_tsconfig") +load(":common/compilation.bzl", "compile_ts") +load(":executables.bzl", "get_tsc", "get_node") +load(":common/json_marshal.bzl", "json_marshal") +load(":common/tsconfig.bzl", "create_tsconfig") +load(":common/module_mappings.bzl", "module_mappings_aspect") def _compile_action(ctx, inputs, outputs, config_file_path): externs_files = [] @@ -75,28 +76,29 @@ def _tsc_wrapped_tsconfig(ctx, else: runfiles = "external/io_bazel_rules_typescript/internal/tsc_wrapped.runfiles" + module_roots = { + "*": [ + "/".join([host_bin, runfiles, "yarn/installed/node_modules/*"]), + "/".join([host_bin, runfiles, "yarn/installed/node_modules/@types/*"]), + ], + # Workaround https://github.com/Microsoft/TypeScript/issues/15962 + # Needed for Angular to build with Bazel. + # TODO(alexeagle): fix the bug upstream or find a better place for + # this workaround. + "zone.js": [ + "/".join([host_bin, runfiles, "yarn/installed/node_modules/zone.js/dist/zone.js.d.ts"]), + ] + } + config = create_tsconfig(ctx, files, srcs, tsconfig_json.dirname, - devmode_manifest=devmode_manifest) + devmode_manifest=devmode_manifest, + module_roots=module_roots) config["compilerOptions"].update({ "typeRoots": ["/".join([ workspace_path, host_bin, runfiles, "yarn/installed/node_modules/@types"] )], - "baseUrl": workspace_path, - "paths": { - "*": [ - "/".join([host_bin, runfiles, "yarn/installed/node_modules/*"]), - "/".join([host_bin, runfiles, "yarn/installed/node_modules/@types/*"]), - ], - # Workaround https://github.com/Microsoft/TypeScript/issues/15962 - # Needed for Angular to build with Bazel. - # TODO(alexeagle): fix the bug upstream or find a better place for - # this workaround. - "zone.js": [ - "/".join([host_bin, runfiles, "yarn/installed/node_modules/zone.js/dist/zone.js.d.ts"]), - ] - }, }) # If the user gives a tsconfig attribute, the generated file should extend @@ -142,7 +144,11 @@ ts_library = rule( ]), mandatory=True,), "deps": - attr.label_list(), + attr.label_list(aspects = [module_mappings_aspect]), + # Used to determine module mappings, see below. + "module_name": attr.string(), + "module_root": attr.string(), + # TODO(evanm): make this the default and remove the option. "runtime": attr.string(default="browser"), diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl new file mode 100644 index 0000000000..223e6e5e0f --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl @@ -0,0 +1,87 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Definitions for handling path re-mapping, to support short module names. +# See pathMapping doc: https://github.com/Microsoft/TypeScript/issues/5039 +# +# This reads the module_root and module_name attributes from typescript rules in +# the transitive closure, rolling these up to provide a mapping to the +# TypeScript compiler and to editors. +# + +def _get_deps(attrs, names): + return [d for n in names if hasattr(attrs, n) + for d in getattr(attrs, n)] + +# Traverse 'srcs' in addition so that we can go across a genrule +_MODULE_MAPPINGS_DEPS_NAMES = (["deps", "srcs"] +) + +_DEBUG = False + +def debug(msg, values=()): + if _DEBUG: + print(msg % values) + +def get_module_mappings(label, attrs, srcs = []): + """Returns the module_mappings from the given attrs. + + Collects a {module_name - module_root} hash from all transitive dependencies, + checking for collisions. If a module has a non-empty `module_root` attribute, + all sources underneath it are treated as if they were rooted at a folder + `module_name`. + """ + mappings = dict() + all_deps = _get_deps(attrs, names = _MODULE_MAPPINGS_DEPS_NAMES) + for dep in all_deps: + if not hasattr(dep, "es6_module_mappings"): + continue + for k, v in dep.es6_module_mappings.items(): + if k in mappings and mappings[k] != v: + fail(("duplicate module mapping at %s: %s maps to both %s and %s" % + (label, k, mappings[k], v)), "deps") + mappings[k] = v + if ((hasattr(attrs, "module_name") and attrs.module_name) or + (hasattr(attrs, "module_root") and attrs.module_root)): + mn = attrs.module_name + if not mn: + mn = label.name + mr = label.package + if attrs.module_root and attrs.module_root != ".": + mr = "%s/%s" % (mr, attrs.module_root) + # Validate that sources are underneath the module root. + # module_roots ending in .ts are a special case, they are used to + # restrict what's exported from a build rule, e.g. only exports from a + # specific index.d.ts file. For those, not every source must be under the + # given module root. + if not attrs.module_root.endswith(".ts"): + for s in srcs: + if not s.short_path.startswith(mr): + fail(("all sources must be under module root: %s, but found: %s" % + (mr, s.short_path))) + if mn in mappings and mappings[mn] != mr: + fail(("duplicate module mapping at %s: %s maps to both %s and %s" % + (label, mn, mappings[mn], mr)), "deps") + mappings[mn] = mr + debug("Mappings at %s: %s", (label, mappings)) + return mappings + +def _module_mappings_aspect_impl(target, ctx): + mappings = get_module_mappings(target.label, ctx.rule.attr) + return struct(es6_module_mappings = mappings) + +module_mappings_aspect = aspect( + _module_mappings_aspect_impl, + attr_aspects = _MODULE_MAPPINGS_DEPS_NAMES, +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 956bac0e1e..0b092309b2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -16,10 +16,12 @@ """ _DEBUG = False -def create_tsconfig(ctx, files, srcs, tsconfig_path, +load(":common/module_mappings.bzl", "get_module_mappings") + +def create_tsconfig(ctx, files, srcs, tsconfig_dir, devmode_manifest=None, tsickle_externs=None, type_blacklisted_declarations=[], out_dir=None, disable_strict_deps=False, allowed_deps=set(), - extra_root_dirs=[]): + extra_root_dirs=[], module_path_prefixes=None, module_roots=None): """Creates an object representing the TypeScript configuration to run the compiler under Bazel. @@ -27,7 +29,7 @@ def create_tsconfig(ctx, files, srcs, tsconfig_path, ctx: the skylark execution context files: Labels of all TypeScript compiler inputs srcs: Immediate sources being compiled, as opposed to transitive deps. - tsconfig_path: where the resulting config will be written; paths will be relative + tsconfig_dir: where the resulting config will be written; paths will be relative to this folder devmode_manifest: path to the manifest file to write for --target=es5 tsickle_externs: path to write tsickle-generated externs.js. @@ -39,7 +41,32 @@ def create_tsconfig(ctx, files, srcs, tsconfig_path, extra_root_dirs: Extra root dirs to be passed to tsc_wrapped. """ outdir_path = out_dir if out_dir != None else ctx.configuration.bin_dir.path - workspace_path = "/".join([".."] * len(tsconfig_path.split("/"))) + workspace_path = "/".join([".."] * len(tsconfig_dir.split("/"))) + if module_path_prefixes == None: + module_path_prefixes = [ + "", + ctx.configuration.genfiles_dir.path + "/", + ctx.configuration.bin_dir.path + "/" + ] + if module_roots == None: + base_path_mappings = ["%s/*" % p for p in [ + ".", + ctx.configuration.genfiles_dir.path, + ctx.configuration.bin_dir.path + ]] + module_roots = { + "*": base_path_mappings, + } + module_mappings = get_module_mappings(ctx.label, ctx.attr, srcs = srcs) + + for name, path in module_mappings.items(): + # Each module name maps to the immediate path, to resolve "index(.d).ts", + # or module mappings that directly point to files (like index.d.ts). + module_roots[name] = ["%s%s" % (p, path.replace(".d.ts", "")) for p in module_path_prefixes] + if not path.endswith(".d.ts"): + # If not just mapping to a single .d.ts file, include a path glob that + # maps the entire module root. + module_roots["{}/*".format(name)] = ["%s%s/*" % (p, path) for p in module_path_prefixes] perf_trace_path = "/".join([ctx.configuration.bin_dir.path, ctx.label.package, ctx.label.name + ".trace"]) @@ -80,7 +107,6 @@ def create_tsconfig(ctx, files, srcs, tsconfig_path, # Do not type-check the lib.*.d.ts. # We think this shouldn't be necessary but haven't figured out why yet # and builds are faster with the setting on. - # http://b/30709121 "skipDefaultLibCheck": True, # Always produce commonjs modules (might get translated to goog.module). @@ -109,6 +135,12 @@ def create_tsconfig(ctx, files, srcs, tsconfig_path, "/".join([workspace_path, ctx.configuration.bin_dir.path]), ], + # Root for non-relative module names + "baseUrl": workspace_path, + + # "short name" mappings for npm packages, such as "@angular/core" + "paths": module_roots, + "traceResolution": _DEBUG, "diagnostics": _DEBUG, @@ -130,6 +162,8 @@ def create_tsconfig(ctx, files, srcs, tsconfig_path, # Embed source maps and sources in .js outputs "inlineSourceMap": True, "inlineSources": True, + # Implied by inlineSourceMap: True + "sourceMap": False, # Don't emit decorate/metadata helper code, we provide our own helpers.js. "noEmitHelpers": ctx.attr.runtime == "browser", From 7654302b7aee63f46d93caebc06227ff81808abf Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Tue, 7 Mar 2017 14:14:15 -0800 Subject: [PATCH 0004/1134] Allow ts_library without tsconfig attribute. Fixes #1 PiperOrigin-RevId: 156909101 --- .../bazelbuild/rules_typescript/examples/some_library/BUILD | 1 - .../bazelbuild/rules_typescript/internal/build_defs.bzl | 6 +++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/BUILD b/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/BUILD index de8452749d..43dbc2c602 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/BUILD @@ -23,5 +23,4 @@ ts_library( module_name = "some-lib", # The imported path should be the library.d.ts file module_root = "library", - tsconfig = "//examples:tsconfig.json", ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index de0ecd63eb..1d6688b658 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -37,8 +37,12 @@ def _compile_action(ctx, inputs, outputs, config_file_path): for externs_file in externs_files: ctx.file_action(output=externs_file, content="") + action_inputs = inputs + if ctx.file.tsconfig: + action_inputs += [ctx.file.tsconfig] + ctx.action( - inputs=inputs + [ctx.file.tsconfig], + inputs=action_inputs, outputs=non_externs_files, arguments=["-p", config_file_path], executable=ctx.executable._tsc) From 42ff164ea2e35c72fbbabf50ddcbdffe28051085 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Wed, 24 May 2017 16:02:42 -0700 Subject: [PATCH 0005/1134] Remove the types/* line from pathmapping. Fixes #3 PiperOrigin-RevId: 157050477 --- .../bazelbuild/rules_typescript/internal/build_defs.bzl | 1 - 1 file changed, 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index 1d6688b658..3e0f4c5ee1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -83,7 +83,6 @@ def _tsc_wrapped_tsconfig(ctx, module_roots = { "*": [ "/".join([host_bin, runfiles, "yarn/installed/node_modules/*"]), - "/".join([host_bin, runfiles, "yarn/installed/node_modules/@types/*"]), ], # Workaround https://github.com/Microsoft/TypeScript/issues/15962 # Needed for Angular to build with Bazel. From 164dd008608f89bb2889e9f443e46e5b0c76f050 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Thu, 25 May 2017 14:39:15 -0700 Subject: [PATCH 0006/1134] Fix compilation of //internal/tsc_wrapped PiperOrigin-RevId: 157155278 --- .../rules_typescript/internal/BUILD | 9 +---- .../rules_typescript/internal/build_defs.bzl | 10 ++--- .../rules_typescript/internal/executables.bzl | 2 +- .../internal/tsc_wrapped/BUILD | 37 +++++++++++++++++++ 4 files changed, 42 insertions(+), 16 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD index 33605ddadf..71ad0083b0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD @@ -14,11 +14,4 @@ package(default_visibility = ["//visibility:public"]) -load(":node.bzl", "node_binary") - -node_binary( - name = "tsc_wrapped", - data = ["@yarn//installed:node_modules"], - # TODO(alexeagle): plug in tsc_wrapped.js instead - main = "yarn/installed/node_modules/typescript/lib/tsc.js", -) +exports_files(["node_launcher.sh"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index 3e0f4c5ee1..8af987ed8c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -45,7 +45,7 @@ def _compile_action(ctx, inputs, outputs, config_file_path): inputs=action_inputs, outputs=non_externs_files, arguments=["-p", config_file_path], - executable=ctx.executable._tsc) + executable=ctx.executable.tsc) def _devmode_compile_action(ctx, inputs, outputs, config_file_path): @@ -75,11 +75,7 @@ def _tsc_wrapped_tsconfig(ctx, workspace_path = "/".join([".."] * len(tsconfig_json.dirname.split("/"))) host_bin = "bazel-out/host/bin" - if ctx.workspace_name == "io_bazel_rules_typescript": - runfiles = "internal/tsc_wrapped.runfiles" - else: - runfiles = "external/io_bazel_rules_typescript/internal/tsc_wrapped.runfiles" - + runfiles = ctx.executable.tsc.short_path + ".runfiles" module_roots = { "*": [ "/".join([host_bin, runfiles, "yarn/installed/node_modules/*"]), @@ -162,7 +158,7 @@ ts_library = rule( attr.label(allow_files = True, single_file=True), "_additional_d_ts": attr.label_list(), - "_tsc": + "tsc": attr.label( default=get_tsc(), single_file=False, diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl index 95844d3eba..68e07bcc32 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl @@ -16,7 +16,7 @@ """ def get_tsc(): - return Label("//internal:tsc_wrapped") + return Label("//internal/tsc_wrapped:tsc_wrapped_bin") def get_node(): return Label("@io_bazel_rules_typescript_node//:bin/node") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD index 46754d28e4..26972ce7f7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD @@ -1,7 +1,44 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + load("//:defs.bzl", "ts_library") +load("//internal:node.bzl", "node_binary") + +# Vanilla typescript compiler: run the tsc.js binary distributed by TypeScript +node_binary( + name = "tsc", + data = ["@yarn//installed:node_modules"], + main = "yarn/installed/node_modules/typescript/lib/tsc.js", +) +# Build our custom compiler using the vanilla one ts_library( name = "tsc_wrapped", srcs = glob(["*.ts"]), tsconfig = ":tsconfig.json", + tsc = ":tsc", +) + +# Other ts_library rules will use this custom compiler, which calls the +# TypeScript APIs to act like tsc, but adds capabilities like Bazel workers. +node_binary( + name = "tsc_wrapped_bin", + data = [ + ":tsc_wrapped", + "@yarn//installed:node_modules", + ], + # TODO(alexeagle): plug in tsc_wrapped.js instead + main = "yarn/installed/node_modules/typescript/lib/tsc.js", + visibility = ["//visibility:public"], ) From ab24fbfc952a9586434bbe61f3b4f21e5c658e2c Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 26 May 2017 12:07:25 -0700 Subject: [PATCH 0007/1134] Support libraries for a custom TypeScript compiler. PiperOrigin-RevId: 157247610 --- .../rules_typescript/examples/bar.ts | 17 ++ .../internal/tsc_wrapped/BUILD | 2 +- .../internal/tsc_wrapped/file_cache.ts | 206 ++++++++++++++++++ .../internal/tsc_wrapped/file_cache_test.ts | 81 +++++++ .../internal/tsc_wrapped/perf_trace.ts | 88 ++++++++ .../internal/tsc_wrapped/plugin_api.ts | 54 +++++ .../internal/tsc_wrapped/strict_deps.ts | 110 ++++++++++ .../internal/tsc_wrapped/strict_deps_test.ts | 121 ++++++++++ .../internal/tsc_wrapped/test_support.ts | 40 ++++ .../internal/tsc_wrapped/tsconfig.ts | 17 ++ 10 files changed, 735 insertions(+), 1 deletion(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache_test.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/perf_trace.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/test_support.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts index 1757f615b9..23c36a31f1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts @@ -1,2 +1,19 @@ +/** + * @license + * Copyright 2017 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import {greeter} from './foo'; import {cool} from 'some-lib'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD index 26972ce7f7..f0501b25a1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD @@ -25,7 +25,7 @@ node_binary( # Build our custom compiler using the vanilla one ts_library( name = "tsc_wrapped", - srcs = glob(["*.ts"]), + srcs = glob(["*.ts"], exclude = ["*_test.ts"]), tsconfig = ":tsconfig.json", tsc = ":tsc", ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache.ts new file mode 100644 index 0000000000..72bcf01b91 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache.ts @@ -0,0 +1,206 @@ +/** + * @license + * Copyright 2017 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as fs from 'fs'; +import * as ts from 'typescript'; +import * as perfTrace from './perf_trace'; + +export interface CacheEntry { + digest: string; + value: CachedType; +} + +export interface LRUCache { + getCache(key: string): CachedType|undefined; + putCache(key: string, value: CacheEntry): void; + inCache(key: string): boolean; +} + +// Cache at most to this amount of memory use. It appears that +// without the cache involved, our steady state size after parsing is +// in the ~150mb range. +const MAX_CACHE_SIZE = 300 * (1 << 20 /* 1 MB */); + +/** + * FileCache is a trivial LRU cache for blaze outputs. + * + * Cache entries are keyed off by an opaque, bazel-supplied digest. + * + * This code uses the fact that JavaScript hash maps are linked lists - after + * reaching the cache size limit, it deletes the oldest (first) entries. Used + * cache entries are moved to the end of the list by deleting and re-inserting. + */ +export class FileCache implements LRUCache { + private fileCache: {[filePath: string]: CacheEntry} = {}; + /** + * FileCache does not know how to construct bazel's opaque digests. This + * field caches the last compile run's digests, so that code below knows what + * digest to assign to a newly loaded file. + */ + private lastDigests: {[filePath: string]: string} = {}; + public cacheStats = { + hits: 0, + reads: 0, + readTimeMs: 0, + }; + + constructor(private debug: (...msg: any[]) => void) {} + + /** + * Updates the cache with the given digests. + * + * updateCache must be called before loading files - only files that were + * updated (with a digest) previously can be loaded. + */ + updateCache(digests: {[filePath: string]: string}) { + this.debug('updating digests:', digests); + this.lastDigests = digests; + for (const fp of Object.keys(digests)) { + const entry = this.fileCache[fp]; + if (entry && entry.digest !== digests[fp]) { + this.debug( + 'dropping file cache entry for', fp, 'digests', entry.digest, + digests[fp]); + delete this.fileCache[fp]; + } + } + } + + getLastDigest(filePath: string): string { + const digest = this.lastDigests[filePath]; + if (!digest) { + throw new Error( + `missing input digest for ${filePath}.` + + `(only have ${Object.keys(this.lastDigests)})`); + } + return digest; + } + + getCache(filePath: string): CachedType|undefined { + this.cacheStats.reads++; + + const entry = this.fileCache[filePath]; + if (!entry) { + this.debug('Cache miss:', filePath); + return undefined; + } else { + this.debug('Cache hit:', filePath); + this.cacheStats.hits++; + // Move a used file to the end of the cache by deleting and re-inserting + // it. + delete this.fileCache[filePath]; + this.fileCache[filePath] = entry; + return entry.value; + } + } + + putCache(filePath: string, entry: CacheEntry): void { + const readStart = Date.now(); + this.cacheStats.readTimeMs += Date.now() - readStart; + + let dropped = 0; + if (this.shouldFreeMemory()) { + // Drop half the cache, the least recently used entry == the first + // entry. + this.debug('Evicting from the cache'); + const keys = Object.keys(this.fileCache); + dropped = Math.round(keys.length / 2); + for (let i = 0; i < dropped; i++) { + delete this.fileCache[keys[i]]; + } + } + this.fileCache[filePath] = entry; + this.debug('Loaded', filePath, 'dropped', dropped, 'cache entries'); + } + + inCache(filePath: string): boolean { + return !!this.getCache(filePath); + } + + resetStats() { + this.cacheStats = { + hits: 0, + reads: 0, + readTimeMs: 0, + }; + } + + printStats() { + const percentage = + (this.cacheStats.hits / this.cacheStats.reads * 100).toFixed(2); + this.debug('Cache stats:', percentage, '% hits', this.cacheStats); + } + + traceStats() { + // counters are rendered as stacked bar charts, so record cache + // hits/misses rather than the 'reads' stat tracked in cacheSats + // so the chart makes sense. + perfTrace.counter('file cache hit rate', { + 'hits': this.cacheStats.hits, + 'misses': this.cacheStats.reads - this.cacheStats.hits, + }); + perfTrace.counter('file cache time', { + 'read': this.cacheStats.readTimeMs, + }); + } + + /** + * Returns whether the cache should free some memory. + * + * Defined as a property so it can be overridden in tests. + */ + shouldFreeMemory: () => boolean = () => { + return process.memoryUsage().heapUsed > MAX_CACHE_SIZE; + }; +} + +export interface FileLoader { + loadFile(fileName: string, filePath: string, langVer: ts.ScriptTarget): + ts.SourceFile; +} + +/** + * Load a source file from disk, or possibly return a cached version. + */ +export class CachedFileLoader implements FileLoader { + constructor(private cache: FileCache) {} + + loadFile(fileName: string, filePath: string, langVer: ts.ScriptTarget): + ts.SourceFile { + let sourceFile = this.cache.getCache(filePath); + if (!sourceFile) { + const sourceText = fs.readFileSync(filePath, 'utf8'); + sourceFile = ts.createSourceFile(fileName, sourceText, langVer, true); + const entry = { + digest: this.cache.getLastDigest(filePath), + value: sourceFile + }; + this.cache.putCache(filePath, entry); + } + + return sourceFile; + } +} + +/** Load a source file from disk. */ +export class UncachedFileLoader implements FileLoader { + loadFile(fileName: string, filePath: string, langVer: ts.ScriptTarget): + ts.SourceFile { + const sourceText = fs.readFileSync(filePath, 'utf8'); + return ts.createSourceFile(fileName, sourceText, langVer, true); + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache_test.ts new file mode 100644 index 0000000000..886d99447c --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache_test.ts @@ -0,0 +1,81 @@ +/** + * @license + * Copyright 2017 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// taze: jasmine from //third_party/javascript/typings/jasmine:jasmine_without_externs +import * as ts from 'typescript'; + +import {CachedFileLoader, FileCache} from './file_cache'; +import {invalidateFileCache, writeTempFile} from './test_support'; + +function fauxDebug(...args: any[]) { + console.error.apply(console, args); +} + +describe('FileCache', () => { + it('can be constructed', () => { + const fileCache = new FileCache(fauxDebug); + expect(fileCache).toBeTruthy(); + }); + + it('caches files', () => { + const fileCache = new FileCache(fauxDebug); + const fileLoader = new CachedFileLoader(fileCache); + const fn = writeTempFile('file_cache_test', 'let x: number = 12;\n'); + invalidateFileCache(fileCache, fn); + + // Caches. + const sourceFile = fileLoader.loadFile('fileName', fn, ts.ScriptTarget.ES5); + let sourceFile2 = fileLoader.loadFile('fileName', fn, ts.ScriptTarget.ES5); + expect(sourceFile).toBe(sourceFile2); // i.e., identical w/ === + + // Invalidate the file. + invalidateFileCache(fileCache, fn); + sourceFile2 = fileLoader.loadFile('fileName', fn, ts.ScriptTarget.ES5); + // New file after write/mtime change. + expect(sourceFile).not.toBe(sourceFile2); + }); + + it('caches in LRU order', () => { + let free = false; + const fileCache = new FileCache(fauxDebug); + const fileLoader = new CachedFileLoader(fileCache); + fileCache.shouldFreeMemory = () => free; + + function load(name: string, fn: string) { + return fileLoader.loadFile(name, fn, ts.ScriptTarget.ES5); + } + + const fn1 = writeTempFile('file_cache_test1', 'let x: number = 12;\n'); + const fn2 = writeTempFile('file_cache_test2', 'let x: number = 13;\n'); + const fn3 = writeTempFile('file_cache_test3', 'let x: number = 14;\n'); + invalidateFileCache(fileCache, fn1, fn2, fn3); + + // Populate the cache. + const f1 = load('f1', fn1); + const f2 = load('f2', fn2); + // Load f1 from cache again. Now f1 is the most recently used file. + expect(load('f1', fn1)).toBe(f1); + + free = true; + const f3 = load('f3', fn3); + free = false; + // f1 is still in cache, it was the MRU file. + expect(load('f1', fn1)).toBe(f1); + // f2 however was evicted. + expect(load('f1', fn2)).not.toBe(f2); + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/perf_trace.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/perf_trace.ts new file mode 100644 index 0000000000..2e62bf05a3 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/perf_trace.ts @@ -0,0 +1,88 @@ +/** + * @license + * Copyright 2017 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * perf_trace records traces in the Chrome Trace format (which is actually used + * for more than just Chrome). See: + * https://github.com/catapult-project/catapult/blob/master/tracing/README.md + */ + +import * as fs from 'fs'; + +type Microseconds = number; + +/** @return a high-res timestamp of the current time. */ +function now(): Microseconds { + const [sec, nsec] = process.hrtime(); + return (sec * 1e6) + (nsec / 1e3); +} + +/** + * The type of entries in the Chrome Trace format: + * https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/edit + * Field names are chosen to match the JSON format. + */ +declare interface Event { + name: string; + ph: 'B'|'E'|'X'|'C'; + pid: number; // Required field in the trace viewer, but we don't use it. + ts: Microseconds; + dur?: Microseconds; + args?: any; +} + +let events: Event[] = []; + +/** wrap wraps enter()/leave() calls around a block of code. */ +export function wrap(name: string, f: () => T): T { + const start = now(); + try { + return f(); + } finally { + const end = now(); + events.push({name, ph: 'X', pid: 1, ts: start, dur: (end - start)}); + } +} + +/** + * counter records a snapshot of counts. The counter name identifies a + * single graph, while the counts object provides data for each count + * of a line on the stacked bar graph. + */ +export function counter(name: string, counts: {[name: string]: number}) { + events.push({name, ph: 'C', pid: 1, ts: now(), args: counts}); +} + +/** write writes the trace in Chrome Trace format to a given path. */ +export function write(path: string) { + fs.writeFileSync(path, JSON.stringify(events), {encoding: 'utf8'}); + events = []; +} + +/** + * Given an event name, return the total duration of all events of this name in + * microseconds. If the event didn't happen then throw an error. + */ +export function getTotalDuration(name: string): number { + const durations = events.filter(event => event.name === name && !!event.dur) + .map(event => event.dur as number); + if (durations.length === 0) { + throw new Error(`${name} event didn't happen.`); + } + + return durations.reduce((dur1, dur2) => dur1 + dur2); +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts new file mode 100644 index 0000000000..b28f64f348 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts @@ -0,0 +1,54 @@ +/** + * @license + * Copyright 2017 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @fileoverview + * Provides APIs for extending TypeScript. + * Based on the LanguageService plugin API in TS 2.3 + */ + +import * as ts from 'typescript'; + +/** + * This API is simpler than LanguageService plugins. + * It's used for plugins that only target the command-line and never run in an + * editor context. + * IMPORTANT: plugins must propagate the diagnostics from the original program. + * Execution of plugins is not additive; only the result from the top-most + * wrapped Program is used. + */ +export interface TscPlugin { wrap(p: ts.Program, config?: {}): ts.Program; } + +// TODO(alexeagle): this should be unioned with tsserverlibrary.PluginModule +export type Plugin = TscPlugin; + +/** + * The proxy design pattern, allowing us to customize behavior of the delegate + * object. + * This creates a property-by-property copy of the object, so it can be mutated + * without affecting other users of the original object. + * See https://en.wikipedia.org/wiki/Proxy_pattern + */ +export function createProxy(delegate: T): T { + const proxy = Object.create(null); + for (const k of Object.keys(delegate)) { + proxy[k] = function() { + return (delegate as any)[k].apply(delegate, arguments); + }; + } + return proxy; +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts new file mode 100644 index 0000000000..0355c8fa69 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts @@ -0,0 +1,110 @@ +/** + * @license + * Copyright 2017 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as path from 'path'; +import * as ts from 'typescript'; + +import * as perfTrace from './perf_trace'; +import * as pluginApi from './plugin_api'; + +export interface StrictDepsPluginConfig { + compilationTargetSrc: string[]; + allowedStrictDeps: string[]; + rootDir: string; +} + +/** The TypeScript diagnostic code for "Cannot find module ...". */ +export const TS_ERR_CANNOT_FIND_MODULE = 2307; + +/** + * The strict_deps plugin checks the imports of the compiled modules. + * + * It implements strict deps, i.e. enforces that each file in + * `config.compilationTargetSrc` only imports from files in + * `config.allowedStrictDeps`. + * + * This is used to implement strict dependency checking - + * source files in a build target may only import sources of their immediate + * dependencies, but not sources of their transitive dependencies. + * + * strict_deps also makes sure that no imports ends in '.ts'. TypeScript + * allows imports including the file extension, but our runtime loading support + * fails with it. + * + * strict_deps currently does not check ambient/global definitions. + */ +export const PLUGIN: pluginApi.Plugin = { + wrap: (program: ts.Program, config: StrictDepsPluginConfig): ts.Program => { + const proxy = pluginApi.createProxy(program); + proxy.getSemanticDiagnostics = function(sourceFile: ts.SourceFile) { + const result = program.getSemanticDiagnostics(sourceFile); + perfTrace.wrap('checkModuleDeps', () => { + result.push(...checkModuleDeps( + program, config.compilationTargetSrc, config.allowedStrictDeps, + config.rootDir)); + }); + return result; + }; + return proxy; + } +}; + +// Exported for testing +export function checkModuleDeps( + program: ts.Program, filesToCheck: string[], allowedDeps: string[], + rootDir: string): ts.Diagnostic[] { + function stripExt(fn: string) { + return fn.replace(/(\.d)?\.tsx?$/, ''); + } + const allowedMap: {[fileName: string]: boolean} = {}; + for (const d of allowedDeps) allowedMap[stripExt(d)] = true; + + const tc = program.getTypeChecker(); + const result: ts.Diagnostic[] = []; + for (const fileName of filesToCheck) { + const sf = program.getSourceFile(fileName); + for (const stmt of sf.statements) { + if (stmt.kind !== ts.SyntaxKind.ImportDeclaration && + stmt.kind !== ts.SyntaxKind.ExportDeclaration) { + continue; + } + const id = stmt as ts.ImportDeclaration | ts.ExportDeclaration; + const modSpec = id.moduleSpecifier; + if (!modSpec) continue; // E.g. a bare "export {x};" + + const sym = tc.getSymbolAtLocation(modSpec); + if (!sym || !sym.declarations || sym.declarations.length < 1) { + continue; + } + // Module imports can only have one declaration location. + const declFileName = sym.declarations[0].getSourceFile().fileName; + if (allowedMap[stripExt(declFileName)]) continue; + const importName = path.relative(rootDir, declFileName); + result.push({ + file: sf, + start: modSpec.getStart(), + length: modSpec.getEnd() - modSpec.getStart(), + messageText: `transitive dependency on ${importName} not allowed. ` + + `Please add the BUILD target to your rule's deps.`, + category: ts.DiagnosticCategory.Error, + // semantics are close enough, needs taze. + code: TS_ERR_CANNOT_FIND_MODULE, + }); + } + } + return result; +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts new file mode 100644 index 0000000000..7c0507c58d --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts @@ -0,0 +1,121 @@ +/** + * @license + * Copyright 2017 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// taze: jasmine from //third_party/javascript/typings/jasmine:jasmine_without_externs +import * as ts from 'typescript'; + +import {format as formatDiagnostics} from './g3_diagnostics'; +import {checkModuleDeps} from './strict_deps'; + +describe('strict deps', () => { + function createProgram(files: ts.MapLike) { + const options: ts.CompilerOptions = { + noResolve: true, + baseUrl: '/src', + rootDirs: ['/src', '/src/blaze-bin'], + paths: {'*': ['*', 'blaze-bin/*']}, + traceResolution: true + }; + + // Fake compiler host relying on `files` above. + const host = ts.createCompilerHost(options); + const originalGetSourceFile = host.getSourceFile.bind(host); + host.getSourceFile = function(fileName: string) { + if (!files[fileName]) { + return originalGetSourceFile(fileName, ts.ScriptTarget.Latest); + } + return ts.createSourceFile( + fileName, files[fileName], ts.ScriptTarget.Latest); + }; + + // Fake module resolution host relying on `files` above. + host.fileExists = (f) => !!files[f]; + host.directoryExists = () => true; + host.realpath = (f) => f; + const rf = host.readFile.bind(host); + host.readFile = (f) => files[f] || rf(f); + host.getCurrentDirectory = () => '/src'; + host.getDirectories = (path) => []; + + const p = ts.createProgram(Object.keys(files), options, host); + const diags = [...ts.getPreEmitDiagnostics(p)]; + if (diags.length > 0) { + throw new Error(formatDiagnostics('//test:pkg', diags)); + } + return p; + } + + it('reports errors for transitive dependencies', () => { + const p = createProgram({ + '/src/p/sd1.ts': 'export let x = 1;', + '/src/p/sd2.ts': `import {x} from "./sd1"; + export let y = x;`, + '/src/p/sd3.ts': `import {y} from "./sd2"; + import {x} from "./sd1"; + export let z = x + y;`, + }); + const diags = checkModuleDeps(p, ['p/sd3.ts'], ['/src/p/sd2.ts'], '/src'); + expect(diags.length).toBe(1); + expect(diags[0].messageText) + .toMatch(/transitive dependency on p\/sd1.ts not allowed/); + }); + + it('reports errors for exports', () => { + const p = createProgram({ + '/src/p/sd1.ts': 'export let x = 1;', + '/src/p/sd2.ts': `import {x} from "./sd1"; + export let y = x;`, + '/src/p/sd3.ts': `export {x} from "./sd1";`, + }); + const diags = checkModuleDeps(p, ['p/sd3.ts'], ['/src/p/sd2.ts'], '/src'); + expect(diags.length).toBe(1); + expect(diags[0].messageText) + .toMatch(/transitive dependency on p\/sd1.ts not allowed/); + }); + + it('supports files mapped in blaze-bin', () => { + const p = createProgram({ + '/src/blaze-bin/p/sd1.ts': 'export let x = 1;', + '/src/blaze-bin/p/sd2.ts': `import {x} from "./sd1"; + export let y = x;`, + '/src/p/sd3.ts': `import {y} from "./sd2"; + import {x} from "./sd1"; + export let z = x + y;`, + }); + const diags = + checkModuleDeps(p, ['/src/p/sd3.ts'], ['/src/blaze-bin/p/sd2.ts'], '/src'); + expect(diags.length).toBe(1); + expect(diags[0].messageText) + .toMatch(/dependency on blaze-bin\/p\/sd1.ts not allowed/); + }); + + it('supports .d.ts files', () => { + const p = createProgram({ + '/src/blaze-bin/p/sd1.d.ts': 'export declare let x: number;', + '/src/blaze-bin/p/sd2.d.ts': `import {x} from "./sd1"; + export declare let y: number;`, + '/src/p/sd3.ts': `import {y} from "./sd2"; + import {x} from "./sd1"; + export let z = x + y;`, + }); + const diags = + checkModuleDeps(p, ['/src/p/sd3.ts'], ['/src/blaze-bin/p/sd2.d.ts'], '/src'); + expect(diags.length).toBe(1); + expect(diags[0].messageText) + .toMatch(/dependency on blaze-bin\/p\/sd1.d.ts not allowed/); + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/test_support.ts new file mode 100644 index 0000000000..3e341ac70e --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/test_support.ts @@ -0,0 +1,40 @@ +/** + * @license + * Copyright 2017 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @fileoverview Helper functions for tests. */ +import * as fs from 'fs'; + +import {FileCache} from './file_cache'; + +export function writeTempFile(name: string, contents: string): string { + // TEST_TMPDIR is set by bazel. + const fn = (process.env.TEST_TMPDIR || '/tmp') + '/tmp.' + + (Math.random() * 1000000).toFixed(0) + '.' + name; + fs.writeFileSync(fn, contents); + return fn; +} + +let digestNumber = 0; + +export function invalidateFileCache(fc: FileCache<{}>, ...fileNames: string[]) { + const digests: {[filePath: string]: string} = {}; + for (const fp of fileNames) { + digestNumber++; + digests[fp] = fp + digestNumber; + } + fc.updateCache(digests); +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index a2dda5fb65..532413ef8a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -1,3 +1,20 @@ +/** + * @license + * Copyright 2017 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import * as path from 'path'; // from //third_party/javascript/typings/node import * as ts from 'typescript'; From 61bf8554d60ffad59af517909cf6ff4b35760dd2 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 26 May 2017 13:51:55 -0700 Subject: [PATCH 0008/1134] Use a custom TypeScript compiler that maps output locations back to the shortest rootDirs. Workaround for https://github.com/Microsoft/TypeScript/issues/8245 Fixes #5 PiperOrigin-RevId: 157259036 --- .../examples/generated_ts/BUILD.oss | 12 ++ .../internal/common/tsconfig.bzl | 3 - .../rules_typescript/internal/node.bzl | 24 ++- .../internal/node_launcher.sh | 2 +- .../internal/tsc_wrapped/BUILD | 3 +- .../internal/tsc_wrapped/tsc_wrapped.ts | 178 ++++++++++++++++++ .../internal/tsc_wrapped/tsconfig.json | 6 + 7 files changed, 220 insertions(+), 8 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/BUILD.oss create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/BUILD.oss b/third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/BUILD.oss new file mode 100644 index 0000000000..5bc28301b9 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/BUILD.oss @@ -0,0 +1,12 @@ +load("//:defs.bzl", "ts_library") + +genrule( + name = "foo_ts", + outs = ["foo.ts"], + cmd = "echo 'export const a = 1;' > $@", +) + +ts_library( + name = "generated_ts", + srcs = [":foo.ts"], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 0b092309b2..d583af07bb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -164,9 +164,6 @@ def create_tsconfig(ctx, files, srcs, tsconfig_dir, "inlineSources": True, # Implied by inlineSourceMap: True "sourceMap": False, - - # Don't emit decorate/metadata helper code, we provide our own helpers.js. - "noEmitHelpers": ctx.attr.runtime == "browser", } return { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl index 3489539fcb..94f420bc11 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl @@ -16,10 +16,29 @@ """ load(":executables.bzl", "get_node") +def _sources_aspect_impl(target, ctx): + result = set() + if hasattr(ctx.rule.attr, "deps"): + for dep in ctx.rule.attr.deps: + if hasattr(dep, "node_sources"): + result += dep.node_sources + if hasattr(target, "typescript"): + result += target.typescript.es5_sources + return struct(node_sources = result) + +_sources_aspect = aspect( + _sources_aspect_impl, + attr_aspects = ["deps"], +) + def _node_binary_impl(ctx): node = ctx.file._node script = ctx.attr.main node_modules = ctx.files._node_modules + sources = set() + for d in ctx.attr.data: + if hasattr(d, "node_sources"): + sources += d.node_sources ctx.template_action( template=ctx.file._launcher_template, @@ -34,7 +53,7 @@ def _node_binary_impl(ctx): return struct( runfiles = ctx.runfiles( - files = [node] + node_modules, + files = [node] + node_modules + sources.to_list(), collect_data = True, ), ) @@ -45,7 +64,8 @@ node_binary = rule( "main": attr.string(), "data": attr.label_list( allow_files = True, - cfg = "data"), + cfg = "data", + aspects=[_sources_aspect]), "_node": attr.label( default = get_node(), allow_files = True, diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh index 30927360b9..0d57b86e7e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh @@ -78,7 +78,7 @@ else fi fi export RUNFILES -export NODE_PATH="${RUNFILES}" +export NODE_PATH="${RUNFILES}":${RUNFILES}/yarn/installed/node_modules ARGS=() NODE_OPTIONS=() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD index f0501b25a1..94ec9a2c09 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD @@ -38,7 +38,6 @@ node_binary( ":tsc_wrapped", "@yarn//installed:node_modules", ], - # TODO(alexeagle): plug in tsc_wrapped.js instead - main = "yarn/installed/node_modules/typescript/lib/tsc.js", + main = "io_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js", visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts new file mode 100644 index 0000000000..ba90d437fd --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -0,0 +1,178 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import * as ts from 'typescript'; + +import {parseTsconfig} from './tsconfig'; + +export function main() { + const args = process.argv.slice(2); + if (args.length === 0) throw new Error('Not enough arguments'); + const result = runOneBuild(args); + result.then((s) => { + process.exit(s ? 0 : 1); + }); +} + +class CompilerHost implements ts.CompilerHost { + /** + * rootDirs relative to the rootDir, eg "bazel-out/local-fastbuild/bin" + */ + private relativeRoots: string[]; + + constructor( + readonly options: ts.CompilerOptions, private delegate: ts.CompilerHost) { + // Try longest include directories first. + this.options.rootDirs.sort((a, b) => b.length - a.length); + this.relativeRoots = + this.options.rootDirs.map(r => path.relative(this.options.rootDir, r)); + } + + /** + * Workaround https://github.com/Microsoft/TypeScript/issues/8245 + * We use the `rootDirs` property both for module resolution, + * and *also* to flatten the structure of the output directory + * (as `rootDir` would do for a single root). + * To do this, look for the pattern outDir/relativeRoots[i]/path/to/file + * or relativeRoots[i]/path/to/file + * and replace that with path/to/file + */ + flattenOutDir(fileName: string): string { + let result = fileName; + + // outDir/relativeRoots[i]/path/to/file -> relativeRoots[i]/path/to/file + if (fileName.startsWith(this.options.rootDir)) { + result = path.relative(this.options.outDir, fileName); + } + + for (const dir of this.relativeRoots) { + if (result.startsWith(dir + '/')) { + // relativeRoots[i]/path/to/file -> path/to/file + result = path.relative(dir, result); + // relativeRoots is sorted longest first so we can short-circuit + // after the first match + break; + } + } + return result; + } + writeFile( + fileName: string, content: string, writeByteOrderMark: boolean, + onError?: (message: string) => void, + sourceFiles?: ts.SourceFile[]): void { + fileName = this.flattenOutDir(fileName); + + // Prepend the output directory. + fileName = path.join(this.options.outDir, fileName); + + if (!fs.existsSync(fileName) || + fs.readFileSync(fileName, 'utf-8') !== content) { + this.delegate.writeFile( + fileName, content, writeByteOrderMark, onError, sourceFiles); + } + } + + // Delegate everything else to the original compiler host. + fileExists(filePath: string): boolean { + return this.delegate.fileExists(filePath); + } + + getSourceFile( + fileName: string, languageVersion: ts.ScriptTarget, + onError?: (message: string) => void) { + return this.delegate.getSourceFile(fileName, languageVersion, onError); + } + + getDefaultLibFileName(options: ts.CompilerOptions): string { + return this.delegate.getDefaultLibFileName(options); + } + + getCanonicalFileName(path: string) { + return this.delegate.getCanonicalFileName(path); + } + + getCurrentDirectory(): string { + return this.delegate.getCurrentDirectory(); + } + + useCaseSensitiveFileNames(): boolean { + return this.delegate.useCaseSensitiveFileNames(); + } + + getNewLine(): string { + return this.delegate.getNewLine(); + } + + getDirectories(path: string) { + return this.delegate.getDirectories(path); + } + + readFile(fileName: string): string { + return this.delegate.readFile(fileName); + } + + trace(s: string): void { + console.error(s); + } +} + +function format(target: string, diagnostics: ts.Diagnostic[]): string { + const diagnosticsHost: ts.FormatDiagnosticsHost = { + ...ts.sys, + getNewLine: () => ts.sys.newLine, + getCanonicalFileName: (f: string) => + ts.sys.useCaseSensitiveFileNames ? f : f.toLowerCase() + }; + return ts.formatDiagnostics(diagnostics, diagnosticsHost); +} + +/** + * Runs a single build, returning false on failure. This is potentially called + * multiple times (once per bazel request) when running as a bazel worker. + * Any encountered errors are written to stderr. + */ +function runOneBuild( + args: string[], inputs?: {[path: string]: string}): Promise { + const tsconfigFile = args[1]; + const [parsed, errors, {target}] = parseTsconfig(tsconfigFile); + if (errors) { + console.error(format(target, errors)); + return Promise.resolve(false); + } + const {options, bazelOpts, files} = parsed; + const compilerHostDelegate = + ts.createCompilerHost({target: ts.ScriptTarget.ES5}); + + const compilerHost = new CompilerHost(options, compilerHostDelegate); + const program = ts.createProgram(files, options, compilerHost); + + function isCompilationTarget(sf: ts.SourceFile): boolean { + return (bazelOpts.compilationTargetSrc.indexOf(sf.fileName) !== -1); + } + const diagnostics: ts.Diagnostic[] = []; + // These checks mirror ts.getPreEmitDiagnostics, with the important + // exception that if you call program.getDeclarationDiagnostics() it somehow + // corrupts the emit. + diagnostics.push(...program.getOptionsDiagnostics()); + diagnostics.push(...program.getGlobalDiagnostics()); + for (const sf of program.getSourceFiles().filter(isCompilationTarget)) { + diagnostics.push(...program.getSyntacticDiagnostics(sf)); + diagnostics.push(...program.getSemanticDiagnostics(sf)); + } + if (diagnostics.length > 0) { + console.error(format(bazelOpts.target, diagnostics)); + return Promise.resolve(false); + } + for (const sf of program.getSourceFiles().filter(isCompilationTarget)) { + const emitResult = program.emit(sf); + diagnostics.push(...emitResult.diagnostics); + } + if (diagnostics.length > 0) { + console.error(format(bazelOpts.target, diagnostics)); + return Promise.resolve(false); + } + return Promise.resolve(true); +} + +if (require.main === module) { + main(); +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json index 80c821cadb..2fb2feb4ed 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json @@ -2,6 +2,12 @@ "compilerOptions": { "types": [ "node" + ], + "lib": [ + "es5", + "es2015.core", + "es2015.collection", + "es2015.promise" ] } } From 519cb134b6ad9d9076f291fd4c4db724a6ace91e Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Fri, 26 May 2017 14:17:51 -0700 Subject: [PATCH 0009/1134] fix location of new BUILD file --- .../rules_typescript/examples/generated_ts/{BUILD.oss => BUILD} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/{BUILD.oss => BUILD} (100%) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/BUILD.oss b/third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/BUILD similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/BUILD.oss rename to third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/BUILD From 110904c09a9b089fa5f8b9d2976dc479f2555c0d Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Thu, 1 Jun 2017 14:03:21 -0700 Subject: [PATCH 0010/1134] Simplify tsconfig parsing by using higher-level TypeScript API. This adds support for the "extends" field in tsconfig.json. PiperOrigin-RevId: 157758835 --- .../internal/tsc_wrapped/tsconfig.ts | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index 532413ef8a..5b663fc3fe 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -118,24 +118,22 @@ export function parseTsconfig( const bazelOpts: BazelOptions = config.bazelOptions; const target = bazelOpts.target; - const {options, errors} = - // All paths in the compilerOptions will be converted to absolute. - ts.convertCompilerOptionsFromJson( - config.compilerOptions, path.dirname(tsconfigFile)); + const {options, errors, fileNames} = ts.parseJsonConfigFileContent( + config, host, path.dirname(tsconfigFile)); if (errors && errors.length) { return [null, errors, {target}]; } - // The file list in the tsconfig is relative to the tsconfig dir - // and aren't transformed by convertCompilerOptionsFromJson. - // Transform them to be absolute here. - const files = config.files.map(f => { - return path.resolve(path.dirname(tsconfigFile), f); - }); + // TypeScript's parseJsonConfigFileContent returns paths that are joined, eg. + // /path/to/project/bazel-out/arch/bin/path/to/package/../../../../../../path + // We normalize them to remove the intermediate parent directories. + // This improves error messages and also matches logic in tsc_wrapped where we + // expect normalized paths. + const files = fileNames.map(f => path.normalize(f)); // The bazelOpts paths in the tsconfig are relative to // options.rootDir (the google3 root) and aren't transformed by - // convertCompilerOptionsFromJson (because TypeScript doesn't know + // parseJsonConfigFileContent (because TypeScript doesn't know // about them). Transform them to also be absolute here. bazelOpts.compilationTargetSrc = bazelOpts.compilationTargetSrc.map(f => path.resolve(options.rootDir, f)); From e0e3940d346ceafefd03215f0b4726c542008a0e Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Thu, 1 Jun 2017 16:07:45 -0700 Subject: [PATCH 0011/1134] Various fixes to use tsc_wrapped as the compiler. PiperOrigin-RevId: 157777063 --- .../rules_typescript/examples/bar.ts | 1 + .../rules_typescript/examples/foo.ts | 6 ++-- .../rules_typescript/examples/tsconfig.json | 3 +- .../rules_typescript/internal/build_defs.bzl | 8 +++++ .../internal/common/compilation.bzl | 17 +++++----- .../internal/tsc_wrapped/tsc_wrapped.ts | 31 ++++++++++++++++--- .../internal/tsc_wrapped/tsconfig.json | 1 + 7 files changed, 51 insertions(+), 16 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts index 23c36a31f1..0069f3e726 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts @@ -17,3 +17,4 @@ import {greeter} from './foo'; import {cool} from 'some-lib'; +import * as ts from 'typescript'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/foo.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/foo.ts index 391dec421f..bbf827bc7e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/foo.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/foo.ts @@ -17,10 +17,10 @@ export class Greeter { constructor(public greeting: string) {} - greet() { - return '

' + this.greeting + '

'; + greet(): Promise { + return Promise.resolve('

' + this.greeting + '

'); } }; export const greeter = new Greeter('Hello, world!'); -document.body.innerHTML = greeter.greet(); +greeter.greet().then(msg => { document.body.innerHTML = msg; }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig.json index a83e8e6596..d08c0faa6a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig.json +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig.json @@ -1,6 +1,7 @@ { "compilerOptions": { - "strict": true + "strict": true, + "lib": ["es2015.promise", "dom", "es5"] } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index 8af987ed8c..a841c6dd78 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -76,6 +76,14 @@ def _tsc_wrapped_tsconfig(ctx, host_bin = "bazel-out/host/bin" runfiles = ctx.executable.tsc.short_path + ".runfiles" + # When building within this repo, the executable comes from the local path + # like bazel-bin/internal/tsc_wrapped/tsc.runfiles + # But when building in some user's repo that depends on this one, the path in + # that repo has extra segments to point into Bazel's "external" directory. + # like bazel-bin/external/io_bazel_rules_typescript/internal/tsc_wrapped/tsc.runfiles + if ctx.workspace_name != "io_bazel_rules_typescript": + runfiles = "/".join(["external/io_bazel_rules_typescript", runfiles]) + module_roots = { "*": [ "/".join([host_bin, runfiles, "yarn/installed/node_modules/*"]), diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 9a68439794..fc5099d96c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -52,11 +52,15 @@ def _outputs(ctx, label, input_file): Returns: A three-tuple of files (.closure.js, .js, .d.ts). """ - dot = input_file.short_path.rfind(".") - beginning = len(label.package) - if label.package: - beginning += 1 - basename = input_file.short_path[beginning:dot] + if input_file.path.endswith(".d.ts"): + fail("srcs must not contain any type declarations (.d.ts files), " + + "but %s contains %s" % (label, input_file.short_path), "srcs") + workspace_segments = label.workspace_root.split("/") if label.workspace_root else [] + package_segments = label.package.split("/") if label.package else [] + trim = len(workspace_segments) + len(package_segments) + basename = "/".join(input_file.short_path.split("/")[trim:]) + dot = basename.rfind(".") + basename = basename[:dot] return (ctx.new_file(basename + ".closure.js"), ctx.new_file(basename + ".js"), ctx.new_file(basename + ".d.ts")) @@ -108,9 +112,6 @@ def compile_ts(ctx, for f in src.files: has_sources = True if is_library: - if f.path.endswith(".d.ts"): - fail("srcs must not contain any type declarations (.d.ts files), " + - "but %s contains %s" % (src.label, f.short_path), "srcs") outs = _outputs(ctx, src.label, f) transpiled_closure_js += [outs[0]] transpiled_devmode_js += [outs[1]] diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index ba90d437fd..d1a01a5c2c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -14,17 +14,26 @@ export function main() { } class CompilerHost implements ts.CompilerHost { + + /** + * Lookup table to answer file stat's without looking on disk. + */ + private knownFiles = new Set(); + /** * rootDirs relative to the rootDir, eg "bazel-out/local-fastbuild/bin" */ private relativeRoots: string[]; - constructor( + constructor(public inputFiles: string[], readonly options: ts.CompilerOptions, private delegate: ts.CompilerHost) { // Try longest include directories first. this.options.rootDirs.sort((a, b) => b.length - a.length); this.relativeRoots = this.options.rootDirs.map(r => path.relative(this.options.rootDir, r)); + inputFiles.forEach((f) => { + this.knownFiles.add(f); + }); } /** @@ -55,6 +64,7 @@ class CompilerHost implements ts.CompilerHost { } return result; } + writeFile( fileName: string, content: string, writeByteOrderMark: boolean, onError?: (message: string) => void, @@ -71,11 +81,24 @@ class CompilerHost implements ts.CompilerHost { } } - // Delegate everything else to the original compiler host. + /** + * Performance optimization: don't try to stat files we weren't explicitly + * given as inputs. + * This also allows us to disable Bazel sandboxing, without accidentally + * reading .ts inputs when .d.ts inputs are intended. + */ fileExists(filePath: string): boolean { - return this.delegate.fileExists(filePath); + // Allow moduleResolution=node to behave normally. + // TODO(alexeagle): make a bazelOptions.node_modules_prefix option in the + // tsconfig that gives us a specific root where TS can look around the disk. + if (filePath.indexOf('/node_modules/') >= 0) { + return this.delegate.fileExists(filePath); + } + return this.knownFiles.has(filePath); } + // Delegate everything else to the original compiler host. + getSourceFile( fileName: string, languageVersion: ts.ScriptTarget, onError?: (message: string) => void) { @@ -142,7 +165,7 @@ function runOneBuild( const compilerHostDelegate = ts.createCompilerHost({target: ts.ScriptTarget.ES5}); - const compilerHost = new CompilerHost(options, compilerHostDelegate); + const compilerHost = new CompilerHost(files, options, compilerHostDelegate); const program = ts.createProgram(files, options, compilerHost); function isCompilationTarget(sf: ts.SourceFile): boolean { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json index 2fb2feb4ed..49a37699e4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json @@ -4,6 +4,7 @@ "node" ], "lib": [ + "dom", "es5", "es2015.core", "es2015.collection", From 504e83891f849ce9ab6a7f56ee3ea845e13ea97e Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 2 Jun 2017 17:59:03 -0700 Subject: [PATCH 0012/1134] Don't set traceResolution or diagnostics explicitly false, as that overrides a true setting a user can select in their tsconfig.json. PiperOrigin-RevId: 157896848 --- .../rules_typescript/internal/common/tsconfig.bzl | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index d583af07bb..d4f85e7a8e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -141,9 +141,6 @@ def create_tsconfig(ctx, files, srcs, tsconfig_dir, # "short name" mappings for npm packages, such as "@angular/core" "paths": module_roots, - "traceResolution": _DEBUG, - "diagnostics": _DEBUG, - # Inline const enums. "preserveConstEnums": False, @@ -166,6 +163,10 @@ def create_tsconfig(ctx, files, srcs, tsconfig_dir, "sourceMap": False, } + if _DEBUG: + compiler_options["traceResolution"] = True + compiler_options["diagnostics"] = True + return { "compilerOptions": compiler_options, "bazelOptions": bazel_options, From f68e5c18fe1f0bca93a95137dee3687d170ee0ac Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Wed, 7 Jun 2017 13:44:59 -0700 Subject: [PATCH 0013/1134] Fix misleading comment. PiperOrigin-RevId: 158311381 --- .../bazelbuild/rules_typescript/internal/common/compilation.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index fc5099d96c..9cd3ed05d2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -25,7 +25,7 @@ def assert_js_or_typescript_deps(ctx): # TODO(plf): Leaving this here for now, but this message does not # make sense in opensource. "JavaScript library rules (js_library, pinto_library, etc, but " + - "also proto_library, soy_js).\n") + "also proto_library and some others).\n") def _collect_transitive_dts(ctx): all_deps_declarations = set() From 2b72ef5dabd4fe624901633603b122afa88101d1 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 9 Jun 2017 14:22:58 -0700 Subject: [PATCH 0014/1134] rename node_binary to nodejs_binary and make it public PiperOrigin-RevId: 158562202 --- third_party/github.com/bazelbuild/rules_typescript/defs.bzl | 1 + .../bazelbuild/rules_typescript/internal/node.bzl | 6 +++--- .../bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD | 6 +++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl index 6023524f76..736962837f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl @@ -17,5 +17,6 @@ Users should not load files under "/internal" """ load("//internal:build_defs.bzl", "ts_library") +load("//internal:node.bzl", "nodejs_binary") load("//internal:node_install.bzl", "node_repositories") load("//internal:yarn_install.bzl", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl index 94f420bc11..1a066c1150 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl @@ -31,7 +31,7 @@ _sources_aspect = aspect( attr_aspects = ["deps"], ) -def _node_binary_impl(ctx): +def _nodejs_binary_impl(ctx): node = ctx.file._node script = ctx.attr.main node_modules = ctx.files._node_modules @@ -58,8 +58,8 @@ def _node_binary_impl(ctx): ), ) -node_binary = rule( - _node_binary_impl, +nodejs_binary = rule( + _nodejs_binary_impl, attrs = { "main": attr.string(), "data": attr.label_list( diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD index 94ec9a2c09..bfcd61225e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD @@ -13,10 +13,10 @@ # limitations under the License. load("//:defs.bzl", "ts_library") -load("//internal:node.bzl", "node_binary") +load("//internal:node.bzl", "nodejs_binary") # Vanilla typescript compiler: run the tsc.js binary distributed by TypeScript -node_binary( +nodejs_binary( name = "tsc", data = ["@yarn//installed:node_modules"], main = "yarn/installed/node_modules/typescript/lib/tsc.js", @@ -32,7 +32,7 @@ ts_library( # Other ts_library rules will use this custom compiler, which calls the # TypeScript APIs to act like tsc, but adds capabilities like Bazel workers. -node_binary( +nodejs_binary( name = "tsc_wrapped_bin", data = [ ":tsc_wrapped", From 660f397c5e11d7aac60bd3f06a85d24a2074b3a5 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Mon, 12 Jun 2017 07:58:02 -0700 Subject: [PATCH 0015/1134] Change all worker-based compiler codepaths to be synchronous. PiperOrigin-RevId: 158712818 --- .../internal/tsc_wrapped/tsc_wrapped.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index d1a01a5c2c..cfb7740344 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -8,9 +8,7 @@ export function main() { const args = process.argv.slice(2); if (args.length === 0) throw new Error('Not enough arguments'); const result = runOneBuild(args); - result.then((s) => { - process.exit(s ? 0 : 1); - }); + process.exit(result ? 0 : 1); } class CompilerHost implements ts.CompilerHost { @@ -154,12 +152,12 @@ function format(target: string, diagnostics: ts.Diagnostic[]): string { * Any encountered errors are written to stderr. */ function runOneBuild( - args: string[], inputs?: {[path: string]: string}): Promise { + args: string[], inputs?: {[path: string]: string}): boolean { const tsconfigFile = args[1]; const [parsed, errors, {target}] = parseTsconfig(tsconfigFile); if (errors) { console.error(format(target, errors)); - return Promise.resolve(false); + return false; } const {options, bazelOpts, files} = parsed; const compilerHostDelegate = @@ -183,7 +181,7 @@ function runOneBuild( } if (diagnostics.length > 0) { console.error(format(bazelOpts.target, diagnostics)); - return Promise.resolve(false); + return false; } for (const sf of program.getSourceFiles().filter(isCompilationTarget)) { const emitResult = program.emit(sf); @@ -191,9 +189,9 @@ function runOneBuild( } if (diagnostics.length > 0) { console.error(format(bazelOpts.target, diagnostics)); - return Promise.resolve(false); + return false; } - return Promise.resolve(true); + return true; } if (require.main === module) { From 953b4eebe4f29a2210b4c78bac886120ec174df9 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Mon, 12 Jun 2017 09:06:38 -0700 Subject: [PATCH 0016/1134] devmode_manifest comment indicates it should be a path, not a File PiperOrigin-RevId: 158720072 --- .../rules_typescript/internal/common/compilation.bzl | 2 +- .../bazelbuild/rules_typescript/internal/common/tsconfig.bzl | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 9cd3ed05d2..11e2807938 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -166,7 +166,7 @@ def compile_ts(ctx, compilation_inputs, srcs, jsx_factory=jsx_factory, - devmode_manifest=devmode_manifest, + devmode_manifest=devmode_manifest.path, allowed_deps=allowed_deps) inputs = compilation_inputs + [tsconfig_json_es5] outputs = ( diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index d4f85e7a8e..94f7179a4b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -88,7 +88,7 @@ def create_tsconfig(ctx, files, srcs, tsconfig_dir, # Substitute commonjs with googmodule. "googmodule": ctx.attr.runtime == "browser", "es5Mode": devmode_manifest != None, - "manifest": devmode_manifest.path if devmode_manifest else "", + "manifest": devmode_manifest if devmode_manifest else "", # Explicitly tell the compiler which sources we're interested in (emitting # and type checking). "compilationTargetSrc": [s.path for s in srcs], @@ -102,7 +102,8 @@ def create_tsconfig(ctx, files, srcs, tsconfig_dir, compiler_options = { # De-sugar to this language level "target": "es5" if devmode_manifest or ctx.attr.runtime == "nodejs" else "es6", - "downlevelIteration": devmode_manifest != None or ctx.attr.runtime == "nodejs", + # Has no effect in closure/ES2015 mode. Always true just for simplicity. + "downlevelIteration": True, # Do not type-check the lib.*.d.ts. # We think this shouldn't be necessary but haven't figured out why yet From ee5ee0ba95ece648c49cf42f3391226465d93174 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Mon, 12 Jun 2017 16:00:22 -0700 Subject: [PATCH 0017/1134] Add npm_install rule. Rename all references to "yarn" elsewhere to "npm". This refers to the package repository where both the yarn and npm tools fetch packages. Fixes #7 PiperOrigin-RevId: 158778174 --- .../bazelbuild/rules_typescript/BUILD | 2 +- .../bazelbuild/rules_typescript/WORKSPACE | 3 +- .../bazelbuild/rules_typescript/defs.bzl | 1 + .../rules_typescript/internal/build_defs.bzl | 8 +-- .../rules_typescript/internal/node.bzl | 2 +- .../internal/node_launcher.sh | 2 +- .../rules_typescript/internal/npm_install.bzl | 63 +++++++++++++++++++ .../internal/tsc_wrapped/BUILD | 6 +- .../internal/yarn_install.bzl | 10 +-- 9 files changed, 81 insertions(+), 16 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/npm_install.bzl diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD b/third_party/github.com/bazelbuild/rules_typescript/BUILD index 8ec86ceb55..0ba1bc255d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -# The node_modules directory is created by `yarn install` +# The node_modules directory is created by `yarn install` or `npm install` # WORKAROUND for https://github.com/bazelbuild/bazel/issues/374#issuecomment-296217940 # see notes in internal/yarn_install.bzl filegroup( diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 0d08b8fa82..ce4985a04c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -21,6 +21,7 @@ load("//:defs.bzl", "node_repositories", "yarn_install") node_repositories() # Install yarn, and run yarn install to create node_modules. -# After this is run, label @yarn//installed:node_modules will exist. +# After this is run, label @npm//installed:node_modules will exist. # (But your rules can reference //:node_modules instead) +# Note, you could use npm_install as an alternative yarn_install(package_json = "//:package.json") diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl index 736962837f..3528958a28 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl @@ -20,3 +20,4 @@ load("//internal:build_defs.bzl", "ts_library") load("//internal:node.bzl", "nodejs_binary") load("//internal:node_install.bzl", "node_repositories") load("//internal:yarn_install.bzl", "yarn_install") +load("//internal:npm_install.bzl", "npm_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index a841c6dd78..65b3f554ae 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -86,14 +86,14 @@ def _tsc_wrapped_tsconfig(ctx, module_roots = { "*": [ - "/".join([host_bin, runfiles, "yarn/installed/node_modules/*"]), + "/".join([host_bin, runfiles, "npm/installed/node_modules/*"]), ], # Workaround https://github.com/Microsoft/TypeScript/issues/15962 # Needed for Angular to build with Bazel. # TODO(alexeagle): fix the bug upstream or find a better place for # this workaround. "zone.js": [ - "/".join([host_bin, runfiles, "yarn/installed/node_modules/zone.js/dist/zone.js.d.ts"]), + "/".join([host_bin, runfiles, "npm/installed/node_modules/zone.js/dist/zone.js.d.ts"]), ] } @@ -104,7 +104,7 @@ def _tsc_wrapped_tsconfig(ctx, config["compilerOptions"].update({ "typeRoots": ["/".join([ workspace_path, host_bin, runfiles, - "yarn/installed/node_modules/@types"] + "npm/installed/node_modules/@types"] )], }) @@ -180,7 +180,7 @@ ts_library = rule( allow_files=True, executable=True, cfg="host",), - "_node_modules": attr.label(default = Label("@yarn//installed:node_modules")) + "_node_modules": attr.label(default = Label("@npm//installed:node_modules")) }, fragments=["js"], outputs={"_js_typings": "_%{name}_js_typings.d.ts"},) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl index 1a066c1150..705c759c11 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl @@ -71,7 +71,7 @@ nodejs_binary = rule( allow_files = True, single_file = True), "_node_modules": attr.label( - default = Label("@yarn//installed:node_modules")), + default = Label("@npm//installed:node_modules")), "_launcher_template": attr.label( default = Label("//internal:node_launcher.sh"), allow_files = True, diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh index 0d57b86e7e..2293475c4a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh @@ -78,7 +78,7 @@ else fi fi export RUNFILES -export NODE_PATH="${RUNFILES}":${RUNFILES}/yarn/installed/node_modules +export NODE_PATH="${RUNFILES}":${RUNFILES}/npm/installed/node_modules ARGS=() NODE_OPTIONS=() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/npm_install.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/npm_install.bzl new file mode 100644 index 0000000000..60dc1ed7f2 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/npm_install.bzl @@ -0,0 +1,63 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Run `npm install` when the user calls npm_install() from their WORKSPACE. + +Using the package.json file supplied by the user, we call `npm install` +to create or update a node_modules folder next to the package.json. +Finally we create a workspace that symlinks to the user's project. +We name this workspace "npm" so there will be targets like +@npm//installed:node_modules + +Within the user's project, they can refer to //:node_modules +but from other repositories, like the @io_bazel_rules_typescript +repository, we also need to find some labels under node_modules. +""" + +load(":executables.bzl", "get_node") + +def _npm_install_impl(ctx): + project_dir = ctx.path(ctx.attr.package_json).dirname + ctx.file("npm_install.sh", """#!/bin/bash +set -ex +ROOT=$(dirname $1) +NODE=$2 +SCRIPT=$3 +(cd $ROOT; $NODE $SCRIPT install) +""") + result = ctx.execute(["./npm_install.sh", + ctx.path(ctx.attr.package_json), + ctx.path(ctx.attr._node), + ctx.path(ctx.attr._npm)]) + if result.return_code > 0: + print(result.stdout) + print(result.stderr) + + # WORKAROUND for https://github.com/bazelbuild/bazel/issues/374#issuecomment-296217940 + # See comments in yarn_install.bzl + # Instead symlink the root directory from the user's workspace + ctx.symlink(project_dir, "installed") + + +_npm_install = repository_rule( + _npm_install_impl, + attrs = { + "package_json": attr.label(), + "_node": attr.label(default = get_node(), allow_files=True, single_file=True), + "_npm": attr.label(default = Label("@io_bazel_rules_typescript_node//:bin/npm")), + }, +) + +def npm_install(package_json): + _npm_install(name = "npm", package_json = package_json) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD index bfcd61225e..812bf6d3dc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD @@ -18,8 +18,8 @@ load("//internal:node.bzl", "nodejs_binary") # Vanilla typescript compiler: run the tsc.js binary distributed by TypeScript nodejs_binary( name = "tsc", - data = ["@yarn//installed:node_modules"], - main = "yarn/installed/node_modules/typescript/lib/tsc.js", + data = ["@npm//installed:node_modules"], + main = "npm/installed/node_modules/typescript/lib/tsc.js", ) # Build our custom compiler using the vanilla one @@ -36,7 +36,7 @@ nodejs_binary( name = "tsc_wrapped_bin", data = [ ":tsc_wrapped", - "@yarn//installed:node_modules", + "@npm//installed:node_modules", ], main = "io_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js", visibility = ["//visibility:public"], diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/yarn_install.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/yarn_install.bzl index ad886d54cd..986e5381bb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/yarn_install.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/yarn_install.bzl @@ -21,8 +21,8 @@ We download a specific version of Yarn to ensure a hermetic build. Then, using the package.json file supplied by the user, we call `yarn install` to create or update a node_modules folder next to the package.json. Finally we create a workspace that symlinks to the user's project. -We name this workspace "yarn" so there will be targets like -@yarn//installed:node_modules +We name this workspace "npm" so there will be targets like +@npm//installed:node_modules Within the user's project, they can refer to //:node_modules but from other repositories, like the @io_bazel_rules_typescript @@ -37,8 +37,8 @@ def _yarn_install_impl(ctx): set -ex ROOT=$(dirname $1) NODE=$2 -YARN=$3 -(cd $ROOT; $NODE $YARN install) +SCRIPT=$3 +(cd $ROOT; $NODE $SCRIPT install) """) result = ctx.execute(["./yarn_install.sh", ctx.path(ctx.attr.package_json), @@ -88,5 +88,5 @@ exports_files(["bin/yarn"]) """, ) - _yarn_install(name = "yarn", package_json = package_json) + _yarn_install(name = "npm", package_json = package_json) From 1572d9831e1324d150185e32d17d858efd25c03d Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Mon, 19 Jun 2017 17:41:35 -0700 Subject: [PATCH 0018/1134] Run yarn check rather than yarn install. Users should now run yarn install themselves, or they can bazel run @yarn//:yarn (after the first build has executed) PiperOrigin-RevId: 159504356 --- .../bazelbuild/rules_typescript/WORKSPACE | 6 +-- .../bazelbuild/rules_typescript/defs.bzl | 2 +- .../{yarn_install.bzl => yarn_check.bzl} | 42 ++++++++++--------- 3 files changed, 27 insertions(+), 23 deletions(-) rename third_party/github.com/bazelbuild/rules_typescript/internal/{yarn_install.bzl => yarn_check.bzl} (72%) diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index ce4985a04c..76b4da1ae3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -14,14 +14,14 @@ workspace(name = "io_bazel_rules_typescript") -load("//:defs.bzl", "node_repositories", "yarn_install") +load("//:defs.bzl", "node_repositories", "yarn_check") # Install a hermetic version of node. # After this is run, label @io_bazel_rules_typescript_node//:bin/node will exist node_repositories() -# Install yarn, and run yarn install to create node_modules. +# Install yarn, and check the node_modules directory. # After this is run, label @npm//installed:node_modules will exist. # (But your rules can reference //:node_modules instead) # Note, you could use npm_install as an alternative -yarn_install(package_json = "//:package.json") +yarn_check(yarn_lock = "//:yarn.lock") diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl index 3528958a28..259361326c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl @@ -19,5 +19,5 @@ Users should not load files under "/internal" load("//internal:build_defs.bzl", "ts_library") load("//internal:node.bzl", "nodejs_binary") load("//internal:node_install.bzl", "node_repositories") -load("//internal:yarn_install.bzl", "yarn_install") +load("//internal:yarn_check.bzl", "yarn_check") load("//internal:npm_install.bzl", "npm_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/yarn_install.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/yarn_check.bzl similarity index 72% rename from third_party/github.com/bazelbuild/rules_typescript/internal/yarn_install.bzl rename to third_party/github.com/bazelbuild/rules_typescript/internal/yarn_check.bzl index 986e5381bb..f92487ba1e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/yarn_install.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/yarn_check.bzl @@ -12,14 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Install Yarn and run `yarn install` when the user calls yarn_install() from their WORKSPACE. +"""Install Yarn and run `yarn check` when the user calls yarn_check() from their +WORKSPACE. -Yarn is a package manager that downloads dependencies. Yarn is an improvement over the `npm` tool in -speed and correctness. +Yarn is a package manager that downloads dependencies. Yarn is an improvement +over the `npm` tool in speed and correctness. We download a specific version of Yarn to ensure a hermetic build. -Then, using the package.json file supplied by the user, we call `yarn install` -to create or update a node_modules folder next to the package.json. +Then, using the yarn.lock file supplied by the user, we call `yarn check` +to verify the node_modules folder next to the package.json. Finally we create a workspace that symlinks to the user's project. We name this workspace "npm" so there will be targets like @npm//installed:node_modules @@ -31,22 +32,23 @@ repository, we also need to find some labels under node_modules. load(":executables.bzl", "get_node") -def _yarn_install_impl(ctx): - project_dir = ctx.path(ctx.attr.package_json).dirname - ctx.file("yarn_install.sh", """#!/bin/bash +def _yarn_check_impl(ctx): + project_dir = ctx.path(ctx.attr.yarn_lock).dirname + ctx.file("yarn_check.sh", """#!/bin/bash set -ex ROOT=$(dirname $1) NODE=$2 SCRIPT=$3 -(cd $ROOT; $NODE $SCRIPT install) +(cd $ROOT; $NODE $SCRIPT check --integrity) """) - result = ctx.execute(["./yarn_install.sh", - ctx.path(ctx.attr.package_json), + result = ctx.execute(["./yarn_check.sh", + ctx.path(ctx.attr.yarn_lock), ctx.path(ctx.attr._node), ctx.path(ctx.attr._yarn)]) if result.return_code > 0: print(result.stdout) print(result.stderr) + print("Maybe you need to run 'bazel run @yarn//:yarn'") # WORKAROUND for https://github.com/bazelbuild/bazel/issues/374#issuecomment-296217940 # Bazel does not allow labels to start with `@`, so when installing eg. the `@types/node` @@ -64,18 +66,18 @@ SCRIPT=$3 ctx.symlink(project_dir, "installed") -_yarn_install = repository_rule( - _yarn_install_impl, +_yarn_check = repository_rule( + _yarn_check_impl, attrs = { - "package_json": attr.label(), + "yarn_lock": attr.label(), "_node": attr.label(default = get_node(), allow_files=True, single_file=True), - "_yarn": attr.label(default = Label("@yarn_pkg//:bin/yarn.js")), + "_yarn": attr.label(default = Label("@yarn//:bin/yarn.js")), }, ) -def yarn_install(package_json): +def yarn_check(yarn_lock): native.new_http_archive( - name = "yarn_pkg", + name = "yarn", urls = [ "http://mirror.bazel.build/github.com/yarnpkg/yarn/releases/download/v0.22.0/yarn-v0.22.0.tar.gz", "https://github.com/yarnpkg/yarn/releases/download/v0.22.0/yarn-v0.22.0.tar.gz", @@ -85,8 +87,10 @@ def yarn_install(package_json): build_file_content = """ package(default_visibility = ["//visibility:public"]) exports_files(["bin/yarn"]) +alias(name = "yarn", actual = ":bin/yarn") """, ) - _yarn_install(name = "npm", package_json = package_json) - + # This repo is named "npm" since that's the namespace of packages. + # See explanation at the top of this file. + _yarn_check(name = "npm", yarn_lock = yarn_lock) From 1eb2613ef4f40848e5a0c17e2512855d8cdf517c Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Tue, 20 Jun 2017 22:04:29 -0700 Subject: [PATCH 0019/1134] - Remove npm_install: users should run a separate install step before the first build. Document that in the README. - Add the yarn.lock file to version control as an example for users - Install yarn along with node and npm, using the package.json location to symlink the external @npm// repo - Remove yarn_check as a repository rule, that's the wrong time to run it, should be wired as a dependency of every nodejs_binary execution in a later change - name BUILD file BUILD.bazel so users don't have to worry about colliding with an existing 'build' directory (esp. on mac) PiperOrigin-RevId: 159656353 --- .../rules_typescript/.vscode/settings.json | 8 ++ .../bazelbuild/rules_typescript/README.md | 22 ++--- .../bazelbuild/rules_typescript/WORKSPACE | 20 ++-- .../bazelbuild/rules_typescript/defs.bzl | 2 - .../examples/{BUILD => BUILD.bazel} | 0 .../generated_ts/{BUILD => BUILD.bazel} | 0 .../some_library/{BUILD => BUILD.bazel} | 0 .../internal/{BUILD => BUILD.bazel} | 0 .../internal/node_install.bzl | 52 +++++++++- .../rules_typescript/internal/npm_install.bzl | 63 ------------ .../tsc_wrapped/{BUILD => BUILD.bazel} | 0 .../rules_typescript/internal/yarn_check.bzl | 96 ------------------- .../bazelbuild/rules_typescript/yarn.lock | 94 ++++++++++++++++++ 13 files changed, 175 insertions(+), 182 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/.vscode/settings.json rename third_party/github.com/bazelbuild/rules_typescript/examples/{BUILD => BUILD.bazel} (100%) rename third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/{BUILD => BUILD.bazel} (100%) rename third_party/github.com/bazelbuild/rules_typescript/examples/some_library/{BUILD => BUILD.bazel} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/{BUILD => BUILD.bazel} (100%) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/npm_install.bzl rename third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/{BUILD => BUILD.bazel} (100%) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/yarn_check.bzl create mode 100644 third_party/github.com/bazelbuild/rules_typescript/yarn.lock diff --git a/third_party/github.com/bazelbuild/rules_typescript/.vscode/settings.json b/third_party/github.com/bazelbuild/rules_typescript/.vscode/settings.json new file mode 100644 index 0000000000..ec55091286 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/.vscode/settings.json @@ -0,0 +1,8 @@ +// Place your settings in this file to overwrite default and user settings. +{ + "files.exclude": { + "**/.git": true, + "bazel-*": true + } +} + diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 71b4c4b0d3..5839ee8b8f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -8,7 +8,7 @@ The TypeScript rules integrate the TypeScript compiler with Bazel. First, install a current Bazel distribution. -Create a `BUILD` file in your project root: +Create a `BUILD.bazel` file in your project root: ```python package(default_visibility = ["//visibility:public"]) @@ -18,9 +18,6 @@ exports_files(["tsconfig.json"]) filegroup(name = "node_modules", srcs = glob(["node_modules/**/*"])) ``` -> Note, on Mac file paths are case-insensitive, so make sure there isn't already -a `build` folder in the project root. - Next create a `WORKSPACE` file in your project root (or edit the existing one) containing: @@ -30,14 +27,20 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "io_bazel_rules_typescript", remote = "https://github.com/bazelbuild/rules_typescript.git", - tag = "0.0.1", + tag = "0.0.3", # check for the latest tag when you install ) -load("@io_bazel_rules_typescript//:defs.bzl", "node_repositories", "yarn_install") +load("@io_bazel_rules_typescript//:defs.bzl", "node_repositories") + +node_repositories(package_json = "//:package.json") +``` -node_repositories() -yarn_install(package_json = "//:package.json") +We recommend using the Yarn package manager, because it has a built-in command +to verify the integrity of your `node_modules` directory. +You can run the version Bazel has already installed: +```sh +$ bazel run @yarn//:yarn ``` ## Usage @@ -59,9 +62,6 @@ ts_library( ) ``` -(Note that you may want to name the ts_library target the same as the enclosing -directory, making it the default target in the package.) - Then build it: `bazel build //path/to/package:target` diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 76b4da1ae3..8e1f4a813e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -14,14 +14,16 @@ workspace(name = "io_bazel_rules_typescript") -load("//:defs.bzl", "node_repositories", "yarn_check") +load("//:defs.bzl", "node_repositories") # Install a hermetic version of node. -# After this is run, label @io_bazel_rules_typescript_node//:bin/node will exist -node_repositories() - -# Install yarn, and check the node_modules directory. -# After this is run, label @npm//installed:node_modules will exist. -# (But your rules can reference //:node_modules instead) -# Note, you could use npm_install as an alternative -yarn_check(yarn_lock = "//:yarn.lock") +# After this is run, these labels will be available: +# - The nodejs install: +# @io_bazel_rules_typescript_node//:bin/node +# @io_bazel_rules_typescript_node//:bin/npm +# - The yarn package manager: +# @yarn//:yarn +# - An external repo symlink to the installed packages: +# @npm//installed:node_modules +# (User's rules can reference //:node_modules instead) +node_repositories(package_json = "//:package.json") diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl index 259361326c..a53c556ad0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl @@ -19,5 +19,3 @@ Users should not load files under "/internal" load("//internal:build_defs.bzl", "ts_library") load("//internal:node.bzl", "nodejs_binary") load("//internal:node_install.bzl", "node_repositories") -load("//internal:yarn_check.bzl", "yarn_check") -load("//internal:npm_install.bzl", "npm_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/BUILD b/third_party/github.com/bazelbuild/rules_typescript/examples/BUILD.bazel similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/examples/BUILD rename to third_party/github.com/bazelbuild/rules_typescript/examples/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/BUILD b/third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/BUILD.bazel similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/BUILD rename to third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/BUILD b/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/BUILD.bazel similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/examples/some_library/BUILD rename to third_party/github.com/bazelbuild/rules_typescript/examples/some_library/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/BUILD rename to third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl index beb6aee233..ce20030d56 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl @@ -17,6 +17,14 @@ We fetch a specific version of Node, to ensure builds are hermetic. We then create a repository @io_bazel_rules_typescript_node which provides the node binary to other rules. + +Finally we create a workspace that symlinks to the user's project. +We name this workspace "npm" so there will be targets like +@npm//installed:node_modules + +Within the user's project, they can refer to //:node_modules +but from other repositories, like the @io_bazel_rules_typescript +repository, we also need to find some labels under node_modules. """ def _node_impl(repository_ctx): @@ -66,5 +74,47 @@ exports_files([ _node_repo = repository_rule(_node_impl, attrs = {}) -def node_repositories(): +def _symlink_node_modules_impl(ctx): + # WORKAROUND for https://github.com/bazelbuild/bazel/issues/374#issuecomment-296217940 + # Bazel does not allow labels to start with `@`, so when installing eg. the `@types/node` + # module from the @types scoped package, you'll get an error. + # The workaround is to move the rule up one level, from /node_modules to the project root. + # For now, users must instead write their own /BUILD file on setup. + + # ctx.symlink(project_dir.get_child("node_modules"), "node_modules") + # add a BUILD file inside the user's node_modules project folder + # ctx.file("installed/BUILD", """ + # filegroup(name = "node_modules", srcs = glob(["node_modules/**/*"]), visibility = ["//visibility:public"]) + # """) + + # Instead symlink the root directory from the user's workspace + project_dir = ctx.path(ctx.attr.package_json).dirname + ctx.symlink(project_dir, "installed") + +_symlink_node_modules = repository_rule( + _symlink_node_modules_impl, + attrs = { "package_json": attr.label() }, +) + +def node_repositories(package_json): _node_repo(name = "io_bazel_rules_typescript_node") + + # Yarn is a package manager that downloads dependencies. Yarn is an improvement over the `npm` tool in + # speed and correctness. We download a specific version of Yarn to ensure a hermetic build. + native.new_http_archive( + name = "yarn", + urls = [ + "http://mirror.bazel.build/github.com/yarnpkg/yarn/releases/download/v0.22.0/yarn-v0.22.0.tar.gz", + "https://github.com/yarnpkg/yarn/releases/download/v0.22.0/yarn-v0.22.0.tar.gz", + ], + strip_prefix = "dist", + type = "tar.gz", + build_file_content = """ +package(default_visibility = ["//visibility:public"]) +exports_files(["bin/yarn", "bin/yarn.js"]) +alias(name = "yarn", actual = ":bin/yarn") +""", + ) + + # This repo is named "npm" since that's the namespace of packages. + _symlink_node_modules(name = "npm", package_json = package_json) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/npm_install.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/npm_install.bzl deleted file mode 100644 index 60dc1ed7f2..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/npm_install.bzl +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Run `npm install` when the user calls npm_install() from their WORKSPACE. - -Using the package.json file supplied by the user, we call `npm install` -to create or update a node_modules folder next to the package.json. -Finally we create a workspace that symlinks to the user's project. -We name this workspace "npm" so there will be targets like -@npm//installed:node_modules - -Within the user's project, they can refer to //:node_modules -but from other repositories, like the @io_bazel_rules_typescript -repository, we also need to find some labels under node_modules. -""" - -load(":executables.bzl", "get_node") - -def _npm_install_impl(ctx): - project_dir = ctx.path(ctx.attr.package_json).dirname - ctx.file("npm_install.sh", """#!/bin/bash -set -ex -ROOT=$(dirname $1) -NODE=$2 -SCRIPT=$3 -(cd $ROOT; $NODE $SCRIPT install) -""") - result = ctx.execute(["./npm_install.sh", - ctx.path(ctx.attr.package_json), - ctx.path(ctx.attr._node), - ctx.path(ctx.attr._npm)]) - if result.return_code > 0: - print(result.stdout) - print(result.stderr) - - # WORKAROUND for https://github.com/bazelbuild/bazel/issues/374#issuecomment-296217940 - # See comments in yarn_install.bzl - # Instead symlink the root directory from the user's workspace - ctx.symlink(project_dir, "installed") - - -_npm_install = repository_rule( - _npm_install_impl, - attrs = { - "package_json": attr.label(), - "_node": attr.label(default = get_node(), allow_files=True, single_file=True), - "_npm": attr.label(default = Label("@io_bazel_rules_typescript_node//:bin/npm")), - }, -) - -def npm_install(package_json): - _npm_install(name = "npm", package_json = package_json) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD rename to third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/yarn_check.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/yarn_check.bzl deleted file mode 100644 index f92487ba1e..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/yarn_check.bzl +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Install Yarn and run `yarn check` when the user calls yarn_check() from their -WORKSPACE. - -Yarn is a package manager that downloads dependencies. Yarn is an improvement -over the `npm` tool in speed and correctness. - -We download a specific version of Yarn to ensure a hermetic build. -Then, using the yarn.lock file supplied by the user, we call `yarn check` -to verify the node_modules folder next to the package.json. -Finally we create a workspace that symlinks to the user's project. -We name this workspace "npm" so there will be targets like -@npm//installed:node_modules - -Within the user's project, they can refer to //:node_modules -but from other repositories, like the @io_bazel_rules_typescript -repository, we also need to find some labels under node_modules. -""" - -load(":executables.bzl", "get_node") - -def _yarn_check_impl(ctx): - project_dir = ctx.path(ctx.attr.yarn_lock).dirname - ctx.file("yarn_check.sh", """#!/bin/bash -set -ex -ROOT=$(dirname $1) -NODE=$2 -SCRIPT=$3 -(cd $ROOT; $NODE $SCRIPT check --integrity) -""") - result = ctx.execute(["./yarn_check.sh", - ctx.path(ctx.attr.yarn_lock), - ctx.path(ctx.attr._node), - ctx.path(ctx.attr._yarn)]) - if result.return_code > 0: - print(result.stdout) - print(result.stderr) - print("Maybe you need to run 'bazel run @yarn//:yarn'") - - # WORKAROUND for https://github.com/bazelbuild/bazel/issues/374#issuecomment-296217940 - # Bazel does not allow labels to start with `@`, so when installing eg. the `@types/node` - # module from the @types scoped package, you'll get an error. - # The workaround is to move the rule up one level, from /node_modules to the project root. - # For now, users must instead write their own /BUILD file on setup. - - # ctx.symlink(project_dir.get_child("node_modules"), "node_modules") - # add a BUILD file inside the user's node_modules project folder - # ctx.file("installed/BUILD", """ - # filegroup(name = "node_modules", srcs = glob(["node_modules/**/*"]), visibility = ["//visibility:public"]) - # """) - - # Instead symlink the root directory from the user's workspace - ctx.symlink(project_dir, "installed") - - -_yarn_check = repository_rule( - _yarn_check_impl, - attrs = { - "yarn_lock": attr.label(), - "_node": attr.label(default = get_node(), allow_files=True, single_file=True), - "_yarn": attr.label(default = Label("@yarn//:bin/yarn.js")), - }, -) - -def yarn_check(yarn_lock): - native.new_http_archive( - name = "yarn", - urls = [ - "http://mirror.bazel.build/github.com/yarnpkg/yarn/releases/download/v0.22.0/yarn-v0.22.0.tar.gz", - "https://github.com/yarnpkg/yarn/releases/download/v0.22.0/yarn-v0.22.0.tar.gz", - ], - strip_prefix = "dist", - type = "tar.gz", - build_file_content = """ -package(default_visibility = ["//visibility:public"]) -exports_files(["bin/yarn"]) -alias(name = "yarn", actual = ":bin/yarn") -""", - ) - - # This repo is named "npm" since that's the namespace of packages. - # See explanation at the top of this file. - _yarn_check(name = "npm", yarn_lock = yarn_lock) diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock new file mode 100644 index 0000000000..93e56b0362 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -0,0 +1,94 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@types/node@^7.0.18": + version "7.0.32" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.32.tgz#6afe6c66520a4c316623a14aef123908d01b4bba" + +async@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +clang-format@1.0.49: + version "1.0.49" + resolved "https://registry.yarnpkg.com/clang-format/-/clang-format-1.0.49.tgz#bf52f42277d41ed3618591f87145acf64aceb7e6" + dependencies: + async "^1.5.2" + glob "^7.0.0" + resolve "^1.1.6" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +glob@^7.0.0: + 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" + +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: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +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" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +resolve@^1.1.6: + version "1.3.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" + dependencies: + path-parse "^1.0.5" + +typescript@2.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.4.tgz#3d38321828231e434f287514959c37a82b629f42" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" From 5eaeb316e4aad2da67f16883c6252415d1a6101d Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Wed, 21 Jun 2017 08:33:06 -0700 Subject: [PATCH 0020/1134] Internal change PiperOrigin-RevId: 159696451 --- .../bazelbuild/rules_typescript/{BUILD => BUILD.bazel} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename third_party/github.com/bazelbuild/rules_typescript/{BUILD => BUILD.bazel} (91%) diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel similarity index 91% rename from third_party/github.com/bazelbuild/rules_typescript/BUILD rename to third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index 0ba1bc255d..8ec86ceb55 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -# The node_modules directory is created by `yarn install` or `npm install` +# The node_modules directory is created by `yarn install` # WORKAROUND for https://github.com/bazelbuild/bazel/issues/374#issuecomment-296217940 # see notes in internal/yarn_install.bzl filegroup( From e738d6e7b251c29896e108ab8cd8e0853639cc0f Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Thu, 22 Jun 2017 00:18:04 -0700 Subject: [PATCH 0021/1134] Expose the tsc_wrapped TypeScript program for use as a library. PiperOrigin-RevId: 159794794 --- .../rules_typescript/internal/build_defs.bzl | 28 +++++++++---------- .../internal/common/module_mappings.bzl | 2 ++ .../internal/node_launcher.sh | 5 +++- .../internal/tsc_wrapped/BUILD.bazel | 5 +++- .../internal/tsc_wrapped/index.ts | 1 + 5 files changed, 25 insertions(+), 16 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index 65b3f554ae..9a3fb50dd9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -45,21 +45,21 @@ def _compile_action(ctx, inputs, outputs, config_file_path): inputs=action_inputs, outputs=non_externs_files, arguments=["-p", config_file_path], - executable=ctx.executable.tsc) + executable=ctx.executable.compiler) def _devmode_compile_action(ctx, inputs, outputs, config_file_path): _compile_action(ctx, inputs, outputs, config_file_path) -def _tsc_wrapped_tsconfig(ctx, - files, - srcs, - devmode_manifest=None, - tsickle_externs=None, - type_blacklisted_declarations=[], - allowed_deps=set(), - jsx_factory=None, - ngc_out=[]): +def tsc_wrapped_tsconfig(ctx, + files, + srcs, + devmode_manifest=None, + tsickle_externs=None, + type_blacklisted_declarations=[], + allowed_deps=set(), + jsx_factory=None, + ngc_out=[]): variant = "" if devmode_manifest: variant += "_es5" tsconfig_json = ctx.new_file(ctx.label.name + variant + "_tsconfig.json") @@ -75,13 +75,13 @@ def _tsc_wrapped_tsconfig(ctx, workspace_path = "/".join([".."] * len(tsconfig_json.dirname.split("/"))) host_bin = "bazel-out/host/bin" - runfiles = ctx.executable.tsc.short_path + ".runfiles" + runfiles = ctx.executable.compiler.short_path + ".runfiles" # When building within this repo, the executable comes from the local path # like bazel-bin/internal/tsc_wrapped/tsc.runfiles # But when building in some user's repo that depends on this one, the path in # that repo has extra segments to point into Bazel's "external" directory. # like bazel-bin/external/io_bazel_rules_typescript/internal/tsc_wrapped/tsc.runfiles - if ctx.workspace_name != "io_bazel_rules_typescript": + if ctx.executable.compiler.short_path.startswith(".."): runfiles = "/".join(["external/io_bazel_rules_typescript", runfiles]) module_roots = { @@ -138,7 +138,7 @@ def _ts_library_impl(ctx): return compile_ts(ctx, is_library=True, compile_action=_compile_action, devmode_compile_action=_devmode_compile_action, - tsc_wrapped_tsconfig=_tsc_wrapped_tsconfig) + tsc_wrapped_tsconfig=tsc_wrapped_tsconfig) ts_library = rule( _ts_library_impl, @@ -166,7 +166,7 @@ ts_library = rule( attr.label(allow_files = True, single_file=True), "_additional_d_ts": attr.label_list(), - "tsc": + "compiler": attr.label( default=get_tsc(), single_file=False, diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl index 223e6e5e0f..e3fe050651 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl @@ -58,6 +58,8 @@ def get_module_mappings(label, attrs, srcs = []): if not mn: mn = label.name mr = label.package + if label.workspace_root: + mr = "%s/%s" % (label.workspace_root, mr) if attrs.module_root and attrs.module_root != ".": mr = "%s/%s" % (mr, attrs.module_root) # Validate that sources are underneath the module root. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh index 2293475c4a..f291923d4a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh @@ -78,7 +78,10 @@ else fi fi export RUNFILES -export NODE_PATH="${RUNFILES}":${RUNFILES}/npm/installed/node_modules +# TODO(alexeagle): don't hard-code rules_typescript/internal here, generalize +# by walking up the dependency graph and finding external packages that want to +# contribute js files at runtime. +export NODE_PATH="${RUNFILES}":${RUNFILES}/npm/installed/node_modules:${RUNFILES}/io_bazel_rules_typescript/internal ARGS=() NODE_OPTIONS=() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel index 812bf6d3dc..c88c4bc85a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel @@ -27,7 +27,10 @@ ts_library( name = "tsc_wrapped", srcs = glob(["*.ts"], exclude = ["*_test.ts"]), tsconfig = ":tsconfig.json", - tsc = ":tsc", + compiler = ":tsc", + module_name = "tsc_wrapped", + module_root = "index.d.ts", + visibility = ["//visibility:public"], # Should just be build_bazel_rules_angular ) # Other ts_library rules will use this custom compiler, which calls the diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts new file mode 100644 index 0000000000..c483632d3e --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts @@ -0,0 +1 @@ +export * from './tsconfig'; From 38b60e60233a7b7fdba2a1f522b9f482ac8b9553 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 23 Jun 2017 12:47:51 -0700 Subject: [PATCH 0022/1134] Add Bazel workers and file caching to TypeScript compiler. PiperOrigin-RevId: 159981240 --- .../bazelbuild/rules_typescript/.bazelrc | 1 + .../bazelbuild/rules_typescript/README.md | 1 + .../rules_typescript/internal/BUILD.bazel | 2 +- .../rules_typescript/internal/build_defs.bzl | 26 +++- .../internal/tsc_wrapped/BUILD.bazel | 6 + .../internal/tsc_wrapped/file_cache.ts | 2 +- .../internal/tsc_wrapped/tsc_wrapped.ts | 108 ++++++++++++---- .../internal/tsc_wrapped/tsconfig.ts | 6 + .../internal/tsc_wrapped/worker.ts | 119 ++++++++++++++++++ .../internal/worker_protocol.proto | 57 +++++++++ .../bazelbuild/rules_typescript/package.json | 3 +- 11 files changed, 300 insertions(+), 31 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/.bazelrc create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/worker_protocol.proto diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/.bazelrc new file mode 100644 index 0000000000..cb5e610e72 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelrc @@ -0,0 +1 @@ +build --strategy=TypeScriptCompile=worker diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 5839ee8b8f..1c69797e29 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -78,3 +78,4 @@ At some point, we plan to release a tool similar to [gazelle] to generate the BUILD files from your source code. [gazelle]: https://github.com/bazelbuild/rules_go/tree/master/go/tools/gazelle + diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 71ad0083b0..e00ffbf64f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -14,4 +14,4 @@ package(default_visibility = ["//visibility:public"]) -exports_files(["node_launcher.sh"]) +exports_files(["node_launcher.sh", "worker_protocol.proto"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index 9a3fb50dd9..2f2b006cb8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -41,11 +41,25 @@ def _compile_action(ctx, inputs, outputs, config_file_path): if ctx.file.tsconfig: action_inputs += [ctx.file.tsconfig] + # One at-sign makes this a params-file, enabling the worker strategy. + # Two at-signs escapes the argument so it's passed through to tsc_wrapped + # rather than the contents getting expanded. + if ctx.attr.supports_workers: + arguments = ["@@" + config_file_path] + else: + arguments = ["-p", config_file_path] + ctx.action( - inputs=action_inputs, - outputs=non_externs_files, - arguments=["-p", config_file_path], - executable=ctx.executable.compiler) + progress_message = "Compiling TypeScript (devmode) %s" % ctx, + mnemonic = "TypeScriptCompile", + inputs = action_inputs, + outputs = non_externs_files, + arguments = arguments, + executable = ctx.executable.compiler, + execution_requirements = { + "supports-workers": str(int(ctx.attr.supports_workers)), + }, + ) def _devmode_compile_action(ctx, inputs, outputs, config_file_path): @@ -107,6 +121,7 @@ def tsc_wrapped_tsconfig(ctx, "npm/installed/node_modules/@types"] )], }) + config["bazelOptions"]["nodeModulesPrefix"] = "/".join([host_bin, runfiles, "npm/installed/node_modules"]) # If the user gives a tsconfig attribute, the generated file should extend # from the user's tsconfig. @@ -173,6 +188,7 @@ ts_library = rule( allow_files=True, executable=True, cfg="host",), + "supports_workers": attr.bool(default = True), "_node": attr.label( default=get_node(), @@ -180,7 +196,7 @@ ts_library = rule( allow_files=True, executable=True, cfg="host",), - "_node_modules": attr.label(default = Label("@npm//installed:node_modules")) + "_node_modules": attr.label(default = Label("@npm//installed:node_modules")), }, fragments=["js"], outputs={"_js_typings": "_%{name}_js_typings.d.ts"},) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel index c88c4bc85a..01d5461271 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel @@ -28,6 +28,7 @@ ts_library( srcs = glob(["*.ts"], exclude = ["*_test.ts"]), tsconfig = ":tsconfig.json", compiler = ":tsc", + supports_workers = False, module_name = "tsc_wrapped", module_root = "index.d.ts", visibility = ["//visibility:public"], # Should just be build_bazel_rules_angular @@ -40,7 +41,12 @@ nodejs_binary( data = [ ":tsc_wrapped", "@npm//installed:node_modules", + + # Should be @bazel_tools//src/main/protobuf:worker_protocol.proto + # see https://github.com/bazelbuild/bazel/issues/3155#issuecomment-308156976 + "//internal:worker_protocol.proto", ], + args = ["--node_options=--expose-gc"], main = "io_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js", visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache.ts index 72bcf01b91..1d39811c09 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache.ts @@ -36,7 +36,7 @@ export interface LRUCache { const MAX_CACHE_SIZE = 300 * (1 << 20 /* 1 MB */); /** - * FileCache is a trivial LRU cache for blaze outputs. + * FileCache is a trivial LRU cache for bazel outputs. * * Cache entries are keyed off by an opaque, bazel-supplied digest. * diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index cfb7740344..e8ca718b2c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -2,15 +2,29 @@ import * as fs from 'fs'; import * as path from 'path'; import * as ts from 'typescript'; -import {parseTsconfig} from './tsconfig'; +import {CachedFileLoader, FileCache, FileLoader, UncachedFileLoader} from './file_cache'; +import {BazelOptions, parseTsconfig} from './tsconfig'; +import {debug, log, runAsWorker, runWorkerLoop} from './worker'; -export function main() { - const args = process.argv.slice(2); - if (args.length === 0) throw new Error('Not enough arguments'); - const result = runOneBuild(args); - process.exit(result ? 0 : 1); +export function main(args) { + if (runAsWorker(args)) { + log('Starting TypeScript compiler persistent worker...'); + runWorkerLoop(runOneBuild); + // Note: intentionally don't process.exit() here, because runWorkerLoop + // is waiting for async callbacks from node. + } else { + debug('Running a single build...'); + if (args.length === 0) throw new Error('Not enough arguments'); + if (!runOneBuild(args)) { + return 1; + } + } + return 0; } +// The one FileCache instance used in this process. +const fileCache = new FileCache(debug); + class CompilerHost implements ts.CompilerHost { /** @@ -23,8 +37,10 @@ class CompilerHost implements ts.CompilerHost { */ private relativeRoots: string[]; - constructor(public inputFiles: string[], - readonly options: ts.CompilerOptions, private delegate: ts.CompilerHost) { + constructor( + public inputFiles: string[], readonly options: ts.CompilerOptions, + readonly bazelOpts: BazelOptions, private delegate: ts.CompilerHost, + private fileLoader: FileLoader) { // Try longest include directories first. this.options.rootDirs.sort((a, b) => b.length - a.length); this.relativeRoots = @@ -63,6 +79,27 @@ class CompilerHost implements ts.CompilerHost { return result; } + /** + * Allow moduleResolution=node to behave normally. + * Since we don't require users declare their dependencies within node_modules + * we may need to read files that weren't explicit inputs. + */ + allowNonHermeticRead(filePath: string) { + return this.bazelOpts.nodeModulesPrefix && + path.relative(this.bazelOpts.nodeModulesPrefix, filePath)[0] !== '.'; + } + + /** Loads a source file from disk (or the cache). */ + getSourceFile( + fileName: string, languageVersion: ts.ScriptTarget, + onError?: (message: string) => void) { + if (this.allowNonHermeticRead(fileName)) { + // TODO(alexeagle): we could add these to the cache also + return this.delegate.getSourceFile(fileName, languageVersion, onError); + } + return this.fileLoader.loadFile(fileName, fileName, languageVersion); + } + writeFile( fileName: string, content: string, writeByteOrderMark: boolean, onError?: (message: string) => void, @@ -84,29 +121,29 @@ class CompilerHost implements ts.CompilerHost { * given as inputs. * This also allows us to disable Bazel sandboxing, without accidentally * reading .ts inputs when .d.ts inputs are intended. + * Note that in worker mode, the file cache will also guard against arbitrary + * file reads. */ fileExists(filePath: string): boolean { // Allow moduleResolution=node to behave normally. - // TODO(alexeagle): make a bazelOptions.node_modules_prefix option in the - // tsconfig that gives us a specific root where TS can look around the disk. - if (filePath.indexOf('/node_modules/') >= 0) { - return this.delegate.fileExists(filePath); + if (this.allowNonHermeticRead(filePath) && + this.delegate.fileExists(filePath)) { + return true; } return this.knownFiles.has(filePath); } - // Delegate everything else to the original compiler host. - - getSourceFile( - fileName: string, languageVersion: ts.ScriptTarget, - onError?: (message: string) => void) { - return this.delegate.getSourceFile(fileName, languageVersion, onError); - } - getDefaultLibFileName(options: ts.CompilerOptions): string { + if (this.bazelOpts.nodeModulesPrefix) { + return path.join( + this.bazelOpts.nodeModulesPrefix, 'typescript/lib', + ts.getDefaultLibFileName({target: ts.ScriptTarget.ES5})); + } return this.delegate.getDefaultLibFileName(options); } + // Delegate everything else to the original compiler host. + getCanonicalFileName(path: string) { return this.delegate.getCanonicalFileName(path); } @@ -153,7 +190,29 @@ function format(target: string, diagnostics: ts.Diagnostic[]): string { */ function runOneBuild( args: string[], inputs?: {[path: string]: string}): boolean { - const tsconfigFile = args[1]; + // Reset cache stats. + fileCache.resetStats(); + fileCache.traceStats(); + let fileLoader: FileLoader; + if (inputs) { + fileLoader = new CachedFileLoader(fileCache); + // Resolve the inputs to absolute paths to match TypeScript internals + const resolvedInputs: {[path: string]: string} = {}; + for (const key of Object.keys(inputs)) { + resolvedInputs[path.resolve(key)] = inputs[key]; + } + fileCache.updateCache(resolvedInputs); + } else { + fileLoader = new UncachedFileLoader(); + } + + if (args.length !== 1) { + console.error('Expected one argument: path to tsconfig.json'); + return false; + } + // Strip leading at-signs, used in build_defs.bzl to indicate a params file + const tsconfigFile = args[0].replace(/^@+/, ''); + const [parsed, errors, {target}] = parseTsconfig(tsconfigFile); if (errors) { console.error(format(target, errors)); @@ -163,9 +222,12 @@ function runOneBuild( const compilerHostDelegate = ts.createCompilerHost({target: ts.ScriptTarget.ES5}); - const compilerHost = new CompilerHost(files, options, compilerHostDelegate); + const compilerHost = new CompilerHost( + files, options, bazelOpts, compilerHostDelegate, fileLoader); const program = ts.createProgram(files, options, compilerHost); + fileCache.traceStats(); + function isCompilationTarget(sf: ts.SourceFile): boolean { return (bazelOpts.compilationTargetSrc.indexOf(sf.fileName) !== -1); } @@ -195,5 +257,5 @@ function runOneBuild( } if (require.main === module) { - main(); + process.exitCode = main(process.argv.slice(2)); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index 5b663fc3fe..5110a677c0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -88,6 +88,12 @@ export interface BazelOptions { * "TS1234:regexp". If empty, compilation is expected to succeed. */ expectedDiagnostics: string[]; + + /** + * To support node_module resolution, allow TypeScript to make arbitrary + * file system access to paths under this prefix. + */ + nodeModulesPrefix: string; } export interface ParsedTsConfig { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts new file mode 100644 index 0000000000..47c5eea056 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts @@ -0,0 +1,119 @@ +import * as path from 'path'; +/* tslint:disable:no-require-imports */ +const protobufjs = require('protobufjs'); +const ByteBuffer = require('bytebuffer'); + +protobufjs.convertFieldsToCamelCase = true; + +const DEBUG = false; + +export function debug(...args: Array<{}>) { + if (DEBUG) console.error.apply(console, args); +} + +/** + * Write a message to stderr, which appears in the bazel log and is visible to + * the end user. + */ +export function log(...args: Array<{}>) { + console.error.apply(console, args); +} + +export function runAsWorker(args: string[]) { + return args.indexOf('--persistent_worker') !== -1; +} + +const workerpb = (function loadWorkerPb() { + // This doesn't work due to a Bazel bug, see comments in build_defs.bzl + // let protoPath = + // 'external/bazel_tools/src/main/protobuf/worker_protocol.proto'; + let protoPath = 'io_bazel_rules_typescript/internal/worker_protocol.proto'; + + const protoNamespace = protobufjs.loadProtoFile({ + // RUNFILES env includes the workspace_root, see + // internal/node_launcher.sh + root: process.env['RUNFILES'], + file: protoPath, + }); + if (!protoNamespace) { + throw new Error('Cannot find ' + path.resolve(protoPath)); + } + return protoNamespace.build('blaze.worker'); +})(); + +interface Input { + getPath(): string; + getDigest(): {toString(encoding: string): string}; // npm:ByteBuffer +} +interface WorkRequest { + getArguments(): string[]; + getInputs(): Input[]; +} + +export function runWorkerLoop( + runOneBuild: (args: string[], inputs?: {[path: string]: string}) => + boolean) { + // Hook all output to stderr and write it to a buffer, then include + // that buffer's in the worker protcol proto's textual output. This + // means you can log via console.error() and it will appear to the + // user as expected. + let consoleOutput = ''; + process.stderr.write = + (chunk: string | Buffer, ...otherArgs: any[]): boolean => { + consoleOutput += chunk.toString(); + return true; + }; + + // Accumulator for asynchronously read input. + // tslint:disable-next-line:no-any protobufjs is untyped + let buf: any; + process.stdin.on('readable', () => { + const chunk = process.stdin.read(); + if (!chunk) return; + + const wrapped = ByteBuffer.wrap(chunk); + buf = buf ? ByteBuffer.concat([buf, wrapped]) : wrapped; + try { + let req: WorkRequest; + // Read all requests that have accumulated in the buffer. + while ((req = workerpb.WorkRequest.decodeDelimited(buf)) != null) { + debug('=== Handling new build request'); + // Reset accumulated log output. + consoleOutput = ''; + const args = req.getArguments(); + const inputs: {[path: string]: string} = {}; + for (const input of req.getInputs()) { + inputs[input.getPath()] = input.getDigest().toString('hex'); + } + debug('Compiling with:\n\t' + args.join('\n\t')); + const exitCode = runOneBuild(args, inputs) ? 0 : 1; + process.stdout.write(new workerpb.WorkResponse() + .setExitCode(exitCode) + .setOutput(consoleOutput) + .encodeDelimited() + .toBuffer()); + + // Force a garbage collection pass. This keeps our memory + // usage consistent across multiple compilations, and allows + // the file cache to use the current memory usage as a + // guideline for expiring data. + global.gc(); + } + // Avoid growing the buffer indefinitely. + buf.compact(); + } catch (e) { + log('Compilation failed', e.stack); + process.stdout.write(new workerpb.WorkResponse() + .setExitCode(1) + .setOutput(consoleOutput) + .encodeDelimited() + .toBuffer()); + // Clear buffer so the next build won't read an incomplete request. + buf = null; + } + }); + process.stdin.on('end', () => { + log('Exiting TypeScript compiler persistent worker.'); + process.exit(0); + }); +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/worker_protocol.proto b/third_party/github.com/bazelbuild/rules_typescript/internal/worker_protocol.proto new file mode 100644 index 0000000000..3a32ce15e6 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/worker_protocol.proto @@ -0,0 +1,57 @@ +// Copyright 2015 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Workaround +// https://github.com/bazelbuild/bazel/issues/3155#issuecomment-308156976 This +// file is copied from +// github.com/bazelbuild/bazel/blob/master/src/main/protobuf/worker_protocol.proto + +syntax = "proto3"; + +package blaze.worker; + +option java_package = "com.google.devtools.build.lib.worker"; + +// An input file. +message Input { + // The path in the file system where to read this input artifact from. This is + // either a path relative to the execution root (the worker process is + // launched with the working directory set to the execution root), or an + // absolute path. + string path = 1; + + // A hash-value of the contents. The format of the contents is unspecified and + // the digest should be treated as an opaque token. + bytes digest = 2; +} + +// This represents a single work unit that Bazel sends to the worker. +message WorkRequest { + repeated string arguments = 1; + + // The inputs that the worker is allowed to read during execution of this + // request. + repeated Input inputs = 2; +} + +// The worker sends this message to Bazel when it finished its work on the +// WorkRequest message. +message WorkResponse { + int32 exit_code = 1; + + // This is printed to the user after the WorkResponse has been received and is supposed to contain + // compiler warnings / errors etc. - thus we'll use a string type here, which gives us UTF-8 + // encoding. + string output = 2; +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index e5f6c79bca..70c7604376 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,7 +3,8 @@ "description": "Build TypeScript with Bazel", "version": "0.0.0", "dependencies": { - "typescript": "2.3" + "typescript": "2.3", + "protobufjs": "5.0.0" }, "devDependencies": { "@types/node": "^7.0.18", From 15da2bac1ad3822f3b43ce4af3713cbe92ebc8fc Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 23 Jun 2017 16:01:10 -0700 Subject: [PATCH 0023/1134] Use realpath for helping TypeScript find the @types folder when there's a conflict between node_modules and @types. TypeScript can normally find the folder just fine, but with bazel directory structure gets confused. Because we now use realpath, the Hermetic check can now only look for node_modules. PiperOrigin-RevId: 160007796 --- .../rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index e8ca718b2c..398e5ff78d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -85,8 +85,7 @@ class CompilerHost implements ts.CompilerHost { * we may need to read files that weren't explicit inputs. */ allowNonHermeticRead(filePath: string) { - return this.bazelOpts.nodeModulesPrefix && - path.relative(this.bazelOpts.nodeModulesPrefix, filePath)[0] !== '.'; + return filePath.split(path.sep).indexOf('node_modules') != -1; } /** Loads a source file from disk (or the cache). */ @@ -171,6 +170,10 @@ class CompilerHost implements ts.CompilerHost { trace(s: string): void { console.error(s); } + + realpath(s: string): string { + return ts.sys.realpath(s); + } } function format(target: string, diagnostics: ts.Diagnostic[]): string { From 8d48e1afccbaebd9e655590f99b0fc99b78bb722 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 7 Jul 2017 11:17:31 -0700 Subject: [PATCH 0024/1134] ensure ts_declaration rules compile All ts_declarations generate a tsickle externs file -- even if tsickle is off, we generate an empty one -- so if we depend on it as an output, we will ensure the inputs compile. PiperOrigin-RevId: 161223122 --- .../internal/common/compilation.bzl | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 11e2807938..8b0ee22c13 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -185,9 +185,8 @@ def compile_ts(ctx, es5_sources = set(tsickle_externs) devmode_manifest = None - # Downstream rules see the .d.ts files produced or declared by this rule + # Downstream rules see the .d.ts files produced or declared by this rule. declarations = gen_declarations + src_declarations - if not srcs: # Re-export sources from deps. # TODO(b/30018387): introduce an "exports" attribute. @@ -195,8 +194,18 @@ def compile_ts(ctx, if hasattr(dep, "typescript"): declarations += dep.typescript.declarations + # Construct the list of output files, which are the files that are + # always built (including e.g. if you "blaze build :the_target" + # directly). If this is a ts_declaration, add tsickle_externs to the + # outputs list to force compilation of d.ts files. (tsickle externs + # are produced by running a compilation over the d.ts file and + # extracting type information.) + files = set(declarations) + if not is_library: + files += set(tsickle_externs) + return struct( - files=set(declarations), + files=files, runfiles=ctx.runfiles( # Note: don't include files=... here, or they will *always* be built # by any dependent rule, regardless of whether it needs them. From 938057dc3d39e9fc91e6f7b0d76211de665c7d0b Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Tue, 11 Jul 2017 18:27:23 -0700 Subject: [PATCH 0025/1134] Use bazel-installed version of node when running yarn. Fixes #15 PiperOrigin-RevId: 161612845 --- .../internal/node_install.bzl | 47 ++++++++++++++----- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl index ce20030d56..2a9d0da963 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl @@ -96,25 +96,46 @@ _symlink_node_modules = repository_rule( attrs = { "package_json": attr.label() }, ) -def node_repositories(package_json): - _node_repo(name = "io_bazel_rules_typescript_node") - +def _yarn_impl(ctx): # Yarn is a package manager that downloads dependencies. Yarn is an improvement over the `npm` tool in # speed and correctness. We download a specific version of Yarn to ensure a hermetic build. - native.new_http_archive( - name = "yarn", - urls = [ + ctx.file("BUILD.bazel", """ +package(default_visibility = ["//visibility:public"]) +exports_files(['yarn.sh']) +alias(name = "yarn", actual = ":yarn.sh") +""") + ctx.file("yarn.sh", """#!/bin/bash +ROOT="$(dirname "{}")" +NODE="{}" +SCRIPT="{}" +(cd "$ROOT"; "$NODE" "$SCRIPT" "$@") +""".format( + ctx.path(ctx.attr.package_json), + ctx.path(ctx.attr._node), + ctx.path("bin/yarn.js")), executable = True) + ctx.download_and_extract( + [ "http://mirror.bazel.build/github.com/yarnpkg/yarn/releases/download/v0.22.0/yarn-v0.22.0.tar.gz", "https://github.com/yarnpkg/yarn/releases/download/v0.22.0/yarn-v0.22.0.tar.gz", ], - strip_prefix = "dist", - type = "tar.gz", - build_file_content = """ -package(default_visibility = ["//visibility:public"]) -exports_files(["bin/yarn", "bin/yarn.js"]) -alias(name = "yarn", actual = ":bin/yarn") -""", + stripPrefix = "dist", + sha256 = "e295042279b644f2bc3ea3407a2b2fb417a200d35590b0ec535422d21cf19a09" ) +load(":executables.bzl", "get_node") + +_yarn_repo = repository_rule( + _yarn_impl, + attrs = { + "package_json": attr.label(), + "_node": attr.label(default = get_node(), allow_files=True, single_file=True), + }, +) + +def node_repositories(package_json): + _node_repo(name = "io_bazel_rules_typescript_node") + + _yarn_repo(name = "yarn", package_json = package_json) + # This repo is named "npm" since that's the namespace of packages. _symlink_node_modules(name = "npm", package_json = package_json) From 963a7c090e44cb8366abe3a5c07d0fce2f7c3c4c Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Wed, 12 Jul 2017 10:10:16 -0700 Subject: [PATCH 0026/1134] Allow .d.ts files in srcs[] of ts_library. Fixes #2 PiperOrigin-RevId: 161679775 --- .../rules_typescript/examples/BUILD.bazel | 5 ++++- .../rules_typescript/examples/foo.ts | 6 ++++-- .../rules_typescript/examples/types.d.ts | 3 +++ .../internal/common/compilation.bzl | 20 +++++++++---------- 4 files changed, 20 insertions(+), 14 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/types.d.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/BUILD.bazel index 97f08bfaf8..b6e7333edf 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/BUILD.bazel @@ -18,7 +18,10 @@ load("//:defs.bzl", "ts_library") ts_library( name = "foo_ts_library", - srcs = ["foo.ts"], + srcs = [ + "foo.ts", + "types.d.ts", + ], tsconfig = ":tsconfig.json", ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/foo.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/foo.ts index bbf827bc7e..b05c8cef25 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/foo.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/foo.ts @@ -15,12 +15,14 @@ * limitations under the License. */ -export class Greeter { +import {Polite} from './types'; + +export class Greeter implements Polite { constructor(public greeting: string) {} greet(): Promise { return Promise.resolve('

' + this.greeting + '

'); } -}; +} export const greeter = new Greeter('Hello, world!'); greeter.greet().then(msg => { document.body.innerHTML = msg; }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/types.d.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/types.d.ts new file mode 100644 index 0000000000..d23a060361 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/types.d.ts @@ -0,0 +1,3 @@ +export interface Polite { + greet(): Promise; +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 8b0ee22c13..6ab00e4b2b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -52,9 +52,6 @@ def _outputs(ctx, label, input_file): Returns: A three-tuple of files (.closure.js, .js, .d.ts). """ - if input_file.path.endswith(".d.ts"): - fail("srcs must not contain any type declarations (.d.ts files), " + - "but %s contains %s" % (label, input_file.short_path), "srcs") workspace_segments = label.workspace_root.split("/") if label.workspace_root else [] package_segments = label.package.split("/") if label.package else [] trim = len(workspace_segments) + len(package_segments) @@ -111,19 +108,20 @@ def compile_ts(ctx, for f in src.files: has_sources = True - if is_library: - outs = _outputs(ctx, src.label, f) - transpiled_closure_js += [outs[0]] - transpiled_devmode_js += [outs[1]] - gen_declarations += [outs[2]] - else: - if not f.path.endswith(".d.ts"): + if not is_library and not f.path.endswith(".d.ts"): fail("srcs must contain only type declarations (.d.ts files), " + "but %s contains %s" % (src.label, f.short_path), "srcs") + if f.path.endswith(".d.ts"): src_declarations += [f] + continue + + outs = _outputs(ctx, src.label, f) + transpiled_closure_js += [outs[0]] + transpiled_devmode_js += [outs[1]] + gen_declarations += [outs[2]] if has_sources and ctx.attr.runtime != "nodejs": - # Note: setting this variable controls whether sickle is run at all. + # Note: setting this variable controls whether tsickle is run at all. tsickle_externs = [ctx.new_file(ctx.label.name + ".externs.js")] transitive_dts = _collect_transitive_dts(ctx) From a0dd48300e16e1b014c80ac2df1a5bb092718c99 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Mon, 17 Jul 2017 18:25:50 -0700 Subject: [PATCH 0027/1134] Extract common attributes that can be used for Angular rules. PiperOrigin-RevId: 162301097 --- .../bazelbuild/rules_typescript/README.md | 5 +- .../rules_typescript/internal/build_defs.bzl | 48 ++++------- .../internal/common/compilation.bzl | 79 ++++++++++++++----- .../internal/common/tsconfig.bzl | 16 +++- .../internal/tsc_wrapped/tsconfig.ts | 3 +- 5 files changed, 94 insertions(+), 57 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 1c69797e29..86a2ab7d82 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -27,7 +27,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "io_bazel_rules_typescript", remote = "https://github.com/bazelbuild/rules_typescript.git", - tag = "0.0.3", # check for the latest tag when you install + tag = "0.0.4", # check for the latest tag when you install ) load("@io_bazel_rules_typescript//:defs.bzl", "node_repositories") @@ -77,5 +77,8 @@ If you'd like a "watch mode", try https://github.com/bazelbuild/bazel-watcher At some point, we plan to release a tool similar to [gazelle] to generate the BUILD files from your source code. +In the meantime, we suggest associating the `.bazel` extension with Python in +your editor, so that you get useful syntax highlighting. + [gazelle]: https://github.com/bazelbuild/rules_go/tree/master/go/tools/gazelle diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index 2f2b006cb8..1c354f6715 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -16,11 +16,10 @@ """ # pylint: disable=unused-argument # pylint: disable=missing-docstring -load(":common/compilation.bzl", "compile_ts") +load(":common/compilation.bzl", "COMMON_ATTRIBUTES", "compile_ts", "ts_providers_dict_to_struct") load(":executables.bzl", "get_tsc", "get_node") load(":common/json_marshal.bzl", "json_marshal") load(":common/tsconfig.bzl", "create_tsconfig") -load(":common/module_mappings.bzl", "module_mappings_aspect") def _compile_action(ctx, inputs, outputs, config_file_path): externs_files = [] @@ -73,7 +72,7 @@ def tsc_wrapped_tsconfig(ctx, type_blacklisted_declarations=[], allowed_deps=set(), jsx_factory=None, - ngc_out=[]): + **kwargs): variant = "" if devmode_manifest: variant += "_es5" tsconfig_json = ctx.new_file(ctx.label.name + variant + "_tsconfig.json") @@ -113,7 +112,8 @@ def tsc_wrapped_tsconfig(ctx, config = create_tsconfig(ctx, files, srcs, tsconfig_json.dirname, devmode_manifest=devmode_manifest, - module_roots=module_roots) + module_roots=module_roots, + **kwargs) config["compilerOptions"].update({ "typeRoots": ["/".join([ @@ -129,7 +129,7 @@ def tsc_wrapped_tsconfig(ctx, # We subtract the ".json" from the end before handing to TypeScript because # this gives extra error-checking. if ctx.file.tsconfig: - config["extends"] = "{}/{}".format(workspace_path, ctx.file.tsconfig.path[:-5]) + config["extends"] = "/".join([workspace_path, ctx.file.tsconfig.path[:-5]]) ctx.file_action(output=tsconfig_json, content=json_marshal(config)) return tsconfig_json @@ -147,17 +147,15 @@ def _ts_library_impl(ctx): Returns: the struct returned by the call to compile_ts. """ - ctx.file_action( - output = ctx.outputs._js_typings, - content = "") - - return compile_ts(ctx, is_library=True, compile_action=_compile_action, - devmode_compile_action=_devmode_compile_action, - tsc_wrapped_tsconfig=tsc_wrapped_tsconfig) + ts_providers = compile_ts(ctx, is_library=True, + compile_action=_compile_action, + devmode_compile_action=_devmode_compile_action, + tsc_wrapped_tsconfig=tsc_wrapped_tsconfig) + return ts_providers_dict_to_struct(ts_providers) ts_library = rule( _ts_library_impl, - attrs={ + attrs = dict(COMMON_ATTRIBUTES, **{ "srcs": attr.label_list( allow_files=FileType([ @@ -165,22 +163,12 @@ ts_library = rule( ".tsx", ]), mandatory=True,), - "deps": - attr.label_list(aspects = [module_mappings_aspect]), - # Used to determine module mappings, see below. - "module_name": attr.string(), - "module_root": attr.string(), - - # TODO(evanm): make this the default and remove the option. - "runtime": - attr.string(default="browser"), + # TODO(alexeagle): reconcile with google3: ts_library rules should # be portable across internal/external, so we need this attribute # internally as well. "tsconfig": attr.label(allow_files = True, single_file=True), - "_additional_d_ts": - attr.label_list(), "compiler": attr.label( default=get_tsc(), @@ -189,14 +177,6 @@ ts_library = rule( executable=True, cfg="host",), "supports_workers": attr.bool(default = True), - "_node": - attr.label( - default=get_node(), - single_file=True, - allow_files=True, - executable=True, - cfg="host",), "_node_modules": attr.label(default = Label("@npm//installed:node_modules")), - }, - fragments=["js"], - outputs={"_js_typings": "_%{name}_js_typings.d.ts"},) + }), +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 6ab00e4b2b..a30a203d67 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -15,6 +15,39 @@ """Used for compilation by the different implementations of build_defs.bzl. """ +load(":common/module_mappings.bzl", "module_mappings_aspect") + +BASE_ATTRIBUTES = dict() + +# Attributes shared by any typescript-compatible rule (ts_library, ng_module) +COMMON_ATTRIBUTES = dict(BASE_ATTRIBUTES, **{ + "deps": attr.label_list(aspects = [ + module_mappings_aspect, + ]), + "data": attr.label_list( + default = [], + allow_files = True, + cfg = "data", + ), + # TODO(evanm): make this the default and remove the option. + "runtime": attr.string(default="browser"), + # Used to determine module mappings + "module_name": attr.string(), + "module_root": attr.string(), + # TODO(radokirov): remove this attr when clutz is stable enough to consume + # any closure JS code. + "runtime_deps": attr.label_list( + default = [], + providers = ["js"], + ), + # Override _additional_d_ts to specify google3 stdlibs + "_additional_d_ts": attr.label_list( + allow_files = True, + ), + # Whether to generate externs.js from any "declare" statement. + "generate_externs": attr.bool(default = True), +}) + # TODO(plf): Enforce this at analysis time. def assert_js_or_typescript_deps(ctx): for dep in ctx.attr.deps: @@ -202,9 +235,9 @@ def compile_ts(ctx, if not is_library: files += set(tsickle_externs) - return struct( - files=files, - runfiles=ctx.runfiles( + return { + "files": files, + "runfiles": ctx.runfiles( # Note: don't include files=... here, or they will *always* be built # by any dependent rule, regardless of whether it needs them. # But these attributes are needed to pass along any input runfiles: @@ -212,19 +245,29 @@ def compile_ts(ctx, collect_data=True, ), # TODO(martinprobst): Prune transitive deps, only re-export what's needed. - typescript=struct( - declarations=declarations, - transitive_declarations=transitive_decls, - es6_sources=es6_sources, - es5_sources=es5_sources, - devmode_manifest=devmode_manifest, - js_typings=ctx.outputs._js_typings, - type_blacklisted_declarations=type_blacklisted_declarations, - tsickle_externs=tsickle_externs, - ), + "typescript": { + "declarations": declarations, + "transitive_declarations": transitive_decls, + "es6_sources": es6_sources, + "es5_sources": es5_sources, + "devmode_manifest": devmode_manifest, + "type_blacklisted_declarations": type_blacklisted_declarations, + "tsickle_externs": tsickle_externs, + }, # Expose the tags so that a Skylark aspect can access them. - tags=ctx.attr.tags, - instrumented_files=struct( - extensions=["ts"], - source_attributes=["srcs"], - dependency_attributes=["deps", "runtime_deps"])) + "tags": ctx.attr.tags, + "instrumented_files": { + "extensions": ["ts"], + "source_attributes": ["srcs"], + "dependency_attributes": ["deps", "runtime_deps"], + }, + } + +# Converts a dict to a struct, recursing into a single level of nested dicts. +# This allows users of compile_ts to modify or augment the returned dict before +# converting it to an immutable struct. +def ts_providers_dict_to_struct(d): + for key, value in d.items(): + if type(value) == type({}): + d[key] = struct(**value) + return struct(**d) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 94f7179a4b..b0ab2d94ad 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -21,7 +21,8 @@ load(":common/module_mappings.bzl", "get_module_mappings") def create_tsconfig(ctx, files, srcs, tsconfig_dir, devmode_manifest=None, tsickle_externs=None, type_blacklisted_declarations=[], out_dir=None, disable_strict_deps=False, allowed_deps=set(), - extra_root_dirs=[], module_path_prefixes=None, module_roots=None): + extra_root_dirs=[], module_path_prefixes=None, module_roots=None, + ngc_out=[]): """Creates an object representing the TypeScript configuration to run the compiler under Bazel. @@ -39,6 +40,7 @@ def create_tsconfig(ctx, files, srcs, tsconfig_dir, disable_strict_deps: whether to disable the strict deps check allowed_deps: the set of files that code in srcs may depend on (strict deps) extra_root_dirs: Extra root dirs to be passed to tsc_wrapped. + ngc_out: output files to be produced by the Angular template compiler """ outdir_path = out_dir if out_dir != None else ctx.configuration.bin_dir.path workspace_path = "/".join([".."] * len(tsconfig_dir.split("/"))) @@ -168,9 +170,17 @@ def create_tsconfig(ctx, files, srcs, tsconfig_dir, compiler_options["traceResolution"] = True compiler_options["diagnostics"] = True - return { + result = { "compilerOptions": compiler_options, "bazelOptions": bazel_options, "files": [workspace_path + "/" + f.path for f in files], - "compileOnSave": False + "compileOnSave": False, } + + if ngc_out: + result["angularCompilerOptions"] = { + "genDir": ctx.configuration.genfiles_dir.path, + "expectedOut": ngc_out, + } + + return result \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index 5110a677c0..096443aebb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -100,6 +100,7 @@ export interface ParsedTsConfig { options: ts.CompilerOptions; bazelOpts: BazelOptions; files: string[]; + config: {}; } /** @@ -148,5 +149,5 @@ export function parseTsconfig( bazelOpts.typeBlackListPaths = bazelOpts.typeBlackListPaths.map(f => path.resolve(options.rootDir, f)); - return [{options, bazelOpts, files}, null, {target}]; + return [{options, bazelOpts, files, config}, null, {target}]; } From 6e917cd96df2148aa3546f62ac8d7d7f872df1bf Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Tue, 18 Jul 2017 07:20:46 -0700 Subject: [PATCH 0028/1134] Rename io_bazel_rules_typescript to build_bazel_rules_typescript PiperOrigin-RevId: 162349094 --- .../github.com/bazelbuild/rules_typescript/README.md | 6 +++--- .../github.com/bazelbuild/rules_typescript/WORKSPACE | 6 +++--- .../bazelbuild/rules_typescript/internal/build_defs.bzl | 4 ++-- .../bazelbuild/rules_typescript/internal/executables.bzl | 2 +- .../bazelbuild/rules_typescript/internal/node_install.bzl | 6 +++--- .../bazelbuild/rules_typescript/internal/node_launcher.sh | 2 +- .../rules_typescript/internal/tsc_wrapped/BUILD.bazel | 2 +- .../rules_typescript/internal/tsc_wrapped/worker.ts | 2 +- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 86a2ab7d82..97adc1355b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -25,12 +25,12 @@ containing: load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( - name = "io_bazel_rules_typescript", + name = "build_bazel_rules_typescript", remote = "https://github.com/bazelbuild/rules_typescript.git", tag = "0.0.4", # check for the latest tag when you install ) -load("@io_bazel_rules_typescript//:defs.bzl", "node_repositories") +load("@build_bazel_rules_typescript//:defs.bzl", "node_repositories") node_repositories(package_json = "//:package.json") ``` @@ -52,7 +52,7 @@ Create a `BUILD` file next to your sources: ``` package(default_visibility=["//visibility:public"]) -load("@io_bazel_rules_typescript//:defs.bzl", "ts_library") +load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") ts_library( name = "my_code", diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 8e1f4a813e..216bd3fe41 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -12,15 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "io_bazel_rules_typescript") +workspace(name = "build_bazel_rules_typescript") load("//:defs.bzl", "node_repositories") # Install a hermetic version of node. # After this is run, these labels will be available: # - The nodejs install: -# @io_bazel_rules_typescript_node//:bin/node -# @io_bazel_rules_typescript_node//:bin/npm +# @build_bazel_rules_typescript_node//:bin/node +# @build_bazel_rules_typescript_node//:bin/npm # - The yarn package manager: # @yarn//:yarn # - An external repo symlink to the installed packages: diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index 1c354f6715..0a38682bd1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -93,9 +93,9 @@ def tsc_wrapped_tsconfig(ctx, # like bazel-bin/internal/tsc_wrapped/tsc.runfiles # But when building in some user's repo that depends on this one, the path in # that repo has extra segments to point into Bazel's "external" directory. - # like bazel-bin/external/io_bazel_rules_typescript/internal/tsc_wrapped/tsc.runfiles + # like bazel-bin/external/build_bazel_rules_typescript/internal/tsc_wrapped/tsc.runfiles if ctx.executable.compiler.short_path.startswith(".."): - runfiles = "/".join(["external/io_bazel_rules_typescript", runfiles]) + runfiles = "/".join(["external/build_bazel_rules_typescript", runfiles]) module_roots = { "*": [ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl index 68e07bcc32..84321cfdb8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl @@ -19,4 +19,4 @@ def get_tsc(): return Label("//internal/tsc_wrapped:tsc_wrapped_bin") def get_node(): - return Label("@io_bazel_rules_typescript_node//:bin/node") + return Label("@build_bazel_rules_typescript_node//:bin/node") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl index 2a9d0da963..404bd5e1df 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl @@ -15,7 +15,7 @@ """Install NodeJS when the user runs node_repositories() from their WORKSPACE. We fetch a specific version of Node, to ensure builds are hermetic. -We then create a repository @io_bazel_rules_typescript_node which provides the +We then create a repository @build_bazel_rules_typescript_node which provides the node binary to other rules. Finally we create a workspace that symlinks to the user's project. @@ -23,7 +23,7 @@ We name this workspace "npm" so there will be targets like @npm//installed:node_modules Within the user's project, they can refer to //:node_modules -but from other repositories, like the @io_bazel_rules_typescript +but from other repositories, like the @build_bazel_rules_typescript repository, we also need to find some labels under node_modules. """ @@ -133,7 +133,7 @@ _yarn_repo = repository_rule( ) def node_repositories(package_json): - _node_repo(name = "io_bazel_rules_typescript_node") + _node_repo(name = "build_bazel_rules_typescript_node") _yarn_repo(name = "yarn", package_json = package_json) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh index f291923d4a..41bb87136f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh @@ -81,7 +81,7 @@ export RUNFILES # TODO(alexeagle): don't hard-code rules_typescript/internal here, generalize # by walking up the dependency graph and finding external packages that want to # contribute js files at runtime. -export NODE_PATH="${RUNFILES}":${RUNFILES}/npm/installed/node_modules:${RUNFILES}/io_bazel_rules_typescript/internal +export NODE_PATH="${RUNFILES}":${RUNFILES}/npm/installed/node_modules:${RUNFILES}/build_bazel_rules_typescript/internal ARGS=() NODE_OPTIONS=() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel index 01d5461271..7639a4f268 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel @@ -47,6 +47,6 @@ nodejs_binary( "//internal:worker_protocol.proto", ], args = ["--node_options=--expose-gc"], - main = "io_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js", + main = "build_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js", visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts index 47c5eea056..ac15550162 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts @@ -27,7 +27,7 @@ const workerpb = (function loadWorkerPb() { // This doesn't work due to a Bazel bug, see comments in build_defs.bzl // let protoPath = // 'external/bazel_tools/src/main/protobuf/worker_protocol.proto'; - let protoPath = 'io_bazel_rules_typescript/internal/worker_protocol.proto'; + let protoPath = 'build_bazel_rules_typescript/internal/worker_protocol.proto'; const protoNamespace = protobufjs.loadProtoFile({ // RUNFILES env includes the workspace_root, see From f357bed5d23003d66362c4a31a4d633a7c2830a7 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Tue, 18 Jul 2017 15:24:42 -0700 Subject: [PATCH 0029/1134] Refactoring: remove angularCompilerOptions from TypeScript rules PiperOrigin-RevId: 162412422 --- .../rules_typescript/internal/build_defs.bzl | 24 +++--------- .../internal/common/compilation.bzl | 38 +++++++++++-------- .../internal/common/tsconfig.bzl | 28 +++++++------- 3 files changed, 41 insertions(+), 49 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index 0a38682bd1..6a42480f90 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -18,7 +18,6 @@ # pylint: disable=missing-docstring load(":common/compilation.bzl", "COMMON_ATTRIBUTES", "compile_ts", "ts_providers_dict_to_struct") load(":executables.bzl", "get_tsc", "get_node") -load(":common/json_marshal.bzl", "json_marshal") load(":common/tsconfig.bzl", "create_tsconfig") def _compile_action(ctx, inputs, outputs, config_file_path): @@ -73,9 +72,6 @@ def tsc_wrapped_tsconfig(ctx, allowed_deps=set(), jsx_factory=None, **kwargs): - variant = "" - if devmode_manifest: variant += "_es5" - tsconfig_json = ctx.new_file(ctx.label.name + variant + "_tsconfig.json") # The location of tsconfig.json is interpreted as the root of the project # when it is passed to the TS compiler with the `-p` option: @@ -84,18 +80,11 @@ def tsc_wrapped_tsconfig(ctx, # because it's generated in the execution phase. However, our source files are in # bazel-foo/ and therefore we need to strip some parent directories for each # f.path. - - workspace_path = "/".join([".."] * len(tsconfig_json.dirname.split("/"))) host_bin = "bazel-out/host/bin" - runfiles = ctx.executable.compiler.short_path + ".runfiles" - # When building within this repo, the executable comes from the local path - # like bazel-bin/internal/tsc_wrapped/tsc.runfiles - # But when building in some user's repo that depends on this one, the path in - # that repo has extra segments to point into Bazel's "external" directory. - # like bazel-bin/external/build_bazel_rules_typescript/internal/tsc_wrapped/tsc.runfiles - if ctx.executable.compiler.short_path.startswith(".."): - runfiles = "/".join(["external/build_bazel_rules_typescript", runfiles]) + runfiles = "/".join([p for p in [ + ctx.attr.compiler.label.workspace_root, + ctx.executable.compiler.short_path + ".runfiles"] if p]) module_roots = { "*": [ @@ -110,11 +99,11 @@ def tsc_wrapped_tsconfig(ctx, ] } - config = create_tsconfig(ctx, files, srcs, tsconfig_json.dirname, + config = create_tsconfig(ctx, files, srcs, devmode_manifest=devmode_manifest, module_roots=module_roots, **kwargs) - + workspace_path = config["compilerOptions"]["rootDir"] config["compilerOptions"].update({ "typeRoots": ["/".join([ workspace_path, host_bin, runfiles, @@ -131,8 +120,7 @@ def tsc_wrapped_tsconfig(ctx, if ctx.file.tsconfig: config["extends"] = "/".join([workspace_path, ctx.file.tsconfig.path[:-5]]) - ctx.file_action(output=tsconfig_json, content=json_marshal(config)) - return tsconfig_json + return config # ************ # # ts_library # diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index a30a203d67..7a6506322a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -16,6 +16,7 @@ """ load(":common/module_mappings.bzl", "module_mappings_aspect") +load(":common/json_marshal.bzl", "json_marshal") BASE_ATTRIBUTES = dict() @@ -115,7 +116,7 @@ def compile_ts(ctx, devmode_compile_action: function. Creates the compilation action for devmode. jsx_factory: optional string. Enables overriding jsx pragma. - tsc_wrapped_tsconfig: function. + tsc_wrapped_tsconfig: function that produces a tsconfig object. Returns: struct that will be returned by the rule implementation. """ @@ -178,27 +179,32 @@ def compile_ts(ctx, allowed_deps += dep.typescript.declarations allowed_deps += extra_dts_files - tsconfig_json_es6 = tsc_wrapped_tsconfig( - ctx, - compilation_inputs, - srcs, - jsx_factory=jsx_factory, - tsickle_externs=tsickle_externs_path, - type_blacklisted_declarations=type_blacklisted_declarations, - allowed_deps=allowed_deps) + tsconfig_json_es6 = ctx.new_file(ctx.label.name + "_tsconfig.json") + ctx.file_action(output=tsconfig_json_es6, content=json_marshal( + tsc_wrapped_tsconfig( + ctx, + compilation_inputs, + srcs, + jsx_factory=jsx_factory, + tsickle_externs=tsickle_externs_path, + type_blacklisted_declarations=type_blacklisted_declarations, + allowed_deps=allowed_deps))) inputs = compilation_inputs + [tsconfig_json_es6] outputs = transpiled_closure_js + tsickle_externs compile_action(ctx, inputs, outputs, tsconfig_json_es6.path) devmode_manifest = ctx.new_file(ctx.label.name + ".es5.MF") - tsconfig_json_es5 = tsc_wrapped_tsconfig( - ctx, - compilation_inputs, - srcs, - jsx_factory=jsx_factory, - devmode_manifest=devmode_manifest.path, - allowed_deps=allowed_deps) + tsconfig_json_es5 = ctx.new_file(ctx.label.name + "_es5_tsconfig.json") + ctx.file_action(output=tsconfig_json_es5, content=json_marshal( + tsc_wrapped_tsconfig( + ctx, + compilation_inputs, + srcs, + jsx_factory=jsx_factory, + devmode_manifest=devmode_manifest.path, + allowed_deps=allowed_deps))) + inputs = compilation_inputs + [tsconfig_json_es5] outputs = ( transpiled_devmode_js + gen_declarations + [devmode_manifest]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index b0ab2d94ad..f71940402d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -18,11 +18,10 @@ _DEBUG = False load(":common/module_mappings.bzl", "get_module_mappings") -def create_tsconfig(ctx, files, srcs, tsconfig_dir, +def create_tsconfig(ctx, files, srcs, devmode_manifest=None, tsickle_externs=None, type_blacklisted_declarations=[], out_dir=None, disable_strict_deps=False, allowed_deps=set(), - extra_root_dirs=[], module_path_prefixes=None, module_roots=None, - ngc_out=[]): + extra_root_dirs=[], module_path_prefixes=None, module_roots=None): """Creates an object representing the TypeScript configuration to run the compiler under Bazel. @@ -30,8 +29,6 @@ def create_tsconfig(ctx, files, srcs, tsconfig_dir, ctx: the skylark execution context files: Labels of all TypeScript compiler inputs srcs: Immediate sources being compiled, as opposed to transitive deps. - tsconfig_dir: where the resulting config will be written; paths will be relative - to this folder devmode_manifest: path to the manifest file to write for --target=es5 tsickle_externs: path to write tsickle-generated externs.js. type_blacklisted_declarations: types declared in these files will never be @@ -40,9 +37,18 @@ def create_tsconfig(ctx, files, srcs, tsconfig_dir, disable_strict_deps: whether to disable the strict deps check allowed_deps: the set of files that code in srcs may depend on (strict deps) extra_root_dirs: Extra root dirs to be passed to tsc_wrapped. - ngc_out: output files to be produced by the Angular template compiler """ outdir_path = out_dir if out_dir != None else ctx.configuration.bin_dir.path + # Callers can choose the filename for the tsconfig, but it must always live + # in the output directory corresponding with the label where it's declared. + tsconfig_dir = "/".join([p + for p in [ + ctx.bin_dir.path, + ctx.label.workspace_root, + ctx.label.package + ] + ctx.label.name.split("/")[:-1] + # Skip empty path segments (eg. workspace_root when in same repo) + if p]) workspace_path = "/".join([".."] * len(tsconfig_dir.split("/"))) if module_path_prefixes == None: module_path_prefixes = [ @@ -170,17 +176,9 @@ def create_tsconfig(ctx, files, srcs, tsconfig_dir, compiler_options["traceResolution"] = True compiler_options["diagnostics"] = True - result = { + return { "compilerOptions": compiler_options, "bazelOptions": bazel_options, "files": [workspace_path + "/" + f.path for f in files], "compileOnSave": False, } - - if ngc_out: - result["angularCompilerOptions"] = { - "genDir": ctx.configuration.genfiles_dir.path, - "expectedOut": ngc_out, - } - - return result \ No newline at end of file From 3b77459be508c736c299ef434b647a2de5cdf841 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Wed, 19 Jul 2017 15:21:07 -0700 Subject: [PATCH 0030/1134] Feature: support nodejs binaries in multi-package repos. This allows one package to declare a short module name which can be used by another package within the same repo. This was already possible in TypeScript's type-checker, and now works at runtime as well. PiperOrigin-RevId: 162543654 --- .../examples/some_module/BUILD.bazel | 48 +++++++++++ .../examples/some_module/index.ts | 3 + .../examples/some_module/main.ts | 4 + .../examples/some_module/module_load_test.sh | 8 ++ .../rules_typescript/internal/BUILD.bazel | 2 +- .../rules_typescript/internal/build_defs.bzl | 3 +- .../internal/common/module_mappings.bzl | 39 +++++++-- .../rules_typescript/internal/node.bzl | 45 +++++++++-- .../internal/node_launcher.sh | 5 +- .../rules_typescript/internal/node_loader.js | 80 +++++++++++++++++++ .../internal/tsc_wrapped/BUILD.bazel | 4 +- 11 files changed, 220 insertions(+), 21 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/some_module/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/some_module/index.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/some_module/main.ts create mode 100755 third_party/github.com/bazelbuild/rules_typescript/examples/some_module/module_load_test.sh create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/node_loader.js diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/BUILD.bazel new file mode 100644 index 0000000000..7440069d64 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/BUILD.bazel @@ -0,0 +1,48 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +package(default_visibility = ["//visibility:public"]) + +load("//:defs.bzl", "ts_library", "nodejs_binary") + +# We compile this library with the module name "sm" to make it possible to +# use `import {} from 'sm';` both at type-check time (we include the mapping in +# the paths map in tsconfig) as well as runtime (we patch the nodejs module +# loader to discover the path in the runfiles). +ts_library( + name = "some_module", + srcs = ["index.ts"], + module_name = "sm", +) + +ts_library( + name = "main", + srcs = ["main.ts"], + deps = [":some_module"], +) + +nodejs_binary( + name = "bin", + data = [ + ":main", + ":some_module", + ], + entry_point = "build_bazel_rules_typescript/examples/some_module/main.js", +) + +sh_test( + name = "module_load_test", + srcs = ["module_load_test.sh"], + data = [":bin"], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/index.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/index.ts new file mode 100644 index 0000000000..0f0c4133f8 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/index.ts @@ -0,0 +1,3 @@ +export function hello() { + console.log("hello world"); +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/main.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/main.ts new file mode 100644 index 0000000000..bb7d4224d0 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/main.ts @@ -0,0 +1,4 @@ +import {hello} from 'sm'; + +hello(); + diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/module_load_test.sh b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/module_load_test.sh new file mode 100755 index 0000000000..a0658f269e --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/module_load_test.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -e + +readonly OUT=$($TEST_SRCDIR/build_bazel_rules_typescript/examples/some_module/bin) +if [ "$OUT" != "hello world" ]; then + echo "Expected output 'hello world' but was $OUT" + exit 1 +fi diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index e00ffbf64f..0c53959369 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -14,4 +14,4 @@ package(default_visibility = ["//visibility:public"]) -exports_files(["node_launcher.sh", "worker_protocol.proto"]) +exports_files(["node_launcher.sh", "node_loader.js", "worker_protocol.proto"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index 6a42480f90..18e21316a8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -92,8 +92,7 @@ def tsc_wrapped_tsconfig(ctx, ], # Workaround https://github.com/Microsoft/TypeScript/issues/15962 # Needed for Angular to build with Bazel. - # TODO(alexeagle): fix the bug upstream or find a better place for - # this workaround. + # TODO(alexeagle): Remove workaround after upgrade to TS 2.4 "zone.js": [ "/".join([host_bin, runfiles, "npm/installed/node_modules/zone.js/dist/zone.js.d.ts"]), ] diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl index e3fe050651..cc1bd76df6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl @@ -25,7 +25,7 @@ def _get_deps(attrs, names): for d in getattr(attrs, n)] # Traverse 'srcs' in addition so that we can go across a genrule -_MODULE_MAPPINGS_DEPS_NAMES = (["deps", "srcs"] +_MODULE_MAPPINGS_DEPS_NAMES = (["deps", "srcs", "data"] ) _DEBUG = False @@ -34,7 +34,7 @@ def debug(msg, values=()): if _DEBUG: print(msg % values) -def get_module_mappings(label, attrs, srcs = []): +def get_module_mappings(label, attrs, srcs = [], workspace_name = None, mappings_attr = "es6_module_mappings"): """Returns the module_mappings from the given attrs. Collects a {module_name - module_root} hash from all transitive dependencies, @@ -45,9 +45,9 @@ def get_module_mappings(label, attrs, srcs = []): mappings = dict() all_deps = _get_deps(attrs, names = _MODULE_MAPPINGS_DEPS_NAMES) for dep in all_deps: - if not hasattr(dep, "es6_module_mappings"): + if not hasattr(dep, mappings_attr): continue - for k, v in dep.es6_module_mappings.items(): + for k, v in getattr(dep, mappings_attr).items(): if k in mappings and mappings[k] != v: fail(("duplicate module mapping at %s: %s maps to both %s and %s" % (label, k, mappings[k], v)), "deps") @@ -58,16 +58,21 @@ def get_module_mappings(label, attrs, srcs = []): if not mn: mn = label.name mr = label.package - if label.workspace_root: + if workspace_name: + mr = "%s/%s" % (workspace_name, mr) + elif label.workspace_root: mr = "%s/%s" % (label.workspace_root, mr) if attrs.module_root and attrs.module_root != ".": mr = "%s/%s" % (mr, attrs.module_root) + if attrs.module_root.endswith(".ts"): + if workspace_name: + mr = mr.replace(".d.ts", "") # Validate that sources are underneath the module root. # module_roots ending in .ts are a special case, they are used to # restrict what's exported from a build rule, e.g. only exports from a # specific index.d.ts file. For those, not every source must be under the # given module root. - if not attrs.module_root.endswith(".ts"): + else: for s in srcs: if not s.short_path.startswith(mr): fail(("all sources must be under module root: %s, but found: %s" % @@ -87,3 +92,25 @@ module_mappings_aspect = aspect( _module_mappings_aspect_impl, attr_aspects = _MODULE_MAPPINGS_DEPS_NAMES, ) + +# When building a mapping for use at runtime, we need paths to be relative to +# the runfiles directory. This requires the workspace_name to be prefixed on +# each module root. +def _module_mappings_runtime_aspect_impl(target, ctx): + if target.label.workspace_root: + # We need the workspace_name for the target being visited. + # Skylark doesn't have this - instead they have a workspace_root + # which looks like "external/repo_name" - so grab the second path segment. + # TODO(alexeagle): investigate a better way to get the workspace name + workspace_name = target.label.workspace_root.split("/")[1] + else: + workspace_name = ctx.workspace_name + mappings = get_module_mappings(target.label, ctx.rule.attr, + workspace_name = workspace_name, + mappings_attr = "runfiles_module_mappings") + return struct(runfiles_module_mappings = mappings) + +module_mappings_runtime_aspect = aspect( + _module_mappings_runtime_aspect_impl, + attr_aspects = _MODULE_MAPPINGS_DEPS_NAMES, +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl index 705c759c11..153dfe6a50 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl @@ -15,6 +15,7 @@ """Rules for executing programs in the nodejs runtime. """ load(":executables.bzl", "get_node") +load(":common/module_mappings.bzl", "module_mappings_runtime_aspect") def _sources_aspect_impl(target, ctx): result = set() @@ -31,29 +32,54 @@ _sources_aspect = aspect( attr_aspects = ["deps"], ) +def _write_loader_script(ctx): + # Generates the JavaScript snippet of module roots mappings, with each entry + # in the form: + # {module_name: /^mod_name\b/, module_root: 'path/to/mod_name'} + module_mappings = [] + for d in ctx.attr.data: + if hasattr(d, "runfiles_module_mappings"): + for [mn, mr] in d.runfiles_module_mappings.items(): + escaped = mn.replace("/", r"\/").replace(".", r"\.") + mapping = r"{module_name: /^%s\b/, module_root: '%s'}" % (escaped, mr) + module_mappings.append(mapping) + ctx.template_action( + template=ctx.file._loader_template, + output=ctx.outputs.loader, + substitutions={ + "TEMPLATED_module_roots": "\n " + ",\n ".join(module_mappings), + "TEMPLATED_entry_point": ctx.attr.entry_point, + }, + executable=True, + ) + def _nodejs_binary_impl(ctx): node = ctx.file._node - script = ctx.attr.main node_modules = ctx.files._node_modules sources = set() for d in ctx.attr.data: if hasattr(d, "node_sources"): sources += d.node_sources + _write_loader_script(ctx) + ctx.template_action( template=ctx.file._launcher_template, output=ctx.outputs.executable, substitutions={ "TEMPLATED_node": ctx.workspace_name + "/" + node.path, "TEMPLATED_args": " ".join(ctx.attr.args), - "TEMPLATED_script_path": script, + "TEMPLATED_script_path": "/".join([ + ctx.workspace_name, + ctx.outputs.loader.short_path, + ]), }, executable=True, ) return struct( runfiles = ctx.runfiles( - files = [node] + node_modules + sources.to_list(), + files = [node, ctx.outputs.loader] + node_modules + sources.to_list(), collect_data = True, ), ) @@ -61,11 +87,11 @@ def _nodejs_binary_impl(ctx): nodejs_binary = rule( _nodejs_binary_impl, attrs = { - "main": attr.string(), + "entry_point": attr.string(), "data": attr.label_list( allow_files = True, cfg = "data", - aspects=[_sources_aspect]), + aspects=[_sources_aspect, module_mappings_runtime_aspect]), "_node": attr.label( default = get_node(), allow_files = True, @@ -75,7 +101,14 @@ nodejs_binary = rule( "_launcher_template": attr.label( default = Label("//internal:node_launcher.sh"), allow_files = True, - single_file = True) + single_file = True), + "_loader_template": attr.label( + default = Label("//internal:node_loader.js"), + allow_files = True, + single_file = True), }, executable = True, + outputs = { + "loader": "%{name}_loader.js" + }, ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh index 41bb87136f..2293475c4a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh @@ -78,10 +78,7 @@ else fi fi export RUNFILES -# TODO(alexeagle): don't hard-code rules_typescript/internal here, generalize -# by walking up the dependency graph and finding external packages that want to -# contribute js files at runtime. -export NODE_PATH="${RUNFILES}":${RUNFILES}/npm/installed/node_modules:${RUNFILES}/build_bazel_rules_typescript/internal +export NODE_PATH="${RUNFILES}":${RUNFILES}/npm/installed/node_modules ARGS=() NODE_OPTIONS=() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_loader.js b/third_party/github.com/bazelbuild/rules_typescript/internal/node_loader.js new file mode 100644 index 0000000000..695ac7d540 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node_loader.js @@ -0,0 +1,80 @@ +/** + * @fileoverview Patched NodeJS module loader for bazel. This template is + * expanded to contain module name -> path mappings and then patches the + * NodeJS require() function to substitute the appropriate paths. + * + * @see https://github.com/nodejs/node/blob/master/lib/module.js + */ +'use strict'; + +/** + * The module roots as pairs of a RegExp to match the require path, and a + * module_root to substitute for the require path. + * @type {!Array<{module_name: RegExp, module_root: string}>} + */ +var MODULE_ROOTS = [TEMPLATED_module_roots]; + +function resolveToModuleRoot(path) { + if (!path) { + throw new Error('resolveToModuleRoot missing path: ' + path); + } + + var match; + var lengthOfMatch = 0; + var matchedEntry; + for (var i = 0; i < MODULE_ROOTS.length; i++) { + var m = MODULE_ROOTS[i]; + var p = path.replace(m.module_name, m.module_root); + // Longest regex wins when multiple match + var len = m.module_name.toString().length; + if (p !== path && len > lengthOfMatch) { + lengthOfMatch = len; + match = p; + matchedEntry = m; + } + } + if (match) { + return match; + } + return null; +} + +function runfilesDir() { + return (process.env.RUNFILES || process.env.TEST_SRCDIR) + '/'; +} + +var originalResolveFilename = module.constructor._resolveFilename; +module.constructor._resolveFilename = + function(request, parent) { + try { + return originalResolveFilename(request, parent); + } catch (e) { + } + try { + return originalResolveFilename(runfilesDir() + request, parent); + } catch (e) { + } + + var moduleRoot = resolveToModuleRoot(request); + if (moduleRoot) { + var moduleRootInRunfiles = runfilesDir() + moduleRoot; + var filename = module.constructor._findPath(moduleRootInRunfiles, []); + if (!filename) { + throw new Error(`No file ${request} found in module root ${moduleRoot}`); + } + return filename; + } +} + +if (require.main === module) { + // Set the actual entry point in the arguments list. + // argv[0] == node, argv[1] == entry point. + // NB: entry_point below is replaced during the build process. + var mainScript = process.argv[1] = 'TEMPLATED_entry_point'; + try { + module.constructor._load(mainScript, this, /*isMain=*/true); + } catch (e) { + console.error('failed to load main ', e.stack || e); + process.exit(1); + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel index 7639a4f268..501ed16b2e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel @@ -19,7 +19,7 @@ load("//internal:node.bzl", "nodejs_binary") nodejs_binary( name = "tsc", data = ["@npm//installed:node_modules"], - main = "npm/installed/node_modules/typescript/lib/tsc.js", + entry_point = "npm/installed/node_modules/typescript/lib/tsc.js", ) # Build our custom compiler using the vanilla one @@ -47,6 +47,6 @@ nodejs_binary( "//internal:worker_protocol.proto", ], args = ["--node_options=--expose-gc"], - main = "build_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js", + entry_point = "build_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js", visibility = ["//visibility:public"], ) From f9193b987e43615016b108c519a3fb0176509980 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Wed, 19 Jul 2017 17:19:07 -0700 Subject: [PATCH 0031/1134] partial revert of prior change PiperOrigin-RevId: 162558972 --- .../rules_typescript/internal/common/module_mappings.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl index cc1bd76df6..fd19ba43c3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl @@ -25,7 +25,7 @@ def _get_deps(attrs, names): for d in getattr(attrs, n)] # Traverse 'srcs' in addition so that we can go across a genrule -_MODULE_MAPPINGS_DEPS_NAMES = (["deps", "srcs", "data"] +_MODULE_MAPPINGS_DEPS_NAMES = (["deps", "srcs"] ) _DEBUG = False From deb9940eff68cc27bcc414703cf5042991c80045 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Thu, 20 Jul 2017 07:40:38 -0700 Subject: [PATCH 0032/1134] Fix string conversions In the future ctx will be converted to strings differently than ctx.label. Labels, on the other hand, will be converted using `repr` (or using `str` if they are in containers) differently than strings. PiperOrigin-RevId: 162613394 --- .../bazelbuild/rules_typescript/internal/common/tsconfig.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index f71940402d..e61a3d2e33 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -86,7 +86,7 @@ def create_tsconfig(ctx, files, srcs, # Unlike compiler_options, the paths here are relative to the rootDir, # not the location of the tsconfig.json file. bazel_options = { - "target": ctx.label, + "target": str(ctx.label), "tsickle": tsickle_externs != None, "tsickleGenerateExterns": getattr(ctx.attr, "generate_externs", True), "tsickleExternsPath": tsickle_externs.path if tsickle_externs else "", From 3cbab2d33f1a491fde6a498a9f2d9d575324be0f Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Thu, 20 Jul 2017 14:28:00 -0700 Subject: [PATCH 0033/1134] Run compilers using an explicit dependency on node_modules, rather than finding their content in the runfiles of whatever nodejs_binary executes the compiler. PiperOrigin-RevId: 162666212 --- .../bazelbuild/rules_typescript/BUILD.bazel | 5 +++- .../rules_typescript/internal/build_defs.bzl | 28 ++++++------------- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index 8ec86ceb55..c908465876 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -13,10 +13,13 @@ # limitations under the License. # The node_modules directory is created by `yarn install` +# This rule gives access for nodejs binaries to find all installed packages. +# You may need to include more files in the glob() depending on what needs to +# be loaded at runtime. # WORKAROUND for https://github.com/bazelbuild/bazel/issues/374#issuecomment-296217940 # see notes in internal/yarn_install.bzl filegroup( name = "node_modules", - srcs = glob(["node_modules/**/*"]), + srcs = glob(["node_modules/**/*.js"]), visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index 18e21316a8..b2df6675ff 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -35,7 +35,8 @@ def _compile_action(ctx, inputs, outputs, config_file_path): for externs_file in externs_files: ctx.file_action(output=externs_file, content="") - action_inputs = inputs + action_inputs = inputs + [f for f in ctx.files.node_modules + if f.path.endswith(".ts") or f.path.endswith(".json")] if ctx.file.tsconfig: action_inputs += [ctx.file.tsconfig] @@ -80,21 +81,13 @@ def tsc_wrapped_tsconfig(ctx, # because it's generated in the execution phase. However, our source files are in # bazel-foo/ and therefore we need to strip some parent directories for each # f.path. - host_bin = "bazel-out/host/bin" - - runfiles = "/".join([p for p in [ - ctx.attr.compiler.label.workspace_root, - ctx.executable.compiler.short_path + ".runfiles"] if p]) module_roots = { - "*": [ - "/".join([host_bin, runfiles, "npm/installed/node_modules/*"]), - ], # Workaround https://github.com/Microsoft/TypeScript/issues/15962 # Needed for Angular to build with Bazel. # TODO(alexeagle): Remove workaround after upgrade to TS 2.4 "zone.js": [ - "/".join([host_bin, runfiles, "npm/installed/node_modules/zone.js/dist/zone.js.d.ts"]), + "node_modules/zone.js/dist/zone.js.d.ts", ] } @@ -102,14 +95,7 @@ def tsc_wrapped_tsconfig(ctx, devmode_manifest=devmode_manifest, module_roots=module_roots, **kwargs) - workspace_path = config["compilerOptions"]["rootDir"] - config["compilerOptions"].update({ - "typeRoots": ["/".join([ - workspace_path, host_bin, runfiles, - "npm/installed/node_modules/@types"] - )], - }) - config["bazelOptions"]["nodeModulesPrefix"] = "/".join([host_bin, runfiles, "npm/installed/node_modules"]) + config["bazelOptions"]["nodeModulesPrefix"] = "node_modules" # If the user gives a tsconfig attribute, the generated file should extend # from the user's tsconfig. @@ -117,6 +103,7 @@ def tsc_wrapped_tsconfig(ctx, # We subtract the ".json" from the end before handing to TypeScript because # this gives extra error-checking. if ctx.file.tsconfig: + workspace_path = config["compilerOptions"]["rootDir"] config["extends"] = "/".join([workspace_path, ctx.file.tsconfig.path[:-5]]) return config @@ -164,6 +151,9 @@ ts_library = rule( executable=True, cfg="host",), "supports_workers": attr.bool(default = True), - "_node_modules": attr.label(default = Label("@npm//installed:node_modules")), + # @// is special syntax for the "main" repository + # The default assumes the user specified a target "node_modules" in their + # root BUILD file. + "node_modules": attr.label(default = Label("@//:node_modules")), }), ) From 9c0ee2beb72b6678775679b3419f977e653fd329 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Thu, 20 Jul 2017 19:46:10 -0700 Subject: [PATCH 0034/1134] Use ctx.label instead of ctx in progress messages String representation of ctx will soon be changed, ctx.label should be used explicitly. PiperOrigin-RevId: 162698515 --- .../bazelbuild/rules_typescript/internal/build_defs.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index b2df6675ff..3e583be4a0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -49,7 +49,7 @@ def _compile_action(ctx, inputs, outputs, config_file_path): arguments = ["-p", config_file_path] ctx.action( - progress_message = "Compiling TypeScript (devmode) %s" % ctx, + progress_message = "Compiling TypeScript (devmode) %s" % ctx.label, mnemonic = "TypeScriptCompile", inputs = action_inputs, outputs = non_externs_files, From 6de2b2f2e0fbc5a84f53990c8c97ddbac55ac0c9 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 21 Jul 2017 01:29:34 -0700 Subject: [PATCH 0035/1134] Disable generating .d.ts from tsickle in ES6 mode. tsickle cannot reliably emit .d.ts because it alters the output to conform to Closure requirements. PiperOrigin-RevId: 162716744 --- .../internal/common/compilation.bzl | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 7a6506322a..189b6a4fe1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -180,15 +180,19 @@ def compile_ts(ctx, allowed_deps += extra_dts_files tsconfig_json_es6 = ctx.new_file(ctx.label.name + "_tsconfig.json") - ctx.file_action(output=tsconfig_json_es6, content=json_marshal( - tsc_wrapped_tsconfig( - ctx, - compilation_inputs, - srcs, - jsx_factory=jsx_factory, - tsickle_externs=tsickle_externs_path, - type_blacklisted_declarations=type_blacklisted_declarations, - allowed_deps=allowed_deps))) + tsconfig_es6 = tsc_wrapped_tsconfig( + ctx, + compilation_inputs, + srcs, + jsx_factory=jsx_factory, + tsickle_externs=tsickle_externs_path, + type_blacklisted_declarations=type_blacklisted_declarations, + allowed_deps=allowed_deps) + # Do not produce declarations in ES6 mode, tsickle cannot produce correct + # .d.ts (or even errors) from the altered Closure-style JS emit. + tsconfig_es6["compilerOptions"]["declaration"] = False + ctx.file_action(output=tsconfig_json_es6, + content=json_marshal(tsconfig_es6)) inputs = compilation_inputs + [tsconfig_json_es6] outputs = transpiled_closure_js + tsickle_externs From 41948f8f811d9fcf0ead4c017a1a8d95e6e5aed2 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 21 Jul 2017 09:10:53 -0700 Subject: [PATCH 0036/1134] Remove workaround for angular importing 'zone.js'. It seems unneeded in the Angular repo now, and causes us to miss the pathmapping for '*'. Fixes #18 PiperOrigin-RevId: 162747459 --- .../bazelbuild/rules_typescript/examples/bar.ts | 1 + .../rules_typescript/internal/build_defs.bzl | 10 ---------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts index 0069f3e726..7e251b00c2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts @@ -16,5 +16,6 @@ */ import {greeter} from './foo'; +import {Greeter} from 'examples/foo'; import {cool} from 'some-lib'; import * as ts from 'typescript'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index 3e583be4a0..08f05fa7c3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -82,18 +82,8 @@ def tsc_wrapped_tsconfig(ctx, # bazel-foo/ and therefore we need to strip some parent directories for each # f.path. - module_roots = { - # Workaround https://github.com/Microsoft/TypeScript/issues/15962 - # Needed for Angular to build with Bazel. - # TODO(alexeagle): Remove workaround after upgrade to TS 2.4 - "zone.js": [ - "node_modules/zone.js/dist/zone.js.d.ts", - ] - } - config = create_tsconfig(ctx, files, srcs, devmode_manifest=devmode_manifest, - module_roots=module_roots, **kwargs) config["bazelOptions"]["nodeModulesPrefix"] = "node_modules" From 26a0969d15a122d27a0064d7b88872d0e1359581 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 21 Jul 2017 09:17:16 -0700 Subject: [PATCH 0037/1134] When running typescript/lib/tsc.js, don't use the TypeScriptCompile mnemonic. Users configure that mnemonic to run as a worker, but plain tsc.js doesn't support worker mode. Fixes #17 PiperOrigin-RevId: 162748000 --- .../github.com/bazelbuild/rules_typescript/BUILD.bazel | 8 +++++++- .../bazelbuild/rules_typescript/internal/build_defs.bzl | 4 +++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index c908465876..b569703ff6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -20,6 +20,12 @@ # see notes in internal/yarn_install.bzl filegroup( name = "node_modules", - srcs = glob(["node_modules/**/*.js"]), + # Reduce the number of inputs to avoid hitting File Descriptor limit on Mac + srcs = glob([ + "node_modules/**/*.js", + "node_modules/@types/**/*.d.ts", + "node_modules/typescript/**/*.d.ts", + "node_modules/typescript/**/*.json" + ]), visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index 08f05fa7c3..ddfa07a0fb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -45,12 +45,14 @@ def _compile_action(ctx, inputs, outputs, config_file_path): # rather than the contents getting expanded. if ctx.attr.supports_workers: arguments = ["@@" + config_file_path] + mnemonic = "TypeScriptCompile" else: arguments = ["-p", config_file_path] + mnemonic = "tsc" ctx.action( progress_message = "Compiling TypeScript (devmode) %s" % ctx.label, - mnemonic = "TypeScriptCompile", + mnemonic = mnemonic, inputs = action_inputs, outputs = non_externs_files, arguments = arguments, From 5c1970478ac5dbe7653af724a78119f34a1138be Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 21 Jul 2017 11:04:42 -0700 Subject: [PATCH 0038/1134] Simplification: reference the @//:node_modules rule in the main repo rather than symlink the users project from an external repo. PiperOrigin-RevId: 162761057 --- .../bazelbuild/rules_typescript/WORKSPACE | 3 --- .../rules_typescript/internal/node.bzl | 3 ++- .../internal/node_install.bzl | 25 ++++--------------- .../internal/node_launcher.sh | 3 +-- .../rules_typescript/internal/node_loader.js | 14 ++++++++--- .../internal/tsc_wrapped/BUILD.bazel | 6 ++--- 6 files changed, 22 insertions(+), 32 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 216bd3fe41..187b4a254c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -23,7 +23,4 @@ load("//:defs.bzl", "node_repositories") # @build_bazel_rules_typescript_node//:bin/npm # - The yarn package manager: # @yarn//:yarn -# - An external repo symlink to the installed packages: -# @npm//installed:node_modules -# (User's rules can reference //:node_modules instead) node_repositories(package_json = "//:package.json") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl index 153dfe6a50..3821880b60 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl @@ -49,6 +49,7 @@ def _write_loader_script(ctx): substitutions={ "TEMPLATED_module_roots": "\n " + ",\n ".join(module_mappings), "TEMPLATED_entry_point": ctx.attr.entry_point, + "TEMPLATED_workspace_name": ctx.workspace_name, }, executable=True, ) @@ -97,7 +98,7 @@ nodejs_binary = rule( allow_files = True, single_file = True), "_node_modules": attr.label( - default = Label("@npm//installed:node_modules")), + default = Label("@//:node_modules")), "_launcher_template": attr.label( default = Label("//internal:node_launcher.sh"), allow_files = True, diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl index 404bd5e1df..e07e9f6899 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl @@ -17,14 +17,6 @@ We fetch a specific version of Node, to ensure builds are hermetic. We then create a repository @build_bazel_rules_typescript_node which provides the node binary to other rules. - -Finally we create a workspace that symlinks to the user's project. -We name this workspace "npm" so there will be targets like -@npm//installed:node_modules - -Within the user's project, they can refer to //:node_modules -but from other repositories, like the @build_bazel_rules_typescript -repository, we also need to find some labels under node_modules. """ def _node_impl(repository_ctx): @@ -74,7 +66,7 @@ exports_files([ _node_repo = repository_rule(_node_impl, attrs = {}) -def _symlink_node_modules_impl(ctx): +# def _write_node_modules_impl(ctx): # WORKAROUND for https://github.com/bazelbuild/bazel/issues/374#issuecomment-296217940 # Bazel does not allow labels to start with `@`, so when installing eg. the `@types/node` # module from the @types scoped package, you'll get an error. @@ -87,14 +79,10 @@ def _symlink_node_modules_impl(ctx): # filegroup(name = "node_modules", srcs = glob(["node_modules/**/*"]), visibility = ["//visibility:public"]) # """) - # Instead symlink the root directory from the user's workspace - project_dir = ctx.path(ctx.attr.package_json).dirname - ctx.symlink(project_dir, "installed") - -_symlink_node_modules = repository_rule( - _symlink_node_modules_impl, - attrs = { "package_json": attr.label() }, -) +# _write_node_modules = repository_rule( +# _write_node_modules_impl, +# attrs = { "package_json": attr.label() }, +# ) def _yarn_impl(ctx): # Yarn is a package manager that downloads dependencies. Yarn is an improvement over the `npm` tool in @@ -136,6 +124,3 @@ def node_repositories(package_json): _node_repo(name = "build_bazel_rules_typescript_node") _yarn_repo(name = "yarn", package_json = package_json) - - # This repo is named "npm" since that's the namespace of packages. - _symlink_node_modules(name = "npm", package_json = package_json) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh index 2293475c4a..a3454b3619 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh @@ -78,11 +78,10 @@ else fi fi export RUNFILES -export NODE_PATH="${RUNFILES}":${RUNFILES}/npm/installed/node_modules ARGS=() NODE_OPTIONS=() -ALL_ARGS=(TEMPLATED_args $@) +ALL_ARGS=(TEMPLATED_args "$@") for ARG in "${ALL_ARGS[@]}"; do case "$ARG" in --node_options=*) NODE_OPTIONS+=( "${ARG#--node_options=}" ) ;; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_loader.js b/third_party/github.com/bazelbuild/rules_typescript/internal/node_loader.js index 695ac7d540..67738eaae0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node_loader.js +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node_loader.js @@ -6,6 +6,7 @@ * @see https://github.com/nodejs/node/blob/master/lib/module.js */ 'use strict'; +var path = require('path'); /** * The module roots as pairs of a RegExp to match the require path, and a @@ -40,7 +41,7 @@ function resolveToModuleRoot(path) { } function runfilesDir() { - return (process.env.RUNFILES || process.env.TEST_SRCDIR) + '/'; + return process.env.RUNFILES || process.env.TEST_SRCDIR; } var originalResolveFilename = module.constructor._resolveFilename; @@ -51,13 +52,20 @@ module.constructor._resolveFilename = } catch (e) { } try { - return originalResolveFilename(runfilesDir() + request, parent); + return originalResolveFilename(path.join(runfilesDir(), request), parent); + } catch (e) { + } + try { + return originalResolveFilename( + path.join( + runfilesDir(), 'TEMPLATED_workspace_name', 'node_modules', request), + parent); } catch (e) { } var moduleRoot = resolveToModuleRoot(request); if (moduleRoot) { - var moduleRootInRunfiles = runfilesDir() + moduleRoot; + var moduleRootInRunfiles = path.join(runfilesDir(), moduleRoot); var filename = module.constructor._findPath(moduleRootInRunfiles, []); if (!filename) { throw new Error(`No file ${request} found in module root ${moduleRoot}`); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel index 501ed16b2e..a53b603bb9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel @@ -18,8 +18,8 @@ load("//internal:node.bzl", "nodejs_binary") # Vanilla typescript compiler: run the tsc.js binary distributed by TypeScript nodejs_binary( name = "tsc", - data = ["@npm//installed:node_modules"], - entry_point = "npm/installed/node_modules/typescript/lib/tsc.js", + data = ["@//:node_modules"], + entry_point = "typescript/lib/tsc.js", ) # Build our custom compiler using the vanilla one @@ -40,7 +40,7 @@ nodejs_binary( name = "tsc_wrapped_bin", data = [ ":tsc_wrapped", - "@npm//installed:node_modules", + "@//:node_modules", # Should be @bazel_tools//src/main/protobuf:worker_protocol.proto # see https://github.com/bazelbuild/bazel/issues/3155#issuecomment-308156976 From fb54b214115e459d3e49279f0ad9a218eb325240 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 4 Aug 2017 05:52:54 -0700 Subject: [PATCH 0039/1134] PiperOrigin-RevId: 164252706 --- .../bazelbuild/rules_typescript/internal/common/compilation.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 189b6a4fe1..0c9c67fccd 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -173,7 +173,7 @@ def compile_ts(ctx, tsickle_externs_path = tsickle_externs[0] if tsickle_externs else None # Calculate allowed dependencies for strict deps enforcement. - allowed_deps = srcs # A target's sources may depend on each other. + allowed_deps = srcs[:] # A target's sources may depend on each other. for dep in ctx.attr.deps: if hasattr(dep, "typescript"): allowed_deps += dep.typescript.declarations From a227c98489ec969a19cfd633e2d016356acfd938 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Tue, 8 Aug 2017 10:40:40 -0700 Subject: [PATCH 0040/1134] Merge https://github.com/bazelbuild/rules_typescript/pull/22 Closes #22 PiperOrigin-RevId: 164612222 --- .../rules_typescript/internal/build_defs.bzl | 2 +- .../internal/common/compilation.bzl | 18 +++++++++--------- .../internal/common/tsconfig.bzl | 2 +- .../rules_typescript/internal/node.bzl | 4 ++-- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index ddfa07a0fb..ad8259dcb5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -72,7 +72,7 @@ def tsc_wrapped_tsconfig(ctx, devmode_manifest=None, tsickle_externs=None, type_blacklisted_declarations=[], - allowed_deps=set(), + allowed_deps=depset(), jsx_factory=None, **kwargs): diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 0c9c67fccd..89578e9038 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -62,10 +62,10 @@ def assert_js_or_typescript_deps(ctx): "also proto_library and some others).\n") def _collect_transitive_dts(ctx): - all_deps_declarations = set() - type_blacklisted_declarations = set() + all_deps_declarations = depset() + type_blacklisted_declarations = depset() for extra in ctx.files._additional_d_ts: - all_deps_declarations += set([extra]) + all_deps_declarations += depset([extra]) for dep in ctx.attr.deps: if hasattr(dep, "typescript"): all_deps_declarations += dep.typescript.transitive_declarations @@ -219,11 +219,11 @@ def compile_ts(ctx, transitive_decls = input_declarations + gen_declarations if is_library: - es6_sources = set(transpiled_closure_js + tsickle_externs) - es5_sources = set(transpiled_devmode_js) + es6_sources = depset(transpiled_closure_js + tsickle_externs) + es5_sources = depset(transpiled_devmode_js) else: - es6_sources = set(tsickle_externs) - es5_sources = set(tsickle_externs) + es6_sources = depset(tsickle_externs) + es5_sources = depset(tsickle_externs) devmode_manifest = None # Downstream rules see the .d.ts files produced or declared by this rule. @@ -241,9 +241,9 @@ def compile_ts(ctx, # outputs list to force compilation of d.ts files. (tsickle externs # are produced by running a compilation over the d.ts file and # extracting type information.) - files = set(declarations) + files = depset(declarations) if not is_library: - files += set(tsickle_externs) + files += depset(tsickle_externs) return { "files": files, diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index e61a3d2e33..26a2fd6bd2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -20,7 +20,7 @@ load(":common/module_mappings.bzl", "get_module_mappings") def create_tsconfig(ctx, files, srcs, devmode_manifest=None, tsickle_externs=None, type_blacklisted_declarations=[], - out_dir=None, disable_strict_deps=False, allowed_deps=set(), + out_dir=None, disable_strict_deps=False, allowed_deps=depset(), extra_root_dirs=[], module_path_prefixes=None, module_roots=None): """Creates an object representing the TypeScript configuration to run the compiler under Bazel. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl index 3821880b60..25f4eab9b0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl @@ -18,7 +18,7 @@ load(":executables.bzl", "get_node") load(":common/module_mappings.bzl", "module_mappings_runtime_aspect") def _sources_aspect_impl(target, ctx): - result = set() + result = depset() if hasattr(ctx.rule.attr, "deps"): for dep in ctx.rule.attr.deps: if hasattr(dep, "node_sources"): @@ -57,7 +57,7 @@ def _write_loader_script(ctx): def _nodejs_binary_impl(ctx): node = ctx.file._node node_modules = ctx.files._node_modules - sources = set() + sources = depset() for d in ctx.attr.data: if hasattr(d, "node_sources"): sources += d.node_sources From 02e67d5f8f9d2ea0f78c6ae31b553873bebad024 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Tue, 8 Aug 2017 13:01:35 -0700 Subject: [PATCH 0041/1134] Configure tsickle to always downlevel decorators. Not actually wired up yet. PiperOrigin-RevId: 164633331 --- .../bazelbuild/rules_typescript/internal/common/tsconfig.bzl | 2 ++ .../rules_typescript/internal/tsc_wrapped/tsconfig.ts | 3 +++ 2 files changed, 5 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 26a2fd6bd2..05c31b9fc7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -90,6 +90,7 @@ def create_tsconfig(ctx, files, srcs, "tsickle": tsickle_externs != None, "tsickleGenerateExterns": getattr(ctx.attr, "generate_externs", True), "tsickleExternsPath": tsickle_externs.path if tsickle_externs else "", + "downlevelDecorators": True, "untyped": not getattr(ctx.attr, "tsickle_typed", False), "typeBlackListPaths": [f.path for f in type_blacklisted_declarations], @@ -155,6 +156,7 @@ def create_tsconfig(ctx, files, srcs, # permit `@Decorator` syntax and allow runtime reflection on their types. "experimentalDecorators": True, + # TODO(alexeagle): try removing this option "emitDecoratorMetadata": True, # Interpret JSX as React calls (until someone asks for something different) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index 096443aebb..c6ded50ccd 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -33,6 +33,9 @@ export interface BazelOptions { /** If true, emit ES5 into filename.es5.js. */ es5Mode: boolean; + /** If true, downlevel compatible decorators into annotations. */ + downlevelDecorators: boolean; + /** If true, convert TypeScript code into a Closure-compatible variant. */ tsickle: boolean; From f76b2f02d089626a15962a1568acc3755db1312c Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Tue, 8 Aug 2017 15:59:36 -0700 Subject: [PATCH 0042/1134] rollback PiperOrigin-RevId: 164657871 --- .../bazelbuild/rules_typescript/internal/common/tsconfig.bzl | 2 -- .../rules_typescript/internal/tsc_wrapped/tsconfig.ts | 3 --- 2 files changed, 5 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 05c31b9fc7..26a2fd6bd2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -90,7 +90,6 @@ def create_tsconfig(ctx, files, srcs, "tsickle": tsickle_externs != None, "tsickleGenerateExterns": getattr(ctx.attr, "generate_externs", True), "tsickleExternsPath": tsickle_externs.path if tsickle_externs else "", - "downlevelDecorators": True, "untyped": not getattr(ctx.attr, "tsickle_typed", False), "typeBlackListPaths": [f.path for f in type_blacklisted_declarations], @@ -156,7 +155,6 @@ def create_tsconfig(ctx, files, srcs, # permit `@Decorator` syntax and allow runtime reflection on their types. "experimentalDecorators": True, - # TODO(alexeagle): try removing this option "emitDecoratorMetadata": True, # Interpret JSX as React calls (until someone asks for something different) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index c6ded50ccd..096443aebb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -33,9 +33,6 @@ export interface BazelOptions { /** If true, emit ES5 into filename.es5.js. */ es5Mode: boolean; - /** If true, downlevel compatible decorators into annotations. */ - downlevelDecorators: boolean; - /** If true, convert TypeScript code into a Closure-compatible variant. */ tsickle: boolean; From afd5f0c3b21de46969632ff69fe607af8824305c Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Tue, 15 Aug 2017 15:27:06 -0700 Subject: [PATCH 0043/1134] replace dict(X, **Y) with X + Y I believe the two are equvalent but the latter reads better, especially when joining more than two dicts. PiperOrigin-RevId: 165367943 --- .../rules_typescript/internal/common/compilation.bzl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 89578e9038..bda86b8f39 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -21,7 +21,7 @@ load(":common/json_marshal.bzl", "json_marshal") BASE_ATTRIBUTES = dict() # Attributes shared by any typescript-compatible rule (ts_library, ng_module) -COMMON_ATTRIBUTES = dict(BASE_ATTRIBUTES, **{ +COMMON_ATTRIBUTES = BASE_ATTRIBUTES + { "deps": attr.label_list(aspects = [ module_mappings_aspect, ]), @@ -47,7 +47,7 @@ COMMON_ATTRIBUTES = dict(BASE_ATTRIBUTES, **{ ), # Whether to generate externs.js from any "declare" statement. "generate_externs": attr.bool(default = True), -}) +} # TODO(plf): Enforce this at analysis time. def assert_js_or_typescript_deps(ctx): From 0373d6e00c048da6669463ccdb90e4e289be474d Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Tue, 15 Aug 2017 16:36:47 -0700 Subject: [PATCH 0044/1134] replace dict(X, **Y) with X + Y I believe the two are equvalent but the latter reads better, especially when joining more than two dicts. PiperOrigin-RevId: 165377203 --- .../rules_typescript/internal/common/compilation.bzl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index bda86b8f39..89578e9038 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -21,7 +21,7 @@ load(":common/json_marshal.bzl", "json_marshal") BASE_ATTRIBUTES = dict() # Attributes shared by any typescript-compatible rule (ts_library, ng_module) -COMMON_ATTRIBUTES = BASE_ATTRIBUTES + { +COMMON_ATTRIBUTES = dict(BASE_ATTRIBUTES, **{ "deps": attr.label_list(aspects = [ module_mappings_aspect, ]), @@ -47,7 +47,7 @@ COMMON_ATTRIBUTES = BASE_ATTRIBUTES + { ), # Whether to generate externs.js from any "declare" statement. "generate_externs": attr.bool(default = True), -} +}) # TODO(plf): Enforce this at analysis time. def assert_js_or_typescript_deps(ctx): From b88443ba55eb2d3f5bf3e49584e2ebe28170d202 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 18 Aug 2017 08:28:50 -0700 Subject: [PATCH 0045/1134] Move the CompilerHost to its own module, and add closure-interop logic PiperOrigin-RevId: 165708171 --- .../bazelbuild/rules_typescript/BUILD.bazel | 8 +- .../internal/common/tsconfig.bzl | 1 + .../internal/tsc_wrapped/compiler_host.ts | 290 ++++++++++++++++++ .../internal/tsc_wrapped/index.ts | 2 + .../internal/tsc_wrapped/tsc_wrapped.ts | 151 +-------- .../internal/tsc_wrapped/tsconfig.ts | 8 + .../bazelbuild/rules_typescript/package.json | 3 +- 7 files changed, 307 insertions(+), 156 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index b569703ff6..8e7022ebb9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -17,15 +17,13 @@ # You may need to include more files in the glob() depending on what needs to # be loaded at runtime. # WORKAROUND for https://github.com/bazelbuild/bazel/issues/374#issuecomment-296217940 -# see notes in internal/yarn_install.bzl filegroup( name = "node_modules", - # Reduce the number of inputs to avoid hitting File Descriptor limit on Mac + # Only include files needed for type-checking and runtime srcs = glob([ "node_modules/**/*.js", - "node_modules/@types/**/*.d.ts", - "node_modules/typescript/**/*.d.ts", - "node_modules/typescript/**/*.json" + "node_modules/**/*.d.ts", + "node_modules/**/*.json" ]), visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 26a2fd6bd2..5d29d68d62 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -86,6 +86,7 @@ def create_tsconfig(ctx, files, srcs, # Unlike compiler_options, the paths here are relative to the rootDir, # not the location of the tsconfig.json file. bazel_options = { + "workspaceName": ctx.workspace_name, "target": str(ctx.label), "tsickle": tsickle_externs != None, "tsickleGenerateExterns": getattr(ctx.attr, "generate_externs", True), diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts new file mode 100644 index 0000000000..f27f1c698b --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -0,0 +1,290 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import * as tsickle from 'tsickle'; +import * as ts from 'typescript'; + +import {FileLoader} from './file_cache'; +import * as perfTrace from './perf_trace'; +import {BazelOptions} from './tsconfig'; + +export type ModuleResolver = + (moduleName: string, containingFile: string, + compilerOptions: ts.CompilerOptions, host: ts.ModuleResolutionHost) => + ts.ResolvedModuleWithFailedLookupLocations; + +/** + * CompilerHost that knows how to cache parsed files to improve compile times. + */ +export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { + /** + * Lookup table to answer file stat's without looking on disk. + */ + private knownFiles = new Set(); + + /** + * rootDirs relative to the rootDir, eg "bazel-out/local-fastbuild/bin" + */ + private relativeRoots: string[]; + + getCancelationToken?: () => ts.CancellationToken; + + constructor( + public inputFiles: string[], readonly options: ts.CompilerOptions, + readonly bazelOpts: BazelOptions, private delegate: ts.CompilerHost, + private fileLoader: FileLoader, + private moduleResolver: ModuleResolver = ts.resolveModuleName) { + // Try longest include directories first. + this.options.rootDirs.sort((a, b) => b.length - a.length); + this.relativeRoots = + this.options.rootDirs.map(r => path.relative(this.options.rootDir, r)); + inputFiles.forEach((f) => { + this.knownFiles.add(f); + }); + + // getCancelationToken is an optional method on the delegate. If we + // unconditionally implement the method, we will be forced to return null, + // in the absense of the delegate method. That won't match the return type. + // Instead, we optionally set a function to a field with the same name. + if (delegate && delegate.getCancellationToken) { + this.getCancelationToken = delegate.getCancellationToken.bind(delegate); + } + } + + /** + * Workaround https://github.com/Microsoft/TypeScript/issues/8245 + * We use the `rootDirs` property both for module resolution, + * and *also* to flatten the structure of the output directory + * (as `rootDir` would do for a single root). + * To do this, look for the pattern outDir/relativeRoots[i]/path/to/file + * or relativeRoots[i]/path/to/file + * and replace that with path/to/file + */ + flattenOutDir(fileName: string): string { + let result = fileName; + + // outDir/relativeRoots[i]/path/to/file -> relativeRoots[i]/path/to/file + if (fileName.startsWith(this.options.rootDir)) { + result = path.relative(this.options.outDir, fileName); + } + + for (const dir of this.relativeRoots) { + if (result.startsWith(dir + '/')) { + // relativeRoots[i]/path/to/file -> path/to/file + result = path.relative(dir, result); + // relativeRoots is sorted longest first so we can short-circuit + // after the first match + break; + } + } + return result; + } + + /** + * Allow moduleResolution=node to behave normally. + * Since we don't require users declare their dependencies within node_modules + * we may need to read files that weren't explicit inputs. + */ + allowNonHermeticRead(filePath: string) { + return filePath.split(path.sep).indexOf('node_modules') != -1; + } + + /** Avoid using tsickle on files that aren't in srcs[] */ + shouldSkipTsickleProcessing(fileName: string): boolean { + return this.bazelOpts.compilationTargetSrc.indexOf(fileName) === -1; + } + + /** Allows suppressing warnings for specific known libraries */ + shouldIgnoreWarningsForPath(filePath: string): boolean { + return this.bazelOpts.ignoreWarningPaths.some(p => !!filePath.match(new RegExp(p))); + } + + fileNameToModuleId(fileName: string): string { + return this.flattenOutDir(fileName.substring(0, fileName.lastIndexOf('.'))); + } + + /** + * Massages file names into valid goog.module names: + * - resolves relative paths to the given context + * - resolves non-relative paths which takes module_root into account + * - replaces '/' with '.' in the '' namespace + * - replace first char if non-alpha + * - replace subsequent non-alpha numeric chars + */ + pathToModuleName(context: string, importPath: string): string { + // tsickle hands us an output path, we need to map it back to a source + // path in order to do module resolution with it. + // outDir/relativeRoots[i]/path/to/file -> + // rootDir/relativeRoots[i]/path/to/file + if (context.startsWith(this.options.outDir)) { + context = path.join( + this.options.rootDir, path.relative(this.options.outDir, context)); + } + + // Try to get the resolved path name from TS compiler host which can + // handle resolution for libraries with module_root like rxjs and @angular. + const resolved = + this.moduleResolver(importPath, context, this.options, this); + if (resolved && resolved.resolvedModule && + resolved.resolvedModule.resolvedFileName) { + let resolvedFileName = resolved.resolvedModule.resolvedFileName; + + // TypeScript gives us a path with the rootDirs[i] still present, eg. + // /build/work/bazel-out/local-fastbuild/bin/path/to/file + // We want path/to/file. + for (const root of this.options.rootDirs) { + if (resolvedFileName.startsWith(root)) { + resolvedFileName = path.relative(root, resolvedFileName); + break; // rootDirs are sorted longest-first + } + } + + // Set the importPath to the resolved filename minus the extension. + // Extension can either be '.d.ts' or anything after the last '.'. + let index: number; + if (resolvedFileName.match(/\.d\.ts$/)) { + index = resolvedFileName.length - 5; + } else { + index = resolvedFileName.lastIndexOf('.'); + } + importPath = + index >= 0 ? resolvedFileName.substring(0, index) : resolvedFileName; + + if (importPath.indexOf(this.bazelOpts.workspaceName) !== 0) { + importPath = path.join(this.bazelOpts.workspaceName, importPath); + } + } + + // Remove the __{LOCALE} from the module name. + if (this.bazelOpts.locale) { + const suffix = '__' + this.bazelOpts.locale.toLowerCase(); + if (importPath.toLowerCase().endsWith(suffix)) { + importPath = importPath.substring(0, importPath.length - suffix.length); + } + } + + // Replace characters not supported by goog.module and '.' with + // '$' so that the original module name can be re-obtained + // without any loss. + // See goog.VALID_MODULE_RE_ in Closure's base.js for characters supported + // by google.module. + + const escape = (c: string) => { + return '$' + c.charCodeAt(0).toString(16); + }; + const moduleName = importPath.replace(/^[^a-zA-Z_/]/, escape) + .replace(/[^a-zA-Z_0-9_/]/g, escape) + .replace(/\//g, '.'); + return moduleName; + } + + /** Loads a source file from disk (or the cache). */ + getSourceFile( + fileName: string, languageVersion: ts.ScriptTarget, + onError?: (message: string) => void) { + return perfTrace.wrap(`getSourceFile ${fileName}`, () => { + if (this.allowNonHermeticRead(fileName)) { + // TODO(alexeagle): we could add these to the cache also + return this.delegate.getSourceFile(fileName, languageVersion, onError); + } + return this.fileLoader.loadFile(fileName, fileName, languageVersion); + }); + } + + writeFile( + fileName: string, content: string, writeByteOrderMark: boolean, + onError?: (message: string) => void, + sourceFiles?: ts.SourceFile[]): void { + perfTrace.wrap( + `writeFile ${fileName}`, + () => this.writeFileImpl( + fileName, content, writeByteOrderMark, onError, sourceFiles)); + } + + writeFileImpl( + fileName: string, content: string, writeByteOrderMark: boolean, + onError?: (message: string) => void, + sourceFiles?: ts.SourceFile[]): void { + fileName = this.flattenOutDir(fileName); + if (!this.bazelOpts.es5Mode) { + // Write ES6 transpiled files to *.closure.js. + if (this.bazelOpts.locale) { + // i18n paths are required to end with __locale.js so we put + // the .closure segment before the __locale + fileName = fileName.replace(/(__[^\.]+)?\.js$/, '.closure$1.js'); + } else { + fileName = fileName.replace(/\.js$/, '.closure.js'); + } + } + + // Prepend the output directory. + fileName = path.join(this.options.outDir, fileName); + + // Our file cache is based on mtime - so avoid writing files if they + // did not change. + if (!fs.existsSync(fileName) || + fs.readFileSync(fileName, 'utf-8') !== content) { + this.delegate.writeFile( + fileName, content, writeByteOrderMark, onError, sourceFiles); + } + } + + /** + * Performance optimization: don't try to stat files we weren't explicitly + * given as inputs. + * This also allows us to disable Bazel sandboxing, without accidentally + * reading .ts inputs when .d.ts inputs are intended. + * Note that in worker mode, the file cache will also guard against arbitrary + * file reads. + */ + fileExists(filePath: string): boolean { + // Allow moduleResolution=node to behave normally. + if (this.allowNonHermeticRead(filePath) && + this.delegate.fileExists(filePath)) { + return true; + } + return this.knownFiles.has(filePath); + } + + getDefaultLibFileName(options: ts.CompilerOptions): string { + if (this.bazelOpts.nodeModulesPrefix) { + return path.join( + this.bazelOpts.nodeModulesPrefix, 'typescript/lib', + ts.getDefaultLibFileName({target: ts.ScriptTarget.ES5})); + } + return this.delegate.getDefaultLibFileName(options); + } + + // Delegate everything else to the original compiler host. + + getCanonicalFileName(path: string) { + return this.delegate.getCanonicalFileName(path); + } + + getCurrentDirectory(): string { + return this.delegate.getCurrentDirectory(); + } + + useCaseSensitiveFileNames(): boolean { + return this.delegate.useCaseSensitiveFileNames(); + } + + getNewLine(): string { + return this.delegate.getNewLine(); + } + + getDirectories(path: string) { + return this.delegate.getDirectories(path); + } + + readFile(fileName: string): string { + return this.delegate.readFile(fileName); + } + + trace(s: string): void { + console.error(s); + } + + realpath(s: string): string { + return ts.sys.realpath(s); + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts index c483632d3e..e8e419dba9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts @@ -1 +1,3 @@ export * from './tsconfig'; +export * from './compiler_host'; +export * from './file_cache'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 398e5ff78d..435f91b947 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -2,6 +2,7 @@ import * as fs from 'fs'; import * as path from 'path'; import * as ts from 'typescript'; +import {CompilerHost} from './compiler_host'; import {CachedFileLoader, FileCache, FileLoader, UncachedFileLoader} from './file_cache'; import {BazelOptions, parseTsconfig} from './tsconfig'; import {debug, log, runAsWorker, runWorkerLoop} from './worker'; @@ -25,156 +26,6 @@ export function main(args) { // The one FileCache instance used in this process. const fileCache = new FileCache(debug); -class CompilerHost implements ts.CompilerHost { - - /** - * Lookup table to answer file stat's without looking on disk. - */ - private knownFiles = new Set(); - - /** - * rootDirs relative to the rootDir, eg "bazel-out/local-fastbuild/bin" - */ - private relativeRoots: string[]; - - constructor( - public inputFiles: string[], readonly options: ts.CompilerOptions, - readonly bazelOpts: BazelOptions, private delegate: ts.CompilerHost, - private fileLoader: FileLoader) { - // Try longest include directories first. - this.options.rootDirs.sort((a, b) => b.length - a.length); - this.relativeRoots = - this.options.rootDirs.map(r => path.relative(this.options.rootDir, r)); - inputFiles.forEach((f) => { - this.knownFiles.add(f); - }); - } - - /** - * Workaround https://github.com/Microsoft/TypeScript/issues/8245 - * We use the `rootDirs` property both for module resolution, - * and *also* to flatten the structure of the output directory - * (as `rootDir` would do for a single root). - * To do this, look for the pattern outDir/relativeRoots[i]/path/to/file - * or relativeRoots[i]/path/to/file - * and replace that with path/to/file - */ - flattenOutDir(fileName: string): string { - let result = fileName; - - // outDir/relativeRoots[i]/path/to/file -> relativeRoots[i]/path/to/file - if (fileName.startsWith(this.options.rootDir)) { - result = path.relative(this.options.outDir, fileName); - } - - for (const dir of this.relativeRoots) { - if (result.startsWith(dir + '/')) { - // relativeRoots[i]/path/to/file -> path/to/file - result = path.relative(dir, result); - // relativeRoots is sorted longest first so we can short-circuit - // after the first match - break; - } - } - return result; - } - - /** - * Allow moduleResolution=node to behave normally. - * Since we don't require users declare their dependencies within node_modules - * we may need to read files that weren't explicit inputs. - */ - allowNonHermeticRead(filePath: string) { - return filePath.split(path.sep).indexOf('node_modules') != -1; - } - - /** Loads a source file from disk (or the cache). */ - getSourceFile( - fileName: string, languageVersion: ts.ScriptTarget, - onError?: (message: string) => void) { - if (this.allowNonHermeticRead(fileName)) { - // TODO(alexeagle): we could add these to the cache also - return this.delegate.getSourceFile(fileName, languageVersion, onError); - } - return this.fileLoader.loadFile(fileName, fileName, languageVersion); - } - - writeFile( - fileName: string, content: string, writeByteOrderMark: boolean, - onError?: (message: string) => void, - sourceFiles?: ts.SourceFile[]): void { - fileName = this.flattenOutDir(fileName); - - // Prepend the output directory. - fileName = path.join(this.options.outDir, fileName); - - if (!fs.existsSync(fileName) || - fs.readFileSync(fileName, 'utf-8') !== content) { - this.delegate.writeFile( - fileName, content, writeByteOrderMark, onError, sourceFiles); - } - } - - /** - * Performance optimization: don't try to stat files we weren't explicitly - * given as inputs. - * This also allows us to disable Bazel sandboxing, without accidentally - * reading .ts inputs when .d.ts inputs are intended. - * Note that in worker mode, the file cache will also guard against arbitrary - * file reads. - */ - fileExists(filePath: string): boolean { - // Allow moduleResolution=node to behave normally. - if (this.allowNonHermeticRead(filePath) && - this.delegate.fileExists(filePath)) { - return true; - } - return this.knownFiles.has(filePath); - } - - getDefaultLibFileName(options: ts.CompilerOptions): string { - if (this.bazelOpts.nodeModulesPrefix) { - return path.join( - this.bazelOpts.nodeModulesPrefix, 'typescript/lib', - ts.getDefaultLibFileName({target: ts.ScriptTarget.ES5})); - } - return this.delegate.getDefaultLibFileName(options); - } - - // Delegate everything else to the original compiler host. - - getCanonicalFileName(path: string) { - return this.delegate.getCanonicalFileName(path); - } - - getCurrentDirectory(): string { - return this.delegate.getCurrentDirectory(); - } - - useCaseSensitiveFileNames(): boolean { - return this.delegate.useCaseSensitiveFileNames(); - } - - getNewLine(): string { - return this.delegate.getNewLine(); - } - - getDirectories(path: string) { - return this.delegate.getDirectories(path); - } - - readFile(fileName: string): string { - return this.delegate.readFile(fileName); - } - - trace(s: string): void { - console.error(s); - } - - realpath(s: string): string { - return ts.sys.realpath(s); - } -} function format(target: string, diagnostics: ts.Diagnostic[]): string { const diagnosticsHost: ts.FormatDiagnosticsHost = { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index 096443aebb..dd2abee35e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -24,6 +24,9 @@ import * as ts from 'typescript'; * relative to the location containing the tsconfig file. */ export interface BazelOptions { + /** Name of the bazel workspace where we are building. */ + workspaceName: string; + /** The full bazel target that is being built, e.g. //my/pkg:library. */ target: string; @@ -94,6 +97,11 @@ export interface BazelOptions { * file system access to paths under this prefix. */ nodeModulesPrefix: string; + + /** + * List of regexes on file paths for which we suppress tsickle's warnings. + */ + ignoreWarningPaths: string[]; } export interface ParsedTsConfig { diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 70c7604376..0fe1149fde 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -4,7 +4,8 @@ "version": "0.0.0", "dependencies": { "typescript": "2.3", - "protobufjs": "5.0.0" + "protobufjs": "5.0.0", + "tsickle": "0.23.6" }, "devDependencies": { "@types/node": "^7.0.18", From a7417cc4e330774a115617ca0aca3e8a5a531328 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Mon, 21 Aug 2017 13:00:23 -0700 Subject: [PATCH 0046/1134] Refactor: allow rules that extend from TypeScript rules to be able to declare their outputs. Also expose the list of aspects to run on the "deps" of a ts_library-extending rule. PiperOrigin-RevId: 165963727 --- .../internal/common/compilation.bzl | 58 +++++++++++-------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 89578e9038..1b7ce3706f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -20,11 +20,13 @@ load(":common/json_marshal.bzl", "json_marshal") BASE_ATTRIBUTES = dict() +DEPS_ASPECTS = [ + module_mappings_aspect, +] + # Attributes shared by any typescript-compatible rule (ts_library, ng_module) COMMON_ATTRIBUTES = dict(BASE_ATTRIBUTES, **{ - "deps": attr.label_list(aspects = [ - module_mappings_aspect, - ]), + "deps": attr.label_list(aspects = DEPS_ASPECTS), "data": attr.label_list( default = [], allow_files = True, @@ -76,25 +78,36 @@ def _collect_transitive_dts(ctx): type_blacklisted_declarations=list(type_blacklisted_declarations) ) -def _outputs(ctx, label, input_file): - """Returns closure js, devmode js, and .d.ts output files for |input_file|. +def _outputs(ctx, label): + """Returns closure js, devmode js, and .d.ts output files. Args: ctx: ctx. label: Label. package label. - input_file: File. the input_file Returns: - A three-tuple of files (.closure.js, .js, .d.ts). + A struct of file lists for different output types. """ workspace_segments = label.workspace_root.split("/") if label.workspace_root else [] package_segments = label.package.split("/") if label.package else [] trim = len(workspace_segments) + len(package_segments) - basename = "/".join(input_file.short_path.split("/")[trim:]) - dot = basename.rfind(".") - basename = basename[:dot] - return (ctx.new_file(basename + ".closure.js"), - ctx.new_file(basename + ".js"), - ctx.new_file(basename + ".d.ts")) + closure_js_files = [] + devmode_js_files = [] + declaration_files = [] + for input_file in ctx.files.srcs: + if (input_file.short_path.endswith(".d.ts")): + continue + basename = "/".join(input_file.short_path.split("/")[trim:]) + dot = basename.rfind(".") + basename = basename[:dot] + closure_js_files += [ctx.new_file(basename + ".closure.js")] + devmode_js_files += [ctx.new_file(basename + ".js")] + declaration_files += [ctx.new_file(basename + ".d.ts")] + return struct( + closure_js = closure_js_files, + devmode_js = devmode_js_files, + declarations = declaration_files, + ) + def compile_ts(ctx, is_library, @@ -102,7 +115,8 @@ def compile_ts(ctx, compile_action=None, devmode_compile_action=None, jsx_factory=None, - tsc_wrapped_tsconfig=None): + tsc_wrapped_tsconfig=None, + outputs=_outputs): """Creates actions to compile TypeScript code. This rule is shared between ts_library and ts_declaration. @@ -117,6 +131,7 @@ def compile_ts(ctx, for devmode. jsx_factory: optional string. Enables overriding jsx pragma. tsc_wrapped_tsconfig: function that produces a tsconfig object. + outputs: function from a ctx to the expected compilation outputs. Returns: struct that will be returned by the rule implementation. """ @@ -124,17 +139,12 @@ def compile_ts(ctx, ### Collect srcs and outputs. srcs = ctx.files.srcs - transpiled_closure_js = [] - transpiled_devmode_js = [] src_declarations = [] # d.ts found in inputs. - gen_declarations = [] # d.ts generated by the TypeScript compiler. tsickle_externs = [] # externs.js generated by tsickle, if any. has_sources = False - # Compile the sources, if any. (For a ts_declaration rule this will - # type-check the d.ts sources and potentially generate externs.) + # Validate the user inputs. for src in ctx.attr.srcs: - # 'x/y.ts' ==> 'x/y.js' if src.label.package != ctx.label.package: # Sources can be in sub-folders, but not in sub-packages. fail("Sources must be in the same package as the ts_library rule, " + @@ -149,10 +159,10 @@ def compile_ts(ctx, src_declarations += [f] continue - outs = _outputs(ctx, src.label, f) - transpiled_closure_js += [outs[0]] - transpiled_devmode_js += [outs[1]] - gen_declarations += [outs[2]] + outs = outputs(ctx, ctx.label) + transpiled_closure_js = outs.closure_js + transpiled_devmode_js = outs.devmode_js + gen_declarations = outs.declarations if has_sources and ctx.attr.runtime != "nodejs": # Note: setting this variable controls whether tsickle is run at all. From 3dcaded6aaa331ce369e7f8e61e59bd8df21fb10 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Mon, 21 Aug 2017 13:05:07 -0700 Subject: [PATCH 0047/1134] Update npm package name to @bazel/typescript Preparation for publishing the rules to NPM. Design: https://goo.gl/rAeYWx PiperOrigin-RevId: 165964409 --- .../github.com/bazelbuild/rules_typescript/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 0fe1149fde..f12a309bef 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -1,7 +1,7 @@ { - "name": "bazel-ts", + "name": "@bazel/typescript", "description": "Build TypeScript with Bazel", - "version": "0.0.0", + "version": "0.0.6", "dependencies": { "typescript": "2.3", "protobufjs": "5.0.0", From cf86f008807745fcde0afc5a8338351862cf5483 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Mon, 21 Aug 2017 18:00:26 -0700 Subject: [PATCH 0048/1134] Users should import from @bazel/typescript Now that we publish to @bazel/typescript on NPM, this is the more canonical ESModule import path, rather than "tsc-wrapped" which is an internal detail, and hard to tell where that comes from. PiperOrigin-RevId: 166002135 --- .../rules_typescript/internal/tsc_wrapped/BUILD.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel index a53b603bb9..17cc6f9375 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel @@ -29,7 +29,7 @@ ts_library( tsconfig = ":tsconfig.json", compiler = ":tsc", supports_workers = False, - module_name = "tsc_wrapped", + module_name = "@bazel/typescript", module_root = "index.d.ts", visibility = ["//visibility:public"], # Should just be build_bazel_rules_angular ) From 5814b2782eead485715f7e1ef84f19c310fad68b Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Tue, 22 Aug 2017 15:58:40 -0700 Subject: [PATCH 0049/1134] Remove nodejs bits from rules_typescript. These are now published separately. Their code lives at https://github.com/bazelbuild/rules_nodejs See design doc: https://goo.gl/rAeYWx PiperOrigin-RevId: 166127561 --- .../bazelbuild/rules_typescript/BUILD.bazel | 3 - .../bazelbuild/rules_typescript/README.md | 21 ++- .../bazelbuild/rules_typescript/WORKSPACE | 10 +- .../bazelbuild/rules_typescript/defs.bzl | 2 - .../examples/some_module/BUILD.bazel | 3 +- .../rules_typescript/internal/BUILD.bazel | 2 +- .../rules_typescript/internal/build_defs.bzl | 2 +- .../rules_typescript/internal/executables.bzl | 5 +- .../rules_typescript/internal/node.bzl | 115 ---------------- .../internal/node_install.bzl | 126 ------------------ .../internal/node_launcher.sh | 92 ------------- .../rules_typescript/internal/node_loader.js | 88 ------------ .../internal/tsc_wrapped/BUILD.bazel | 4 +- .../bazelbuild/rules_typescript/package.json | 2 +- 14 files changed, 32 insertions(+), 443 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/node_loader.js diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index 8e7022ebb9..cb4e4a6458 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -13,9 +13,6 @@ # limitations under the License. # The node_modules directory is created by `yarn install` -# This rule gives access for nodejs binaries to find all installed packages. -# You may need to include more files in the glob() depending on what needs to -# be loaded at runtime. # WORKAROUND for https://github.com/bazelbuild/bazel/issues/374#issuecomment-296217940 filegroup( name = "node_modules", diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 97adc1355b..5e0e8f7705 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -15,7 +15,11 @@ package(default_visibility = ["//visibility:public"]) exports_files(["tsconfig.json"]) # NOTE: this will move to node_modules/BUILD in a later release -filegroup(name = "node_modules", srcs = glob(["node_modules/**/*"])) +filegroup(name = "node_modules", srcs = glob([ + "node_modules/**/*.js", + "node_modules/**/*.d.ts", + "node_modules/**/*.json", +])) ``` Next create a `WORKSPACE` file in your project root (or edit the existing one) @@ -25,14 +29,21 @@ containing: load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( - name = "build_bazel_rules_typescript", - remote = "https://github.com/bazelbuild/rules_typescript.git", - tag = "0.0.4", # check for the latest tag when you install + name = "build_bazel_rules_nodejs", + remote = "https://github.com/bazelbuild/rules_nodejs.git", + tag = "0.0.1", # check for the latest tag when you install ) load("@build_bazel_rules_typescript//:defs.bzl", "node_repositories") -node_repositories(package_json = "//:package.json") +node_repositories(package_json = ["//:package.json"]) + + +# Include @bazel/typescript in package.json#devDependencies +local_repository( + name = "build_bazel_rules_typescript", + path = "node_modules/rules_typescript", +) ``` We recommend using the Yarn package manager, because it has a built-in command diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 187b4a254c..81bb42f650 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -14,7 +14,13 @@ workspace(name = "build_bazel_rules_typescript") -load("//:defs.bzl", "node_repositories") +git_repository( + name = "build_bazel_rules_nodejs", + remote = "https://github.com/bazelbuild/rules_nodejs", + tag = "0.0.2", +) + +load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories") # Install a hermetic version of node. # After this is run, these labels will be available: @@ -23,4 +29,4 @@ load("//:defs.bzl", "node_repositories") # @build_bazel_rules_typescript_node//:bin/npm # - The yarn package manager: # @yarn//:yarn -node_repositories(package_json = "//:package.json") +node_repositories(package_json = ["//:package.json"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl index a53c556ad0..4c29df52d2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl @@ -17,5 +17,3 @@ Users should not load files under "/internal" """ load("//internal:build_defs.bzl", "ts_library") -load("//internal:node.bzl", "nodejs_binary") -load("//internal:node_install.bzl", "node_repositories") diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/BUILD.bazel index 7440069d64..066f4fe1bf 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/BUILD.bazel @@ -14,7 +14,8 @@ package(default_visibility = ["//visibility:public"]) -load("//:defs.bzl", "ts_library", "nodejs_binary") +load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary") +load("//:defs.bzl", "ts_library") # We compile this library with the module name "sm" to make it possible to # use `import {} from 'sm';` both at type-check time (we include the mapping in diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 0c53959369..2cace7f365 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -14,4 +14,4 @@ package(default_visibility = ["//visibility:public"]) -exports_files(["node_launcher.sh", "node_loader.js", "worker_protocol.proto"]) +exports_files(["worker_protocol.proto"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index ad8259dcb5..d587d54537 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -17,7 +17,7 @@ # pylint: disable=unused-argument # pylint: disable=missing-docstring load(":common/compilation.bzl", "COMMON_ATTRIBUTES", "compile_ts", "ts_providers_dict_to_struct") -load(":executables.bzl", "get_tsc", "get_node") +load(":executables.bzl", "get_tsc") load(":common/tsconfig.bzl", "create_tsconfig") def _compile_action(ctx, inputs, outputs, config_file_path): diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl index 84321cfdb8..d7dacb4d85 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl @@ -12,11 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""node and TypeScript compiler labels. +"""TypeScript compiler label. """ def get_tsc(): return Label("//internal/tsc_wrapped:tsc_wrapped_bin") - -def get_node(): - return Label("@build_bazel_rules_typescript_node//:bin/node") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl deleted file mode 100644 index 25f4eab9b0..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node.bzl +++ /dev/null @@ -1,115 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Rules for executing programs in the nodejs runtime. -""" -load(":executables.bzl", "get_node") -load(":common/module_mappings.bzl", "module_mappings_runtime_aspect") - -def _sources_aspect_impl(target, ctx): - result = depset() - if hasattr(ctx.rule.attr, "deps"): - for dep in ctx.rule.attr.deps: - if hasattr(dep, "node_sources"): - result += dep.node_sources - if hasattr(target, "typescript"): - result += target.typescript.es5_sources - return struct(node_sources = result) - -_sources_aspect = aspect( - _sources_aspect_impl, - attr_aspects = ["deps"], -) - -def _write_loader_script(ctx): - # Generates the JavaScript snippet of module roots mappings, with each entry - # in the form: - # {module_name: /^mod_name\b/, module_root: 'path/to/mod_name'} - module_mappings = [] - for d in ctx.attr.data: - if hasattr(d, "runfiles_module_mappings"): - for [mn, mr] in d.runfiles_module_mappings.items(): - escaped = mn.replace("/", r"\/").replace(".", r"\.") - mapping = r"{module_name: /^%s\b/, module_root: '%s'}" % (escaped, mr) - module_mappings.append(mapping) - ctx.template_action( - template=ctx.file._loader_template, - output=ctx.outputs.loader, - substitutions={ - "TEMPLATED_module_roots": "\n " + ",\n ".join(module_mappings), - "TEMPLATED_entry_point": ctx.attr.entry_point, - "TEMPLATED_workspace_name": ctx.workspace_name, - }, - executable=True, - ) - -def _nodejs_binary_impl(ctx): - node = ctx.file._node - node_modules = ctx.files._node_modules - sources = depset() - for d in ctx.attr.data: - if hasattr(d, "node_sources"): - sources += d.node_sources - - _write_loader_script(ctx) - - ctx.template_action( - template=ctx.file._launcher_template, - output=ctx.outputs.executable, - substitutions={ - "TEMPLATED_node": ctx.workspace_name + "/" + node.path, - "TEMPLATED_args": " ".join(ctx.attr.args), - "TEMPLATED_script_path": "/".join([ - ctx.workspace_name, - ctx.outputs.loader.short_path, - ]), - }, - executable=True, - ) - - return struct( - runfiles = ctx.runfiles( - files = [node, ctx.outputs.loader] + node_modules + sources.to_list(), - collect_data = True, - ), - ) - -nodejs_binary = rule( - _nodejs_binary_impl, - attrs = { - "entry_point": attr.string(), - "data": attr.label_list( - allow_files = True, - cfg = "data", - aspects=[_sources_aspect, module_mappings_runtime_aspect]), - "_node": attr.label( - default = get_node(), - allow_files = True, - single_file = True), - "_node_modules": attr.label( - default = Label("@//:node_modules")), - "_launcher_template": attr.label( - default = Label("//internal:node_launcher.sh"), - allow_files = True, - single_file = True), - "_loader_template": attr.label( - default = Label("//internal:node_loader.js"), - allow_files = True, - single_file = True), - }, - executable = True, - outputs = { - "loader": "%{name}_loader.js" - }, -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl deleted file mode 100644 index e07e9f6899..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node_install.bzl +++ /dev/null @@ -1,126 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Install NodeJS when the user runs node_repositories() from their WORKSPACE. - -We fetch a specific version of Node, to ensure builds are hermetic. -We then create a repository @build_bazel_rules_typescript_node which provides the -node binary to other rules. -""" - -def _node_impl(repository_ctx): - repository_ctx.file("BUILD", content=""" -package(default_visibility = ["//visibility:public"]) -exports_files([ - "bin/node", - "bin/npm", -]) -""") - repository_ctx.file("BUILD.bazel", content=""" -package(default_visibility = ["//visibility:public"]) -exports_files([ - "bin/node", - "bin/npm", -]) -""") - - os_name = repository_ctx.os.name.lower() - if os_name.startswith("mac os"): - repository_ctx.download_and_extract( - [ - "http://mirror.bazel.build/nodejs.org/dist/v6.10.2/node-v6.10.2-darwin-x64.tar.xz", - "https://nodejs.org/dist/v6.10.2/node-v6.10.2-darwin-x64.tar.xz", - ], - stripPrefix = "node-v6.10.2-darwin-x64", - sha256 = "360b887361b2597613f18968e3fc0e920079a363d0535fc4e40532e3426fc6eb" - ) - elif os_name.find("windows") != -1: - repository_ctx.download_and_extract( - [ - "http://mirror.bazel.build/nodejs.org/dist/v6.10.2/node-v6.10.2-win-x64.zip", - "http://nodejs.org/dist/v6.10.2/node-v6.10.2-win-x64.zip", - ], - stripPrefix = "node-v6.10.2-win-x64", - sha256 = "d778ed84685c6604192cfcf40192004e27fb11c9e65c3ce4b283d90703b4192c" - ) - else: - repository_ctx.download_and_extract( - [ - "http://mirror.bazel.build/nodejs.org/dist/v6.10.2/node-v6.10.2-linux-x64.tar.xz", - "http://nodejs.org/dist/v6.10.2/node-v6.10.2-linux-x64.tar.xz", - ], - stripPrefix = "node-v6.10.2-linux-x64", - sha256 = "b519cd616b0671ab789d2645c5c026deb7e016d73a867ab4b1b8c9ceba9c3503" - ) - -_node_repo = repository_rule(_node_impl, attrs = {}) - -# def _write_node_modules_impl(ctx): - # WORKAROUND for https://github.com/bazelbuild/bazel/issues/374#issuecomment-296217940 - # Bazel does not allow labels to start with `@`, so when installing eg. the `@types/node` - # module from the @types scoped package, you'll get an error. - # The workaround is to move the rule up one level, from /node_modules to the project root. - # For now, users must instead write their own /BUILD file on setup. - - # ctx.symlink(project_dir.get_child("node_modules"), "node_modules") - # add a BUILD file inside the user's node_modules project folder - # ctx.file("installed/BUILD", """ - # filegroup(name = "node_modules", srcs = glob(["node_modules/**/*"]), visibility = ["//visibility:public"]) - # """) - -# _write_node_modules = repository_rule( -# _write_node_modules_impl, -# attrs = { "package_json": attr.label() }, -# ) - -def _yarn_impl(ctx): - # Yarn is a package manager that downloads dependencies. Yarn is an improvement over the `npm` tool in - # speed and correctness. We download a specific version of Yarn to ensure a hermetic build. - ctx.file("BUILD.bazel", """ -package(default_visibility = ["//visibility:public"]) -exports_files(['yarn.sh']) -alias(name = "yarn", actual = ":yarn.sh") -""") - ctx.file("yarn.sh", """#!/bin/bash -ROOT="$(dirname "{}")" -NODE="{}" -SCRIPT="{}" -(cd "$ROOT"; "$NODE" "$SCRIPT" "$@") -""".format( - ctx.path(ctx.attr.package_json), - ctx.path(ctx.attr._node), - ctx.path("bin/yarn.js")), executable = True) - ctx.download_and_extract( - [ - "http://mirror.bazel.build/github.com/yarnpkg/yarn/releases/download/v0.22.0/yarn-v0.22.0.tar.gz", - "https://github.com/yarnpkg/yarn/releases/download/v0.22.0/yarn-v0.22.0.tar.gz", - ], - stripPrefix = "dist", - sha256 = "e295042279b644f2bc3ea3407a2b2fb417a200d35590b0ec535422d21cf19a09" - ) - -load(":executables.bzl", "get_node") - -_yarn_repo = repository_rule( - _yarn_impl, - attrs = { - "package_json": attr.label(), - "_node": attr.label(default = get_node(), allow_files=True, single_file=True), - }, -) - -def node_repositories(package_json): - _node_repo(name = "build_bazel_rules_typescript_node") - - _yarn_repo(name = "yarn", package_json = package_json) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh deleted file mode 100644 index a3454b3619..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node_launcher.sh +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -e - -# Launcher for NodeJS applications. -# Find our runfiles tree. We need this to launch node with the correct -# entry point. -# -# Call this program X. X was generated by a genrule and may be invoked -# in many ways: -# 1a) directly by a user, with $0 in the output tree -# 1b) via 'bazel run' (similar to case 1a) -# 2) directly by a user, with $0 in X's runfiles tree -# 3) by another program Y which has a data dependency on X, with $0 in Y's -# runfiles tree -# 4a) via 'bazel test' -# 4b) case 3 in the context of a test -# 5a) by a genrule cmd, with $0 in the output tree -# 6a) case 3 in the context of a genrule -# -# For case 1, $0 will be a regular file, and the runfiles tree will be -# at $0.runfiles. -# For case 2 or 3, $0 will be a symlink to the file seen in case 1. -# For case 4, $TEST_SRCDIR should already be set to the runfiles tree by -# blaze. -# Case 5a is handled like case 1. -# Case 6a is handled like case 3. - -case "$0" in - /*) self="$0" ;; - *) self="$PWD/$0" ;; -esac - -if [[ -n "$TEST_SRCDIR" ]]; then - # Case 4, bazel has identified runfiles for us. - RUNFILES="$TEST_SRCDIR" -else - while true; do - if [[ -e "$self.runfiles" ]]; then - RUNFILES="$self.runfiles" - break - fi - - if [[ $self == *.runfiles/* ]]; then - RUNFILES="${self%%.runfiles/*}.runfiles" - # don't break; this is a last resort for case 6b - fi - - if [[ ! -L "$self" ]]; then - break; - fi - - readlink="$(readlink "$self")" - if [[ "$readlink" = /* ]]; then - self="$readlink" - else - # resolve relative symlink - self="${self%%/*}/$readlink" - fi - done - - if [[ -z "$RUNFILES" ]]; then - echo " >>>> FAIL: RUNFILES environment variable is not set. <<<<" >&2 - exit 1 - fi -fi -export RUNFILES - -ARGS=() -NODE_OPTIONS=() -ALL_ARGS=(TEMPLATED_args "$@") -for ARG in "${ALL_ARGS[@]}"; do - case "$ARG" in - --node_options=*) NODE_OPTIONS+=( "${ARG#--node_options=}" ) ;; - *) ARGS+=( "$ARG" ) - esac -done - -exec "${RUNFILES}/TEMPLATED_node" "${NODE_OPTIONS[@]}" "${RUNFILES}/TEMPLATED_script_path" "${ARGS[@]}" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/node_loader.js b/third_party/github.com/bazelbuild/rules_typescript/internal/node_loader.js deleted file mode 100644 index 67738eaae0..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/node_loader.js +++ /dev/null @@ -1,88 +0,0 @@ -/** - * @fileoverview Patched NodeJS module loader for bazel. This template is - * expanded to contain module name -> path mappings and then patches the - * NodeJS require() function to substitute the appropriate paths. - * - * @see https://github.com/nodejs/node/blob/master/lib/module.js - */ -'use strict'; -var path = require('path'); - -/** - * The module roots as pairs of a RegExp to match the require path, and a - * module_root to substitute for the require path. - * @type {!Array<{module_name: RegExp, module_root: string}>} - */ -var MODULE_ROOTS = [TEMPLATED_module_roots]; - -function resolveToModuleRoot(path) { - if (!path) { - throw new Error('resolveToModuleRoot missing path: ' + path); - } - - var match; - var lengthOfMatch = 0; - var matchedEntry; - for (var i = 0; i < MODULE_ROOTS.length; i++) { - var m = MODULE_ROOTS[i]; - var p = path.replace(m.module_name, m.module_root); - // Longest regex wins when multiple match - var len = m.module_name.toString().length; - if (p !== path && len > lengthOfMatch) { - lengthOfMatch = len; - match = p; - matchedEntry = m; - } - } - if (match) { - return match; - } - return null; -} - -function runfilesDir() { - return process.env.RUNFILES || process.env.TEST_SRCDIR; -} - -var originalResolveFilename = module.constructor._resolveFilename; -module.constructor._resolveFilename = - function(request, parent) { - try { - return originalResolveFilename(request, parent); - } catch (e) { - } - try { - return originalResolveFilename(path.join(runfilesDir(), request), parent); - } catch (e) { - } - try { - return originalResolveFilename( - path.join( - runfilesDir(), 'TEMPLATED_workspace_name', 'node_modules', request), - parent); - } catch (e) { - } - - var moduleRoot = resolveToModuleRoot(request); - if (moduleRoot) { - var moduleRootInRunfiles = path.join(runfilesDir(), moduleRoot); - var filename = module.constructor._findPath(moduleRootInRunfiles, []); - if (!filename) { - throw new Error(`No file ${request} found in module root ${moduleRoot}`); - } - return filename; - } -} - -if (require.main === module) { - // Set the actual entry point in the arguments list. - // argv[0] == node, argv[1] == entry point. - // NB: entry_point below is replaced during the build process. - var mainScript = process.argv[1] = 'TEMPLATED_entry_point'; - try { - module.constructor._load(mainScript, this, /*isMain=*/true); - } catch (e) { - console.error('failed to load main ', e.stack || e); - process.exit(1); - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel index 17cc6f9375..38b10218dc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel @@ -13,7 +13,7 @@ # limitations under the License. load("//:defs.bzl", "ts_library") -load("//internal:node.bzl", "nodejs_binary") +load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary") # Vanilla typescript compiler: run the tsc.js binary distributed by TypeScript nodejs_binary( @@ -31,7 +31,7 @@ ts_library( supports_workers = False, module_name = "@bazel/typescript", module_root = "index.d.ts", - visibility = ["//visibility:public"], # Should just be build_bazel_rules_angular + visibility = ["//visibility:public"], ) # Other ts_library rules will use this custom compiler, which calls the diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index f12a309bef..c60dad26c1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,12 +3,12 @@ "description": "Build TypeScript with Bazel", "version": "0.0.6", "dependencies": { + "@types/node": "7.0.18", "typescript": "2.3", "protobufjs": "5.0.0", "tsickle": "0.23.6" }, "devDependencies": { - "@types/node": "^7.0.18", "clang-format": "1.0.49" } } From cd5ba321a4c3c6e24eeb05cae1bd001926796943 Mon Sep 17 00:00:00 2001 From: Vinicius Fortuna Date: Thu, 24 Aug 2017 17:50:39 -0400 Subject: [PATCH 0050/1134] Fix loading of @build_bazel_rules_nodejs --- third_party/github.com/bazelbuild/rules_typescript/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 5e0e8f7705..33861e8400 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -34,7 +34,7 @@ git_repository( tag = "0.0.1", # check for the latest tag when you install ) -load("@build_bazel_rules_typescript//:defs.bzl", "node_repositories") +load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories") node_repositories(package_json = ["//:package.json"]) From 5456a2dc784b4d28b25186130bd64bbfeca62e01 Mon Sep 17 00:00:00 2001 From: Vinicius Fortuna Date: Thu, 24 Aug 2017 18:01:26 -0400 Subject: [PATCH 0051/1134] Fix local_repository --- third_party/github.com/bazelbuild/rules_typescript/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 33861e8400..a6457a08bf 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -42,7 +42,7 @@ node_repositories(package_json = ["//:package.json"]) # Include @bazel/typescript in package.json#devDependencies local_repository( name = "build_bazel_rules_typescript", - path = "node_modules/rules_typescript", + path = "node_modules/@bazel/typescript", ) ``` From f3ebe000a8b130d7139c1fe31f07f73bc8039908 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 25 Aug 2017 08:15:48 -0700 Subject: [PATCH 0052/1134] Merge #27: Minor fixes to README Closes #27 PiperOrigin-RevId: 166478250 --- third_party/github.com/bazelbuild/rules_typescript/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index a6457a08bf..4b2c21ea51 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -31,7 +31,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "build_bazel_rules_nodejs", remote = "https://github.com/bazelbuild/rules_nodejs.git", - tag = "0.0.1", # check for the latest tag when you install + tag = "0.0.2", # check for the latest tag when you install ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories") From c9ba7b7f5d9e2856600103b0e9bb02f494b37d95 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Wed, 30 Aug 2017 10:39:45 -0700 Subject: [PATCH 0053/1134] Update rules_nodejs to 0.0.4 for compatibility with Bazel 0.6+ PiperOrigin-RevId: 167014589 --- third_party/github.com/bazelbuild/rules_typescript/WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 81bb42f650..725a54106f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -17,7 +17,7 @@ workspace(name = "build_bazel_rules_typescript") git_repository( name = "build_bazel_rules_nodejs", remote = "https://github.com/bazelbuild/rules_nodejs", - tag = "0.0.2", + tag = "0.0.4", ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories") From 1f0ee89de93cd9fdd3aca1a0f66de0d801a1cba4 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Wed, 30 Aug 2017 13:44:16 -0700 Subject: [PATCH 0054/1134] Make worker.ts usable in other repositories. PiperOrigin-RevId: 167043058 --- .../rules_typescript/internal/tsc_wrapped/index.ts | 1 + .../rules_typescript/internal/tsc_wrapped/worker.ts | 9 ++------- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts index e8e419dba9..4af815a65e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts @@ -1,3 +1,4 @@ export * from './tsconfig'; export * from './compiler_host'; export * from './file_cache'; +export * from './worker'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts index ac15550162..45df0c3f84 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts @@ -28,13 +28,8 @@ const workerpb = (function loadWorkerPb() { // let protoPath = // 'external/bazel_tools/src/main/protobuf/worker_protocol.proto'; let protoPath = 'build_bazel_rules_typescript/internal/worker_protocol.proto'; - - const protoNamespace = protobufjs.loadProtoFile({ - // RUNFILES env includes the workspace_root, see - // internal/node_launcher.sh - root: process.env['RUNFILES'], - file: protoPath, - }); + // Use node module resolution so we can find the .proto file in any of the root dirs + const protoNamespace = protobufjs.loadProtoFile(require.resolve(protoPath)); if (!protoNamespace) { throw new Error('Cannot find ' + path.resolve(protoPath)); } From c65c32d06e70efbbc25b1d8f73f335c7b521adc8 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Wed, 30 Aug 2017 17:29:27 -0700 Subject: [PATCH 0055/1134] Order the rootDirs right after parsing them from the config. It's better than making it a side-effect of constructing the CompilerHost and means that other code that shares the tsconfig.ts will get the reliable ordering as well. PiperOrigin-RevId: 167074813 --- .../rules_typescript/internal/tsc_wrapped/compiler_host.ts | 2 -- .../rules_typescript/internal/tsc_wrapped/tsconfig.ts | 7 ++++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index f27f1c698b..5f00e67073 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -33,8 +33,6 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { readonly bazelOpts: BazelOptions, private delegate: ts.CompilerHost, private fileLoader: FileLoader, private moduleResolver: ModuleResolver = ts.resolveModuleName) { - // Try longest include directories first. - this.options.rootDirs.sort((a, b) => b.length - a.length); this.relativeRoots = this.options.rootDirs.map(r => path.relative(this.options.rootDir, r)); inputFiles.forEach((f) => { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index dd2abee35e..3d076d40c6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -139,6 +139,11 @@ export function parseTsconfig( return [null, errors, {target}]; } + // Sort rootDirs with longest include directories first. + // When canonicalizing paths, we always want to strip + // `workspace/bazel-bin/file` to just `file`, not to `bazel-bin/file`. + if (options.rootDirs) options.rootDirs.sort((a, b) => b.length - a.length); + // TypeScript's parseJsonConfigFileContent returns paths that are joined, eg. // /path/to/project/bazel-out/arch/bin/path/to/package/../../../../../../path // We normalize them to remove the intermediate parent directories. @@ -147,7 +152,7 @@ export function parseTsconfig( const files = fileNames.map(f => path.normalize(f)); // The bazelOpts paths in the tsconfig are relative to - // options.rootDir (the google3 root) and aren't transformed by + // options.rootDir (the workspace root) and aren't transformed by // parseJsonConfigFileContent (because TypeScript doesn't know // about them). Transform them to also be absolute here. bazelOpts.compilationTargetSrc = From f06752e5e35f4041251e0179effad4462eaa0c9f Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Thu, 31 Aug 2017 08:15:40 -0700 Subject: [PATCH 0056/1134] Don't tell tsickle to re-write commonjs module syntax to goog.module. We don't expect bazel users to adopt Closure Library. PiperOrigin-RevId: 167139533 --- .../bazelbuild/rules_typescript/internal/common/tsconfig.bzl | 2 -- 1 file changed, 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 5d29d68d62..d12624d526 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -94,8 +94,6 @@ def create_tsconfig(ctx, files, srcs, "untyped": not getattr(ctx.attr, "tsickle_typed", False), "typeBlackListPaths": [f.path for f in type_blacklisted_declarations], - # Substitute commonjs with googmodule. - "googmodule": ctx.attr.runtime == "browser", "es5Mode": devmode_manifest != None, "manifest": devmode_manifest if devmode_manifest else "", # Explicitly tell the compiler which sources we're interested in (emitting From 52ca6d0c0a597b589728388bce5dee1e84f4927f Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Thu, 31 Aug 2017 09:49:00 -0700 Subject: [PATCH 0057/1134] Move perf_trace functionality to compilation.bzl. This allows declaring the performance traces as proper outputs, which ensures they are actually created and reported by bazel. PiperOrigin-RevId: 167149915 --- .../internal/common/compilation.bzl | 51 ++++++++++++------- .../internal/common/tsconfig.bzl | 6 --- 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 1b7ce3706f..512c03ebe1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -174,10 +174,19 @@ def compile_ts(ctx, if not is_library and not ctx.attr.generate_externs: type_blacklisted_declarations += ctx.files.srcs + # The list of output files. These are the files that are always built + # (including e.g. if you "blaze build :the_target" directly). + files = depset() + # A manifest listing the order of this rule's *.ts files (non-transitive) # Only generated if the rule has any sources. devmode_manifest = None + # Enable to produce a performance trace when compiling TypeScript to JS. + # The trace file location will be printed as a build result and can be read + # in Chrome's chrome://tracing/ UI. + perf_trace = False + if has_sources: compilation_inputs = input_declarations + extra_dts_files + srcs tsickle_externs_path = tsickle_externs[0] if tsickle_externs else None @@ -201,27 +210,36 @@ def compile_ts(ctx, # Do not produce declarations in ES6 mode, tsickle cannot produce correct # .d.ts (or even errors) from the altered Closure-style JS emit. tsconfig_es6["compilerOptions"]["declaration"] = False + outputs = transpiled_closure_js + tsickle_externs + if perf_trace: + perf_trace_file = ctx.new_file(ctx.label.name + ".es6.trace") + tsconfig_es6["bazelOptions"]["perfTracePath"] = perf_trace_file.path + outputs.append(perf_trace_file) + files += [perf_trace_file] ctx.file_action(output=tsconfig_json_es6, content=json_marshal(tsconfig_es6)) inputs = compilation_inputs + [tsconfig_json_es6] - outputs = transpiled_closure_js + tsickle_externs compile_action(ctx, inputs, outputs, tsconfig_json_es6.path) devmode_manifest = ctx.new_file(ctx.label.name + ".es5.MF") tsconfig_json_es5 = ctx.new_file(ctx.label.name + "_es5_tsconfig.json") - ctx.file_action(output=tsconfig_json_es5, content=json_marshal( - tsc_wrapped_tsconfig( - ctx, - compilation_inputs, - srcs, - jsx_factory=jsx_factory, - devmode_manifest=devmode_manifest.path, - allowed_deps=allowed_deps))) - - inputs = compilation_inputs + [tsconfig_json_es5] outputs = ( transpiled_devmode_js + gen_declarations + [devmode_manifest]) + tsconfig_es5 = tsc_wrapped_tsconfig(ctx, + compilation_inputs, + srcs, + jsx_factory=jsx_factory, + devmode_manifest=devmode_manifest.path, + allowed_deps=allowed_deps) + if perf_trace: + perf_trace_file = ctx.new_file(ctx.label.name + ".es5.trace") + tsconfig_es5["bazelOptions"]["perfTracePath"] = perf_trace_file.path + outputs.append(perf_trace_file) + files += [perf_trace_file] + ctx.file_action(output=tsconfig_json_es5, content=json_marshal( + tsconfig_es5)) + inputs = compilation_inputs + [tsconfig_json_es5] devmode_compile_action(ctx, inputs, outputs, tsconfig_json_es5.path) # TODO(martinprobst): Merge the generated .d.ts files, and enforce strict @@ -244,14 +262,11 @@ def compile_ts(ctx, for dep in ctx.attr.deps: if hasattr(dep, "typescript"): declarations += dep.typescript.declarations + files += declarations - # Construct the list of output files, which are the files that are - # always built (including e.g. if you "blaze build :the_target" - # directly). If this is a ts_declaration, add tsickle_externs to the - # outputs list to force compilation of d.ts files. (tsickle externs - # are produced by running a compilation over the d.ts file and - # extracting type information.) - files = depset(declarations) + # If this is a ts_declaration, add tsickle_externs to the outputs list to + # force compilation of d.ts files. (tsickle externs are produced by running a + # compilation over the d.ts file and extracting type information.) if not is_library: files += depset(tsickle_externs) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index d12624d526..219230a9f8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -76,11 +76,6 @@ def create_tsconfig(ctx, files, srcs, # maps the entire module root. module_roots["{}/*".format(name)] = ["%s%s/*" % (p, path) for p in module_path_prefixes] - perf_trace_path = "/".join([ctx.configuration.bin_dir.path, ctx.label.package, - ctx.label.name + ".trace"]) - # TODO(alexeagle): a better way to ask for the perf trace than editing here? - perf_trace_path = "" # Comment out => receive perf trace! - # Options for running the TypeScript compiler under Bazel. # See javascript/typescript/compiler/tsc_wrapped.ts:BazelOptions. # Unlike compiler_options, the paths here are relative to the rootDir, @@ -101,7 +96,6 @@ def create_tsconfig(ctx, files, srcs, "compilationTargetSrc": [s.path for s in srcs], "disableStrictDeps": disable_strict_deps, "allowedStrictDeps": [f.path for f in allowed_deps], - "perfTracePath": perf_trace_path, "enableConformance": getattr(ctx.attr, "enable_conformance", False), } From 72587f662582ef2780763e083150df5a3574d711 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Thu, 31 Aug 2017 12:27:40 -0700 Subject: [PATCH 0058/1134] Allow constructing file caches that are fully hermetic, and move the somewhat hacky "contains node_modules" check into a separate location. This allows environments that are fully hermetic to properly cache and invalidate files loaded from node_modules. This change leaves TODOs in place to clean up the current somewhat hacky state, and improve performance by caching those .d.ts that are actually expensive (library declaration files from node_modules, e.g. `lib.d.ts`). PiperOrigin-RevId: 167173649 --- .../internal/tsc_wrapped/compiler_host.ts | 21 +++------- .../internal/tsc_wrapped/file_cache.ts | 41 +++++++++++++++++-- .../internal/tsc_wrapped/file_cache_test.ts | 4 +- .../internal/tsc_wrapped/strict_deps_test.ts | 7 +++- .../internal/tsc_wrapped/tsc_wrapped.ts | 20 +++++---- 5 files changed, 63 insertions(+), 30 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index 5f00e67073..44a2e716aa 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -3,7 +3,7 @@ import * as path from 'path'; import * as tsickle from 'tsickle'; import * as ts from 'typescript'; -import {FileLoader} from './file_cache'; +import {FileLoader, isNonHermeticInput} from './file_cache'; import * as perfTrace from './perf_trace'; import {BazelOptions} from './tsconfig'; @@ -32,6 +32,7 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { public inputFiles: string[], readonly options: ts.CompilerOptions, readonly bazelOpts: BazelOptions, private delegate: ts.CompilerHost, private fileLoader: FileLoader, + private readonly allowNonHermeticReads: boolean, private moduleResolver: ModuleResolver = ts.resolveModuleName) { this.relativeRoots = this.options.rootDirs.map(r => path.relative(this.options.rootDir, r)); @@ -77,15 +78,6 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { return result; } - /** - * Allow moduleResolution=node to behave normally. - * Since we don't require users declare their dependencies within node_modules - * we may need to read files that weren't explicit inputs. - */ - allowNonHermeticRead(filePath: string) { - return filePath.split(path.sep).indexOf('node_modules') != -1; - } - /** Avoid using tsickle on files that aren't in srcs[] */ shouldSkipTsickleProcessing(fileName: string): boolean { return this.bazelOpts.compilationTargetSrc.indexOf(fileName) === -1; @@ -93,7 +85,8 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { /** Allows suppressing warnings for specific known libraries */ shouldIgnoreWarningsForPath(filePath: string): boolean { - return this.bazelOpts.ignoreWarningPaths.some(p => !!filePath.match(new RegExp(p))); + return this.bazelOpts.ignoreWarningPaths.some( + p => !!filePath.match(new RegExp(p))); } fileNameToModuleId(fileName: string): string { @@ -180,10 +173,6 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { fileName: string, languageVersion: ts.ScriptTarget, onError?: (message: string) => void) { return perfTrace.wrap(`getSourceFile ${fileName}`, () => { - if (this.allowNonHermeticRead(fileName)) { - // TODO(alexeagle): we could add these to the cache also - return this.delegate.getSourceFile(fileName, languageVersion, onError); - } return this.fileLoader.loadFile(fileName, fileName, languageVersion); }); } @@ -236,7 +225,7 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { */ fileExists(filePath: string): boolean { // Allow moduleResolution=node to behave normally. - if (this.allowNonHermeticRead(filePath) && + if (this.allowNonHermeticReads && isNonHermeticInput(filePath) && this.delegate.fileExists(filePath)) { return true; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache.ts index 1d39811c09..176468d15f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache.ts @@ -16,6 +16,7 @@ */ import * as fs from 'fs'; +import * as path from 'path'; import * as ts from 'typescript'; import * as perfTrace from './perf_trace'; @@ -127,6 +128,14 @@ export class FileCache implements LRUCache { this.debug('Loaded', filePath, 'dropped', dropped, 'cache entries'); } + /** + * Returns true if the given filePath was reported as an input up front and + * has a known cache digest. FileCache can only cache known files. + */ + isKnownInput(filePath: string): boolean { + return !!this.lastDigests[filePath]; + } + inCache(filePath: string): boolean { return !!this.getCache(filePath); } @@ -140,8 +149,13 @@ export class FileCache implements LRUCache { } printStats() { - const percentage = - (this.cacheStats.hits / this.cacheStats.reads * 100).toFixed(2); + let percentage; + if (this.cacheStats.reads === 0) { + percentage = 100.00; // avoid "NaN %" + } else { + percentage = + (this.cacheStats.hits / this.cacheStats.reads * 100).toFixed(2); + } this.debug('Cache stats:', percentage, '% hits', this.cacheStats); } @@ -168,6 +182,16 @@ export class FileCache implements LRUCache { }; } +/** + * Returns true if the given filePath points to a file that should be read + * non-hermetically. + */ +export function isNonHermeticInput(filePath: string) { + // TODO(alexeagle): the indexOf(node_modules) is a hack, find a better + // way to identify these undeclared inputs. + return filePath.split(path.sep).indexOf('node_modules') !== -1; +} + export interface FileLoader { loadFile(fileName: string, filePath: string, langVer: ts.ScriptTarget): ts.SourceFile; @@ -177,7 +201,9 @@ export interface FileLoader { * Load a source file from disk, or possibly return a cached version. */ export class CachedFileLoader implements FileLoader { - constructor(private cache: FileCache) {} + constructor( + private readonly cache: FileCache, + private readonly allowNonHermeticReads: boolean) {} loadFile(fileName: string, filePath: string, langVer: ts.ScriptTarget): ts.SourceFile { @@ -185,6 +211,15 @@ export class CachedFileLoader implements FileLoader { if (!sourceFile) { const sourceText = fs.readFileSync(filePath, 'utf8'); sourceFile = ts.createSourceFile(fileName, sourceText, langVer, true); + if (this.allowNonHermeticReads && !this.cache.isKnownInput(filePath) && + isNonHermeticInput(filePath)) { + // The cache can only hold and invalidate files with known digests. Non- + // hermetic inputs thus cannot be cached. + // TODO(alexeagle): this includes the expensive-to-check lib.d.ts & co, + // which will largely defeat the performance advantages of this cache. + // Find a way to express files from node_modules as a proper input. + return sourceFile; + } const entry = { digest: this.cache.getLastDigest(filePath), value: sourceFile diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache_test.ts index 886d99447c..e47a533f13 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache_test.ts @@ -33,7 +33,7 @@ describe('FileCache', () => { it('caches files', () => { const fileCache = new FileCache(fauxDebug); - const fileLoader = new CachedFileLoader(fileCache); + const fileLoader = new CachedFileLoader(fileCache, true); const fn = writeTempFile('file_cache_test', 'let x: number = 12;\n'); invalidateFileCache(fileCache, fn); @@ -52,7 +52,7 @@ describe('FileCache', () => { it('caches in LRU order', () => { let free = false; const fileCache = new FileCache(fauxDebug); - const fileLoader = new CachedFileLoader(fileCache); + const fileLoader = new CachedFileLoader(fileCache, true); fileCache.shouldFreeMemory = () => free; function load(name: string, fn: string) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts index 7c0507c58d..9cf7445dd3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts @@ -18,7 +18,6 @@ // taze: jasmine from //third_party/javascript/typings/jasmine:jasmine_without_externs import * as ts from 'typescript'; -import {format as formatDiagnostics} from './g3_diagnostics'; import {checkModuleDeps} from './strict_deps'; describe('strict deps', () => { @@ -54,7 +53,11 @@ describe('strict deps', () => { const p = ts.createProgram(Object.keys(files), options, host); const diags = [...ts.getPreEmitDiagnostics(p)]; if (diags.length > 0) { - throw new Error(formatDiagnostics('//test:pkg', diags)); + throw new Error(ts.formatDiagnostics(diags, { + getCurrentDirectory: () => ts.sys.getCurrentDirectory(), + getNewLine: () => ts.sys.newLine, + getCanonicalFileName: (f: string) => f, + })); } return p; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 435f91b947..a69556ed24 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -4,6 +4,7 @@ import * as ts from 'typescript'; import {CompilerHost} from './compiler_host'; import {CachedFileLoader, FileCache, FileLoader, UncachedFileLoader} from './file_cache'; +import {wrap} from './perf_trace'; import {BazelOptions, parseTsconfig} from './tsconfig'; import {debug, log, runAsWorker, runWorkerLoop} from './worker'; @@ -26,7 +27,6 @@ export function main(args) { // The one FileCache instance used in this process. const fileCache = new FileCache(debug); - function format(target: string, diagnostics: ts.Diagnostic[]): string { const diagnosticsHost: ts.FormatDiagnosticsHost = { ...ts.sys, @@ -48,8 +48,9 @@ function runOneBuild( fileCache.resetStats(); fileCache.traceStats(); let fileLoader: FileLoader; + const allowNonHermeticReads = true; if (inputs) { - fileLoader = new CachedFileLoader(fileCache); + fileLoader = new CachedFileLoader(fileCache, allowNonHermeticReads); // Resolve the inputs to absolute paths to match TypeScript internals const resolvedInputs: {[path: string]: string} = {}; for (const key of Object.keys(inputs)) { @@ -77,7 +78,8 @@ function runOneBuild( ts.createCompilerHost({target: ts.ScriptTarget.ES5}); const compilerHost = new CompilerHost( - files, options, bazelOpts, compilerHostDelegate, fileLoader); + files, options, bazelOpts, compilerHostDelegate, fileLoader, + allowNonHermeticReads); const program = ts.createProgram(files, options, compilerHost); fileCache.traceStats(); @@ -89,11 +91,15 @@ function runOneBuild( // These checks mirror ts.getPreEmitDiagnostics, with the important // exception that if you call program.getDeclarationDiagnostics() it somehow // corrupts the emit. - diagnostics.push(...program.getOptionsDiagnostics()); - diagnostics.push(...program.getGlobalDiagnostics()); + wrap(`global diagnostics`, () => { + diagnostics.push(...program.getOptionsDiagnostics()); + diagnostics.push(...program.getGlobalDiagnostics()); + }); for (const sf of program.getSourceFiles().filter(isCompilationTarget)) { - diagnostics.push(...program.getSyntacticDiagnostics(sf)); - diagnostics.push(...program.getSemanticDiagnostics(sf)); + wrap(`check ${sf.fileName}`, () => { + diagnostics.push(...program.getSyntacticDiagnostics(sf)); + diagnostics.push(...program.getSemanticDiagnostics(sf)); + }); } if (diagnostics.length > 0) { console.error(format(bazelOpts.target, diagnostics)); From 1a290856aaa4c4cce474dc2447f051f68c7c4c7f Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Thu, 31 Aug 2017 13:17:29 -0700 Subject: [PATCH 0059/1134] Expose a helper function to generate import-ordered manifest files from tsickle outputs. PiperOrigin-RevId: 167180583 --- .../internal/tsc_wrapped/index.ts | 1 + .../internal/tsc_wrapped/manifest.ts | 54 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts index 4af815a65e..8b9bda123a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts @@ -2,3 +2,4 @@ export * from './tsconfig'; export * from './compiler_host'; export * from './file_cache'; export * from './worker'; +export * from './manifest'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts new file mode 100644 index 0000000000..2e9a8daba2 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts @@ -0,0 +1,54 @@ +/** + * @fileoverview utilities to construct a static graph representation of the + * import graph discovered in typescript inputs. + */ + +import * as tsickle from 'tsickle'; + +/** + * Recursively walk the import graph provided by tsickle, populating entries + * in the result map such that if foo imports bar, foo will appear before bar + * in the map. + */ +function topologicalSort( + result: tsickle.FileMap, current: string, + modulesManifest: tsickle.ModulesManifest, + visiting: tsickle.FileMap) { + const referencedModules = modulesManifest.getReferencedModules(current); + if (!referencedModules) return; // not in the local set of sources. + for (const referencedModule of referencedModules) { + const referencedFileName = + modulesManifest.getFileNameFromModule(referencedModule); + if (!referencedFileName) continue; // Ambient modules. + if (!result[referencedFileName]) { + if (visiting[referencedFileName]) { + const path = current + ' -> ' + Object.keys(visiting).join(' -> '); + throw new Error('Cyclical dependency between files:\n' + path); + } + visiting[referencedFileName] = true; + topologicalSort(result, referencedFileName, modulesManifest, visiting); + delete visiting[referencedFileName]; + } + } + result[current] = true; +} + +/** + * Create the contents of the .es5.MF file which propagates partial ordering of + * the import graph to later actions. + * Each line in the resulting text corresponds with a workspace-relative file + * path, and the lines are ordered to match the expected load order in a + * browser. + */ +export function constructManifest( + modulesManifest: tsickle.ModulesManifest, + host: {flattenOutDir: (f: string) => string}): string { + const result: tsickle.FileMap = {}; + for (const file of modulesManifest.fileNames) { + topologicalSort(result, file, modulesManifest, {}); + } + + // NB: The object literal maintains insertion order. + return Object.keys(result).map(fn => host.flattenOutDir(fn)).join('\n') + + '\n'; +} From 8a8e78b797fcaf2e1e36d8fdb115a7f10e42fc9b Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 1 Sep 2017 10:31:24 -0700 Subject: [PATCH 0060/1134] PiperOrigin-RevId: 167292738 --- .../rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index a69556ed24..49bb2a9bed 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -29,7 +29,7 @@ const fileCache = new FileCache(debug); function format(target: string, diagnostics: ts.Diagnostic[]): string { const diagnosticsHost: ts.FormatDiagnosticsHost = { - ...ts.sys, + getCurrentDirectory: () => ts.sys.getCurrentDirectory(), getNewLine: () => ts.sys.newLine, getCanonicalFileName: (f: string) => ts.sys.useCaseSensitiveFileNames ? f : f.toLowerCase() From af9cecf87273be4da015c4e3b07e31841c6ffd92 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Thu, 7 Sep 2017 10:07:57 -0700 Subject: [PATCH 0061/1134] Adjust to tsickle's dropping its non-transformer API. PiperOrigin-RevId: 167874655 --- .../internal/tsc_wrapped/compiler_host.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index 44a2e716aa..15d8de1a00 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -28,6 +28,14 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { getCancelationToken?: () => ts.CancellationToken; + googmodule: boolean; + es5Mode: boolean; + prelude: string; + untyped: boolean; + typeBlackListPaths: Set; + transformDecorators: boolean; + transformTypesToClosure: boolean; + constructor( public inputFiles: string[], readonly options: ts.CompilerOptions, readonly bazelOpts: BazelOptions, private delegate: ts.CompilerHost, @@ -47,6 +55,14 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { if (delegate && delegate.getCancellationToken) { this.getCancelationToken = delegate.getCancellationToken.bind(delegate); } + + this.googmodule = bazelOpts.googmodule; + this.es5Mode = bazelOpts.es5Mode; + this.prelude = bazelOpts.prelude; + this.untyped = bazelOpts.untyped; + this.typeBlackListPaths = new Set(bazelOpts.typeBlackListPaths); + this.transformDecorators = bazelOpts.tsickle; + this.transformTypesToClosure = bazelOpts.tsickle; } /** From c462e46b7ded6c5851ad11e26b6f587a82be57e8 Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 8 Sep 2017 09:13:51 -0700 Subject: [PATCH 0062/1134] @bazel/typescript now depends on TypeScript 2.4 PiperOrigin-RevId: 168004278 --- .../github.com/bazelbuild/rules_typescript/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index c60dad26c1..b2216fe52e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -1,12 +1,12 @@ { "name": "@bazel/typescript", "description": "Build TypeScript with Bazel", - "version": "0.0.6", + "version": "0.1.0", "dependencies": { "@types/node": "7.0.18", - "typescript": "2.3", + "typescript": "2.4.x", "protobufjs": "5.0.0", - "tsickle": "0.23.6" + "tsickle": "0.24.x" }, "devDependencies": { "clang-format": "1.0.49" From 85f865b836969d4ff4b630d87fec939cb5c06b7c Mon Sep 17 00:00:00 2001 From: Typescript Team Date: Fri, 8 Sep 2017 14:35:18 -0700 Subject: [PATCH 0063/1134] Expose a target //:foo_tsconfig.json for a ts_library at //:foo PiperOrigin-RevId: 168047566 --- .../rules_typescript/internal/build_defs.bzl | 3 + .../internal/common/compilation.bzl | 63 +++++++++---------- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index d587d54537..092fb31ec8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -148,4 +148,7 @@ ts_library = rule( # root BUILD file. "node_modules": attr.label(default = Label("@//:node_modules")), }), + outputs = { + "tsconfig": "%{name}_tsconfig.json" + } ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 512c03ebe1..7f21448935 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -187,40 +187,39 @@ def compile_ts(ctx, # in Chrome's chrome://tracing/ UI. perf_trace = False - if has_sources: - compilation_inputs = input_declarations + extra_dts_files + srcs - tsickle_externs_path = tsickle_externs[0] if tsickle_externs else None + compilation_inputs = input_declarations + extra_dts_files + srcs + tsickle_externs_path = tsickle_externs[0] if tsickle_externs else None - # Calculate allowed dependencies for strict deps enforcement. - allowed_deps = srcs[:] # A target's sources may depend on each other. - for dep in ctx.attr.deps: - if hasattr(dep, "typescript"): - allowed_deps += dep.typescript.declarations - allowed_deps += extra_dts_files - - tsconfig_json_es6 = ctx.new_file(ctx.label.name + "_tsconfig.json") - tsconfig_es6 = tsc_wrapped_tsconfig( - ctx, - compilation_inputs, - srcs, - jsx_factory=jsx_factory, - tsickle_externs=tsickle_externs_path, - type_blacklisted_declarations=type_blacklisted_declarations, - allowed_deps=allowed_deps) - # Do not produce declarations in ES6 mode, tsickle cannot produce correct - # .d.ts (or even errors) from the altered Closure-style JS emit. - tsconfig_es6["compilerOptions"]["declaration"] = False - outputs = transpiled_closure_js + tsickle_externs - if perf_trace: - perf_trace_file = ctx.new_file(ctx.label.name + ".es6.trace") - tsconfig_es6["bazelOptions"]["perfTracePath"] = perf_trace_file.path - outputs.append(perf_trace_file) - files += [perf_trace_file] - ctx.file_action(output=tsconfig_json_es6, - content=json_marshal(tsconfig_es6)) + # Calculate allowed dependencies for strict deps enforcement. + allowed_deps = srcs[:] # A target's sources may depend on each other. + for dep in ctx.attr.deps: + if hasattr(dep, "typescript"): + allowed_deps += dep.typescript.declarations + allowed_deps += extra_dts_files + + tsconfig_es6 = tsc_wrapped_tsconfig( + ctx, + compilation_inputs, + srcs, + jsx_factory=jsx_factory, + tsickle_externs=tsickle_externs_path, + type_blacklisted_declarations=type_blacklisted_declarations, + allowed_deps=allowed_deps) + # Do not produce declarations in ES6 mode, tsickle cannot produce correct + # .d.ts (or even errors) from the altered Closure-style JS emit. + tsconfig_es6["compilerOptions"]["declaration"] = False + outputs = transpiled_closure_js + tsickle_externs + if perf_trace: + perf_trace_file = ctx.new_file(ctx.label.name + ".es6.trace") + tsconfig_es6["bazelOptions"]["perfTracePath"] = perf_trace_file.path + outputs.append(perf_trace_file) + files += [perf_trace_file] + ctx.file_action(output=ctx.outputs.tsconfig, + content=json_marshal(tsconfig_es6)) - inputs = compilation_inputs + [tsconfig_json_es6] - compile_action(ctx, inputs, outputs, tsconfig_json_es6.path) + if has_sources: + inputs = compilation_inputs + [ctx.outputs.tsconfig] + compile_action(ctx, inputs, outputs, ctx.outputs.tsconfig.path) devmode_manifest = ctx.new_file(ctx.label.name + ".es5.MF") tsconfig_json_es5 = ctx.new_file(ctx.label.name + "_es5_tsconfig.json") From 34ffe8a5d0974189a3846e07a66e210e10f2af82 Mon Sep 17 00:00:00 2001 From: Paul Johnston Date: Wed, 13 Sep 2017 15:53:57 -0700 Subject: [PATCH 0064/1134] Set declarationDir equal to outDir Explicitly set/override the users declarationDir setting to suppress *.d.ts files from being emitted in a non-predicatable fashion. Fixes #32 Closes #33 PiperOrigin-RevId: 168608369 --- .../github.com/bazelbuild/rules_typescript/README.md | 6 +++++- .../rules_typescript/internal/common/compilation.bzl | 1 + .../rules_typescript/internal/common/tsconfig.bzl | 4 ++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 4b2c21ea51..04daede38f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -78,7 +78,11 @@ Then build it: `bazel build //path/to/package:target` The resulting `.d.ts` file paths will be printed. Additionally, the `.js` -outputs from TypeScript will be written to disk, next to the `.d.ts` files. +outputs from TypeScript will be written to disk, next to the `.d.ts` files 1. + +> 1 The +> [declarationDir](https://www.typescriptlang.org/docs/handbook/compiler-options.html) +> compiler option will be silently overwritten if present. ## Notes diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 7f21448935..c6d4ec9e98 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -208,6 +208,7 @@ def compile_ts(ctx, # Do not produce declarations in ES6 mode, tsickle cannot produce correct # .d.ts (or even errors) from the altered Closure-style JS emit. tsconfig_es6["compilerOptions"]["declaration"] = False + tsconfig_es6["compilerOptions"].pop("declarationDir") outputs = transpiled_closure_js + tsickle_externs if perf_trace: perf_trace_file = ctx.new_file(ctx.label.name + ".es6.trace") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 219230a9f8..2e12e04e07 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -156,6 +156,10 @@ def create_tsconfig(ctx, files, srcs, "noEmitOnError": False, "declaration": True, + + # We don't support this compiler option (See github #32), so + # always emit declaration files in the same location as outDir. + "declarationDir": "/".join([workspace_path, outdir_path]), "stripInternal": True, # Embed source maps and sources in .js outputs From 38ef2c4308866a37cfee3019ea495c35a51b10ca Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Fri, 15 Sep 2017 12:29:20 -0700 Subject: [PATCH 0065/1134] emit ESmodules for es6 target Fixes #21 Closes #37 PiperOrigin-RevId: 168871515 --- .../bazelbuild/rules_typescript/.bazelrc | 1 + .../examples/es6_output/BUILD.bazel | 34 +++++++++++++++++++ .../examples/es6_output/es6_consumer.bzl | 34 +++++++++++++++++++ .../examples/es6_output/es6_output_test.sh | 18 ++++++++++ .../examples/es6_output/greeter.ts | 6 ++++ .../examples/es6_output/main.ts | 3 ++ .../rules_typescript/internal/build_defs.bzl | 2 ++ 7 files changed, 98 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_consumer.bzl create mode 100755 third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_output_test.sh create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/greeter.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/main.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/.bazelrc index cb5e610e72..1e21eb57a3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelrc +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelrc @@ -1 +1,2 @@ build --strategy=TypeScriptCompile=worker +test --test_output=errors diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/BUILD.bazel new file mode 100644 index 0000000000..2b3a2cc72f --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/BUILD.bazel @@ -0,0 +1,34 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +package(default_visibility = ["//visibility:public"]) + +load("//:defs.bzl", "ts_library") +load(":es6_consumer.bzl", "es6_consumer") + +ts_library( + name = "es6_output_lib", + srcs = glob(["*.ts"]), +) + +es6_consumer( + name = "es6_output", + deps = [":es6_output_lib"], +) + +sh_test( + name = "es6_output_test", + srcs = ["es6_output_test.sh"], + data = [":es6_output"], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_consumer.bzl b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_consumer.bzl new file mode 100644 index 0000000000..a004942ac0 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_consumer.bzl @@ -0,0 +1,34 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Example of a rule that requires ES6 inputs. +""" + +def _es6_consumer(ctx): + sources = depset() + for d in ctx.attr.deps: + if hasattr(d, "typescript"): + sources += d.typescript.es6_sources + + return [DefaultInfo( + files = sources, + runfiles = ctx.runfiles(sources.to_list()), + )] + +es6_consumer = rule( + implementation = _es6_consumer, + attrs = { + "deps": attr.label_list() + } +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_output_test.sh b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_output_test.sh new file mode 100755 index 0000000000..b932eacaf2 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_output_test.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -e + +# should not down-level ES2015 syntax, eg. `class` +readonly GREETER_JS=$(cat $TEST_SRCDIR/build_bazel_rules_typescript/examples/es6_output/greeter.closure.js) +if [[ "$GREETER_JS" != *"class Greeter"* ]]; then + echo "Expected greeter.closure.js to contain 'class Greeter' but was" + echo "$GREETER_JS" + exit 1 +fi + +# should have native ES Module format +readonly MAIN_JS=$(cat $TEST_SRCDIR/build_bazel_rules_typescript/examples/es6_output/main.closure.js) +if [[ "$MAIN_JS" != *"import { Greeter }"* ]]; then + echo "Expected main.closure.js to contain 'import { Greeter }' but was" + echo "$MAIN_JS" + exit 1 +fi diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/greeter.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/greeter.ts new file mode 100644 index 0000000000..e417c1ec1d --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/greeter.ts @@ -0,0 +1,6 @@ +export class Greeter { + private greeting = 'hello, world'; + greet() { + return this.greeting; + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/main.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/main.ts new file mode 100644 index 0000000000..3cde759573 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/main.ts @@ -0,0 +1,3 @@ +import {Greeter} from './greeter'; + +console.log(new Greeter().greet()); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index 092fb31ec8..49fbf1c869 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -88,6 +88,8 @@ def tsc_wrapped_tsconfig(ctx, devmode_manifest=devmode_manifest, **kwargs) config["bazelOptions"]["nodeModulesPrefix"] = "node_modules" + if config["compilerOptions"]["target"] == "es6": + config["compilerOptions"]["module"] = "es2015" # If the user gives a tsconfig attribute, the generated file should extend # from the user's tsconfig. From a9b8dcc1478e6d0f99fdbc963735e132c1cf489e Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 18 Sep 2017 09:45:36 -0700 Subject: [PATCH 0066/1134] Add circle CI Test both worker mode and standalone mode (by toggling off the .bazelrc) Closes #38 PiperOrigin-RevId: 169101936 --- .../rules_typescript/.circleci/config.yml | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml diff --git a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml new file mode 100644 index 0000000000..578e448d28 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml @@ -0,0 +1,69 @@ +# Configuration file for https://circleci.com/gh/bazelbuild/rules_typescript + +# Note: YAML anchors allow an object to be re-used, reducing duplication. +# The ampersand declares an alias for an object, then later the `<<: *name` +# syntax dereferences it. +# See http://blog.daemonl.com/2016/02/yaml.html +# To validate changes, use an online parser, eg. +# http://yaml-online-parser.appspot.com/ + +# Settings common to each job +anchor_1: &job_defaults + working_directory: ~/ts + # Use a docker image with bazel already installed + docker: + - image: angular/ngcontainer:0.0.1 + +# After checkout, rebase on top of master. +# Similar to travis behavior, but not quite the same. +# See https://discuss.circleci.com/t/1662 +anchor_2: &post_checkout + post: git pull --ff-only origin "refs/pull/${CI_PULL_REQUEST//*pull\//}/merge" + +version: 2 +jobs: + build: + <<: *job_defaults + steps: + - checkout: + <<: *post_checkout + + - restore_cache: + key: rules_typescript-{{ checksum "yarn.lock" }} + - run: bazel info release + - run: bazel run @yarn//:yarn + - run: bazel build ... + - run: bazel test ... + + - save_cache: + key: rules_typescript-{{ checksum "yarn.lock" }} + paths: + - "node_modules" + + # This job tests the same stuff, but without the .bazelrc file. + # It disables worker mode, for example. + build_no_bazelrc: + <<: *job_defaults + steps: + - checkout: + <<: *post_checkout + + - restore_cache: + key: rules_typescript-{{ checksum "yarn.lock" }} + - run: bazel --bazelrc=/dev/null info release + - run: bazel --bazelrc=/dev/null run @yarn//:yarn + - run: bazel --bazelrc=/dev/null build ... + - run: bazel --bazelrc=/dev/null test ... + + - save_cache: + key: rules_typescript-{{ checksum "yarn.lock" }} + paths: + - "node_modules" + +workflows: + version: 2 + # Run the two builds in parallel, reporting separate status to github PRs. + default_workflow: + jobs: + - build + - build_no_bazelrc \ No newline at end of file From d890fd980f48e5d6c0a5d4e6bad3822aba75fe41 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Mon, 18 Sep 2017 09:54:56 -0700 Subject: [PATCH 0067/1134] Add circleCI badge to rules_typescript readme. PiperOrigin-RevId: 169103101 --- third_party/github.com/bazelbuild/rules_typescript/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 04daede38f..1c0c7334d6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -1,5 +1,7 @@ # TypeScript rules for Bazel +[![CircleCI](https://circleci.com/gh/bazelbuild/rules_typescript.svg?style=svg)](https://circleci.com/gh/bazelbuild/rules_typescript) + **WARNING: this is an early release with limited features. Breaking changes are likely. Not recommended for general use.** The TypeScript rules integrate the TypeScript compiler with Bazel. From 62ea85ef389c7335675f61738723a51c7154d562 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Tue, 19 Sep 2017 12:13:36 -0700 Subject: [PATCH 0068/1134] Switch devmode to UMD format BREAKING CHANGE: This allows faster loading in the browser (no need to transpile commonjs modules). We give each module a name (equivalent to the original TS sources using the /// directive) so that they can be concatenated together when served to the browser. Also contains a transformer workaround for an upstream UMD bug in TypeScript, which is only needed until users move to a TS release that has the fix. Closes #39 PiperOrigin-RevId: 169279495 --- .../examples/es5_output/BUILD.bazel | 25 ++++++++ .../rules_typescript/examples/es5_output/a.ts | 2 + .../rules_typescript/examples/es5_output/b.ts | 4 ++ .../examples/es5_output/es5_consumer.bzl | 34 ++++++++++ .../examples/es5_output/es5_output_test.sh | 32 ++++++++++ .../examples/es5_output/rand/BUILD.bazel | 7 ++ .../examples/es5_output/rand/rand.ts | 3 + .../rules_typescript/internal/build_defs.bzl | 5 ++ .../internal/common/tsconfig.bzl | 2 - .../internal/tsc_wrapped/compiler_host.ts | 64 ++++++++++++++++--- .../internal/tsc_wrapped/index.ts | 1 + .../internal/tsc_wrapped/tsc_wrapped.ts | 8 ++- .../umd_module_declaration_transform.ts | 55 ++++++++++++++++ 13 files changed, 229 insertions(+), 13 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/a.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/b.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_consumer.bzl create mode 100755 third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_output_test.sh create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/rand/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/rand/rand.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/umd_module_declaration_transform.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/BUILD.bazel new file mode 100644 index 0000000000..d35d8fd737 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/BUILD.bazel @@ -0,0 +1,25 @@ +load("//:defs.bzl", "ts_library") +load(":es5_consumer.bzl", "es5_consumer") + +genrule( + name = "generated_ts", + outs = ["generated.ts"], + cmd = "echo 'export const gen = 1;' > $@", +) + +ts_library( + name = "lib", + srcs = glob(["*.ts"]) + [":generated.ts"], + deps = ["//examples/es5_output/rand"], +) + +es5_consumer( + name = "es5_output", + deps = [":lib"], +) + +sh_test( + name = "es5_output_test", + srcs = ["es5_output_test.sh"], + data = [":es5_output"], +) \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/a.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/a.ts new file mode 100644 index 0000000000..52f3db31e6 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/a.ts @@ -0,0 +1,2 @@ +import {rand} from './rand/rand'; +export const a = rand(); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/b.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/b.ts new file mode 100644 index 0000000000..bcfcc37e57 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/b.ts @@ -0,0 +1,4 @@ +import {a} from './a'; +import {gen} from './generated'; + +console.log(a, gen); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_consumer.bzl b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_consumer.bzl new file mode 100644 index 0000000000..2742a87dbd --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_consumer.bzl @@ -0,0 +1,34 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Example of a rule that requires ES5 inputs. +""" + +def _es5_consumer(ctx): + sources = depset() + for d in ctx.attr.deps: + if hasattr(d, "typescript"): + sources += d.typescript.es5_sources + + return [DefaultInfo( + files = sources, + runfiles = ctx.runfiles(sources.to_list()), + )] + +es5_consumer = rule( + implementation = _es5_consumer, + attrs = { + "deps": attr.label_list() + } +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_output_test.sh b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_output_test.sh new file mode 100755 index 0000000000..eb1556e0b7 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_output_test.sh @@ -0,0 +1,32 @@ +#!/bin/bash +set -e + +# should produce named UMD modules +readonly A_JS=$(cat $TEST_SRCDIR/build_bazel_rules_typescript/examples/es5_output/a.js) +if [[ "$A_JS" != *"define(\"build_bazel_rules_typescript/examples/es5_output/a\","* ]]; then + echo "Expected a.js to declare named module, but was" + echo "$A_JS" + exit 1 +fi + +# should give a name to required modules +readonly B_JS=$(cat $TEST_SRCDIR/build_bazel_rules_typescript/examples/es5_output/b.js) +if [[ "$B_JS" != *"require(\"build_bazel_rules_typescript/examples/es5_output/a\")"* ]]; then + echo "Expected b.js to require named module a, but was" + echo "$B_JS" + exit 1 +fi + +# should give a name to required modules from other compilation unit +if [[ "$A_JS" != *"require(\"build_bazel_rules_typescript/examples/es5_output/rand/rand\")"* ]]; then + echo "Expected a.js to require named module c, but was" + echo "$A_JS" + exit 1 +fi + +# should give a name to required generated modules without bazel-bin +if [[ "$B_JS" != *"require(\"build_bazel_rules_typescript/examples/es5_output/generated\")"* ]]; then + echo "Expected b.js to require named module generated, but was" + echo "$B_JS" + exit 1 +fi diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/rand/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/rand/BUILD.bazel new file mode 100644 index 0000000000..4de88ed831 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/rand/BUILD.bazel @@ -0,0 +1,7 @@ +load("//:defs.bzl", "ts_library") + +ts_library( + name = "rand", + srcs = ["rand.ts"], + visibility = ["//examples/es5_output:__subpackages__"], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/rand/rand.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/rand/rand.ts new file mode 100644 index 0000000000..e8c5316a78 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/rand/rand.ts @@ -0,0 +1,3 @@ +export function rand(): number { + return 1; // Well, not that random... +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index 49fbf1c869..a79ffb8fb7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -90,6 +90,11 @@ def tsc_wrapped_tsconfig(ctx, config["bazelOptions"]["nodeModulesPrefix"] = "node_modules" if config["compilerOptions"]["target"] == "es6": config["compilerOptions"]["module"] = "es2015" + else: + # The "typescript.es5_sources" provider is expected to work + # in both nodejs and in browsers. + # NOTE: tsc-wrapped will always name the enclosed AMD modules + config["compilerOptions"]["module"] = "umd" # If the user gives a tsconfig attribute, the generated file should extend # from the user's tsconfig. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 2e12e04e07..20f90148fa 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -111,8 +111,6 @@ def create_tsconfig(ctx, files, srcs, # and builds are faster with the setting on. "skipDefaultLibCheck": True, - # Always produce commonjs modules (might get translated to goog.module). - "module": "commonjs", "moduleResolution": "node", "outDir": "/".join([workspace_path, outdir_path]), diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index 15d8de1a00..770e2b9f58 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -109,6 +109,21 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { return this.flattenOutDir(fileName.substring(0, fileName.lastIndexOf('.'))); } + /** + * TypeScript SourceFile's have a path with the rootDirs[i] still present, eg. + * /build/work/bazel-out/local-fastbuild/bin/path/to/file + * @return the path without any rootDirs, eg. path/to/file + */ + private rootDirsRelative(fileName: string): string { + for (const root of this.options.rootDirs) { + if (fileName.startsWith(root)) { + // rootDirs are sorted longest-first, so short-circuit the iteration + return path.relative(root, fileName); + } + } + return fileName; + } + /** * Massages file names into valid goog.module names: * - resolves relative paths to the given context @@ -135,15 +150,9 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { resolved.resolvedModule.resolvedFileName) { let resolvedFileName = resolved.resolvedModule.resolvedFileName; - // TypeScript gives us a path with the rootDirs[i] still present, eg. - // /build/work/bazel-out/local-fastbuild/bin/path/to/file - // We want path/to/file. - for (const root of this.options.rootDirs) { - if (resolvedFileName.startsWith(root)) { - resolvedFileName = path.relative(root, resolvedFileName); - break; // rootDirs are sorted longest-first - } - } + // /build/work/bazel-out/local-fastbuild/bin/path/to/file -> + // path/to/file + resolvedFileName = this.rootDirsRelative(resolvedFileName); // Set the importPath to the resolved filename minus the extension. // Extension can either be '.d.ts' or anything after the last '.'. @@ -184,12 +193,47 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { return moduleName; } + /** + * Converts file path into a valid AMD module name. + * + * An AMD module can have an arbitrary name, so that it is require'd by name + * rather than by path. See http://requirejs.org/docs/whyamd.html#namedmodules + * + * "However, tools that combine multiple modules together for performance need + * a way to give names to each module in the optimized file. For that, AMD + * allows a string as the first argument to define()" + */ + amdModuleName(sf: ts.SourceFile) { + // /build/work/bazel-out/local-fastbuild/bin/path/to/file.ts + // -> path/to/file.ts + const fileName = this.rootDirsRelative(sf.fileName); + // path/to/file.ts -> + // myWorkspace/path/to/file + return path.join( + this.bazelOpts.workspaceName, fileName.replace(/(\.d)?\.tsx?$/, '')); + } + /** Loads a source file from disk (or the cache). */ getSourceFile( fileName: string, languageVersion: ts.ScriptTarget, onError?: (message: string) => void) { return perfTrace.wrap(`getSourceFile ${fileName}`, () => { - return this.fileLoader.loadFile(fileName, fileName, languageVersion); + const sf = this.fileLoader.loadFile(fileName, fileName, languageVersion); + if (this.options.module === ts.ModuleKind.AMD || + this.options.module === ts.ModuleKind.UMD) { + const moduleName = this.amdModuleName(sf); + if (sf.moduleName === moduleName) return sf; + if (sf.moduleName) { + throw new Error( + `ERROR: ${sf.fileName} ` + + `contains a module name declaration ${sf.moduleName} ` + + `which would be overwritten by Bazel's TypeScript compiler.`); + } + // Setting the moduleName is equivalent to the original source having a + // /// directive + sf.moduleName = moduleName; + } + return sf; }); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts index 8b9bda123a..8ada3bf3f6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts @@ -3,3 +3,4 @@ export * from './compiler_host'; export * from './file_cache'; export * from './worker'; export * from './manifest'; +export * from './umd_module_declaration_transform'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 49bb2a9bed..0e76a56d18 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -6,6 +6,7 @@ import {CompilerHost} from './compiler_host'; import {CachedFileLoader, FileCache, FileLoader, UncachedFileLoader} from './file_cache'; import {wrap} from './perf_trace'; import {BazelOptions, parseTsconfig} from './tsconfig'; +import {fixUmdModuleDeclarations} from './umd_module_declaration_transform'; import {debug, log, runAsWorker, runWorkerLoop} from './worker'; export function main(args) { @@ -106,7 +107,12 @@ function runOneBuild( return false; } for (const sf of program.getSourceFiles().filter(isCompilationTarget)) { - const emitResult = program.emit(sf); + const emitResult = program.emit( + sf, /*writeFile*/ undefined, + /*cancellationToken*/ undefined, /*emitOnlyDtsFiles*/ undefined, { + after: [fixUmdModuleDeclarations( + (sf: ts.SourceFile) => compilerHost.amdModuleName(sf))] + }); diagnostics.push(...emitResult.diagnostics); } if (diagnostics.length > 0) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/umd_module_declaration_transform.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/umd_module_declaration_transform.ts new file mode 100644 index 0000000000..a50471f9cf --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/umd_module_declaration_transform.ts @@ -0,0 +1,55 @@ +/** + * @license + * Copyright 2017 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as ts from 'typescript'; + +/** + * @fileoverview + * Workaround for https://github.com/Microsoft/TypeScript/issues/18454 + * It's fixed at HEAD, so this is needed only until TypeScript 2.6. + */ + +/** + * This transformer finds AMD module definitions of the form + * define(["require", "exports"], factory); + * and inserts the moduleName as a first argument: + * define("moduleName", ["require", "exports"], factory); + */ +export function fixUmdModuleDeclarations( + moduleNamer: (sf: ts.SourceFile) => + string): ts.TransformerFactory { + return (context: ts.TransformationContext) => + (sf: ts.SourceFile): ts.SourceFile => { + const visitor = (node: ts.Node): ts.Node => { + if (node.kind === ts.SyntaxKind.CallExpression) { + const ce = node as ts.CallExpression; + if (ce.expression.kind === ts.SyntaxKind.Identifier && + (ce.expression as ts.Identifier).text === 'define' && + ce.arguments.length === 2 && + ce.arguments[1].kind === ts.SyntaxKind.Identifier && + (ce.arguments[1] as ts.Identifier).text === 'factory') { + const newArguments = + [ts.createLiteral(moduleNamer(sf)), ...ce.arguments]; + return ts.updateCall( + ce, ce.expression, ce.typeArguments, newArguments); + } + } + return ts.visitEachChild(node, visitor, context); + }; + return visitor(sf) as ts.SourceFile; + }; +} \ No newline at end of file From 674da4a551f5b7c301e1728cf66b3de2f0f66d21 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Tue, 19 Sep 2017 17:10:40 -0700 Subject: [PATCH 0069/1134] Expose a variable for the outputs expected from all ts_library-like rules. PiperOrigin-RevId: 169325369 --- .../rules_typescript/internal/common/compilation.bzl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index c6d4ec9e98..efe0cc5284 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -51,6 +51,11 @@ COMMON_ATTRIBUTES = dict(BASE_ATTRIBUTES, **{ "generate_externs": attr.bool(default = True), }) +COMMON_OUTPUTS = { + # Allow the tsconfig.json to be generated without running compile actions. + "tsconfig": "%{name}_tsconfig.json" +} + # TODO(plf): Enforce this at analysis time. def assert_js_or_typescript_deps(ctx): for dep in ctx.attr.deps: From a9f54f7271ab975714bf23aa79ac3f22bb344831 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Wed, 20 Sep 2017 17:21:51 -0700 Subject: [PATCH 0070/1134] Allow multiple tsconfig inputs to a ts_library Fixes #41 Closes #42 PiperOrigin-RevId: 169476478 --- .../bazelbuild/rules_typescript/defs.bzl | 1 + .../examples/tsconfig_extends/BUILD.bazel | 35 +++++++++++++++++++ .../tsconfig_extends/tsconfig-base.json | 5 +++ .../examples/tsconfig_extends/tsconfig.json | 4 +++ .../examples/tsconfig_extends/uses_promise.ts | 3 ++ .../rules_typescript/internal/build_defs.bzl | 9 +++-- .../rules_typescript/internal/ts_config.bzl | 31 ++++++++++++++++ 7 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/tsconfig-base.json create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/tsconfig.json create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/uses_promise.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/ts_config.bzl diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl index 4c29df52d2..5c537d6d07 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl @@ -17,3 +17,4 @@ Users should not load files under "/internal" """ load("//internal:build_defs.bzl", "ts_library") +load("//internal:ts_config.bzl", "ts_config") diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/BUILD.bazel new file mode 100644 index 0000000000..e1d13f65bf --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/BUILD.bazel @@ -0,0 +1,35 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +package(default_visibility = ["//visibility:public"]) + +load("//:defs.bzl", "ts_config", "ts_library") + +# Because our tsconfig.json has an extends property, we must also tell the +# ts_library to include the extended tsconfig file in compilations. +# The ts_library rule will generate its own tsconfig which extends from the +# src file. +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = ["tsconfig-base.json"], +) + +ts_library( + name = "tsconfig_extends", + srcs = [ + "uses_promise.ts", + ], + tsconfig = ":tsconfig", +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/tsconfig-base.json b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/tsconfig-base.json new file mode 100644 index 0000000000..b549881810 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/tsconfig-base.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "lib": ["es2015.promise", "es5"] + } +} \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/tsconfig.json new file mode 100644 index 0000000000..712de299b0 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig-base" +} + diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/uses_promise.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/uses_promise.ts new file mode 100644 index 0000000000..4d2e73b457 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/uses_promise.ts @@ -0,0 +1,3 @@ +export function hiLater(): Promise { + return Promise.resolve('hi'); +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index a79ffb8fb7..ed80d0d118 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -19,6 +19,7 @@ load(":common/compilation.bzl", "COMMON_ATTRIBUTES", "compile_ts", "ts_providers_dict_to_struct") load(":executables.bzl", "get_tsc") load(":common/tsconfig.bzl", "create_tsconfig") +load(":ts_config.bzl", "TsConfig") def _compile_action(ctx, inputs, outputs, config_file_path): externs_files = [] @@ -39,6 +40,8 @@ def _compile_action(ctx, inputs, outputs, config_file_path): if f.path.endswith(".ts") or f.path.endswith(".json")] if ctx.file.tsconfig: action_inputs += [ctx.file.tsconfig] + if TsConfig in ctx.attr.tsconfig: + action_inputs += ctx.attr.tsconfig[TsConfig].deps # One at-sign makes this a params-file, enabling the worker strategy. # Two at-signs escapes the argument so it's passed through to tsc_wrapped @@ -103,7 +106,7 @@ def tsc_wrapped_tsconfig(ctx, # this gives extra error-checking. if ctx.file.tsconfig: workspace_path = config["compilerOptions"]["rootDir"] - config["extends"] = "/".join([workspace_path, ctx.file.tsconfig.path[:-5]]) + config["extends"] = "/".join([workspace_path, ctx.file.tsconfig.path[:-len(".json")]]) return config @@ -141,14 +144,14 @@ ts_library = rule( # be portable across internal/external, so we need this attribute # internally as well. "tsconfig": - attr.label(allow_files = True, single_file=True), + attr.label(allow_files = True, single_file = True), "compiler": attr.label( default=get_tsc(), single_file=False, allow_files=True, executable=True, - cfg="host",), + cfg="host"), "supports_workers": attr.bool(default = True), # @// is special syntax for the "main" repository # The default assumes the user specified a target "node_modules" in their diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_config.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_config.bzl new file mode 100644 index 0000000000..0aa4690dde --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_config.bzl @@ -0,0 +1,31 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""The ts_config rule allows users to express tsconfig.json file groups. +""" + +TsConfig = provider() + +def _ts_config_impl(ctx): + files = depset() + files += [ctx.file.src] + return [DefaultInfo(files = files), TsConfig(deps = ctx.files.deps)] + +ts_config = rule( + implementation = _ts_config_impl, + attrs = { + "src": attr.label(allow_files = True, single_file = True, mandatory = True), + "deps": attr.label_list(allow_files = True, mandatory = True), + }, +) From 3e61e4ecb077aa6c8621e3e1318549c18b2e6232 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 21 Sep 2017 13:08:45 -0700 Subject: [PATCH 0071/1134] Only apply AMD module names to sources in the program. Fixes #44 Closes #45 PiperOrigin-RevId: 169587970 --- .../rules_typescript/examples/es5_output/b.ts | 4 +++- .../examples/es5_output/es5_output_test.sh | 7 +++++++ .../internal/tsc_wrapped/compiler_host.ts | 16 ++++++++++++++-- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/b.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/b.ts index bcfcc37e57..32621143a1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/b.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/b.ts @@ -1,4 +1,6 @@ +import * as tsickle from 'tsickle'; + import {a} from './a'; import {gen} from './generated'; -console.log(a, gen); +console.log(a, gen, tsickle.EXTERNS_HEADER); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_output_test.sh b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_output_test.sh index eb1556e0b7..c367a896c5 100755 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_output_test.sh +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_output_test.sh @@ -30,3 +30,10 @@ if [[ "$B_JS" != *"require(\"build_bazel_rules_typescript/examples/es5_output/ge echo "$B_JS" exit 1 fi + +# should not give a module name to external modules +if [[ "$B_JS" != *"require(\"tsickle\")"* ]]; then + echo "Expected b.js to require tsickle by its original name, but was" + echo "$B_JS" + exit 1 +fi diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index 770e2b9f58..9f51b409a5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -204,6 +204,9 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { * allows a string as the first argument to define()" */ amdModuleName(sf: ts.SourceFile) { + if (this.bazelOpts.compilationTargetSrc.indexOf(sf.fileName) === -1) { + return undefined; + } // /build/work/bazel-out/local-fastbuild/bin/path/to/file.ts // -> path/to/file.ts const fileName = this.rootDirsRelative(sf.fileName); @@ -222,12 +225,13 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { if (this.options.module === ts.ModuleKind.AMD || this.options.module === ts.ModuleKind.UMD) { const moduleName = this.amdModuleName(sf); - if (sf.moduleName === moduleName) return sf; + if (sf.moduleName === moduleName || !moduleName) return sf; if (sf.moduleName) { throw new Error( `ERROR: ${sf.fileName} ` + `contains a module name declaration ${sf.moduleName} ` + - `which would be overwritten by Bazel's TypeScript compiler.`); + `which would be overwritten with ${moduleName} ` + + `by Bazel's TypeScript compiler.`); } // Setting the moduleName is equivalent to the original source having a // /// directive @@ -251,6 +255,14 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { fileName: string, content: string, writeByteOrderMark: boolean, onError?: (message: string) => void, sourceFiles?: ts.SourceFile[]): void { + // Workaround https://github.com/Microsoft/TypeScript/issues/18648 + if (fileName.endsWith('.d.ts') && sourceFiles && sourceFiles.length > 0 && + sourceFiles[0].moduleName && + (this.options.module === ts.ModuleKind.AMD || + this.options.module === ts.ModuleKind.UMD)) { + content = + `/// \n${content}`; + } fileName = this.flattenOutDir(fileName); if (!this.bazelOpts.es5Mode) { // Write ES6 transpiled files to *.closure.js. From 0fafeb03ab56900592c1323c1216965c942c5b69 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Fri, 22 Sep 2017 11:39:17 -0700 Subject: [PATCH 0072/1134] Turn on --strict for tsc_wrapped compilation Fix bugs it found, in particular, the umd_module_declaration_transform failed due to undefined module name Closes #46 PiperOrigin-RevId: 169716396 --- .../internal/tsc_wrapped/compiler_host.ts | 36 +++- .../internal/tsc_wrapped/tsc_wrapped.ts | 6 +- .../internal/tsc_wrapped/tsconfig.json | 4 +- .../internal/tsc_wrapped/tsconfig.ts | 2 +- .../umd_module_declaration_transform.ts | 7 +- .../bazelbuild/rules_typescript/package.json | 5 +- .../bazelbuild/rules_typescript/yarn.lock | 186 +++++++++++++++++- 7 files changed, 225 insertions(+), 21 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index 9f51b409a5..8f7cc156c3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -12,6 +12,26 @@ export type ModuleResolver = compilerOptions: ts.CompilerOptions, host: ts.ModuleResolutionHost) => ts.ResolvedModuleWithFailedLookupLocations; +/** + * Narrows down the type of some properties from non-optional to required, so + * that we do not need to check presence before each access. + */ +export interface BazelTsOptions extends ts.CompilerOptions { + rootDirs: string[]; + rootDir: string; + outDir: string; +} + +export function narrowTsOptions(options: ts.CompilerOptions): BazelTsOptions { + if (!options.rootDirs) + throw new Error(`compilerOptions.rootDirs should be set by tsconfig.bzl`); + if (!options.rootDir) + throw new Error(`compilerOptions.rootDirs should be set by tsconfig.bzl`); + if (!options.outDir) + throw new Error(`compilerOptions.rootDirs should be set by tsconfig.bzl`); + return options as BazelTsOptions; +} + /** * CompilerHost that knows how to cache parsed files to improve compile times. */ @@ -35,13 +55,15 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { typeBlackListPaths: Set; transformDecorators: boolean; transformTypesToClosure: boolean; + private options: BazelTsOptions; constructor( - public inputFiles: string[], readonly options: ts.CompilerOptions, + public inputFiles: string[], options: ts.CompilerOptions, readonly bazelOpts: BazelOptions, private delegate: ts.CompilerHost, private fileLoader: FileLoader, private readonly allowNonHermeticReads: boolean, private moduleResolver: ModuleResolver = ts.resolveModuleName) { + this.options = narrowTsOptions(options); this.relativeRoots = this.options.rootDirs.map(r => path.relative(this.options.rootDir, r)); inputFiles.forEach((f) => { @@ -203,7 +225,7 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { * a way to give names to each module in the optimized file. For that, AMD * allows a string as the first argument to define()" */ - amdModuleName(sf: ts.SourceFile) { + amdModuleName(sf: ts.SourceFile): string|undefined { if (this.bazelOpts.compilationTargetSrc.indexOf(sf.fileName) === -1) { return undefined; } @@ -256,10 +278,10 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { onError?: (message: string) => void, sourceFiles?: ts.SourceFile[]): void { // Workaround https://github.com/Microsoft/TypeScript/issues/18648 - if (fileName.endsWith('.d.ts') && sourceFiles && sourceFiles.length > 0 && - sourceFiles[0].moduleName && - (this.options.module === ts.ModuleKind.AMD || - this.options.module === ts.ModuleKind.UMD)) { + if ((this.options.module === ts.ModuleKind.AMD || + this.options.module === ts.ModuleKind.UMD) && + fileName.endsWith('.d.ts') && sourceFiles && sourceFiles.length > 0 && + sourceFiles[0].moduleName) { content = `/// \n${content}`; } @@ -344,6 +366,6 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { } realpath(s: string): string { - return ts.sys.realpath(s); + return ts.sys.realpath!(s); } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 0e76a56d18..4d42465bb2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -9,7 +9,7 @@ import {BazelOptions, parseTsconfig} from './tsconfig'; import {fixUmdModuleDeclarations} from './umd_module_declaration_transform'; import {debug, log, runAsWorker, runWorkerLoop} from './worker'; -export function main(args) { +export function main(args: string[]) { if (runAsWorker(args)) { log('Starting TypeScript compiler persistent worker...'); runWorkerLoop(runOneBuild); @@ -74,6 +74,10 @@ function runOneBuild( console.error(format(target, errors)); return false; } + if (!parsed) { + throw new Error( + 'Impossible state: if parseTsconfig returns no errors, then parsed should be non-null'); + } const {options, bazelOpts, files} = parsed; const compilerHostDelegate = ts.createCompilerHost({target: ts.ScriptTarget.ES5}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json index 49a37699e4..07046c3586 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json @@ -1,7 +1,9 @@ { "compilerOptions": { + "strict": true, "types": [ - "node" + "node", + "source-map" ], "lib": [ "dom", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index 3d076d40c6..e1f6dfba27 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -121,7 +121,7 @@ export interface ParsedTsConfig { */ export function parseTsconfig( tsconfigFile: string, host: ts.ParseConfigHost = ts.sys): - [ParsedTsConfig, ts.Diagnostic[], {target: string}] { + [ParsedTsConfig|null, ts.Diagnostic[]|null, {target: string}] { // TypeScript expects an absolute path for the tsconfig.json file tsconfigFile = path.resolve(tsconfigFile); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/umd_module_declaration_transform.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/umd_module_declaration_transform.ts index a50471f9cf..8bb5f2d78e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/umd_module_declaration_transform.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/umd_module_declaration_transform.ts @@ -31,9 +31,12 @@ import * as ts from 'typescript'; */ export function fixUmdModuleDeclarations( moduleNamer: (sf: ts.SourceFile) => - string): ts.TransformerFactory { + string | undefined): ts.TransformerFactory { return (context: ts.TransformationContext) => (sf: ts.SourceFile): ts.SourceFile => { + const moduleName = moduleNamer(sf); + if (!moduleName) return sf; + const visitor = (node: ts.Node): ts.Node => { if (node.kind === ts.SyntaxKind.CallExpression) { const ce = node as ts.CallExpression; @@ -43,7 +46,7 @@ export function fixUmdModuleDeclarations( ce.arguments[1].kind === ts.SyntaxKind.Identifier && (ce.arguments[1] as ts.Identifier).text === 'factory') { const newArguments = - [ts.createLiteral(moduleNamer(sf)), ...ce.arguments]; + [ts.createLiteral(moduleName), ...ce.arguments]; return ts.updateCall( ce, ce.expression, ce.typeArguments, newArguments); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index b2216fe52e..09370553b8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -4,9 +4,10 @@ "version": "0.1.0", "dependencies": { "@types/node": "7.0.18", - "typescript": "2.4.x", + "@types/source-map": "^0.5.1", "protobufjs": "5.0.0", - "tsickle": "0.24.x" + "tsickle": "0.24.x", + "typescript": "2.4.x" }, "devDependencies": { "clang-format": "1.0.49" diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index 93e56b0362..a23c52aece 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -2,9 +2,24 @@ # yarn lockfile v1 -"@types/node@^7.0.18": - version "7.0.32" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.32.tgz#6afe6c66520a4c316623a14aef123908d01b4bba" +"@types/node@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" + +"@types/source-map@^0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@types/source-map/-/source-map-0.5.1.tgz#7e74db5d06ab373a712356eebfaea2fad0ea2367" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ascli@~1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" + dependencies: + colour "~0.7.1" + optjs "~3.2.2" async@^1.5.2: version "1.5.2" @@ -21,6 +36,16 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +bytebuffer@~5: + version "5.0.1" + resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" + dependencies: + long "~3" + +camelcase@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + clang-format@1.0.49: version "1.0.49" resolved "https://registry.yarnpkg.com/clang-format/-/clang-format-1.0.49.tgz#bf52f42277d41ed3618591f87145acf64aceb7e6" @@ -29,14 +54,44 @@ clang-format@1.0.49: glob "^7.0.0" resolve "^1.1.6" +cliui@^3.0.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +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" + +colour@~0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" +glob@^5.0.10: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^7.0.0: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -59,18 +114,66 @@ inherits@2: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -minimatch@^3.0.4: +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +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" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +long@~3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + +"minimatch@2 || 3", 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.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +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" + +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" + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" +optjs@~3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -79,16 +182,85 @@ path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" +protobufjs@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.0.tgz#4223063233ea96ac063ca2b554035204db524fa1" + dependencies: + ascli "~1" + bytebuffer "~5" + glob "^5.0.10" + yargs "^3.10.0" + resolve@^1.1.6: version "1.3.3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" dependencies: path-parse "^1.0.5" -typescript@2.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.4.tgz#3d38321828231e434f287514959c37a82b629f42" +source-map-support@^0.4.2: + 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@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +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" + +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" + +tsickle@0.24.x: + version "0.24.1" + resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.24.1.tgz#039343b205bf517a333b0703978892f80a7d848e" + dependencies: + minimist "^1.2.0" + mkdirp "^0.5.1" + source-map "^0.5.6" + source-map-support "^0.4.2" + +typescript@2.4.x: + version "2.4.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.4.2.tgz#f8395f85d459276067c988aa41837a8f82870844" + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +y18n@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yargs@^3.10.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" From 51e7ca20454e36e28e8d1e2de6905851f9ad6274 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Tue, 26 Sep 2017 10:54:40 -0700 Subject: [PATCH 0073/1134] Fix some tsconfig attributes that were dropped on the floor. Three of these were meant to be passed to the tsconfig.bzl#create_tsconfig via the **kwargs, because they are named parameters there: tsickle_externs type_blacklisted_declarations allowed_deps The last one jsx_factory is not accepted by that function and should be amended to the tsconfig. PiperOrigin-RevId: 170076308 --- .../bazelbuild/rules_typescript/internal/build_defs.bzl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index ed80d0d118..8e823f0f71 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -73,9 +73,6 @@ def tsc_wrapped_tsconfig(ctx, files, srcs, devmode_manifest=None, - tsickle_externs=None, - type_blacklisted_declarations=[], - allowed_deps=depset(), jsx_factory=None, **kwargs): @@ -108,6 +105,9 @@ def tsc_wrapped_tsconfig(ctx, workspace_path = config["compilerOptions"]["rootDir"] config["extends"] = "/".join([workspace_path, ctx.file.tsconfig.path[:-len(".json")]]) + if jsx_factory: + config["compilerOptions"]["jsxFactory"] = jsx_factory + return config # ************ # From aa9d8f5a6dd4911121d2c01a5307e4c4228443ed Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Wed, 27 Sep 2017 12:39:49 -0700 Subject: [PATCH 0074/1134] Add a provider that allows us to reply a typescript compile PiperOrigin-RevId: 170237225 --- .../rules_typescript/internal/common/compilation.bzl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index efe0cc5284..43c4913e36 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -223,9 +223,13 @@ def compile_ts(ctx, ctx.file_action(output=ctx.outputs.tsconfig, content=json_marshal(tsconfig_es6)) + # Parameters of this compiler invocation in case we need to replay this with different + # settings for I18N. + replay_params = None + if has_sources: inputs = compilation_inputs + [ctx.outputs.tsconfig] - compile_action(ctx, inputs, outputs, ctx.outputs.tsconfig.path) + replay_params = compile_action(ctx, inputs, outputs, ctx.outputs.tsconfig.path) devmode_manifest = ctx.new_file(ctx.label.name + ".es5.MF") tsconfig_json_es5 = ctx.new_file(ctx.label.name + "_es5_tsconfig.json") @@ -293,6 +297,7 @@ def compile_ts(ctx, "devmode_manifest": devmode_manifest, "type_blacklisted_declarations": type_blacklisted_declarations, "tsickle_externs": tsickle_externs, + "replay_params": replay_params, }, # Expose the tags so that a Skylark aspect can access them. "tags": ctx.attr.tags, From 144ed1bbc8420a3dfba5839b063ab85c6961b6b4 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Wed, 27 Sep 2017 13:41:55 -0700 Subject: [PATCH 0075/1134] Do not flatten depsets in typescript rules. PiperOrigin-RevId: 170245281 --- .../internal/common/compilation.bzl | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 43c4913e36..ff28f01be5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -76,11 +76,10 @@ def _collect_transitive_dts(ctx): for dep in ctx.attr.deps: if hasattr(dep, "typescript"): all_deps_declarations += dep.typescript.transitive_declarations - type_blacklisted_declarations += ( - dep.typescript.type_blacklisted_declarations) + type_blacklisted_declarations += dep.typescript.type_blacklisted_declarations return struct( - transitive_declarations=list(all_deps_declarations), - type_blacklisted_declarations=list(type_blacklisted_declarations) + transitive_declarations=all_deps_declarations, + type_blacklisted_declarations=type_blacklisted_declarations ) def _outputs(ctx, label): @@ -196,7 +195,8 @@ def compile_ts(ctx, tsickle_externs_path = tsickle_externs[0] if tsickle_externs else None # Calculate allowed dependencies for strict deps enforcement. - allowed_deps = srcs[:] # A target's sources may depend on each other. + allowed_deps = depset() + allowed_deps += srcs[:] # A target's sources may depend on each other. for dep in ctx.attr.deps: if hasattr(dep, "typescript"): allowed_deps += dep.typescript.declarations @@ -264,7 +264,9 @@ def compile_ts(ctx, devmode_manifest = None # Downstream rules see the .d.ts files produced or declared by this rule. - declarations = gen_declarations + src_declarations + declarations = depset() + declarations += gen_declarations + declarations += src_declarations if not srcs: # Re-export sources from deps. # TODO(b/30018387): introduce an "exports" attribute. From d6ddbb7a881b7386a07273c6930522d21da37b82 Mon Sep 17 00:00:00 2001 From: tbosch Date: Thu, 28 Sep 2017 13:54:54 -0700 Subject: [PATCH 0076/1134] Add a provider that allows us to reply a typescript compile PiperOrigin-RevId: 170392906 --- .../rules_typescript/internal/common/compilation.bzl | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index ff28f01be5..26e06546dc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -223,13 +223,9 @@ def compile_ts(ctx, ctx.file_action(output=ctx.outputs.tsconfig, content=json_marshal(tsconfig_es6)) - # Parameters of this compiler invocation in case we need to replay this with different - # settings for I18N. - replay_params = None - if has_sources: inputs = compilation_inputs + [ctx.outputs.tsconfig] - replay_params = compile_action(ctx, inputs, outputs, ctx.outputs.tsconfig.path) + compile_action(ctx, inputs, outputs, ctx.outputs.tsconfig.path) devmode_manifest = ctx.new_file(ctx.label.name + ".es5.MF") tsconfig_json_es5 = ctx.new_file(ctx.label.name + "_es5_tsconfig.json") @@ -299,7 +295,6 @@ def compile_ts(ctx, "devmode_manifest": devmode_manifest, "type_blacklisted_declarations": type_blacklisted_declarations, "tsickle_externs": tsickle_externs, - "replay_params": replay_params, }, # Expose the tags so that a Skylark aspect can access them. "tags": ctx.attr.tags, From 0cd193d1649fba7941a972f1ebf90f72a83415bf Mon Sep 17 00:00:00 2001 From: tbosch Date: Wed, 4 Oct 2017 09:36:14 -0700 Subject: [PATCH 0077/1134] Add a provider that allows us to reply a typescript compile PiperOrigin-RevId: 171020407 --- .../rules_typescript/internal/common/compilation.bzl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 26e06546dc..ff28f01be5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -223,9 +223,13 @@ def compile_ts(ctx, ctx.file_action(output=ctx.outputs.tsconfig, content=json_marshal(tsconfig_es6)) + # Parameters of this compiler invocation in case we need to replay this with different + # settings for I18N. + replay_params = None + if has_sources: inputs = compilation_inputs + [ctx.outputs.tsconfig] - compile_action(ctx, inputs, outputs, ctx.outputs.tsconfig.path) + replay_params = compile_action(ctx, inputs, outputs, ctx.outputs.tsconfig.path) devmode_manifest = ctx.new_file(ctx.label.name + ".es5.MF") tsconfig_json_es5 = ctx.new_file(ctx.label.name + "_es5_tsconfig.json") @@ -295,6 +299,7 @@ def compile_ts(ctx, "devmode_manifest": devmode_manifest, "type_blacklisted_declarations": type_blacklisted_declarations, "tsickle_externs": tsickle_externs, + "replay_params": replay_params, }, # Expose the tags so that a Skylark aspect can access them. "tags": ctx.attr.tags, From 39a3e6e147b29cdda78af8a436a99e342b338d4e Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Wed, 11 Oct 2017 14:11:29 -0700 Subject: [PATCH 0078/1134] Support deep .d.ts collection through clutz. PiperOrigin-RevId: 171872619 --- .../rules_typescript/internal/common/compilation.bzl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index ff28f01be5..6c5272a85e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -68,7 +68,8 @@ def assert_js_or_typescript_deps(ctx): "JavaScript library rules (js_library, pinto_library, etc, but " + "also proto_library and some others).\n") -def _collect_transitive_dts(ctx): +# Deep flag will be turned on with launch of b/66467516. +def _collect_transitive_dts(ctx, deep=False): all_deps_declarations = depset() type_blacklisted_declarations = depset() for extra in ctx.files._additional_d_ts: @@ -77,6 +78,9 @@ def _collect_transitive_dts(ctx): if hasattr(dep, "typescript"): all_deps_declarations += dep.typescript.transitive_declarations type_blacklisted_declarations += dep.typescript.type_blacklisted_declarations + else: + if deep and hasattr(dep, "clutz_transitive_dts"): + all_deps_declarations += dep.clutz_transitive_dts return struct( transitive_declarations=all_deps_declarations, type_blacklisted_declarations=type_blacklisted_declarations From cdb68d98eee7ada9c0ee6466825e96357d3f75d2 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Mon, 16 Oct 2017 08:58:15 -0700 Subject: [PATCH 0079/1134] Implement the optional directoryExists method in our CompilerHost Only enable this behavior when allowNonHermeticReads is set, since this option allows TypeScript to go looking around the disk which is slow on networked file systems. By implementing the method, we satisfy a check in TypeScript's getAutomaticTypeDirectiveNames https://github.com/Microsoft/TypeScript/blob/d4c037739500d9f8b42753c57806881a7cd1bd2a/src/compiler/moduleNameResolver.ts#L284 So this permits automatic inclusion of global typings from node_modules/@types. Fixes #31 PiperOrigin-RevId: 172330884 --- .../github.com/bazelbuild/rules_typescript/examples/bar.ts | 5 ++++- .../rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts index 7e251b00c2..bc878a5300 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts @@ -15,7 +15,10 @@ * limitations under the License. */ -import {greeter} from './foo'; import {Greeter} from 'examples/foo'; +// Repro for #31, should automatically discover @types/node +import * as fs from 'fs'; import {cool} from 'some-lib'; import * as ts from 'typescript'; + +import {greeter} from './foo'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 4d42465bb2..666bcf032a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -85,6 +85,11 @@ function runOneBuild( const compilerHost = new CompilerHost( files, options, bazelOpts, compilerHostDelegate, fileLoader, allowNonHermeticReads); + if (allowNonHermeticReads) { + (compilerHost as ts.CompilerHost).directoryExists = + (directoryName: string) => + compilerHostDelegate.directoryExists!(directoryName); + } const program = ts.createProgram(files, options, compilerHost); fileCache.traceStats(); From 73bb0885793b2a0defcf2c4336ccb3206fbfba7a Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Sun, 22 Oct 2017 16:47:11 -0400 Subject: [PATCH 0080/1134] Update README.md --- .../bazelbuild/rules_typescript/README.md | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 1c0c7334d6..539abd3eb9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -56,6 +56,12 @@ You can run the version Bazel has already installed: $ bazel run @yarn//:yarn ``` +Notice that the `WORKSPACE` file refers to a path in `node_modules`, which requires the `@bazel/typescript` +package is installed. You could do this with Yarn: + +```sh +$ bazel run @yarn//:yarn -- add --dev @bazel/typescript +``` ## Usage Currently, the only available rule is `ts_library` which invokes the TypeScript @@ -80,11 +86,21 @@ Then build it: `bazel build //path/to/package:target` The resulting `.d.ts` file paths will be printed. Additionally, the `.js` -outputs from TypeScript will be written to disk, next to the `.d.ts` files 1. +outputs from TypeScript will be written to disk, next to the `.d.ts` files. + +You can find the full syntax for the target (the part after `bazel build`) here: +https://docs.bazel.build/versions/master/build-ref.html#lexi + +> Some options in `tsconfig.json` are silently overridden by the Bazel compiler. +> Path-related options are controlled by Bazel to give filesystem locations of inputs and outputs, including +> those which reference dependencies. +> Module-related options are controlled so that Bazel rules can efficiently bundle the JavaScript into bundles, +> and because the standard "dev mode" JS outputs are used both in nodejs for tooling and in the browser. +> The overridden options include `outDir`, `paths`, `module`, `baseUrl`, and `declarationDir` +> See [Compiler Options], and the full tsconfig generated by Bazel at +> https://github.com/bazelbuild/rules_typescript/blob/master/internal/common/tsconfig.bzl -> 1 The -> [declarationDir](https://www.typescriptlang.org/docs/handbook/compiler-options.html) -> compiler option will be silently overwritten if present. +[Compiler Options]: https://www.typescriptlang.org/docs/handbook/compiler-options.html ## Notes From 51e3ca04ee9f5e7a0d7b8d7eb958a16144e867c8 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 16 Oct 2017 15:15:28 -0700 Subject: [PATCH 0081/1134] Internal change. PiperOrigin-RevId: 172385969 --- .../bazelbuild/rules_typescript/README.md | 24 ++++--------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 539abd3eb9..1c0c7334d6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -56,12 +56,6 @@ You can run the version Bazel has already installed: $ bazel run @yarn//:yarn ``` -Notice that the `WORKSPACE` file refers to a path in `node_modules`, which requires the `@bazel/typescript` -package is installed. You could do this with Yarn: - -```sh -$ bazel run @yarn//:yarn -- add --dev @bazel/typescript -``` ## Usage Currently, the only available rule is `ts_library` which invokes the TypeScript @@ -86,21 +80,11 @@ Then build it: `bazel build //path/to/package:target` The resulting `.d.ts` file paths will be printed. Additionally, the `.js` -outputs from TypeScript will be written to disk, next to the `.d.ts` files. - -You can find the full syntax for the target (the part after `bazel build`) here: -https://docs.bazel.build/versions/master/build-ref.html#lexi - -> Some options in `tsconfig.json` are silently overridden by the Bazel compiler. -> Path-related options are controlled by Bazel to give filesystem locations of inputs and outputs, including -> those which reference dependencies. -> Module-related options are controlled so that Bazel rules can efficiently bundle the JavaScript into bundles, -> and because the standard "dev mode" JS outputs are used both in nodejs for tooling and in the browser. -> The overridden options include `outDir`, `paths`, `module`, `baseUrl`, and `declarationDir` -> See [Compiler Options], and the full tsconfig generated by Bazel at -> https://github.com/bazelbuild/rules_typescript/blob/master/internal/common/tsconfig.bzl +outputs from TypeScript will be written to disk, next to the `.d.ts` files 1. -[Compiler Options]: https://www.typescriptlang.org/docs/handbook/compiler-options.html +> 1 The +> [declarationDir](https://www.typescriptlang.org/docs/handbook/compiler-options.html) +> compiler option will be silently overwritten if present. ## Notes From 508ae63405383a43534ba8e577a37f2387a26a28 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Tue, 17 Oct 2017 12:53:34 -0700 Subject: [PATCH 0082/1134] Upgrade rules_typescript to newest rules_nodejs. The latter supports windows now, so we can work on making typescript support it, too. PiperOrigin-RevId: 172499241 --- third_party/github.com/bazelbuild/rules_typescript/WORKSPACE | 2 +- .../rules_typescript/internal/tsc_wrapped/BUILD.bazel | 2 +- third_party/github.com/bazelbuild/rules_typescript/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 725a54106f..8edc90fdda 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -17,7 +17,7 @@ workspace(name = "build_bazel_rules_typescript") git_repository( name = "build_bazel_rules_nodejs", remote = "https://github.com/bazelbuild/rules_nodejs", - tag = "0.0.4", + tag = "0.1.11", ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel index 38b10218dc..313582384a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel @@ -46,7 +46,7 @@ nodejs_binary( # see https://github.com/bazelbuild/bazel/issues/3155#issuecomment-308156976 "//internal:worker_protocol.proto", ], - args = ["--node_options=--expose-gc"], + templated_args = ["--node_options=--expose-gc"], entry_point = "build_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js", visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 09370553b8..289e8df2be 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -1,7 +1,7 @@ { "name": "@bazel/typescript", "description": "Build TypeScript with Bazel", - "version": "0.1.0", + "version": "0.2.3", "dependencies": { "@types/node": "7.0.18", "@types/source-map": "^0.5.1", From 070d4fea49e354533f93e3cefd74df779ec52417 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 23 Oct 2017 13:44:49 -0700 Subject: [PATCH 0083/1134] Add the ability to flip a new tsickle flag in the tsconfig's bazel options. PiperOrigin-RevId: 173164301 --- .../rules_typescript/internal/common/compilation.bzl | 6 ++++-- .../rules_typescript/internal/common/tsconfig.bzl | 1 + .../rules_typescript/internal/tsc_wrapped/compiler_host.ts | 2 ++ .../rules_typescript/internal/tsc_wrapped/tsconfig.ts | 6 ++++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 6c5272a85e..e2f90ec319 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -68,8 +68,10 @@ def assert_js_or_typescript_deps(ctx): "JavaScript library rules (js_library, pinto_library, etc, but " + "also proto_library and some others).\n") -# Deep flag will be turned on with launch of b/66467516. -def _collect_transitive_dts(ctx, deep=False): +# Deep flag controls whether we grab d.ts's from ts_libraries that are imported +# by js libraries (which usually use clutz to create a single .d.ts for their +# entire set of transitive dependencies). +def _collect_transitive_dts(ctx, deep=True): all_deps_declarations = depset() type_blacklisted_declarations = depset() for extra in ctx.files._additional_d_ts: diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 20f90148fa..4228bb2cb7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -97,6 +97,7 @@ def create_tsconfig(ctx, files, srcs, "disableStrictDeps": disable_strict_deps, "allowedStrictDeps": [f.path for f in allowed_deps], "enableConformance": getattr(ctx.attr, "enable_conformance", False), + "addDtsClutzAliases": getattr(ctx.attr, "add_dts_clutz_aliases", False), } # Keep these options in sync with those in playground/playground.ts. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index 8f7cc156c3..9561b3ba5e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -55,6 +55,7 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { typeBlackListPaths: Set; transformDecorators: boolean; transformTypesToClosure: boolean; + addDtsClutzAliases: boolean; private options: BazelTsOptions; constructor( @@ -85,6 +86,7 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { this.typeBlackListPaths = new Set(bazelOpts.typeBlackListPaths); this.transformDecorators = bazelOpts.tsickle; this.transformTypesToClosure = bazelOpts.tsickle; + this.addDtsClutzAliases = bazelOpts.addDtsClutzAliases; } /** diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index e1f6dfba27..e893586b92 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -102,6 +102,12 @@ export interface BazelOptions { * List of regexes on file paths for which we suppress tsickle's warnings. */ ignoreWarningPaths: string[]; + + /** + * Whether to add aliases to the .d.ts files to add the exports to the + * ಠ_ಠ.clutz namespace. + */ + addDtsClutzAliases: true; } export interface ParsedTsConfig { From 6f304a0488f8bc27dcdca7ac0d976e24eecfc255 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Tue, 31 Oct 2017 13:33:54 -0700 Subject: [PATCH 0084/1134] Switch to TypeScript 2.5. PiperOrigin-RevId: 174083458 --- .../internal/tsc_wrapped/compiler_host.ts | 2 +- .../bazelbuild/rules_typescript/package.json | 6 +++--- .../github.com/bazelbuild/rules_typescript/yarn.lock | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index 9561b3ba5e..cff8ecd988 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -359,7 +359,7 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { return this.delegate.getDirectories(path); } - readFile(fileName: string): string { + readFile(fileName: string): string|undefined { return this.delegate.readFile(fileName); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 289e8df2be..57f08df083 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -1,13 +1,13 @@ { "name": "@bazel/typescript", "description": "Build TypeScript with Bazel", - "version": "0.2.3", + "version": "0.3.0", "dependencies": { "@types/node": "7.0.18", "@types/source-map": "^0.5.1", "protobufjs": "5.0.0", - "tsickle": "0.24.x", - "typescript": "2.4.x" + "tsickle": "0.25.x", + "typescript": "2.5.x" }, "devDependencies": { "clang-format": "1.0.49" diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index a23c52aece..25a9e31c76 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -221,18 +221,18 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -tsickle@0.24.x: - version "0.24.1" - resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.24.1.tgz#039343b205bf517a333b0703978892f80a7d848e" +tsickle@0.25.x: + version "0.25.0" + resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.25.0.tgz#4ba51e79e9333ab7baec6f374c789b0bc1dba36c" dependencies: minimist "^1.2.0" mkdirp "^0.5.1" source-map "^0.5.6" source-map-support "^0.4.2" -typescript@2.4.x: - version "2.4.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.4.2.tgz#f8395f85d459276067c988aa41837a8f82870844" +typescript@2.5.x: + version "2.5.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.3.tgz#df3dcdc38f3beb800d4bc322646b04a3f6ca7f0d" window-size@^0.1.4: version "0.1.4" From 952e2ae886a7d184945c2d58addb0512cfb7b953 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Thu, 2 Nov 2017 10:56:09 -0700 Subject: [PATCH 0085/1134] Move our bazel RC file to the best-practices location. See https://docs.bazel.build/versions/master/best-practices.html#bazelrc PiperOrigin-RevId: 174349341 --- .../bazelbuild/rules_typescript/{.bazelrc => tools/bazel.rc} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename third_party/github.com/bazelbuild/rules_typescript/{.bazelrc => tools/bazel.rc} (100%) diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/tools/bazel.rc similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/.bazelrc rename to third_party/github.com/bazelbuild/rules_typescript/tools/bazel.rc From 15ed2911062559974ac120feadc2b25083384f08 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Thu, 2 Nov 2017 13:03:18 -0700 Subject: [PATCH 0086/1134] internal change PiperOrigin-RevId: 174368531 --- .../bazelbuild/rules_typescript/internal/common/tsconfig.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 4228bb2cb7..929f7c6e58 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -96,7 +96,7 @@ def create_tsconfig(ctx, files, srcs, "compilationTargetSrc": [s.path for s in srcs], "disableStrictDeps": disable_strict_deps, "allowedStrictDeps": [f.path for f in allowed_deps], - "enableConformance": getattr(ctx.attr, "enable_conformance", False), + "enableConformance": getattr(ctx.attr, "enable_conformance", True), "addDtsClutzAliases": getattr(ctx.attr, "add_dts_clutz_aliases", False), } From a936657f98f76d2d9dc715e34123f963ec2c9b0c Mon Sep 17 00:00:00 2001 From: alexeagle Date: Thu, 2 Nov 2017 17:16:08 -0700 Subject: [PATCH 0087/1134] Adjust to a breaking change in rules_nodejs. https://github.com/bazelbuild/rules_nodejs/commit/96ecb35549098a341c9db3ce7c578ef4788b67f1#diff-c3f5cd9c76ccb895b38b4cb04332e2aa introduced a subtle breaking change. Instead of loading dependencies from the runfiles associated with the workspace declaring the rule, we now get them from the workspace calling the rule. That's better in general, but it means that nodejs_binary users need to be explicit about which node_modules to use. PiperOrigin-RevId: 174403902 --- .../rules_typescript/internal/tsc_wrapped/BUILD.bazel | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel index 313582384a..064e97f82d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel @@ -20,6 +20,8 @@ nodejs_binary( name = "tsc", data = ["@//:node_modules"], entry_point = "typescript/lib/tsc.js", + # Compile tsc_wrapped using the version of TS in this repo, not the user's + node_modules = "@build_bazel_rules_typescript//:node_modules", ) # Build our custom compiler using the vanilla one @@ -49,4 +51,10 @@ nodejs_binary( templated_args = ["--node_options=--expose-gc"], entry_point = "build_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js", visibility = ["//visibility:public"], + # Use the node_modules installed by the user. + # This lets them treat TypeScript as a "peerDependency" + # and picks up the version they installed. + # That's important so that the editor uses the same version as Bazel. + # Note: this value is the default of the attribute; just being explicit. + node_modules = "@//:node_modules", ) From 2ec13417592b274daa201bb819c5294e0625a48d Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Fri, 3 Nov 2017 11:43:25 -0700 Subject: [PATCH 0088/1134] internal change PiperOrigin-RevId: 174491323 --- .../bazelbuild/rules_typescript/internal/common/tsconfig.bzl | 1 - .../rules_typescript/internal/tsc_wrapped/tsconfig.ts | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 929f7c6e58..a216c443f6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -96,7 +96,6 @@ def create_tsconfig(ctx, files, srcs, "compilationTargetSrc": [s.path for s in srcs], "disableStrictDeps": disable_strict_deps, "allowedStrictDeps": [f.path for f in allowed_deps], - "enableConformance": getattr(ctx.attr, "enable_conformance", True), "addDtsClutzAliases": getattr(ctx.attr, "add_dts_clutz_aliases", False), } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index e893586b92..3ef9754743 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -72,8 +72,8 @@ export interface BazelOptions { /** Write a performance trace to this path. Disabled when falsy. */ perfTracePath?: string; - /** If true, enable the conformance check plugin in TSC. */ - enableConformance: boolean; + /** A list of conformance rule names that should not run on this target. */ + disabledConformanceRules: string[]; /** * An additional prelude to insert after the `goog.module` call, From 11c9be4d3b8ab6e6ced3378d4f9041e8c8c3f292 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Fri, 3 Nov 2017 12:05:05 -0700 Subject: [PATCH 0089/1134] This doesn't work when @bazel/typescript is installed under a node_modules where the typescript dep is shared with the app (hoisted above the @bazel/typescript/WORKSPACE file) Correct fix is to un-break the breaking change in rules_nodejs: https://github.com/bazelbuild/rules_nodejs/pull/48 PiperOrigin-RevId: 174494630 --- .../rules_typescript/internal/tsc_wrapped/BUILD.bazel | 8 -------- 1 file changed, 8 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel index 064e97f82d..313582384a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel @@ -20,8 +20,6 @@ nodejs_binary( name = "tsc", data = ["@//:node_modules"], entry_point = "typescript/lib/tsc.js", - # Compile tsc_wrapped using the version of TS in this repo, not the user's - node_modules = "@build_bazel_rules_typescript//:node_modules", ) # Build our custom compiler using the vanilla one @@ -51,10 +49,4 @@ nodejs_binary( templated_args = ["--node_options=--expose-gc"], entry_point = "build_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js", visibility = ["//visibility:public"], - # Use the node_modules installed by the user. - # This lets them treat TypeScript as a "peerDependency" - # and picks up the version they installed. - # That's important so that the editor uses the same version as Bazel. - # Note: this value is the default of the attribute; just being explicit. - node_modules = "@//:node_modules", ) From 2cb122a951f97aa804e0551d47088e45e2849204 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Mon, 6 Nov 2017 12:32:52 -0800 Subject: [PATCH 0090/1134] Add expected_diagnostics attribute to ts_library Introduce a mechanism to test the expected diagnostics from a compilation. This allows us to have negative test cases, for a library which should fail to compile. PiperOrigin-RevId: 174744505 --- .../internal/common/compilation.bzl | 5 + .../internal/common/tsconfig.bzl | 1 + .../internal/e2e/errorchecks/BUILD.bazel | 26 +++ .../internal/e2e/errorchecks/erroneous.ts | 1 + .../e2e/errorchecks/erroneous_decl.d.ts | 2 + .../internal/tsc_wrapped/BUILD.bazel | 31 ++-- .../internal/tsc_wrapped/diagnostics.ts | 153 ++++++++++++++++++ .../internal/tsc_wrapped/diagnostics_test.ts | 63 ++++++++ .../internal/tsc_wrapped/index.ts | 1 + .../internal/tsc_wrapped/tsc_wrapped.ts | 39 +++-- 10 files changed, 287 insertions(+), 35 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/erroneous.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/erroneous_decl.d.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics_test.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index e2f90ec319..0cc018f175 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -49,6 +49,11 @@ COMMON_ATTRIBUTES = dict(BASE_ATTRIBUTES, **{ ), # Whether to generate externs.js from any "declare" statement. "generate_externs": attr.bool(default = True), + # A list of diagnostics expected when compiling this library, in the form of + # "diagnostic:regexp", e.g. "TS1234:failed to quizzle the .* wobble". + # Useful to test for expected compilation errors. + "expected_diagnostics": attr.string_list(), + }) COMMON_OUTPUTS = { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index a216c443f6..750ada0b9a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -97,6 +97,7 @@ def create_tsconfig(ctx, files, srcs, "disableStrictDeps": disable_strict_deps, "allowedStrictDeps": [f.path for f in allowed_deps], "addDtsClutzAliases": getattr(ctx.attr, "add_dts_clutz_aliases", False), + "expectedDiagnostics": getattr(ctx.attr, "expected_diagnostics", []), } # Keep these options in sync with those in playground/playground.ts. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/BUILD.bazel new file mode 100644 index 0000000000..0f7d4e3f7c --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/BUILD.bazel @@ -0,0 +1,26 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +package(default_visibility = ["//visibility:public"]) + +load("//:defs.bzl", "ts_library") + +ts_library( + name = "erroneous", + srcs = glob(["*.ts"]), + expected_diagnostics = [ + "TS2322: Type '\"not a number\"' is not assignable to type 'number'", + "TS2304: Cannot find name 'TypeThatDoesNotExist'", + ], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/erroneous.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/erroneous.ts new file mode 100644 index 0000000000..b0a583ca5f --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/erroneous.ts @@ -0,0 +1 @@ +export const x: number = 'not a number'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/erroneous_decl.d.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/erroneous_decl.d.ts new file mode 100644 index 0000000000..c1a3b97db3 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/erroneous_decl.d.ts @@ -0,0 +1,2 @@ + +export declare class Foo { field: TypeThatDoesNotExist; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel index 313582384a..bca4002aa0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel @@ -24,14 +24,17 @@ nodejs_binary( # Build our custom compiler using the vanilla one ts_library( - name = "tsc_wrapped", - srcs = glob(["*.ts"], exclude = ["*_test.ts"]), - tsconfig = ":tsconfig.json", - compiler = ":tsc", - supports_workers = False, - module_name = "@bazel/typescript", - module_root = "index.d.ts", - visibility = ["//visibility:public"], + name = "tsc_wrapped", + srcs = glob( + ["*.ts"], + exclude = ["*_test.ts"], + ), + compiler = ":tsc", + module_name = "@bazel/typescript", + module_root = "index.d.ts", + supports_workers = False, + tsconfig = ":tsconfig.json", + visibility = ["//visibility:public"], ) # Other ts_library rules will use this custom compiler, which calls the @@ -39,14 +42,14 @@ ts_library( nodejs_binary( name = "tsc_wrapped_bin", data = [ - ":tsc_wrapped", - "@//:node_modules", + ":tsc_wrapped", + "@//:node_modules", - # Should be @bazel_tools//src/main/protobuf:worker_protocol.proto - # see https://github.com/bazelbuild/bazel/issues/3155#issuecomment-308156976 - "//internal:worker_protocol.proto", + # Should be @bazel_tools//src/main/protobuf:worker_protocol.proto + # see https://github.com/bazelbuild/bazel/issues/3155#issuecomment-308156976 + "//internal:worker_protocol.proto", ], - templated_args = ["--node_options=--expose-gc"], entry_point = "build_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js", + templated_args = ["--node_options=--expose-gc"], visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics.ts new file mode 100644 index 0000000000..7c1bcf27c0 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics.ts @@ -0,0 +1,153 @@ +/** + * @fileoverview extensions to TypeScript functionality around error handling + * (ts.Diagnostics). + */ + +import * as ts from 'typescript'; + +import {BazelOptions} from './tsconfig'; + +/** + * If the current compilation was a compilation test expecting certain + * diagnostics, filter out the expected diagnostics, and add new diagnostics + * (aka errors) for non-matched diagnostics. + */ +export function filterExpected( + bazelOpts: BazelOptions, diagnostics: ts.Diagnostic[], + formatFn = format): ts.Diagnostic[] { + if (!bazelOpts.expectedDiagnostics.length) return diagnostics; + + // The regex contains two parts: + // 1. Optional position: '\(5,1\)' + // 2. Required TS error: 'TS2000: message text.' + // Need triple escapes because the expected diagnostics that we're matching + // here are regexes, too. + const ERROR_RE = /^(?:\\\((\d*),(\d*)\\\).*)?TS(\d+):(.*)/; + const incorrectErrors = + bazelOpts.expectedDiagnostics.filter(e => !e.match(ERROR_RE)); + if (incorrectErrors.length) { + const msg = `Expected errors must match regex ${ERROR_RE}\n\t` + + `expected errors are "${incorrectErrors.join(', ')}"`; + return [{ + file: undefined!, + start: 0, + length: 0, + messageText: msg, + category: ts.DiagnosticCategory.Error, + code: 0, + }]; + } + + // ExpectedDiagnostics represents the "expected_diagnostics" users provide in + // the BUILD file. It is used for easier comparsion with the actual + // diagnostics. + interface ExpectedDiagnostics { + line: number; + column: number; + expected: string; + code: number; + regexp: RegExp; + matched: boolean; + } + + const expectedDiags: ExpectedDiagnostics[] = + bazelOpts.expectedDiagnostics.map(expected => { + const m = expected.match(/^(?:\\\((\d*),(\d*)\\\).*)?TS(\d+):(.*)$/); + if (!m) { + throw new Error( + 'Incorrect expected error, did you forget character escapes in ' + + expected); + } + const [, lineStr, columnStr, codeStr, regexp] = m; + const [line, column, code] = [lineStr, columnStr, codeStr].map(str => { + const i = Number(str); + if (Number.isNaN(i)) { + return 0; + } + return i; + }); + return { + line, + column, + expected, + code, + regexp: new RegExp(regexp), + matched: false, + }; + }); + + const unmatchedDiags = diagnostics.filter(diag => { + let line = -1; + let character = -1; + if (diag.file && diag.start) { + ({line, character} = + ts.getLineAndCharacterOfPosition(diag.file, diag.start)); + } + let matched = false; + const msg = formatFn(bazelOpts.target, [diag]); + // checkDiagMatchesExpected checks if the expected diagnostics matches the + // actual diagnostics. + const checkDiagMatchesExpected = + (expDiag: ExpectedDiagnostics, diag: ts.Diagnostic) => { + if (expDiag.code !== diag.code || msg.search(expDiag.regexp) === -1) { + return false; + } + // line and column are optional fields, only check them if they + // are explicitly specified. + // line and character are zero based. + if (expDiag.line !== 0 && expDiag.line !== line + 1) { + return false; + } + if (expDiag.column !== 0 && expDiag.column !== character + 1) { + return false; + } + return true; + }; + + for (const expDiag of expectedDiags) { + if (checkDiagMatchesExpected(expDiag, diag)) { + expDiag.matched = true; + matched = true; + // continue, one diagnostic may match multiple expected errors. + } + } + return !matched; + }); + + const unmatchedErrors = expectedDiags.filter(err => !err.matched).map(err => { + const file = ts.createSourceFile( + bazelOpts.target, '/* fake source as marker */', + ts.ScriptTarget.Latest); + const messageText = + `Expected a compilation error matching ${JSON.stringify(err.expected)}`; + return { + file, + start: 0, + length: 0, + messageText, + category: ts.DiagnosticCategory.Error, + code: err.code, + }; + }); + + return unmatchedDiags.concat(unmatchedErrors); +} + +/** + * Formats the given diagnostics. + * @param target The bazel target, e.g. //my/package:target + */ +export function format(target: string, diagnostics: ts.Diagnostic[]): string { + const diagnosticsHost: ts.FormatDiagnosticsHost = { + getCurrentDirectory: () => ts.sys.getCurrentDirectory(), + getNewLine: () => ts.sys.newLine, + // Print filenames including their relativeRoot, so they can be located on + // disk + getCanonicalFileName: (f: string) => f + }; + + let formatter = ts.formatDiagnostics; + + + return formatter(diagnostics, diagnosticsHost); +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics_test.ts new file mode 100644 index 0000000000..e360f9ff24 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics_test.ts @@ -0,0 +1,63 @@ +// taze: jasmine from //third_party/javascript/typings/jasmine:jasmine_without_externs +import * as ts from 'typescript'; + +import * as diagnostics from './diagnostics'; +import {TS_ERR_CANNOT_FIND_MODULE} from './strict_deps'; +import {BazelOptions} from './tsconfig'; + +describe('diagnostics', () => { + describe('expected diagnostics', () => { + const file = ts.createSourceFile( + 'test.ts', '/* used for testing */', ts.ScriptTarget.Latest); + function diag(code: number, messageText: string) { + const category = ts.DiagnosticCategory.Error; + return {file, code, messageText, start: 0, length: 0, category}; + } + function filter(expectedDiagnostics: string[], diags: ts.Diagnostic[]) { + const opts = { + target: '//javascript/typescript/fake:target', + expectedDiagnostics + } as BazelOptions; + return diagnostics.filterExpected(opts, diags) + .map(d => `TS${d.code}:${d.messageText}`); + } + + it('filters expected diagnostics', () => { + expect(filter(['TS1234:very.*borked'], [ + diag(1234, 'the target is very badly borked'), + diag(1234, 'the target is very sadly borked'), + ])).toEqual([]); + }); + + it('returns unmatched expected diagnostics', () => { + expect(filter( + ['TS1234:very.*borked', 'TS1234:not matching', 'TS1235:very'], + [diag(1234, 'the target is very badly borked')])) + .toEqual([ + 'TS1234:Expected a compilation error matching "TS1234:not matching"', + 'TS1235:Expected a compilation error matching "TS1235:very"', + ]); + }); + + it('returns unmatched diagnostics', () => { + expect(filter( + ['TS1234:very.*borked'], + [ + diag(1234, 'the target is very badly borked'), + diag(5678, 'the target is very badly borked'), + diag(1234, 'text not matching'), + ])) + .toEqual([ + 'TS5678:the target is very badly borked', + 'TS1234:text not matching', + ]); + }); + + it('throws when a charater is not escaped', () => { + expect(() => filter(['TS1234:unescaped \n newline'], [])) + .toThrowError( + 'Incorrect expected error, did you forget character escapes in ' + + 'TS1234:unescaped \n newline'); + }); + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts index 8ada3bf3f6..d5abad38a9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts @@ -1,5 +1,6 @@ export * from './tsconfig'; export * from './compiler_host'; +export * from './diagnostics'; export * from './file_cache'; export * from './worker'; export * from './manifest'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 666bcf032a..df121b7e46 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -3,6 +3,7 @@ import * as path from 'path'; import * as ts from 'typescript'; import {CompilerHost} from './compiler_host'; +import * as diagnostics from './diagnostics'; import {CachedFileLoader, FileCache, FileLoader, UncachedFileLoader} from './file_cache'; import {wrap} from './perf_trace'; import {BazelOptions, parseTsconfig} from './tsconfig'; @@ -28,16 +29,6 @@ export function main(args: string[]) { // The one FileCache instance used in this process. const fileCache = new FileCache(debug); -function format(target: string, diagnostics: ts.Diagnostic[]): string { - const diagnosticsHost: ts.FormatDiagnosticsHost = { - getCurrentDirectory: () => ts.sys.getCurrentDirectory(), - getNewLine: () => ts.sys.newLine, - getCanonicalFileName: (f: string) => - ts.sys.useCaseSensitiveFileNames ? f : f.toLowerCase() - }; - return ts.formatDiagnostics(diagnostics, diagnosticsHost); -} - /** * Runs a single build, returning false on failure. This is potentially called * multiple times (once per bazel request) when running as a bazel worker. @@ -71,7 +62,7 @@ function runOneBuild( const [parsed, errors, {target}] = parseTsconfig(tsconfigFile); if (errors) { - console.error(format(target, errors)); + console.error(diagnostics.format(target, errors)); return false; } if (!parsed) { @@ -97,24 +88,30 @@ function runOneBuild( function isCompilationTarget(sf: ts.SourceFile): boolean { return (bazelOpts.compilationTargetSrc.indexOf(sf.fileName) !== -1); } - const diagnostics: ts.Diagnostic[] = []; + let diags: ts.Diagnostic[] = []; // These checks mirror ts.getPreEmitDiagnostics, with the important // exception that if you call program.getDeclarationDiagnostics() it somehow // corrupts the emit. wrap(`global diagnostics`, () => { - diagnostics.push(...program.getOptionsDiagnostics()); - diagnostics.push(...program.getGlobalDiagnostics()); + diags.push(...program.getOptionsDiagnostics()); + diags.push(...program.getGlobalDiagnostics()); }); for (const sf of program.getSourceFiles().filter(isCompilationTarget)) { wrap(`check ${sf.fileName}`, () => { - diagnostics.push(...program.getSyntacticDiagnostics(sf)); - diagnostics.push(...program.getSemanticDiagnostics(sf)); + diags.push(...program.getSyntacticDiagnostics(sf)); + diags.push(...program.getSemanticDiagnostics(sf)); }); } - if (diagnostics.length > 0) { - console.error(format(bazelOpts.target, diagnostics)); + + // If there are any TypeScript type errors abort now, so the error + // messages refer to the original source. After any subsequent passes + // (decorator downleveling or tsickle) we do not type check. + diags = diagnostics.filterExpected(bazelOpts, diags); + if (diags.length > 0) { + console.error(diagnostics.format(bazelOpts.target, diags)); return false; } + for (const sf of program.getSourceFiles().filter(isCompilationTarget)) { const emitResult = program.emit( sf, /*writeFile*/ undefined, @@ -122,10 +119,10 @@ function runOneBuild( after: [fixUmdModuleDeclarations( (sf: ts.SourceFile) => compilerHost.amdModuleName(sf))] }); - diagnostics.push(...emitResult.diagnostics); + diags.push(...emitResult.diagnostics); } - if (diagnostics.length > 0) { - console.error(format(bazelOpts.target, diagnostics)); + if (diags.length > 0) { + console.error(diagnostics.format(bazelOpts.target, diags)); return false; } return true; From f9d815806446b13b45b8b06319272d9ea1e608be Mon Sep 17 00:00:00 2001 From: evanm Date: Mon, 6 Nov 2017 15:31:14 -0800 Subject: [PATCH 0091/1134] Propagate module mappings through _helpers, which can be used to bring TypeScript's tslib into the compilation. PiperOrigin-RevId: 174772638 --- .../bazelbuild/rules_typescript/internal/common/compilation.bzl | 2 +- .../rules_typescript/internal/common/module_mappings.bzl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 0cc018f175..7ebcb2988d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -81,7 +81,7 @@ def _collect_transitive_dts(ctx, deep=True): type_blacklisted_declarations = depset() for extra in ctx.files._additional_d_ts: all_deps_declarations += depset([extra]) - for dep in ctx.attr.deps: + for dep in ctx.attr.deps + getattr(ctx.attr, '_helpers', []): if hasattr(dep, "typescript"): all_deps_declarations += dep.typescript.transitive_declarations type_blacklisted_declarations += dep.typescript.type_blacklisted_declarations diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl index fd19ba43c3..d5c7643d16 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl @@ -25,7 +25,7 @@ def _get_deps(attrs, names): for d in getattr(attrs, n)] # Traverse 'srcs' in addition so that we can go across a genrule -_MODULE_MAPPINGS_DEPS_NAMES = (["deps", "srcs"] +_MODULE_MAPPINGS_DEPS_NAMES = (["deps", "srcs", "_helpers"] ) _DEBUG = False From 60e8abfbd487b2a2a5b9a5c2227c53f98a762a24 Mon Sep 17 00:00:00 2001 From: evanm Date: Thu, 9 Nov 2017 15:53:19 -0800 Subject: [PATCH 0092/1134] open source concatjs concatjs is a simple JavaScript bundler that tries to avoid reloading files where possible. It's for use in development servers. PiperOrigin-RevId: 175225590 --- .../internal/concatjs/concatjs.go | 323 ++++++++++++++++++ .../internal/concatjs/concatjs_test.go | 156 +++++++++ 2 files changed, 479 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs.go create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs_test.go diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs.go b/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs.go new file mode 100644 index 0000000000..08172df078 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs.go @@ -0,0 +1,323 @@ +// Package concatjs provides a simple way of serving JavaScript sources in development. +package concatjs + +import ( + "bufio" + "bytes" + "compress/gzip" + "fmt" + "io" + "io/ioutil" + "log" + "net/http" + "os" + "path/filepath" + "regexp" + "strings" + "sync" + "time" +) + +// ServeConcatenatedJS returns an http.Handler that serves the JavaScript files +// listed in manifestPath in one concatenated, eval separated response body. +// +// This greatly speeds up development load times due to fewer HTTP requests, but +// still for easy debugging by giving the eval'ed fragments URLs through +// sourceURL comments. +// +// Example usage: +// http.Handle("/app_combined.js", +// concatjs.ServeConcatenatedJS("my/app/web_srcs.MF", ".", nil)) +// +// Relative paths in the manifest are resolved relative to the path given as root. +func ServeConcatenatedJS(manifestPath, root string, fs FileSystem) http.Handler { + var lock sync.Mutex // Guards cache. + cache := NewFileCache(root, fs) + + manifestPath = filepath.Join(root, manifestPath) + + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "text/javascript; charset=utf-8") + files, err := manifestFiles(manifestPath) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + writeJSError(w, "Failed to read manifest: %v", err) + return + } + var writer io.Writer = w + if acceptGzip(r.Header) { + // NB: gzip is not supported in App Engine, as the header is stripped: + // https://cloud.google.com/appengine/docs/go/requests#Go_Request_headers + // CompressionLevel = 3 is a reasonable compromise between speed and compression. + gzw, err := gzip.NewWriterLevel(w, 3) + if err != nil { + log.Fatalf("Could not create gzip writer: %s", err) + } + defer gzw.Close() + writer = gzw + w.Header().Set("Content-Encoding", "gzip") + } + + // Protect the cache with a lock because it's possible for multiple requests + // to be handled in parallel. + lock.Lock() + cache.WriteFiles(writer, files) + lock.Unlock() + }) +} + +var acceptHeader = http.CanonicalHeaderKey("Accept-Encoding") + +func acceptGzip(h http.Header) bool { + for _, hv := range h[acceptHeader] { + for _, enc := range strings.Split(hv, ",") { + if strings.TrimSpace(enc) == "gzip" { + return true + } + } + } + return false +} + +// FileSystem is the interface to reading files from disk. +// It's abstracted into an interface to allow tests to replace it. +type FileSystem interface { + statMtime(filename string) (time.Time, error) + readFile(filename string) ([]byte, error) +} + +// realFileSystem implements FileSystem by actual disk access. +type realFileSystem struct{} + +func (fs *realFileSystem) statMtime(filename string) (time.Time, error) { + s, err := os.Stat(filename) + if err != nil { + return time.Time{}, err + } + return s.ModTime(), nil +} + +func (fs *realFileSystem) readFile(filename string) ([]byte, error) { + return ioutil.ReadFile(filename) +} + +// FileCache caches a set of files in memory and provides a single +// method, WriteFiles(), that streams them out in the concatjs format. +type FileCache struct { + fs FileSystem + root string + + entries map[string]*cacheEntry +} + +// NewFileCache constructs a new FileCache. Relative paths in the cache +// are resolved relative to root. fs injects file system access, and +// will use the real file system if nil. +func NewFileCache(root string, fs FileSystem) *FileCache { + if fs == nil { + fs = &realFileSystem{} + } + return &FileCache{ + root: root, + fs: fs, + entries: map[string]*cacheEntry{}, + } +} + +type cacheEntry struct { + // err holds an error encountered while updating the entry; if + // it's non-nil, then mtime and contents are invalid. + err error + mtime time.Time + contents []byte +} + +// manifestFiles parses a manifest, returning a list of the files in the manifest. +// BEGIN_INTERNAL +// It skips blank lines and javascript/closure/deps.js. +// END_INTERNAL +func manifestFiles(manifest string) ([]string, error) { + f, err := os.Open(manifest) + if err != nil { + return nil, fmt.Errorf("could not read manifest %s: %s", manifest, err) + } + defer f.Close() + return manifestFilesFromReader(f) +} + +// manifestFilesFromReader is a helper for manifestFiles, split out for testing. +func manifestFilesFromReader(r io.Reader) ([]string, error) { + var lines []string + s := bufio.NewScanner(r) + for s.Scan() { + path := s.Text() + if path == "" { + continue + } + // BEGIN_INTERNAL + if path == "javascript/closure/deps.js" { + // Ignore/skip deps.js, it is unused due to CLOSURE_NO_DEPS = true and superseded by the + // dependency handling in this file. It's harmless, but a large download (>450 KB). + continue + } + // END_INTERNAL + lines = append(lines, path) + } + if err := s.Err(); err != nil { + return nil, err + } + + return lines, nil +} + +// writeJSError writes an error both to the log and into w as a JavaScript throw statement. +func writeJSError(w io.Writer, format string, a ...interface{}) { + log.Printf(format, a...) + fmt.Fprint(w, "throw new Error('") + fmt.Fprintf(w, format, a...) + fmt.Fprint(w, "');\n") +} + +// WriteFiles updates the cache for a list of files, then streams them into an io.Writer. +func (cache *FileCache) WriteFiles(w io.Writer, files []string) error { + // Ensure the cache is up to date with respect to the on-disk state. + // Note that refreshFiles cannot fail; any errors encountering while refreshing + // are stored in the cache entry and streamed into the response. + cache.refreshFiles(files) + + for _, path := range files { + if _, err := fmt.Fprintf(w, "// %s\n", path); err != nil { + return err + } + ce := cache.entries[path] + if ce.err != nil { + writeJSError(w, "loading %s failed: %s", path, ce.err) + continue + } + if _, err := w.Write(ce.contents); err != nil { + return err + } + } + return nil +} + +// refresh ensures a single cacheEntry is up to date. It stat()s and +// potentially reads the contents of the file it is caching. +func (e *cacheEntry) refresh(root, path string, fs FileSystem) error { + mt, err := fs.statMtime(filepath.Join(root, path)) + if err != nil { + return err + } + if e.mtime == mt && e.contents != nil { + return nil // up to date + } + + contents, err := fileContents(root, path, fs) + if err != nil { + return err + } + e.mtime = mt + e.contents = contents + return nil +} + +// refreshFiles stats the given files and updates the cache for them. +func (cache *FileCache) refreshFiles(files []string) { + // Stating many files asynchronously is faster on network file systems. + // Push all files that need to be stat'd into a channel and have + // a set of workers stat/read them to update the cache entry. + type workItem struct { + path string + entry *cacheEntry + } + work := make(chan workItem) + + var wg sync.WaitGroup + wg.Add(len(files)) + for i := 0; i < len(files); i++ { + // TODO(evanm): benchmark limiting this to fewer goroutines. + go func() { + w := <-work + w.entry.err = w.entry.refresh(cache.root, w.path, cache.fs) + wg.Done() + }() + } + + for _, path := range files { + entry := cache.entries[path] + if entry == nil { + entry = &cacheEntry{} + cache.entries[path] = entry + } + work <- workItem{path, entry} + } + close(work) + + wg.Wait() +} + +// The maximum number of bytes of a source file to be searched for the "goog.module" declaration. +// Limited to 50,000 bytes to avoid degenerated performance on large compiled JS (e.g. a +// pre-compiled AngularJS binary). +const googModuleSearchLimit = 50 * 1000 + +// Matches files containing "goog.module", which have to be served slightly differently. +var googModuleRegExp = regexp.MustCompile(`(?m)^\s*goog\.module\s*\(\s*['"]`) + +// fileContents returns escaped JS file contents for the given path. +// The path is resolved relative to root, but the path without root is used as the path +// in the source map. +func fileContents(root, path string, fs FileSystem) ([]byte, error) { + contents, err := fs.readFile(filepath.Join(root, path)) + if err != nil { + return nil, err + } + var f bytes.Buffer + // goog.module files must be wrapped in a goog.loadModule call. Check the first X bytes of the file for it. + limit := googModuleSearchLimit + if len(contents) < limit { + limit = len(contents) + } + if googModuleRegExp.Match(contents[:limit]) { + fmt.Fprint(&f, "goog.loadModule('") + } else { + fmt.Fprint(&f, "eval('") + } + if err := writeJSEscaped(&f, contents); err != nil { + log.Printf("Failed to write file contents of %s: %s", path, err) + return nil, err + } + fmt.Fprintf(&f, "\\n\\n//# sourceURL=http://concatjs/%s\\n');\n", path) + + return f.Bytes(), nil +} + +// writeJSEscaped writes contents into the given writer, escaping for content in +// a single quoted JavaScript string. +func writeJSEscaped(out io.Writer, contents []byte) error { + // template.JSEscape escapes whitespace and line breaks to bulky six-character + // escapes, substantially blowing up response size, and is also a bit slower. + // As this also doesn't need safe escaping, this code just rather escapes itself. + for _, b := range contents { + switch b { + case '\n': + if _, err := out.Write([]byte("\\n")); err != nil { + return err + } + case '\r': + if _, err := out.Write([]byte("\\r")); err != nil { + return err + } + case '\\', '\'': + if _, err := out.Write([]byte{'\\'}); err != nil { + return err + } + fallthrough + default: + if _, err := out.Write([]byte{b}); err != nil { + return err + } + } + } + return nil +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs_test.go b/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs_test.go new file mode 100644 index 0000000000..4758d250e7 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs_test.go @@ -0,0 +1,156 @@ +package concatjs + +import ( + "bytes" + "fmt" + "net/http" + "net/http/httptest" + "reflect" + "strings" + "testing" + "time" +) + +// BEGIN_INTERNAL +// This test is mostly verifying that we drop javascript/closure/deps.js, +// which we only do internally. +func TestManifestFiles(t *testing.T) { + files, err := manifestFilesFromReader(strings.NewReader(`foo.js + +javascript/closure/deps.js +bar.js +`)) + if err != nil { + t.Fatal(err) + } + want := []string{"foo.js", "bar.js"} + if !reflect.DeepEqual(files, want) { + t.Errorf("Parse incorrect, got %v, want %v", files, want) + } +} + +// END_INTERNAL + +func TestWriteJSEscaped(t *testing.T) { + var b bytes.Buffer + if err := writeJSEscaped(&b, []byte("test \\ ' \n \r end")); err != nil { + t.Error(err) + } + got := string(b.Bytes()) + want := `test \\ \' \n \r end` + if got != want { + t.Errorf("Incorrect escaping, want %s, got %s", want, got) + } +} + +type fakeFileSystem struct { + fakeReadFile func(filename string) ([]byte, error) + fakeStatMtime func(filename string) (time.Time, error) +} + +func (fs *fakeFileSystem) readFile(filename string) ([]byte, error) { + return fs.fakeReadFile(filename) +} + +func (fs *fakeFileSystem) statMtime(filename string) (time.Time, error) { + return fs.fakeStatMtime(filename) +} + +func TestWriteFiles(t *testing.T) { + fs := fakeFileSystem{ + fakeReadFile: func(filename string) ([]byte, error) { + switch filename { + case "root/a": + return []byte("a content"), nil + case "root/module": + return []byte("// A module\ngoog.module('hello');"), nil + default: + return []byte{}, fmt.Errorf("unexpected file read: %s", filename) + } + }, + fakeStatMtime: func(filename string) (time.Time, error) { + switch filename { + case "root/a", "root/module": + return time.Now(), nil + default: + return time.Time{}, fmt.Errorf("unexpected file stat: %s", filename) + } + }, + } + + cache := NewFileCache("root", &fs) + + var b bytes.Buffer + cache.WriteFiles(&b, []string{"a", "missing", "module"}) + + got := string(b.Bytes()) + want := `// a +eval('a content\n\n//# sourceURL=http://concatjs/a\n'); +// missing +throw new Error('loading missing failed: unexpected file stat: root/missing'); +// module +goog.loadModule('// A module\ngoog.module(\'hello\');\n\n//# sourceURL=http://concatjs/module\n'); +` + + if got != want { + t.Errorf("Response differs, want %s, got %s", want, got) + } +} + +func TestFileCaching(t *testing.T) { + var reads int + + fs := fakeFileSystem{ + fakeReadFile: func(string) ([]byte, error) { + reads++ + return nil, nil + }, + fakeStatMtime: func(string) (time.Time, error) { + return time.Time{}, nil + }, + } + + var b bytes.Buffer + cache := NewFileCache("", &fs) + cache.WriteFiles(&b, []string{"a", "b"}) + if reads != 2 { + t.Errorf("got %d file reads, want 2", reads) + } + reads = 0 + cache.WriteFiles(&b, []string{"a", "b"}) + if reads != 0 { + t.Errorf("got %d reads, expected no further", reads) + } +} + +func TestAcceptHeader(t *testing.T) { + tests := []struct { + header map[string][]string + expected bool + }{ + {header: map[string][]string{"Other": []string{"gzip"}}, expected: false}, + {header: map[string][]string{"Accept-Encoding": []string{"rot13"}}, expected: false}, + {header: map[string][]string{"Accept-Encoding": []string{"rot13, gzip, deflate"}}, expected: true}, + } + for _, test := range tests { + res := acceptGzip(test.header) + if res != test.expected { + t.Errorf("Expect %t, got %t for %s", test.expected, res, test.header) + } + } +} + +func runOneRequest(b *testing.B, handler http.Handler, gzip bool) { + req, err := http.NewRequest("GET", "", nil) + if err != nil { + b.Fatal(err) + } + if gzip { + req.Header["Accept-Encoding"] = []string{"gzip"} + } + w := httptest.NewRecorder() + handler.ServeHTTP(w, req) + if w.Code != http.StatusOK { + b.Errorf("HTTP request failed: %d", w.Code) + } +} From 1c3fb3e987c0e4bf488514698b36f91dd5f9c247 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Fri, 10 Nov 2017 10:07:54 -0800 Subject: [PATCH 0093/1134] Remove some unnecessary code for stripping closure's deps.js file PiperOrigin-RevId: 175303542 --- .../internal/concatjs/concatjs.go | 10 ---------- .../internal/concatjs/concatjs_test.go | 19 ------------------- 2 files changed, 29 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs.go b/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs.go index 08172df078..bbe9b7aa2d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs.go +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs.go @@ -133,9 +133,6 @@ type cacheEntry struct { } // manifestFiles parses a manifest, returning a list of the files in the manifest. -// BEGIN_INTERNAL -// It skips blank lines and javascript/closure/deps.js. -// END_INTERNAL func manifestFiles(manifest string) ([]string, error) { f, err := os.Open(manifest) if err != nil { @@ -154,13 +151,6 @@ func manifestFilesFromReader(r io.Reader) ([]string, error) { if path == "" { continue } - // BEGIN_INTERNAL - if path == "javascript/closure/deps.js" { - // Ignore/skip deps.js, it is unused due to CLOSURE_NO_DEPS = true and superseded by the - // dependency handling in this file. It's harmless, but a large download (>450 KB). - continue - } - // END_INTERNAL lines = append(lines, path) } if err := s.Err(); err != nil { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs_test.go b/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs_test.go index 4758d250e7..de2c92ffd9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs_test.go @@ -11,25 +11,6 @@ import ( "time" ) -// BEGIN_INTERNAL -// This test is mostly verifying that we drop javascript/closure/deps.js, -// which we only do internally. -func TestManifestFiles(t *testing.T) { - files, err := manifestFilesFromReader(strings.NewReader(`foo.js - -javascript/closure/deps.js -bar.js -`)) - if err != nil { - t.Fatal(err) - } - want := []string{"foo.js", "bar.js"} - if !reflect.DeepEqual(files, want) { - t.Errorf("Parse incorrect, got %v, want %v", files, want) - } -} - -// END_INTERNAL func TestWriteJSEscaped(t *testing.T) { var b bytes.Buffer From 8759d6dbb0d15efc848914cf73255b455d7807b4 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 13 Nov 2017 08:23:47 -0800 Subject: [PATCH 0094/1134] Setup gazelle for rules_typescript. Generate missing BUILD file for go code. Add excludes for proto and node_modules. Closes #62 PiperOrigin-RevId: 175534858 --- .../rules_typescript/.circleci/config.yml | 2 +- .../bazelbuild/rules_typescript/BUILD.bazel | 13 +++++++++++++ .../bazelbuild/rules_typescript/WORKSPACE | 12 ++++++++++++ .../rules_typescript/internal/BUILD.bazel | 2 ++ .../internal/concatjs/BUILD.bazel | 15 +++++++++++++++ .../internal/concatjs/concatjs_test.go | 2 -- 6 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml index 578e448d28..4757ef0b55 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml @@ -12,7 +12,7 @@ anchor_1: &job_defaults working_directory: ~/ts # Use a docker image with bazel already installed docker: - - image: angular/ngcontainer:0.0.1 + - image: angular/ngcontainer:0.0.4 # After checkout, rebase on top of master. # Similar to travis behavior, but not quite the same. diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index cb4e4a6458..acb3211926 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -12,6 +12,19 @@ # See the License for the specific language governing permissions and # limitations under the License. +# To update BUILD.bazel files after changing Go code, run +# bazel run //:gazelle +# +# Exclude node_modules, see +# https://github.com/bazelbuild/rules_go/blob/master/go/tools/gazelle/README.rst#directives +# gazelle:exclude node_modules +load("@io_bazel_rules_go//go:def.bzl", "gazelle") + +gazelle( + name = "gazelle", + prefix = "github.com/bazelbuild/rules_typescript", +) + # The node_modules directory is created by `yarn install` # WORKAROUND for https://github.com/bazelbuild/bazel/issues/374#issuecomment-296217940 filegroup( diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 8edc90fdda..7958bb5fa8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -30,3 +30,15 @@ load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories") # - The yarn package manager: # @yarn//:yarn node_repositories(package_json = ["//:package.json"]) + +http_archive( + name = "io_bazel_rules_go", + url = "https://github.com/bazelbuild/rules_go/releases/download/0.7.0/rules_go-0.7.0.tar.gz", + sha256 = "91fca9cf860a1476abdc185a5f675b641b60d3acf0596679a27b580af60bf19c", +) + +load("@io_bazel_rules_go//go:def.bzl", "go_rules_dependencies", "go_register_toolchains") + +go_rules_dependencies() + +go_register_toolchains() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 2cace7f365..0ea8d845a0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -12,6 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +# gazelle:exclude worker_protocol.proto + package(default_visibility = ["//visibility:public"]) exports_files(["worker_protocol.proto"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/BUILD.bazel new file mode 100644 index 0000000000..ea9a1c0a06 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/BUILD.bazel @@ -0,0 +1,15 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "go_default_library", + srcs = ["concatjs.go"], + importpath = "github.com/bazelbuild/rules_typescript/internal/concatjs", + visibility = ["//:__subpackages__"], +) + +go_test( + name = "go_default_test", + srcs = ["concatjs_test.go"], + importpath = "github.com/bazelbuild/rules_typescript/internal/concatjs", + library = ":go_default_library", +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs_test.go b/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs_test.go index de2c92ffd9..06e8645804 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs_test.go @@ -5,8 +5,6 @@ import ( "fmt" "net/http" "net/http/httptest" - "reflect" - "strings" "testing" "time" ) From 40b6189a95050f158fee39391c6ff6c1defdceca Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 16 Nov 2017 11:22:47 -0800 Subject: [PATCH 0095/1134] Initial docs site for http://tsetse.info Closes #69 PiperOrigin-RevId: 175991564 --- .../docs/check-return-value.md | 35 +++++++++++++++ .../bazelbuild/rules_typescript/docs/index.md | 43 +++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/check-return-value.md create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/index.md diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/check-return-value.md b/third_party/github.com/bazelbuild/rules_typescript/docs/check-return-value.md new file mode 100644 index 0000000000..3424fbf832 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/check-return-value.md @@ -0,0 +1,35 @@ + + +## The problem + +Certain functions do not change the state of the calling object. If these +functions' return values are unused, then the function call could be removed +without any effects, indicating a likely bug. + +Currently checking the following APIs: + +* `Array.concat()` +* `Array.filter()` +* `Array.map()` +* `Array.slice()` +* `Function.bind()` +* `Object.create()` +* `string.concat()` +* `string.normalize()` +* `string.padStart()` +* `string.padEnd()` +* `string.repeat()` +* `string.replace()` (Check only if the second parameter is non-function.) +* `string.slice()` +* `string.split()` +* `string.substr()` +* `string.substring()` +* `string.toLocaleLowerCase()` +* `string.toLocaleUpperCase()` +* `string.toLowerCase()` +* `string.toUpperCase()` +* `string.trim()` + +For user defined functions, add a `@checkReturnValue` JSDoc to mark functions +whose return values should be checked. See this +[example](https://github.com/bazelbuild/rules_typescript/tree/master/internal/tsetse/tests/check_return_value/user_defined_check_return_value.ts). diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/index.md b/third_party/github.com/bazelbuild/rules_typescript/docs/index.md new file mode 100644 index 0000000000..62a23c03c9 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/index.md @@ -0,0 +1,43 @@ +# Tsetse + +It's common for even the best programmers to make simple mistakes. And sometimes +a refactoring which seems safe can leave behind code which will never do what's +intended. + +The TypeScript compiler helps prevent a lot of the mistakes you might make when +writing JavaScript code. However, the set of checks it performs are limited. +You can augment the static analysis of the compiler by adding linting rules, but +many toolchains only run the linter when the code is ready for review or submit. +We want to catch correctness issues in the same way the compiler catches type +errors. + +You can think of the TypeScript compiler as a linter for the Language Spec. +Tsetse is essentially an extension to that spec, adding new patterns which are +disallowed in TypeScript programs. The tsetse library lets us plug new +third-party checks into the standard compiler. + +__Tsetse ...__ + +* __hooks into the standard build process, so all developers run it without configuration__ +* __tells you about mistakes immediately after they're made__ +* __produces suggested fixes, so you can turn on new checks without breaking your build__ + +Currently, Tsetse is built into the Bazel TypeScript compiler. However we hope +that it will be possible to plug into the standard `tsc` compiler later. + +Tsetse is modelled on the [Error Prone] project for Java. + +[Error Prone]: http://errorprone.info + +## Example + +```javascript +const s = " Hello, world! "; +s.trim(); +``` + +```sh +$ bazel build :all +mycode.ts(2,1): error TS21222: return value is unused. + See http://tsetse.info/check-return-value +``` From 96953588419ac8fd9d59018891c2e4b602cdccfa Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 16 Nov 2017 12:13:16 -0800 Subject: [PATCH 0096/1134] Create CNAME --- third_party/github.com/bazelbuild/rules_typescript/docs/CNAME | 1 + 1 file changed, 1 insertion(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/CNAME diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/CNAME b/third_party/github.com/bazelbuild/rules_typescript/docs/CNAME new file mode 100644 index 0000000000..11f2cee2c4 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/CNAME @@ -0,0 +1 @@ +tsetse.info \ No newline at end of file From 97d44d7ff5ced7de246798cc52334d5b5e37eb03 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Fri, 17 Nov 2017 07:50:38 -0800 Subject: [PATCH 0097/1134] Set theme jekyll-theme-hacker --- .../github.com/bazelbuild/rules_typescript/docs/_config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/_config.yml diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/_config.yml b/third_party/github.com/bazelbuild/rules_typescript/docs/_config.yml new file mode 100644 index 0000000000..fc24e7a62d --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-hacker \ No newline at end of file From 6282c102d16acff7565b5ac07cebb7e8d3ef21ae Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Thu, 16 Nov 2017 15:10:09 -0800 Subject: [PATCH 0098/1134] Introduce Tsetse, a plugin in the TypeScript compiler, letting us add our own type checks which are treated as compilation errors. PiperOrigin-RevId: 176027767 --- .../bazelbuild/rules_typescript/docs/CNAME | 1 - .../rules_typescript/docs/_config.yml | 1 - .../internal/tsc_wrapped/BUILD.bazel | 37 +++- .../internal/tsc_wrapped/diagnostics_test.ts | 2 +- .../internal/tsc_wrapped/file_cache_test.ts | 2 +- .../internal/tsc_wrapped/strict_deps_test.ts | 2 +- .../internal/tsc_wrapped/tsc_wrapped.ts | 7 +- .../internal/tsc_wrapped/tsconfig.ts | 8 +- .../internal/tsetse/BUILD.bazel | 35 ++++ .../internal/tsetse/checker.ts | 110 ++++++++++++ .../internal/tsetse/failure.ts | 27 +++ .../rules_typescript/internal/tsetse/rule.ts | 16 ++ .../internal/tsetse/rules/BUILD | 20 +++ .../tsetse/rules/check_return_value_rule.ts | 160 ++++++++++++++++++ .../internal/tsetse/runner.ts | 42 +++++ .../tsetse/tests/check_return_value/BUILD | 48 ++++++ .../expected_diagnostics.ts | 19 +++ .../no_expected_diagnostics.ts | 32 ++++ ...used_return_value_user_defined_function.ts | 14 ++ .../user_defined_check_return_value.ts | 30 ++++ .../internal/tsetse/tsconfig.json | 15 ++ .../bazelbuild/rules_typescript/package.json | 3 +- 22 files changed, 617 insertions(+), 14 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/CNAME delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/_config.yml create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rule.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/BUILD create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/expected_diagnostics.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/no_expected_diagnostics.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/unused_return_value_user_defined_function.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/user_defined_check_return_value.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tsconfig.json diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/CNAME b/third_party/github.com/bazelbuild/rules_typescript/docs/CNAME deleted file mode 100644 index 11f2cee2c4..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/CNAME +++ /dev/null @@ -1 +0,0 @@ -tsetse.info \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/_config.yml b/third_party/github.com/bazelbuild/rules_typescript/docs/_config.yml deleted file mode 100644 index fc24e7a62d..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-hacker \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel index bca4002aa0..6dd1299253 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/BUILD.bazel @@ -20,21 +20,50 @@ nodejs_binary( name = "tsc", data = ["@//:node_modules"], entry_point = "typescript/lib/tsc.js", + visibility = ["//internal:__subpackages__"], ) # Build our custom compiler using the vanilla one ts_library( name = "tsc_wrapped", - srcs = glob( - ["*.ts"], - exclude = ["*_test.ts"], - ), + srcs = [ + "compiler_host.ts", + "diagnostics.ts", + "file_cache.ts", + "manifest.ts", + "strict_deps.ts", + "tsc_wrapped.ts", + "tsconfig.ts", + "umd_module_declaration_transform.ts", + "worker.ts", + ], compiler = ":tsc", module_name = "@bazel/typescript", module_root = "index.d.ts", supports_workers = False, tsconfig = ":tsconfig.json", visibility = ["//visibility:public"], + deps = [ + ":perf_trace", + ":plugin_api", + "//internal/tsetse:runner", + ], +) + +ts_library( + name = "plugin_api", + srcs = ["plugin_api.ts"], + compiler = ":tsc", + supports_workers = False, + visibility = ["//internal/tsetse:__pkg__"], +) + +ts_library( + name = "perf_trace", + srcs = ["perf_trace.ts"], + compiler = ":tsc", + supports_workers = False, + visibility = ["//internal/tsetse:__pkg__"], ) # Other ts_library rules will use this custom compiler, which calls the diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics_test.ts index e360f9ff24..b678929afb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics_test.ts @@ -1,4 +1,4 @@ -// taze: jasmine from //third_party/javascript/typings/jasmine:jasmine_without_externs + import * as ts from 'typescript'; import * as diagnostics from './diagnostics'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache_test.ts index e47a533f13..2f5d6920d9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/file_cache_test.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -// taze: jasmine from //third_party/javascript/typings/jasmine:jasmine_without_externs + import * as ts from 'typescript'; import {CachedFileLoader, FileCache} from './file_cache'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts index 9cf7445dd3..fcc4885fab 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -// taze: jasmine from //third_party/javascript/typings/jasmine:jasmine_without_externs + import * as ts from 'typescript'; import {checkModuleDeps} from './strict_deps'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index df121b7e46..6885f1863e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -2,6 +2,8 @@ import * as fs from 'fs'; import * as path from 'path'; import * as ts from 'typescript'; +import {PLUGIN as tsetsePlugin} from '../tsetse/runner'; + import {CompilerHost} from './compiler_host'; import * as diagnostics from './diagnostics'; import {CachedFileLoader, FileCache, FileLoader, UncachedFileLoader} from './file_cache'; @@ -81,7 +83,7 @@ function runOneBuild( (directoryName: string) => compilerHostDelegate.directoryExists!(directoryName); } - const program = ts.createProgram(files, options, compilerHost); + let program = ts.createProgram(files, options, compilerHost); fileCache.traceStats(); @@ -89,6 +91,9 @@ function runOneBuild( return (bazelOpts.compilationTargetSrc.indexOf(sf.fileName) !== -1); } let diags: ts.Diagnostic[] = []; + // Install extra diagnostic plugins + program = tsetsePlugin.wrap(program, bazelOpts.disabledTsetseRules); + // These checks mirror ts.getPreEmitDiagnostics, with the important // exception that if you call program.getDeclarationDiagnostics() it somehow // corrupts the emit. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index 3ef9754743..01ba3931c5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import * as path from 'path'; // from //third_party/javascript/typings/node +import * as path from 'path'; import * as ts from 'typescript'; /** @@ -72,8 +72,10 @@ export interface BazelOptions { /** Write a performance trace to this path. Disabled when falsy. */ perfTracePath?: string; - /** A list of conformance rule names that should not run on this target. */ - disabledConformanceRules: string[]; + /** + * A list of Tsetse rule names that should not run on this target. + */ + disabledTsetseRules: string[]; /** * An additional prelude to insert after the `goog.module` call, diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/BUILD.bazel new file mode 100644 index 0000000000..3849bd8e76 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/BUILD.bazel @@ -0,0 +1,35 @@ +package(default_visibility = [ + "//internal/tsc_wrapped:__pkg__", + "//internal/tsetse:__subpackages__", +]) + +licenses(["notice"]) # Apache 2.0 + +load("//:defs.bzl", "ts_library") + +ts_library( + name = "tsetse_lib", + srcs = [ + "checker.ts", + "failure.ts", + "rule.ts", + ], + compiler = "//internal/tsc_wrapped:tsc", + supports_workers = False, + tsconfig = ":tsconfig.json", +) + +ts_library( + name = "runner", + srcs = [ + "runner.ts", + ], + compiler = "//internal/tsc_wrapped:tsc", + supports_workers = False, + deps = [ + ":tsetse_lib", + "//internal/tsc_wrapped:perf_trace", + "//internal/tsc_wrapped:plugin_api", + "//internal/tsetse/rules", + ], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts new file mode 100644 index 0000000000..1a8259f3e5 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts @@ -0,0 +1,110 @@ +/** + * @fileoverview Checker contains all the information we need to perform source + * file AST traversals and report errors. + */ + + +import * as ts from 'typescript'; + +import {Failure} from './failure'; + +/** + * A Handler contains a handler function and its corresponding error code so + * when the handler function is triggered we know which rule is violated. + */ +interface Handler { + handlerFunction(checker: Checker, node: ts.Node): void; + code: number; +} + +/** + * Tsetse rules use on() and addFailureAtNode() for rule implementations. + * Rules can get a ts.TypeChecker from checker.typeChecker so typed rules are + * possible. Compiler uses execute() to run the Tsetse check. + */ +export class Checker { + /** + * nodeHandlersMap contains node to handlers mapping for all enabled rules. + */ + private nodeHandlersMap = new Map(); + private failures: Failure[] = []; + private currentSourceFile: ts.SourceFile; + // currentCode will be set before invoking any handler functions so the value + // initialized here is never used. + private currentCode = 0; + /** + * Allow typed rules via typeChecker. + */ + typeChecker: ts.TypeChecker; + + constructor(program: ts.Program) { + // Avoid the cost for each rule to create a new TypeChecker. + this.typeChecker = program.getTypeChecker(); + } + + /** + * This doesn't run any checks yet. Instead, it registers `handlerFunction` on + * `nodeKind` node in `nodeHandlersMap` map. After all rules register their + * handlers, the source file AST will be traversed. + */ + on(nodeKind: ts.SyntaxKind, + handlerFunction: (checker: Checker, node: ts.Node) => void, code: number) { + const newHandler: Handler = {handlerFunction, code}; + const registeredHandlers: Handler[]|undefined = + this.nodeHandlersMap.get(nodeKind); + if (registeredHandlers === undefined) { + this.nodeHandlersMap.set(nodeKind, [newHandler]); + } else { + registeredHandlers.push(newHandler); + } + } + + /** + * Add a failure with a span. addFailure() is currently private because + * `addFailureAtNode` is preferred. + */ + private addFailure(start: number, end: number, failureText: string) { + if (start >= end || end > this.currentSourceFile.end || start < 0) { + // Since only addFailureAtNode() is exposed for now this shouldn't happen. + throw new Error( + `Invalid start and end position: [${start}, ${end}]` + + ` in file ${this.currentSourceFile.fileName}.`); + } + + const failure = new Failure( + this.currentSourceFile, start, end, failureText, this.currentCode); + this.failures.push(failure); + } + + addFailureAtNode(node: ts.Node, failureText: string) { + // node.getStart() takes a sourceFile as argument whereas node.getEnd() + // doesn't need it. + this.addFailure( + node.getStart(this.currentSourceFile), node.getEnd(), failureText); + } + + /** + * Walk `sourceFile`, invoking registered handlers with Checker as the first + * argument and current node as the second argument. Return failures if there + * are any. + */ + execute(sourceFile: ts.SourceFile): Failure[] { + const thisChecker = this; + this.currentSourceFile = sourceFile; + this.failures = []; + ts.forEachChild(sourceFile, run); + return this.failures; + + function run(node: ts.Node) { + const handlers: Handler[]|undefined = + thisChecker.nodeHandlersMap.get(node.kind); + if (handlers !== undefined) { + for (const handler of handlers) { + thisChecker.currentCode = handler.code; + handler.handlerFunction(thisChecker, node); + } + } + ts.forEachChild(node, run); + } + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts new file mode 100644 index 0000000000..2f055e371f --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts @@ -0,0 +1,27 @@ +import * as ts from 'typescript'; + +/** + * A Tsetse check Failure is almost identical to a Diagnostic from TypeScript + * except that: + * (1) The error code is defined by each individual Tsetse rule. + * (2) The optional `source` property is set to `Tsetse` so the host (VS Code + * for instance) would use that to indicate where the error comes from. + */ +export class Failure { + constructor( + private sourceFile: ts.SourceFile, private start: number, + private end: number, private failureText: string, private code: number) {} + + toDiagnostic(): ts.Diagnostic { + return { + file: this.sourceFile, + start: this.start, + length: this.end - this.start, + messageText: this.failureText, + category: ts.DiagnosticCategory.Error, + code: this.code, + // source is the name of the plugin. + source: 'Tsetse', + }; + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rule.ts new file mode 100644 index 0000000000..fa88b71a38 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rule.ts @@ -0,0 +1,16 @@ +import {Checker} from './checker'; + +/** + * Tsetse rules should extend AbstractRule and provide a `register` function. + * Rules are instantiated once per compilation operation and used across many + * files. + */ +export abstract class AbstractRule { + readonly ruleName: string; + readonly code: number; + + /** + * Registers handler functions on nodes in Checker. + */ + abstract register(checker: Checker): void; +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/BUILD new file mode 100644 index 0000000000..06e6ffd09a --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/BUILD @@ -0,0 +1,20 @@ +licenses(["notice"]) # Apache 2.0 + +load("//:defs.bzl", "ts_library") + +ts_library( + name = "rules", + srcs = [ + "check_return_value_rule.ts", + ], + compiler = "//internal/tsc_wrapped:tsc", + supports_workers = False, + tsconfig = "//internal/tsetse:tsconfig.json", + visibility = ["//internal/tsetse:__pkg__"], + deps = [ + "//internal/tsetse:tsetse_lib", + + + + ], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts new file mode 100644 index 0000000000..47176142c4 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts @@ -0,0 +1,160 @@ + + +/** + * @fileoverview A Tsetse rule that checks the return value of certain functions + * must be used. + */ + +import * as tsutils from 'tsutils'; +import * as ts from 'typescript'; + +import {Checker} from '../checker'; +import {AbstractRule} from '../rule'; + +const FAILURE_STRING = 'return value is unused.' ++ '\n\tSee http://tsetse.info/check-return-value'; + +// A list of well-known functions that the return value must be used. If unused +// then the function call is either a no-op (e.g. 'foo.trim()' foo is unchanged) +// or can be replaced by another (Array.map() should be replaced with a loop or +// Array.forEach() if the return value is unused). +const METHODS_TO_CHECK = new Set([ + ['Array', 'concat'], + ['Array', 'filter'], + ['Array', 'map'], + ['Array', 'slice'], + ['Function', 'bind'], + ['Object', 'create'], + ['string', 'concat'], + ['string', 'normalize'], + ['string', 'padStart'], + ['string', 'padEnd'], + ['string', 'repeat'], + ['string', 'slice'], + ['string', 'split'], + ['string', 'substr'], + ['string', 'substring'], + ['string', 'toLocaleLowerCase'], + ['string', 'toLocaleUpperCase'], + ['string', 'toLowerCase'], + ['string', 'toUpperCase'], + ['string', 'trim'], +].map(list => list.join('#'))); + +export class Rule extends AbstractRule { + readonly ruleName = 'check-return-value'; + readonly code = 21222; + + // registers checkCallExpression() function on ts.CallExpression node. + // TypeScript conformance will traverse the AST of each source file and run + // checkCallExpression() every time it encounters a ts.CallExpression node. + register(checker: Checker) { + checker.on(ts.SyntaxKind.CallExpression, checkCallExpression, this.code); + } +} + +function checkCallExpression(checker: Checker, node: ts.CallExpression) { + // Check if this CallExpression is one of the well-known functions and returns + // a non-void value that is unused. + const signature = checker.typeChecker.getResolvedSignature(node); + if (signature !== undefined) { + const returnType = checker.typeChecker.getReturnTypeOfSignature(signature); + if (!!(returnType.flags & ts.TypeFlags.Void)) { + return; + } + // Although hasCheckReturnValueJsDoc() is faster than isBlackListed(), it + // returns false most of the time and thus isBlackListed() would have to run + // anyway. Therefore we short-circuit hasCheckReturnValueJsDoc(). + if (!isBlackListed(node, checker.typeChecker) && + !hasCheckReturnValueJsDoc(node, checker.typeChecker)) { + return; + } + if (tsutils.isExpressionValueUsed(node)) { + return; + } + + checker.addFailureAtNode(node, FAILURE_STRING); + } +} + +function isBlackListed(node: ts.CallExpression, tc: ts.TypeChecker): boolean { + type AccessExpression = + ts.PropertyAccessExpression|ts.ElementAccessExpression; + switch (node.expression.kind) { + case ts.SyntaxKind.PropertyAccessExpression: + case ts.SyntaxKind.ElementAccessExpression: + // Example: foo.bar() or foo[bar]() + // expressionNode is foo + const nodeExpression = (node.expression as AccessExpression).expression; + const nodeExpressionString = nodeExpression.getText(); + const nodeType = tc.getTypeAtLocation(nodeExpression); + + // nodeTypeString is the string representation of the type of foo + let nodeTypeString = tc.typeToString(nodeType); + if (nodeTypeString.endsWith('[]')) { + nodeTypeString = 'Array'; + } + if (nodeTypeString === 'ObjectConstructor') { + nodeTypeString = 'Object'; + } + if (tsutils.isTypeFlagSet(nodeType, ts.TypeFlags.StringLiteral)) { + nodeTypeString = 'string'; + } + + // nodeFunction is bar + let nodeFunction = ''; + if (tsutils.isPropertyAccessExpression(node.expression)) { + nodeFunction = node.expression.name.getText(); + } + if (tsutils.isElementAccessExpression(node.expression)) { + const argument = node.expression.argumentExpression; + if (argument !== undefined) { + nodeFunction = argument.getText(); + } + } + + // Check if 'foo#bar' or `${typeof foo}#bar` is in the blacklist. + if (METHODS_TO_CHECK.has(`${nodeTypeString}#${nodeFunction}`) || + METHODS_TO_CHECK.has(`${nodeExpressionString}#${nodeFunction}`)) { + return true; + } + + // For 'str.replace(regexp|substr, newSubstr|function)' only check when + // the second parameter is 'newSubstr'. + if ((`${nodeTypeString}#${nodeFunction}` === 'string#replace') || + (`${nodeExpressionString}#${nodeFunction}` === 'string#replace')) { + return node.arguments.length === 2 && + !tsutils.isFunctionWithBody(node.arguments[1]); + } + break; + case ts.SyntaxKind.Identifier: + // Example: foo() + // We currently don't have functions of this kind in blacklist. + const identifier = node.expression as ts.Identifier; + if (METHODS_TO_CHECK.has(identifier.text)) { + return true; + } + break; + default: + break; + } + return false; +} + +function hasCheckReturnValueJsDoc(node: ts.CallExpression, tc: ts.TypeChecker) { + let symbol = tc.getSymbolAtLocation(node.expression); + if (symbol === undefined) { + return false; + } + + if (tsutils.isSymbolFlagSet(symbol, ts.SymbolFlags.Alias)) { + symbol = tc.getAliasedSymbol(symbol); + } + + for (const jsDocTagInfo of symbol.getJsDocTags()) { + if (jsDocTagInfo.name === 'checkReturnValue') { + return true; + } + } + return false; +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts new file mode 100644 index 0000000000..5d0364c42c --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts @@ -0,0 +1,42 @@ +/** + * @fileoverview Runner is the entry point of running Tsetse checks in compiler. + */ + +import * as ts from 'typescript'; + +import * as perfTrace from '../tsc_wrapped/perf_trace'; +import * as pluginApi from '../tsc_wrapped/plugin_api'; + +import {Checker} from './checker'; +import {AbstractRule} from './rule'; +import {Rule as CheckReturnValueRule} from './rules/check_return_value_rule'; + +/** + * The Tsetse check plugin performs compile-time static analysis for TypeScript + * code. + */ +export const PLUGIN: pluginApi.Plugin = { + wrap: (program: ts.Program, disabledTsetseRules: string[] = []): + ts.Program => { + const enabledRules: AbstractRule[] = [ + new CheckReturnValueRule(), + ]; + const checker = new Checker(program); + for (const rule of enabledRules) { + if (disabledTsetseRules.indexOf(rule.ruleName) === -1) { + rule.register(checker); + } + } + + const proxy = pluginApi.createProxy(program); + proxy.getSemanticDiagnostics = (sourceFile: ts.SourceFile) => { + const result = program.getSemanticDiagnostics(sourceFile); + perfTrace.wrap('checkConformance', () => { + result.push(...checker.execute(sourceFile) + .map(failure => failure.toDiagnostic())); + }); + return result; + }; + return proxy; + } +}; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD new file mode 100644 index 0000000000..b41df95f1f --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD @@ -0,0 +1,48 @@ +licenses(["notice"]) # Apache 2.0 + +load("//:defs.bzl", "ts_library") + +error_message = "TS21222: return value is unused.\\n\\tSee http://tsetse.info/check-return-value" + +ts_library( + name = "no_expected_diagnostics_test", + testonly = 1, + srcs = ["no_expected_diagnostics.ts"], + tsconfig = "//internal/tsetse:tsconfig.json", +) + +ts_library( + name = "expected_diagnostics_test", + testonly = 1, + srcs = ["expected_diagnostics.ts"], + expected_diagnostics = [ + "\(6,1\).*" + error_message, + "\(8,1\).*" + error_message, + "\(12,1\).*" + error_message, + "\(16,1\).*" + error_message, + "\(19,1\).*" + error_message, + ], + tsconfig = "//internal/tsetse:tsconfig.json", +) + +ts_library( + name = "user_defined_check_return_value", + testonly = 1, + srcs = ["user_defined_check_return_value.ts"], + tsconfig = "//internal/tsetse:tsconfig.json", +) + +ts_library( + name = "unused_return_value_user_defined_function", + testonly = 1, + srcs = ["unused_return_value_user_defined_function.ts"], + expected_diagnostics = [ + "\(3,1\).*" + error_message, + "\(4,1\).*" + error_message, + "\(6,1\).*" + error_message, + "\(8,1\).*" + error_message, + "\(14,1\).*" + error_message, + ], + tsconfig = "//internal/tsetse:tsconfig.json", + deps = [":user_defined_check_return_value"], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/expected_diagnostics.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/expected_diagnostics.ts new file mode 100644 index 0000000000..691f11af3d --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/expected_diagnostics.ts @@ -0,0 +1,19 @@ +export {}; + +// string.trim() result is unused +let stringUnused; +stringUnused = 'hello'; +stringUnused.trim(); +const stringLiteralUnused = 'hello'; +stringLiteralUnused.trim(); + +// Array.concat() result is unused. +const arrayOfStringsUnused = ['hello']; +arrayOfStringsUnused.concat(arrayOfStringsUnused); + +// Object.create() result is unused +const objectUnused = {}; +Object.create(objectUnused); + +// string.replace() with a substring +stringUnused.replace('o', 'O'); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/no_expected_diagnostics.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/no_expected_diagnostics.ts new file mode 100644 index 0000000000..c1b3abd637 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/no_expected_diagnostics.ts @@ -0,0 +1,32 @@ +// Array.pop() has side effects +const arrayUsedWithSideEffects = [1]; +arrayUsedWithSideEffects.pop(); + +// string.replace() result is assigned to a variable +const stringFunctionAssignedToVar = 'hello'; +let world; +world = stringFunctionAssignedToVar.replace('hello', 'world'); + +// string.replace() result is used as an argument to another function +const stringUsedInFunctionArguments = 'hello'; +console.debug(stringUsedInFunctionArguments.replace('hello', 'world')); + +// string.replace() result is returned +export function foo(): string { + const stringUsedInFunctionReturn = 'hello'; + return stringUsedInFunctionReturn.replace('hello', 'world'); +} + +function aRandomFunctionShouldNotTriggerThisRule() {} +aRandomFunctionShouldNotTriggerThisRule(); + +const stringFunctionUsedInIf = 'hello'; +if (stringFunctionUsedInIf.trim()) { +} + +// string.replace() with a function +const matches: string[] = []; +'hello'.replace('l', (s) => { + matches.push(s); + return s; +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/unused_return_value_user_defined_function.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/unused_return_value_user_defined_function.ts new file mode 100644 index 0000000000..0be70018cb --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/unused_return_value_user_defined_function.ts @@ -0,0 +1,14 @@ +import {ClassContainingUserDefinedCheckReturnValueFunction, manyJsDocTags, userDefinedCheckReturnValueFunction} from './user_defined_check_return_value'; + +userDefinedCheckReturnValueFunction('hello'); +manyJsDocTags('hello'); + +new ClassContainingUserDefinedCheckReturnValueFunction().checkReturnValue( + 'hello'); +new ClassContainingUserDefinedCheckReturnValueFunction().sameLineJsDoc('hello'); +new ClassContainingUserDefinedCheckReturnValueFunction().noJsDoc('hello'); + +const nested = { + child: new ClassContainingUserDefinedCheckReturnValueFunction() +}; +nested.child.checkReturnValue('hello'); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/user_defined_check_return_value.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/user_defined_check_return_value.ts new file mode 100644 index 0000000000..096598320f --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/user_defined_check_return_value.ts @@ -0,0 +1,30 @@ +/** + * @checkReturnValue The input string is unchanged. + */ +export function userDefinedCheckReturnValueFunction(str: string) { + return `input ${str}`; +} + +/** + * @tag1 + * @checkReturnValue The input string is unchanged. + * @tag2 + */ +export function manyJsDocTags(str: string) { + return `input ${str}`; +} + +export class ClassContainingUserDefinedCheckReturnValueFunction { + /** + * @checkReturnValue The input string is unchanged. + */ + checkReturnValue(str: string) { + return `input ${str}`; + } + /** @checkReturnValue */ sameLineJsDoc(str: string) { + return `input ${str}`; + } + noJsDoc(str: string) { + return `input ${str}`; + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tsconfig.json new file mode 100644 index 0000000000..a6eca5e2a3 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "strict": true, + "types": [ + "node", + "source-map" + ], + "lib": [ + "dom", + "es5", + "es2015.core", + "es2015.collection" + ] + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 57f08df083..369efd363b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -7,7 +7,8 @@ "@types/source-map": "^0.5.1", "protobufjs": "5.0.0", "tsickle": "0.25.x", - "typescript": "2.5.x" + "typescript": "2.5.x", + "tsutils": "2.12.1" }, "devDependencies": { "clang-format": "1.0.49" From 48543757c5464facabfa50966ffdeb91acdc2d46 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Fri, 17 Nov 2017 13:09:01 -0800 Subject: [PATCH 0099/1134] Restore GitHub pages configurations These were lost by 6282c102d16acff7565b5ac07cebb7e8d3ef21ae because they existed only on GitHub and not in the Google- internal repo. PiperOrigin-RevId: 176149825 --- third_party/github.com/bazelbuild/rules_typescript/docs/CNAME | 1 + .../github.com/bazelbuild/rules_typescript/docs/_config.yml | 1 + 2 files changed, 2 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/CNAME create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/_config.yml diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/CNAME b/third_party/github.com/bazelbuild/rules_typescript/docs/CNAME new file mode 100644 index 0000000000..11f2cee2c4 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/CNAME @@ -0,0 +1 @@ +tsetse.info \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/_config.yml b/third_party/github.com/bazelbuild/rules_typescript/docs/_config.yml new file mode 100644 index 0000000000..fc24e7a62d --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-hacker \ No newline at end of file From 121cb173b9bf8e788641e9106d8b39acc7096956 Mon Sep 17 00:00:00 2001 From: Caleb Eggensperger Date: Tue, 21 Nov 2017 11:57:01 -0500 Subject: [PATCH 0100/1134] Add 'yarn add' step to README (#70) * Update README.md I had to do these additional steps to get this to work. I'm not sure if there was something else I was supposed to do, or some other way that these packages were supposed to get installed. Feel free to suggest an easier path. * Update README.md --- third_party/github.com/bazelbuild/rules_typescript/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 1c0c7334d6..b57bc6cbff 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -54,6 +54,8 @@ You can run the version Bazel has already installed: ```sh $ bazel run @yarn//:yarn +# Install this package as a dev dependency +$ bazel run @yarn//:yarn -- add -D @bazel/typescript ``` ## Usage From bd4b8cb96f6eb9718f4a7266837f271336dae90c Mon Sep 17 00:00:00 2001 From: alexeagle Date: Mon, 20 Nov 2017 17:44:44 -0800 Subject: [PATCH 0101/1134] Support TypeScript imports from 'workspace_name/some/path` We use this feature internally at Google, and find it useful when relative imports are too far away in the monorepo tree. Fixes #77 PiperOrigin-RevId: 176444068 --- third_party/github.com/bazelbuild/rules_typescript/README.md | 2 -- .../bazelbuild/rules_typescript/internal/common/tsconfig.bzl | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index b57bc6cbff..1c0c7334d6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -54,8 +54,6 @@ You can run the version Bazel has already installed: ```sh $ bazel run @yarn//:yarn -# Install this package as a dev dependency -$ bazel run @yarn//:yarn -- add -D @bazel/typescript ``` ## Usage diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 750ada0b9a..afe2edda8b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -64,6 +64,7 @@ def create_tsconfig(ctx, files, srcs, ]] module_roots = { "*": base_path_mappings, + ctx.workspace_name + "/*": base_path_mappings, } module_mappings = get_module_mappings(ctx.label, ctx.attr, srcs = srcs) From c4dc95c666f85de82033c9e7e139dae78f4998e1 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Tue, 21 Nov 2017 08:41:50 -0800 Subject: [PATCH 0102/1134] Add missing npm metadata to rules_typescript package.json Fixes #68 PiperOrigin-RevId: 176513275 --- .../github.com/bazelbuild/rules_typescript/package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 369efd363b..09272d3dc4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -1,7 +1,10 @@ { "name": "@bazel/typescript", "description": "Build TypeScript with Bazel", - "version": "0.3.0", + "version": "0.4.1", + "keywords": ["typescript", "bazel"], + "homepage": "https://github.com/bazelbuild/rules_typescript", + "license": "Apache-2.0", "dependencies": { "@types/node": "7.0.18", "@types/source-map": "^0.5.1", From bc965fc15a229b2459a0d19f257d07bb1d844166 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Tue, 21 Nov 2017 12:01:24 -0800 Subject: [PATCH 0103/1134] Strict deps plugin: don't crash when requested file not in program Angular creates a ts.Program with "stub" files - these are the .ngfactory.ts files among others which are used for code generation. These files don't actually exist on disk. The ts.CompilerHost is modified in the Angular compiler to treat these files as if they do exist, to allow module resolution to work. Now in https://github.com/angular/angular/pull/20547 I need to update the Angular compiler to produce the correct AMD module names (similar use case to how we change commonjs to goog.module internally, though the mechanism is different.) We need to treat these generated files as if they are part of the program, when we do this check: https://github.com/bazelbuild/rules_typescript/blob/121cb173b9bf8e788641e9106d8b39acc7096956/internal/tsc_wrapped/compiler_host.ts#L231 There are two possible solutions: - extract a method like isInProgram(path: string) so that Angular can override it - add the files to the compilationTargetSrc in bazel I think the second solution is more general, since we have a number of checks that predicate on whether the file is one of the requested compilation sources. This means we will have compilationTargetSrc entries that are not actually on disk, so we can't assume that we can load all of them from the program. PiperOrigin-RevId: 176541429 --- .../rules_typescript/internal/tsc_wrapped/strict_deps.ts | 1 + .../internal/tsc_wrapped/strict_deps_test.ts | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts index 0355c8fa69..8e51fe5826 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts @@ -77,6 +77,7 @@ export function checkModuleDeps( const result: ts.Diagnostic[] = []; for (const fileName of filesToCheck) { const sf = program.getSourceFile(fileName); + if (!sf) continue; for (const stmt of sf.statements) { if (stmt.kind !== ts.SyntaxKind.ImportDeclaration && stmt.kind !== ts.SyntaxKind.ExportDeclaration) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts index fcc4885fab..772a2f917c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts @@ -62,6 +62,11 @@ describe('strict deps', () => { return p; } + it('ignores files that are not in the program', () => { + const p = createProgram({}); + expect(checkModuleDeps(p, ['does-not-exist'], [], '/src').length).toBe(0); + }); + it('reports errors for transitive dependencies', () => { const p = createProgram({ '/src/p/sd1.ts': 'export let x = 1;', From 5bd059ae63151ef930b6428d5976fb50901a83c7 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Tue, 21 Nov 2017 14:42:03 -0800 Subject: [PATCH 0104/1134] Extract the logic for whether a file should have a module name. Angular compiler needs to override this so that generated factory files get named AMD modules, even though they are not included in the compilationTargetSrc. My last change indicated two ways forward. It turns out the one I took, by adding factory files to the compilationTargetSrc, had the unintentional side effect of reporting TS diagnostics from ngfactory.ts files, rather than the NG diagnostics. That's a regression, so I have to go the other way instead. PiperOrigin-RevId: 176563632 --- .../internal/tsc_wrapped/compiler_host.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index cff8ecd988..e0b4bdcc71 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -123,6 +123,11 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { return this.bazelOpts.compilationTargetSrc.indexOf(fileName) === -1; } + /** Whether the file is expected to be imported using a named module */ + shouldNameModule(fileName: string): boolean { + return this.bazelOpts.compilationTargetSrc.indexOf(fileName) !== -1; + } + /** Allows suppressing warnings for specific known libraries */ shouldIgnoreWarningsForPath(filePath: string): boolean { return this.bazelOpts.ignoreWarningPaths.some( @@ -228,9 +233,7 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { * allows a string as the first argument to define()" */ amdModuleName(sf: ts.SourceFile): string|undefined { - if (this.bazelOpts.compilationTargetSrc.indexOf(sf.fileName) === -1) { - return undefined; - } + if (!this.shouldNameModule(sf.fileName)) return undefined; // /build/work/bazel-out/local-fastbuild/bin/path/to/file.ts // -> path/to/file.ts const fileName = this.rootDirsRelative(sf.fileName); From 122e7de5c306c4e072099249c07ec3b1fc0e84c2 Mon Sep 17 00:00:00 2001 From: Caleb Eggensperger Date: Wed, 22 Nov 2017 13:36:07 -0800 Subject: [PATCH 0105/1134] Add a tsetse rule to ban equality comparison with NaN Closes #73 PiperOrigin-RevId: 176695245 --- .../rules_typescript/docs/equals-nan.md | 11 +++++++ .../internal/tsetse/BUILD.bazel | 1 + .../internal/tsetse/checker.ts | 12 ++++++- .../internal/tsetse/error_code.ts | 4 +++ .../rules_typescript/internal/tsetse/rule.ts | 4 +-- .../internal/tsetse/rules/BUILD | 1 + .../tsetse/rules/check_return_value_rule.ts | 3 +- .../internal/tsetse/rules/equals_nan_rule.ts | 31 +++++++++++++++++++ .../internal/tsetse/runner.ts | 2 ++ .../internal/tsetse/tests/equals_nan/BUILD | 28 +++++++++++++++++ .../tsetse/tests/equals_nan/negatives.ts | 6 ++++ .../tsetse/tests/equals_nan/positives.ts | 12 +++++++ 12 files changed, 111 insertions(+), 4 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/equals-nan.md create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/equals_nan_rule.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/negatives.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/positives.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/equals-nan.md b/third_party/github.com/bazelbuild/rules_typescript/docs/equals-nan.md new file mode 100644 index 0000000000..26f101f4cd --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/equals-nan.md @@ -0,0 +1,11 @@ + + +## Equals NaN rule + +Checking whether any value is equal to the special numeric value `NaN` will +always return false, by the spec. If you want to check whether a value is the +NaN value, use either the built-in [`isNaN`][1] function or the ES2015 function +[`Number.isNaN`][2]. + +[1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN +[2]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/BUILD.bazel index 3849bd8e76..918dc3d953 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/BUILD.bazel @@ -11,6 +11,7 @@ ts_library( name = "tsetse_lib", srcs = [ "checker.ts", + "error_code.ts", "failure.ts", "rule.ts", ], diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts index 1a8259f3e5..6ab8db927d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts @@ -47,8 +47,18 @@ export class Checker { * `nodeKind` node in `nodeHandlersMap` map. After all rules register their * handlers, the source file AST will be traversed. */ + on(nodeKind: ts.SyntaxKind.BinaryExpression, + handlerFunction: (checker: Checker, node: ts.BinaryExpression) => void, + code: number): void; + on(nodeKind: ts.SyntaxKind.CallExpression, + handlerFunction: (checker: Checker, node: ts.CallExpression) => void, + code: number): void; on(nodeKind: ts.SyntaxKind, - handlerFunction: (checker: Checker, node: ts.Node) => void, code: number) { + handlerFunction: (checker: Checker, node: ts.Node) => void, + code: number): void; + on( + nodeKind: ts.SyntaxKind, + handlerFunction: (checker: Checker, node: T) => void, code: number) { const newHandler: Handler = {handlerFunction, code}; const registeredHandlers: Handler[]|undefined = this.nodeHandlersMap.get(nodeKind); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts new file mode 100644 index 0000000000..ef1df60cbc --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts @@ -0,0 +1,4 @@ +export enum ErrorCode { + CHECK_RETURN_VALUE = 21222, + EQUALS_NAN = 21223, +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rule.ts index fa88b71a38..96d888a687 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rule.ts @@ -6,8 +6,8 @@ import {Checker} from './checker'; * files. */ export abstract class AbstractRule { - readonly ruleName: string; - readonly code: number; + abstract readonly ruleName: string; + abstract readonly code: number; /** * Registers handler functions on nodes in Checker. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/BUILD index 06e6ffd09a..23ead5aa4d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/BUILD @@ -6,6 +6,7 @@ ts_library( name = "rules", srcs = [ "check_return_value_rule.ts", + "equals_nan_rule.ts", ], compiler = "//internal/tsc_wrapped:tsc", supports_workers = False, diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts index 47176142c4..7216ad901c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts @@ -9,6 +9,7 @@ import * as tsutils from 'tsutils'; import * as ts from 'typescript'; import {Checker} from '../checker'; +import {ErrorCode} from '../error_code'; import {AbstractRule} from '../rule'; const FAILURE_STRING = 'return value is unused.' @@ -43,7 +44,7 @@ const METHODS_TO_CHECK = new Set([ export class Rule extends AbstractRule { readonly ruleName = 'check-return-value'; - readonly code = 21222; + readonly code = ErrorCode.CHECK_RETURN_VALUE; // registers checkCallExpression() function on ts.CallExpression node. // TypeScript conformance will traverse the AST of each source file and run diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/equals_nan_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/equals_nan_rule.ts new file mode 100644 index 0000000000..d8e9332dfd --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/equals_nan_rule.ts @@ -0,0 +1,31 @@ +/** + * @fileoverview Bans `== NaN` and `=== NaN` in TypeScript code, since it is + * always false for any value. + */ + +import * as ts from 'typescript'; + +import {Checker} from '../checker'; +import {ErrorCode} from '../error_code'; +import {AbstractRule} from '../rule'; + +const FAILURE_STRING = + 'x == NaN and x === NaN are always false; use isNaN(x) instead'; + +export class Rule extends AbstractRule { + readonly ruleName = 'equals-nan'; + readonly code = ErrorCode.EQUALS_NAN; + + register(checker: Checker) { + checker.on( + ts.SyntaxKind.BinaryExpression, checkBinaryExpression, this.code); + } +} + +function checkBinaryExpression(checker: Checker, node: ts.BinaryExpression) { + if ((node.left.getText() === 'NaN' || node.right.getText() === 'NaN') && + (node.operatorToken.kind === ts.SyntaxKind.EqualsEqualsToken || + node.operatorToken.kind === ts.SyntaxKind.EqualsEqualsEqualsToken)) { + checker.addFailureAtNode(node, FAILURE_STRING); + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts index 5d0364c42c..bec069ba25 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts @@ -10,6 +10,7 @@ import * as pluginApi from '../tsc_wrapped/plugin_api'; import {Checker} from './checker'; import {AbstractRule} from './rule'; import {Rule as CheckReturnValueRule} from './rules/check_return_value_rule'; +import {Rule as EqualsNanRule} from './rules/equals_nan_rule'; /** * The Tsetse check plugin performs compile-time static analysis for TypeScript @@ -20,6 +21,7 @@ export const PLUGIN: pluginApi.Plugin = { ts.Program => { const enabledRules: AbstractRule[] = [ new CheckReturnValueRule(), + new EqualsNanRule(), ]; const checker = new Checker(program); for (const rule of enabledRules) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD new file mode 100644 index 0000000000..58f566448d --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD @@ -0,0 +1,28 @@ +licenses(["notice"]) # Apache 2.0 + +load("//:defs.bzl", "ts_library") + +error_message = "TS21223: x == NaN and x === NaN are always false; use isNaN\(x\) instead" + +ts_library( + name = "positives", + testonly = 1, + srcs = [ + "positives.ts", + ], + expected_diagnostics = [ + "\(2,19\).*" + error_message, + "\(6,5\).*" + error_message, + "\(7,5\).*" + error_message, + "\(9,1\).*" + error_message, + "\(10,1\).*" + error_message, + ], +) + +ts_library( + name = "negatives", + testonly = 1, + srcs = [ + "negatives.ts", + ], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/negatives.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/negatives.ts new file mode 100644 index 0000000000..dcb13d32b8 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/negatives.ts @@ -0,0 +1,6 @@ +// tslint:disable +isNaN(1); +let x = NaN; +3 === 0 / 0; + +export {} // Make this file a module. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/positives.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/positives.ts new file mode 100644 index 0000000000..9426a66197 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/positives.ts @@ -0,0 +1,12 @@ +// tslint:disable +const equalsNan = 1 === NaN; + +declare const x: number; + +if (x === NaN) alert('never happens'); +if (x == NaN) alert('never happens'); + +NaN === NaN; +NaN === 0 / 0; + +export {} // Make this file a module. From 8f62ac64501a6391a8ded3e1e837930295be3e1b Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 27 Nov 2017 11:08:37 -0800 Subject: [PATCH 0106/1134] In the equals_nan rule, also check for x != NaN PiperOrigin-RevId: 177043856 --- .../internal/tsetse/rules/equals_nan_rule.ts | 25 ++++++++++++------- .../internal/tsetse/tests/equals_nan/BUILD | 14 +++++------ .../tsetse/tests/equals_nan/positives.ts | 2 ++ 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/equals_nan_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/equals_nan_rule.ts index d8e9332dfd..da8f7fec15 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/equals_nan_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/equals_nan_rule.ts @@ -1,6 +1,6 @@ /** - * @fileoverview Bans `== NaN` and `=== NaN` in TypeScript code, since it is - * always false for any value. + * @fileoverview Bans `== NaN`, `=== NaN`, `!= NaN`, and `!== NaN` in TypeScript + * code, since no value (including NaN) is equal to NaN. */ import * as ts from 'typescript'; @@ -9,9 +9,6 @@ import {Checker} from '../checker'; import {ErrorCode} from '../error_code'; import {AbstractRule} from '../rule'; -const FAILURE_STRING = - 'x == NaN and x === NaN are always false; use isNaN(x) instead'; - export class Rule extends AbstractRule { readonly ruleName = 'equals-nan'; readonly code = ErrorCode.EQUALS_NAN; @@ -23,9 +20,19 @@ export class Rule extends AbstractRule { } function checkBinaryExpression(checker: Checker, node: ts.BinaryExpression) { - if ((node.left.getText() === 'NaN' || node.right.getText() === 'NaN') && - (node.operatorToken.kind === ts.SyntaxKind.EqualsEqualsToken || - node.operatorToken.kind === ts.SyntaxKind.EqualsEqualsEqualsToken)) { - checker.addFailureAtNode(node, FAILURE_STRING); + if (node.left.getText() === 'NaN' || node.right.getText() === 'NaN') { + const operator = node.operatorToken; + if (operator.kind == ts.SyntaxKind.EqualsEqualsToken || + operator.kind === ts.SyntaxKind.EqualsEqualsEqualsToken) { + checker.addFailureAtNode( + node, + `x ${operator.getText()} NaN is always false; use isNaN(x) instead`); + } + if (operator.kind === ts.SyntaxKind.ExclamationEqualsEqualsToken || + operator.kind === ts.SyntaxKind.ExclamationEqualsToken) { + checker.addFailureAtNode( + node, + `x ${operator.getText()} NaN is always true; use !isNaN(x) instead`); + } } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD index 58f566448d..1061bcfa7b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD @@ -2,8 +2,6 @@ licenses(["notice"]) # Apache 2.0 load("//:defs.bzl", "ts_library") -error_message = "TS21223: x == NaN and x === NaN are always false; use isNaN\(x\) instead" - ts_library( name = "positives", testonly = 1, @@ -11,11 +9,13 @@ ts_library( "positives.ts", ], expected_diagnostics = [ - "\(2,19\).*" + error_message, - "\(6,5\).*" + error_message, - "\(7,5\).*" + error_message, - "\(9,1\).*" + error_message, - "\(10,1\).*" + error_message, + "\(2,19\): error TS21223: x === NaN is always false; use isNaN\(x\) instead", + "\(6,5\): error TS21223: x === NaN is always false; use isNaN\(x\) instead", + "\(7,5\): error TS21223: x == NaN is always false; use isNaN\(x\) instead", + "\(8,5\): error TS21223: x !== NaN is always true; use !isNaN\(x\) instead", + "\(9,5\): error TS21223: x != NaN is always true; use !isNaN\(x\) instead", + "\(11,1\): error TS21223: x === NaN is always false; use isNaN\(x\) instead", + "\(12,1\): error TS21223: x === NaN is always false; use isNaN\(x\) instead", ], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/positives.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/positives.ts index 9426a66197..9556f23706 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/positives.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/positives.ts @@ -5,6 +5,8 @@ declare const x: number; if (x === NaN) alert('never happens'); if (x == NaN) alert('never happens'); +if (x !== NaN) alert('always happens'); +if (x != NaN) alert('always happens'); NaN === NaN; NaN === 0 / 0; From 9dad8ccac3ebf1b2195a4ce073a8623d7b517ac8 Mon Sep 17 00:00:00 2001 From: Filipe Silva Date: Mon, 27 Nov 2017 11:41:15 -0800 Subject: [PATCH 0107/1134] Don't push to diagnostics Diagnostics in TS 2.6 are a `ReadonlyArray`. Closes #82 PiperOrigin-RevId: 177048594 --- .../rules_typescript/internal/tsc_wrapped/strict_deps.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts index 8e51fe5826..3a565083e8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts @@ -51,7 +51,7 @@ export const PLUGIN: pluginApi.Plugin = { wrap: (program: ts.Program, config: StrictDepsPluginConfig): ts.Program => { const proxy = pluginApi.createProxy(program); proxy.getSemanticDiagnostics = function(sourceFile: ts.SourceFile) { - const result = program.getSemanticDiagnostics(sourceFile); + const result = [...program.getSemanticDiagnostics(sourceFile)]; perfTrace.wrap('checkModuleDeps', () => { result.push(...checkModuleDeps( program, config.compilationTargetSrc, config.allowedStrictDeps, From 5c0af5277e4240028e114c8fbb91da41acd095e8 Mon Sep 17 00:00:00 2001 From: mrmeku Date: Mon, 27 Nov 2017 13:34:20 -0800 Subject: [PATCH 0108/1134] Update CONTRIBUTORS Added myself and Andrew to the contributors list for funsies. Closes #81 PiperOrigin-RevId: 177063785 --- third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS b/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS index 174d3880b0..5af1511b38 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS +++ b/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS @@ -9,4 +9,6 @@ # Names should be added to this file as: # Name +Andrew Allen Alex Eagle +Daniel Muller From 1be225447ef6cbcc4ec595b15da456706d496460 Mon Sep 17 00:00:00 2001 From: clydin <19598772+clydin@users.noreply.github.com> Date: Tue, 28 Nov 2017 13:26:50 -0800 Subject: [PATCH 0109/1134] allow tsetse to build on TS2.6 Closes #84 PiperOrigin-RevId: 177208267 --- .../bazelbuild/rules_typescript/internal/tsetse/runner.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts index bec069ba25..f4de8dbaba 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts @@ -32,7 +32,7 @@ export const PLUGIN: pluginApi.Plugin = { const proxy = pluginApi.createProxy(program); proxy.getSemanticDiagnostics = (sourceFile: ts.SourceFile) => { - const result = program.getSemanticDiagnostics(sourceFile); + const result = [...program.getSemanticDiagnostics(sourceFile)]; perfTrace.wrap('checkConformance', () => { result.push(...checker.execute(sourceFile) .map(failure => failure.toDiagnostic())); From 61c58383121d7c829997a66912e0ef28a028efa4 Mon Sep 17 00:00:00 2001 From: clydin <19598772+clydin@users.noreply.github.com> Date: Tue, 28 Nov 2017 13:29:58 -0800 Subject: [PATCH 0110/1134] update CompilerHost.writeFile to support TS2.6 Closes #83 PiperOrigin-RevId: 177208696 --- .../internal/tsc_wrapped/compiler_host.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index e0b4bdcc71..d654fb172a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -270,18 +270,18 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { writeFile( fileName: string, content: string, writeByteOrderMark: boolean, - onError?: (message: string) => void, - sourceFiles?: ts.SourceFile[]): void { + onError: ((message: string) => void) | undefined, + sourceFiles: ReadonlyArray): void { perfTrace.wrap( `writeFile ${fileName}`, () => this.writeFileImpl( - fileName, content, writeByteOrderMark, onError, sourceFiles)); + fileName, content, writeByteOrderMark, onError, sourceFiles || [])); } writeFileImpl( fileName: string, content: string, writeByteOrderMark: boolean, - onError?: (message: string) => void, - sourceFiles?: ts.SourceFile[]): void { + onError: ((message: string) => void) | undefined, + sourceFiles: ReadonlyArray): void { // Workaround https://github.com/Microsoft/TypeScript/issues/18648 if ((this.options.module === ts.ModuleKind.AMD || this.options.module === ts.ModuleKind.UMD) && From 4c82b9531c7f93a65767309bd2fc3b4a73fb071b Mon Sep 17 00:00:00 2001 From: Caleb Eggensperger Date: Tue, 28 Nov 2017 14:08:28 -0800 Subject: [PATCH 0111/1134] Update yarn.lock Closes #80 PiperOrigin-RevId: 177214935 --- .../github.com/bazelbuild/rules_typescript/yarn.lock | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index 25a9e31c76..d297574996 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -230,6 +230,16 @@ tsickle@0.25.x: source-map "^0.5.6" source-map-support "^0.4.2" +tslib@^1.7.1: + version "1.8.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.8.0.tgz#dc604ebad64bcbf696d613da6c954aa0e7ea1eb6" + +tsutils@2.12.1: + version "2.12.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.12.1.tgz#f4d95ce3391c8971e46e54c4cf0edb0a21dd5b24" + dependencies: + tslib "^1.7.1" + typescript@2.5.x: version "2.5.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.3.tgz#df3dcdc38f3beb800d4bc322646b04a3f6ca7f0d" From c8ec156763dfc7f78c2a517d934da63057042276 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Tue, 28 Nov 2017 16:42:43 -0800 Subject: [PATCH 0112/1134] Document that we use path mapping for "workspace-absolute" imports. Fixes #65 PiperOrigin-RevId: 177238468 --- .../bazelbuild/rules_typescript/README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 1c0c7334d6..3759443eb4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -86,6 +86,23 @@ outputs from TypeScript will be written to disk, next to the `.d.ts` files > [declarationDir](https://www.typescriptlang.org/docs/handbook/compiler-options.html) > compiler option will be silently overwritten if present. +## Writing TypeScript code for Bazel + +Bazel's TypeScript compiler has your workspace path mapped, so you can import +from an absolute path starting from your workspace. + +`/WORKSPACE`: +```python +workspace(name = "myworkspace") +``` + +`/some/long/path/to/deeply/nested/subdirectory.ts`: +```javascript +import {thing} from 'myworkspace/place'; +``` + +will import from `/place.ts`. + ## Notes If you'd like a "watch mode", try https://github.com/bazelbuild/bazel-watcher From de4ea2cebbe2c3d659f60005c7b73fb91a5f7886 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Wed, 29 Nov 2017 06:24:07 -0800 Subject: [PATCH 0113/1134] Only emit a performance trace if the rule has sources, and thus has a generating action. This fixes a bug where base ts_library aliases fail to compile with perf_trace set to true. PiperOrigin-RevId: 177300740 --- .../bazelbuild/rules_typescript/internal/common/compilation.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 7ebcb2988d..55e851ce97 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -226,7 +226,7 @@ def compile_ts(ctx, tsconfig_es6["compilerOptions"]["declaration"] = False tsconfig_es6["compilerOptions"].pop("declarationDir") outputs = transpiled_closure_js + tsickle_externs - if perf_trace: + if perf_trace and has_sources: perf_trace_file = ctx.new_file(ctx.label.name + ".es6.trace") tsconfig_es6["bazelOptions"]["perfTracePath"] = perf_trace_file.path outputs.append(perf_trace_file) From b1f643381f84dabf8f61acb61ceda0688be07a35 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Wed, 29 Nov 2017 07:07:25 -0800 Subject: [PATCH 0114/1134] List Martin Probst as a contributor. I contribute patches and I am the original author of quite a bit of this code. PiperOrigin-RevId: 177304436 --- third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS | 1 + 1 file changed, 1 insertion(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS b/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS index 5af1511b38..909f21ef40 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS +++ b/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS @@ -12,3 +12,4 @@ Andrew Allen Alex Eagle Daniel Muller +Martin Probst From 7f6e38c61fdf4e1a3a0a2c58b212bd78b6150a0f Mon Sep 17 00:00:00 2001 From: alexeagle Date: Wed, 29 Nov 2017 11:08:39 -0800 Subject: [PATCH 0115/1134] Enforce strict dependencies. It is now an error to import a symbol from a ts_library that is not listed in the deps[]. Fixes #67 PiperOrigin-RevId: 177334933 --- .../bazelbuild/rules_typescript/defs.bzl | 7 +++- .../internal/e2e/strict_deps/BUILD | 39 +++++++++++++++++++ .../internal/e2e/strict_deps/child.ts | 4 ++ .../internal/e2e/strict_deps/grandparent.ts | 1 + .../internal/e2e/strict_deps/parent.ts | 4 ++ .../internal/tsc_wrapped/strict_deps.ts | 12 ++++-- .../internal/tsc_wrapped/strict_deps_test.ts | 9 +++++ .../internal/tsc_wrapped/tsc_wrapped.ts | 11 ++++++ .../internal/tsc_wrapped/tsconfig.ts | 4 ++ .../internal/tsetse/rules/BUILD | 14 +++++++ .../tsetse/tests/check_return_value/BUILD | 15 +++++++ .../internal/tsetse/tests/equals_nan/BUILD | 15 +++++++ .../bazelbuild/rules_typescript/package.json | 2 +- 13 files changed, 131 insertions(+), 6 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/BUILD create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/child.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/grandparent.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/parent.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl index 5c537d6d07..0d4654ec80 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl @@ -16,5 +16,8 @@ Users should not load files under "/internal" """ -load("//internal:build_defs.bzl", "ts_library") -load("//internal:ts_config.bzl", "ts_config") +load("//internal:build_defs.bzl", _ts_library = "ts_library") +load("//internal:ts_config.bzl", _ts_config = "ts_config") + +ts_library = _ts_library +ts_config = _ts_config diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/BUILD new file mode 100644 index 0000000000..604704e81c --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/BUILD @@ -0,0 +1,39 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +licenses(["notice"]) # Apache 2.0 + +package(default_visibility = ["//visibility:public"]) + +load("//:defs.bzl", "ts_library") + +ts_library( + name = "grandparent", + srcs = ["grandparent.ts"], +) + +ts_library( + name = "parent", + srcs = ["parent.ts"], + deps = [":grandparent"], +) + +ts_library( + name = "strict_deps", + srcs = ["child.ts"], + expected_diagnostics = [ + "TS2307:child\.ts\(2,.*transitive dependency.*not allowed", + ], + deps = [":parent"], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/child.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/child.ts new file mode 100644 index 0000000000..f7bca1371a --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/child.ts @@ -0,0 +1,4 @@ +// The line below is a strict deps violation: +import {Symbol} from './grandparent'; + +console.log(Symbol); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/grandparent.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/grandparent.ts new file mode 100644 index 0000000000..d352bd651c --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/grandparent.ts @@ -0,0 +1 @@ +export class Symbol {} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/parent.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/parent.ts new file mode 100644 index 0000000000..6df328773d --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/parent.ts @@ -0,0 +1,4 @@ +import {Symbol} from './grandparent'; +export const x = 1; + +console.log(Symbol); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts index 3a565083e8..4bc622ab0a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts @@ -25,6 +25,9 @@ export interface StrictDepsPluginConfig { compilationTargetSrc: string[]; allowedStrictDeps: string[]; rootDir: string; + // Paths where users may freely import without declared dependencies. + // This is used in Bazel where dependencies on node_modules may be undeclared. + ignoredFilesPrefix?: string; } /** The TypeScript diagnostic code for "Cannot find module ...". */ @@ -55,7 +58,7 @@ export const PLUGIN: pluginApi.Plugin = { perfTrace.wrap('checkModuleDeps', () => { result.push(...checkModuleDeps( program, config.compilationTargetSrc, config.allowedStrictDeps, - config.rootDir)); + config.rootDir, config.ignoredFilesPrefix)); }); return result; }; @@ -66,7 +69,7 @@ export const PLUGIN: pluginApi.Plugin = { // Exported for testing export function checkModuleDeps( program: ts.Program, filesToCheck: string[], allowedDeps: string[], - rootDir: string): ts.Diagnostic[] { + rootDir: string, ignoredFilesPrefix?: string): ts.Diagnostic[] { function stripExt(fn: string) { return fn.replace(/(\.d)?\.tsx?$/, ''); } @@ -93,7 +96,10 @@ export function checkModuleDeps( } // Module imports can only have one declaration location. const declFileName = sym.declarations[0].getSourceFile().fileName; - if (allowedMap[stripExt(declFileName)]) continue; + if (allowedMap[stripExt(declFileName)] || + (ignoredFilesPrefix && declFileName.startsWith(ignoredFilesPrefix))) { + continue; + } const importName = path.relative(rootDir, declFileName); result.push({ file: sf, diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts index 772a2f917c..e364d4a1d5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts @@ -67,6 +67,15 @@ describe('strict deps', () => { expect(checkModuleDeps(p, ['does-not-exist'], [], '/src').length).toBe(0); }); + it('permits dependencies on ignored files', () => { + const p = createProgram({ + '/node_modules/somepkg/index.d.ts': 'export const a = 1;', + '/p/sd1.ts': 'import {a} from "somepkg";', + }); + const diags = checkModuleDeps(p, ['p/sd1.ts'], [], '/', 'node_modules'); + expect(diags.length).toBe(0, diags); + }); + it('reports errors for transitive dependencies', () => { const p = createProgram({ '/src/p/sd1.ts': 'export let x = 1;', diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 6885f1863e..ae391ebbb6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -8,6 +8,7 @@ import {CompilerHost} from './compiler_host'; import * as diagnostics from './diagnostics'; import {CachedFileLoader, FileCache, FileLoader, UncachedFileLoader} from './file_cache'; import {wrap} from './perf_trace'; +import {PLUGIN as strictDepsPlugin} from './strict_deps'; import {BazelOptions, parseTsconfig} from './tsconfig'; import {fixUmdModuleDeclarations} from './umd_module_declaration_transform'; import {debug, log, runAsWorker, runWorkerLoop} from './worker'; @@ -92,6 +93,16 @@ function runOneBuild( } let diags: ts.Diagnostic[] = []; // Install extra diagnostic plugins + if (!bazelOpts.disableStrictDeps) { + program = strictDepsPlugin.wrap(program, { + ...bazelOpts, + rootDir: options.rootDir, + // The strict deps plugin will compare this path with the fileName of a + // sourceFile found in the symbol table. These paths have their symlinks + // resolved by TypeScript, so we must resolve this prefix the same way. + ignoredFilesPrefix: compilerHost.realpath(bazelOpts.nodeModulesPrefix) + }); + } program = tsetsePlugin.wrap(program, bazelOpts.disabledTsetseRules); // These checks mirror ts.getPreEmitDiagnostics, with the important diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index 01ba3931c5..9d9b1042aa 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -169,6 +169,10 @@ export function parseTsconfig( bazelOpts.allowedStrictDeps.map(f => path.resolve(options.rootDir, f)); bazelOpts.typeBlackListPaths = bazelOpts.typeBlackListPaths.map(f => path.resolve(options.rootDir, f)); + if (bazelOpts.nodeModulesPrefix) { + bazelOpts.nodeModulesPrefix = + path.resolve(options.rootDir, bazelOpts.nodeModulesPrefix); + } return [{options, bazelOpts, files, config}, null, {target}]; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/BUILD index 23ead5aa4d..6079a57ac3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/BUILD @@ -1,3 +1,17 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + licenses(["notice"]) # Apache 2.0 load("//:defs.bzl", "ts_library") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD index b41df95f1f..60bc8f89be 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD @@ -1,7 +1,22 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + licenses(["notice"]) # Apache 2.0 load("//:defs.bzl", "ts_library") + error_message = "TS21222: return value is unused.\\n\\tSee http://tsetse.info/check-return-value" ts_library( diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD index 1061bcfa7b..cf4ff53e20 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD @@ -1,7 +1,22 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + licenses(["notice"]) # Apache 2.0 load("//:defs.bzl", "ts_library") + ts_library( name = "positives", testonly = 1, diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 09272d3dc4..0d53a08588 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -1,7 +1,7 @@ { "name": "@bazel/typescript", "description": "Build TypeScript with Bazel", - "version": "0.4.1", + "version": "0.5.0", "keywords": ["typescript", "bazel"], "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", From db0d333f0427e5b9d0085700dbf6e28514e48cb7 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Wed, 29 Nov 2017 11:16:38 -0800 Subject: [PATCH 0116/1134] List Bowen Ni as a contributor. I co-authored Tsetse. PiperOrigin-RevId: 177336318 --- third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS | 1 + 1 file changed, 1 insertion(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS b/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS index 909f21ef40..891139ea28 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS +++ b/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS @@ -11,5 +11,6 @@ Andrew Allen Alex Eagle +Bowen Ni Daniel Muller Martin Probst From 20aa84b7c42e3b6a08964571e7ec5d057befa5db Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Wed, 29 Nov 2017 13:50:32 -0800 Subject: [PATCH 0117/1134] Fix Andrew Allen's email to be the right one PiperOrigin-RevId: 177357974 --- third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS b/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS index 891139ea28..5c23f73d27 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS +++ b/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS @@ -9,7 +9,7 @@ # Names should be added to this file as: # Name -Andrew Allen +Andrew Allen Alex Eagle Bowen Ni Daniel Muller From 6d82a35cdecfee3495745c8caca96c8f5f1cf19e Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Wed, 29 Nov 2017 16:08:45 -0800 Subject: [PATCH 0118/1134] PiperOrigin-RevId: 177378570 --- .../rules_typescript/.circleci/config.yml | 16 +- .../bazelbuild/rules_typescript/README.md | 67 +- .../bazelbuild/rules_typescript/WORKSPACE | 6 +- .../bazelbuild/rules_typescript/defs.bzl | 2 + .../rules_typescript/examples/app/BUILD.bazel | 22 + .../rules_typescript/examples/app/app.ts | 4 + .../examples/app/app_e2e_test.ts | 20 + .../rules_typescript/examples/app/index.html | 21 + .../rules_typescript/internal/concatjs/BUILD | 25 + .../internal/concatjs/BUILD.bazel | 15 - .../rules_typescript/internal/devserver/BUILD | 43 + .../internal/devserver/README.md | 9 + .../internal/devserver/devserver.go | 199 +++++ .../internal/devserver/devserver_test.go | 111 +++ .../internal/devserver/main/BUILD | 37 + .../internal/devserver/main/main.go | 47 ++ .../internal/devserver/ts_devserver.bzl | 104 +++ .../internal/tsc_wrapped/BUILD.bazel | 1 + .../bazelbuild/rules_typescript/package.json | 9 +- .../rules_typescript/protractor.conf.js | 8 + .../bazelbuild/rules_typescript/yarn.lock | 777 +++++++++++++++++- 21 files changed, 1515 insertions(+), 28 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/app/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/app/app.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/app/app_e2e_test.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/app/index.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/BUILD delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/devserver/README.md create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver.go create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver_test.go create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/devserver/main/BUILD create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/devserver/main/main.go create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl create mode 100644 third_party/github.com/bazelbuild/rules_typescript/protractor.conf.js diff --git a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml index 4757ef0b55..a4d7778c05 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml @@ -60,10 +60,24 @@ jobs: paths: - "node_modules" + # Runs end-to-end browser tests. + test: + <<: *job_defaults + steps: + - checkout: + <<: *post_checkout + - restore_cache: + key: rules_typescript-{{ checksum "yarn.lock" }} + - run: bazel run @yarn//:yarn + # Don't occupy the bazel server, as this test wants to run Bazel itself + - run: bazel run @yarn//:yarn test --script_path=yarn_test.sh + - run: ./yarn_test.sh + workflows: version: 2 # Run the two builds in parallel, reporting separate status to github PRs. default_workflow: jobs: - build - - build_no_bazelrc \ No newline at end of file + - build_no_bazelrc + - test \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 3759443eb4..afb2b9c828 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -1,6 +1,8 @@ # TypeScript rules for Bazel -[![CircleCI](https://circleci.com/gh/bazelbuild/rules_typescript.svg?style=svg)](https://circleci.com/gh/bazelbuild/rules_typescript) +Circle CI | Bazel CI +:---: | :---: +[![CircleCI](https://circleci.com/gh/bazelbuild/rules_typescript.svg?style=svg)](https://circleci.com/gh/bazelbuild/rules_typescript) | [![Build Status](http://ci.bazel.io/buildStatus/icon?job=rules_typescript)](http://ci.bazel.io/job/rules_typescript) **WARNING: this is an early release with limited features. Breaking changes are likely. Not recommended for general use.** @@ -58,12 +60,14 @@ $ bazel run @yarn//:yarn ## Usage -Currently, the only available rule is `ts_library` which invokes the TypeScript -compiler on one compilation unit (generally one directory of source files). +### Compiling TypeScript: `ts_library` + +The `ts_library` rule invokes the TypeScript compiler on one compilation unit, +or "library" (generally one directory of source files). Create a `BUILD` file next to your sources: -``` +```python package(default_visibility=["//visibility:public"]) load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") @@ -86,6 +90,61 @@ outputs from TypeScript will be written to disk, next to the `.d.ts` files > [declarationDir](https://www.typescriptlang.org/docs/handbook/compiler-options.html) > compiler option will be silently overwritten if present. +### Serving TypeScript for development + +There are two choices for development mode: + +1. Use the `ts_devserver` rule to bring up our simple, fast development server. + This is intentionally very simple, to help you get started quickly. However, + since there are many development servers available, we do not want to mirror + their features in yet another server we maintain. +1. Teach your real frontend server to serve files from Bazel's output directory. + This is not yet documented. Choose this option if you have an existing server + used in development mode, or if your requirements exceed what the + `ts_devserver` supports. Be careful that your development round-trip stays + fast (should be under two seconds). + +To use `ts_devserver`, you simply `load` the rule, and call it with `deps` that +point to your `ts_library` target(s): + +```python +load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver", "ts_library") + +ts_library( + name = "app", + srcs = ["app.ts"], +) + +ts_devserver( + name = "devserver", + # We'll collect all the devmode JS sources from these TypeScript libraries + deps = [":app"], + # This is the path we'll request from the browser, see index.html + serving_path = "/bundle.js", + # The devserver can serve our static files too + static_files = ["index.html"], +) +``` + +The `index.html` should be the same one you use for production, and it should +load the JavaScript bundle from the path indicated in `serving_path`. + +If you don't have an index.html file, a simple one will be generated by the +`ts_devserver`. + +See `examples/app` in this repository for a working example. To run the +devserver, we recommend you use [ibazel]: + +```sh +$ ibazel run examples/app:devserver +``` + +`ibazel` will keep the devserver program running, and provides a LiveReload +server so the browser refreshes the application automatically when each build +finishes. + +[ibazel]: https://github.com/bazelbuild/bazel-watcher + ## Writing TypeScript code for Bazel Bazel's TypeScript compiler has your workspace path mapped, so you can import diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 7958bb5fa8..65bcdca61a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -17,7 +17,7 @@ workspace(name = "build_bazel_rules_typescript") git_repository( name = "build_bazel_rules_nodejs", remote = "https://github.com/bazelbuild/rules_nodejs", - tag = "0.1.11", + tag = "0.2.2", ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories") @@ -33,8 +33,8 @@ node_repositories(package_json = ["//:package.json"]) http_archive( name = "io_bazel_rules_go", - url = "https://github.com/bazelbuild/rules_go/releases/download/0.7.0/rules_go-0.7.0.tar.gz", - sha256 = "91fca9cf860a1476abdc185a5f675b641b60d3acf0596679a27b580af60bf19c", + url = "https://github.com/bazelbuild/rules_go/releases/download/0.7.1/rules_go-0.7.1.tar.gz", + sha256 = "341d5eacef704415386974bc82a1783a8b7ffbff2ab6ba02375e1ca20d9b031c", ) load("@io_bazel_rules_go//go:def.bzl", "go_rules_dependencies", "go_register_toolchains") diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl index 0d4654ec80..8ea09afd03 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl @@ -18,6 +18,8 @@ Users should not load files under "/internal" """ load("//internal:build_defs.bzl", _ts_library = "ts_library") load("//internal:ts_config.bzl", _ts_config = "ts_config") +load("//internal/devserver:ts_devserver.bzl", _ts_devserver = "ts_devserver_macro") ts_library = _ts_library ts_config = _ts_config +ts_devserver = _ts_devserver diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/app/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/app/BUILD.bazel new file mode 100644 index 0000000000..aaab7047bc --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/app/BUILD.bazel @@ -0,0 +1,22 @@ +load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver", "ts_library") + +ts_library( + name = "app", + srcs = ["app.ts"], +) + +ts_devserver( + name = "devserver", + # We'll collect all the devmode JS sources from these TypeScript libraries + deps = [":app"], + # This is the path we'll request from the browser, see index.html + serving_path = "/bundle.js", + # The devserver can serve our static files too + static_files = ["index.html"], +) + +ts_library( + name = "e2e", + testonly = 1, + srcs = ["app_e2e_test.ts"], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/app/app.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/app/app.ts new file mode 100644 index 0000000000..6c1c6e9d06 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/app/app.ts @@ -0,0 +1,4 @@ +const el: HTMLDivElement = document.createElement('div'); +el.innerText = 'Hello, TypeScript'; +el.className = 'ts1'; +document.body.appendChild(el); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/app/app_e2e_test.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/app/app_e2e_test.ts new file mode 100644 index 0000000000..68a1b2b2b1 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/app/app_e2e_test.ts @@ -0,0 +1,20 @@ +import {browser, by, element, ExpectedConditions} from 'protractor'; + +// This test uses Protractor without Angular, so disable Angular features +browser.waitForAngularEnabled(false); + +describe('Devserver', () => { + beforeAll(() => { + browser.get(''); + // Don't run any specs until we see a
on the page. + browser.wait( + ExpectedConditions.presenceOf(element(by.css('div.ts1'))), + /*timeout, must include server build/startup */ 30 * 1000); + }); + + it('should display: Hello world!', (done) => { + const div = element(by.css('div.ts1')); + div.getText().then(t => expect(t).toEqual(`Hello, TypeScript`)); + done(); + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/app/index.html b/third_party/github.com/bazelbuild/rules_typescript/examples/app/index.html new file mode 100644 index 0000000000..91116b98a3 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/app/index.html @@ -0,0 +1,21 @@ + + + + + + ts_devserver example + + + + + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/BUILD new file mode 100644 index 0000000000..7d30ee2133 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/BUILD @@ -0,0 +1,25 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +package(default_visibility = ["//internal:__subpackages__"]) + +licenses(["notice"]) # Apache 2.0 + +filegroup( + name = "source_tree", + srcs = glob(["**/*"]), +) + +go_library( + name = "concatjs", + importpath = "github.com/bazelbuild/rules_typescript/internal/concatjs/concatjs", + srcs = ["concatjs.go"], +) + +go_test( + name = "concatjs_test", + # See https://github.com/bazelbuild/rules_go/issues/721 + importpath = "do_not_import", + size = "small", + srcs = ["concatjs_test.go"], + library = ":concatjs", +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/BUILD.bazel deleted file mode 100644 index ea9a1c0a06..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/concatjs/BUILD.bazel +++ /dev/null @@ -1,15 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - -go_library( - name = "go_default_library", - srcs = ["concatjs.go"], - importpath = "github.com/bazelbuild/rules_typescript/internal/concatjs", - visibility = ["//:__subpackages__"], -) - -go_test( - name = "go_default_test", - srcs = ["concatjs_test.go"], - importpath = "github.com/bazelbuild/rules_typescript/internal/concatjs", - library = ":go_default_library", -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD new file mode 100644 index 0000000000..e6e53c6f94 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD @@ -0,0 +1,43 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +licenses(["notice"]) # Apache 2.0 + +package(default_visibility = [ + "//internal:__subpackages__", +]) + +filegroup( + name = "source_tree", + srcs = [ + "//internal/devserver/main:source_tree", + ] + glob(["**/*"]), +) + +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "devserver", + importpath = "github.com/bazelbuild/rules_typescript/internal/devserver/devserver", + srcs = ["devserver.go"], +) + +go_test( + name = "devserver_test", + size = "small", + srcs = ["devserver_test.go"], + library = ":devserver", + # See https://github.com/bazelbuild/rules_go/issues/721 + importpath = "do_not_import", +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/README.md b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/README.md new file mode 100644 index 0000000000..86e920df1a --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/README.md @@ -0,0 +1,9 @@ +# TypeScript devserver + +This development server is very simple. It's meant to be a convenient step in +the "getting started" workflow. Once you have any real requirements, you should +develop against your real frontend server instead. + +This devserver includes the "concatjs" bundling strategy. If you use a different +frontend server, you should port this library to whatever language you run in. +Contributions of such libraries are welcome. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver.go b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver.go new file mode 100644 index 0000000000..ef811e2034 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver.go @@ -0,0 +1,199 @@ +// Package devserver provides code shared between Bazel and Blaze. +package devserver + +import ( + "bytes" + "fmt" + "net" + "net/http" + "net/url" + "os" + "path/filepath" + "strings" + "time" +) + +func shouldAllowCors(request *http.Request) bool { + hostname, err := os.Hostname() + if err != nil { + return false + } + referer, err := url.Parse(request.Header.Get("Origin")) + if err != nil { + return false + } + host, _, err := net.SplitHostPort(referer.Host) + // SplitHostPort fails when the parameter doesn't have a port. + if err != nil { + host = referer.Host + } + return host == hostname || host == "localhost" +} + +func customNotFoundMiddleware(notFound http.HandlerFunc, passThrough http.HandlerFunc) http.HandlerFunc { + return func(writer http.ResponseWriter, request *http.Request) { + passThrough( + &customNotFoundResponseWriter{ResponseWriter: writer, request: request, notFound: notFound}, + request, + ) + } +} + +type customNotFoundResponseWriter struct { + http.ResponseWriter + + request *http.Request + notFound http.HandlerFunc + has404 bool + hasWrite bool +} + +// Write implements http.ResponseWriter.Write. +func (w *customNotFoundResponseWriter) Write(b []byte) (int, error) { + w.hasWrite = true + if w.has404 { + // We have already written the not found response, so drop this one. + return len(b), nil + } + return w.ResponseWriter.Write(b) +} + +// WriteHeader implements http.ResponseWriter.WriteHeader. +func (w *customNotFoundResponseWriter) WriteHeader(code int) { + if code != http.StatusNotFound || w.hasWrite { + // We only intercept not found statuses. We also don't intercept statuses written after the + // first write as these are an error and should be handled by the default ResponseWriter. + w.ResponseWriter.WriteHeader(code) + return + } + + // WriteHeader writes out the entire header (including content type) and only the first call + // will succeed. Therefore, if we want the correct content type set, we must set it here. + w.Header().Del("Content-Type") + w.Header().Add("Content-Type", "text/html; charset=utf-8") + w.ResponseWriter.WriteHeader(code) + w.has404 = true + + // We have already written the header, so drop any calls to WriteHeader made by the not found + // handler. These additional calls are expected, and if passed through, would cause the base + // ResponseWriter to unnecessarily spam the error log. + w.notFound(&headerSuppressorResponseWriter{w.ResponseWriter}, w.request) + w.hasWrite = true +} + +type headerSuppressorResponseWriter struct { + http.ResponseWriter +} + +// WriteHeader implements http.ResponseWriter.WriteHeader. +func (w *headerSuppressorResponseWriter) WriteHeader(code int) {} + +// CreateFileHandler returns an http handler to locate files on disk +func CreateFileHandler(servingPath, manifest string, pkgs []string, base string) http.HandlerFunc { + pkgPaths := chainedDir{} + for _, pkg := range pkgs { + path := filepath.Join(base, pkg) + if _, err := os.Stat(path); err != nil { + fmt.Fprintf(os.Stderr, "Cannot read server root package at %s: %v\n", path, err) + os.Exit(1) + } + pkgPaths = append(pkgPaths, http.Dir(path)) + } + pkgPaths = append(pkgPaths, http.Dir(base)) + + fileHandler := http.FileServer(pkgPaths).ServeHTTP + + // defaultIndex is not cached, so that a user's edits will be reflected. + defaultIndex := filepath.Join(base, pkgs[0], "index.html") + defaultPage := []byte(fmt.Sprintf(` + + + ts_devserver (%s) + + + + + + `, manifest, servingPath)) + + // indexHandler serves an index.html if present, or otherwise serves a minimal + // generated index.html with a script tag to include the bundled js source. + indexHandler := func(w http.ResponseWriter, r *http.Request) { + if _, err := os.Stat(defaultIndex); err == nil { + http.ServeFile(w, r, defaultIndex) + return + } + content := bytes.NewReader(defaultPage) + http.ServeContent(w, r, "index.html", time.Now(), content) + } + + // Serve a custom index.html so as to override the default directory listing + // from http.FileServer when no index.html file present. + indexOnNotFoundHandler := func(writer http.ResponseWriter, request *http.Request) { + // The browser can't tell the difference between different source checkouts or different devserver + // instances, so it may mistakenly cache static files (including templates) using versions from + // old instances if they haven't been modified more recently. To prevent this, we force no-cache + // on all static files. + writer.Header().Add("Cache-Control", "no-cache, no-store, must-revalidate") + if shouldAllowCors(request) { + writer.Header().Add("Access-Control-Allow-Origin", request.Header.Get("Origin")) + writer.Header().Add("Access-Control-Allow-Credentials", "true") + } + writer.Header().Add("Pragma", "no-cache") + writer.Header().Add("Expires", "0") + // Add gzip headers if serving .gz files. + if strings.HasSuffix(request.URL.EscapedPath(), ".gz") { + writer.Header().Add("Content-Encoding", "gzip") + } + + if request.URL.Path == "/" { + indexHandler(writer, request) + return + } + // When a file is not found, serve a 404 code but serve the index.html from above as its body. + // This allows applications to use html5 routing and reload the page at /some/sub/path, but still + // get their web app served. + writer = &customNotFoundResponseWriter{ResponseWriter: writer, request: request, notFound: indexHandler} + fileHandler(writer, request) + } + + return indexOnNotFoundHandler +} + +// chainedDir implements http.FileSystem by looking in the list of dirs one after each other. +type chainedDir []http.Dir + +func (chain chainedDir) Open(name string) (http.File, error) { + for _, dir := range chain { + f, err := dir.Open(name) + if os.IsNotExist(err) { + continue + } + if err != nil { + return nil, err + } + + // Do not return a directory, since FileServer will either: + // 1) serve the index.html file -or- + // 2) fall back to directory listings + // In place of (2), we prefer to fall back to our index.html. We accomplish + // this by lying to the FileServer that the directory doesn't exist. + stat, err := f.Stat() + if err != nil { + return nil, err + } + if stat.IsDir() { + // Make sure to close the previous file handle before moving to a different file. + f.Close() + indexName := filepath.Join(name, "index.html") + f, err := dir.Open(indexName) + if os.IsNotExist(err) { + continue + } + return f, err + } + + return f, nil + } + return nil, os.ErrNotExist +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver_test.go b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver_test.go new file mode 100644 index 0000000000..0ce23c0155 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver_test.go @@ -0,0 +1,111 @@ +package devserver + +import ( + "fmt" + "io/ioutil" + "net/http" + "net/http/httptest" + "os" + "path/filepath" + "strings" + "testing" +) + +func tmpfile(t *testing.T, name, contents string) (string, func()) { + fullPath := filepath.Join(os.Getenv("TEST_TMPDIR"), name) + dir := filepath.Dir(fullPath) + if _, err := os.Stat(dir); err != nil { + if os.IsNotExist(err) { + if err := os.MkdirAll(dir, 0777); err != nil { + t.Fatalf("failed to create dir: %v", err) + } + } else { + t.Fatalf("failed to stat dir: %v", err) + } + } + err := ioutil.WriteFile(fullPath, []byte(contents), 0666) + if err != nil { + t.Fatalf("failed to write temp file: %v", err) + } + return fullPath, func() { + if err := os.Remove(fullPath); err != nil && !os.IsNotExist(err) { + t.Errorf("failed to delete file %q: %v", fullPath, err) + } + } +} + +func req(handler http.HandlerFunc, url string) (int, string) { + req := httptest.NewRequest("GET", url, nil) + w := httptest.NewRecorder() + handler(w, req) + resp := w.Result() + body, _ := ioutil.ReadAll(resp.Body) + return resp.StatusCode, string(body) +} + +func TestDevserverFileHandling(t *testing.T) { + _, del := tmpfile(t, "TestIndexServing/manifest.MF", "file1.js\nfile2.js") + defer del() + _, delIdx := tmpfile(t, "TestIndexServing/pkg1/index.html", "contents of index.html") + defer delIdx() + _, del = tmpfile(t, "TestIndexServing/pkg1/foo.html", "contents of foo.html") + defer del() + _, del = tmpfile(t, "TestIndexServing/pkg2/bar.html", "contents of bar.html") + defer del() + _, del = tmpfile(t, "TestIndexServing/pkg2/foo.html", "contents of foo.html in pkg2") + defer del() + _, del = tmpfile(t, "TestIndexServing/pkg2/rpc/items/index.html", "contents of rpc/items/index.html") + defer del() + _, del = tmpfile(t, "TestIndexServing/pkg3/baz.html", "contents of baz.html in pkg3") + defer del() + + handler := CreateFileHandler("/app.js", "manifest.MF", []string{"pkg1", "pkg2"}, + filepath.Join(os.Getenv("TEST_TMPDIR"), "TestIndexServing")) + + tests := []struct { + code int + url string + content string + delIdx bool + }{ + // index file from pkg1. + {http.StatusOK, "/", "contents of index.html", false}, + // index file as a response to not found handler. + {http.StatusNotFound, "/no/such/dir", "contents of index.html", false}, + // index file as a response to not found handler. + {http.StatusNotFound, "/no/such/dir/", "contents of index.html", false}, + // index file as a response to a directory that is found. + {http.StatusNotFound, "/pkg2/", "contents of index.html", false}, + // file from the base package. + {http.StatusOK, "/foo.html", "contents of foo.html", false}, + // file from the base package with full path. + {http.StatusOK, "/pkg1/foo.html", "contents of foo.html", false}, + // file from pkg2. + {http.StatusOK, "/bar.html", "contents of bar.html", false}, + // file from pkg2 with full path. + {http.StatusOK, "/pkg2/bar.html", "contents of bar.html", false}, + // index file from disk + {http.StatusOK, "/rpc/items", "contents of rpc/items/index.html", false}, + // file from an unrelated package. + {http.StatusOK, "/pkg3/baz.html", "contents of baz.html in pkg3", false}, + // generated index for root. + {http.StatusOK, "/", ` + + + +
+
+
+ TypeScript compilation +
+
+ + +
+
+

TypeScript compilation

+ + +
+ +

tsc_wrapped_tsconfig

+ +
tsc_wrapped_tsconfig(ctx, files, srcs, devmode_manifest, jsx_factory)
+ +

Produce a tsconfig.json that sets options required under Bazel.

+ + +

Attributes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ctx +

Unknown; Required

+ +
files +

Unknown; Required

+ +
srcs +

Unknown; Required

+ +
devmode_manifest +

Unknown; Optional

+ +
jsx_factory +

Unknown; Optional

+ +
+
+ +

ts_library

+ +
ts_library(name, srcs, compiler, internal_testing_type_check_dependencies, node_modules, supports_workers, tsconfig, tsickle_typed)
+ +

ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

+

It produces declarations files (.d.ts) which are used for compiling downstream +TypeScript dependencies and JavaScript for the browser and Closure compiler.

+

The "devmode" output of ts_library is meant for ts_web_test, ts_devserver, +and other rules which can provide a fast development round-trip at large scale. +The intention is that the 50%ile dev round-trip should never exceed 2s, even for +a very large project.

+

The "prodmode" output of ts_library is written as *.closure.js because we +originally created this to target the Closure Compiler. Any optimizing bundler +can make use of this output to create highly optimized applications, but the +development experience is much slower.

+ + +

Attributes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
name +

Name; Required

+

A unique name for this rule.

+
srcs +

List of labels; Required

+

The TypeScript source files to compile.

+
compiler +

Label; Optional; Default is //internal:tsc_wrapped_bin

+

Advanced users only. + Sets a different TypeScript compiler binary to use for this library. + For example, we use the vanilla TypeScript tsc.js for bootstrapping, + and Angular compilations can replace this with ngc.

+
internal_testing_type_check_dependencies +

Boolean; Optional; Default is False

+

Testing only, whether to type check inputs that aren't srcs.

+
node_modules +

Label; Optional; Default is @//:node_modules

+ +
supports_workers +

Boolean; Optional; Default is True

+

Advanced users only. + Allows you to disable the Bazel Worker strategy for this library. + Typically used together with the "compiler" setting when using a + non-worker aware compiler binary.

+
tsconfig +

Label; Optional

+

A tsconfig.json file containing settings for TypeScript compilation. + Note that some properties in the tsconfig are governed by Bazel and will be + overridden, such as target and module.

+
tsickle_typed +

Boolean; Optional; Default is True

+ +
+ + +
+ + +
+
+ + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html new file mode 100644 index 0000000000..d375664607 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html @@ -0,0 +1,214 @@ + + + + + + + + + + + Simple development server + + + + + + + + +
+
+
+ Simple development server +
+
+ + +
+
+

Simple development server

+ + +
+ +

ts_devserver_macro

+ +
ts_devserver_macro(tags)
+ +

This macro re-exposes the ts_devserver rule with some extra tags so that +it behaves correctly under ibazel. +This is re-exported in //:defs.bzl as ts_devserver so if you load the rule +from there, you actually get this macro.

+ + +

Attributes

+ + + + + + + + + + + + +
tags +

List of strings; Optional

+

standard Bazel tags, this macro adds a couple for ibazel

+
+
+ +

ts_devserver

+ +
ts_devserver(name, deps, data, entry_module, scripts, serving_path, static_files)
+ +

ts_devserver is a simple development server intended for a quick "getting started" experience.

+

Additional documentation at https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel

+ + +

Attributes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
name +

Name; Required

+

A unique name for this rule.

+
deps +

List of labels; Optional; Default is []

+

Targets that produce JavaScript, such as ts_library

+
data +

List of labels; Optional; Default is []

+

Runtime dependencies

+
entry_module +

String; Optional; Default is ''

+

The entrymodule should be the AMD module name of the entry module such as `"_main/src/index"ts_devserver concats the following snippet after the bundle to load the application:require(["entry_module"]);`

+
scripts +

List of labels; Optional; Default is []

+

User scripts to include in the JS bundle before the application sources

+
serving_path +

String; Optional; Default is ''

+

The path you can request from the client HTML which serves the JavaScript bundle. + If you don't specify one, the JavaScript can be loaded at /_/ts_scripts.js

+
static_files +

List of labels; Optional; Default is []

+

Arbitrary files which to be served, such as index.html

+
+ + +
+ + +
+
+ + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html new file mode 100644 index 0000000000..006d0e8b36 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html @@ -0,0 +1,294 @@ + + + + + + + + + + + Overview + + + + + + + + +
+
+
+ Overview +
+
+ + +
+
+

Overview

+ + + + +

TypeScript compilation

+ +

Rules

+ + + + + + + + + + + +
+ + ts_library + + +

ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

+ +
+

Macros

+ + + + + + + + + + + +
+ + tsc_wrapped_tsconfig + + +

Produce a tsconfig.json that sets options required under Bazel.

+ +
+

Install toolchain dependencies

+ +

Macros

+ + + + + + + + + + + +
+ + ts_setup_workspace + + +

This repository rule should be called from your WORKSPACE file. +It creates some additional Bazel external repositories that are used internally +by the TypeScript rules.

+ +
+

Multiple tsconfig.json files

+ +

Rules

+ + + + + + + + + + + +
+ + ts_config + + +

Allows a tsconfig.json file to extend another file.

+ +
+

Simple development server

+ +

Rules

+ + + + + + + + + + + +
+ + ts_devserver + + +

ts_devserver is a simple development server intended for a quick "getting started" experience.

+ +
+

Macros

+ + + + + + + + + + + +
+ + ts_devserver_macro + + +

This macro re-exposes the ts_devserver rule with some extra tags so that +it behaves correctly under ibazel. +This is re-exported in //:defs.bzl as ts_devserver so if you load the rule +from there, you actually get this macro.

+ +
+

Unit testing in Chrome

+ +

Rules

+ + + + + + + + + + + +
+ + ts_web_test + + + +
+

Macros

+ + + + + + + + + + + +
+ + ts_web_test_macro + + +

This macro re-exposes the ts_web_test rule with some extra tags so that +it behaves correctly under ibazel. +This is re-exported in //:defs.bzl as ts_web_test so if you load the rule +from there, you actually get this macro.

+ +
+ + +
+ + +
+
+ + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html new file mode 100644 index 0000000000..2c1d5f0984 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html @@ -0,0 +1,206 @@ + + + + + + + + + + + Unit testing in Chrome + + + + + + + + +
+
+
+ Unit testing in Chrome +
+
+ + +
+
+

Unit testing in Chrome

+ + +
+ +

ts_web_test_macro

+ +
ts_web_test_macro(tags, data)
+ +

This macro re-exposes the ts_web_test rule with some extra tags so that +it behaves correctly under ibazel. +This is re-exported in //:defs.bzl as ts_web_test so if you load the rule +from there, you actually get this macro.

+ + +

Attributes

+ + + + + + + + + + + + + + + + +
tags +

List of strings; Optional

+

standard Bazel tags, this macro adds a couple for ibazel

+
data +

List of strings; Optional

+

runtime dependencies

+
+
+ +

ts_web_test

+ +
ts_web_test(name, deps, data, srcs, bootstrap)
+ + + +

Attributes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
name +

Name; Required

+

A unique name for this rule.

+
deps +

List of labels; Optional; Default is []

+

Other targets which produce JavaScript such as ts_library

+
data +

List of labels; Optional; Default is []

+

Runtime dependencies

+
srcs +

List of labels; Optional; Default is []

+

JavaScript source files

+
bootstrap +

List of labels; Optional; Default is []

+

JavaScript files to include before the module loader (require.js). + For example, you can include Reflect,js for TypeScript decorator metadata reflection, + or UMD bundles for third-party libraries.

+
+ + +
+ + +
+
+ + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css b/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css new file mode 100755 index 0000000000..1b2ce72850 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css @@ -0,0 +1,3 @@ +body{background-color:#fafafa}pre,code{font-family:'Liberation Mono', Consolas, Monaco, 'Andale Mono', monospace}pre{background-color:#eee;padding:20px;overflow-x:auto;word-wrap:normal}pre code{overflow-wrap:normal;white-space:pre}code{display:inline-block;font-size:90%;white-space:pre-wrap}.mdl-layout__drawer{background-color:#fff}.mdl-layout__drawer .mdl-layout-title{border-bottom:1px solid #e0e0e0;padding-left:24px}.drawer-nav ul{list-style:none;padding-left:0}.drawer-nav ul li{display:block;padding:0}.drawer-nav ul li ul li a{padding-left:44px;font-weight:400}.drawer-nav ul li a{display:block;flex-shrink:0;padding:15px 0 15px 22px;margin:0;font-weight:600;color:#757575;line-height:1em;text-decoration:none;cursor:pointer}.drawer-nav ul li a:active,.drawer-nav ul li a:hover{background-color:#f0f0f0}.drawer-nav ul li.active a{color:#4caf50;font-weight:500}h1.page-title{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}p.lead{font-size:20px;line-height:32px}table{border-collapse:collapse;border-spacing:0;background-color:#fff;table-layout:auto}table thead th{background-color:#fafafa;border:1px solid #eee;color:#757575;padding:12px 12px 12px 24px;vertical-align:top}table tbody td{border:1px solid #eee;padding:12px 12px 12px 24px;vertical-align:top}table.params-table{width:100%}table.params-table col.col-param{width:25%}table.params-table col.col-description{width:75%}table.overview-table{width:100%}table.overview-table col.col-name{width:25%}table.overview-table col.col-description{width:75%}table.overview-table td p{margin:0}hr{margin-top:40px;margin-bottom:40px}nav.toc{border-left:5px solid #4caf50;padding-left:20px;margin-bottom:48px}nav.toc h1,nav.toc h2{font-size:15px;line-height:16px;padding-bottom:12px;margin-bottom:0;font-weight:400;color:#757575}nav.toc ul{list-style:none;margin-top:0;padding-left:0}nav.toc ul li{font-size:20px;line-height:40px}nav.toc ul li a{color:#4caf50}.page-content{margin-left:auto;margin-right:auto;padding-top:60px;padding-bottom:60px;width:760px}.page-content a{text-decoration:none}.page-content h1{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}.page-content h2{font-size:24px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}.page-content h3{font-size:20px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}@media (max-width: 768px){.page-content{width:360px}}@media (min-width: 768px){.page-content{width:760px}}@media (min-width: 1476px){.page-content{width:1160px}}.mdl-mini-footer{padding-left:40px} + +/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html new file mode 100644 index 0000000000..a4548675d8 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html @@ -0,0 +1,155 @@ + + + + + + + + + + + Multiple tsconfig.json files + + + + + + + + +
+
+
+ Multiple tsconfig.json files +
+
+ + +
+
+

Multiple tsconfig.json files

+ + +
+ +

ts_config

+ +
ts_config(name, deps, src)
+ +

Allows a tsconfig.json file to extend another file.

+

Normally, you just give a single tsconfig.json file as the tsconfig attribute +of a ts_library rule. However, if your tsconfig.json uses the extends +feature from TypeScript, then the Bazel implementation needs to know about that +extended configuration file as well, to pass them both to the TypeScript compiler.

+ + +

Attributes

+ + + + + + + + + + + + + + + + + + + + +
name +

Name; Required

+

A unique name for this rule.

+
deps +

List of labels; Required

+

Additional tsconfig.json files referenced via extends

+
src +

Label; Required

+

The tsconfig.json file passed to the TypeScript compiler

+
+ + +
+ + +
+
+ + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html new file mode 100644 index 0000000000..014bf330fc --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html @@ -0,0 +1,122 @@ + + + + + + + + + + + Install toolchain dependencies + + + + + + + + +
+
+
+ Install toolchain dependencies +
+
+ + +
+
+

Install toolchain dependencies

+ + +
+ +

ts_setup_workspace

+ +
ts_setup_workspace()
+ +

This repository rule should be called from your WORKSPACE file. +It creates some additional Bazel external repositories that are used internally +by the TypeScript rules.

+ + + + +
+ + +
+
+ + diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index d2d76af161..e17ec48e8e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -16,7 +16,11 @@ package(default_visibility = ["//visibility:public"]) -exports_files(["worker_protocol.proto"]) +exports_files([ + "worker_protocol.proto", + # Exported to be consumed for generating skydoc. + "build_defs.bzl", "ts_config.bzl", "ts_repositories.bzl", +]) load("//internal:build_defs.bzl", "ts_library") load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary", "jasmine_node_test") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index 673cc50746..359bd38252 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -12,12 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""TypeScript rules. -""" +"TypeScript compilation" + # pylint: disable=unused-argument # pylint: disable=missing-docstring load(":common/compilation.bzl", "COMMON_ATTRIBUTES", "compile_ts", "ts_providers_dict_to_struct") -load(":executables.bzl", "get_tsc") load(":common/tsconfig.bzl", "create_tsconfig") load(":ts_config.bzl", "TsConfigInfo") @@ -158,27 +157,35 @@ def _ts_library_impl(ctx): ts_library = rule( _ts_library_impl, attrs = dict(COMMON_ATTRIBUTES, **{ - "srcs": - attr.label_list( - allow_files=FileType([ - ".ts", - ".tsx", - ]), - mandatory=True,), + "srcs": attr.label_list( + doc = "The TypeScript source files to compile.", + allow_files = [".ts", ".tsx"], + mandatory = True), # TODO(alexeagle): reconcile with google3: ts_library rules should # be portable across internal/external, so we need this attribute # internally as well. - "tsconfig": - attr.label(allow_files = True, single_file = True), - "compiler": - attr.label( - default=get_tsc(), - single_file=False, - allow_files=True, - executable=True, - cfg="host"), - "supports_workers": attr.bool(default = True), + "tsconfig": attr.label( + doc = """A tsconfig.json file containing settings for TypeScript compilation. + Note that some properties in the tsconfig are governed by Bazel and will be + overridden, such as `target` and `module`.""", + allow_files = True, single_file = True), + "compiler": attr.label( + doc = """Intended for internal use only. + Sets a different TypeScript compiler binary to use for this library. + For example, we use the vanilla TypeScript tsc.js for bootstrapping, + and Angular compilations can replace this with `ngc`.""", + default = Label("//internal:tsc_wrapped_bin"), + single_file = False, + allow_files = True, + executable = True, + cfg = "host"), + "supports_workers": attr.bool( + doc = """Intended for internal use only. + Allows you to disable the Bazel Worker strategy for this library. + Typically used together with the "compiler" setting when using a + non-worker aware compiler binary.""", + default = True), "tsickle_typed": attr.bool(default = True), "internal_testing_type_check_dependencies": attr.bool(default = False, doc="Testing only, whether to type check inputs that aren't srcs."), "_tsc_wrapped_deps": attr.label(default = Label("@build_bazel_rules_typescript_tsc_wrapped_deps//:node_modules")), @@ -191,3 +198,9 @@ ts_library = rule( "tsconfig": "%{name}_tsconfig.json" } ) +""" +`ts_library` type-checks and compiles a set of TypeScript sources to JavaScript. + +It produces declarations files (`.d.ts`) which are used for compiling downstream +TypeScript targets and JavaScript for the browser and Closure compiler. +""" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD index e6e53c6f94..05b2ac2669 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD @@ -18,6 +18,11 @@ package(default_visibility = [ "//internal:__subpackages__", ]) +exports_files([ + # Exported to be consumed for generating skydoc. + "ts_devserver.bzl", +]) + filegroup( name = "source_tree", srcs = [ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl index 4cceb1adc8..ba60c33f56 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl @@ -12,10 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""The ts_devserver rule brings up our "getting started" devserver. - -See the README.md. -""" +"Simple development server" load("@build_bazel_rules_nodejs//internal:node.bzl", "sources_aspect", @@ -102,15 +99,27 @@ RUNFILES="$PWD/.." ts_devserver = rule( implementation = _ts_devserver, attrs = { - "deps": attr.label_list(allow_files = True, aspects = [sources_aspect]), - "serving_path": attr.string(), - "data": attr.label_list(allow_files = True, cfg = "data"), - "static_files": attr.label_list(allow_files = True), - # User scripts for the devserver to concat before the source files - "scripts": attr.label_list(allow_files = True), - # The entry_module should be the AMD module name of the entry module such as "__main__/src/index" - # Devserver concats the following snippet after the bundle to load the application: require(["entry_module"]); - "entry_module": attr.string(), + "deps": attr.label_list( + doc = "Targets that produce JavaScript, such as `ts_library`", + allow_files = True, aspects = [sources_aspect]), + "serving_path": attr.string( + doc = """The path you can request from the client HTML which serves the JavaScript bundle. + If you don't specify one, the JavaScript can be loaded at /_/ts_scripts.js"""), + "data": attr.label_list( + doc = "Dependencies that can be require'd while the server is running", + allow_files = True, cfg = "data"), + "static_files": attr.label_list( + doc = """Arbitrary files which to be served, such as index.html. + They are served relative to the package where this rule is declared.""", + allow_files = True), + "scripts": attr.label_list( + doc = "User scripts to include in the JS bundle before the application sources", + allow_files = [".js"]), + "entry_module": attr.string( + doc = """The entry_module should be the AMD module name of the entry module such as `"__main__/src/index"` + ts_devserver concats the following snippet after the bundle to load the application: + `require(["entry_module"]);` + """), "_requirejs_script": attr.label(allow_files = True, single_file = True, default = Label("@build_bazel_rules_typescript_devserver_deps//:node_modules/requirejs/require.js")), "_devserver": attr.label( default = Label("//internal/devserver/main"), @@ -124,8 +133,24 @@ ts_devserver = rule( }, executable = True, ) +"""ts_devserver is a simple development server intended for a quick "getting started" experience. + +Additional documentation at https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel +""" def ts_devserver_macro(tags = [], **kwargs): + """ibazel wrapper for `ts_devserver` + + This macro re-exposes the `ts_devserver` rule with some extra tags so that + it behaves correctly under ibazel. + + This is re-exported in `//:defs.bzl` as `ts_devserver` so if you load the rule + from there, you actually get this macro. + + Args: + tags: standard Bazel tags, this macro adds a couple for ibazel + **kwargs: passed through to `ts_devserver` + """ ts_devserver( # Users don't need to know that these tags are required to run under ibazel tags = tags + [ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl deleted file mode 100644 index e83baa2709..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/executables.bzl +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""TypeScript compiler label. -""" - -def get_tsc(): - return Label("//internal:tsc_wrapped_bin") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel index 07e5c5215b..9d36fedec8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel @@ -1,6 +1,11 @@ package(default_visibility=["//visibility:public"]) -exports_files(["test-main.js", "karma.conf.js"]) +exports_files([ + "test-main.js", + "karma.conf.js", + # Exported to be consumed for generating skydoc. + "ts_web_test.bzl", +]) load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl index bf0d6ce0de..6efba8433d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl @@ -11,7 +11,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -"""Implementation of the ts_web_test rule.""" +"Unit testing in Chrome" load("@build_bazel_rules_nodejs//internal:node.bzl", "sources_aspect", @@ -128,15 +128,23 @@ ts_web_test = rule( implementation = _ts_web_test_impl, test = True, attrs = { - "srcs": attr.label_list(allow_files = ["js"]), + "srcs": attr.label_list( + doc = "JavaScript source files", + allow_files = [".js"]), "deps": attr.label_list( - allow_files = True, - aspects = [sources_aspect], + doc = "Other targets which produce JavaScript such as `ts_library`", + allow_files = True, + aspects = [sources_aspect], ), "bootstrap": attr.label_list( - allow_files = True, + doc = """JavaScript files to include *before* the module loader (require.js). + For example, you can include Reflect,js for TypeScript decorator metadata reflection, + or UMD bundles for third-party libraries.""", + allow_files = [".js"], ), - "data": attr.label_list(cfg = "data"), + "data": attr.label_list( + doc = "Runtime dependencies", + cfg = "data"), "_karma": attr.label( default = Label("//internal/karma:karma_bin"), executable = True, @@ -152,6 +160,20 @@ ts_web_test = rule( # This macro exists only to modify the users rule definition a bit. # DO NOT add composition of additional rules here. def ts_web_test_macro(tags = [], data = [], **kwargs): + """ibazel wrapper for `ts_web_test` + + This macro re-exposes the `ts_web_test` rule with some extra tags so that + it behaves correctly under ibazel. + + This is re-exported in `//:defs.bzl` as `ts_web_test` so if you load the rule + from there, you actually get this macro. + + Args: + tags: standard Bazel tags, this macro adds a couple for ibazel + data: runtime dependencies + **kwargs: passed through to `ts_web_test` + """ + ts_web_test( tags = tags + [ # Users don't need to know that this tag is required to run under ibazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_config.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_config.bzl index bc0c9ec7a2..95d5cbe977 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_config.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_config.bzl @@ -12,8 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""The ts_config rule allows users to express tsconfig.json file groups. -""" +"tsconfig.json files using extends" TsConfigInfo = provider() @@ -25,7 +24,18 @@ def _ts_config_impl(ctx): ts_config = rule( implementation = _ts_config_impl, attrs = { - "src": attr.label(allow_files = True, single_file = True, mandatory = True), - "deps": attr.label_list(allow_files = True, mandatory = True), + "src": attr.label( + doc = """The tsconfig.json file passed to the TypeScript compiler""", + allow_single_file = True, mandatory = True), + "deps": attr.label_list( + doc = """Additional tsconfig.json files referenced via extends""", + allow_files = True, mandatory = True), }, ) +"""Allows a tsconfig.json file to extend another file. + +Normally, you just give a single `tsconfig.json` file as the tsconfig attribute +of a `ts_library` rule. However, if your `tsconfig.json` uses the `extends` +feature from TypeScript, then the Bazel implementation needs to know about that +extended configuration file as well, to pass them both to the TypeScript compiler. +""" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl index 79d6c8eaba..ac89e7d003 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl @@ -12,12 +12,16 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""The ts_setup_workspace rule installs build-time dependencies. -""" +"Install toolchain dependencies" load("@build_bazel_rules_nodejs//:defs.bzl", "yarn_install") def ts_setup_workspace(): + """This repository rule should be called from your WORKSPACE file. + + It creates some additional Bazel external repositories that are used internally + by the TypeScript rules. + """ yarn_install( name = "build_bazel_rules_typescript_tsc_wrapped_deps", package_json = "@build_bazel_rules_typescript//internal:tsc_wrapped/package.json", diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 41a0693203..126920ec5a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -29,6 +29,7 @@ "pretest": "webdriver-manager update && bazel build examples/app:all", "test": "concurrently \"bazel run examples/app:devserver\" protractor --kill-others --success first", "preskylint": "bazel build --noshow_progress @io_bazel//src/tools/skylark/java/com/google/devtools/skylark/skylint:Skylint", - "skylint": "find . -type f -name \"*.bzl\" ! -path \"*/node_modules/*\" | xargs $(bazel info bazel-bin)/external/io_bazel/src/tools/skylark/java/com/google/devtools/skylark/skylint/Skylint" + "skylint": "find . -type f -name \"*.bzl\" ! -path \"*/node_modules/*\" | xargs $(bazel info bazel-bin)/external/io_bazel/src/tools/skylark/java/com/google/devtools/skylark/skylint/Skylint", + "skydoc": "bazel build //:docs && unzip -o -d docs/api bazel-bin/docs-skydoc.zip" } } From c90e749db8496e169c33704ce6b54bfd928e57cc Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Wed, 2 May 2018 07:39:00 -0700 Subject: [PATCH 0221/1134] Fix api doc site --- .../bazelbuild/rules_typescript/BUILD.bazel | 5 +- .../rules_typescript/docs/api/build_defs.html | 36 ++++------- .../docs/api/devserver/ts_devserver.html | 37 ++++++----- .../rules_typescript/docs/api/index.html | 64 ++++++++----------- .../docs/api/karma/ts_web_test.html | 32 +++++----- .../rules_typescript/docs/api/ts_config.html | 28 ++++---- .../docs/api/ts_repositories.html | 26 ++++---- 7 files changed, 110 insertions(+), 118 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index baf8715c1e..146afbb6c1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -50,6 +50,9 @@ skylark_doc( "//internal/karma:ts_web_test.bzl", ], format = "html", - site_root = "/rules_typescript/api", + # The site is served at http://tsetse.info so the URL doesn't include a + # /rules_typescript segment. + # TODO(alexeagle): separate Tsetse docs from the rest of rules_typescript. + site_root = "/api", strip_prefix = "internal/", ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html index 2290c91ea9..981843d3c5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html @@ -16,7 +16,7 @@ - +
    -
  • Overview
  • +
  • Overview
  • - TypeScript compilation + TypeScript compilation
  • - Install toolchain dependencies + Install toolchain dependencies
  • - Multiple tsconfig.json files + tsconfig.json files using extends
  • - Simple development server + Simple development server
  • - Unit testing in Chrome + Unit testing in Chrome
    • - + ts_web_test
    • @@ -158,15 +158,7 @@

      ts_library

      ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

      It produces declarations files (.d.ts) which are used for compiling downstream -TypeScript dependencies and JavaScript for the browser and Closure compiler.

      -

      The "devmode" output of ts_library is meant for ts_web_test, ts_devserver, -and other rules which can provide a fast development round-trip at large scale. -The intention is that the 50%ile dev round-trip should never exceed 2s, even for -a very large project.

      -

      The "prodmode" output of ts_library is written as *.closure.js because we -originally created this to target the Closure Compiler. Any optimizing bundler -can make use of this output to create highly optimized applications, but the -development experience is much slower.

      +TypeScript targets and JavaScript for the browser and Closure compiler.

      Attributes

      @@ -195,7 +187,7 @@

      Attributes

      compiler

      Label; Optional; Default is //internal:tsc_wrapped_bin

      -

      Advanced users only. +

      Intended for internal use only. Sets a different TypeScript compiler binary to use for this library. For example, we use the vanilla TypeScript tsc.js for bootstrapping, and Angular compilations can replace this with ngc.

      @@ -219,7 +211,7 @@

      Attributes

      supports_workers

      Boolean; Optional; Default is True

      -

      Advanced users only. +

      Intended for internal use only. Allows you to disable the Bazel Worker strategy for this library. Typically used together with the "compiler" setting when using a non-worker aware compiler binary.

      diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html index d375664607..3d066a7dec 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html @@ -16,7 +16,7 @@ - +
        -
      • Overview
      • +
      • Overview
      • - TypeScript compilation + TypeScript compilation
      • - Install toolchain dependencies + Install toolchain dependencies
      • - Multiple tsconfig.json files + tsconfig.json files using extends
      • - Simple development server + Simple development server
      • - Unit testing in Chrome + Unit testing in Chrome
        • - + ts_web_test
        • @@ -102,9 +102,10 @@

          ts_devserver_macro

          ts_devserver_macro(tags)
          -

          This macro re-exposes the ts_devserver rule with some extra tags so that -it behaves correctly under ibazel. -This is re-exported in //:defs.bzl as ts_devserver so if you load the rule +

          ibazel wrapper for ts_devserver

          +

          This macro re-exposes the ts_devserver rule with some extra tags so that +it behaves correctly under ibazel.

          +

          This is re-exported in //:defs.bzl as ts_devserver so if you load the rule from there, you actually get this macro.

          @@ -120,7 +121,8 @@

          Attributes

          tags

          List of strings; Optional

          -

          standard Bazel tags, this macro adds a couple for ibazel

          +

          standard Bazel tags, this macro adds a couple for ibazel +**kwargs: passed through to ts_devserver

          @@ -161,7 +163,7 @@

          Attributes

          data

          List of labels; Optional; Default is []

          -

          Runtime dependencies

          +

          Dependencies that can be require'd while the server is running

          @@ -190,7 +192,8 @@

          Attributes

          static_files

          List of labels; Optional; Default is []

          -

          Arbitrary files which to be served, such as index.html

          +

          Arbitrary files which to be served, such as index.html. + They are served relative to the package where this rule is declared.

          diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html index 006d0e8b36..7d88427588 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html @@ -16,7 +16,7 @@ - +
            -
          • Overview
          • +
          • Overview
          • - TypeScript compilation + TypeScript compilation
          • - Install toolchain dependencies + Install toolchain dependencies
          • - Multiple tsconfig.json files + tsconfig.json files using extends
          • - Simple development server + Simple development server
          • - Unit testing in Chrome + Unit testing in Chrome
            • - + ts_web_test
            • @@ -92,13 +92,13 @@

              Rule sets

              -

              TypeScript compilation

              +

              TypeScript compilation

              Rules

              @@ -109,7 +109,7 @@

              Rules

              @@ -129,7 +129,7 @@

              Macros

              @@ -140,7 +140,7 @@

              Macros

              - + ts_library
              - + tsc_wrapped_tsconfig
              -

              Install toolchain dependencies

              +

              Install toolchain dependencies

              Macros

              @@ -151,20 +151,18 @@

              Macros

              - + ts_setup_workspace -

              This repository rule should be called from your WORKSPACE file. -It creates some additional Bazel external repositories that are used internally -by the TypeScript rules.

              +

              This repository rule should be called from your WORKSPACE file.

              -

              Multiple tsconfig.json files

              +

              tsconfig.json files using extends

              Rules

              @@ -175,7 +173,7 @@

              Rules

              @@ -186,7 +184,7 @@

              Rules

              - + ts_config
              -

              Simple development server

              +

              Simple development server

              Rules

              @@ -197,7 +195,7 @@

              Rules

              @@ -217,21 +215,18 @@

              Macros

              - + ts_devserver
              - + ts_devserver_macro -

              This macro re-exposes the ts_devserver rule with some extra tags so that -it behaves correctly under ibazel. -This is re-exported in //:defs.bzl as ts_devserver so if you load the rule -from there, you actually get this macro.

              +

              ibazel wrapper for ts_devserver

              -

              Unit testing in Chrome

              +

              Unit testing in Chrome

              Rules

              @@ -242,7 +237,7 @@

              Rules

              @@ -261,15 +256,12 @@

              Macros

              diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html index 2c1d5f0984..df7abf8330 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html @@ -16,7 +16,7 @@ - +
              diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html index a4548675d8..cfa42c1e80 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html @@ -10,20 +10,20 @@ - Multiple tsconfig.json files + tsconfig.json files using extends - +
              - Multiple tsconfig.json files + tsconfig.json files using extends
              @@ -31,47 +31,47 @@
              diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html index df7abf8330..18263638c6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html @@ -140,7 +140,21 @@

              ts_web_test

              ts_web_test(name, deps, data, srcs, bootstrap)
              - +

              Runs unit tests in a browser.

              +

              When executed under bazel test, this uses a headless Chrome browser for speed. +This is also because bazel test allows multiple targets to be tested together, +and we don't want to open a Chrome window on your machine for each one. Also, +under bazel test the test will execute and immediately terminate.

              +

              Running under ibazel test gives you a "watch mode" for your tests. The rule is +optimized for this case - the test runner server will stay running and just +re-serve the up-to-date JavaScript source bundle.

              +

              To debug a single test target, run it with bazel run instead. This will open a +browser window on your computer. Also you can use any other browser by opening +the URL printed when the test starts up. The test will remain running until you +cancel the bazel run command.

              +

              Currently this rule uses Karma as the test runner, but this is an implementation +detail. We might switch to another runner like Jest in the future.

              +

              Attributes

              diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl index 6efba8433d..3c74f24df7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl @@ -156,6 +156,25 @@ ts_web_test = rule( allow_files = True, single_file = True), }, ) +"""Runs unit tests in a browser. + +When executed under `bazel test`, this uses a headless Chrome browser for speed. +This is also because `bazel test` allows multiple targets to be tested together, +and we don't want to open a Chrome window on your machine for each one. Also, +under `bazel test` the test will execute and immediately terminate. + +Running under `ibazel test` gives you a "watch mode" for your tests. The rule is +optimized for this case - the test runner server will stay running and just +re-serve the up-to-date JavaScript source bundle. + +To debug a single test target, run it with `bazel run` instead. This will open a +browser window on your computer. Also you can use any other browser by opening +the URL printed when the test starts up. The test will remain running until you +cancel the `bazel run` command. + +Currently this rule uses Karma as the test runner, but this is an implementation +detail. We might switch to another runner like Jest in the future. +""" # This macro exists only to modify the users rule definition a bit. # DO NOT add composition of additional rules here. From beeeefcfda9edc32bb5569ae70ceeee5deaaec39 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Wed, 2 May 2018 13:25:23 -0700 Subject: [PATCH 0223/1134] Fix the base URL for rules_typescript API docs, and add missing ts_web_test doc. PiperOrigin-RevId: 195141568 --- .../bazelbuild/rules_typescript/BUILD.bazel | 2 +- .../rules_typescript/docs/api/build_defs.html | 254 ---------------- .../docs/api/devserver/ts_devserver.html | 217 ------------- .../rules_typescript/docs/api/index.html | 287 ------------------ .../docs/api/karma/ts_web_test.html | 222 -------------- .../rules_typescript/docs/api/main.css | 3 - .../rules_typescript/docs/api/ts_config.html | 155 ---------- .../docs/api/ts_repositories.html | 122 -------- 8 files changed, 1 insertion(+), 1261 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html delete mode 100755 third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index 146afbb6c1..22ae8bf129 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -52,7 +52,7 @@ skylark_doc( format = "html", # The site is served at http://tsetse.info so the URL doesn't include a # /rules_typescript segment. - # TODO(alexeagle): separate Tsetse docs from the rest of rules_typescript. + # TODO(alexeagle): separate Tsetse docs from the rest of rules_typescript site_root = "/api", strip_prefix = "internal/", ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html deleted file mode 100644 index 981843d3c5..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - - - - - - TypeScript compilation - - - - - - - - -
              -
              -
              - TypeScript compilation -
              -
              - - -
              -
              -

              TypeScript compilation

              - - -
              - -

              tsc_wrapped_tsconfig

              - -
              tsc_wrapped_tsconfig(ctx, files, srcs, devmode_manifest, jsx_factory)
              - -

              Produce a tsconfig.json that sets options required under Bazel.

              - - -

              Attributes

              - -
              - + ts_web_test
              - + ts_web_test_macro -

              This macro re-exposes the ts_web_test rule with some extra tags so that -it behaves correctly under ibazel. -This is re-exported in //:defs.bzl as ts_web_test so if you load the rule -from there, you actually get this macro.

              +

              ibazel wrapper for ts_web_test

              data

              List of strings; Optional

              -

              runtime dependencies

              +

              runtime dependencies +**kwargs: passed through to ts_web_test

              - +

              Runs unit tests in a browser.

              +
              - - - - - - - - - - - - - - - - - - - - - - - - - - -
              ctx -

              Unknown; Required

              - -
              files -

              Unknown; Required

              - -
              srcs -

              Unknown; Required

              - -
              devmode_manifest -

              Unknown; Optional

              - -
              jsx_factory -

              Unknown; Optional

              - -
              -
              - -

              ts_library

              - -
              ts_library(name, srcs, compiler, internal_testing_type_check_dependencies, node_modules, supports_workers, tsconfig, tsickle_typed)
              - -

              ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

              -

              It produces declarations files (.d.ts) which are used for compiling downstream -TypeScript targets and JavaScript for the browser and Closure compiler.

              - - -

              Attributes

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              name -

              Name; Required

              -

              A unique name for this rule.

              -
              srcs -

              List of labels; Required

              -

              The TypeScript source files to compile.

              -
              compiler -

              Label; Optional; Default is //internal:tsc_wrapped_bin

              -

              Intended for internal use only. - Sets a different TypeScript compiler binary to use for this library. - For example, we use the vanilla TypeScript tsc.js for bootstrapping, - and Angular compilations can replace this with ngc.

              -
              internal_testing_type_check_dependencies -

              Boolean; Optional; Default is False

              -

              Testing only, whether to type check inputs that aren't srcs.

              -
              node_modules -

              Label; Optional; Default is @//:node_modules

              - -
              supports_workers -

              Boolean; Optional; Default is True

              -

              Intended for internal use only. - Allows you to disable the Bazel Worker strategy for this library. - Typically used together with the "compiler" setting when using a - non-worker aware compiler binary.

              -
              tsconfig -

              Label; Optional

              -

              A tsconfig.json file containing settings for TypeScript compilation. - Note that some properties in the tsconfig are governed by Bazel and will be - overridden, such as target and module.

              -
              tsickle_typed -

              Boolean; Optional; Default is True

              - -
              - - -
          - - - -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html deleted file mode 100644 index 3d066a7dec..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - - - - Simple development server - - - - - - - - -
      -
      -
      - Simple development server -
      -
      - - -
      -
      -

      Simple development server

      - - -
      - -

      ts_devserver_macro

      - -
      ts_devserver_macro(tags)
      - -

      ibazel wrapper for ts_devserver

      -

      This macro re-exposes the ts_devserver rule with some extra tags so that -it behaves correctly under ibazel.

      -

      This is re-exported in //:defs.bzl as ts_devserver so if you load the rule -from there, you actually get this macro.

      - - -

      Attributes

      - - - - - - - - - - - - -
      tags -

      List of strings; Optional

      -

      standard Bazel tags, this macro adds a couple for ibazel -**kwargs: passed through to ts_devserver

      -
      -
      - -

      ts_devserver

      - -
      ts_devserver(name, deps, data, entry_module, scripts, serving_path, static_files)
      - -

      ts_devserver is a simple development server intended for a quick "getting started" experience.

      -

      Additional documentation at https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel

      - - -

      Attributes

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      name -

      Name; Required

      -

      A unique name for this rule.

      -
      deps -

      List of labels; Optional; Default is []

      -

      Targets that produce JavaScript, such as ts_library

      -
      data -

      List of labels; Optional; Default is []

      -

      Dependencies that can be require'd while the server is running

      -
      entry_module -

      String; Optional; Default is ''

      -

      The entrymodule should be the AMD module name of the entry module such as `"_main/src/index"ts_devserver concats the following snippet after the bundle to load the application:require(["entry_module"]);`

      -
      scripts -

      List of labels; Optional; Default is []

      -

      User scripts to include in the JS bundle before the application sources

      -
      serving_path -

      String; Optional; Default is ''

      -

      The path you can request from the client HTML which serves the JavaScript bundle. - If you don't specify one, the JavaScript can be loaded at /_/ts_scripts.js

      -
      static_files -

      List of labels; Optional; Default is []

      -

      Arbitrary files which to be served, such as index.html. - They are served relative to the package where this rule is declared.

      -
      - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html deleted file mode 100644 index cf7c5d7ffb..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - - - - - Overview - - - - - - - - -
      -
      -
      - Overview -
      -
      - - -
      -
      -

      Overview

      - - - - -

      TypeScript compilation

      - -

      Rules

      - - - - - - - - - - - -
      - - ts_library - - -

      ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

      - -
      -

      Macros

      - - - - - - - - - - - -
      - - tsc_wrapped_tsconfig - - -

      Produce a tsconfig.json that sets options required under Bazel.

      - -
      -

      Install toolchain dependencies

      - -

      Macros

      - - - - - - - - - - - -
      - - ts_setup_workspace - - -

      This repository rule should be called from your WORKSPACE file.

      - -
      -

      tsconfig.json files using extends

      - -

      Rules

      - - - - - - - - - - - -
      - - ts_config - - -

      Allows a tsconfig.json file to extend another file.

      - -
      -

      Simple development server

      - -

      Rules

      - - - - - - - - - - - -
      - - ts_devserver - - -

      ts_devserver is a simple development server intended for a quick "getting started" experience.

      - -
      -

      Macros

      - - - - - - - - - - - -
      - - ts_devserver_macro - - -

      ibazel wrapper for ts_devserver

      - -
      -

      Unit testing in Chrome

      - -

      Rules

      - - - - - - - - - - - -
      - - ts_web_test - - -

      Runs unit tests in a browser.

      - -
      -

      Macros

      - - - - - - - - - - - -
      - - ts_web_test_macro - - -

      ibazel wrapper for ts_web_test

      - -
      - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html deleted file mode 100644 index 18263638c6..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - - - - - Unit testing in Chrome - - - - - - - - -
      -
      -
      - Unit testing in Chrome -
      -
      - - -
      -
      -

      Unit testing in Chrome

      - - -
      - -

      ts_web_test_macro

      - -
      ts_web_test_macro(tags, data)
      - -

      ibazel wrapper for ts_web_test

      -

      This macro re-exposes the ts_web_test rule with some extra tags so that -it behaves correctly under ibazel.

      -

      This is re-exported in //:defs.bzl as ts_web_test so if you load the rule -from there, you actually get this macro.

      - - -

      Attributes

      - - - - - - - - - - - - - - - - -
      tags -

      List of strings; Optional

      -

      standard Bazel tags, this macro adds a couple for ibazel

      -
      data -

      List of strings; Optional

      -

      runtime dependencies -**kwargs: passed through to ts_web_test

      -
      -
      - -

      ts_web_test

      - -
      ts_web_test(name, deps, data, srcs, bootstrap)
      - -

      Runs unit tests in a browser.

      -

      When executed under bazel test, this uses a headless Chrome browser for speed. -This is also because bazel test allows multiple targets to be tested together, -and we don't want to open a Chrome window on your machine for each one. Also, -under bazel test the test will execute and immediately terminate.

      -

      Running under ibazel test gives you a "watch mode" for your tests. The rule is -optimized for this case - the test runner server will stay running and just -re-serve the up-to-date JavaScript source bundle.

      -

      To debug a single test target, run it with bazel run instead. This will open a -browser window on your computer. Also you can use any other browser by opening -the URL printed when the test starts up. The test will remain running until you -cancel the bazel run command.

      -

      Currently this rule uses Karma as the test runner, but this is an implementation -detail. We might switch to another runner like Jest in the future.

      - - -

      Attributes

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      name -

      Name; Required

      -

      A unique name for this rule.

      -
      deps -

      List of labels; Optional; Default is []

      -

      Other targets which produce JavaScript such as ts_library

      -
      data -

      List of labels; Optional; Default is []

      -

      Runtime dependencies

      -
      srcs -

      List of labels; Optional; Default is []

      -

      JavaScript source files

      -
      bootstrap -

      List of labels; Optional; Default is []

      -

      JavaScript files to include before the module loader (require.js). - For example, you can include Reflect,js for TypeScript decorator metadata reflection, - or UMD bundles for third-party libraries.

      -
      - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css b/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css deleted file mode 100755 index 1b2ce72850..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css +++ /dev/null @@ -1,3 +0,0 @@ -body{background-color:#fafafa}pre,code{font-family:'Liberation Mono', Consolas, Monaco, 'Andale Mono', monospace}pre{background-color:#eee;padding:20px;overflow-x:auto;word-wrap:normal}pre code{overflow-wrap:normal;white-space:pre}code{display:inline-block;font-size:90%;white-space:pre-wrap}.mdl-layout__drawer{background-color:#fff}.mdl-layout__drawer .mdl-layout-title{border-bottom:1px solid #e0e0e0;padding-left:24px}.drawer-nav ul{list-style:none;padding-left:0}.drawer-nav ul li{display:block;padding:0}.drawer-nav ul li ul li a{padding-left:44px;font-weight:400}.drawer-nav ul li a{display:block;flex-shrink:0;padding:15px 0 15px 22px;margin:0;font-weight:600;color:#757575;line-height:1em;text-decoration:none;cursor:pointer}.drawer-nav ul li a:active,.drawer-nav ul li a:hover{background-color:#f0f0f0}.drawer-nav ul li.active a{color:#4caf50;font-weight:500}h1.page-title{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}p.lead{font-size:20px;line-height:32px}table{border-collapse:collapse;border-spacing:0;background-color:#fff;table-layout:auto}table thead th{background-color:#fafafa;border:1px solid #eee;color:#757575;padding:12px 12px 12px 24px;vertical-align:top}table tbody td{border:1px solid #eee;padding:12px 12px 12px 24px;vertical-align:top}table.params-table{width:100%}table.params-table col.col-param{width:25%}table.params-table col.col-description{width:75%}table.overview-table{width:100%}table.overview-table col.col-name{width:25%}table.overview-table col.col-description{width:75%}table.overview-table td p{margin:0}hr{margin-top:40px;margin-bottom:40px}nav.toc{border-left:5px solid #4caf50;padding-left:20px;margin-bottom:48px}nav.toc h1,nav.toc h2{font-size:15px;line-height:16px;padding-bottom:12px;margin-bottom:0;font-weight:400;color:#757575}nav.toc ul{list-style:none;margin-top:0;padding-left:0}nav.toc ul li{font-size:20px;line-height:40px}nav.toc ul li a{color:#4caf50}.page-content{margin-left:auto;margin-right:auto;padding-top:60px;padding-bottom:60px;width:760px}.page-content a{text-decoration:none}.page-content h1{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}.page-content h2{font-size:24px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}.page-content h3{font-size:20px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}@media (max-width: 768px){.page-content{width:360px}}@media (min-width: 768px){.page-content{width:760px}}@media (min-width: 1476px){.page-content{width:1160px}}.mdl-mini-footer{padding-left:40px} - -/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html deleted file mode 100644 index cfa42c1e80..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - - - - tsconfig.json files using extends - - - - - - - - -
      -
      -
      - tsconfig.json files using extends -
      -
      - - -
      -
      -

      tsconfig.json files using extends

      - - -
      - -

      ts_config

      - -
      ts_config(name, deps, src)
      - -

      Allows a tsconfig.json file to extend another file.

      -

      Normally, you just give a single tsconfig.json file as the tsconfig attribute -of a ts_library rule. However, if your tsconfig.json uses the extends -feature from TypeScript, then the Bazel implementation needs to know about that -extended configuration file as well, to pass them both to the TypeScript compiler.

      - - -

      Attributes

      - - - - - - - - - - - - - - - - - - - - -
      name -

      Name; Required

      -

      A unique name for this rule.

      -
      deps -

      List of labels; Required

      -

      Additional tsconfig.json files referenced via extends

      -
      src -

      Label; Required

      -

      The tsconfig.json file passed to the TypeScript compiler

      -
      - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html deleted file mode 100644 index 6834fb4741..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - Install toolchain dependencies - - - - - - - - -
      -
      -
      - Install toolchain dependencies -
      -
      - - -
      -
      -

      Install toolchain dependencies

      - - -
      - -

      ts_setup_workspace

      - -
      ts_setup_workspace()
      - -

      This repository rule should be called from your WORKSPACE file.

      -

      It creates some additional Bazel external repositories that are used internally -by the TypeScript rules.

      - - - - -
      - - -
      -
      - - From d2771a6a2695e96b3714bf6c30b901b7fc03c30e Mon Sep 17 00:00:00 2001 From: Eric Stolten Date: Wed, 2 May 2018 18:53:10 -0700 Subject: [PATCH 0224/1134] Add sourcemap support for testing Closes #196 PiperOrigin-RevId: 195188262 --- .../github.com/bazelbuild/rules_typescript/CONTRIBUTORS | 1 + .../rules_typescript/internal/karma/karma.conf.js | 5 ++++- .../bazelbuild/rules_typescript/internal/karma/package.json | 1 + .../bazelbuild/rules_typescript/internal/karma/yarn.lock | 6 ++++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS b/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS index 5c23f73d27..00ea325028 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS +++ b/third_party/github.com/bazelbuild/rules_typescript/CONTRIBUTORS @@ -14,3 +14,4 @@ Alex Eagle Bowen Ni Daniel Muller Martin Probst +Eric Stolten diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js index a134cc4ff2..7dc841d948 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js @@ -70,7 +70,10 @@ module.exports = function(config) { } config.set({ - plugins: ['karma-*', 'karma-concat-js'], + plugins: ['karma-*', 'karma-concat-js', 'karma-sourcemap-loader'], + preprocessors: { + '**/*.js': ['sourcemap'] + }, frameworks: ['jasmine', 'concat_js'], // test results reporter to use diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json index 52d009113c..c6f4d4230d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json @@ -5,6 +5,7 @@ "karma": "alexeagle/karma#fa1a84ac881485b5657cb669e9b4e5da77b79f0a", "karma-chrome-launcher": "2.2.0", "karma-jasmine": "1.1.1", + "karma-sourcemap-loader": "0.3.7", "karma-requirejs": "1.1.0", "puppeteer": "1.1.0", "requirejs": "2.3.5", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock index 7a576fe806..16c8fe54ca 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock @@ -1242,6 +1242,12 @@ karma-requirejs@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/karma-requirejs/-/karma-requirejs-1.1.0.tgz#fddae2cb87d7ebc16fb0222893564d7fee578798" +karma-sourcemap-loader@0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/karma-requirejs/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" + dependencies: + graceful-fs "^4.1.2" + karma@alexeagle/karma#fa1a84ac881485b5657cb669e9b4e5da77b79f0a: version "1.7.1" resolved "https://codeload.github.com/alexeagle/karma/tar.gz/fa1a84ac881485b5657cb669e9b4e5da77b79f0a" From 162a35a50b472ccc7292d3a09a0debac98ca7e1f Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 3 May 2018 07:43:31 -0700 Subject: [PATCH 0225/1134] Re-generate API docs --- .../rules_typescript/docs/api/build_defs.html | 254 ++++++++++++++++ .../docs/api/devserver/ts_devserver.html | 217 +++++++++++++ .../rules_typescript/docs/api/index.html | 287 ++++++++++++++++++ .../docs/api/karma/ts_web_test.html | 222 ++++++++++++++ .../rules_typescript/docs/api/main.css | 3 + .../rules_typescript/docs/api/ts_config.html | 155 ++++++++++ .../docs/api/ts_repositories.html | 122 ++++++++ 7 files changed, 1260 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html create mode 100755 third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html new file mode 100644 index 0000000000..981843d3c5 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html @@ -0,0 +1,254 @@ + + + + + + + + + + + TypeScript compilation + + + + + + + + +
      +
      +
      + TypeScript compilation +
      +
      + + +
      +
      +

      TypeScript compilation

      + + +
      + +

      tsc_wrapped_tsconfig

      + +
      tsc_wrapped_tsconfig(ctx, files, srcs, devmode_manifest, jsx_factory)
      + +

      Produce a tsconfig.json that sets options required under Bazel.

      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ctx +

      Unknown; Required

      + +
      files +

      Unknown; Required

      + +
      srcs +

      Unknown; Required

      + +
      devmode_manifest +

      Unknown; Optional

      + +
      jsx_factory +

      Unknown; Optional

      + +
      +
      + +

      ts_library

      + +
      ts_library(name, srcs, compiler, internal_testing_type_check_dependencies, node_modules, supports_workers, tsconfig, tsickle_typed)
      + +

      ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

      +

      It produces declarations files (.d.ts) which are used for compiling downstream +TypeScript targets and JavaScript for the browser and Closure compiler.

      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      name +

      Name; Required

      +

      A unique name for this rule.

      +
      srcs +

      List of labels; Required

      +

      The TypeScript source files to compile.

      +
      compiler +

      Label; Optional; Default is //internal:tsc_wrapped_bin

      +

      Intended for internal use only. + Sets a different TypeScript compiler binary to use for this library. + For example, we use the vanilla TypeScript tsc.js for bootstrapping, + and Angular compilations can replace this with ngc.

      +
      internal_testing_type_check_dependencies +

      Boolean; Optional; Default is False

      +

      Testing only, whether to type check inputs that aren't srcs.

      +
      node_modules +

      Label; Optional; Default is @//:node_modules

      + +
      supports_workers +

      Boolean; Optional; Default is True

      +

      Intended for internal use only. + Allows you to disable the Bazel Worker strategy for this library. + Typically used together with the "compiler" setting when using a + non-worker aware compiler binary.

      +
      tsconfig +

      Label; Optional

      +

      A tsconfig.json file containing settings for TypeScript compilation. + Note that some properties in the tsconfig are governed by Bazel and will be + overridden, such as target and module.

      +
      tsickle_typed +

      Boolean; Optional; Default is True

      + +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html new file mode 100644 index 0000000000..3d066a7dec --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html @@ -0,0 +1,217 @@ + + + + + + + + + + + Simple development server + + + + + + + + +
      +
      +
      + Simple development server +
      +
      + + +
      +
      +

      Simple development server

      + + +
      + +

      ts_devserver_macro

      + +
      ts_devserver_macro(tags)
      + +

      ibazel wrapper for ts_devserver

      +

      This macro re-exposes the ts_devserver rule with some extra tags so that +it behaves correctly under ibazel.

      +

      This is re-exported in //:defs.bzl as ts_devserver so if you load the rule +from there, you actually get this macro.

      + + +

      Attributes

      + + + + + + + + + + + + +
      tags +

      List of strings; Optional

      +

      standard Bazel tags, this macro adds a couple for ibazel +**kwargs: passed through to ts_devserver

      +
      +
      + +

      ts_devserver

      + +
      ts_devserver(name, deps, data, entry_module, scripts, serving_path, static_files)
      + +

      ts_devserver is a simple development server intended for a quick "getting started" experience.

      +

      Additional documentation at https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel

      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      name +

      Name; Required

      +

      A unique name for this rule.

      +
      deps +

      List of labels; Optional; Default is []

      +

      Targets that produce JavaScript, such as ts_library

      +
      data +

      List of labels; Optional; Default is []

      +

      Dependencies that can be require'd while the server is running

      +
      entry_module +

      String; Optional; Default is ''

      +

      The entrymodule should be the AMD module name of the entry module such as `"_main/src/index"ts_devserver concats the following snippet after the bundle to load the application:require(["entry_module"]);`

      +
      scripts +

      List of labels; Optional; Default is []

      +

      User scripts to include in the JS bundle before the application sources

      +
      serving_path +

      String; Optional; Default is ''

      +

      The path you can request from the client HTML which serves the JavaScript bundle. + If you don't specify one, the JavaScript can be loaded at /_/ts_scripts.js

      +
      static_files +

      List of labels; Optional; Default is []

      +

      Arbitrary files which to be served, such as index.html. + They are served relative to the package where this rule is declared.

      +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html new file mode 100644 index 0000000000..cf7c5d7ffb --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html @@ -0,0 +1,287 @@ + + + + + + + + + + + Overview + + + + + + + + +
      +
      +
      + Overview +
      +
      + + +
      +
      +

      Overview

      + + + + +

      TypeScript compilation

      + +

      Rules

      + + + + + + + + + + + +
      + + ts_library + + +

      ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

      + +
      +

      Macros

      + + + + + + + + + + + +
      + + tsc_wrapped_tsconfig + + +

      Produce a tsconfig.json that sets options required under Bazel.

      + +
      +

      Install toolchain dependencies

      + +

      Macros

      + + + + + + + + + + + +
      + + ts_setup_workspace + + +

      This repository rule should be called from your WORKSPACE file.

      + +
      +

      tsconfig.json files using extends

      + +

      Rules

      + + + + + + + + + + + +
      + + ts_config + + +

      Allows a tsconfig.json file to extend another file.

      + +
      +

      Simple development server

      + +

      Rules

      + + + + + + + + + + + +
      + + ts_devserver + + +

      ts_devserver is a simple development server intended for a quick "getting started" experience.

      + +
      +

      Macros

      + + + + + + + + + + + +
      + + ts_devserver_macro + + +

      ibazel wrapper for ts_devserver

      + +
      +

      Unit testing in Chrome

      + +

      Rules

      + + + + + + + + + + + +
      + + ts_web_test + + +

      Runs unit tests in a browser.

      + +
      +

      Macros

      + + + + + + + + + + + +
      + + ts_web_test_macro + + +

      ibazel wrapper for ts_web_test

      + +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html new file mode 100644 index 0000000000..18263638c6 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html @@ -0,0 +1,222 @@ + + + + + + + + + + + Unit testing in Chrome + + + + + + + + +
      +
      +
      + Unit testing in Chrome +
      +
      + + +
      +
      +

      Unit testing in Chrome

      + + +
      + +

      ts_web_test_macro

      + +
      ts_web_test_macro(tags, data)
      + +

      ibazel wrapper for ts_web_test

      +

      This macro re-exposes the ts_web_test rule with some extra tags so that +it behaves correctly under ibazel.

      +

      This is re-exported in //:defs.bzl as ts_web_test so if you load the rule +from there, you actually get this macro.

      + + +

      Attributes

      + + + + + + + + + + + + + + + + +
      tags +

      List of strings; Optional

      +

      standard Bazel tags, this macro adds a couple for ibazel

      +
      data +

      List of strings; Optional

      +

      runtime dependencies +**kwargs: passed through to ts_web_test

      +
      +
      + +

      ts_web_test

      + +
      ts_web_test(name, deps, data, srcs, bootstrap)
      + +

      Runs unit tests in a browser.

      +

      When executed under bazel test, this uses a headless Chrome browser for speed. +This is also because bazel test allows multiple targets to be tested together, +and we don't want to open a Chrome window on your machine for each one. Also, +under bazel test the test will execute and immediately terminate.

      +

      Running under ibazel test gives you a "watch mode" for your tests. The rule is +optimized for this case - the test runner server will stay running and just +re-serve the up-to-date JavaScript source bundle.

      +

      To debug a single test target, run it with bazel run instead. This will open a +browser window on your computer. Also you can use any other browser by opening +the URL printed when the test starts up. The test will remain running until you +cancel the bazel run command.

      +

      Currently this rule uses Karma as the test runner, but this is an implementation +detail. We might switch to another runner like Jest in the future.

      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      name +

      Name; Required

      +

      A unique name for this rule.

      +
      deps +

      List of labels; Optional; Default is []

      +

      Other targets which produce JavaScript such as ts_library

      +
      data +

      List of labels; Optional; Default is []

      +

      Runtime dependencies

      +
      srcs +

      List of labels; Optional; Default is []

      +

      JavaScript source files

      +
      bootstrap +

      List of labels; Optional; Default is []

      +

      JavaScript files to include before the module loader (require.js). + For example, you can include Reflect,js for TypeScript decorator metadata reflection, + or UMD bundles for third-party libraries.

      +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css b/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css new file mode 100755 index 0000000000..1b2ce72850 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css @@ -0,0 +1,3 @@ +body{background-color:#fafafa}pre,code{font-family:'Liberation Mono', Consolas, Monaco, 'Andale Mono', monospace}pre{background-color:#eee;padding:20px;overflow-x:auto;word-wrap:normal}pre code{overflow-wrap:normal;white-space:pre}code{display:inline-block;font-size:90%;white-space:pre-wrap}.mdl-layout__drawer{background-color:#fff}.mdl-layout__drawer .mdl-layout-title{border-bottom:1px solid #e0e0e0;padding-left:24px}.drawer-nav ul{list-style:none;padding-left:0}.drawer-nav ul li{display:block;padding:0}.drawer-nav ul li ul li a{padding-left:44px;font-weight:400}.drawer-nav ul li a{display:block;flex-shrink:0;padding:15px 0 15px 22px;margin:0;font-weight:600;color:#757575;line-height:1em;text-decoration:none;cursor:pointer}.drawer-nav ul li a:active,.drawer-nav ul li a:hover{background-color:#f0f0f0}.drawer-nav ul li.active a{color:#4caf50;font-weight:500}h1.page-title{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}p.lead{font-size:20px;line-height:32px}table{border-collapse:collapse;border-spacing:0;background-color:#fff;table-layout:auto}table thead th{background-color:#fafafa;border:1px solid #eee;color:#757575;padding:12px 12px 12px 24px;vertical-align:top}table tbody td{border:1px solid #eee;padding:12px 12px 12px 24px;vertical-align:top}table.params-table{width:100%}table.params-table col.col-param{width:25%}table.params-table col.col-description{width:75%}table.overview-table{width:100%}table.overview-table col.col-name{width:25%}table.overview-table col.col-description{width:75%}table.overview-table td p{margin:0}hr{margin-top:40px;margin-bottom:40px}nav.toc{border-left:5px solid #4caf50;padding-left:20px;margin-bottom:48px}nav.toc h1,nav.toc h2{font-size:15px;line-height:16px;padding-bottom:12px;margin-bottom:0;font-weight:400;color:#757575}nav.toc ul{list-style:none;margin-top:0;padding-left:0}nav.toc ul li{font-size:20px;line-height:40px}nav.toc ul li a{color:#4caf50}.page-content{margin-left:auto;margin-right:auto;padding-top:60px;padding-bottom:60px;width:760px}.page-content a{text-decoration:none}.page-content h1{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}.page-content h2{font-size:24px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}.page-content h3{font-size:20px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}@media (max-width: 768px){.page-content{width:360px}}@media (min-width: 768px){.page-content{width:760px}}@media (min-width: 1476px){.page-content{width:1160px}}.mdl-mini-footer{padding-left:40px} + +/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html new file mode 100644 index 0000000000..cfa42c1e80 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html @@ -0,0 +1,155 @@ + + + + + + + + + + + tsconfig.json files using extends + + + + + + + + +
      +
      +
      + tsconfig.json files using extends +
      +
      + + +
      +
      +

      tsconfig.json files using extends

      + + +
      + +

      ts_config

      + +
      ts_config(name, deps, src)
      + +

      Allows a tsconfig.json file to extend another file.

      +

      Normally, you just give a single tsconfig.json file as the tsconfig attribute +of a ts_library rule. However, if your tsconfig.json uses the extends +feature from TypeScript, then the Bazel implementation needs to know about that +extended configuration file as well, to pass them both to the TypeScript compiler.

      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + +
      name +

      Name; Required

      +

      A unique name for this rule.

      +
      deps +

      List of labels; Required

      +

      Additional tsconfig.json files referenced via extends

      +
      src +

      Label; Required

      +

      The tsconfig.json file passed to the TypeScript compiler

      +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html new file mode 100644 index 0000000000..6834fb4741 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html @@ -0,0 +1,122 @@ + + + + + + + + + + + Install toolchain dependencies + + + + + + + + +
      +
      +
      + Install toolchain dependencies +
      +
      + + +
      +
      +

      Install toolchain dependencies

      + + +
      + +

      ts_setup_workspace

      + +
      ts_setup_workspace()
      + +

      This repository rule should be called from your WORKSPACE file.

      +

      It creates some additional Bazel external repositories that are used internally +by the TypeScript rules.

      + + + + +
      + + +
      +
      + + From aa969fd028fd667dfb29ccd3a504de5c75fe0d62 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Fri, 4 May 2018 14:16:25 -0700 Subject: [PATCH 0226/1134] PiperOrigin-RevId: 195470073 --- .../rules_typescript/docs/api/build_defs.html | 254 ---------------- .../docs/api/devserver/ts_devserver.html | 217 ------------- .../rules_typescript/docs/api/index.html | 287 ------------------ .../docs/api/karma/ts_web_test.html | 222 -------------- .../rules_typescript/docs/api/main.css | 3 - .../rules_typescript/docs/api/ts_config.html | 155 ---------- .../docs/api/ts_repositories.html | 122 -------- .../bazelbuild/rules_typescript/docs/index.md | 2 +- 8 files changed, 1 insertion(+), 1261 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html delete mode 100755 third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html deleted file mode 100644 index 981843d3c5..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - - - - - - TypeScript compilation - - - - - - - - -
      -
      -
      - TypeScript compilation -
      -
      - - -
      -
      -

      TypeScript compilation

      - - -
      - -

      tsc_wrapped_tsconfig

      - -
      tsc_wrapped_tsconfig(ctx, files, srcs, devmode_manifest, jsx_factory)
      - -

      Produce a tsconfig.json that sets options required under Bazel.

      - - -

      Attributes

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      ctx -

      Unknown; Required

      - -
      files -

      Unknown; Required

      - -
      srcs -

      Unknown; Required

      - -
      devmode_manifest -

      Unknown; Optional

      - -
      jsx_factory -

      Unknown; Optional

      - -
      -
      - -

      ts_library

      - -
      ts_library(name, srcs, compiler, internal_testing_type_check_dependencies, node_modules, supports_workers, tsconfig, tsickle_typed)
      - -

      ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

      -

      It produces declarations files (.d.ts) which are used for compiling downstream -TypeScript targets and JavaScript for the browser and Closure compiler.

      - - -

      Attributes

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      name -

      Name; Required

      -

      A unique name for this rule.

      -
      srcs -

      List of labels; Required

      -

      The TypeScript source files to compile.

      -
      compiler -

      Label; Optional; Default is //internal:tsc_wrapped_bin

      -

      Intended for internal use only. - Sets a different TypeScript compiler binary to use for this library. - For example, we use the vanilla TypeScript tsc.js for bootstrapping, - and Angular compilations can replace this with ngc.

      -
      internal_testing_type_check_dependencies -

      Boolean; Optional; Default is False

      -

      Testing only, whether to type check inputs that aren't srcs.

      -
      node_modules -

      Label; Optional; Default is @//:node_modules

      - -
      supports_workers -

      Boolean; Optional; Default is True

      -

      Intended for internal use only. - Allows you to disable the Bazel Worker strategy for this library. - Typically used together with the "compiler" setting when using a - non-worker aware compiler binary.

      -
      tsconfig -

      Label; Optional

      -

      A tsconfig.json file containing settings for TypeScript compilation. - Note that some properties in the tsconfig are governed by Bazel and will be - overridden, such as target and module.

      -
      tsickle_typed -

      Boolean; Optional; Default is True

      - -
      - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html deleted file mode 100644 index 3d066a7dec..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - - - - Simple development server - - - - - - - - -
      -
      -
      - Simple development server -
      -
      - - -
      -
      -

      Simple development server

      - - -
      - -

      ts_devserver_macro

      - -
      ts_devserver_macro(tags)
      - -

      ibazel wrapper for ts_devserver

      -

      This macro re-exposes the ts_devserver rule with some extra tags so that -it behaves correctly under ibazel.

      -

      This is re-exported in //:defs.bzl as ts_devserver so if you load the rule -from there, you actually get this macro.

      - - -

      Attributes

      - - - - - - - - - - - - -
      tags -

      List of strings; Optional

      -

      standard Bazel tags, this macro adds a couple for ibazel -**kwargs: passed through to ts_devserver

      -
      -
      - -

      ts_devserver

      - -
      ts_devserver(name, deps, data, entry_module, scripts, serving_path, static_files)
      - -

      ts_devserver is a simple development server intended for a quick "getting started" experience.

      -

      Additional documentation at https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel

      - - -

      Attributes

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      name -

      Name; Required

      -

      A unique name for this rule.

      -
      deps -

      List of labels; Optional; Default is []

      -

      Targets that produce JavaScript, such as ts_library

      -
      data -

      List of labels; Optional; Default is []

      -

      Dependencies that can be require'd while the server is running

      -
      entry_module -

      String; Optional; Default is ''

      -

      The entrymodule should be the AMD module name of the entry module such as `"_main/src/index"ts_devserver concats the following snippet after the bundle to load the application:require(["entry_module"]);`

      -
      scripts -

      List of labels; Optional; Default is []

      -

      User scripts to include in the JS bundle before the application sources

      -
      serving_path -

      String; Optional; Default is ''

      -

      The path you can request from the client HTML which serves the JavaScript bundle. - If you don't specify one, the JavaScript can be loaded at /_/ts_scripts.js

      -
      static_files -

      List of labels; Optional; Default is []

      -

      Arbitrary files which to be served, such as index.html. - They are served relative to the package where this rule is declared.

      -
      - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html deleted file mode 100644 index cf7c5d7ffb..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - - - - - Overview - - - - - - - - -
      -
      -
      - Overview -
      -
      - - -
      -
      -

      Overview

      - - - - -

      TypeScript compilation

      - -

      Rules

      - - - - - - - - - - - -
      - - ts_library - - -

      ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

      - -
      -

      Macros

      - - - - - - - - - - - -
      - - tsc_wrapped_tsconfig - - -

      Produce a tsconfig.json that sets options required under Bazel.

      - -
      -

      Install toolchain dependencies

      - -

      Macros

      - - - - - - - - - - - -
      - - ts_setup_workspace - - -

      This repository rule should be called from your WORKSPACE file.

      - -
      -

      tsconfig.json files using extends

      - -

      Rules

      - - - - - - - - - - - -
      - - ts_config - - -

      Allows a tsconfig.json file to extend another file.

      - -
      -

      Simple development server

      - -

      Rules

      - - - - - - - - - - - -
      - - ts_devserver - - -

      ts_devserver is a simple development server intended for a quick "getting started" experience.

      - -
      -

      Macros

      - - - - - - - - - - - -
      - - ts_devserver_macro - - -

      ibazel wrapper for ts_devserver

      - -
      -

      Unit testing in Chrome

      - -

      Rules

      - - - - - - - - - - - -
      - - ts_web_test - - -

      Runs unit tests in a browser.

      - -
      -

      Macros

      - - - - - - - - - - - -
      - - ts_web_test_macro - - -

      ibazel wrapper for ts_web_test

      - -
      - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html deleted file mode 100644 index 18263638c6..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - - - - - Unit testing in Chrome - - - - - - - - -
      -
      -
      - Unit testing in Chrome -
      -
      - - -
      -
      -

      Unit testing in Chrome

      - - -
      - -

      ts_web_test_macro

      - -
      ts_web_test_macro(tags, data)
      - -

      ibazel wrapper for ts_web_test

      -

      This macro re-exposes the ts_web_test rule with some extra tags so that -it behaves correctly under ibazel.

      -

      This is re-exported in //:defs.bzl as ts_web_test so if you load the rule -from there, you actually get this macro.

      - - -

      Attributes

      - - - - - - - - - - - - - - - - -
      tags -

      List of strings; Optional

      -

      standard Bazel tags, this macro adds a couple for ibazel

      -
      data -

      List of strings; Optional

      -

      runtime dependencies -**kwargs: passed through to ts_web_test

      -
      -
      - -

      ts_web_test

      - -
      ts_web_test(name, deps, data, srcs, bootstrap)
      - -

      Runs unit tests in a browser.

      -

      When executed under bazel test, this uses a headless Chrome browser for speed. -This is also because bazel test allows multiple targets to be tested together, -and we don't want to open a Chrome window on your machine for each one. Also, -under bazel test the test will execute and immediately terminate.

      -

      Running under ibazel test gives you a "watch mode" for your tests. The rule is -optimized for this case - the test runner server will stay running and just -re-serve the up-to-date JavaScript source bundle.

      -

      To debug a single test target, run it with bazel run instead. This will open a -browser window on your computer. Also you can use any other browser by opening -the URL printed when the test starts up. The test will remain running until you -cancel the bazel run command.

      -

      Currently this rule uses Karma as the test runner, but this is an implementation -detail. We might switch to another runner like Jest in the future.

      - - -

      Attributes

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      name -

      Name; Required

      -

      A unique name for this rule.

      -
      deps -

      List of labels; Optional; Default is []

      -

      Other targets which produce JavaScript such as ts_library

      -
      data -

      List of labels; Optional; Default is []

      -

      Runtime dependencies

      -
      srcs -

      List of labels; Optional; Default is []

      -

      JavaScript source files

      -
      bootstrap -

      List of labels; Optional; Default is []

      -

      JavaScript files to include before the module loader (require.js). - For example, you can include Reflect,js for TypeScript decorator metadata reflection, - or UMD bundles for third-party libraries.

      -
      - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css b/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css deleted file mode 100755 index 1b2ce72850..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css +++ /dev/null @@ -1,3 +0,0 @@ -body{background-color:#fafafa}pre,code{font-family:'Liberation Mono', Consolas, Monaco, 'Andale Mono', monospace}pre{background-color:#eee;padding:20px;overflow-x:auto;word-wrap:normal}pre code{overflow-wrap:normal;white-space:pre}code{display:inline-block;font-size:90%;white-space:pre-wrap}.mdl-layout__drawer{background-color:#fff}.mdl-layout__drawer .mdl-layout-title{border-bottom:1px solid #e0e0e0;padding-left:24px}.drawer-nav ul{list-style:none;padding-left:0}.drawer-nav ul li{display:block;padding:0}.drawer-nav ul li ul li a{padding-left:44px;font-weight:400}.drawer-nav ul li a{display:block;flex-shrink:0;padding:15px 0 15px 22px;margin:0;font-weight:600;color:#757575;line-height:1em;text-decoration:none;cursor:pointer}.drawer-nav ul li a:active,.drawer-nav ul li a:hover{background-color:#f0f0f0}.drawer-nav ul li.active a{color:#4caf50;font-weight:500}h1.page-title{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}p.lead{font-size:20px;line-height:32px}table{border-collapse:collapse;border-spacing:0;background-color:#fff;table-layout:auto}table thead th{background-color:#fafafa;border:1px solid #eee;color:#757575;padding:12px 12px 12px 24px;vertical-align:top}table tbody td{border:1px solid #eee;padding:12px 12px 12px 24px;vertical-align:top}table.params-table{width:100%}table.params-table col.col-param{width:25%}table.params-table col.col-description{width:75%}table.overview-table{width:100%}table.overview-table col.col-name{width:25%}table.overview-table col.col-description{width:75%}table.overview-table td p{margin:0}hr{margin-top:40px;margin-bottom:40px}nav.toc{border-left:5px solid #4caf50;padding-left:20px;margin-bottom:48px}nav.toc h1,nav.toc h2{font-size:15px;line-height:16px;padding-bottom:12px;margin-bottom:0;font-weight:400;color:#757575}nav.toc ul{list-style:none;margin-top:0;padding-left:0}nav.toc ul li{font-size:20px;line-height:40px}nav.toc ul li a{color:#4caf50}.page-content{margin-left:auto;margin-right:auto;padding-top:60px;padding-bottom:60px;width:760px}.page-content a{text-decoration:none}.page-content h1{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}.page-content h2{font-size:24px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}.page-content h3{font-size:20px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}@media (max-width: 768px){.page-content{width:360px}}@media (min-width: 768px){.page-content{width:760px}}@media (min-width: 1476px){.page-content{width:1160px}}.mdl-mini-footer{padding-left:40px} - -/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html deleted file mode 100644 index cfa42c1e80..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - - - - tsconfig.json files using extends - - - - - - - - -
      -
      -
      - tsconfig.json files using extends -
      -
      - - -
      -
      -

      tsconfig.json files using extends

      - - -
      - -

      ts_config

      - -
      ts_config(name, deps, src)
      - -

      Allows a tsconfig.json file to extend another file.

      -

      Normally, you just give a single tsconfig.json file as the tsconfig attribute -of a ts_library rule. However, if your tsconfig.json uses the extends -feature from TypeScript, then the Bazel implementation needs to know about that -extended configuration file as well, to pass them both to the TypeScript compiler.

      - - -

      Attributes

      - - - - - - - - - - - - - - - - - - - - -
      name -

      Name; Required

      -

      A unique name for this rule.

      -
      deps -

      List of labels; Required

      -

      Additional tsconfig.json files referenced via extends

      -
      src -

      Label; Required

      -

      The tsconfig.json file passed to the TypeScript compiler

      -
      - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html deleted file mode 100644 index 6834fb4741..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - Install toolchain dependencies - - - - - - - - -
      -
      -
      - Install toolchain dependencies -
      -
      - - -
      -
      -

      Install toolchain dependencies

      - - -
      - -

      ts_setup_workspace

      - -
      ts_setup_workspace()
      - -

      This repository rule should be called from your WORKSPACE file.

      -

      It creates some additional Bazel external repositories that are used internally -by the TypeScript rules.

      - - - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/index.md b/third_party/github.com/bazelbuild/rules_typescript/docs/index.md index 62a23c03c9..ee00762dbe 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/index.md +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/index.md @@ -27,7 +27,7 @@ that it will be possible to plug into the standard `tsc` compiler later. Tsetse is modelled on the [Error Prone] project for Java. -[Error Prone]: http://errorprone.info +[Error Prone]: https://errorprone.info ## Example From 645cda71bad6283b9dcdb7dc840e4bbf45b9e9b4 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 7 May 2018 12:51:43 -0700 Subject: [PATCH 0227/1134] Add ts_proto_library rule Closes #193 PiperOrigin-RevId: 195706451 --- .../bazelbuild/rules_typescript/BUILD.bazel | 19 + .../bazelbuild/rules_typescript/WORKSPACE | 6 +- .../bazelbuild/rules_typescript/defs.bzl | 2 + .../examples/protocol_buffers/BUILD.bazel | 60 +++ .../examples/protocol_buffers/app.ts | 7 + .../examples/protocol_buffers/car.proto | 12 + .../examples/protocol_buffers/car.spec.ts | 35 ++ .../examples/protocol_buffers/tire.proto | 11 + .../rules_typescript/examples/tsconfig.json | 6 +- .../internal/devserver/ts_devserver.bzl | 23 +- .../internal/karma/ts_web_test.bzl | 10 +- .../internal/protobufjs/BUILD.bazel | 19 + .../internal/protobufjs/package.json | 20 + .../internal/protobufjs/ts_proto_library.bzl | 166 +++++++ .../internal/protobufjs/yarn.lock | 467 ++++++++++++++++++ .../internal/ts_repositories.bzl | 6 + .../bazelbuild/rules_typescript/package.json | 1 + .../bazelbuild/rules_typescript/yarn.lock | 24 +- 18 files changed, 874 insertions(+), 20 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/car.proto create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/car.spec.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/tire.proto create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/package.json create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/yarn.lock diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index 22ae8bf129..6f457614ec 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -19,6 +19,7 @@ # https://github.com/bazelbuild/rules_go/blob/master/go/tools/gazelle/README.rst#directives # gazelle:exclude node_modules load("@io_bazel_rules_go//go:def.bzl", "gazelle") +load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") gazelle( name = "gazelle", @@ -48,6 +49,7 @@ skylark_doc( "//internal:ts_config.bzl", "//internal/devserver:ts_devserver.bzl", "//internal/karma:ts_web_test.bzl", + "//internal/protobufjs:ts_proto_library.bzl", ], format = "html", # The site is served at http://tsetse.info so the URL doesn't include a @@ -56,3 +58,20 @@ skylark_doc( site_root = "/api", strip_prefix = "internal/", ) + +# Runtime libraries needed by the protobufjs library. +# Any JS code produced by the ts_proto_library rule has a runtime dependency on these scripts. +js_library( + name = "protobufjs_bootstrap_scripts", + srcs = [ + "@build_bazel_rules_typescript_protobufs_compiletime_deps//:node_modules/long/dist/long.js", + "@build_bazel_rules_typescript_protobufs_compiletime_deps//:node_modules/protobufjs/dist/minimal/protobuf.min.js", + ], + # Make devmode loading work when it does require("protobufjs/minimal") + # so this is shimmed to define it to equal global.protobuf + amd_names = { + "long": "Long", + "protobufjs/minimal": "protobuf", + }, + visibility = ["//visibility:public"], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 80c2a407f4..70de43e5a2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -16,9 +16,9 @@ workspace(name = "build_bazel_rules_typescript") http_archive( name = "build_bazel_rules_nodejs", - url = "https://github.com/bazelbuild/rules_nodejs/archive/0.5.3.zip", - strip_prefix = "rules_nodejs-0.5.3", - sha256 = "17a5515f59777b00cb25dbc710017a14273f825029b2ec60e0969d28914870be", + url = "https://github.com/bazelbuild/rules_nodejs/archive/092404e3b47e1144ecfc2937d3729b717b1052bf.zip", + strip_prefix = "rules_nodejs-092404e3b47e1144ecfc2937d3729b717b1052bf", + sha256 = "5e3dd3f76a043687939a14ce6aee3049f8bd97d2cd885ef2105ac344d05213a3", ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl index d5bfd61606..312cef2879 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl @@ -21,6 +21,7 @@ load("//internal:build_defs.bzl", _ts_library = "ts_library") load("//internal:ts_config.bzl", _ts_config = "ts_config") load("//internal/devserver:ts_devserver.bzl", _ts_devserver = "ts_devserver_macro") load("//internal/karma:ts_web_test.bzl", _ts_web_test = "ts_web_test_macro") +load("//internal/protobufjs:ts_proto_library.bzl", _ts_proto_library = "ts_proto_library") ts_setup_workspace = _ts_setup_workspace ts_library = _ts_library @@ -28,5 +29,6 @@ ts_config = _ts_config ts_devserver = _ts_devserver # TODO(alexeagle): make ts_web_test work in google3 ts_web_test = _ts_web_test +ts_proto_library = _ts_proto_library # DO NOT ADD MORE rules here unless they appear in the generated docsite. # Run yarn skydoc to re-generate the docsite. diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel new file mode 100644 index 0000000000..b2982c67ba --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel @@ -0,0 +1,60 @@ +load("@build_bazel_rules_typescript//:defs.bzl", + "ts_library", + "ts_proto_library", + "ts_web_test", + "ts_devserver", +) + +proto_library( + name = "tire_proto", + srcs = ["tire.proto"], +) + +proto_library( + name = "car_proto", + srcs = ["car.proto"], + deps = [":tire_proto"], +) + +ts_proto_library( + # The result will be "car.d.ts" named after this target. + # We could use the output_name attribute if we want the output named + # differently than the target. + name = "car", + deps = [":car_proto"], +) + +ts_library( + name = "test_lib", + testonly = True, + srcs = ["car.spec.ts"], + deps = [":car"], +) + +ts_web_test( + name = "test", + deps = ["test_lib"], + bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"], +) + +ts_library( + name = "app", + srcs = ["app.ts"], + deps = [":car"], +) + +ts_devserver( + name = "devserver", + deps = [":app"], + entry_module = "build_bazel_rules_typescript/examples/protocol_buffers/app", + bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"], +) + +# Test for production mode +load("@build_bazel_rules_nodejs//:defs.bzl", "rollup_bundle") + +rollup_bundle( + name = "bundle", + deps = [":app"], + entry_point = "examples/protocol_buffers/app", +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app.ts new file mode 100644 index 0000000000..f7628395ef --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app.ts @@ -0,0 +1,7 @@ +import {Car} from './car'; + +const serverResponse = `{"make": "Porsche"}`; +const car = Car.create(JSON.parse(serverResponse)); +const el: HTMLDivElement = document.createElement('div'); +el.innerText = `Car from server: ${car.make}`; +document.body.appendChild(el); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/car.proto b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/car.proto new file mode 100644 index 0000000000..d8b04d148c --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/car.proto @@ -0,0 +1,12 @@ +syntax = "proto3"; + +import "examples/protocol_buffers/tire.proto"; + +message Car { + string make = 1; + string model = 2; + int32 year = 3; + Tire front_tires = 4; + Tire rear_tires = 5; + int64 mileage = 6; +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/car.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/car.spec.ts new file mode 100644 index 0000000000..803b9df2dd --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/car.spec.ts @@ -0,0 +1,35 @@ +import {Car} from './car'; +import Long = require('long'); + +describe('protocol buffers', () => { + + it('allows creation of an object described by proto', () => { + const pontiac = Car.create({ + make: "pontiac", + frontTires: { + width: 225, + aspectRatio: 65, + construction: 'R', + diameter: 17, + }, + }); + expect(pontiac.make).toEqual('pontiac'); + if (!pontiac.frontTires) { + fail('Should have frontTires set'); + } else { + expect(pontiac.frontTires.width).toEqual(225); + } + }); + + // Asserts that longs are handled correctly. + // This value comes from https://github.com/dcodeIO/long.js#background + it('handles long values correctly', () => { + const pontiac = Car.create({ + make: "pontiac", + // Long.MAX_VALUE + mileage: new Long(0xFFFFFFFF, 0x7FFFFFFF), + }); + const object = Car.toObject(pontiac, {longs: String}); + expect(object["mileage"]).toEqual("9223372036854775807"); + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/tire.proto b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/tire.proto new file mode 100644 index 0000000000..a7de133aa3 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/tire.proto @@ -0,0 +1,11 @@ +syntax = "proto3"; + +message Tire { + string type = 1; + int32 width = 2; + int32 aspect_ratio = 3; + string construction = 4; + int32 diameter = 5; + int32 load_index = 6; + string speed_rating = 7; +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig.json index d08c0faa6a..6b05f23610 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig.json +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig.json @@ -1,7 +1,11 @@ { "compilerOptions": { "strict": true, - "lib": ["es2015.promise", "dom", "es5"] + "lib": ["es2015.promise", "dom", "es5"], + // Include the output directory in rootDirs so that generated .d.ts files + // can be used for type-checking in the editor, for example the car.proto + // produces a car.d.ts. + "rootDirs": [".", "../bazel-bin/examples"] } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl index ba60c33f56..f9cd7f6a2d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl @@ -17,6 +17,9 @@ load("@build_bazel_rules_nodejs//internal:node.bzl", "sources_aspect", ) +load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", + "write_amd_names_shim", +) def _ts_devserver(ctx): files = depset() @@ -43,12 +46,19 @@ def _ts_devserver(ctx): workspace_name + "/" + f.short_path + "\n" for f in files ])) + amd_names_shim = ctx.actions.declare_file( + "_%s.amd_names_shim.js" % ctx.label.name, + sibling = ctx.outputs.executable) + write_amd_names_shim(ctx.actions, amd_names_shim, ctx.attr.bootstrap) + # Requirejs is always needed so its included as the first script # in script_files before any user specified scripts for the devserver # to concat in order. - script_files = depset() - script_files += ctx.files._requirejs_script - script_files += ctx.files.scripts + script_files = [] + script_files.extend(ctx.files.bootstrap) + script_files.append(ctx.file._requirejs_script) + script_files.append(amd_names_shim) + script_files.extend(ctx.files.scripts) ctx.actions.write(ctx.outputs.scripts_manifest, "".join([ workspace_name + "/" + f.short_path + "\n" for f in script_files ])) @@ -57,9 +67,9 @@ def _ts_devserver(ctx): ctx.executable._devserver, ctx.outputs.manifest, ctx.outputs.scripts_manifest, - ctx.file._requirejs_script] + ] devserver_runfiles += ctx.files.static_files - devserver_runfiles += ctx.files.scripts + devserver_runfiles += script_files serving_arg = "" if ctx.attr.serving_path: @@ -120,6 +130,9 @@ ts_devserver = rule( ts_devserver concats the following snippet after the bundle to load the application: `require(["entry_module"]);` """), + "bootstrap": attr.label_list( + doc = "Scripts to include in the JS bundle before the module loader (require.js)", + allow_files = [".js"]), "_requirejs_script": attr.label(allow_files = True, single_file = True, default = Label("@build_bazel_rules_typescript_devserver_deps//:node_modules/requirejs/require.js")), "_devserver": attr.label( default = Label("//internal/devserver/main"), diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl index 3c74f24df7..85da445f07 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl @@ -17,6 +17,7 @@ load("@build_bazel_rules_nodejs//internal:node.bzl", "sources_aspect", "expand_path_into_runfiles", ) +load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "write_amd_names_shim") _CONF_TMPL = "//internal/karma:karma.conf.js" # TODO(alexeagle): users will need some control over browser; needs design @@ -45,6 +46,12 @@ def _ts_web_test_impl(ctx): expand_path_into_runfiles(ctx, f.short_path) for f in ctx.files.bootstrap ] + + amd_names_shim = ctx.actions.declare_file( + "_%s.amd_names_shim.js" % ctx.label.name, + sibling = ctx.outputs.executable) + write_amd_names_shim(ctx.actions, amd_names_shim, ctx.attr.bootstrap) + # Explicitly list the requirejs library files here, rather than use # `frameworks: ['requirejs']` # so that we control the script order, and the bootstrap files come before @@ -55,6 +62,7 @@ def _ts_web_test_impl(ctx): bootstrap_entries += [ "build_bazel_rules_typescript_karma_deps/node_modules/requirejs/require.js", "build_bazel_rules_typescript_karma_deps/node_modules/karma-requirejs/lib/adapter.js", + "/".join([ctx.workspace_name, amd_names_shim.short_path]), ] # Finally we load the user's srcs and deps user_entries = [ @@ -115,7 +123,7 @@ $KARMA ${{ARGV[@]}} return [DefaultInfo( runfiles = ctx.runfiles( files = ctx.files.srcs + ctx.files.deps + ctx.files.bootstrap + [ - conf, + conf, amd_names_shim ], transitive_files = files, # Propagate karma_bin and its runfiles diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/BUILD.bazel new file mode 100644 index 0000000000..662c061b9f --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/BUILD.bazel @@ -0,0 +1,19 @@ +package(default_visibility=["//visibility:public"]) +load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary") + +exports_files([ + "node_modules/protobufjs/dist/minimal/protobuf.min.js", + # Exported to be consumed for generating skydoc. + "ts_proto_library.bzl", +]) + +nodejs_binary( + name = "pbjs", + node_modules = "@build_bazel_rules_typescript_protobufs_compiletime_deps//:node_modules", + entry_point = "protobufjs/bin/pbjs", +) +nodejs_binary( + name = "pbts", + node_modules = "@build_bazel_rules_typescript_protobufs_compiletime_deps//:node_modules", + entry_point = "protobufjs/bin/pbts", +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/package.json new file mode 100644 index 0000000000..7d669f6cbf --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/package.json @@ -0,0 +1,20 @@ +{ + "name": "protobufjs", + "version": "1.0.0", + "main": "index.js", + "license": "MIT", + "devDependencies": { + "chalk": "^1.1.3", + "escodegen": "^1.9.0", + "espree": "^3.5.3", + "estraverse": "^4.2.0", + "glob": "^7.1.2", + "jsdoc": "^3.5.5", + "minimist": "^1.2.0", + "protobufjs": "Use HEAD to pick up fix for https://github.com/dcodeIO/protobuf.js/pull/1018", + "protobufjs": "github:dcodeIO/protobuf.js#65d113b0079fa2570837f3cf95268ce24714a248", + "semver": "^5.5.0", + "tmp": "0.0.33", + "uglify-js": "^2.8.29" + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl new file mode 100644 index 0000000000..9482c67a63 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl @@ -0,0 +1,166 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"Protocol Buffers" + +def _run_pbjs(actions, executable, output_name, proto_files, suffix = ".js", wrap = "amd", amd_name = ""): + js_file = actions.declare_file(output_name + suffix) + + # Create an intermediate file so that we can do some manipulation of the + # generated .js output that makes it compatible with our named AMD loading. + js_tmpl_file = actions.declare_file(output_name + suffix + ".tmpl") + + # Reference of arguments: + # https://github.com/dcodeIO/ProtoBuf.js/#pbjs-for-javascript + args = actions.args() + args.add(["--target", "static-module"]) + args.add(["--wrap", wrap]) + args.add("--strict-long") # Force usage of Long type with int64 fields + args.add(["--out", js_file.path + ".tmpl"]) + args.add([f.path for f in proto_files]) + + actions.run( + executable = executable._pbjs, + inputs = proto_files, + outputs = [js_tmpl_file], + arguments = [args], + ) + + actions.expand_template( + template = js_tmpl_file, + output = js_file, + substitutions = { + # convert anonymous AMD module + # define(["protobufjs/minimal"], function($protobuf) { + # to named + # define("wksp/path/to/module", ["protobufjs/minimal"], ... + "define([": "define('%s/%s', [" % (amd_name, output_name), + } + ) + return js_file + +def _run_pbts(actions, executable, js_file): + ts_file = actions.declare_file(js_file.basename[:-len(".closure.js")] + ".d.ts") + + # Reference of arguments: + # https://github.com/dcodeIO/ProtoBuf.js/#pbts-for-typescript + args = actions.args() + args.add(["--out", ts_file.path]) + args.add(js_file.path) + + actions.run( + executable = executable._pbts, + progress_message = "Generating typings from %s" % js_file.short_path, + inputs = [js_file], + outputs = [ts_file], + arguments = [args], + ) + return ts_file + +def _ts_proto_library(ctx): + sources = depset() + for dep in ctx.attr.deps: + if not hasattr(dep, "proto"): + fail("ts_proto_library dep %s must be a proto_library rule" % dep.label) + # TODO(alexeagle): go/new-proto-library suggests + # > should not parse .proto files. Instead, they should use the descriptor + # > set output from proto_library + # but protobuf.js doesn't seem to accept that bin format + sources = depset(transitive = [sources, dep.proto.transitive_sources]) + + output_name = ctx.attr.output_name or ctx.label.name + + js_es5 = _run_pbjs(ctx.actions, ctx.executable, output_name, sources, + amd_name = "/".join([p for p in [ + ctx.workspace_name, + ctx.label.package, + ] if p])) + js_es6 = _run_pbjs(ctx.actions, ctx.executable, output_name, sources, + suffix = ".closure.js", wrap = "es6") + dts = _run_pbts(ctx.actions, ctx.executable, js_es6) + + # Return a structure that is compatible with the deps[] of a ts_library. + return struct( + files = depset([dts]), + typescript = struct( + declarations = [dts], + transitive_declarations = [dts], + type_blacklisted_declarations = [], + es5_sources = depset([js_es5]), + es6_sources = depset([js_es6]), + transitive_es5_sources = depset(), + transitive_es6_sources = depset([js_es6]), + ), + ) + +ts_proto_library = rule( + implementation = _ts_proto_library, + attrs = { + "deps": attr.label_list(doc = "proto_library targets"), + "output_name": attr.string( + doc = """Name of the resulting module, which you will import from. + If not specified, the name will match the target's name."""), + "_pbjs": attr.label(default = Label("//internal/protobufjs:pbjs"), + executable = True, cfg = "host"), + "_pbts": attr.label(default = Label("//internal/protobufjs:pbts"), + executable = True, cfg = "host"), + }, +) +""" +Wraps https://github.com/dcodeIO/protobuf.js for use in Bazel. + +`ts_proto_library` has identical outputs to `ts_library`, so it can be used anywhere +a `ts_library` can appear, such as in the `deps[]` of another `ts_library`. + +Example: + +``` +load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_proto_library") + +ts_proto_library( + name = "car_proto", + srcs = ["car.proto"], +) + +ts_library( + name = "test_lib", + testonly = True, + srcs = ["car.spec.ts"], + deps = [":car_proto"], +) +``` + +The JavaScript produced by protobuf.js has a runtime dependency on a support library. +Under devmode (e.g. `ts_devserver`, `ts_web_test`) you'll need to include these scripts +in the `bootstrap` phase (before Require.js loads). You can use the label +`@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts` to reference these scripts. + +After Require.js loads, we need to provide a name for the `protobufjs` global symbol +so that it can be require'd. Put this code somewhere in your app: +`define("protobufjs/minimal", () => protobuf);` + +To complete the example above, you could write a `ts_web_test`: + +``` +load("@build_bazel_rules_typescript//:defs.bzl", "ts_web_test") + +ts_web_test( + name = "test", + deps = ["test_lib"], + bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"], + srcs = ["require.config.js"], +) +``` + +where require.config.js contains the `define` statement above. +""" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/yarn.lock new file mode 100644 index 0000000000..caa710097e --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/yarn.lock @@ -0,0 +1,467 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@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" + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + +"@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" + +"@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.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.10.tgz#fec07bc2ad549d9e6d2f7aa0fb0be3491b83163a" + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^5.5.0: + version "5.5.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +babylon@7.0.0-beta.19: + version "7.0.0-beta.19" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.19.tgz#e928c7e807e970e0536b078ab3e0c48f9e052503" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +bluebird@~3.5.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + +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" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +catharsis@~0.8.9: + version "0.8.9" + resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.9.tgz#98cc890ca652dd2ef0e70b37925310ff9e90fc8b" + dependencies: + underscore-contrib "~0.3.0" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@^1.1.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" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +decamelize@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +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.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" + +espree@^3.5.3: + version "3.5.4" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" + dependencies: + acorn "^5.5.0" + acorn-jsx "^3.0.0" + +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + +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" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +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" + +graceful-fs@^4.1.9: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +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" + +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: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +js2xmlparser@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-3.0.0.tgz#3fb60eaa089c5440f9319f51760ccd07e2499733" + dependencies: + xmlcreate "^1.0.1" + +jsdoc@^3.5.5: + version "3.5.5" + resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.5.5.tgz#484521b126e81904d632ff83ec9aaa096708fa4d" + dependencies: + babylon "7.0.0-beta.19" + bluebird "~3.5.0" + catharsis "~0.8.9" + escape-string-regexp "~1.0.5" + js2xmlparser "~3.0.0" + klaw "~2.0.0" + marked "~0.3.6" + mkdirp "~0.5.1" + requizzle "~0.2.1" + strip-json-comments "~2.0.1" + taffydb "2.6.2" + underscore "~1.8.3" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +klaw@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-2.0.0.tgz#59c128e0dc5ce410201151194eeb9cbf858650f6" + dependencies: + graceful-fs "^4.1.9" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +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" + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +marked@~0.3.6: + version "0.3.19" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" + +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.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +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" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +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-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +"protobufjs@github:dcodeIO/protobuf.js#65d113b0079fa2570837f3cf95268ce24714a248": + version "6.8.7" + resolved "https://codeload.github.com/dcodeIO/protobuf.js/tar.gz/65d113b0079fa2570837f3cf95268ce24714a248" + 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" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +requizzle@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.1.tgz#6943c3530c4d9a7e46f1cddd51c158fc670cdbde" + dependencies: + underscore "~1.6.0" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +semver@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + +source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-json-comments@~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" + +taffydb@2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" + +tmp@0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + +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" + +uglify-js@^2.8.29: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +underscore-contrib@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/underscore-contrib/-/underscore-contrib-0.3.0.tgz#665b66c24783f8fa2b18c9f8cbb0e2c7d48c26c7" + dependencies: + underscore "1.6.0" + +underscore@1.6.0, underscore@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" + +underscore@~1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@~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" + +xmlcreate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-1.0.2.tgz#fa6bf762a60a413fb3dd8f4b03c5b269238d308f" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl index ac89e7d003..2e81feb418 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl @@ -38,3 +38,9 @@ def ts_setup_workspace(): package_json = "@build_bazel_rules_typescript//internal/karma:package.json", yarn_lock = "@build_bazel_rules_typescript//internal/karma:yarn.lock", ) + + yarn_install( + name = "build_bazel_rules_typescript_protobufs_compiletime_deps", + package_json = "@build_bazel_rules_typescript//internal/protobufjs:package.json", + yarn_lock = "@build_bazel_rules_typescript//internal/protobufjs:yarn.lock", + ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 126920ec5a..fbd4839830 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -14,6 +14,7 @@ "devDependencies": { "@bazel/ibazel": "^0.2.0", "@types/jasmine": "^2.8.2", + "@types/long": "^4.0.0", "@types/node": "7.0.18", "@types/source-map": "^0.5.1", "@types/tmp": "^0.0.33", diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index 338518fa56..2b9cbb7667 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -10,6 +10,10 @@ version "2.8.2" resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" +"@types/long@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.0.tgz#719551d2352d301ac8b81db732acb6bdc28dbdef" + "@types/node@7.0.18": version "7.0.18" resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" @@ -925,15 +929,15 @@ tsickle@0.25.x: source-map "^0.5.6" source-map-support "^0.4.2" -tslib@^1.7.1: - version "1.8.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.8.0.tgz#dc604ebad64bcbf696d613da6c954aa0e7ea1eb6" +tslib@^1.8.1: + version "1.9.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" -tsutils@2.12.1: - version "2.12.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.12.1.tgz#f4d95ce3391c8971e46e54c4cf0edb0a21dd5b24" +tsutils@2.20.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.20.0.tgz#303394064bc80be8ee04e10b8609ae852e9312d3" dependencies: - tslib "^1.7.1" + tslib "^1.8.1" tunnel-agent@^0.6.0: version "0.6.0" @@ -945,9 +949,9 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" -typescript@2.5.x: - version "2.5.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.3.tgz#df3dcdc38f3beb800d4bc322646b04a3f6ca7f0d" +typescript@2.6.x: + version "2.6.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4" ultron@1.0.x: version "1.0.2" From 0cc4655f85f6617cec74d23973e6bfbb954377ef Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 7 May 2018 13:22:34 -0700 Subject: [PATCH 0228/1134] Add back API docs --- .../rules_typescript/docs/api/build_defs.html | 264 +++++++++++++++ .../docs/api/devserver/ts_devserver.html | 234 +++++++++++++ .../rules_typescript/docs/api/index.html | 320 ++++++++++++++++++ .../docs/api/karma/ts_web_test.html | 232 +++++++++++++ .../rules_typescript/docs/api/main.css | 3 + .../docs/api/protobufjs/ts_proto_library.html | 196 +++++++++++ .../rules_typescript/docs/api/ts_config.html | 165 +++++++++ .../docs/api/ts_repositories.html | 132 ++++++++ 8 files changed, 1546 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html create mode 100755 third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html new file mode 100644 index 0000000000..48879979b0 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html @@ -0,0 +1,264 @@ + + + + + + + + + + + TypeScript compilation + + + + + + + + +
      +
      +
      + TypeScript compilation +
      +
      + + +
      +
      +

      TypeScript compilation

      + + +
      + +

      tsc_wrapped_tsconfig

      + +
      tsc_wrapped_tsconfig(ctx, files, srcs, devmode_manifest, jsx_factory)
      + +

      Produce a tsconfig.json that sets options required under Bazel.

      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ctx +

      Unknown; Required

      + +
      files +

      Unknown; Required

      + +
      srcs +

      Unknown; Required

      + +
      devmode_manifest +

      Unknown; Optional

      + +
      jsx_factory +

      Unknown; Optional

      + +
      +
      + +

      ts_library

      + +
      ts_library(name, srcs, compiler, internal_testing_type_check_dependencies, node_modules, supports_workers, tsconfig, tsickle_typed)
      + +

      ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

      +

      It produces declarations files (.d.ts) which are used for compiling downstream +TypeScript targets and JavaScript for the browser and Closure compiler.

      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      name +

      Name; Required

      +

      A unique name for this rule.

      +
      srcs +

      List of labels; Required

      +

      The TypeScript source files to compile.

      +
      compiler +

      Label; Optional; Default is //internal:tsc_wrapped_bin

      +

      Intended for internal use only. + Sets a different TypeScript compiler binary to use for this library. + For example, we use the vanilla TypeScript tsc.js for bootstrapping, + and Angular compilations can replace this with ngc.

      +
      internal_testing_type_check_dependencies +

      Boolean; Optional; Default is False

      +

      Testing only, whether to type check inputs that aren't srcs.

      +
      node_modules +

      Label; Optional; Default is @//:node_modules

      + +
      supports_workers +

      Boolean; Optional; Default is True

      +

      Intended for internal use only. + Allows you to disable the Bazel Worker strategy for this library. + Typically used together with the "compiler" setting when using a + non-worker aware compiler binary.

      +
      tsconfig +

      Label; Optional

      +

      A tsconfig.json file containing settings for TypeScript compilation. + Note that some properties in the tsconfig are governed by Bazel and will be + overridden, such as target and module.

      +
      tsickle_typed +

      Boolean; Optional; Default is True

      + +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html new file mode 100644 index 0000000000..e46a028d8e --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html @@ -0,0 +1,234 @@ + + + + + + + + + + + Simple development server + + + + + + + + +
      +
      +
      + Simple development server +
      +
      + + +
      +
      +

      Simple development server

      + + +
      + +

      ts_devserver_macro

      + +
      ts_devserver_macro(tags)
      + +

      ibazel wrapper for ts_devserver

      +

      This macro re-exposes the ts_devserver rule with some extra tags so that +it behaves correctly under ibazel.

      +

      This is re-exported in //:defs.bzl as ts_devserver so if you load the rule +from there, you actually get this macro.

      + + +

      Attributes

      + + + + + + + + + + + + +
      tags +

      List of strings; Optional

      +

      standard Bazel tags, this macro adds a couple for ibazel +**kwargs: passed through to ts_devserver

      +
      +
      + +

      ts_devserver

      + +
      ts_devserver(name, deps, data, bootstrap, entry_module, scripts, serving_path, static_files)
      + +

      ts_devserver is a simple development server intended for a quick "getting started" experience.

      +

      Additional documentation at https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel

      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      name +

      Name; Required

      +

      A unique name for this rule.

      +
      deps +

      List of labels; Optional; Default is []

      +

      Targets that produce JavaScript, such as ts_library

      +
      data +

      List of labels; Optional; Default is []

      +

      Dependencies that can be require'd while the server is running

      +
      bootstrap +

      List of labels; Optional; Default is []

      +

      Scripts to include in the JS bundle before the module loader (require.js)

      +
      entry_module +

      String; Optional; Default is ''

      +

      The entrymodule should be the AMD module name of the entry module such as `"_main/src/index"ts_devserver concats the following snippet after the bundle to load the application:require(["entry_module"]);`

      +
      scripts +

      List of labels; Optional; Default is []

      +

      User scripts to include in the JS bundle before the application sources

      +
      serving_path +

      String; Optional; Default is ''

      +

      The path you can request from the client HTML which serves the JavaScript bundle. + If you don't specify one, the JavaScript can be loaded at /_/ts_scripts.js

      +
      static_files +

      List of labels; Optional; Default is []

      +

      Arbitrary files which to be served, such as index.html. + They are served relative to the package where this rule is declared.

      +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html new file mode 100644 index 0000000000..c7d4f7e3a0 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html @@ -0,0 +1,320 @@ + + + + + + + + + + + Overview + + + + + + + + +
      +
      +
      + Overview +
      +
      + + +
      +
      +

      Overview

      + + + + +

      TypeScript compilation

      + +

      Rules

      + + + + + + + + + + + +
      + + ts_library + + +

      ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

      + +
      +

      Macros

      + + + + + + + + + + + +
      + + tsc_wrapped_tsconfig + + +

      Produce a tsconfig.json that sets options required under Bazel.

      + +
      +

      Install toolchain dependencies

      + +

      Macros

      + + + + + + + + + + + +
      + + ts_setup_workspace + + +

      This repository rule should be called from your WORKSPACE file.

      + +
      +

      tsconfig.json files using extends

      + +

      Rules

      + + + + + + + + + + + +
      + + ts_config + + +

      Allows a tsconfig.json file to extend another file.

      + +
      +

      Simple development server

      + +

      Rules

      + + + + + + + + + + + +
      + + ts_devserver + + +

      ts_devserver is a simple development server intended for a quick "getting started" experience.

      + +
      +

      Macros

      + + + + + + + + + + + +
      + + ts_devserver_macro + + +

      ibazel wrapper for ts_devserver

      + +
      +

      Unit testing in Chrome

      + +

      Rules

      + + + + + + + + + + + +
      + + ts_web_test + + +

      Runs unit tests in a browser.

      + +
      +

      Macros

      + + + + + + + + + + + +
      + + ts_web_test_macro + + +

      ibazel wrapper for ts_web_test

      + +
      +

      Protocol Buffers

      + +

      Rules

      + + + + + + + + + + + +
      + + ts_proto_library + + +

      Wraps https://github.com/dcodeIO/protobuf.js for use in Bazel.

      + +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html new file mode 100644 index 0000000000..0a9da03439 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html @@ -0,0 +1,232 @@ + + + + + + + + + + + Unit testing in Chrome + + + + + + + + +
      +
      +
      + Unit testing in Chrome +
      +
      + + +
      +
      +

      Unit testing in Chrome

      + + +
      + +

      ts_web_test_macro

      + +
      ts_web_test_macro(tags, data)
      + +

      ibazel wrapper for ts_web_test

      +

      This macro re-exposes the ts_web_test rule with some extra tags so that +it behaves correctly under ibazel.

      +

      This is re-exported in //:defs.bzl as ts_web_test so if you load the rule +from there, you actually get this macro.

      + + +

      Attributes

      + + + + + + + + + + + + + + + + +
      tags +

      List of strings; Optional

      +

      standard Bazel tags, this macro adds a couple for ibazel

      +
      data +

      List of strings; Optional

      +

      runtime dependencies +**kwargs: passed through to ts_web_test

      +
      +
      + +

      ts_web_test

      + +
      ts_web_test(name, deps, data, srcs, bootstrap)
      + +

      Runs unit tests in a browser.

      +

      When executed under bazel test, this uses a headless Chrome browser for speed. +This is also because bazel test allows multiple targets to be tested together, +and we don't want to open a Chrome window on your machine for each one. Also, +under bazel test the test will execute and immediately terminate.

      +

      Running under ibazel test gives you a "watch mode" for your tests. The rule is +optimized for this case - the test runner server will stay running and just +re-serve the up-to-date JavaScript source bundle.

      +

      To debug a single test target, run it with bazel run instead. This will open a +browser window on your computer. Also you can use any other browser by opening +the URL printed when the test starts up. The test will remain running until you +cancel the bazel run command.

      +

      Currently this rule uses Karma as the test runner, but this is an implementation +detail. We might switch to another runner like Jest in the future.

      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      name +

      Name; Required

      +

      A unique name for this rule.

      +
      deps +

      List of labels; Optional; Default is []

      +

      Other targets which produce JavaScript such as ts_library

      +
      data +

      List of labels; Optional; Default is []

      +

      Runtime dependencies

      +
      srcs +

      List of labels; Optional; Default is []

      +

      JavaScript source files

      +
      bootstrap +

      List of labels; Optional; Default is []

      +

      JavaScript files to include before the module loader (require.js). + For example, you can include Reflect,js for TypeScript decorator metadata reflection, + or UMD bundles for third-party libraries.

      +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css b/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css new file mode 100755 index 0000000000..1b2ce72850 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css @@ -0,0 +1,3 @@ +body{background-color:#fafafa}pre,code{font-family:'Liberation Mono', Consolas, Monaco, 'Andale Mono', monospace}pre{background-color:#eee;padding:20px;overflow-x:auto;word-wrap:normal}pre code{overflow-wrap:normal;white-space:pre}code{display:inline-block;font-size:90%;white-space:pre-wrap}.mdl-layout__drawer{background-color:#fff}.mdl-layout__drawer .mdl-layout-title{border-bottom:1px solid #e0e0e0;padding-left:24px}.drawer-nav ul{list-style:none;padding-left:0}.drawer-nav ul li{display:block;padding:0}.drawer-nav ul li ul li a{padding-left:44px;font-weight:400}.drawer-nav ul li a{display:block;flex-shrink:0;padding:15px 0 15px 22px;margin:0;font-weight:600;color:#757575;line-height:1em;text-decoration:none;cursor:pointer}.drawer-nav ul li a:active,.drawer-nav ul li a:hover{background-color:#f0f0f0}.drawer-nav ul li.active a{color:#4caf50;font-weight:500}h1.page-title{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}p.lead{font-size:20px;line-height:32px}table{border-collapse:collapse;border-spacing:0;background-color:#fff;table-layout:auto}table thead th{background-color:#fafafa;border:1px solid #eee;color:#757575;padding:12px 12px 12px 24px;vertical-align:top}table tbody td{border:1px solid #eee;padding:12px 12px 12px 24px;vertical-align:top}table.params-table{width:100%}table.params-table col.col-param{width:25%}table.params-table col.col-description{width:75%}table.overview-table{width:100%}table.overview-table col.col-name{width:25%}table.overview-table col.col-description{width:75%}table.overview-table td p{margin:0}hr{margin-top:40px;margin-bottom:40px}nav.toc{border-left:5px solid #4caf50;padding-left:20px;margin-bottom:48px}nav.toc h1,nav.toc h2{font-size:15px;line-height:16px;padding-bottom:12px;margin-bottom:0;font-weight:400;color:#757575}nav.toc ul{list-style:none;margin-top:0;padding-left:0}nav.toc ul li{font-size:20px;line-height:40px}nav.toc ul li a{color:#4caf50}.page-content{margin-left:auto;margin-right:auto;padding-top:60px;padding-bottom:60px;width:760px}.page-content a{text-decoration:none}.page-content h1{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}.page-content h2{font-size:24px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}.page-content h3{font-size:20px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}@media (max-width: 768px){.page-content{width:360px}}@media (min-width: 768px){.page-content{width:760px}}@media (min-width: 1476px){.page-content{width:1160px}}.mdl-mini-footer{padding-left:40px} + +/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html new file mode 100644 index 0000000000..c3efc96b46 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html @@ -0,0 +1,196 @@ + + + + + + + + + + + Protocol Buffers + + + + + + + + +
      +
      +
      + Protocol Buffers +
      +
      + + +
      +
      +

      Protocol Buffers

      + + +
      + +

      ts_proto_library

      + +
      ts_proto_library(name, deps, output_name)
      + +

      Wraps https://github.com/dcodeIO/protobuf.js for use in Bazel.

      +

      ts_proto_library has identical outputs to ts_library, so it can be used anywhere +a ts_library can appear, such as in the deps[] of another ts_library.

      +
      load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_proto_library")
      +
      +ts_proto_library(
      +    name = "car_proto",
      +    srcs = ["car.proto"],
      +)
      +
      +ts_library(
      +    name = "test_lib",
      +    testonly = True,
      +    srcs = ["car.spec.ts"],
      +    deps = [":car_proto"],
      +)
      +
      +

      The JavaScript produced by protobuf.js has a runtime dependency on a support library. +Under devmode (e.g. ts_devserver, ts_web_test) you'll need to include these scripts +in the bootstrap phase (before Require.js loads). You can use the label +@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts to reference these scripts.

      +

      After Require.js loads, we need to provide a name for the protobufjs global symbol +so that it can be require'd. Put this code somewhere in your app: +define("protobufjs/minimal", () => protobuf);

      +

      To complete the example above, you could write a ts_web_test:

      +
      load("@build_bazel_rules_typescript//:defs.bzl", "ts_web_test")
      +
      +ts_web_test(
      +    name = "test",
      +    deps = ["test_lib"],
      +    bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"],
      +    srcs = ["require.config.js"],
      +)
      +
      +

      where require.config.js contains the define statement above.

      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + +
      name +

      Name; Required

      +

      A unique name for this rule.

      +
      deps +

      List of labels; Optional; Default is []

      +

      proto_library targets

      +
      output_name +

      String; Optional; Default is ''

      +

      Name of the resulting module, which you will import from. + If not specified, the name will match the target's name.

      +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html new file mode 100644 index 0000000000..2a210e20fe --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html @@ -0,0 +1,165 @@ + + + + + + + + + + + tsconfig.json files using extends + + + + + + + + +
      +
      +
      + tsconfig.json files using extends +
      +
      + + +
      +
      +

      tsconfig.json files using extends

      + + +
      + +

      ts_config

      + +
      ts_config(name, deps, src)
      + +

      Allows a tsconfig.json file to extend another file.

      +

      Normally, you just give a single tsconfig.json file as the tsconfig attribute +of a ts_library rule. However, if your tsconfig.json uses the extends +feature from TypeScript, then the Bazel implementation needs to know about that +extended configuration file as well, to pass them both to the TypeScript compiler.

      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + +
      name +

      Name; Required

      +

      A unique name for this rule.

      +
      deps +

      List of labels; Required

      +

      Additional tsconfig.json files referenced via extends

      +
      src +

      Label; Required

      +

      The tsconfig.json file passed to the TypeScript compiler

      +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html new file mode 100644 index 0000000000..cba7df5171 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html @@ -0,0 +1,132 @@ + + + + + + + + + + + Install toolchain dependencies + + + + + + + + +
      +
      +
      + Install toolchain dependencies +
      +
      + + +
      +
      +

      Install toolchain dependencies

      + + +
      + +

      ts_setup_workspace

      + +
      ts_setup_workspace()
      + +

      This repository rule should be called from your WORKSPACE file.

      +

      It creates some additional Bazel external repositories that are used internally +by the TypeScript rules.

      + + + + +
      + + +
      +
      + + From 59282ae552149494101167e39ce7d204be008f26 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Mon, 7 May 2018 15:11:08 -0700 Subject: [PATCH 0229/1134] Fix outdated documentation on `ts_proto_library`. PiperOrigin-RevId: 195729526 --- .../rules_typescript/docs/api/build_defs.html | 264 --------------- .../docs/api/devserver/ts_devserver.html | 234 ------------- .../rules_typescript/docs/api/index.html | 320 ------------------ .../docs/api/karma/ts_web_test.html | 232 ------------- .../rules_typescript/docs/api/main.css | 3 - .../docs/api/protobufjs/ts_proto_library.html | 196 ----------- .../rules_typescript/docs/api/ts_config.html | 165 --------- .../docs/api/ts_repositories.html | 132 -------- .../internal/protobufjs/ts_proto_library.bzl | 23 +- 9 files changed, 14 insertions(+), 1555 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html delete mode 100755 third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html deleted file mode 100644 index 48879979b0..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - - - - - - - - TypeScript compilation - - - - - - - - -
      -
      -
      - TypeScript compilation -
      -
      - - -
      -
      -

      TypeScript compilation

      - - -
      - -

      tsc_wrapped_tsconfig

      - -
      tsc_wrapped_tsconfig(ctx, files, srcs, devmode_manifest, jsx_factory)
      - -

      Produce a tsconfig.json that sets options required under Bazel.

      - - -

      Attributes

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      ctx -

      Unknown; Required

      - -
      files -

      Unknown; Required

      - -
      srcs -

      Unknown; Required

      - -
      devmode_manifest -

      Unknown; Optional

      - -
      jsx_factory -

      Unknown; Optional

      - -
      -
      - -

      ts_library

      - -
      ts_library(name, srcs, compiler, internal_testing_type_check_dependencies, node_modules, supports_workers, tsconfig, tsickle_typed)
      - -

      ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

      -

      It produces declarations files (.d.ts) which are used for compiling downstream -TypeScript targets and JavaScript for the browser and Closure compiler.

      - - -

      Attributes

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      name -

      Name; Required

      -

      A unique name for this rule.

      -
      srcs -

      List of labels; Required

      -

      The TypeScript source files to compile.

      -
      compiler -

      Label; Optional; Default is //internal:tsc_wrapped_bin

      -

      Intended for internal use only. - Sets a different TypeScript compiler binary to use for this library. - For example, we use the vanilla TypeScript tsc.js for bootstrapping, - and Angular compilations can replace this with ngc.

      -
      internal_testing_type_check_dependencies -

      Boolean; Optional; Default is False

      -

      Testing only, whether to type check inputs that aren't srcs.

      -
      node_modules -

      Label; Optional; Default is @//:node_modules

      - -
      supports_workers -

      Boolean; Optional; Default is True

      -

      Intended for internal use only. - Allows you to disable the Bazel Worker strategy for this library. - Typically used together with the "compiler" setting when using a - non-worker aware compiler binary.

      -
      tsconfig -

      Label; Optional

      -

      A tsconfig.json file containing settings for TypeScript compilation. - Note that some properties in the tsconfig are governed by Bazel and will be - overridden, such as target and module.

      -
      tsickle_typed -

      Boolean; Optional; Default is True

      - -
      - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html deleted file mode 100644 index e46a028d8e..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html +++ /dev/null @@ -1,234 +0,0 @@ - - - - - - - - - - - Simple development server - - - - - - - - -
      -
      -
      - Simple development server -
      -
      - - -
      -
      -

      Simple development server

      - - -
      - -

      ts_devserver_macro

      - -
      ts_devserver_macro(tags)
      - -

      ibazel wrapper for ts_devserver

      -

      This macro re-exposes the ts_devserver rule with some extra tags so that -it behaves correctly under ibazel.

      -

      This is re-exported in //:defs.bzl as ts_devserver so if you load the rule -from there, you actually get this macro.

      - - -

      Attributes

      - - - - - - - - - - - - -
      tags -

      List of strings; Optional

      -

      standard Bazel tags, this macro adds a couple for ibazel -**kwargs: passed through to ts_devserver

      -
      -
      - -

      ts_devserver

      - -
      ts_devserver(name, deps, data, bootstrap, entry_module, scripts, serving_path, static_files)
      - -

      ts_devserver is a simple development server intended for a quick "getting started" experience.

      -

      Additional documentation at https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel

      - - -

      Attributes

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      name -

      Name; Required

      -

      A unique name for this rule.

      -
      deps -

      List of labels; Optional; Default is []

      -

      Targets that produce JavaScript, such as ts_library

      -
      data -

      List of labels; Optional; Default is []

      -

      Dependencies that can be require'd while the server is running

      -
      bootstrap -

      List of labels; Optional; Default is []

      -

      Scripts to include in the JS bundle before the module loader (require.js)

      -
      entry_module -

      String; Optional; Default is ''

      -

      The entrymodule should be the AMD module name of the entry module such as `"_main/src/index"ts_devserver concats the following snippet after the bundle to load the application:require(["entry_module"]);`

      -
      scripts -

      List of labels; Optional; Default is []

      -

      User scripts to include in the JS bundle before the application sources

      -
      serving_path -

      String; Optional; Default is ''

      -

      The path you can request from the client HTML which serves the JavaScript bundle. - If you don't specify one, the JavaScript can be loaded at /_/ts_scripts.js

      -
      static_files -

      List of labels; Optional; Default is []

      -

      Arbitrary files which to be served, such as index.html. - They are served relative to the package where this rule is declared.

      -
      - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html deleted file mode 100644 index c7d4f7e3a0..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - - - - - - Overview - - - - - - - - -
      -
      -
      - Overview -
      -
      - - -
      -
      -

      Overview

      - - - - -

      TypeScript compilation

      - -

      Rules

      - - - - - - - - - - - -
      - - ts_library - - -

      ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

      - -
      -

      Macros

      - - - - - - - - - - - -
      - - tsc_wrapped_tsconfig - - -

      Produce a tsconfig.json that sets options required under Bazel.

      - -
      -

      Install toolchain dependencies

      - -

      Macros

      - - - - - - - - - - - -
      - - ts_setup_workspace - - -

      This repository rule should be called from your WORKSPACE file.

      - -
      -

      tsconfig.json files using extends

      - -

      Rules

      - - - - - - - - - - - -
      - - ts_config - - -

      Allows a tsconfig.json file to extend another file.

      - -
      -

      Simple development server

      - -

      Rules

      - - - - - - - - - - - -
      - - ts_devserver - - -

      ts_devserver is a simple development server intended for a quick "getting started" experience.

      - -
      -

      Macros

      - - - - - - - - - - - -
      - - ts_devserver_macro - - -

      ibazel wrapper for ts_devserver

      - -
      -

      Unit testing in Chrome

      - -

      Rules

      - - - - - - - - - - - -
      - - ts_web_test - - -

      Runs unit tests in a browser.

      - -
      -

      Macros

      - - - - - - - - - - - -
      - - ts_web_test_macro - - -

      ibazel wrapper for ts_web_test

      - -
      -

      Protocol Buffers

      - -

      Rules

      - - - - - - - - - - - -
      - - ts_proto_library - - -

      Wraps https://github.com/dcodeIO/protobuf.js for use in Bazel.

      - -
      - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html deleted file mode 100644 index 0a9da03439..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - - - - - Unit testing in Chrome - - - - - - - - -
      -
      -
      - Unit testing in Chrome -
      -
      - - -
      -
      -

      Unit testing in Chrome

      - - -
      - -

      ts_web_test_macro

      - -
      ts_web_test_macro(tags, data)
      - -

      ibazel wrapper for ts_web_test

      -

      This macro re-exposes the ts_web_test rule with some extra tags so that -it behaves correctly under ibazel.

      -

      This is re-exported in //:defs.bzl as ts_web_test so if you load the rule -from there, you actually get this macro.

      - - -

      Attributes

      - - - - - - - - - - - - - - - - -
      tags -

      List of strings; Optional

      -

      standard Bazel tags, this macro adds a couple for ibazel

      -
      data -

      List of strings; Optional

      -

      runtime dependencies -**kwargs: passed through to ts_web_test

      -
      -
      - -

      ts_web_test

      - -
      ts_web_test(name, deps, data, srcs, bootstrap)
      - -

      Runs unit tests in a browser.

      -

      When executed under bazel test, this uses a headless Chrome browser for speed. -This is also because bazel test allows multiple targets to be tested together, -and we don't want to open a Chrome window on your machine for each one. Also, -under bazel test the test will execute and immediately terminate.

      -

      Running under ibazel test gives you a "watch mode" for your tests. The rule is -optimized for this case - the test runner server will stay running and just -re-serve the up-to-date JavaScript source bundle.

      -

      To debug a single test target, run it with bazel run instead. This will open a -browser window on your computer. Also you can use any other browser by opening -the URL printed when the test starts up. The test will remain running until you -cancel the bazel run command.

      -

      Currently this rule uses Karma as the test runner, but this is an implementation -detail. We might switch to another runner like Jest in the future.

      - - -

      Attributes

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      name -

      Name; Required

      -

      A unique name for this rule.

      -
      deps -

      List of labels; Optional; Default is []

      -

      Other targets which produce JavaScript such as ts_library

      -
      data -

      List of labels; Optional; Default is []

      -

      Runtime dependencies

      -
      srcs -

      List of labels; Optional; Default is []

      -

      JavaScript source files

      -
      bootstrap -

      List of labels; Optional; Default is []

      -

      JavaScript files to include before the module loader (require.js). - For example, you can include Reflect,js for TypeScript decorator metadata reflection, - or UMD bundles for third-party libraries.

      -
      - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css b/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css deleted file mode 100755 index 1b2ce72850..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css +++ /dev/null @@ -1,3 +0,0 @@ -body{background-color:#fafafa}pre,code{font-family:'Liberation Mono', Consolas, Monaco, 'Andale Mono', monospace}pre{background-color:#eee;padding:20px;overflow-x:auto;word-wrap:normal}pre code{overflow-wrap:normal;white-space:pre}code{display:inline-block;font-size:90%;white-space:pre-wrap}.mdl-layout__drawer{background-color:#fff}.mdl-layout__drawer .mdl-layout-title{border-bottom:1px solid #e0e0e0;padding-left:24px}.drawer-nav ul{list-style:none;padding-left:0}.drawer-nav ul li{display:block;padding:0}.drawer-nav ul li ul li a{padding-left:44px;font-weight:400}.drawer-nav ul li a{display:block;flex-shrink:0;padding:15px 0 15px 22px;margin:0;font-weight:600;color:#757575;line-height:1em;text-decoration:none;cursor:pointer}.drawer-nav ul li a:active,.drawer-nav ul li a:hover{background-color:#f0f0f0}.drawer-nav ul li.active a{color:#4caf50;font-weight:500}h1.page-title{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}p.lead{font-size:20px;line-height:32px}table{border-collapse:collapse;border-spacing:0;background-color:#fff;table-layout:auto}table thead th{background-color:#fafafa;border:1px solid #eee;color:#757575;padding:12px 12px 12px 24px;vertical-align:top}table tbody td{border:1px solid #eee;padding:12px 12px 12px 24px;vertical-align:top}table.params-table{width:100%}table.params-table col.col-param{width:25%}table.params-table col.col-description{width:75%}table.overview-table{width:100%}table.overview-table col.col-name{width:25%}table.overview-table col.col-description{width:75%}table.overview-table td p{margin:0}hr{margin-top:40px;margin-bottom:40px}nav.toc{border-left:5px solid #4caf50;padding-left:20px;margin-bottom:48px}nav.toc h1,nav.toc h2{font-size:15px;line-height:16px;padding-bottom:12px;margin-bottom:0;font-weight:400;color:#757575}nav.toc ul{list-style:none;margin-top:0;padding-left:0}nav.toc ul li{font-size:20px;line-height:40px}nav.toc ul li a{color:#4caf50}.page-content{margin-left:auto;margin-right:auto;padding-top:60px;padding-bottom:60px;width:760px}.page-content a{text-decoration:none}.page-content h1{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}.page-content h2{font-size:24px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}.page-content h3{font-size:20px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}@media (max-width: 768px){.page-content{width:360px}}@media (min-width: 768px){.page-content{width:760px}}@media (min-width: 1476px){.page-content{width:1160px}}.mdl-mini-footer{padding-left:40px} - -/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html deleted file mode 100644 index c3efc96b46..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - - - - Protocol Buffers - - - - - - - - -
      -
      -
      - Protocol Buffers -
      -
      - - -
      -
      -

      Protocol Buffers

      - - -
      - -

      ts_proto_library

      - -
      ts_proto_library(name, deps, output_name)
      - -

      Wraps https://github.com/dcodeIO/protobuf.js for use in Bazel.

      -

      ts_proto_library has identical outputs to ts_library, so it can be used anywhere -a ts_library can appear, such as in the deps[] of another ts_library.

      -
      load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_proto_library")
      -
      -ts_proto_library(
      -    name = "car_proto",
      -    srcs = ["car.proto"],
      -)
      -
      -ts_library(
      -    name = "test_lib",
      -    testonly = True,
      -    srcs = ["car.spec.ts"],
      -    deps = [":car_proto"],
      -)
      -
      -

      The JavaScript produced by protobuf.js has a runtime dependency on a support library. -Under devmode (e.g. ts_devserver, ts_web_test) you'll need to include these scripts -in the bootstrap phase (before Require.js loads). You can use the label -@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts to reference these scripts.

      -

      After Require.js loads, we need to provide a name for the protobufjs global symbol -so that it can be require'd. Put this code somewhere in your app: -define("protobufjs/minimal", () => protobuf);

      -

      To complete the example above, you could write a ts_web_test:

      -
      load("@build_bazel_rules_typescript//:defs.bzl", "ts_web_test")
      -
      -ts_web_test(
      -    name = "test",
      -    deps = ["test_lib"],
      -    bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"],
      -    srcs = ["require.config.js"],
      -)
      -
      -

      where require.config.js contains the define statement above.

      - - -

      Attributes

      - - - - - - - - - - - - - - - - - - - - -
      name -

      Name; Required

      -

      A unique name for this rule.

      -
      deps -

      List of labels; Optional; Default is []

      -

      proto_library targets

      -
      output_name -

      String; Optional; Default is ''

      -

      Name of the resulting module, which you will import from. - If not specified, the name will match the target's name.

      -
      - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html deleted file mode 100644 index 2a210e20fe..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - - - - tsconfig.json files using extends - - - - - - - - -
      -
      -
      - tsconfig.json files using extends -
      -
      - - -
      -
      -

      tsconfig.json files using extends

      - - -
      - -

      ts_config

      - -
      ts_config(name, deps, src)
      - -

      Allows a tsconfig.json file to extend another file.

      -

      Normally, you just give a single tsconfig.json file as the tsconfig attribute -of a ts_library rule. However, if your tsconfig.json uses the extends -feature from TypeScript, then the Bazel implementation needs to know about that -extended configuration file as well, to pass them both to the TypeScript compiler.

      - - -

      Attributes

      - - - - - - - - - - - - - - - - - - - - -
      name -

      Name; Required

      -

      A unique name for this rule.

      -
      deps -

      List of labels; Required

      -

      Additional tsconfig.json files referenced via extends

      -
      src -

      Label; Required

      -

      The tsconfig.json file passed to the TypeScript compiler

      -
      - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html deleted file mode 100644 index cba7df5171..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - Install toolchain dependencies - - - - - - - - -
      -
      -
      - Install toolchain dependencies -
      -
      - - -
      -
      -

      Install toolchain dependencies

      - - -
      - -

      ts_setup_workspace

      - -
      ts_setup_workspace()
      - -

      This repository rule should be called from your WORKSPACE file.

      -

      It creates some additional Bazel external repositories that are used internally -by the TypeScript rules.

      - - - - -
      - - -
      -
      - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl index 9482c67a63..5c185e07ae 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl @@ -127,27 +127,35 @@ Example: ``` load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_proto_library") -ts_proto_library( +proto_library( name = "car_proto", srcs = ["car.proto"], ) +ts_proto_library( + name = "car", + deps = [":car_proto"], +) + ts_library( name = "test_lib", testonly = True, srcs = ["car.spec.ts"], - deps = [":car_proto"], + deps = [":car"], ) ``` +Note in this example we named the `ts_proto_library` rule `car` so that the +result will be `car.d.ts`. This means our TypeScript code can just +`import {symbols} from './car'`. Use the `output_name` attribute if you want to +name the rule differently from the output file. + The JavaScript produced by protobuf.js has a runtime dependency on a support library. Under devmode (e.g. `ts_devserver`, `ts_web_test`) you'll need to include these scripts in the `bootstrap` phase (before Require.js loads). You can use the label -`@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts` to reference these scripts. +`@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts` to reference these scripts +in the `bootstrap` attribute of `ts_web_test` or `ts_devserver`. -After Require.js loads, we need to provide a name for the `protobufjs` global symbol -so that it can be require'd. Put this code somewhere in your app: -`define("protobufjs/minimal", () => protobuf);` To complete the example above, you could write a `ts_web_test`: @@ -158,9 +166,6 @@ ts_web_test( name = "test", deps = ["test_lib"], bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"], - srcs = ["require.config.js"], ) ``` - -where require.config.js contains the `define` statement above. """ From b3e7b40e834ce2f5e191a1f34bcdeab222115e90 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 7 May 2018 15:13:19 -0700 Subject: [PATCH 0230/1134] Add back API docs --- .../rules_typescript/docs/api/build_defs.html | 264 +++++++++++++++ .../docs/api/devserver/ts_devserver.html | 234 +++++++++++++ .../rules_typescript/docs/api/index.html | 320 ++++++++++++++++++ .../docs/api/karma/ts_web_test.html | 232 +++++++++++++ .../rules_typescript/docs/api/main.css | 3 + .../docs/api/protobufjs/ts_proto_library.html | 201 +++++++++++ .../rules_typescript/docs/api/ts_config.html | 165 +++++++++ .../docs/api/ts_repositories.html | 132 ++++++++ 8 files changed, 1551 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html create mode 100755 third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html new file mode 100644 index 0000000000..48879979b0 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html @@ -0,0 +1,264 @@ + + + + + + + + + + + TypeScript compilation + + + + + + + + +
      +
      +
      + TypeScript compilation +
      +
      + + +
      +
      +

      TypeScript compilation

      + + +
      + +

      tsc_wrapped_tsconfig

      + +
      tsc_wrapped_tsconfig(ctx, files, srcs, devmode_manifest, jsx_factory)
      + +

      Produce a tsconfig.json that sets options required under Bazel.

      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ctx +

      Unknown; Required

      + +
      files +

      Unknown; Required

      + +
      srcs +

      Unknown; Required

      + +
      devmode_manifest +

      Unknown; Optional

      + +
      jsx_factory +

      Unknown; Optional

      + +
      +
      + +

      ts_library

      + +
      ts_library(name, srcs, compiler, internal_testing_type_check_dependencies, node_modules, supports_workers, tsconfig, tsickle_typed)
      + +

      ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

      +

      It produces declarations files (.d.ts) which are used for compiling downstream +TypeScript targets and JavaScript for the browser and Closure compiler.

      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      name +

      Name; Required

      +

      A unique name for this rule.

      +
      srcs +

      List of labels; Required

      +

      The TypeScript source files to compile.

      +
      compiler +

      Label; Optional; Default is //internal:tsc_wrapped_bin

      +

      Intended for internal use only. + Sets a different TypeScript compiler binary to use for this library. + For example, we use the vanilla TypeScript tsc.js for bootstrapping, + and Angular compilations can replace this with ngc.

      +
      internal_testing_type_check_dependencies +

      Boolean; Optional; Default is False

      +

      Testing only, whether to type check inputs that aren't srcs.

      +
      node_modules +

      Label; Optional; Default is @//:node_modules

      + +
      supports_workers +

      Boolean; Optional; Default is True

      +

      Intended for internal use only. + Allows you to disable the Bazel Worker strategy for this library. + Typically used together with the "compiler" setting when using a + non-worker aware compiler binary.

      +
      tsconfig +

      Label; Optional

      +

      A tsconfig.json file containing settings for TypeScript compilation. + Note that some properties in the tsconfig are governed by Bazel and will be + overridden, such as target and module.

      +
      tsickle_typed +

      Boolean; Optional; Default is True

      + +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html new file mode 100644 index 0000000000..e46a028d8e --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html @@ -0,0 +1,234 @@ + + + + + + + + + + + Simple development server + + + + + + + + +
      +
      +
      + Simple development server +
      +
      + + +
      +
      +

      Simple development server

      + + +
      + +

      ts_devserver_macro

      + +
      ts_devserver_macro(tags)
      + +

      ibazel wrapper for ts_devserver

      +

      This macro re-exposes the ts_devserver rule with some extra tags so that +it behaves correctly under ibazel.

      +

      This is re-exported in //:defs.bzl as ts_devserver so if you load the rule +from there, you actually get this macro.

      + + +

      Attributes

      + + + + + + + + + + + + +
      tags +

      List of strings; Optional

      +

      standard Bazel tags, this macro adds a couple for ibazel +**kwargs: passed through to ts_devserver

      +
      +
      + +

      ts_devserver

      + +
      ts_devserver(name, deps, data, bootstrap, entry_module, scripts, serving_path, static_files)
      + +

      ts_devserver is a simple development server intended for a quick "getting started" experience.

      +

      Additional documentation at https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel

      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      name +

      Name; Required

      +

      A unique name for this rule.

      +
      deps +

      List of labels; Optional; Default is []

      +

      Targets that produce JavaScript, such as ts_library

      +
      data +

      List of labels; Optional; Default is []

      +

      Dependencies that can be require'd while the server is running

      +
      bootstrap +

      List of labels; Optional; Default is []

      +

      Scripts to include in the JS bundle before the module loader (require.js)

      +
      entry_module +

      String; Optional; Default is ''

      +

      The entrymodule should be the AMD module name of the entry module such as `"_main/src/index"ts_devserver concats the following snippet after the bundle to load the application:require(["entry_module"]);`

      +
      scripts +

      List of labels; Optional; Default is []

      +

      User scripts to include in the JS bundle before the application sources

      +
      serving_path +

      String; Optional; Default is ''

      +

      The path you can request from the client HTML which serves the JavaScript bundle. + If you don't specify one, the JavaScript can be loaded at /_/ts_scripts.js

      +
      static_files +

      List of labels; Optional; Default is []

      +

      Arbitrary files which to be served, such as index.html. + They are served relative to the package where this rule is declared.

      +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html new file mode 100644 index 0000000000..c7d4f7e3a0 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html @@ -0,0 +1,320 @@ + + + + + + + + + + + Overview + + + + + + + + +
      +
      +
      + Overview +
      +
      + + +
      +
      +

      Overview

      + + + + +

      TypeScript compilation

      + +

      Rules

      + + + + + + + + + + + +
      + + ts_library + + +

      ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

      + +
      +

      Macros

      + + + + + + + + + + + +
      + + tsc_wrapped_tsconfig + + +

      Produce a tsconfig.json that sets options required under Bazel.

      + +
      +

      Install toolchain dependencies

      + +

      Macros

      + + + + + + + + + + + +
      + + ts_setup_workspace + + +

      This repository rule should be called from your WORKSPACE file.

      + +
      +

      tsconfig.json files using extends

      + +

      Rules

      + + + + + + + + + + + +
      + + ts_config + + +

      Allows a tsconfig.json file to extend another file.

      + +
      +

      Simple development server

      + +

      Rules

      + + + + + + + + + + + +
      + + ts_devserver + + +

      ts_devserver is a simple development server intended for a quick "getting started" experience.

      + +
      +

      Macros

      + + + + + + + + + + + +
      + + ts_devserver_macro + + +

      ibazel wrapper for ts_devserver

      + +
      +

      Unit testing in Chrome

      + +

      Rules

      + + + + + + + + + + + +
      + + ts_web_test + + +

      Runs unit tests in a browser.

      + +
      +

      Macros

      + + + + + + + + + + + +
      + + ts_web_test_macro + + +

      ibazel wrapper for ts_web_test

      + +
      +

      Protocol Buffers

      + +

      Rules

      + + + + + + + + + + + +
      + + ts_proto_library + + +

      Wraps https://github.com/dcodeIO/protobuf.js for use in Bazel.

      + +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html new file mode 100644 index 0000000000..0a9da03439 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html @@ -0,0 +1,232 @@ + + + + + + + + + + + Unit testing in Chrome + + + + + + + + +
      +
      +
      + Unit testing in Chrome +
      +
      + + +
      +
      +

      Unit testing in Chrome

      + + +
      + +

      ts_web_test_macro

      + +
      ts_web_test_macro(tags, data)
      + +

      ibazel wrapper for ts_web_test

      +

      This macro re-exposes the ts_web_test rule with some extra tags so that +it behaves correctly under ibazel.

      +

      This is re-exported in //:defs.bzl as ts_web_test so if you load the rule +from there, you actually get this macro.

      + + +

      Attributes

      + + + + + + + + + + + + + + + + +
      tags +

      List of strings; Optional

      +

      standard Bazel tags, this macro adds a couple for ibazel

      +
      data +

      List of strings; Optional

      +

      runtime dependencies +**kwargs: passed through to ts_web_test

      +
      +
      + +

      ts_web_test

      + +
      ts_web_test(name, deps, data, srcs, bootstrap)
      + +

      Runs unit tests in a browser.

      +

      When executed under bazel test, this uses a headless Chrome browser for speed. +This is also because bazel test allows multiple targets to be tested together, +and we don't want to open a Chrome window on your machine for each one. Also, +under bazel test the test will execute and immediately terminate.

      +

      Running under ibazel test gives you a "watch mode" for your tests. The rule is +optimized for this case - the test runner server will stay running and just +re-serve the up-to-date JavaScript source bundle.

      +

      To debug a single test target, run it with bazel run instead. This will open a +browser window on your computer. Also you can use any other browser by opening +the URL printed when the test starts up. The test will remain running until you +cancel the bazel run command.

      +

      Currently this rule uses Karma as the test runner, but this is an implementation +detail. We might switch to another runner like Jest in the future.

      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      name +

      Name; Required

      +

      A unique name for this rule.

      +
      deps +

      List of labels; Optional; Default is []

      +

      Other targets which produce JavaScript such as ts_library

      +
      data +

      List of labels; Optional; Default is []

      +

      Runtime dependencies

      +
      srcs +

      List of labels; Optional; Default is []

      +

      JavaScript source files

      +
      bootstrap +

      List of labels; Optional; Default is []

      +

      JavaScript files to include before the module loader (require.js). + For example, you can include Reflect,js for TypeScript decorator metadata reflection, + or UMD bundles for third-party libraries.

      +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css b/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css new file mode 100755 index 0000000000..1b2ce72850 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css @@ -0,0 +1,3 @@ +body{background-color:#fafafa}pre,code{font-family:'Liberation Mono', Consolas, Monaco, 'Andale Mono', monospace}pre{background-color:#eee;padding:20px;overflow-x:auto;word-wrap:normal}pre code{overflow-wrap:normal;white-space:pre}code{display:inline-block;font-size:90%;white-space:pre-wrap}.mdl-layout__drawer{background-color:#fff}.mdl-layout__drawer .mdl-layout-title{border-bottom:1px solid #e0e0e0;padding-left:24px}.drawer-nav ul{list-style:none;padding-left:0}.drawer-nav ul li{display:block;padding:0}.drawer-nav ul li ul li a{padding-left:44px;font-weight:400}.drawer-nav ul li a{display:block;flex-shrink:0;padding:15px 0 15px 22px;margin:0;font-weight:600;color:#757575;line-height:1em;text-decoration:none;cursor:pointer}.drawer-nav ul li a:active,.drawer-nav ul li a:hover{background-color:#f0f0f0}.drawer-nav ul li.active a{color:#4caf50;font-weight:500}h1.page-title{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}p.lead{font-size:20px;line-height:32px}table{border-collapse:collapse;border-spacing:0;background-color:#fff;table-layout:auto}table thead th{background-color:#fafafa;border:1px solid #eee;color:#757575;padding:12px 12px 12px 24px;vertical-align:top}table tbody td{border:1px solid #eee;padding:12px 12px 12px 24px;vertical-align:top}table.params-table{width:100%}table.params-table col.col-param{width:25%}table.params-table col.col-description{width:75%}table.overview-table{width:100%}table.overview-table col.col-name{width:25%}table.overview-table col.col-description{width:75%}table.overview-table td p{margin:0}hr{margin-top:40px;margin-bottom:40px}nav.toc{border-left:5px solid #4caf50;padding-left:20px;margin-bottom:48px}nav.toc h1,nav.toc h2{font-size:15px;line-height:16px;padding-bottom:12px;margin-bottom:0;font-weight:400;color:#757575}nav.toc ul{list-style:none;margin-top:0;padding-left:0}nav.toc ul li{font-size:20px;line-height:40px}nav.toc ul li a{color:#4caf50}.page-content{margin-left:auto;margin-right:auto;padding-top:60px;padding-bottom:60px;width:760px}.page-content a{text-decoration:none}.page-content h1{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}.page-content h2{font-size:24px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}.page-content h3{font-size:20px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}@media (max-width: 768px){.page-content{width:360px}}@media (min-width: 768px){.page-content{width:760px}}@media (min-width: 1476px){.page-content{width:1160px}}.mdl-mini-footer{padding-left:40px} + +/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html new file mode 100644 index 0000000000..36545793a5 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html @@ -0,0 +1,201 @@ + + + + + + + + + + + Protocol Buffers + + + + + + + + +
      +
      +
      + Protocol Buffers +
      +
      + + +
      +
      +

      Protocol Buffers

      + + +
      + +

      ts_proto_library

      + +
      ts_proto_library(name, deps, output_name)
      + +

      Wraps https://github.com/dcodeIO/protobuf.js for use in Bazel.

      +

      ts_proto_library has identical outputs to ts_library, so it can be used anywhere +a ts_library can appear, such as in the deps[] of another ts_library.

      +
      load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_proto_library")
      +
      +proto_library(
      +    name = "car_proto",
      +    srcs = ["car.proto"],
      +)
      +
      +ts_proto_library(
      +    name = "car",
      +    deps = [":car_proto"],
      +)
      +
      +ts_library(
      +    name = "test_lib",
      +    testonly = True,
      +    srcs = ["car.spec.ts"],
      +    deps = [":car"],
      +)
      +
      +

      Note in this example we named the ts_proto_library rule car so that the +result will be car.d.ts. This means our TypeScript code can just +import {symbols} from './car'. Use the output_name attribute if you want to +name the rule differently from the output file.

      +

      The JavaScript produced by protobuf.js has a runtime dependency on a support library. +Under devmode (e.g. ts_devserver, ts_web_test) you'll need to include these scripts +in the bootstrap phase (before Require.js loads). You can use the label +@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts to reference these scripts +in the bootstrap attribute of ts_web_test or ts_devserver.

      +

      To complete the example above, you could write a ts_web_test:

      +
      load("@build_bazel_rules_typescript//:defs.bzl", "ts_web_test")
      +
      +ts_web_test(
      +    name = "test",
      +    deps = ["test_lib"],
      +    bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"],
      +)
      +
      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + +
      name +

      Name; Required

      +

      A unique name for this rule.

      +
      deps +

      List of labels; Optional; Default is []

      +

      proto_library targets

      +
      output_name +

      String; Optional; Default is ''

      +

      Name of the resulting module, which you will import from. + If not specified, the name will match the target's name.

      +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html new file mode 100644 index 0000000000..2a210e20fe --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html @@ -0,0 +1,165 @@ + + + + + + + + + + + tsconfig.json files using extends + + + + + + + + +
      +
      +
      + tsconfig.json files using extends +
      +
      + + +
      +
      +

      tsconfig.json files using extends

      + + +
      + +

      ts_config

      + +
      ts_config(name, deps, src)
      + +

      Allows a tsconfig.json file to extend another file.

      +

      Normally, you just give a single tsconfig.json file as the tsconfig attribute +of a ts_library rule. However, if your tsconfig.json uses the extends +feature from TypeScript, then the Bazel implementation needs to know about that +extended configuration file as well, to pass them both to the TypeScript compiler.

      + + +

      Attributes

      + + + + + + + + + + + + + + + + + + + + +
      name +

      Name; Required

      +

      A unique name for this rule.

      +
      deps +

      List of labels; Required

      +

      Additional tsconfig.json files referenced via extends

      +
      src +

      Label; Required

      +

      The tsconfig.json file passed to the TypeScript compiler

      +
      + + +
      + + +
      +
      + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html new file mode 100644 index 0000000000..cba7df5171 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html @@ -0,0 +1,132 @@ + + + + + + + + + + + Install toolchain dependencies + + + + + + + + +
      +
      +
      + Install toolchain dependencies +
      +
      + + +
      +
      +

      Install toolchain dependencies

      + + +
      + +

      ts_setup_workspace

      + +
      ts_setup_workspace()
      + +

      This repository rule should be called from your WORKSPACE file.

      +

      It creates some additional Bazel external repositories that are used internally +by the TypeScript rules.

      + + + + +
      + + +
      +
      + + From ee7c4eb373aaff4af53af74db11c7be171ffa9c5 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Mon, 7 May 2018 15:33:18 -0700 Subject: [PATCH 0231/1134] Re-order skydoc so that installation is first. PiperOrigin-RevId: 195733030 --- third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index 6f457614ec..e798d86cf6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -44,8 +44,8 @@ load("@io_bazel_skydoc//skylark:skylark.bzl", "skylark_doc") skylark_doc( name = "docs", srcs = [ - "//internal:build_defs.bzl", "//internal:ts_repositories.bzl", + "//internal:build_defs.bzl", "//internal:ts_config.bzl", "//internal/devserver:ts_devserver.bzl", "//internal/karma:ts_web_test.bzl", From d329d2db4c47bf606247da242a1e4cae59faebd4 Mon Sep 17 00:00:00 2001 From: martinprobst Date: Tue, 8 May 2018 00:37:37 -0700 Subject: [PATCH 0232/1134] Adjust to tsickle converting the ES5 module processor to a proper TypeScript transformer. PiperOrigin-RevId: 195780979 --- .../internal/tsc_wrapped/compiler_host.ts | 22 ++++++++++++++++++- .../internal/tsc_wrapped/manifest.ts | 4 ++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index fa43a74596..ea40d554f7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -105,6 +105,19 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { this.isJsTranspilation = Boolean(bazelOpts.isJsTranspilation); } + /** + * For the given potentially absolute input file path (typically .ts), returns + * the relative output path. For example, for + * /path/to/root/blaze-out/k8-fastbuild/genfiles/my/file.ts, will return + * my/file.js or my/file.closure.js (depending on ES5 mode). + */ + relativeOutputPath(fileName: string) { + let result = this.rootDirsRelative(fileName); + result = result.replace(/(\.d)?\.[jt]sx?$/, ''); + if (!this.bazelOpts.es5Mode) result += '.closure'; + return result + '.js'; + } + /** * Workaround https://github.com/Microsoft/TypeScript/issues/8245 * We use the `rootDirs` property both for module resolution, @@ -152,8 +165,15 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { p => !!filePath.match(new RegExp(p))); } + /** + * fileNameToModuleId gives the module ID for an input source file name. + * @param fileName an input source file name, e.g. + * /root/dir/bazel-out/host/bin/my/file.ts. + * @return the canonical path of a file within blaze, without /genfiles/ or + * /bin/ path parts, excluding a file extension. For example, "my/file". + */ fileNameToModuleId(fileName: string): string { - return this.flattenOutDir(fileName.substring(0, fileName.lastIndexOf('.'))); + return this.relativeOutputPath(fileName.substring(0, fileName.lastIndexOf('.'))); } /** diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts index 2e9a8daba2..4e5b9f6483 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts @@ -42,13 +42,13 @@ function topologicalSort( */ export function constructManifest( modulesManifest: tsickle.ModulesManifest, - host: {flattenOutDir: (f: string) => string}): string { + host: {relativeOutputPath: (f: string) => string}): string { const result: tsickle.FileMap = {}; for (const file of modulesManifest.fileNames) { topologicalSort(result, file, modulesManifest, {}); } // NB: The object literal maintains insertion order. - return Object.keys(result).map(fn => host.flattenOutDir(fn)).join('\n') + + return Object.keys(result).map(fn => host.relativeOutputPath(fn)).join('\n') + '\n'; } From 5a6d8d6d99f64d7d1c361e3f9d2d79c7560bd096 Mon Sep 17 00:00:00 2001 From: martinprobst Date: Tue, 8 May 2018 01:54:41 -0700 Subject: [PATCH 0233/1134] Adjust to tsickle converting the ES5 module processor to a proper TypeScript transformer. PiperOrigin-RevId: 195789014 --- .../internal/tsc_wrapped/compiler_host.ts | 22 +------------------ .../internal/tsc_wrapped/manifest.ts | 4 ++-- 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index ea40d554f7..fa43a74596 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -105,19 +105,6 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { this.isJsTranspilation = Boolean(bazelOpts.isJsTranspilation); } - /** - * For the given potentially absolute input file path (typically .ts), returns - * the relative output path. For example, for - * /path/to/root/blaze-out/k8-fastbuild/genfiles/my/file.ts, will return - * my/file.js or my/file.closure.js (depending on ES5 mode). - */ - relativeOutputPath(fileName: string) { - let result = this.rootDirsRelative(fileName); - result = result.replace(/(\.d)?\.[jt]sx?$/, ''); - if (!this.bazelOpts.es5Mode) result += '.closure'; - return result + '.js'; - } - /** * Workaround https://github.com/Microsoft/TypeScript/issues/8245 * We use the `rootDirs` property both for module resolution, @@ -165,15 +152,8 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { p => !!filePath.match(new RegExp(p))); } - /** - * fileNameToModuleId gives the module ID for an input source file name. - * @param fileName an input source file name, e.g. - * /root/dir/bazel-out/host/bin/my/file.ts. - * @return the canonical path of a file within blaze, without /genfiles/ or - * /bin/ path parts, excluding a file extension. For example, "my/file". - */ fileNameToModuleId(fileName: string): string { - return this.relativeOutputPath(fileName.substring(0, fileName.lastIndexOf('.'))); + return this.flattenOutDir(fileName.substring(0, fileName.lastIndexOf('.'))); } /** diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts index 4e5b9f6483..2e9a8daba2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts @@ -42,13 +42,13 @@ function topologicalSort( */ export function constructManifest( modulesManifest: tsickle.ModulesManifest, - host: {relativeOutputPath: (f: string) => string}): string { + host: {flattenOutDir: (f: string) => string}): string { const result: tsickle.FileMap = {}; for (const file of modulesManifest.fileNames) { topologicalSort(result, file, modulesManifest, {}); } // NB: The object literal maintains insertion order. - return Object.keys(result).map(fn => host.relativeOutputPath(fn)).join('\n') + + return Object.keys(result).map(fn => host.flattenOutDir(fn)).join('\n') + '\n'; } From 0db4473880bca686498a859190d9eb4c19be2f1c Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Tue, 8 May 2018 06:14:07 -0700 Subject: [PATCH 0234/1134] Internal change. PiperOrigin-RevId: 195808492 --- .../internal/tsc_wrapped/compiler_host.ts | 19 +++++++++++++++++-- .../internal/tsc_wrapped/tsconfig.ts | 10 +++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index fa43a74596..0de7918d59 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -33,6 +33,21 @@ export function narrowTsOptions(options: ts.CompilerOptions): BazelTsOptions { return options as BazelTsOptions; } +function validateBazelOptions(bazelOpts: BazelOptions) { + if (!bazelOpts.isJsTranspilation) return; + + if (bazelOpts.compilationTargetSrc && + bazelOpts.compilationTargetSrc.length > 1) { + throw new Error("In JS transpilation mode, only one file can appear in " + + "bazelOptions.compilationTargetSrc."); + } + + if (!bazelOpts.transpiledJsOutputFileName) { + throw new Error("In JS transpilation mode, transpiledJsOutputFileName " + + "must be specified in tsconfig."); + } +} + const TS_EXT = /(\.d)?\.tsx?$/; /** @@ -94,6 +109,7 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { this.directoryExists = delegate.directoryExists.bind(delegate); } + validateBazelOptions(bazelOpts); this.googmodule = bazelOpts.googmodule; this.es5Mode = bazelOpts.es5Mode; this.prelude = bazelOpts.prelude; @@ -344,8 +360,7 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { fileName = this.flattenOutDir(fileName); if (this.bazelOpts.isJsTranspilation) { - // Write transpiled JS to *.dev_es5.js. - fileName = fileName.replace(/\.js$/, '.dev_es5.js'); + fileName = this.bazelOpts.transpiledJsOutputFileName!; } else if (!this.bazelOpts.es5Mode) { // Write ES6 transpiled files to *.closure.js. if (this.bazelOpts.locale) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index c861c06d68..10c32151b3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -139,9 +139,17 @@ export interface BazelOptions { moduleRoot?: string; /** - * If true, indicates that this job is transpiling JS sources. + * If true, indicates that this job is transpiling JS sources. If true, only + * one file can appear in compilationTargetSrc, and transpiledJsOutputFileName + * must be set. */ isJsTranspilation?: boolean; + + /** + * The path where the file containing the JS transpiled output should + * be written. Ignored if isJsTranspilation is false. + */ + transpiledJsOutputFileName?: string; } export interface ParsedTsConfig { From a8985e3663caabfa428cfd3eda9e3b3f457ff68f Mon Sep 17 00:00:00 2001 From: alexeagle Date: Tue, 8 May 2018 15:21:40 -0700 Subject: [PATCH 0235/1134] Include a link to the API docs in the README PiperOrigin-RevId: 195885620 --- third_party/github.com/bazelbuild/rules_typescript/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 53c0d0ec75..47221276ea 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -8,6 +8,11 @@ Circle CI | Bazel CI The TypeScript rules integrate the TypeScript compiler with Bazel. +## API Docs + +Generated documentation for using each rule is at: +http://tsetse.info/api/ + ## Installation First, install a current Bazel distribution. From a8f16e9a75319c3efaf9d6e4381602d5ca494695 Mon Sep 17 00:00:00 2001 From: martinprobst Date: Wed, 9 May 2018 06:59:41 -0700 Subject: [PATCH 0236/1134] Sort module mappings first in generated tsconfigs. TypeScript's language service will use path mappings when adding auto-imports. However it uses them in order of appearance in `tsconfig.json`. If a file can then be reached either via a named mapping, or via the default "*" mappings, we should generate the default mappings first so that by default automatically added imports use the abbreviated names. PiperOrigin-RevId: 195963652 --- .../internal/common/tsconfig.bzl | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index a0b44769bc..a528c09394 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -93,14 +93,25 @@ def create_tsconfig(ctx, files, srcs, } module_mappings = get_module_mappings(ctx.label, ctx.attr, srcs = srcs) + # To determine the path for auto-imports, TypeScript's language service + # considers paths in the order they appear in tsconfig.json. + # We want explicit module mappings ("@angular/core") to take precedence over + # the general "*" mapping (which would create "third_party/javascript/..."), + # so we create a new hash that contains the module_mappings and insert the + # default lookup locations at the end. + mapped_module_roots = {} for name, path in module_mappings.items(): # Each module name maps to the immediate path, to resolve "index(.d).ts", # or module mappings that directly point to files (like index.d.ts). - module_roots[name] = ["%s%s" % (p, path.replace(".d.ts", "")) for p in module_path_prefixes] + mapped_module_roots[name] = ["%s%s" % (p, path.replace(".d.ts", "")) + for p in module_path_prefixes] if not path.endswith(".d.ts"): # If not just mapping to a single .d.ts file, include a path glob that # maps the entire module root. - module_roots["{}/*".format(name)] = ["%s%s/*" % (p, path) for p in module_path_prefixes] + mapped_module_roots["{}/*".format(name)] = ["%s%s/*" % (p, path) + for p in module_path_prefixes] + for name, path in module_roots.items(): + mapped_module_roots[name] = path # Options for running the TypeScript compiler under Bazel. # See javascript/typescript/compiler/tsc_wrapped.ts:BazelOptions. @@ -183,7 +194,7 @@ def create_tsconfig(ctx, files, srcs, "baseUrl": workspace_path, # "short name" mappings for npm packages, such as "@angular/core" - "paths": module_roots, + "paths": mapped_module_roots, # Inline const enums. "preserveConstEnums": False, From 9eec8ff5bda06219dee3de6b181a2c06f90934fe Mon Sep 17 00:00:00 2001 From: martinprobst Date: Wed, 9 May 2018 07:59:58 -0700 Subject: [PATCH 0237/1134] Adjust to tsickle converting the ES5 module processor to a proper TypeScript transformer. PiperOrigin-RevId: 195971117 --- .../internal/tsc_wrapped/compiler_host.ts | 23 ++++++++++++++++++- .../internal/tsc_wrapped/manifest.ts | 4 ++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index 0de7918d59..580985f182 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -121,6 +121,19 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { this.isJsTranspilation = Boolean(bazelOpts.isJsTranspilation); } + /** + * For the given potentially absolute input file path (typically .ts), returns + * the relative output path. For example, for + * /path/to/root/blaze-out/k8-fastbuild/genfiles/my/file.ts, will return + * my/file.js or my/file.closure.js (depending on ES5 mode). + */ + relativeOutputPath(fileName: string) { + let result = this.rootDirsRelative(fileName); + result = result.replace(/(\.d)?\.[jt]sx?$/, ''); + if (!this.bazelOpts.es5Mode) result += '.closure'; + return result + '.js'; + } + /** * Workaround https://github.com/Microsoft/TypeScript/issues/8245 * We use the `rootDirs` property both for module resolution, @@ -168,8 +181,16 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { p => !!filePath.match(new RegExp(p))); } + /** + * fileNameToModuleId gives the module ID for an input source file name. + * @param fileName an input source file name, e.g. + * /root/dir/bazel-out/host/bin/my/file.ts. + * @return the canonical path of a file within blaze, without /genfiles/ or + * /bin/ path parts, excluding a file extension. For example, "my/file". + */ fileNameToModuleId(fileName: string): string { - return this.flattenOutDir(fileName.substring(0, fileName.lastIndexOf('.'))); + return this.relativeOutputPath( + fileName.substring(0, fileName.lastIndexOf('.'))); } /** diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts index 2e9a8daba2..4e5b9f6483 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts @@ -42,13 +42,13 @@ function topologicalSort( */ export function constructManifest( modulesManifest: tsickle.ModulesManifest, - host: {flattenOutDir: (f: string) => string}): string { + host: {relativeOutputPath: (f: string) => string}): string { const result: tsickle.FileMap = {}; for (const file of modulesManifest.fileNames) { topologicalSort(result, file, modulesManifest, {}); } // NB: The object literal maintains insertion order. - return Object.keys(result).map(fn => host.flattenOutDir(fn)).join('\n') + + return Object.keys(result).map(fn => host.relativeOutputPath(fn)).join('\n') + '\n'; } From 3881e0c84aa395cd37634e0c1e498649d8f050d6 Mon Sep 17 00:00:00 2001 From: radokirov Date: Wed, 9 May 2018 10:03:11 -0700 Subject: [PATCH 0238/1134] Fix tsetse compilation errors with strictFunctionTypes on. PiperOrigin-RevId: 195986716 --- .../bazelbuild/rules_typescript/internal/tsetse/checker.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts index 6ab8db927d..402580f4ee 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts @@ -53,6 +53,12 @@ export class Checker { on(nodeKind: ts.SyntaxKind.CallExpression, handlerFunction: (checker: Checker, node: ts.CallExpression) => void, code: number): void; + on(nodeKind: ts.SyntaxKind.PropertyDeclaration, + handlerFunction: (checker: Checker, node: ts.PropertyDeclaration) => void, + code: number): void; + on(nodeKind: ts.SyntaxKind.ElementAccessExpression, + handlerFunction: (checker: Checker, node: ts.ElementAccessExpression) => void, + code: number): void; on(nodeKind: ts.SyntaxKind, handlerFunction: (checker: Checker, node: ts.Node) => void, code: number): void; From 875978adf5f83af0d4e612eb17905a713d7cd0a1 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Thu, 10 May 2018 11:14:08 -0700 Subject: [PATCH 0239/1134] Name AMD modules foo rather than foo/index. Fixes https://github.com/angular/angular/issues/23810 PiperOrigin-RevId: 196142916 --- .../rules_typescript/internal/tsc_wrapped/compiler_host.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index 580985f182..8494077e92 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -321,6 +321,13 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { relativeFileName) { return this.bazelOpts.moduleName; } + // Support the common case of commonjs convention that index is the + // default module in a directory. + // This makes our module naming scheme more conventional and lets users + // refer to modules with the natural name they're used to. + if (relativeFileName === 'index') { + return this.bazelOpts.moduleName; + } return path.posix.join(this.bazelOpts.moduleName, relativeFileName); } } From 7aae2ea5f66e0db66a6016b2d3ddbb189753d9ef Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Thu, 10 May 2018 11:25:48 -0700 Subject: [PATCH 0240/1134] Adds ts_web_test_suite using rules_webtesting web_test_suite & browsers PiperOrigin-RevId: 196145021 --- .../rules_typescript/.bazelci/presubmit.yml | 9 +- .../.ci/rules_typescript.json | 2 +- .../bazelbuild/rules_typescript/BUILD.bazel | 1 + .../bazelbuild/rules_typescript/WORKSPACE | 61 +++++++--- .../bazelbuild/rules_typescript/defs.bzl | 4 +- .../examples/protocol_buffers/BUILD.bazel | 8 +- .../examples/testing/BUILD.bazel | 8 +- .../internal/karma/BUILD.bazel | 1 + .../internal/karma/karma.conf.js | 30 +++-- .../internal/karma/package.json | 4 +- .../internal/karma/ts_web_test.bzl | 13 +- .../internal/karma/ts_web_test_suite.bzl | 106 ++++++++++++++++ .../rules_typescript/internal/karma/yarn.lock | 113 ++---------------- .../internal/protobufjs/ts_proto_library.bzl | 15 ++- 14 files changed, 221 insertions(+), 154 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test_suite.bzl diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml index 37c4f91a12..868f4d8476 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml @@ -6,7 +6,8 @@ platforms: build_targets: - "..." test_flags: - - "--test_tag_filters=-browser:Chrome" + # TODO(gregmagolan): shared libs needed by chrome & firefox not available on ubuntu1404 + - "--test_tag_filters=-browser:chromium-local,-browser:firefox-local" test_targets: - "..." ubuntu1604: @@ -15,7 +16,8 @@ platforms: build_targets: - "..." test_flags: - - "--test_tag_filters=-browser:Chrome" + # TODO(gregmagolan): shared libs needed by chrome & firefox not available on ubuntu1604 + - "--test_tag_filters=-browser:chromium-local,-browser:firefox-local" test_targets: - "..." macos: @@ -23,6 +25,9 @@ platforms: - "@yarn//:yarn" build_targets: - "..." + test_flags: + # TODO(gregmagolan): firefox unknown breakage on macos target here; does work locally on mac + - "--test_tag_filters=-browser:firefox-local" test_targets: - "..." windows: diff --git a/third_party/github.com/bazelbuild/rules_typescript/.ci/rules_typescript.json b/third_party/github.com/bazelbuild/rules_typescript/.ci/rules_typescript.json index 31681ba4f3..7c671f73fb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.ci/rules_typescript.json +++ b/third_party/github.com/bazelbuild/rules_typescript/.ci/rules_typescript.json @@ -6,7 +6,7 @@ ], "parameters": { "configure": ["$BAZEL run @yarn//:yarn"], - "test_tag_filters": ["-browser:Chrome"] + "test_tag_filters": ["-browser:chromium-local"] } }, { diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index e798d86cf6..9ea6af71cd 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -49,6 +49,7 @@ skylark_doc( "//internal:ts_config.bzl", "//internal/devserver:ts_devserver.bzl", "//internal/karma:ts_web_test.bzl", + "//internal/karma:ts_web_test_suite.bzl", "//internal/protobufjs:ts_proto_library.bzl", ], format = "html", diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 70de43e5a2..cc8fc101ca 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -16,9 +16,9 @@ workspace(name = "build_bazel_rules_typescript") http_archive( name = "build_bazel_rules_nodejs", - url = "https://github.com/bazelbuild/rules_nodejs/archive/092404e3b47e1144ecfc2937d3729b717b1052bf.zip", - strip_prefix = "rules_nodejs-092404e3b47e1144ecfc2937d3729b717b1052bf", - sha256 = "5e3dd3f76a043687939a14ce6aee3049f8bd97d2cd885ef2105ac344d05213a3", + url = "https://github.com/bazelbuild/rules_nodejs/archive/0.8.0.zip", + strip_prefix = "rules_nodejs-0.8.0", + sha256 = "4e40dd49ae7668d245c3107645f2a138660fcfd975b9310b91eda13f0c973953", ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") @@ -37,16 +37,29 @@ yarn_install( # @build_bazel_rules_typescript_node//:bin/npm # - The yarn package manager: # @yarn//:yarn -node_repositories(package_json = ["//:package.json"]) +node_repositories( + package_json = ["//:package.json"], + preserve_symlinks = True) -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") +http_archive( + name = "io_bazel_rules_go", + sha256 = "feba3278c13cde8d67e341a837f69a029f698d7a27ddbb2a202be7a10b22142a", + urls = [ + "http://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/0.10.3/rules_go-0.10.3.tar.gz", + "https://github.com/bazelbuild/rules_go/releases/download/0.10.3/rules_go-0.10.3.tar.gz" + ], +) -ts_setup_workspace() +http_archive( + name = "io_bazel", + url = "https://github.com/bazelbuild/bazel/releases/download/0.9.0/bazel-0.9.0-dist.zip", + sha256 = "efb28fed4ffcfaee653e0657f6500fc4cbac61e32104f4208da385676e76312a", +) http_archive( - name = "io_bazel_rules_go", - url = "https://github.com/bazelbuild/rules_go/releases/download/0.7.1/rules_go-0.7.1.tar.gz", - sha256 = "341d5eacef704415386974bc82a1783a8b7ffbff2ab6ba02375e1ca20d9b031c", + name = "bazel_gazelle", + sha256 = "d03625db67e9fb0905bbd206fa97e32ae9da894fe234a493e7517fd25faec914", + url = "https://github.com/bazelbuild/bazel-gazelle/releases/download/0.10.1/bazel-gazelle-0.10.1.tar.gz", ) load("@io_bazel_rules_go//go:def.bzl", "go_rules_dependencies", "go_register_toolchains") @@ -55,12 +68,30 @@ go_rules_dependencies() go_register_toolchains() +load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") + +gazelle_dependencies() + http_archive( - name = "io_bazel", - url = "https://github.com/bazelbuild/bazel/releases/download/0.9.0/bazel-0.9.0-dist.zip", - sha256 = "efb28fed4ffcfaee653e0657f6500fc4cbac61e32104f4208da385676e76312a", + name = "io_bazel_rules_webtesting", + url = "https://github.com/bazelbuild/rules_webtesting/archive/ca7b8062d9cf4ef2fde9193c7d37a0764c4262d7.zip", + strip_prefix = "rules_webtesting-ca7b8062d9cf4ef2fde9193c7d37a0764c4262d7", + sha256 = "28c73cf9d310fa6dba30e66bdb98071341c99c3feb8662f2d3883a632de97d72", ) +load("@io_bazel_rules_webtesting//web:repositories.bzl", "browser_repositories", "web_test_repositories") + +web_test_repositories() + +browser_repositories( + chromium = True, + firefox = True, +) + +load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") + +ts_setup_workspace() + ############################################# # Dependencies for generating documentation # ############################################# @@ -74,12 +105,6 @@ http_archive( load("@io_bazel_rules_sass//sass:sass.bzl", "sass_repositories") sass_repositories() -http_archive( - name = "bazel_skylib", - url = "https://github.com/bazelbuild/bazel-skylib/archive/0.3.1.zip", - strip_prefix = "bazel-skylib-0.3.1", -) - http_archive( name = "io_bazel_skydoc", url = "https://github.com/bazelbuild/skydoc/archive/0ef7695c9d70084946a3e99b89ad5a99ede79580.zip", diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl index 312cef2879..bb70c960e2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl @@ -21,14 +21,16 @@ load("//internal:build_defs.bzl", _ts_library = "ts_library") load("//internal:ts_config.bzl", _ts_config = "ts_config") load("//internal/devserver:ts_devserver.bzl", _ts_devserver = "ts_devserver_macro") load("//internal/karma:ts_web_test.bzl", _ts_web_test = "ts_web_test_macro") +load("//internal/karma:ts_web_test_suite.bzl", _ts_web_test_suite = "ts_web_test_suite") load("//internal/protobufjs:ts_proto_library.bzl", _ts_proto_library = "ts_proto_library") ts_setup_workspace = _ts_setup_workspace ts_library = _ts_library ts_config = _ts_config ts_devserver = _ts_devserver -# TODO(alexeagle): make ts_web_test work in google3 +# TODO(alexeagle): make ts_web_test && ts_web_test_suite work in google3 ts_web_test = _ts_web_test +ts_web_test_suite = _ts_web_test_suite ts_proto_library = _ts_proto_library # DO NOT ADD MORE rules here unless they appear in the generated docsite. # Run yarn skydoc to re-generate the docsite. diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel index b2982c67ba..365a175c81 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel @@ -1,7 +1,7 @@ load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_proto_library", - "ts_web_test", + "ts_web_test_suite", "ts_devserver", ) @@ -31,10 +31,14 @@ ts_library( deps = [":car"], ) -ts_web_test( +ts_web_test_suite( name = "test", deps = ["test_lib"], bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"], + browsers = [ + "@io_bazel_rules_webtesting//browsers:chromium-local", + "@io_bazel_rules_webtesting//browsers:firefox-local", + ], ) ts_library( diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel index cb79f03afd..d3cb5c3199 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel @@ -1,4 +1,4 @@ -load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_web_test") +load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_web_test_suite") ts_library( name = "lib", @@ -12,9 +12,13 @@ ts_library( testonly = 1, ) -ts_web_test( +ts_web_test_suite( name = "testing", deps = [ ":tests", ], + browsers = [ + "@io_bazel_rules_webtesting//browsers:chromium-local", + "@io_bazel_rules_webtesting//browsers:firefox-local", + ], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel index 9d36fedec8..d2b5992429 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel @@ -5,6 +5,7 @@ exports_files([ "karma.conf.js", # Exported to be consumed for generating skydoc. "ts_web_test.bzl", + "ts_web_test_suite.bzl", ]) load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js index 7dc841d948..50bb217d0b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js @@ -4,11 +4,27 @@ const path = require('path'); const fs = require('fs'); const tmp = require('tmp'); -// When karma is configured to use Chrome it will look for a CHROME_BIN -// environment variable. This line points Karma to use puppeteer instead. -// See -// https://github.com/karma-runner/karma-chrome-launcher/blob/master/README.md#headless-chromium-with-puppeteer -process.env.CHROME_BIN = require('puppeteer').executablePath(); +const browsers = []; +if (process.env['WEB_TEST_METADATA']) { + const webTestMetadata = require(process.env['WEB_TEST_METADATA']); + const webTestNamedFiles = webTestMetadata['webTestFiles'][0]['namedFiles']; + if (webTestNamedFiles['CHROMIUM']) { + // When karma is configured to use Chrome it will look for a CHROME_BIN + // environment variable. + process.env.CHROME_BIN = path.join("external", webTestNamedFiles['CHROMIUM']); + browsers.push(process.env['DISPLAY'] ? 'Chrome': 'ChromeHeadless'); + } + if (webTestNamedFiles['FIREFOX']) { + // When karma is configured to use Firefox it will look for a FIREFOX_BIN + // environment variable. + process.env.FIREFOX_BIN = path.join("external", webTestNamedFiles['FIREFOX']); + browsers.push(process.env['DISPLAY'] ? 'Firefox': 'FirefoxHeadless'); + } +} +if (!browsers.length) { + console.warn('No browsers configured. Configuring Karma to use system Chrome.'); + browsers.push(process.env['DISPLAY'] ? 'Chrome': 'ChromeHeadless'); +} let files = [ TMPL_bootstrap_files @@ -70,7 +86,7 @@ module.exports = function(config) { } config.set({ - plugins: ['karma-*', 'karma-concat-js', 'karma-sourcemap-loader'], + plugins: ['karma-*', 'karma-concat-js', 'karma-sourcemap-loader', 'karma-chrome-launcher', 'karma-firefox-launcher'], preprocessors: { '**/*.js': ['sourcemap'] }, @@ -100,7 +116,7 @@ module.exports = function(config) { // start these browsers // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher - browsers: [process.env['DISPLAY'] ? 'TMPL_browser': 'TMPL_headlessbrowser'], + browsers: browsers, // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json index c6f4d4230d..f0e0542954 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json @@ -1,13 +1,13 @@ { - "description": "runtime dependences for ts_web_test rules", + "description": "runtime dependences for web test rules", "devDependencies": { "jasmine-core": "2.8.0", "karma": "alexeagle/karma#fa1a84ac881485b5657cb669e9b4e5da77b79f0a", "karma-chrome-launcher": "2.2.0", + "karma-firefox-launcher": "1.1.0", "karma-jasmine": "1.1.1", "karma-sourcemap-loader": "0.3.7", "karma-requirejs": "1.1.0", - "puppeteer": "1.1.0", "requirejs": "2.3.5", "tmp": "0.0.33" } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl index 85da445f07..a502ea5199 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl @@ -11,7 +11,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -"Unit testing in Chrome" +"Unit testing in with Karma" load("@build_bazel_rules_nodejs//internal:node.bzl", "sources_aspect", @@ -20,8 +20,6 @@ load("@build_bazel_rules_nodejs//internal:node.bzl", load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "write_amd_names_shim") _CONF_TMPL = "//internal/karma:karma.conf.js" -# TODO(alexeagle): users will need some control over browser; needs design -_BROWSER = "Chrome" def _ts_web_test_impl(ctx): conf = ctx.actions.declare_file( @@ -81,8 +79,6 @@ def _ts_web_test_impl(ctx): "TMPL_bootstrap_files": "\n".join([" '%s'," % e for e in bootstrap_entries]), "TMPL_user_files": "\n".join([" '%s'," % e for e in user_entries]), "TMPL_workspace_name": ctx.workspace_name, - "TMPL_browser": _BROWSER, - "TMPL_headlessbrowser": "%sHeadless" % _BROWSER, }) karma_executable_path = ctx.executable._karma.short_path @@ -121,6 +117,7 @@ $KARMA ${{ARGV[@]}} """.format(TMPL_karma = karma_executable_path, TMPL_conf = conf.short_path)) return [DefaultInfo( + files = depset([ctx.outputs.executable]), runfiles = ctx.runfiles( files = ctx.files.srcs + ctx.files.deps + ctx.files.bootstrap + [ conf, amd_names_shim @@ -130,11 +127,13 @@ $KARMA ${{ARGV[@]}} collect_data = True, collect_default = True, ), + executable = ctx.outputs.executable, )] ts_web_test = rule( implementation = _ts_web_test_impl, test = True, + executable = True, attrs = { "srcs": attr.label_list( doc = "JavaScript source files", @@ -166,7 +165,7 @@ ts_web_test = rule( ) """Runs unit tests in a browser. -When executed under `bazel test`, this uses a headless Chrome browser for speed. +When executed under `bazel test`, this uses a headless browser for speed. This is also because `bazel test` allows multiple targets to be tested together, and we don't want to open a Chrome window on your machine for each one. Also, under `bazel test` the test will execute and immediately terminate. @@ -206,7 +205,7 @@ def ts_web_test_macro(tags = [], data = [], **kwargs): # Users don't need to know that this tag is required to run under ibazel "ibazel_notify_changes", # Always attach this label to allow filtering, eg. envs w/ no browser - "browser:%s" % _BROWSER, + "browser:chromium-system", ], # Our binary dependency must be in data[] for collect_data to pick it up # FIXME: maybe we can just ask the attr._karma for its runfiles attr diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test_suite.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test_suite.bzl new file mode 100644 index 0000000000..f05b9c8e64 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test_suite.bzl @@ -0,0 +1,106 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Web Test rules for Typescript.""" + +load(":ts_web_test.bzl", "ts_web_test") +load("@io_bazel_rules_webtesting//web:web.bzl", "web_test_suite") +load("@io_bazel_rules_webtesting//web/internal:constants.bzl", "DEFAULT_WRAPPED_TEST_TAGS") + +def ts_web_test_suite( + name, + browsers=["@io_bazel_rules_webtesting//browsers:chromium-local"], + args=None, + browser_overrides=None, + config=None, + flaky=None, + local=None, + shard_count=None, + size=None, + tags = [], + test_suite_tags=None, + timeout=None, + visibility=None, + web_test_data=[], + wrapped_test_tags=None, + **remaining_keyword_args): + """Defines a test_suite of web_test targets that wrap a ts_web_test target. + + Args: + name: The base name of the test. + browsers: A sequence of labels specifying the browsers to use. + args: Args for web_test targets generated by this extension. + browser_overrides: Dictionary; optional; default is an empty dictionary. A + dictionary mapping from browser names to browser-specific web_test + attributes, such as shard_count, flakiness, timeout, etc. For example: + {'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1} + '//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}. + config: Label; optional; Configuration of web test features. + flaky: A boolean specifying that the test is flaky. If set, the test will + be retried up to 3 times (default: 0) + local: boolean; optional. + shard_count: The number of test shards to use per browser. (default: 1) + size: A string specifying the test size. (default: 'large') + tags: A list of test tag strings to apply to each generated web_test target. + This macro adds a couple for ibazel. + test_suite_tags: A list of tag strings for the generated test_suite. + timeout: A string specifying the test timeout (default: computed from size) + visibility: List of labels; optional. + web_test_data: Data dependencies for the web_test. + wrapped_test_tags: A list of test tag strings to use for the wrapped test + **remaining_keyword_args: Arguments for the wrapped test target. + """ + # Check explicitly for None so that users can set this to the empty list + if wrapped_test_tags == None: + wrapped_test_tags = DEFAULT_WRAPPED_TEST_TAGS + + size = size or "large" + + wrapped_test_name = name + "_wrapped_test" + + # Users don't need to know that this tag is required to run under ibazel + tags = tags + ["ibazel_notify_changes"] + + # Our binary dependency must be in data[] for collect_data to pick it up + # FIXME: maybe we can just ask the attr._karma for its runfiles attr + web_test_data = web_test_data + ["@build_bazel_rules_typescript//internal/karma:karma_bin"] + + ts_web_test( + name=wrapped_test_name, + args=args, + flaky=flaky, + local=local, + shard_count=shard_count, + size=size, + tags=wrapped_test_tags, + timeout=timeout, + visibility=["//visibility:private"], + **remaining_keyword_args) + + web_test_suite( + name=name, + launcher=":"+wrapped_test_name, + args=args, + browsers=browsers, + browser_overrides=browser_overrides, + config=config, + data=web_test_data, + flaky=flaky, + local=local, + shard_count=shard_count, + size=size, + tags=tags, + test=wrapped_test_name, + test_suite_tags=test_suite_tags, + timeout=timeout, + visibility=visibility) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock index 16c8fe54ca..967143b8f9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock @@ -28,12 +28,6 @@ agent-base@2: extend "~3.0.0" semver "~5.0.1" -agent-base@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.0.tgz#9838b5c3392b962bad031e6a4c5e1024abec45ce" - dependencies: - es6-promisify "^5.0.0" - ajv@^4.9.1: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" @@ -381,14 +375,6 @@ 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.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" - dependencies: - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - connect@^3.6.0: version "3.6.5" resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.5.tgz#fb8dde7ba0763877d0ec9df9dac0b4b40e72c7da" @@ -448,7 +434,7 @@ date-format@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" -debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.6.8, debug@~2.6.4, debug@~2.6.6, debug@~2.6.9: +debug@2, debug@2.6.9, debug@^2.2.0, debug@~2.6.4, debug@~2.6.6, debug@~2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -576,16 +562,6 @@ ent@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" -es6-promise@^4.0.3: - version "4.2.4" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - dependencies: - es6-promise "^4.0.3" - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -658,15 +634,6 @@ extglob@^0.3.1: dependencies: is-extglob "^1.0.0" -extract-zip@^1.6.5: - version "1.6.6" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.6.tgz#1290ede8d20d0872b429fd3f351ca128ec5ef85c" - dependencies: - concat-stream "1.6.0" - debug "2.6.9" - mkdirp "0.5.0" - yauzl "2.4.1" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -687,12 +654,6 @@ fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" -fd-slicer@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" - dependencies: - pend "~1.2.0" - file-uri-to-path@1: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -1019,13 +980,6 @@ https-proxy-agent@1: debug "2" extend "3" -https-proxy-agent@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.1.1.tgz#a7ce4382a1ba8266ee848578778122d491260fd9" - dependencies: - agent-base "^4.1.0" - debug "^3.1.0" - iconv-lite@0.4.15: version "0.4.15" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" @@ -1053,7 +1007,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -1234,6 +1188,10 @@ karma-chrome-launcher@2.2.0: fs-access "^1.0.0" which "^1.2.1" +karma-firefox-launcher@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz#2c47030452f04531eb7d13d4fc7669630bb93339" + karma-jasmine@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.1.tgz#6fe840e75a11600c9d91e84b33c458e1c46a3529" @@ -1432,12 +1390,6 @@ minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" -mkdirp@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" - dependencies: - minimist "0.0.8" - "mkdirp@>=0.5 0", mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -1686,10 +1638,6 @@ path-proxy@~1.0.0: dependencies: inflection "~1.3.0" -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" @@ -1720,14 +1668,6 @@ process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" -process-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" - -progress@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" - proxy-agent@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-2.0.0.tgz#57eb5347aa805d74ec681cb25649dba39c933499" @@ -1741,10 +1681,6 @@ proxy-agent@~2.0.0: pac-proxy-agent "1" socks-proxy-agent "2" -proxy-from-env@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -1753,19 +1689,6 @@ punycode@1.4.1, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -puppeteer@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.1.0.tgz#97fbc2fbbf9ab659e7e202a68ac1ba54b8bc0a25" - dependencies: - debug "^2.6.8" - extract-zip "^1.6.5" - https-proxy-agent "^2.1.0" - mime "^1.3.4" - progress "^2.0.0" - proxy-from-env "^1.0.0" - rimraf "^2.6.1" - ws "^3.0.0" - q@~1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" @@ -1836,18 +1759,6 @@ readable-stream@2, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stre string_decoder "~1.0.3" util-deprecate "~1.0.1" -readable-stream@^2.2.2: - version "2.3.4" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.4.tgz#c946c3f47fa7d8eabc0b6150f4a12f69a4574071" - 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.0.3" - util-deprecate "~1.0.1" - readable-stream@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" @@ -2280,10 +2191,6 @@ type-is@~1.6.15: media-typer "0.3.0" mime-types "~2.1.15" -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" @@ -2363,7 +2270,7 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -ws@^3.0.0, ws@~3.3.1: +ws@~3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" dependencies: @@ -2387,12 +2294,6 @@ yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" -yauzl@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" - dependencies: - fd-slicer "~1.0.1" - yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl index 5c185e07ae..19957f79ca 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl @@ -151,21 +151,24 @@ result will be `car.d.ts`. This means our TypeScript code can just name the rule differently from the output file. The JavaScript produced by protobuf.js has a runtime dependency on a support library. -Under devmode (e.g. `ts_devserver`, `ts_web_test`) you'll need to include these scripts +Under devmode (e.g. `ts_devserver`, `ts_web_test_suite`) you'll need to include these scripts in the `bootstrap` phase (before Require.js loads). You can use the label `@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts` to reference these scripts -in the `bootstrap` attribute of `ts_web_test` or `ts_devserver`. +in the `bootstrap` attribute of `ts_web_test_suite` or `ts_devserver`. - -To complete the example above, you could write a `ts_web_test`: +To complete the example above, you could write a `ts_web_test_suite`: ``` -load("@build_bazel_rules_typescript//:defs.bzl", "ts_web_test") +load("@build_bazel_rules_typescript//:defs.bzl", "ts_web_test_suite") -ts_web_test( +ts_web_test_suite( name = "test", deps = ["test_lib"], bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"], + browsers = [ + "@io_bazel_rules_webtesting//browsers:chromium-local", + "@io_bazel_rules_webtesting//browsers:firefox-local", + ], ) ``` """ From 7faf41350f02759b7958e6dff4c08d9004fd01f3 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 10 May 2018 12:48:20 -0700 Subject: [PATCH 0241/1134] Sync package.json version with latest tag --- third_party/github.com/bazelbuild/rules_typescript/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index fbd4839830..6892065c9e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -1,7 +1,7 @@ { "name": "@bazel/typescript", "description": "Build TypeScript with Bazel", - "version": "0.9.0", + "version": "0.12.3", "keywords": [ "typescript", "bazel" From bd987f739bfdb0554040c9984128cfb632051c08 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 10 May 2018 12:48:23 -0700 Subject: [PATCH 0242/1134] rel: 0.13.0 --- third_party/github.com/bazelbuild/rules_typescript/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 6892065c9e..8bf47d6cf9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -1,7 +1,7 @@ { "name": "@bazel/typescript", "description": "Build TypeScript with Bazel", - "version": "0.12.3", + "version": "0.13.0", "keywords": [ "typescript", "bazel" From fa3b97deda1cdbf23aa70c066814e75b12c9f151 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 10 May 2018 12:52:09 -0700 Subject: [PATCH 0243/1134] Update docs for v0.13.0 --- .../rules_typescript/docs/api/build_defs.html | 17 +- .../docs/api/devserver/ts_devserver.html | 17 +- .../rules_typescript/docs/api/index.html | 74 +++-- .../docs/api/karma/ts_web_test.html | 25 +- .../docs/api/karma/ts_web_test_suite.html | 257 ++++++++++++++++++ .../docs/api/protobufjs/ts_proto_library.html | 31 ++- .../rules_typescript/docs/api/ts_config.html | 17 +- .../docs/api/ts_repositories.html | 17 +- 8 files changed, 387 insertions(+), 68 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test_suite.html diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html index 48879979b0..80ca13b1ff 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html @@ -32,6 +32,11 @@
      • Overview
      • +
      • + Install toolchain dependencies +
          +
        +
      • TypeScript compilation
          @@ -42,11 +47,6 @@
      • -
      • - Install toolchain dependencies -
          -
        -
      • tsconfig.json files using extends
          @@ -68,7 +68,7 @@
      • - Unit testing in Chrome + Unit testing in with Karma
      • +
      • + Web Test rules for Typescript. +
          +
        +
      • Protocol Buffers
          diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html index e46a028d8e..a1ed8f23ab 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html @@ -32,6 +32,11 @@
          • Overview
          • +
          • + Install toolchain dependencies +
              +
            +
          • TypeScript compilation
              @@ -42,11 +47,6 @@
          • -
          • - Install toolchain dependencies -
              -
            -
          • tsconfig.json files using extends
              @@ -68,7 +68,7 @@
          • - Unit testing in Chrome + Unit testing in with Karma
          • +
          • + Web Test rules for Typescript. +
              +
            +
          • Protocol Buffers
              diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html index c7d4f7e3a0..d0a4120436 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html @@ -32,6 +32,11 @@
              • Overview
              • +
              • + Install toolchain dependencies +
                  +
                +
              • TypeScript compilation
                  @@ -42,11 +47,6 @@
              • -
              • - Install toolchain dependencies -
                  -
                -
              • tsconfig.json files using extends
                  @@ -68,7 +68,7 @@
              • - Unit testing in Chrome + Unit testing in with Karma
              • +
              • + Web Test rules for Typescript. +
                  +
                +
              • Protocol Buffers
                  @@ -100,18 +105,19 @@

                  Overview

                  -

                  TypeScript compilation

                  +

                  Install toolchain dependencies

                  -

                  Rules

                  +

                  Macros

                  @@ -120,18 +126,20 @@

                  Rules

                  - - ts_library + + ts_setup_workspace -

                  ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

                  +

                  This repository rule should be called from your WORKSPACE file.

                  -

                  Macros

                  +

                  TypeScript compilation

                  + +

                  Rules

                  @@ -140,19 +148,17 @@

                  Macros

                  - - tsc_wrapped_tsconfig + + ts_library -

                  Produce a tsconfig.json that sets options required under Bazel.

                  +

                  ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

                  -

                  Install toolchain dependencies

                  -

                  Macros

                  @@ -162,12 +168,12 @@

                  Macros

                  @@ -237,7 +243,7 @@

                  Macros

                  - - ts_setup_workspace + + tsc_wrapped_tsconfig -

                  This repository rule should be called from your WORKSPACE file.

                  +

                  Produce a tsconfig.json that sets options required under Bazel.

                  -

                  Unit testing in Chrome

                  +

                  Unit testing in with Karma

                  Rules

                  @@ -279,6 +285,28 @@

                  Macros

                  +

                  Web Test rules for Typescript.

                  + +

                  Macros

                  + + + + + + + + + + + +
                  + + ts_web_test_suite + + +

                  Defines a test_suite of web_test targets that wrap a ts_web_test target.

                  + +

                  Protocol Buffers

                  Rules

                  diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html index 0a9da03439..1f92c4a598 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html @@ -10,7 +10,7 @@ - Unit testing in Chrome + Unit testing in with Karma @@ -23,7 +23,7 @@ mdl-layout--fixed-header">
                  - Unit testing in Chrome + Unit testing in with Karma
                  @@ -32,6 +32,11 @@
                  • Overview
                  • +
                  • + Install toolchain dependencies +
                      +
                    +
                  • TypeScript compilation
                      @@ -42,11 +47,6 @@
                  • -
                  • - Install toolchain dependencies -
                      -
                    -
                  • tsconfig.json files using extends
                      @@ -68,7 +68,7 @@
                  • - Unit testing in Chrome + Unit testing in with Karma
                  • +
                  • + Web Test rules for Typescript. +
                      +
                    +
                  • Protocol Buffers
                      @@ -94,7 +99,7 @@
                      -

                      Unit testing in Chrome

                      +

                      Unit testing in with Karma

                      @@ -283,20 +277,9 @@

                      Macros

                      - - -

                      Web Test rules for Typescript.

                      - -

                      Macros

                      - - - - - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html index 1f92c4a598..86352025c6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html @@ -77,11 +77,6 @@ -
                    • - Web Test rules for Typescript. -
                        -
                      -
                    • Protocol Buffers
                    • - + ts_web_test_suite

                      +

                      ts_web_test_suite

                      + +
                      ts_web_test_suite(name, browsers, args, browser_overrides, config, flaky, local, shard_count, size, tags, test_suite_tags, timeout, visibility, web_test_data, wrapped_test_tags)
                      + +

                      Defines a test_suite of web_test targets that wrap a ts_web_test target.

                      + + +

                      Attributes

                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      name +

                      Name; Required

                      +

                      The base name of the test.

                      +
                      browsers +

                      List of strings; Optional

                      +

                      A sequence of labels specifying the browsers to use.

                      +
                      args +

                      Unknown; Optional

                      +

                      Args for web_test targets generated by this extension.

                      +
                      browser_overrides +

                      Unknown; Optional

                      +

                      Dictionary; optional; default is an empty dictionary. A +dictionary mapping from browser names to browser-specific web_test +attributes, such as shard_count, flakiness, timeout, etc. For example: +{'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1} +'//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}.

                      +
                      config +

                      Unknown; Optional

                      +

                      Label; optional; Configuration of web test features.

                      +
                      flaky +

                      Unknown; Optional

                      +

                      A boolean specifying that the test is flaky. If set, the test will +be retried up to 3 times (default: 0)

                      +
                      local +

                      Unknown; Optional

                      +

                      boolean; optional.

                      +
                      shard_count +

                      Unknown; Optional

                      +

                      The number of test shards to use per browser. (default: 1)

                      +
                      size +

                      Unknown; Optional

                      +

                      A string specifying the test size. (default: 'large')

                      +
                      tags +

                      List of strings; Optional

                      +

                      A list of test tag strings to apply to each generated web_test target. +This macro adds a couple for ibazel.

                      +
                      test_suite_tags +

                      Unknown; Optional

                      +

                      A list of tag strings for the generated test_suite.

                      +
                      timeout +

                      Unknown; Optional

                      +

                      A string specifying the test timeout (default: computed from size)

                      +
                      visibility +

                      Unknown; Optional

                      +

                      List of labels; optional.

                      +
                      web_test_data +

                      List of strings; Optional

                      +

                      Data dependencies for the web_test.

                      +
                      wrapped_test_tags +

                      Unknown; Optional

                      +

                      A list of test tag strings to use for the wrapped test +**remaining_keyword_args: Arguments for the wrapped test target.

                      +
                      +
                      +

                      ts_web_test

                      ts_web_test(name, deps, data, srcs, bootstrap)
                      diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html index 9406c3ff6c..ef7d15a20c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html @@ -77,11 +77,6 @@
                  • -
                  • - Web Test rules for Typescript. -
                      -
                    -
                  • Protocol Buffers
                      diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html index b50efa682c..df5f65f923 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html @@ -77,11 +77,6 @@
                  • -
                  • - Web Test rules for Typescript. -
                      -
                    -
                  • Protocol Buffers
                      diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html index 41140a2ae6..f699f2020c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html @@ -77,11 +77,6 @@
                  • -
                  • - Web Test rules for Typescript. -
                      -
                    -
                  • Protocol Buffers
                      From 735d7d31536122748d17815392b62ecfd02d3591 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Thu, 10 May 2018 13:18:50 -0700 Subject: [PATCH 0245/1134] Move ts_web_test_suite to the same .bzl file with ts_web_test This makes the documentation easier to navigate since both docs will live on the same page. PiperOrigin-RevId: 196161292 --- .../bazelbuild/rules_typescript/BUILD.bazel | 1 - .../bazelbuild/rules_typescript/defs.bzl | 5 +- .../internal/karma/ts_web_test.bzl | 91 +++++++++++++++ .../internal/karma/ts_web_test_suite.bzl | 106 ------------------ 4 files changed, 94 insertions(+), 109 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test_suite.bzl diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index 9ea6af71cd..e798d86cf6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -49,7 +49,6 @@ skylark_doc( "//internal:ts_config.bzl", "//internal/devserver:ts_devserver.bzl", "//internal/karma:ts_web_test.bzl", - "//internal/karma:ts_web_test_suite.bzl", "//internal/protobufjs:ts_proto_library.bzl", ], format = "html", diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl index bb70c960e2..e7caea17a5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl @@ -20,8 +20,9 @@ load("//internal:ts_repositories.bzl", _ts_setup_workspace = "ts_setup_workspace load("//internal:build_defs.bzl", _ts_library = "ts_library") load("//internal:ts_config.bzl", _ts_config = "ts_config") load("//internal/devserver:ts_devserver.bzl", _ts_devserver = "ts_devserver_macro") -load("//internal/karma:ts_web_test.bzl", _ts_web_test = "ts_web_test_macro") -load("//internal/karma:ts_web_test_suite.bzl", _ts_web_test_suite = "ts_web_test_suite") +load("//internal/karma:ts_web_test.bzl", + _ts_web_test = "ts_web_test_macro", + _ts_web_test_suite = "ts_web_test_suite") load("//internal/protobufjs:ts_proto_library.bzl", _ts_proto_library = "ts_proto_library") ts_setup_workspace = _ts_setup_workspace diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl index a502ea5199..0e82f8f12a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl @@ -211,3 +211,94 @@ def ts_web_test_macro(tags = [], data = [], **kwargs): # FIXME: maybe we can just ask the attr._karma for its runfiles attr data = data + ["@build_bazel_rules_typescript//internal/karma:karma_bin"], **kwargs) + +load("@io_bazel_rules_webtesting//web:web.bzl", "web_test_suite") +load("@io_bazel_rules_webtesting//web/internal:constants.bzl", "DEFAULT_WRAPPED_TEST_TAGS") + +def ts_web_test_suite( + name, + browsers=["@io_bazel_rules_webtesting//browsers:chromium-local"], + args=None, + browser_overrides=None, + config=None, + flaky=None, + local=None, + shard_count=None, + size=None, + tags = [], + test_suite_tags=None, + timeout=None, + visibility=None, + web_test_data=[], + wrapped_test_tags=None, + **remaining_keyword_args): + """Defines a test_suite of web_test targets that wrap a ts_web_test target. + + Args: + name: The base name of the test. + browsers: A sequence of labels specifying the browsers to use. + args: Args for web_test targets generated by this extension. + browser_overrides: Dictionary; optional; default is an empty dictionary. A + dictionary mapping from browser names to browser-specific web_test + attributes, such as shard_count, flakiness, timeout, etc. For example: + {'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1} + '//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}. + config: Label; optional; Configuration of web test features. + flaky: A boolean specifying that the test is flaky. If set, the test will + be retried up to 3 times (default: 0) + local: boolean; optional. + shard_count: The number of test shards to use per browser. (default: 1) + size: A string specifying the test size. (default: 'large') + tags: A list of test tag strings to apply to each generated web_test target. + This macro adds a couple for ibazel. + test_suite_tags: A list of tag strings for the generated test_suite. + timeout: A string specifying the test timeout (default: computed from size) + visibility: List of labels; optional. + web_test_data: Data dependencies for the web_test. + wrapped_test_tags: A list of test tag strings to use for the wrapped test + **remaining_keyword_args: Arguments for the wrapped test target. + """ + # Check explicitly for None so that users can set this to the empty list + if wrapped_test_tags == None: + wrapped_test_tags = DEFAULT_WRAPPED_TEST_TAGS + + size = size or "large" + + wrapped_test_name = name + "_wrapped_test" + + # Users don't need to know that this tag is required to run under ibazel + tags = tags + ["ibazel_notify_changes"] + + # Our binary dependency must be in data[] for collect_data to pick it up + # FIXME: maybe we can just ask the attr._karma for its runfiles attr + web_test_data = web_test_data + ["@build_bazel_rules_typescript//internal/karma:karma_bin"] + + ts_web_test( + name=wrapped_test_name, + args=args, + flaky=flaky, + local=local, + shard_count=shard_count, + size=size, + tags=wrapped_test_tags, + timeout=timeout, + visibility=["//visibility:private"], + **remaining_keyword_args) + + web_test_suite( + name=name, + launcher=":"+wrapped_test_name, + args=args, + browsers=browsers, + browser_overrides=browser_overrides, + config=config, + data=web_test_data, + flaky=flaky, + local=local, + shard_count=shard_count, + size=size, + tags=tags, + test=wrapped_test_name, + test_suite_tags=test_suite_tags, + timeout=timeout, + visibility=visibility) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test_suite.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test_suite.bzl deleted file mode 100644 index f05b9c8e64..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test_suite.bzl +++ /dev/null @@ -1,106 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""Web Test rules for Typescript.""" - -load(":ts_web_test.bzl", "ts_web_test") -load("@io_bazel_rules_webtesting//web:web.bzl", "web_test_suite") -load("@io_bazel_rules_webtesting//web/internal:constants.bzl", "DEFAULT_WRAPPED_TEST_TAGS") - -def ts_web_test_suite( - name, - browsers=["@io_bazel_rules_webtesting//browsers:chromium-local"], - args=None, - browser_overrides=None, - config=None, - flaky=None, - local=None, - shard_count=None, - size=None, - tags = [], - test_suite_tags=None, - timeout=None, - visibility=None, - web_test_data=[], - wrapped_test_tags=None, - **remaining_keyword_args): - """Defines a test_suite of web_test targets that wrap a ts_web_test target. - - Args: - name: The base name of the test. - browsers: A sequence of labels specifying the browsers to use. - args: Args for web_test targets generated by this extension. - browser_overrides: Dictionary; optional; default is an empty dictionary. A - dictionary mapping from browser names to browser-specific web_test - attributes, such as shard_count, flakiness, timeout, etc. For example: - {'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1} - '//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}. - config: Label; optional; Configuration of web test features. - flaky: A boolean specifying that the test is flaky. If set, the test will - be retried up to 3 times (default: 0) - local: boolean; optional. - shard_count: The number of test shards to use per browser. (default: 1) - size: A string specifying the test size. (default: 'large') - tags: A list of test tag strings to apply to each generated web_test target. - This macro adds a couple for ibazel. - test_suite_tags: A list of tag strings for the generated test_suite. - timeout: A string specifying the test timeout (default: computed from size) - visibility: List of labels; optional. - web_test_data: Data dependencies for the web_test. - wrapped_test_tags: A list of test tag strings to use for the wrapped test - **remaining_keyword_args: Arguments for the wrapped test target. - """ - # Check explicitly for None so that users can set this to the empty list - if wrapped_test_tags == None: - wrapped_test_tags = DEFAULT_WRAPPED_TEST_TAGS - - size = size or "large" - - wrapped_test_name = name + "_wrapped_test" - - # Users don't need to know that this tag is required to run under ibazel - tags = tags + ["ibazel_notify_changes"] - - # Our binary dependency must be in data[] for collect_data to pick it up - # FIXME: maybe we can just ask the attr._karma for its runfiles attr - web_test_data = web_test_data + ["@build_bazel_rules_typescript//internal/karma:karma_bin"] - - ts_web_test( - name=wrapped_test_name, - args=args, - flaky=flaky, - local=local, - shard_count=shard_count, - size=size, - tags=wrapped_test_tags, - timeout=timeout, - visibility=["//visibility:private"], - **remaining_keyword_args) - - web_test_suite( - name=name, - launcher=":"+wrapped_test_name, - args=args, - browsers=browsers, - browser_overrides=browser_overrides, - config=config, - data=web_test_data, - flaky=flaky, - local=local, - shard_count=shard_count, - size=size, - tags=tags, - test=wrapped_test_name, - test_suite_tags=test_suite_tags, - timeout=timeout, - visibility=visibility) From 6b125e792c35c31a7bc4e97099b910a7a858d7fa Mon Sep 17 00:00:00 2001 From: alexeagle Date: Fri, 11 May 2018 12:53:28 -0700 Subject: [PATCH 0246/1134] Fix crash of tsc_wrapped. If tsickle reports a warning, we try to read the ignoreWarningPaths property of the BazelOptions. The type of this property is non-optional, so we should always set a value when creating a bazelOpts dict. Ideally we should have a JSON schema for the tsconfig.json and run some validator to assert we have an object that satisfies our interface. PiperOrigin-RevId: 196295708 --- .../bazelbuild/rules_typescript/internal/common/tsconfig.bzl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index a528c09394..7a2f482a47 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -126,7 +126,8 @@ def create_tsconfig(ctx, files, srcs, "tsickleExternsPath": tsickle_externs.path if tsickle_externs else "", "untyped": not getattr(ctx.attr, "tsickle_typed", False), "typeBlackListPaths": [f.path for f in type_blacklisted_declarations], - + # This is overridden by first-party javascript/typescript/tsconfig.bzl + "ignoreWarningPaths": [], "es5Mode": devmode_manifest != None, "manifest": devmode_manifest if devmode_manifest else "", # Explicitly tell the compiler which sources we're interested in (emitting @@ -139,6 +140,7 @@ def create_tsconfig(ctx, files, srcs, if disable_strict_deps: bazel_options["disableStrictDeps"] = disable_strict_deps + bazel_options["allowedStrictDeps"] = [] else: bazel_options["allowedStrictDeps"] = [f.path for f in allowed_deps] From f1477f568620fcd6a10848201ec96121959445e5 Mon Sep 17 00:00:00 2001 From: radokirov Date: Mon, 14 May 2018 14:16:54 -0700 Subject: [PATCH 0247/1134] Add support for turning off strict deps checking on 'goog:' module imports. PiperOrigin-RevId: 196565421 --- .../internal/common/tsconfig.bzl | 5 ++++- .../internal/tsc_wrapped/strict_deps.ts | 19 +++++++++++++--- .../internal/tsc_wrapped/strict_deps_test.ts | 22 ++++++++++++++----- 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 7a2f482a47..6b6435a5b2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -22,7 +22,8 @@ _DEBUG = False def create_tsconfig(ctx, files, srcs, devmode_manifest=None, tsickle_externs=None, type_blacklisted_declarations=[], out_dir=None, disable_strict_deps=False, allowed_deps=depset(), - extra_root_dirs=[], module_path_prefixes=None, module_roots=None): + extra_root_dirs=[], module_path_prefixes=None, module_roots=None, + skip_goog_scheme_deps_checking=False): """Creates an object representing the TypeScript configuration to run the compiler under Bazel. Args: @@ -39,6 +40,7 @@ def create_tsconfig(ctx, files, srcs, extra_root_dirs: Extra root dirs to be passed to tsc_wrapped. module_path_prefixes: additional locations to resolve modules module_roots: standard locations to resolve modules + skip_goog_scheme_deps_checking: whether imports from 'goog:*' should be strict deps checked Returns: A nested dict that corresponds to a tsconfig.json structure @@ -136,6 +138,7 @@ def create_tsconfig(ctx, files, srcs, "addDtsClutzAliases": getattr(ctx.attr, "add_dts_clutz_aliases", False), "typeCheckDependencies": getattr(ctx.attr, "internal_testing_type_check_dependencies", False), "expectedDiagnostics": getattr(ctx.attr, "expected_diagnostics", []), + "skipGoogSchemeDepsChecking": skip_goog_scheme_deps_checking, } if disable_strict_deps: diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts index a896c66a7d..93de6bedfb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts @@ -25,8 +25,14 @@ export interface StrictDepsPluginConfig { compilationTargetSrc: string[]; allowedStrictDeps: string[]; rootDir: string; + // This flag turns off strict deps checking on imports from 'goog:*' + // This schema is used by clutz to generate a bridge with closure modules. + // There is no good reason to use this flag, it is only used for gradual + // rolling out of the strictness checks. + skipGoogSchemeDepsChecking: boolean; // Paths where users may freely import without declared dependencies. - // This is used in Bazel where dependencies on node_modules may be undeclared. + // This is used in Bazel where dependencies on node_modules may be + // undeclared. ignoredFilesPrefixes?: string[]; } @@ -58,7 +64,8 @@ export const PLUGIN: pluginApi.Plugin = { perfTrace.wrap('checkModuleDeps', () => { result.push(...checkModuleDeps( sourceFile, program.getTypeChecker(), config.allowedStrictDeps, - config.rootDir, config.ignoredFilesPrefixes)); + config.rootDir, config.skipGoogSchemeDepsChecking, + config.ignoredFilesPrefixes)); }); return result; }; @@ -69,7 +76,8 @@ export const PLUGIN: pluginApi.Plugin = { // Exported for testing export function checkModuleDeps( sf: ts.SourceFile, tc: ts.TypeChecker, allowedDeps: string[], - rootDir: string, ignoredFilesPrefixes: string[] = []): ts.Diagnostic[] { + rootDir: string, skipGoogSchemeDepsChecking: boolean, + ignoredFilesPrefixes: string[] = []): ts.Diagnostic[] { function stripExt(fn: string) { return fn.replace(/(\.d)?\.tsx?$/, ''); } @@ -86,6 +94,11 @@ export function checkModuleDeps( const modSpec = id.moduleSpecifier; if (!modSpec) continue; // E.g. a bare "export {x};" + if (ts.isStringLiteral(modSpec) && modSpec.text.startsWith('goog:') && + skipGoogSchemeDepsChecking) { + continue; + } + const sym = tc.getSymbolAtLocation(modSpec); if (!sym || !sym.declarations || sym.declarations.length < 1) { continue; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts index e7a0d8545b..941424c434 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts @@ -67,7 +67,7 @@ describe('strict deps', () => { '/src/p/sd1.ts': 'import {a} from "somepkg";', }); const diags = checkModuleDeps( - p.getSourceFile('p/sd1.ts')!, p.getTypeChecker(), [], '/src', + p.getSourceFile('p/sd1.ts')!, p.getTypeChecker(), [], '/src', false, ['/src/node_modules']); expect(diags.length).toBe(0, diags); }); @@ -83,7 +83,7 @@ describe('strict deps', () => { }); const diags = checkModuleDeps( p.getSourceFile('p/sd3.ts')!, p.getTypeChecker(), ['/src/p/sd2.ts'], - '/src'); + '/src', false); expect(diags.length).toBe(1); expect(diags[0].messageText) .toMatch(/transitive dependency on p\/sd1.ts not allowed/); @@ -98,7 +98,7 @@ describe('strict deps', () => { }); const diags = checkModuleDeps( p.getSourceFile('p/sd3.ts')!, p.getTypeChecker(), ['/src/p/sd2.ts'], - '/src'); + '/src', false); expect(diags.length).toBe(1); expect(diags[0].messageText) .toMatch(/transitive dependency on p\/sd1.ts not allowed/); @@ -115,7 +115,7 @@ describe('strict deps', () => { }); const diags = checkModuleDeps( p.getSourceFile('/src/p/sd3.ts')!, p.getTypeChecker(), - ['/src/blaze-bin/p/sd2.ts'], '/src'); + ['/src/blaze-bin/p/sd2.ts'], '/src', false); expect(diags.length).toBe(1); expect(diags[0].messageText) .toMatch(/dependency on blaze-bin\/p\/sd1.ts not allowed/); @@ -132,9 +132,21 @@ describe('strict deps', () => { }); const diags = checkModuleDeps( p.getSourceFile('/src/p/sd3.ts')!, p.getTypeChecker(), - ['/src/blaze-bin/p/sd2.d.ts'], '/src'); + ['/src/blaze-bin/p/sd2.d.ts'], '/src', false); expect(diags.length).toBe(1); expect(diags[0].messageText) .toMatch(/dependency on blaze-bin\/p\/sd1.d.ts not allowed/); }); + + it('skips failures on goog: schema deep imports when flag is set', () => { + const p = createProgram({ + '/src/blaze-bin/p/clutz.d.ts': + `declare module 'goog:x' { export let x:string; }`, + '/src/p/prog.ts': `import {x} from 'goog:x';` + }); + const diags = checkModuleDeps( + p.getSourceFile('/src/p/prog.ts')!, p.getTypeChecker(), [], '/src', + true); + expect(diags.length).toBe(0); + }); }); From 10ddb78f64790a6d9717cc20c002ce4dac7756a3 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Tue, 15 May 2018 06:52:20 -0700 Subject: [PATCH 0248/1134] Serve files from package roots of all static_files in ts_devserver PiperOrigin-RevId: 196661328 --- .../rules_typescript/.bazelci/presubmit.yml | 4 ++-- .../rules_typescript/.ci/rules_typescript.json | 3 ++- .../internal/devserver/devserver.go | 13 ++++++++----- .../internal/devserver/ts_devserver.bzl | 13 ++++++++++--- .../rules_typescript/internal/karma/ts_web_test.bzl | 5 ++--- 5 files changed, 24 insertions(+), 14 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml index 868f4d8476..b5201c6874 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml @@ -26,8 +26,8 @@ platforms: build_targets: - "..." test_flags: - # TODO(gregmagolan): firefox unknown breakage on macos target here; does work locally on mac - - "--test_tag_filters=-browser:firefox-local" + # TODO(gregmagolan): chrome & firefox unknown breakage on macos target here; does work locally on mac + - "--test_tag_filters=-browser:chromium-local,-browser:firefox-local" test_targets: - "..." windows: diff --git a/third_party/github.com/bazelbuild/rules_typescript/.ci/rules_typescript.json b/third_party/github.com/bazelbuild/rules_typescript/.ci/rules_typescript.json index 7c671f73fb..75b260e9bc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.ci/rules_typescript.json +++ b/third_party/github.com/bazelbuild/rules_typescript/.ci/rules_typescript.json @@ -14,7 +14,8 @@ {"node": "darwin-x86_64"} ], "parameters": { - "configure": ["$BAZEL run @yarn//:yarn"] + "configure": ["$BAZEL run @yarn//:yarn"], + "test_tag_filters": ["-browser:chromium-local"] } } ] diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver.go b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver.go index ef811e2034..ee649b4ee0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver.go +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver.go @@ -103,8 +103,6 @@ func CreateFileHandler(servingPath, manifest string, pkgs []string, base string) fileHandler := http.FileServer(pkgPaths).ServeHTTP - // defaultIndex is not cached, so that a user's edits will be reflected. - defaultIndex := filepath.Join(base, pkgs[0], "index.html") defaultPage := []byte(fmt.Sprintf(` @@ -119,9 +117,14 @@ func CreateFileHandler(servingPath, manifest string, pkgs []string, base string) // indexHandler serves an index.html if present, or otherwise serves a minimal // generated index.html with a script tag to include the bundled js source. indexHandler := func(w http.ResponseWriter, r *http.Request) { - if _, err := os.Stat(defaultIndex); err == nil { - http.ServeFile(w, r, defaultIndex) - return + // search through pkgs for the first index.html file found if any exists + for _, pkg := range pkgs { + // defaultIndex is not cached, so that a user's edits will be reflected. + defaultIndex := filepath.Join(base, pkg, "index.html") + if _, err := os.Stat(defaultIndex); err == nil { + http.ServeFile(w, r, defaultIndex) + break + } } content := bytes.NewReader(defaultPage) http.ServeContent(w, r, "index.html", time.Now(), content) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl index f9cd7f6a2d..61a363f5c2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl @@ -74,6 +74,9 @@ def _ts_devserver(ctx): serving_arg = "" if ctx.attr.serving_path: serving_arg = "-serving_path=%s" % ctx.attr.serving_path + + packages = depset(["/".join([workspace_name, ctx.label.package])] + ctx.attr.additional_root_paths) + # FIXME: more bash dependencies makes Windows support harder ctx.actions.write( output = ctx.outputs.executable, @@ -82,7 +85,7 @@ def _ts_devserver(ctx): RUNFILES="$PWD/.." {main} {serving_arg} \ -base "$RUNFILES" \ - -packages={workspace}/{package} \ + -packages={packages} \ -manifest={workspace}/{manifest} \ -scripts_manifest={workspace}/{scripts_manifest} \ -entry_module={entry_module} \ @@ -91,7 +94,7 @@ RUNFILES="$PWD/.." main = ctx.executable._devserver.short_path, serving_arg = serving_arg, workspace = workspace_name, - package = ctx.label.package, + packages = ",".join(packages.to_list()), manifest = ctx.outputs.manifest.short_path, scripts_manifest = ctx.outputs.scripts_manifest.short_path, entry_module = ctx.attr.entry_module)) @@ -132,7 +135,11 @@ ts_devserver = rule( """), "bootstrap": attr.label_list( doc = "Scripts to include in the JS bundle before the module loader (require.js)", - allow_files = [".js"]), + allow_files = [".js"]), + "additional_root_paths": attr.string_list( + doc = """Additional root paths to serve static_files from. + Paths should include the workspace name such as [\"__main__/resources\"] + """), "_requirejs_script": attr.label(allow_files = True, single_file = True, default = Label("@build_bazel_rules_typescript_devserver_deps//:node_modules/requirejs/require.js")), "_devserver": attr.label( default = Label("//internal/devserver/main"), diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl index 0e82f8f12a..78be9f5ed4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl @@ -18,6 +18,8 @@ load("@build_bazel_rules_nodejs//internal:node.bzl", "expand_path_into_runfiles", ) load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "write_amd_names_shim") +load("@io_bazel_rules_webtesting//web:web.bzl", "web_test_suite") +load("@io_bazel_rules_webtesting//web/internal:constants.bzl", "DEFAULT_WRAPPED_TEST_TAGS") _CONF_TMPL = "//internal/karma:karma.conf.js" @@ -212,9 +214,6 @@ def ts_web_test_macro(tags = [], data = [], **kwargs): data = data + ["@build_bazel_rules_typescript//internal/karma:karma_bin"], **kwargs) -load("@io_bazel_rules_webtesting//web:web.bzl", "web_test_suite") -load("@io_bazel_rules_webtesting//web/internal:constants.bzl", "DEFAULT_WRAPPED_TEST_TAGS") - def ts_web_test_suite( name, browsers=["@io_bazel_rules_webtesting//browsers:chromium-local"], From 56e691a64664f2d339143dd475c28890665e49be Mon Sep 17 00:00:00 2001 From: alexeagle Date: Tue, 15 May 2018 07:08:42 -0700 Subject: [PATCH 0249/1134] Update TypeScript version used to compile tsc_wrapped to 2.7. This is required for Angular which has a runtime check requiring TS 2.7. PiperOrigin-RevId: 196663605 --- .../internal/tsc_wrapped/package.json | 4 ++-- .../rules_typescript/internal/tsc_wrapped/yarn.lock | 12 ++++++------ .../rules_typescript/internal/tsetse/checker.ts | 5 ++++- .../bazelbuild/rules_typescript/package.json | 2 +- .../github.com/bazelbuild/rules_typescript/yarn.lock | 6 +++--- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/package.json index 3d2ce7fae0..42b84f8948 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/package.json @@ -5,8 +5,8 @@ "@types/node": "7.0.18", "@types/tmp": "0.0.33", "protobufjs": "5.0.0", - "tsickle": "0.27.2", - "typescript": "2.6.2", + "tsickle": "0.28.0", + "typescript": "2.7.2", "tsutils": "2.20.0", "tmp": "0.0.33" } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/yarn.lock index 61645152e1..08ca52df8b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/yarn.lock @@ -198,9 +198,9 @@ tmp@0.0.33: dependencies: os-tmpdir "~1.0.2" -tsickle@0.27.2: - version "0.27.2" - resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.27.2.tgz#f33d46d046f73dd5c155a37922e422816e878736" +tsickle@0.28.0: + version "0.28.0" + resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.28.0.tgz#6cd6fa004766c6ad9261b599c83866ee97cc7875" dependencies: minimist "^1.2.0" mkdirp "^0.5.1" @@ -217,9 +217,9 @@ tsutils@2.20.0: dependencies: tslib "^1.8.1" -typescript@2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4" +typescript@2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" window-size@^0.1.4: version "0.1.4" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts index 402580f4ee..04c9ed39ca 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts @@ -28,7 +28,7 @@ export class Checker { */ private nodeHandlersMap = new Map(); private failures: Failure[] = []; - private currentSourceFile: ts.SourceFile; + private currentSourceFile: ts.SourceFile | undefined; // currentCode will be set before invoking any handler functions so the value // initialized here is never used. private currentCode = 0; @@ -80,6 +80,9 @@ export class Checker { * `addFailureAtNode` is preferred. */ private addFailure(start: number, end: number, failureText: string) { + if (!this.currentSourceFile) { + throw new Error('Source file not defined'); + } if (start >= end || end > this.currentSourceFile.end || start < 0) { // Since only addFailureAtNode() is exposed for now this shouldn't happen. throw new Error( diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 8bf47d6cf9..f3991ebadf 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -24,7 +24,7 @@ "protractor": "^5.2.0", "tsickle": "0.25.x", "tsutils": "2.20.0", - "typescript": "2.6.x" + "typescript": "2.7.x" }, "scripts": { "pretest": "webdriver-manager update && bazel build examples/app:all", diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index 2b9cbb7667..1720f222b3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -949,9 +949,9 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" -typescript@2.6.x: - version "2.6.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4" +typescript@2.7.x: + version "2.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" ultron@1.0.x: version "1.0.2" From 94fdec6b17555ecf4aa78c1c152f727a038f5c19 Mon Sep 17 00:00:00 2001 From: Kelly Campbell Date: Tue, 15 May 2018 15:32:31 -0700 Subject: [PATCH 0250/1134] Make worker.ts compatible with protobufjs 6 Closes #188 PiperOrigin-RevId: 196740396 --- .../internal/tsc_wrapped/worker.ts | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts index 3a83cde778..0634d43cc7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts @@ -30,11 +30,26 @@ const workerpb = (function loadWorkerPb() { const protoPath = 'build_bazel_rules_typescript/internal/worker_protocol.proto'; // Use node module resolution so we can find the .proto file in any of the root dirs - const protoNamespace = protobufjs.loadProtoFile(require.resolve(protoPath)); - if (!protoNamespace) { - throw new Error('Cannot find ' + path.resolve(protoPath)); + const protofile = require.resolve(protoPath); + + // Under Bazel, we use the version of TypeScript installed in the user's + // workspace This means we also use their version of protobuf.js. Handle both. + // v5 and v6 by checking which one is present. + if (protobufjs.loadProtoFile) { + // Protobuf.js v5 + const protoNamespace = protobufjs.loadProtoFile(protofile); + if (!protoNamespace) { + throw new Error('Cannot find ' + path.resolve(protoPath)); + } + return protoNamespace.build('blaze.worker'); + } else { + // Protobuf.js v6 + const protoNamespace = protobufjs.loadSync(protofile); + if (!protoNamespace) { + throw new Error('Cannot find ' + path.resolve(protoPath)); + } + return protoNamespace.lookup('blaze.worker'); } - return protoNamespace.build('blaze.worker'); })(); interface Input { From f37c1f7b2c2203071997fa5a9dbb86cd3585d016 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Tue, 15 May 2018 15:48:56 -0700 Subject: [PATCH 0251/1134] Update docs for release --- .../docs/api/devserver/ts_devserver.html | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html index b14b86f7ec..c993a7fdce 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html @@ -141,7 +141,7 @@

                      Attributes

                      ts_devserver

                      -
                      ts_devserver(name, deps, data, bootstrap, entry_module, scripts, serving_path, static_files)
                      +
                      ts_devserver(name, deps, data, additional_root_paths, bootstrap, entry_module, scripts, serving_path, static_files)

                      ts_devserver is a simple development server intended for a quick "getting started" experience.

                      Additional documentation at https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel

                      @@ -176,6 +176,14 @@

                      Attributes

                      Dependencies that can be require'd while the server is running

                      + + additional_root_paths + +

                      List of strings; Optional; Default is []

                      +

                      Additional root paths to serve staticfiles from. + Paths should include the workspace name such as ["_main/resources"]

                      + + bootstrap From 11f848c991714178737fdad9e9d7df8b9e603bfb Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Tue, 15 May 2018 15:49:19 -0700 Subject: [PATCH 0252/1134] rel: 0.14.0 --- third_party/github.com/bazelbuild/rules_typescript/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index f3991ebadf..d70fe2a0e4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -1,7 +1,7 @@ { "name": "@bazel/typescript", "description": "Build TypeScript with Bazel", - "version": "0.13.0", + "version": "0.14.0", "keywords": [ "typescript", "bazel" From 150d9a2c3af591b13f92074a70900e7a77b98d8c Mon Sep 17 00:00:00 2001 From: alexeagle Date: Wed, 16 May 2018 10:12:17 -0700 Subject: [PATCH 0253/1134] Document rules_typescript release process PiperOrigin-RevId: 196845849 --- .../bazelbuild/rules_typescript/README.md | 17 +++++++++++++++++ .../bazelbuild/rules_typescript/package.json | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 47221276ea..23e98c23a6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -196,3 +196,20 @@ In the meantime, we suggest associating the `.bazel` extension with Python in your editor, so that you get useful syntax highlighting. [gazelle]: https://github.com/bazelbuild/rules_go/tree/master/go/tools/gazelle + +### Releasing + +Start from a clean checkout at master/HEAD. Check if there are any breaking +changes since the last tag - if so, this will be a minor, if not, it's a patch. +(This may not sound like semver - but since our major version is a zero, the +rule is that minors are breaking changes and patches are new features). + +```sh +yarn skydoc +git commit -a -m 'Update docs for release' +npm config set tag-version-prefix '' +npm version minor -m 'rel: %s' # Replace minor with patch if no breaking changes +git push +git push --tags +npm publish +``` diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index d70fe2a0e4..f3991ebadf 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -1,7 +1,7 @@ { "name": "@bazel/typescript", "description": "Build TypeScript with Bazel", - "version": "0.14.0", + "version": "0.13.0", "keywords": [ "typescript", "bazel" From 3f78d97006d3d0df54b0a7f93db37685787b47d4 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Tue, 29 May 2018 11:38:13 -0700 Subject: [PATCH 0254/1134] Regenerate internal/karma/yarn.lock (yarn registry url change for karma-sourcemaps-loader broke it) Closes #210 PiperOrigin-RevId: 198430012 --- .../rules_typescript/internal/karma/yarn.lock | 884 ++++++++---------- .../bazelbuild/rules_typescript/package.json | 2 +- 2 files changed, 410 insertions(+), 476 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock index 967143b8f9..96d1fd4d29 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock @@ -6,11 +6,11 @@ abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" -accepts@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" +accepts@~1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" dependencies: - mime-types "~2.1.11" + mime-types "~2.1.18" negotiator "0.6.1" addressparser@1.0.1: @@ -21,19 +21,11 @@ after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" -agent-base@2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.1.1.tgz#d6de10d5af6132d5bd692427d46fc538539094c7" - dependencies: - extend "~3.0.0" - semver "~5.0.1" - -ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" +agent-base@4, agent-base@^4.1.0, agent-base@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.0.tgz#9838b5c3392b962bad031e6a4c5e1024abec45ce" dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" + es6-promisify "^5.0.0" ajv@^5.1.0: version "5.5.2" @@ -58,6 +50,10 @@ 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" @@ -74,8 +70,8 @@ aproba@^1.0.3: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" are-we-there-yet@~1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + 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" @@ -115,8 +111,8 @@ assert-plus@^0.2.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" ast-types@0.x.x: - version "0.10.1" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd" + version "0.11.4" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.4.tgz#76f930930e9571851ba282a9a0f6923f29f6be2f" async-each@^1.0.0: version "1.0.1" @@ -126,11 +122,11 @@ async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" -async@~2.1.2: - version "2.1.5" - resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc" +async@~2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" dependencies: - lodash "^4.14.0" + lodash "^4.17.10" asynckit@^0.4.0: version "0.4.0" @@ -145,8 +141,8 @@ aws-sign2@~0.7.0: resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" aws4@^1.2.1, aws4@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + version "1.7.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" axios@^0.15.3: version "0.15.3" @@ -202,30 +198,24 @@ blob@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - bluebird@^3.3.0, bluebird@^3.4.6: version "3.5.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" body-parser@^1.16.1: - version "1.18.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" + version "1.18.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" dependencies: bytes "3.0.0" content-type "~1.0.4" debug "2.6.9" - depd "~1.1.1" - http-errors "~1.6.2" - iconv-lite "0.4.19" + depd "~1.1.2" + http-errors "~1.6.3" + iconv-lite "0.4.23" on-finished "~2.3.0" - qs "6.5.1" - raw-body "2.3.2" - type-is "~1.6.15" + qs "6.5.2" + raw-body "2.3.3" + type-is "~1.6.16" boom@2.x.x: version "2.10.1" @@ -233,21 +223,9 @@ boom@2.x.x: dependencies: hoek "2.x.x" -boom@4.x.x: - version "4.3.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" - dependencies: - hoek "4.x.x" - -boom@5.x.x: - version "5.2.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" - dependencies: - hoek "4.x.x" - brace-expansion@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + 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" @@ -323,25 +301,25 @@ chokidar@^1.4.1: optionalDependencies: fsevents "^1.0.0" -circular-json@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.1.tgz#b8942a09e535863dc21b04417a91971e1d9cd91f" +chownr@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + +circular-json@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.4.tgz#ff1ad2f2e392eeb8a5172d4d985fa846ed8ad656" co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" -co@~3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/co/-/co-3.0.6.tgz#1445f226c5eb956138e68c9ac30167ea7d2e6bda" - 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" colors@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + version "1.3.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.0.tgz#5f20c9fef6945cb1134260aab33bfbdc8295e04e" combine-lists@^1.0.0: version "1.0.1" @@ -349,15 +327,15 @@ combine-lists@^1.0.0: dependencies: lodash "^4.5.0" -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" +combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" dependencies: delayed-stream "~1.0.0" commander@^2.9.0: - version "2.14.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" component-bind@1.0.0: version "1.0.0" @@ -376,11 +354,11 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" connect@^3.6.0: - version "3.6.5" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.5.tgz#fb8dde7ba0763877d0ec9df9dac0b4b40e72c7da" + version "3.6.6" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" dependencies: debug "2.6.9" - finalhandler "1.0.6" + finalhandler "1.1.0" parseurl "~1.3.2" utils-merge "1.0.1" @@ -397,8 +375,8 @@ cookie@0.3.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" core-js@^2.2.0: - version "2.5.3" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" + version "2.5.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -410,12 +388,6 @@ cryptiles@2.x.x: dependencies: boom "2.x.x" -cryptiles@3.x.x: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" - dependencies: - boom "5.x.x" - custom-event@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" @@ -434,33 +406,27 @@ date-format@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" -debug@2, debug@2.6.9, debug@^2.2.0, debug@~2.6.4, debug@~2.6.6, debug@~2.6.9: +debug@2, debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@~2.6.4, debug@~2.6.6: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@^3.1.0: +debug@3.1.0, debug@^3.1.0, debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: ms "2.0.0" -debug@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - dependencies: - ms "0.7.1" - -deep-extend@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" +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" -degenerator@~1.0.2: +degenerator@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" dependencies: @@ -476,11 +442,7 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" -depd@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" - -depd@~1.1.1: +depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -520,12 +482,12 @@ encodeurl@~1.0.1: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" engine.io-client@~3.1.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.4.tgz#4fcf1370b47163bd2ce9be2733972430350d4ea1" + version "3.1.6" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.6.tgz#5bdeb130f8b94a50ac5cbeb72583e7a4a063ddfd" dependencies: component-emitter "1.2.1" component-inherit "0.0.3" - debug "~2.6.9" + debug "~3.1.0" engine.io-parser "~2.1.1" has-cors "1.1.0" indexof "0.0.1" @@ -546,22 +508,32 @@ engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: has-binary2 "~1.0.2" engine.io@~3.1.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.4.tgz#3d0211b70a552ce841ffc7da8627b301a9a4162e" + version "3.1.5" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.5.tgz#0e7ef9d690eb0b35597f1d4ad02a26ca2dba3845" dependencies: - accepts "1.3.3" + accepts "~1.3.4" base64id "1.0.0" cookie "0.3.1" - debug "~2.6.9" + debug "~3.1.0" engine.io-parser "~2.1.0" ws "~3.3.1" optionalDependencies: - uws "~0.14.4" + uws "~9.14.0" ent@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" +es6-promise@^4.0.3: + version "4.2.4" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + dependencies: + es6-promise "^4.0.3" + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -571,15 +543,15 @@ escape-string-regexp@^1.0.2: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" escodegen@1.x.x: - version "1.9.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852" + 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.5.6" + source-map "~0.6.1" esprima@3.x.x, esprima@^3.1.3: version "3.1.3" @@ -593,9 +565,9 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -eventemitter3@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" +eventemitter3@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" expand-braces@^0.1.1: version "0.1.2" @@ -643,8 +615,8 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" fast-deep-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" fast-json-stable-stringify@^2.0.0: version "2.0.0" @@ -663,18 +635,18 @@ filename-regex@^2.0.0: resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + version "2.2.4" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" dependencies: is-number "^2.1.0" isobject "^2.0.0" - randomatic "^1.1.3" + randomatic "^3.0.0" repeat-element "^1.1.2" repeat-string "^1.5.2" -finalhandler@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz#007aea33d1a4d3e42017f624848ad58d212f814f" +finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" dependencies: debug "2.6.9" encodeurl "~1.0.1" @@ -690,6 +662,12 @@ follow-redirects@1.0.0: dependencies: debug "^2.2.0" +follow-redirects@^1.0.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.0.tgz#234f49cf770b7f35b40e790f636ceba0c3a0ab77" + dependencies: + debug "^3.1.0" + for-in@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -712,20 +690,12 @@ form-data@~2.0.0: combined-stream "^1.0.5" mime-types "^2.1.11" -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -form-data@~2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" +form-data@~2.3.0, form-data@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" dependencies: asynckit "^0.4.0" - combined-stream "^1.0.5" + combined-stream "1.0.6" mime-types "^2.1.12" fs-access@^1.0.0: @@ -734,33 +704,22 @@ fs-access@^1.0.0: dependencies: null-check "^1.0.0" +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.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" + version "1.2.4" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.39" - -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" + nan "^2.9.2" + node-pre-gyp "^0.10.0" ftp@~0.3.10: version "0.3.10" @@ -792,9 +751,9 @@ generate-object-property@^1.1.0: dependencies: is-property "^1.0.0" -get-uri@2: - version "2.0.1" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.1.tgz#dbdcacacd8c608a38316869368117697a1631c59" +get-uri@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.2.tgz#5c795e71326f6ca1286f2fc82575cd2bab2af578" dependencies: data-uri-to-buffer "1" debug "2" @@ -837,10 +796,6 @@ graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -854,13 +809,6 @@ har-validator@~2.0.6: is-my-json-valid "^2.12.4" pinkie-promise "^2.0.0" -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - har-validator@~5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" @@ -875,8 +823,8 @@ has-ansi@^2.0.0: ansi-regex "^2.0.0" has-binary2@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98" + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" dependencies: isarray "2.0.1" @@ -888,7 +836,7 @@ has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" -hawk@3.1.3, hawk@~3.1.3: +hawk@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" dependencies: @@ -897,15 +845,6 @@ hawk@3.1.3, hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" -hawk@~6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" - dependencies: - boom "4.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - sntp "2.x.x" - hipchat-notifier@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz#b6d249755437c191082367799d3ba9a0f23b231e" @@ -917,33 +856,29 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" -hoek@4.x.x: - version "4.2.0" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" - -http-errors@1.6.2, http-errors@~1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" +http-errors@1.6.3, http-errors@~1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" dependencies: - depd "1.1.1" + depd "~1.1.2" inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" -http-proxy-agent@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-1.0.0.tgz#cc1ce38e453bf984a0f7702d2dd59c73d081284a" +http-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" dependencies: - agent-base "2" - debug "2" - extend "3" + agent-base "4" + debug "3.1.0" http-proxy@^1.13.0: - version "1.16.2" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" + version "1.17.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" dependencies: - eventemitter3 "1.x.x" - requires-port "1.x.x" + eventemitter3 "^3.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" http-signature@~1.1.0: version "1.1.1" @@ -972,29 +907,36 @@ httpreq@>=0.4.22: version "0.4.24" resolved "https://registry.yarnpkg.com/httpreq/-/httpreq-0.4.24.tgz#4335ffd82cd969668a39465c929ac61d6393627f" -https-proxy-agent@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6" +https-proxy-agent@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" dependencies: - agent-base "2" - debug "2" - extend "3" + agent-base "^4.1.0" + debug "^3.1.0" iconv-lite@0.4.15: version "0.4.15" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" -iconv-lite@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" +iconv-lite@0.4.23, 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" + +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" indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" -inflection@~1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.10.0.tgz#5bffcb1197ad3e81050f8e17e21668087ee9eb2f" +inflection@~1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" inflection@~1.3.0: version "1.3.8" @@ -1007,7 +949,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -1015,11 +957,7 @@ ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" -ip@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.0.1.tgz#c7e356cdea225ae71b36d70f2e71a92ba4e42590" - -ip@^1.1.2, ip@^1.1.4: +ip@^1.1.2, ip@^1.1.4, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -1057,18 +995,27 @@ is-fullwidth-code-point@^1.0.0: 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@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" dependencies: is-extglob "^1.0.0" +is-my-ip-valid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" + is-my-json-valid@^2.12.4: - version "2.17.1" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz#3da98914a70a22f0a8563ef1511a246c6fc55471" + version "2.17.2" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz#6b2103a288e94ef3de5cf15d29dd85fc4b78d65c" dependencies: generate-function "^2.0.0" generate-object-property "^1.1.0" + is-my-ip-valid "^1.0.0" jsonpointer "^4.0.0" xtend "^4.0.0" @@ -1082,11 +1029,9 @@ is-number@^2.1.0: dependencies: kind-of "^3.0.2" -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-posix-bracket@^0.1.0: version "0.1.1" @@ -1154,20 +1099,10 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - dependencies: - jsonify "~0.0.0" - json-stringify-safe@5.0.x, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - jsonpointer@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" @@ -1202,7 +1137,7 @@ karma-requirejs@1.1.0: karma-sourcemap-loader@0.3.7: version "0.3.7" - resolved "https://registry.yarnpkg.com/karma-requirejs/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" + resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" dependencies: graceful-fs "^4.1.2" @@ -1244,11 +1179,9 @@ kind-of@^3.0.2: 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@^6.0.0: + 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" @@ -1273,25 +1206,25 @@ libqp@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/libqp/-/libqp-1.1.0.tgz#f5e6e06ad74b794fb5b5b66988bf728ef1dedbe8" -lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.4, lodash@^4.5.0: - version "4.17.5" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" +lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.5.0: + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" log4js@^2.3.9: - version "2.5.2" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-2.5.2.tgz#234e9c688bc4aab3999bd4b149c85851a4e62faa" + version "2.7.0" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-2.7.0.tgz#adbf21cc70927644e3cc86669a0225acbc230971" dependencies: - circular-json "^0.5.1" + circular-json "^0.5.4" date-format "^1.2.0" debug "^3.1.0" - semver "^5.3.0" - streamroller "^0.7.0" + semver "^5.5.0" + streamroller "0.7.0" optionalDependencies: amqplib "^0.5.2" axios "^0.15.3" hipchat-notifier "^1.1.0" loggly "^1.1.0" - mailgun-js "^0.7.0" + mailgun-js "^0.18.0" nodemailer "^2.5.0" redis "^2.7.1" slack-node "~0.2.0" @@ -1304,17 +1237,13 @@ loggly@^1.1.0: request "2.75.x" timespan "2.3.x" -lru-cache@4.1.x: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" +lru-cache@4.1.x, lru-cache@^4.1.2: + version "4.1.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" dependencies: pseudomap "^1.0.2" yallist "^2.1.2" -lru-cache@~2.6.5: - version "2.6.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.6.5.tgz#e56d6354148ede8d7707b58d143220fd08df0fd5" - mailcomposer@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/mailcomposer/-/mailcomposer-4.0.1.tgz#0e1c44b2a07cf740ee17dc149ba009f19cadfeb4" @@ -1322,20 +1251,24 @@ mailcomposer@4.0.1: buildmail "4.0.1" libmime "3.0.0" -mailgun-js@^0.7.0: - version "0.7.15" - resolved "https://registry.yarnpkg.com/mailgun-js/-/mailgun-js-0.7.15.tgz#ee366a20dac64c3c15c03d6c1b3e0ed795252abb" +mailgun-js@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/mailgun-js/-/mailgun-js-0.18.0.tgz#81fed0c66a411d3ff6c4354861ad21387afcfaaa" dependencies: - async "~2.1.2" - debug "~2.2.0" - form-data "~2.1.1" - inflection "~1.10.0" + async "~2.6.0" + debug "~3.1.0" + form-data "~2.3.0" + inflection "~1.12.0" is-stream "^1.1.0" path-proxy "~1.0.0" - proxy-agent "~2.0.0" - q "~1.4.0" + promisify-call "^2.0.2" + proxy-agent "~3.0.0" tsscmp "~1.0.0" +math-random@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -1358,21 +1291,21 @@ micromatch@^2.1.5: parse-glob "^3.0.4" regex-cache "^0.4.2" -mime-db@~1.30.0: - version "1.30.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" +mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" -mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.17, mime-types@~2.1.7: - version "2.1.17" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" +mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" dependencies: - mime-db "~1.30.0" + mime-db "~1.33.0" mime@^1.3.4: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" -minimatch@^3.0.0, minimatch@^3.0.2, 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: @@ -1390,47 +1323,63 @@ minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" -"mkdirp@>=0.5 0", mkdirp@^0.5.1: +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" + +mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" -ms@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" -nan@^2.3.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" +nan@^2.9.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + +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" negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" -netmask@~1.0.4: +netmask@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" -node-pre-gyp@^0.6.39: - version "0.6.39" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" +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" - hawk "3.1.3" 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" - request "2.81.0" rimraf "^2.6.1" semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" + tar "^4" node-uuid@~1.4.7: version "1.4.8" @@ -1498,6 +1447,17 @@ normalize-path@^2.0.0, normalize-path@^2.0.1: dependencies: remove-trailing-separator "^1.0.1" +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" @@ -1540,7 +1500,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@^1.3.0, once@^1.3.3: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -1573,35 +1533,34 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + 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" -pac-proxy-agent@1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-1.1.0.tgz#34a385dfdf61d2f0ecace08858c745d3e791fd4d" +pac-proxy-agent@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-2.0.2.tgz#90d9f6730ab0f4d2607dcdcd4d3d641aa26c3896" dependencies: - agent-base "2" - debug "2" - extend "3" - get-uri "2" - http-proxy-agent "1" - https-proxy-agent "1" - pac-resolver "~2.0.0" - raw-body "2" - socks-proxy-agent "2" - -pac-resolver@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-2.0.0.tgz#99b88d2f193fbdeefc1c9a529c1f3260ab5277cd" + agent-base "^4.2.0" + debug "^3.1.0" + get-uri "^2.0.0" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.1" + pac-resolver "^3.0.0" + raw-body "^2.2.0" + socks-proxy-agent "^3.0.0" + +pac-resolver@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-3.0.0.tgz#6aea30787db0a891704deb7800a722a7615a6f26" dependencies: - co "~3.0.6" - degenerator "~1.0.2" - ip "1.0.1" - netmask "~1.0.4" - thunkify "~2.1.1" + co "^4.6.0" + degenerator "^1.0.4" + ip "^1.1.5" + netmask "^1.0.6" + thunkify "^2.1.2" parse-glob@^3.0.4: version "3.0.4" @@ -1638,10 +1597,6 @@ path-proxy@~1.0.0: dependencies: inflection "~1.3.0" -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -1668,18 +1623,32 @@ process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" -proxy-agent@~2.0.0: +process-nextick-args@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-2.0.0.tgz#57eb5347aa805d74ec681cb25649dba39c933499" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +promisify-call@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/promisify-call/-/promisify-call-2.0.4.tgz#d48c2d45652ccccd52801ddecbd533a6d4bd5fba" dependencies: - agent-base "2" - debug "2" - extend "3" - http-proxy-agent "1" - https-proxy-agent "1" - lru-cache "~2.6.5" - pac-proxy-agent "1" - socks-proxy-agent "2" + with-callback "^1.0.2" + +proxy-agent@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-3.0.0.tgz#f6768e202889b2285d39906d3a94768416f8f713" + dependencies: + agent-base "^4.2.0" + debug "^3.1.0" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.1" + lru-cache "^4.1.2" + pac-proxy-agent "^2.0.1" + proxy-from-env "^1.0.0" + socks-proxy-agent "^3.0.0" + +proxy-from-env@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" pseudomap@^1.0.2: version "1.0.2" @@ -1689,51 +1658,44 @@ punycode@1.4.1, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -q@~1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" - qjobs@^1.1.4: - version "1.1.5" - resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" + version "1.2.0" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" -qs@6.5.1, qs@~6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" +qs@6.5.2, qs@~6.5.1: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" qs@~6.2.0: version "6.2.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - -randomatic@^1.1.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" +randomatic@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923" dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" range-parser@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" -raw-body@2, raw-body@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" +raw-body@2.3.3, raw-body@^2.2.0: + version "2.3.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" dependencies: bytes "3.0.0" - http-errors "1.6.2" - iconv-lite "0.4.19" + http-errors "1.6.3" + iconv-lite "0.4.23" unpipe "1.0.0" rc@^1.1.7: - version "1.2.5" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.5.tgz#275cd687f6e3b36cc756baa26dfee80a790301fd" + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" dependencies: - deep-extend "~0.4.0" + deep-extend "^0.6.0" ini "~1.3.0" minimist "^1.2.0" strip-json-comments "~2.0.1" @@ -1747,16 +1709,16 @@ readable-stream@1.1.x, "readable-stream@1.x >=1.1.9": isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@2, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.3.0: - version "2.3.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" +readable-stream@2, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.0: + 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 "~1.0.6" + process-nextick-args "~2.0.0" safe-buffer "~5.1.1" - string_decoder "~1.0.3" + string_decoder "~1.1.1" util-deprecate "~1.0.1" readable-stream@~2.0.5: @@ -1780,8 +1742,8 @@ readdirp@^2.0.0: set-immediate-shim "^1.0.1" redis-commands@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.1.tgz#81d826f45fa9c8b2011f4cd7a0fe597d241d442b" + version "1.3.5" + resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.5.tgz#4495889414f1e886261180b1442e7295602d83a2" redis-parser@^2.6.0: version "2.6.0" @@ -1843,36 +1805,9 @@ request@2.75.x: tough-cookie "~2.3.0" tunnel-agent "~0.4.1" -request@2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - request@^2.0.0, request@^2.74.0: - version "2.83.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" + version "2.87.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" dependencies: aws-sign2 "~0.7.0" aws4 "^1.6.0" @@ -1882,7 +1817,6 @@ request@^2.0.0, request@^2.74.0: forever-agent "~0.6.1" form-data "~2.3.1" har-validator "~5.0.3" - hawk "~6.0.2" http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" @@ -1892,7 +1826,6 @@ request@^2.0.0, request@^2.74.0: performance-now "^2.1.0" qs "~6.5.1" safe-buffer "^5.1.1" - stringstream "~0.0.5" tough-cookie "~2.3.3" tunnel-agent "^0.6.0" uuid "^3.1.0" @@ -1910,28 +1843,32 @@ requirejs@2.3.5: version "2.3.5" resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0" -requires-port@1.x.x: +requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" -rimraf@2, rimraf@^2.5.1, rimraf@^2.6.0, rimraf@^2.6.1: +rimraf@^2.6.0, 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" -safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" +safe-buffer@^5.0.1, 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" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" -semver@^5.3.0: +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + +semver@^5.3.0, semver@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" -semver@~5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" - set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -1940,9 +1877,9 @@ 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" -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" signal-exit@^3.0.0: version "3.0.2" @@ -1971,12 +1908,6 @@ sntp@1.x.x: dependencies: hoek "2.x.x" -sntp@2.x.x: - version "2.1.0" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" - dependencies: - hoek "4.x.x" - socket.io-adapter@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" @@ -2000,11 +1931,11 @@ socket.io-client@2.0.4: to-array "0.1.4" socket.io-parser@~3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.2.tgz#dbc2282151fc4faebbe40aeedc0772eba619f7f2" + version "3.1.3" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.3.tgz#ed2da5ee79f10955036e3da413bfd7f1e4d86c8e" dependencies: component-emitter "1.2.1" - debug "~2.6.4" + debug "~3.1.0" has-binary2 "~1.0.2" isarray "2.0.1" @@ -2018,13 +1949,12 @@ socket.io@2.0.4: socket.io-client "2.0.4" socket.io-parser "~3.1.1" -socks-proxy-agent@2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-2.1.1.tgz#86ebb07193258637870e13b7bd99f26c663df3d3" +socks-proxy-agent@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz#2eae7cf8e2a82d34565761539a7f9718c5617659" dependencies: - agent-base "2" - extend "3" - socks "~1.1.5" + agent-base "^4.1.0" + socks "^1.1.10" socks@1.1.9: version "1.1.9" @@ -2033,24 +1963,20 @@ socks@1.1.9: ip "^1.1.2" smart-buffer "^1.0.4" -socks@~1.1.5: +socks@^1.1.10: version "1.1.10" resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a" dependencies: ip "^1.1.4" smart-buffer "^1.0.13" -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.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - sshpk@^1.7.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" + version "1.14.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb" dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -2062,15 +1988,15 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" -"statuses@>= 1.3.1 < 2": - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" -streamroller@^0.7.0: +streamroller@0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" dependencies: @@ -2079,7 +2005,7 @@ streamroller@^0.7.0: mkdirp "^0.5.1" readable-stream "^2.3.0" -string-width@^1.0.1, string-width@^1.0.2: +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" dependencies: @@ -2087,19 +2013,26 @@ string-width@^1.0.1, string-width@^1.0.2: 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@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" -string_decoder@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" +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" -stringstream@~0.0.4, stringstream@~0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" +stringstream@~0.0.4: + version "0.0.6" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" @@ -2107,6 +2040,12 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: 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" @@ -2115,28 +2054,19 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -tar-pack@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" +tar@^4: + version "4.4.4" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" + 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" -thunkify@~2.1.1: +thunkify@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" @@ -2155,8 +2085,8 @@ to-array@0.1.4: resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" tough-cookie@~2.3.0, tough-cookie@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" dependencies: punycode "^1.4.1" @@ -2184,16 +2114,12 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-is@~1.6.15: - version "1.6.15" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" +type-is@~1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" dependencies: media-typer "0.3.0" - mime-types "~2.1.15" - -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + mime-types "~2.1.18" ultron@~1.1.0: version "1.1.1" @@ -2222,13 +2148,13 @@ utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" -uuid@^3.0.0, uuid@^3.1.0: +uuid@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" -uws@~0.14.4: - version "0.14.5" - resolved "https://registry.yarnpkg.com/uws/-/uws-0.14.5.tgz#67aaf33c46b2a587a5f6666d00f7691328f149dc" +uws@~9.14.0: + version "9.14.0" + resolved "https://registry.yarnpkg.com/uws/-/uws-9.14.0.tgz#fac8386befc33a7a3705cbd58dc47b430ca4dd95" verror@1.10.0: version "1.10.0" @@ -2247,16 +2173,20 @@ when@^3.7.7: resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" which@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + 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.2" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" dependencies: - string-width "^1.0.2" + string-width "^1.0.2 || 2" + +with-callback@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/with-callback/-/with-callback-1.0.2.tgz#a09629b9a920028d721404fb435bdcff5c91bc21" wordwrap@~0.0.2: version "0.0.3" @@ -2294,6 +2224,10 @@ yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" + yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index f3991ebadf..d70fe2a0e4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -1,7 +1,7 @@ { "name": "@bazel/typescript", "description": "Build TypeScript with Bazel", - "version": "0.13.0", + "version": "0.14.0", "keywords": [ "typescript", "bazel" From 9ae00f50f0feb790b599fb1544af2e938b19b7be Mon Sep 17 00:00:00 2001 From: alexeagle Date: Tue, 29 May 2018 12:55:03 -0700 Subject: [PATCH 0255/1134] Update README to include new dependency on rules_webtesting. Fixes #207 PiperOrigin-RevId: 198442738 --- .../bazelbuild/rules_typescript/README.md | 53 ++++++++++++------- 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 23e98c23a6..2448a5b2e6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -4,7 +4,7 @@ Circle CI | Bazel CI :---: | :---: [![CircleCI](https://circleci.com/gh/bazelbuild/rules_typescript.svg?style=svg)](https://circleci.com/gh/bazelbuild/rules_typescript) | [![Build status](https://badge.buildkite.com/7f98e137cd86baa5a4040a7e750bef87ef5fd293092fdaf878.svg)](https://buildkite.com/bazel/typescript-rules-typescript-postsubmit) -**WARNING: this is an early release with limited features. Breaking changes are likely. Not recommended for general use.** +**WARNING: this is beta-quality software. Breaking changes are likely. Not recommended for production use without expert support.** The TypeScript rules integrate the TypeScript compiler with Bazel. @@ -35,18 +35,29 @@ Next create a `WORKSPACE` file in your project root (or edit the existing one) containing: ```python -load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") - -git_repository( +# TypeScript rules depend on running Node.js. +http_archive( name = "build_bazel_rules_nodejs", - remote = "https://github.com/bazelbuild/rules_nodejs.git", - tag = "0.0.2", # check for the latest tag when you install + url = "https://github.com/bazelbuild/rules_nodejs/archive/0.8.0.zip", + strip_prefix = "rules_nodejs-0.8.0", + sha256 = "4e40dd49ae7668d245c3107645f2a138660fcfd975b9310b91eda13f0c973953", ) -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories") - -node_repositories(package_json = ["//:package.json"]) +# ts_web_test depends on the web testing rules to provision browsers. +http_archive( + name = "io_bazel_rules_webtesting", + url = "https://github.com/bazelbuild/rules_webtesting/archive/cfcaaf98553fee8e7063b5f5c11fd1b77e43d683.zip", + strip_prefix = "rules_webtesting-cfcaaf98553fee8e7063b5f5c11fd1b77e43d683", + sha256 = "636c7a9ac2ca13a04d982c2f9c874876ecc90a7b9ccfe4188156122b26ada7b3", +) +# ts_devserver depends on the Go rules. +# See https://github.com/bazelbuild/rules_go#setup for the latest version. +http_archive( + name = "io_bazel_rules_go", + url = "https://github.com/bazelbuild/rules_go/releases/download/0.8.1/rules_go-0.8.1.tar.gz", + sha256 = "90bb270d0a92ed5c83558b2797346917c46547f6f7103e648941ecdb6b9d0e72", +) # Include @bazel/typescript in package.json#devDependencies local_repository( @@ -54,22 +65,26 @@ local_repository( path = "node_modules/@bazel/typescript", ) -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") - -ts_setup_workspace() +load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories") -# ts_devserver needs the Go rules. -# See https://github.com/bazelbuild/rules_go#setup for the latest version. -http_archive( - name = "io_bazel_rules_go", - url = "https://github.com/bazelbuild/rules_go/releases/download/0.8.1/rules_go-0.8.1.tar.gz", - sha256 = "90bb270d0a92ed5c83558b2797346917c46547f6f7103e648941ecdb6b9d0e72", -) +# Point to the package.json file so Bazel can run the package manager for you. +node_repositories(package_json = ["//:package.json"]) load("@io_bazel_rules_go//go:def.bzl", "go_rules_dependencies", "go_register_toolchains") go_rules_dependencies() go_register_toolchains() + +load("@io_bazel_rules_webtesting//web:repositories.bzl", "browser_repositories", "web_test_repositories") + +web_test_repositories() +browser_repositories( + chromium = True, +) + +load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") + +ts_setup_workspace() ``` We recommend using the Yarn package manager, because it has a built-in command From 7bb315f8ac757bafbbe63659b0a1fb27e7c722d1 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Tue, 29 May 2018 14:03:21 -0700 Subject: [PATCH 0256/1134] Add static_files attribute to ts_web_test & ts_web_test_suite Closes #209 PiperOrigin-RevId: 198454014 --- .../examples/testing/BUILD.bazel | 6 ++- .../examples/testing/static_script.js | 2 + .../examples/testing/static_script.spec.ts | 20 +++++++++ .../examples/testing/tsconfig.json | 7 ++++ .../internal/karma/karma.conf.js | 42 +++++++++++++------ .../internal/karma/ts_web_test.bzl | 21 ++++++++-- 6 files changed, 81 insertions(+), 17 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.js create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.spec.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/testing/tsconfig.json diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel index d3cb5c3199..7eed621d32 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel @@ -7,8 +7,9 @@ ts_library( ts_library( name = "tests", - srcs = ["decrement.spec.ts"], + srcs = glob(["*.spec.ts"]), deps = [":lib"], + tsconfig = ":tsconfig.json", testonly = 1, ) @@ -17,6 +18,9 @@ ts_web_test_suite( deps = [ ":tests", ], + static_files = [ + "static_script.js", + ], browsers = [ "@io_bazel_rules_webtesting//browsers:chromium-local", "@io_bazel_rules_webtesting//browsers:firefox-local", diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.js b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.js new file mode 100644 index 0000000000..06fd64ee2d --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.js @@ -0,0 +1,2 @@ +// Some test data that is loaded dynamically from the test +window.someGlobal = "someGlobalValue"; diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.spec.ts new file mode 100644 index 0000000000..ebc6cbc4bd --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.spec.ts @@ -0,0 +1,20 @@ +const someGlobal = new Promise((resolve, reject) => { + const script = document.createElement('script'); + script.src = `base/build_bazel_rules_typescript/examples/testing/static_script.js`; + script.onerror = reject; + script.onload = () => { + document.body.removeChild(script); + resolve((window as any).someGlobal); + }; + document.body.appendChild(script); +}); + +describe('static script', () => { + it('should load', async () => { + expect(await someGlobal).toBe("someGlobalValue"); + }); +}); + +// at least one import or export is needed for this file to +// be compiled into an named-UMD module by typescript +export {}; diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/tsconfig.json new file mode 100644 index 0000000000..c4faf5a919 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "strict": true, + "lib": ["es2015.promise", "dom", "es5"], + } +} + diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js index 50bb217d0b..cc0cc2a289 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js @@ -26,37 +26,53 @@ if (!browsers.length) { browsers.push(process.env['DISPLAY'] ? 'Chrome': 'ChromeHeadless'); } -let files = [ - TMPL_bootstrap_files - TMPL_user_files -]; - // On Windows, runfiles will not be in the runfiles folder but inteaad // there is a MANIFEST file which maps the runfiles for the test // to their location on disk. Bazel provides a TEST_SRCDIR environment // variable which is set to the runfiles folder during test execution. // If a MANIFEST file is found, we remap the test files to their // location on disk using the MANIFEST file. +let manifest = null; const manifestFile = path.join(process.env.TEST_SRCDIR || '', 'MANIFEST'); if (fs.existsSync(manifestFile)) { // MANIFEST file contains the one runfile mapping per line seperated // a space. For example: // rxjs/operators.js /private/var/tmp/.../external/rxjs/operators.js // The file is parsed here into a map of for easy lookup - const manifest = {}; + manifest = {}; for (l of fs.readFileSync(manifestFile, 'utf8').split('\n')) { const m = l.split(' '); manifest[m[0]] = m[1]; } - files = files.map(f => { - const manifestFile = manifest[f]; - if (!manifestFile) { - throw new Error(`File not found in MANIFEST: ${f}`); - } - return manifestFile; - }); } +function resolveRunfiles(manifest, runfiles) { + if (manifest) { + runfiles = runfiles.map(f => { + const manifestFile = manifest[f]; + if (!manifestFile) { + throw new Error(`File not found in MANIFEST: ${f}`); + } + return manifestFile; + }); + } + return runfiles; +} + +const files = resolveRunfiles(manifest, [ + TMPL_bootstrap_files + TMPL_user_files +]); + +// static files are added to the files array but +// configured to not be included so karma-concat-js does +// not included them in the bundle +resolveRunfiles(manifest, [ + TMPL_static_files +]).forEach(f => { + files.push({ pattern: f, included: false }); +}); + var requireConfigContent = ` // A simplified version of Karma's requirejs.config.tpl.js for use with Karma under Bazel. // This does an explicit \`require\` on each test script in the files, otherwise nothing will be loaded. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl index 78be9f5ed4..dab4c97f51 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl @@ -69,6 +69,10 @@ def _ts_web_test_impl(ctx): expand_path_into_runfiles(ctx, f.short_path) for f in files ] + static_files = [ + expand_path_into_runfiles(ctx, f.short_path) + for f in ctx.files.static_files + ] # root-relative (runfiles) path to the directory containing karma.conf config_segments = len(conf.short_path.split("/")) @@ -80,6 +84,7 @@ def _ts_web_test_impl(ctx): "TMPL_runfiles_path": "/".join([".."] * config_segments), "TMPL_bootstrap_files": "\n".join([" '%s'," % e for e in bootstrap_entries]), "TMPL_user_files": "\n".join([" '%s'," % e for e in user_entries]), + "TMPL_static_files": "\n".join([" '%s'," % e for e in static_files]), "TMPL_workspace_name": ctx.workspace_name, }) @@ -87,6 +92,15 @@ def _ts_web_test_impl(ctx): if karma_executable_path.startswith('..'): karma_executable_path = "external" + karma_executable_path[2:] + karma_runfiles = [ + conf, + amd_names_shim, + ] + karma_runfiles += ctx.files.srcs + karma_runfiles += ctx.files.deps + karma_runfiles += ctx.files.bootstrap + karma_runfiles += ctx.files.static_files + ctx.actions.write( output = ctx.outputs.executable, is_executable = True, @@ -121,9 +135,7 @@ $KARMA ${{ARGV[@]}} return [DefaultInfo( files = depset([ctx.outputs.executable]), runfiles = ctx.runfiles( - files = ctx.files.srcs + ctx.files.deps + ctx.files.bootstrap + [ - conf, amd_names_shim - ], + files = karma_runfiles, transitive_files = files, # Propagate karma_bin and its runfiles collect_data = True, @@ -154,6 +166,9 @@ ts_web_test = rule( "data": attr.label_list( doc = "Runtime dependencies", cfg = "data"), + "static_files": attr.label_list( + doc = """Arbitrary files which to be served.""", + allow_files = True), "_karma": attr.label( default = Label("//internal/karma:karma_bin"), executable = True, From a879108fa00edd8e9f474a4d5f179b34aa61d370 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Wed, 30 May 2018 09:13:49 -0700 Subject: [PATCH 0257/1134] Use tagged rules_webtesting PiperOrigin-RevId: 198569729 --- .../github.com/bazelbuild/rules_typescript/README.md | 6 +++--- .../github.com/bazelbuild/rules_typescript/WORKSPACE | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 2448a5b2e6..bf3167b02e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -46,9 +46,9 @@ http_archive( # ts_web_test depends on the web testing rules to provision browsers. http_archive( name = "io_bazel_rules_webtesting", - url = "https://github.com/bazelbuild/rules_webtesting/archive/cfcaaf98553fee8e7063b5f5c11fd1b77e43d683.zip", - strip_prefix = "rules_webtesting-cfcaaf98553fee8e7063b5f5c11fd1b77e43d683", - sha256 = "636c7a9ac2ca13a04d982c2f9c874876ecc90a7b9ccfe4188156122b26ada7b3", + url = "https://github.com/bazelbuild/rules_webtesting/archive/v0.2.0.zip", + strip_prefix = "rules_webtesting-0.2.0", + sha256 = "cecc12f07e95740750a40d38e8b14b76fefa1551bef9332cb432d564d693723c", ) # ts_devserver depends on the Go rules. diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index cc8fc101ca..a1aa243e6a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -74,9 +74,9 @@ gazelle_dependencies() http_archive( name = "io_bazel_rules_webtesting", - url = "https://github.com/bazelbuild/rules_webtesting/archive/ca7b8062d9cf4ef2fde9193c7d37a0764c4262d7.zip", - strip_prefix = "rules_webtesting-ca7b8062d9cf4ef2fde9193c7d37a0764c4262d7", - sha256 = "28c73cf9d310fa6dba30e66bdb98071341c99c3feb8662f2d3883a632de97d72", + url = "https://github.com/bazelbuild/rules_webtesting/archive/v0.2.0.zip", + strip_prefix = "rules_webtesting-0.2.0", + sha256 = "cecc12f07e95740750a40d38e8b14b76fefa1551bef9332cb432d564d693723c", ) load("@io_bazel_rules_webtesting//web:repositories.bzl", "browser_repositories", "web_test_repositories") From 8012ef4f0cc3048cbfdb12f0e796b42418e17b40 Mon Sep 17 00:00:00 2001 From: Nicholas Merritt Date: Wed, 30 May 2018 09:54:10 -0700 Subject: [PATCH 0258/1134] -- Change 1 of 1 by Nicholas Merritt : Add note about module resolution using paths See https://github.com/bazelbuild/rules_typescript/issues/178 for context. Closes #181 PiperOrigin-RevId: 198575170 --- .../bazelbuild/rules_typescript/README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index bf3167b02e..6f5f8f2360 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -199,6 +199,19 @@ import {thing} from 'myworkspace/place'; will import from `/place.ts`. + +Since this is an extension to the vanillia TypeScript compiler, editors which use the TypeScript language services to provide code completion and inline type checking will not be able to resolve the modules. In the above example, adding +```json +"paths": { + "myworkspace/*": ["*"] +} +``` +to `tsconfig.json` will fix the imports for the common case of using absolute paths. +See https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mapping for more details on the paths syntax. + +Similarly, you can use path mapping to teach the editor how to resolve imports +from `ts_library` rules which set the `module_name` attribute. + ## Notes If you'd like a "watch mode", try https://github.com/bazelbuild/bazel-watcher From 0ecf47fc6689c7d3893f8214ea8197154648adef Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Wed, 30 May 2018 11:40:45 -0700 Subject: [PATCH 0259/1134] -- Change 1 of 1 by Greg Magolan : Support for sauce labs browsers in ts_web_test_suite Closes #208 PiperOrigin-RevId: 198593918 --- .../rules_typescript/.circleci/bazel.rc | 29 ++ .../rules_typescript/.circleci/config.yml | 17 +- .../examples/testing/BUILD.bazel | 15 + .../internal/karma/karma.conf.js | 121 ++++++-- .../internal/karma/package.json | 1 + .../rules_typescript/internal/karma/yarn.lock | 277 +++++++++++++++++- .../rules_typescript/tools/bazel.rc | 7 - 7 files changed, 414 insertions(+), 53 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/.circleci/bazel.rc diff --git a/third_party/github.com/bazelbuild/rules_typescript/.circleci/bazel.rc b/third_party/github.com/bazelbuild/rules_typescript/.circleci/bazel.rc new file mode 100644 index 0000000000..c99021ea30 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/.circleci/bazel.rc @@ -0,0 +1,29 @@ +# These options are enabled when running on CI +# We do this by copying this file to /etc/bazel.bazelrc at the start of the build. + +# Don't be spammy in the logs +build --noshow_progress + +# Don't run manual tests +test --test_tag_filters=-manual + +# Print all the options that apply to the build. +# This helps us diagnose which options override others +# (e.g. /etc/bazel.bazelrc vs. tools/bazel.rc) +build --announce_rc + +# Enable experimental CircleCI bazel remote cache proxy +build --experimental_remote_spawn_cache --remote_rest_cache=http://localhost:7643 + +# Prevent unstable environment variables from tainting cache keys +build --experimental_strict_action_env + +# Save downloaded repositories such as the go toolchain +# This directory can then be included in the CircleCI cache +# It should save time running the first build +build --experimental_repository_cache=/home/circleci/bazel_repository_cache + +# Workaround https://github.com/bazelbuild/bazel/issues/3645 +# Bazel doesn't calculate the memory ceiling correctly when running under Docker. +# Limit Bazel to consuming 3072M of RAM +build --local_resources=3072,2.0,1.0 \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml index 72db7d29e4..78da769854 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml @@ -38,14 +38,15 @@ jobs: - checkout: <<: *post_checkout - run: .circleci/setup_cache.sh + - run: sudo cp .circleci/bazel.rc /etc/bazel.bazelrc - *setup-bazel-remote-cache - restore_cache: key: *cache_key - run: bazel info release - run: bazel run @yarn//:yarn - - run: bazel build --config=ci ... - - run: bazel test --config=ci ... + - run: bazel build ... + - run: bazel test ... # This job tests the same stuff, but without the .bazelrc file. # It disables worker mode, for example. @@ -55,14 +56,15 @@ jobs: - checkout: <<: *post_checkout - run: .circleci/setup_cache.sh + - run: sudo cp .circleci/bazel.rc /etc/bazel.bazelrc - *setup-bazel-remote-cache - restore_cache: key: *cache_key - run: bazel --bazelrc=/dev/null info release - run: bazel --bazelrc=/dev/null run @yarn//:yarn - - run: bazel --bazelrc=/dev/null build --config=ci ... - - run: bazel --bazelrc=/dev/null test --config=ci ... + - run: bazel --bazelrc=/dev/null build ... + - run: bazel --bazelrc=/dev/null test ... - save_cache: key: *cache_key @@ -76,6 +78,7 @@ jobs: - checkout: <<: *post_checkout - run: .circleci/setup_cache.sh + - run: sudo cp .circleci/bazel.rc /etc/bazel.bazelrc - *setup-bazel-remote-cache - restore_cache: key: *cache_key @@ -90,12 +93,8 @@ jobs: - checkout: <<: *post_checkout - run: .circleci/setup_cache.sh + - run: sudo cp .circleci/bazel.rc /etc/bazel.bazelrc - *setup-bazel-remote-cache - # To get the skylint binary from the cache, we need to build with --config=ci - # Since we do the build in the preskylint step, we first need to explicitly - # run that with the --config bazel option. - - run: yarn preskylint --config=ci - # Now the execution of preskylint should get a local cache hit on the binary. - run: yarn skylint workflows: diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel index 7eed621d32..0dc175825b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel @@ -26,3 +26,18 @@ ts_web_test_suite( "@io_bazel_rules_webtesting//browsers:firefox-local", ], ) + +ts_web_test_suite( + name = "testing_sauce", + deps = [ + ":tests", + ], + browsers = [ + "@io_bazel_rules_webtesting//browsers/sauce:chrome-win10", + ], + tags = [ + "sauce", + # TODO(alexeagle): enable on CI once we have set the SAUCE env variables + "manual", + ], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js index cc0cc2a289..8096ab5155 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js @@ -5,22 +5,60 @@ const fs = require('fs'); const tmp = require('tmp'); const browsers = []; +let customLaunchers = null; + +// WEB_TEST_METADATA is configured in rules_webtesting based on value +// of the browsers attribute passed to ts_web_test_suite +// We setup the karma configuration based on the values in this object if (process.env['WEB_TEST_METADATA']) { const webTestMetadata = require(process.env['WEB_TEST_METADATA']); - const webTestNamedFiles = webTestMetadata['webTestFiles'][0]['namedFiles']; - if (webTestNamedFiles['CHROMIUM']) { - // When karma is configured to use Chrome it will look for a CHROME_BIN - // environment variable. - process.env.CHROME_BIN = path.join("external", webTestNamedFiles['CHROMIUM']); - browsers.push(process.env['DISPLAY'] ? 'Chrome': 'ChromeHeadless'); - } - if (webTestNamedFiles['FIREFOX']) { - // When karma is configured to use Firefox it will look for a FIREFOX_BIN - // environment variable. - process.env.FIREFOX_BIN = path.join("external", webTestNamedFiles['FIREFOX']); - browsers.push(process.env['DISPLAY'] ? 'Firefox': 'FirefoxHeadless'); + if (webTestMetadata['environment'] === 'sauce') { + // If a sauce labs browser is chosen for the test such as + // "@io_bazel_rules_webtesting//browsers/sauce:chrome-win10" + // than the 'environment' will equal 'sauce'. + // We expect that a SAUCE_USERNAME and SAUCE_ACCESS_KEY is available + // from the environment for this test to run + if (!process.env.SAUCE_USERNAME || !process.env.SAUCE_ACCESS_KEY) { + console.error('Make sure the SAUCE_USERNAME and SAUCE_ACCESS_KEY environment variables are set.'); + process.exit(1); + } + // 'capabilities' will specify the sauce labs configuration to use + const capabilities = webTestMetadata['capabilities']; + customLaunchers = { + 'sauce': { + base: 'SauceLabs', + browserName: capabilities['browserName'], + platform: capabilities['platform'], + version: capabilities['version'], + } + }; + browsers.push('sauce'); + } else if (webTestMetadata['environment'] === 'local') { + // When a local chrome or firefox browser is chosen such as + // "@io_bazel_rules_webtesting//browsers:chromium-local" or + // "@io_bazel_rules_webtesting//browsers:firefox-local" + // then the 'environment' will equal 'local' and + // 'webTestFiles' will contain the path to the binary to use + const webTestNamedFiles = webTestMetadata['webTestFiles'][0]['namedFiles']; + if (webTestNamedFiles['CHROMIUM']) { + // When karma is configured to use Chrome it will look for a CHROME_BIN + // environment variable. + process.env.CHROME_BIN = path.join('external', webTestNamedFiles['CHROMIUM']); + browsers.push(process.env['DISPLAY'] ? 'Chrome': 'ChromeHeadless'); + } + if (webTestNamedFiles['FIREFOX']) { + // When karma is configured to use Firefox it will look for a FIREFOX_BIN + // environment variable. + process.env.FIREFOX_BIN = path.join('external', webTestNamedFiles['FIREFOX']); + browsers.push(process.env['DISPLAY'] ? 'Firefox': 'FirefoxHeadless'); + } + } else { + console.warn(`Unknown WEB_TEST_METADATA environment '${webTestMetadata['environment']}'`); } } + +// Fallback to using the system local chrome if no valid browsers have been +// configured above if (!browsers.length) { console.warn('No browsers configured. Configuring Karma to use system Chrome.'); browsers.push(process.env['DISPLAY'] ? 'Chrome': 'ChromeHeadless'); @@ -94,18 +132,23 @@ fs.writeFileSync(requireConfigFile.name, requireConfigContent); files.push(requireConfigFile.name); module.exports = function(config) { - if (process.env['IBAZEL_NOTIFY_CHANGES'] === 'y') { - // Tell karma to only listen for ibazel messages on stdin rather than watch all the input files - // This is from fork alexeagle/karma in the ibazel branch: - // https://github.com/alexeagle/karma/blob/576d262af50b10e63485b86aee99c5358958c4dd/lib/server.js#L172 - config.set({watchMode: 'ibazel'}); - } - - config.set({ - plugins: ['karma-*', 'karma-concat-js', 'karma-sourcemap-loader', 'karma-chrome-launcher', 'karma-firefox-launcher'], + const configuration = { + // list of karma plugins + plugins: [ + 'karma-*', + 'karma-concat-js', + 'karma-sourcemap-loader', + 'karma-chrome-launcher', + 'karma-firefox-launcher', + 'karma-sauce-launcher', + ], + + // list of karma preprocessors preprocessors: { '**/*.js': ['sourcemap'] }, + + // list of test frameworks to use frameworks: ['jasmine', 'concat_js'], // test results reporter to use @@ -113,20 +156,16 @@ module.exports = function(config) { // available reporters: https://npmjs.org/browse/keyword/karma-reporter reporters: ['progress'], - // web server port port: 9876, - // enable / disable colors in the output (reporters and logs) colors: true, - // level of logging // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG logLevel: config.LOG_INFO, - // enable / disable watching file and executing tests whenever any file changes autoWatch: true, @@ -146,6 +185,36 @@ module.exports = function(config) { // base path that will be used to resolve all patterns (eg. files, exclude) basePath: 'TMPL_runfiles_path', + // list of files passed to karma; these are concatenated into a single + // file by karma-concat-js files, - }) + } + + if (process.env['IBAZEL_NOTIFY_CHANGES'] === 'y') { + // Tell karma to only listen for ibazel messages on stdin rather than watch all the input files + // This is from fork alexeagle/karma in the ibazel branch: + // https://github.com/alexeagle/karma/blob/576d262af50b10e63485b86aee99c5358958c4dd/lib/server.js#L172 + configuration.watchMode = 'ibazel'; + } + + // Extra configuration is needed for saucelabs + // See: https://github.com/karma-runner/karma-sauce-launcher + if (customLaunchers) { + // set the test name for sauce labs to use + // TEST_BINARY is set by Bazel and contains the name of the test + // target posfixed with the the browser name such as + // 'examples/testing/testing_sauce_chrome-win10' for the + // test target examples/testing:testing + configuration.sauceLabs = { + testName: process.env['TEST_BINARY'] || 'ts_web_test_suite' + }; + + // setup the custom launchers for saucelabs + configuration.customLaunchers = customLaunchers; + + // add the saucelabs reporter + configuration.reporters.push('saucelabs'); + } + + config.set(configuration); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json index f0e0542954..951acfe00d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json @@ -6,6 +6,7 @@ "karma-chrome-launcher": "2.2.0", "karma-firefox-launcher": "1.1.0", "karma-jasmine": "1.1.1", + "karma-sauce-launcher": "1.2.0", "karma-sourcemap-loader": "0.3.7", "karma-requirejs": "1.1.0", "requirejs": "2.3.5", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock index 96d1fd4d29..6d183960f7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock @@ -17,6 +17,10 @@ addressparser@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746" +adm-zip@~0.4.3: + version "0.4.11" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.11.tgz#2aa54c84c4b01a9d0fb89bb11982a51f13e3d62a" + after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" @@ -69,6 +73,31 @@ aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" +archiver-utils@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" + dependencies: + glob "^7.0.0" + graceful-fs "^4.1.0" + lazystream "^1.0.0" + lodash "^4.8.0" + normalize-path "^2.0.0" + readable-stream "^2.0.0" + +archiver@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-1.3.0.tgz#4f2194d6d8f99df3f531e6881f14f15d55faaf22" + dependencies: + archiver-utils "^1.3.0" + async "^2.0.0" + buffer-crc32 "^0.2.1" + glob "^7.0.0" + lodash "^4.8.0" + readable-stream "^2.0.0" + tar-stream "^1.5.0" + walkdir "^0.0.11" + zip-stream "^1.1.0" + 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" @@ -111,8 +140,8 @@ assert-plus@^0.2.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" ast-types@0.x.x: - version "0.11.4" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.4.tgz#76f930930e9571851ba282a9a0f6923f29f6be2f" + version "0.11.5" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.5.tgz#9890825d660c03c28339f315e9fa0a360e31ec28" async-each@^1.0.0: version "1.0.1" @@ -122,7 +151,13 @@ async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" -async@~2.6.0: +async@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.0.1.tgz#b709cc0280a9c36f09f4536be823c838a9049e25" + dependencies: + lodash "^4.8.0" + +async@^2.0.0, async@^2.1.2, async@~2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" dependencies: @@ -188,6 +223,13 @@ bitsyntax@~0.0.4: dependencies: buffer-more-ints "0.0.2" +bl@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + bl@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" @@ -223,6 +265,18 @@ boom@2.x.x: dependencies: hoek "2.x.x" +boom@4.x.x: + version "4.3.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" + dependencies: + hoek "4.x.x" + +boom@5.x.x: + version "5.2.0" + resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" + dependencies: + hoek "4.x.x" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -244,6 +298,25 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" +buffer-alloc-unsafe@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz#ffe1f67551dd055737de253337bfe853dfab1a6a" + +buffer-alloc@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.1.0.tgz#05514d33bf1656d3540c684f65b1202e90eca303" + dependencies: + buffer-alloc-unsafe "^0.1.0" + buffer-fill "^0.1.0" + +buffer-crc32@^0.2.1: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + +buffer-fill@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-0.1.1.tgz#76d825c4d6e50e06b7a31eb520c04d08cc235071" + buffer-more-ints@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/buffer-more-ints/-/buffer-more-ints-0.0.2.tgz#26b3885d10fa13db7fc01aae3aab870199e0124c" @@ -349,6 +422,15 @@ component-inherit@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" +compress-commons@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.2.2.tgz#524a9f10903f3a813389b0225d27c48bb751890f" + dependencies: + buffer-crc32 "^0.2.1" + crc32-stream "^2.0.0" + normalize-path "^2.0.0" + readable-stream "^2.0.0" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -382,12 +464,29 @@ core-util-is@1.0.2, 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" +crc32-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz#e3cdd3b4df3168dd74e3de3fbbcb7b297fe908f4" + dependencies: + crc "^3.4.4" + readable-stream "^2.0.0" + +crc@^3.4.4: + version "3.5.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.5.0.tgz#98b8ba7d489665ba3979f59b21381374101a1964" + cryptiles@2.x.x: version "2.0.5" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" dependencies: boom "2.x.x" +cryptiles@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" + dependencies: + boom "5.x.x" + custom-event@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" @@ -481,6 +580,12 @@ encodeurl@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" +end-of-stream@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + dependencies: + once "^1.4.0" + engine.io-client@~3.1.0: version "3.1.6" resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.6.tgz#5bdeb130f8b94a50ac5cbeb72583e7a4a063ddfd" @@ -704,6 +809,10 @@ fs-access@^1.0.0: dependencies: null-check "^1.0.0" +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -781,7 +890,7 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob@^7.0.5, glob@^7.1.1: +glob@^7.0.0, glob@^7.0.5, glob@^7.1.1: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -792,7 +901,7 @@ glob@^7.0.5, glob@^7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -graceful-fs@^4.1.2: +graceful-fs@^4.1.0, graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -845,6 +954,15 @@ hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" +hawk@~6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" + dependencies: + boom "4.x.x" + cryptiles "3.x.x" + hoek "4.x.x" + sntp "2.x.x" + hipchat-notifier@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz#b6d249755437c191082367799d3ba9a0f23b231e" @@ -856,6 +974,10 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" +hoek@4.x.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" + http-errors@1.6.3, http-errors@~1.6.3: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" @@ -1135,6 +1257,15 @@ karma-requirejs@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/karma-requirejs/-/karma-requirejs-1.1.0.tgz#fddae2cb87d7ebc16fb0222893564d7fee578798" +karma-sauce-launcher@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-1.2.0.tgz#6f2558ddef3cf56879fa27540c8ae9f8bfd16bca" + dependencies: + q "^1.5.0" + sauce-connect-launcher "^1.2.2" + saucelabs "^1.4.0" + wd "^1.4.0" + karma-sourcemap-loader@0.3.7: version "0.3.7" resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" @@ -1183,6 +1314,12 @@ kind-of@^6.0.0: version "6.0.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + dependencies: + readable-stream "^2.0.5" + levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -1206,7 +1343,11 @@ libqp@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/libqp/-/libqp-1.1.0.tgz#f5e6e06ad74b794fb5b5b66988bf728ef1dedbe8" -lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.5.0: +lodash@4.16.2: + version "4.16.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.2.tgz#3e626db827048a699281a8a125226326cfc0e652" + +lodash@^4.0.0, lodash@^4.15.0, lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.5.0, lodash@^4.8.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -1500,7 +1641,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@^1.3.0: +once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -1658,6 +1799,14 @@ punycode@1.4.1, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" +q@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" + +q@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + qjobs@^1.1.4: version "1.2.0" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" @@ -1709,7 +1858,7 @@ readable-stream@1.1.x, "readable-stream@1.x >=1.1.9": isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@2, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.0: +readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.3.0, readable-stream@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -1805,6 +1954,33 @@ request@2.75.x: tough-cookie "~2.3.0" tunnel-agent "~0.4.1" +request@2.85.0: + version "2.85.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.85.0.tgz#5a03615a47c61420b3eb99b7dba204f83603e1fa" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.1" + forever-agent "~0.6.1" + form-data "~2.3.1" + har-validator "~5.0.3" + hawk "~6.0.2" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + stringstream "~0.0.5" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + request@^2.0.0, request@^2.74.0: version "2.87.0" resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" @@ -1847,7 +2023,7 @@ requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" -rimraf@^2.6.0, rimraf@^2.6.1: +rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -1861,6 +2037,22 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" +sauce-connect-launcher@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.2.4.tgz#8d38f85242a9fbede1b2303b559f7e20c5609a1c" + dependencies: + adm-zip "~0.4.3" + async "^2.1.2" + https-proxy-agent "^2.2.1" + lodash "^4.16.6" + rimraf "^2.5.4" + +saucelabs@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" + dependencies: + https-proxy-agent "^2.2.1" + sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -1908,6 +2100,12 @@ sntp@1.x.x: dependencies: hoek "2.x.x" +sntp@2.x.x: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" + dependencies: + hoek "4.x.x" + socket.io-adapter@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" @@ -1974,6 +2172,10 @@ 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" +sprintf-js@^1.0.3: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c" + sshpk@^1.7.0: version "1.14.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb" @@ -2030,7 +2232,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringstream@~0.0.4: +stringstream@~0.0.4, stringstream@~0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" @@ -2054,6 +2256,18 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" +tar-stream@^1.5.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.1.tgz#f84ef1696269d6223ca48f6e1eeede3f7e81f395" + dependencies: + bl "^1.0.0" + buffer-alloc "^1.1.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.0" + xtend "^4.0.0" + tar@^4: version "4.4.4" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" @@ -2084,6 +2298,10 @@ to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" +to-buffer@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + tough-cookie@~2.3.0, tough-cookie@~2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" @@ -2125,6 +2343,13 @@ ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" +underscore.string@3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db" + dependencies: + sprintf-js "^1.0.3" + util-deprecate "^1.0.2" + underscore@~1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" @@ -2140,7 +2365,7 @@ useragent@^2.1.12: lru-cache "4.1.x" tmp "0.0.x" -util-deprecate@~1.0.1: +util-deprecate@^1.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" @@ -2156,6 +2381,10 @@ uws@~9.14.0: version "9.14.0" resolved "https://registry.yarnpkg.com/uws/-/uws-9.14.0.tgz#fac8386befc33a7a3705cbd58dc47b430ca4dd95" +vargs@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/vargs/-/vargs-0.1.0.tgz#6b6184da6520cc3204ce1b407cac26d92609ebff" + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -2168,6 +2397,23 @@ void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" +walkdir@^0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.0.11.tgz#a16d025eb931bd03b52f308caed0f40fcebe9532" + +wd@^1.4.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/wd/-/wd-1.7.0.tgz#8974c7290db173b1aef35f81ecca4ffb619d41f3" + dependencies: + archiver "1.3.0" + async "2.0.1" + lodash "4.16.2" + mkdirp "^0.5.1" + q "1.4.1" + request "2.85.0" + underscore.string "3.3.4" + vargs "0.1.0" + when@^3.7.7: version "3.7.8" resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" @@ -2231,3 +2477,12 @@ yallist@^3.0.0, yallist@^3.0.2: yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + +zip-stream@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.2.0.tgz#a8bc45f4c1b49699c6b90198baacaacdbcd4ba04" + dependencies: + archiver-utils "^1.3.0" + compress-commons "^1.2.0" + lodash "^4.8.0" + readable-stream "^2.0.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/tools/bazel.rc b/third_party/github.com/bazelbuild/rules_typescript/tools/bazel.rc index d608c8254c..8dc70335c9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/tools/bazel.rc +++ b/third_party/github.com/bazelbuild/rules_typescript/tools/bazel.rc @@ -3,10 +3,3 @@ test --test_output=errors # Enable debugging tests with --config=debug test:debug --test_arg=--node_options=--inspect-brk --test_output=streamed --test_strategy=exclusive --test_timeout=9999 --nocache_test_results - -# Enable experimental CircleCI bazel remote cache proxy -build:ci --experimental_remote_spawn_cache --remote_rest_cache=http://localhost:7643 - -# Workaround https://github.com/bazelbuild/bazel/issues/3645 -# Limit Bazel to consuming 3072M of RAM -build:ci --local_resources=3072,2.0,1.0 From 39851fb5aec15ef2b0f33d57f43054c09021ad18 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Wed, 30 May 2018 16:54:09 -0700 Subject: [PATCH 0260/1134] Update to latest rules_nodejs & cleanup Closes #204 PiperOrigin-RevId: 198642708 --- .../rules_typescript/.bazelci/presubmit.yml | 8 +- .../.ci/rules_typescript.json | 4 +- .../rules_typescript/.circleci/config.yml | 26 +++-- .../bazelbuild/rules_typescript/BUILD.bazel | 3 + .../bazelbuild/rules_typescript/README.md | 2 +- .../bazelbuild/rules_typescript/WORKSPACE | 15 +-- .../rules_typescript/examples/app/BUILD.bazel | 22 +++- .../examples/app/app_e2e_test.ts | 4 +- .../rules_typescript/examples/app/index.html | 2 +- .../examples/protocol_buffers/BUILD.bazel | 41 ++++++- .../examples/protocol_buffers/app.ts | 1 + .../examples/protocol_buffers/app_e2e_test.ts | 25 +++++ .../examples/protocol_buffers/index.html | 10 ++ .../internal/devserver/ts_devserver.bzl | 9 +- .../bazelbuild/rules_typescript/package.json | 9 +- .../rules_typescript/protractor.conf.js | 13 ++- .../bazelbuild/rules_typescript/yarn.lock | 100 +++++++++++++++++- 17 files changed, 256 insertions(+), 38 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app_e2e_test.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/index.html diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml index b5201c6874..9658062d33 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml @@ -2,7 +2,7 @@ platforms: ubuntu1404: run_targets: - - "@yarn//:yarn" + - "@nodejs//:yarn" build_targets: - "..." test_flags: @@ -12,7 +12,7 @@ platforms: - "..." ubuntu1604: run_targets: - - "@yarn//:yarn" + - "@nodejs//:yarn" build_targets: - "..." test_flags: @@ -22,7 +22,7 @@ platforms: - "..." macos: run_targets: - - "@yarn//:yarn" + - "@nodejs//:yarn" build_targets: - "..." test_flags: @@ -32,7 +32,7 @@ platforms: - "..." windows: run_targets: - - "@yarn//:yarn" + - "@nodejs//:yarn" # TODO(alexeagle): expand to all targets when rules_go is fixed build_targets: - "//examples:all" diff --git a/third_party/github.com/bazelbuild/rules_typescript/.ci/rules_typescript.json b/third_party/github.com/bazelbuild/rules_typescript/.ci/rules_typescript.json index 75b260e9bc..01a62edb01 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.ci/rules_typescript.json +++ b/third_party/github.com/bazelbuild/rules_typescript/.ci/rules_typescript.json @@ -5,7 +5,7 @@ {"node": "ubuntu_16.04-x86_64"} ], "parameters": { - "configure": ["$BAZEL run @yarn//:yarn"], + "configure": ["$BAZEL run @nodejs//:yarn"], "test_tag_filters": ["-browser:chromium-local"] } }, @@ -14,7 +14,7 @@ {"node": "darwin-x86_64"} ], "parameters": { - "configure": ["$BAZEL run @yarn//:yarn"], + "configure": ["$BAZEL run @nodejs//:yarn"], "test_tag_filters": ["-browser:chromium-local"] } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml index 78da769854..701c4a1f5d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml @@ -9,13 +9,22 @@ ## IMPORTANT # If you change the `docker_image` version, also change the `cache_key` suffix -var_1: &docker_image angular/ngcontainer:0.1.0 -var_2: &cache_key rules_typescript-{{ checksum "yarn.lock" }}-0.1.0 +var_1: &docker_image angular/ngcontainer:0.3.0 +var_2: &cache_key rules_typescript-{{ checksum "yarn.lock" }}-0.3.0 var_3: &setup-bazel-remote-cache run: name: Start up bazel remote cache proxy command: ~/bazel-remote-proxy -backend circleci:// background: true +# Move node binaries out of the way to enforce that Bazel uses +# only the hermetic ones it downloads +var_4: &hide_node_and_yarn_local_binaries + run: + name: Move node, npm, and yarn binaries + command: | + sudo mv /usr/local/bin/node /usr/local/bin/node_ + sudo mv /usr/local/bin/npm /usr/local/bin/npm_ + sudo mv /usr/local/bin/yarn /usr/local/bin/yarn_ # Settings common to each job anchor_1: &job_defaults @@ -40,11 +49,12 @@ jobs: - run: .circleci/setup_cache.sh - run: sudo cp .circleci/bazel.rc /etc/bazel.bazelrc - *setup-bazel-remote-cache + - *hide_node_and_yarn_local_binaries - restore_cache: key: *cache_key - run: bazel info release - - run: bazel run @yarn//:yarn + - run: bazel run @nodejs//:yarn - run: bazel build ... - run: bazel test ... @@ -58,11 +68,12 @@ jobs: - run: .circleci/setup_cache.sh - run: sudo cp .circleci/bazel.rc /etc/bazel.bazelrc - *setup-bazel-remote-cache + - *hide_node_and_yarn_local_binaries - restore_cache: key: *cache_key - run: bazel --bazelrc=/dev/null info release - - run: bazel --bazelrc=/dev/null run @yarn//:yarn + - run: bazel --bazelrc=/dev/null run @nodejs//:yarn - run: bazel --bazelrc=/dev/null build ... - run: bazel --bazelrc=/dev/null test ... @@ -80,12 +91,13 @@ jobs: - run: .circleci/setup_cache.sh - run: sudo cp .circleci/bazel.rc /etc/bazel.bazelrc - *setup-bazel-remote-cache + - *hide_node_and_yarn_local_binaries - restore_cache: key: *cache_key - - run: bazel run @yarn//:yarn + - run: bazel run @nodejs//:yarn # Don't occupy the bazel server, as this test wants to run Bazel itself - - run: bazel run @yarn//:yarn test --script_path=yarn_test.sh - - run: xvfb-run -a ./yarn_test.sh + - run: bazel run @nodejs//:yarn e2e --script_path=yarn_e2e.sh + - run: xvfb-run -a ./yarn_e2e.sh lint: <<: *job_defaults diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index e798d86cf6..461d901a42 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -35,6 +35,9 @@ filegroup( "node_modules/**/*.js", "node_modules/**/*.d.ts", "node_modules/**/*.json" + ] + [ + # Needed because http-server has a bin with no .js extension + "node_modules/http-server/**", ]), visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 6f5f8f2360..71b63d0dee 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -92,7 +92,7 @@ to verify the integrity of your `node_modules` directory. You can run the version Bazel has already installed: ```sh -$ bazel run @yarn//:yarn +$ bazel run @nodejs//:yarn ``` ## Usage diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index a1aa243e6a..c655fdd0a0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -16,9 +16,9 @@ workspace(name = "build_bazel_rules_typescript") http_archive( name = "build_bazel_rules_nodejs", - url = "https://github.com/bazelbuild/rules_nodejs/archive/0.8.0.zip", - strip_prefix = "rules_nodejs-0.8.0", - sha256 = "4e40dd49ae7668d245c3107645f2a138660fcfd975b9310b91eda13f0c973953", + url = "https://github.com/bazelbuild/rules_nodejs/archive/0.9.1.zip", + strip_prefix = "rules_nodejs-0.9.1", + sha256 = "6139762b62b37c1fd171d7f22aa39566cb7dc2916f0f801d505a9aaf118c117f", ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") @@ -32,11 +32,12 @@ yarn_install( # Install a hermetic version of node. # After this is run, these labels will be available: -# - The nodejs install: -# @build_bazel_rules_typescript_node//:bin/node -# @build_bazel_rules_typescript_node//:bin/npm +# - NodeJS: +# @nodejs//:node +# - NPM: +# @nodejs//:npm # - The yarn package manager: -# @yarn//:yarn +# @nodejs//:yarn node_repositories( package_json = ["//:package.json"], preserve_symlinks = True) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/app/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/app/BUILD.bazel index aaab7047bc..8ec42e1c92 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/app/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/app/BUILD.bazel @@ -10,9 +10,29 @@ ts_devserver( # We'll collect all the devmode JS sources from these TypeScript libraries deps = [":app"], # This is the path we'll request from the browser, see index.html - serving_path = "/bundle.js", + serving_path = "/bundle.min.js", # The devserver can serve our static files too static_files = ["index.html"], + port = 8080, +) + +# Test for production mode +load("@build_bazel_rules_nodejs//:defs.bzl", "rollup_bundle", "nodejs_binary") + +rollup_bundle( + name = "bundle", + deps = [":app"], + entry_point = "examples/app/app", +) + +nodejs_binary( + name = "prodserver", + args = ["./examples/app"], + data = [ + "index.html", + ":bundle", + ], + entry_point = "http-server/bin/http-server", ) ts_library( diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/app/app_e2e_test.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/app/app_e2e_test.ts index 1a51a459c3..1ce56fbcd2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/app/app_e2e_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/app/app_e2e_test.ts @@ -8,7 +8,7 @@ browser.waitForAngularEnabled(false); // compiling the application as well as starting the server. const timeoutMs = 90 * 1000; -describe('Devserver', () => { +describe('app', () => { beforeAll(() => { browser.get(''); // Don't run any specs until we see a
                      on the page. @@ -17,7 +17,7 @@ describe('Devserver', () => { timeoutMs); }, timeoutMs); - it('should display: Hello world!', (done) => { + it('should display: Hello, TypeScript', (done) => { const div = element(by.css('div.ts1')); div.getText().then(t => expect(t).toEqual(`Hello, TypeScript`)); done(); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/app/index.html b/third_party/github.com/bazelbuild/rules_typescript/examples/app/index.html index 91116b98a3..8af1e7f68b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/app/index.html +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/app/index.html @@ -16,6 +16,6 @@ For production, you should be able to use the same index.html file, but this JS resource would be served from a static file. --> - + diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel index 365a175c81..9d2aedbbf6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel @@ -52,13 +52,52 @@ ts_devserver( deps = [":app"], entry_module = "build_bazel_rules_typescript/examples/protocol_buffers/app", bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"], + port = 8080, ) # Test for production mode -load("@build_bazel_rules_nodejs//:defs.bzl", "rollup_bundle") +load("@build_bazel_rules_nodejs//:defs.bzl", "rollup_bundle", "nodejs_binary") rollup_bundle( name = "bundle", deps = [":app"], entry_point = "examples/protocol_buffers/app", + # TODO(alexeagle): we should be able to get this from //:protobufjs_bootstrap_scripts + # and automatically plumb it through to Rollup. + globals = { + "long": "Long", + "protobufjs/minimal": "protobuf", + }, +) + +# Needed because the prodserver only loads static files that appear under this +# package. +genrule( + name = "protobufjs", + srcs = [ + "@build_bazel_rules_typescript_protobufs_compiletime_deps//:node_modules/protobufjs/dist/minimal/protobuf.min.js", + "@build_bazel_rules_typescript_protobufs_compiletime_deps//:node_modules/long/dist/long.js", + ], + outs = [ + "protobuf.min.js", + "long.js" + ], + cmd = "outs=($(OUTS)); d=$$(dirname $${outs[0]}); for s in $(SRCS); do cp $$s $$d; done", +) + +nodejs_binary( + name = "prodserver", + args = ["./examples/protocol_buffers"], + data = [ + "index.html", + ":protobufjs", + ":bundle", + ], + entry_point = "http-server/bin/http-server", +) + +ts_library( + name = "e2e", + testonly = 1, + srcs = ["app_e2e_test.ts"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app.ts index f7628395ef..0cf23d9a02 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app.ts @@ -4,4 +4,5 @@ const serverResponse = `{"make": "Porsche"}`; const car = Car.create(JSON.parse(serverResponse)); const el: HTMLDivElement = document.createElement('div'); el.innerText = `Car from server: ${car.make}`; +el.className = 'ts1'; document.body.appendChild(el); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app_e2e_test.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app_e2e_test.ts new file mode 100644 index 0000000000..639392e105 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app_e2e_test.ts @@ -0,0 +1,25 @@ +import {browser, by, element, ExpectedConditions} from 'protractor'; + +// This test uses Protractor without Angular, so disable Angular features +browser.waitForAngularEnabled(false); + +// Since we don't have a protractor bazel rule yet, the test is brought up in +// parallel with building the service under test. So the timeout must include +// compiling the application as well as starting the server. +const timeoutMs = 90 * 1000; + +describe('protocol_buffers', () => { + beforeAll(() => { + browser.get(''); + // Don't run any specs until we see a
                      on the page. + browser.wait( + ExpectedConditions.presenceOf(element(by.css('div.ts1'))), + timeoutMs); + }, timeoutMs); + + it('should display: Car from server: Porsche', (done) => { + const div = element(by.css('div.ts1')); + div.getText().then(t => expect(t).toEqual(`Car from server: Porsche`)); + done(); + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/index.html b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/index.html new file mode 100644 index 0000000000..617b833ad6 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/index.html @@ -0,0 +1,10 @@ + + + protocol_buffers example + + + + + + + \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl index 61a363f5c2..9ab325e9b8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl @@ -84,11 +84,12 @@ def _ts_devserver(ctx): content = """#!/bin/sh RUNFILES="$PWD/.." {main} {serving_arg} \ - -base "$RUNFILES" \ + -base="$RUNFILES" \ -packages={packages} \ -manifest={workspace}/{manifest} \ -scripts_manifest={workspace}/{scripts_manifest} \ -entry_module={entry_module} \ + -port={port} \ "$@" """.format( main = ctx.executable._devserver.short_path, @@ -97,7 +98,8 @@ RUNFILES="$PWD/.." packages = ",".join(packages.to_list()), manifest = ctx.outputs.manifest.short_path, scripts_manifest = ctx.outputs.scripts_manifest.short_path, - entry_module = ctx.attr.entry_module)) + entry_module = ctx.attr.entry_module, + port = str(ctx.attr.port))) return [DefaultInfo( runfiles = ctx.runfiles( files = devserver_runfiles, @@ -140,6 +142,9 @@ ts_devserver = rule( doc = """Additional root paths to serve static_files from. Paths should include the workspace name such as [\"__main__/resources\"] """), + "port": attr.int( + doc = """The port that the devserver will listen on.""", + default = 5432), "_requirejs_script": attr.label(allow_files = True, single_file = True, default = Label("@build_bazel_rules_typescript_devserver_deps//:node_modules/requirejs/require.js")), "_devserver": attr.label( default = Label("//internal/devserver/main"), diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index d70fe2a0e4..1fcb8341a9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -20,6 +20,7 @@ "@types/tmp": "^0.0.33", "clang-format": "1.0.49", "concurrently": "^3.5.1", + "http-server": "^0.11.1", "protobufjs": "5.0.0", "protractor": "^5.2.0", "tsickle": "0.25.x", @@ -27,8 +28,12 @@ "typescript": "2.7.x" }, "scripts": { - "pretest": "webdriver-manager update && bazel build examples/app:all", - "test": "concurrently \"bazel run examples/app:devserver\" protractor --kill-others --success first", + "pree2e": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG && bazel build examples/app:e2e && bazel build examples/protocol_buffers:e2e", + "e2e": "yarn e2e-examples-app-devserver && yarn e2e-examples-app-prodserver && yarn e2e-examples-protobuf-devserver && yarn e2e-examples-protobuf-prodserver", + "e2e-examples-app-devserver": "concurrently \"bazel run examples/app:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", + "e2e-examples-app-prodserver": "concurrently \"bazel run examples/app:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", + "e2e-examples-protobuf-devserver": "concurrently \"bazel run examples/protocol_buffers:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first", + "e2e-examples-protobuf-prodserver": "concurrently \"bazel run examples/protocol_buffers:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first", "preskylint": "bazel build --noshow_progress @io_bazel//src/tools/skylark/java/com/google/devtools/skylark/skylint:Skylint", "skylint": "find . -type f -name \"*.bzl\" ! -path \"*/node_modules/*\" | xargs $(bazel info bazel-bin)/external/io_bazel/src/tools/skylark/java/com/google/devtools/skylark/skylint/Skylint", "skydoc": "bazel build //:docs && unzip -o -d docs/api bazel-bin/docs-skydoc.zip" diff --git a/third_party/github.com/bazelbuild/rules_typescript/protractor.conf.js b/third_party/github.com/bazelbuild/rules_typescript/protractor.conf.js index e33c81a03f..ae5555b546 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/protractor.conf.js +++ b/third_party/github.com/bazelbuild/rules_typescript/protractor.conf.js @@ -1,8 +1,13 @@ exports.config = { - specs: ['bazel-bin/examples/app/*_e2e_test.js'], - capabilities: - {browserName: 'chrome', chromeOptions: {args: ['--no-sandbox']}}, + suites: { + app: 'bazel-bin/examples/app/*_e2e_test.js', + protocol_buffers: 'bazel-bin/examples/protocol_buffers/*_e2e_test.js', + }, + capabilities: { + browserName: 'chrome', + chromeOptions: {args: ['--no-sandbox']} + }, directConnect: true, - baseUrl: 'http://localhost:5432/', + baseUrl: 'http://localhost:8080/', framework: 'jasmine', }; diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index 1720f222b3..9c52425b88 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -216,6 +216,10 @@ 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" +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + colour@~0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" @@ -255,6 +259,10 @@ core-util-is@1.0.2, 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" +corser@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" + cryptiles@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" @@ -271,12 +279,18 @@ date-fns@^1.23.0: version "1.29.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" -debug@2: +debug@2, debug@^2.2.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" +debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -303,6 +317,15 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" +ecstatic@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ecstatic/-/ecstatic-3.2.0.tgz#1b1aee1ca7c6b99cfb5cf6c9b26b481b90c4409f" + dependencies: + he "^1.1.1" + mime "^1.4.1" + minimist "^1.1.0" + url-join "^2.0.2" + es6-promise@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" @@ -311,6 +334,10 @@ escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +eventemitter3@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -331,6 +358,12 @@ fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" +follow-redirects@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.4.1.tgz#d8120f4518190f55aac65bb6fc7b85fcd666d6aa" + dependencies: + debug "^3.1.0" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -421,10 +454,35 @@ hawk@~6.0.2: hoek "4.x.x" sntp "2.x.x" +he@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + hoek@4.x.x: version "4.2.0" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" +http-proxy@^1.8.1: + version "1.17.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" + dependencies: + eventemitter3 "^3.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-server@^0.11.1: + version "0.11.1" + resolved "https://registry.yarnpkg.com/http-server/-/http-server-0.11.1.tgz#2302a56a6ffef7f9abea0147d838a5e9b6b6a79b" + dependencies: + colors "1.0.3" + corser "~2.0.0" + ecstatic "^3.0.0" + http-proxy "^1.8.1" + opener "~1.4.0" + optimist "0.6.x" + portfinder "^1.0.13" + union "~0.4.3" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -579,6 +637,10 @@ mime-types@^2.1.12, mime-types@~2.1.17: dependencies: mime-db "~1.30.0" +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + "minimatch@2 || 3", minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -589,11 +651,11 @@ minimist@0.0.8, minimist@~0.0.1: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.2.0: +minimist@^1.1.0, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mkdirp@^0.5.1: +mkdirp@0.5.x, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -621,7 +683,11 @@ once@^1.3.0: dependencies: wrappy "1" -optimist@~0.6.0: +opener@~1.4.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" + +optimist@0.6.x, optimist@~0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" dependencies: @@ -680,6 +746,14 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" +portfinder@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" @@ -721,6 +795,10 @@ q@1.4.1, q@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" +qs@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz#e9e85adbe75da0bbe4c8e0476a086290f863b404" + qs@~6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" @@ -763,6 +841,10 @@ request@^2.78.0: tunnel-agent "^0.6.0" uuid "^3.1.0" +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + resolve@^1.1.6: version "1.3.3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" @@ -957,6 +1039,16 @@ ultron@1.0.x: version "1.0.2" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" +union@~0.4.3: + version "0.4.6" + resolved "https://registry.yarnpkg.com/union/-/union-0.4.6.tgz#198fbdaeba254e788b0efcb630bc11f24a2959e0" + dependencies: + qs "~2.3.3" + +url-join@^2.0.2: + version "2.0.5" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728" + util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" From b3581bd82679fab2e7ea9ce38b7f80bae2d734d5 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Wed, 30 May 2018 17:55:01 -0700 Subject: [PATCH 0261/1134] Update docs for release --- .../docs/api/devserver/ts_devserver.html | 9 ++++++++- .../rules_typescript/docs/api/karma/ts_web_test.html | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html index c993a7fdce..2347a301a0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html @@ -141,7 +141,7 @@

                      Attributes

                      ts_devserver

                      -
                      ts_devserver(name, deps, data, additional_root_paths, bootstrap, entry_module, scripts, serving_path, static_files)
                      +
                      ts_devserver(name, deps, data, additional_root_paths, bootstrap, entry_module, port, scripts, serving_path, static_files)

                      ts_devserver is a simple development server intended for a quick "getting started" experience.

                      Additional documentation at https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel

                      @@ -198,6 +198,13 @@

                      Attributes

                      The entrymodule should be the AMD module name of the entry module such as `"_main/src/index"ts_devserver concats the following snippet after the bundle to load the application:require(["entry_module"]);`

                      + + port + +

                      Integer; Optional; Default is 5432

                      +

                      The port that the devserver will listen on.

                      + + scripts diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html index 86352025c6..b08036ad97 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html @@ -280,7 +280,7 @@

                      Attributes

                      ts_web_test

                      -
                      ts_web_test(name, deps, data, srcs, bootstrap)
                      +
                      ts_web_test(name, deps, data, srcs, bootstrap, static_files)

                      Runs unit tests in a browser.

                      When executed under bazel test, this uses a headless browser for speed. @@ -343,6 +343,13 @@

                      Attributes

                      or UMD bundles for third-party libraries.

                      + + static_files + +

                      List of labels; Optional; Default is []

                      +

                      Arbitrary files which to be served.

                      + + From fb84f8aab55d7ddb474b89ee05dc425522926378 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Wed, 30 May 2018 17:55:41 -0700 Subject: [PATCH 0262/1134] rel: 0.15.0 --- third_party/github.com/bazelbuild/rules_typescript/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 1fcb8341a9..ffe5684e30 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -1,7 +1,7 @@ { "name": "@bazel/typescript", "description": "Build TypeScript with Bazel", - "version": "0.14.0", + "version": "0.15.0", "keywords": [ "typescript", "bazel" From 9f810f488ffb02693b2a5ec6c2a0962284c704f5 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Sat, 2 Jun 2018 07:51:48 -0700 Subject: [PATCH 0263/1134] internal change PiperOrigin-RevId: 198990637 --- .../rules_typescript/internal/devserver/devserver.go | 2 +- .../rules_typescript/internal/devserver/devserver_test.go | 8 ++++++-- .../github.com/bazelbuild/rules_typescript/package.json | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver.go b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver.go index ee649b4ee0..417d7a76ee 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver.go +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver.go @@ -123,7 +123,7 @@ func CreateFileHandler(servingPath, manifest string, pkgs []string, base string) defaultIndex := filepath.Join(base, pkg, "index.html") if _, err := os.Stat(defaultIndex); err == nil { http.ServeFile(w, r, defaultIndex) - break + return } } content := bytes.NewReader(defaultPage) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver_test.go b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver_test.go index 0ce23c0155..2fc77c1c32 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/devserver_test.go @@ -61,6 +61,7 @@ func TestDevserverFileHandling(t *testing.T) { handler := CreateFileHandler("/app.js", "manifest.MF", []string{"pkg1", "pkg2"}, filepath.Join(os.Getenv("TEST_TMPDIR"), "TestIndexServing")) + defaultPageContent := ` + + + + + + + + + \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel index 1cb2172ba1..89a2cbb48b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel @@ -1,4 +1,6 @@ load("@build_bazel_rules_nodejs//:defs.bzl", "http_server", "rollup_bundle") +load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") load( "//:defs.bzl", "ts_devserver", @@ -60,7 +62,7 @@ ts_devserver( bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"], entry_module = "build_bazel_rules_typescript/examples/protocol_buffers/app", port = 8080, - deps = [":app"], + deps = [":bundle"], ) # Test for production mode @@ -111,3 +113,26 @@ ts_library( "@npm//protractor", ], ) + +proto_library( + name = "rules_typescript_proto", + srcs = [ + "car.proto", + "tire.proto", + ], + visibility = ["//visibility:public"], +) + +go_proto_library( + name = "rules_typescript_go_proto", + importpath = "github.com/bazelbuild/rules_typescript/examples/protocol_buffers", + proto = ":rules_typescript_proto", + visibility = ["//visibility:public"], +) + +go_library( + name = "go_default_library", + embed = [":rules_typescript_go_proto"], + importpath = "github.com/bazelbuild/rules_typescript/examples/protocol_buffers", + visibility = ["//visibility:public"], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/index.html b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/index.html index 617b833ad6..6f8690ee3e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/index.html +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/index.html @@ -1,10 +1,10 @@ - + protocol_buffers example - - - - - - + + + + + + \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index 1f54ddec1b..5e1e5b0f3b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -56,8 +56,11 @@ def rules_typescript_dependencies(): _maybe( http_archive, name = "io_bazel_rules_go", - url = "https://github.com/bazelbuild/rules_go/releases/download/0.16.3/rules_go-0.16.3.tar.gz", - # sha256 = "ee5fe78fe417c685ecb77a0a725dc9f6040ae5beb44a0ba4ddb55453aad23a8a", + # We need https://github.com/bazelbuild/rules_go/commit/109c520465fcb418f2c4be967f3744d959ad66d3 which + # is not part of any 0.16.x release yet. This commit provides runfile resolve support for Windows. + urls = ["https://github.com/bazelbuild/rules_go/archive/12a52e9845a5b06a28ffda06d7f2b07ff2320b97.zip"], + strip_prefix = "rules_go-12a52e9845a5b06a28ffda06d7f2b07ff2320b97", + sha256 = "5c0a059afe51c744c90ae2b33ac70b9b4f4c514715737e2ec0b5fd297400c10d", ) # go_repository is defined in bazel_gazelle From c04a372b833bca99fd895604485021e58ec066b8 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Fri, 18 Jan 2019 07:27:19 -0800 Subject: [PATCH 0484/1134] Introduce TscPlugin methods to implement ngtsc as a tsc_wrapped plugin. PiperOrigin-RevId: 229925525 --- .../internal/tsc_wrapped/index.ts | 1 + .../internal/tsc_wrapped/plugin_api.ts | 52 +++++++++++++++++-- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts index f2959d6fa2..725c2a9d61 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/index.ts @@ -4,3 +4,4 @@ export * from './compiler_host'; export * from './diagnostics'; export * from './worker'; export * from './manifest'; +export * from './plugin_api'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts index b28f64f348..f778c0f842 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts @@ -23,15 +23,59 @@ import * as ts from 'typescript'; +export interface PluginCompilerHost extends ts.CompilerHost { + /** + * Absolute file paths which should be included in the initial ts.Program. + * In vanilla tsc, these are the ts.ParsedCommandLine#fileNames + */ + inputFiles: ReadonlyArray; + + /** + * A helper the transformer can use when generating new import statements + * @param fileName the absolute path to the file as referenced in the ts.Program + * @return a string suitable for use in an import statement + */ + fileNameToModuleId: (fileName: string) => string; +} + /** * This API is simpler than LanguageService plugins. * It's used for plugins that only target the command-line and never run in an * editor context. - * IMPORTANT: plugins must propagate the diagnostics from the original program. - * Execution of plugins is not additive; only the result from the top-most - * wrapped Program is used. + * + * One instance of the TscPlugin will be created for each execution of the compiler, so it is + * safe for these plugins to hold state that's local to one execution. + * + * The methods on the plugin will be called in the order shown below: + * - wrapHost to intercept CompilerHost methods and contribute inputFiles to the program + * - wrap to intercept diagnostics requests on the program + * - createTransformers once it's time to emit */ -export interface TscPlugin { wrap(p: ts.Program, config?: {}): ts.Program; } +export interface TscPlugin { + /** + * Allow plugins to add additional files to the program. + * For example, Angular creates ngsummary and ngfactory files. + * These files must be in the program since there may be incoming references to the symbols. + * @param inputFiles the files that were part of the original program + * @param compilerHost: the original host (likely a ts.CompilerHost) that we can delegate to + */ + wrapHost?(inputFiles: string[], compilerHost: PluginCompilerHost): PluginCompilerHost; + + /** + * Same API as ts.LanguageService: allow the plugin to contribute additional + * diagnostics + * IMPORTANT: plugins must propagate the diagnostics from the original program. + * Execution of plugins is not additive; only the result from the top-most + * wrapped Program is used. + */ + wrap(p: ts.Program, config?: {}, host?: ts.CompilerHost): ts.Program; + + /** + * Allow plugins to contribute additional TypeScript CustomTransformers. + * These can modify the TS AST, JS AST, or .d.ts output AST. + */ + createTransformers?(host: PluginCompilerHost): ts.CustomTransformers; +} // TODO(alexeagle): this should be unioned with tsserverlibrary.PluginModule export type Plugin = TscPlugin; From 2f82a006256fb2ecece28b325cbbcbd357d3a8bf Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Fri, 18 Jan 2019 19:19:36 +0100 Subject: [PATCH 0485/1134] build: fix missing build files --- .../devserver/concatjs/BUILD.bazel | 14 ++++++++++++++ .../devserver/runfiles/BUILD.bazel | 17 +++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/BUILD.bazel new file mode 100644 index 0000000000..4606773bef --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/BUILD.bazel @@ -0,0 +1,14 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "go_default_library", + srcs = ["concatjs.go"], + importpath = "github.com/bazelbuild/rules_typescript/devserver/concatjs", + visibility = ["//visibility:public"], +) + +go_test( + name = "go_default_test", + srcs = ["concatjs_test.go"], + embed = [":go_default_library"], +) \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/BUILD.bazel new file mode 100644 index 0000000000..2e0b9b7ab3 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/BUILD.bazel @@ -0,0 +1,17 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +# Gazelle by default tries to map the import for the Bazel runfile go library to a repository with +# an auto-generated name. This does not work for us because the rules_go repository name is different. +# This gazelle directive ensures that Gazelle resolves the import to the proper Bazel label. +# Read more here: https://github.com/bazelbuild/bazel-gazelle#directives +# gazelle:resolve go github.com/bazelbuild/rules_go/go/tools/bazel @io_bazel_rules_go//go/tools/bazel:go_default_library + +go_library( + name = "go_default_library", + srcs = ["runfiles.go"], + deps = [ + "@io_bazel_rules_go//go/tools/bazel:go_default_library", + ], + importpath = "github.com/bazelbuild/rules_typescript/devserver/runfiles", + visibility = ["//visibility:public"], +) From 84e9a83481566c8887b916ceecacd2f51a932c0d Mon Sep 17 00:00:00 2001 From: Keen Yee Liau Date: Thu, 24 Jan 2019 14:31:15 -0800 Subject: [PATCH 0486/1134] karma: Use upstream v4 Upgraded Karma version to latest, and implemented custom injector for iblaze in @bazel/karma module. Closes #387 PiperOrigin-RevId: 230791110 --- .../internal/e2e/package_karma/README.md | 4 +-- .../internal/karma/BUILD.bazel | 6 ++-- .../rules_typescript/internal/karma/index.ts | 30 +++++++++++++++++-- .../internal/karma/karma.conf.js | 10 +------ .../internal/karma/package.json | 8 ++--- 5 files changed, 38 insertions(+), 20 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/README.md b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/README.md index 2dfa4e23f0..a9c025493b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/README.md @@ -1,5 +1,5 @@ # Testing karma dependency A karma 3.0.0 dependency is here to verify that a user's karma dependency doesn't interfere with -the ts_web_test_suite rule which depends on a transitive dependency in @bazel/karma on a fork -of karma. +the ts_web_test_suite rule which depends on a transitive dependency in @bazel/karma on a different +version of karma. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel index 7852325eaf..b2a22bce4d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel @@ -13,7 +13,7 @@ exports_files([ ]) ts_library( - name = "karma_concat_js", + name = "bazel_karma", srcs = glob(["*.ts"]), module_name = "@bazel/karma", tsconfig = "//internal/karma:tsconfig.json", @@ -26,7 +26,7 @@ ts_library( nodejs_binary( name = "karma_bin", data = [ - ":karma_concat_js", + ":bazel_karma", "@npm//jasmine-core", "@npm//karma", "@npm//karma-chrome-launcher", @@ -65,7 +65,7 @@ npm_package( ], deps = [ ":check_version_copy", - ":karma_concat_js", + ":bazel_karma", ":license_copy", ], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/index.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/index.ts index 74c4750042..ad02ec93c4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/index.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/index.ts @@ -6,6 +6,7 @@ import * as fs from 'fs'; import * as path from 'path'; import * as process from 'process'; import * as tmp from 'tmp'; +import {createInterface} from 'readline'; /// /** @@ -32,7 +33,8 @@ function initConcatJs(logger, emitter, basePath) { path: '/concatjs_bundle.js', contentPath: tmpFile.name, isUrl: false, - content: '' + content: '', + encodings: {}, } as any; const included = []; @@ -70,6 +72,30 @@ function initConcatJs(logger, emitter, basePath) { (initConcatJs as any).$inject = ['logger', 'emitter', 'config.basePath']; +function watcher(fileList: {refresh: () => void}) { + // ibazel will write this string after a successful build + // We don't want to re-trigger tests if the compilation fails, so + // we should only listen for this event. + const IBAZEL_NOTIFY_BUILD_SUCCESS = 'IBAZEL_BUILD_COMPLETED SUCCESS'; + // ibazel communicates with us via stdin + const rl = createInterface({input: process.stdin, terminal: false}); + rl.on('line', (chunk: string) => { + if (chunk === IBAZEL_NOTIFY_BUILD_SUCCESS) { + fileList.refresh(); + } + }); + rl.on('close', () => { + // Give ibazel 5s to kill our process, otherwise do it ourselves + setTimeout(() => { + console.error('ibazel failed to stop karma after 5s; probably a bug'); + process.exit(1); + }, 5000); + }); +} + +(watcher as any).$inject = ['fileList']; + module.exports = { - 'framework:concat_js': ['factory', initConcatJs] + 'framework:concat_js': ['factory', initConcatJs], + 'watcher': ['value', watcher], }; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js index 1ef2a492da..ff066d9f3d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js @@ -151,7 +151,7 @@ try // enable / disable watching file and executing tests whenever // any file changes - overrideConfigValue(conf, 'autoWatch', true); + overrideConfigValue(conf, 'autoWatch', process.env['IBAZEL_NOTIFY_CHANGES'] === 'y'); // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits @@ -165,14 +165,6 @@ try // base path that will be used to resolve all patterns // (eg. files, exclude) overrideConfigValue(conf, 'basePath', 'TMPL_runfiles_path'); - - if (process.env['IBAZEL_NOTIFY_CHANGES'] === 'y') { - // Tell karma to only listen for ibazel messages on stdin rather than - // watch all the input files This is from fork alexeagle/karma in the - // ibazel branch: - // https://github.com/alexeagle/karma/blob/576d262af50b10e63485b86aee99c5358958c4dd/lib/server.js#L172 - overrideConfigValue(conf, 'watchMode', 'ibazel'); - } } /** diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json index 9ffa9c02e8..be1c6eb4b0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json @@ -5,8 +5,8 @@ "license": "Apache-2.0", "version": "0.0.0-PLACEHOLDER", "keywords": [ - "karma", - "bazel" + "karma", + "bazel" ], "main": "./index.js", "typings": "./index.d.ts", @@ -15,13 +15,13 @@ }, "dependencies": { "jasmine-core": "2.8.0", - "karma": "alexeagle/karma#fa1a84ac881485b5657cb669e9b4e5da77b79f0a", + "karma": "^4.0.0", "karma-chrome-launcher": "2.2.0", "karma-firefox-launcher": "1.1.0", "karma-jasmine": "1.1.1", + "karma-requirejs": "1.1.0", "karma-sauce-launcher": "2.0.2", "karma-sourcemap-loader": "0.3.7", - "karma-requirejs": "1.1.0", "requirejs": "2.3.5", "semver": "5.6.0", "tmp": "0.0.33" From 4e13855a5f225dbe79300f52bb4f686766d8dc7c Mon Sep 17 00:00:00 2001 From: lucassloan Date: Fri, 25 Jan 2019 11:23:21 -0800 Subject: [PATCH 0487/1134] Support generated sources in query-based taze. 1. Don't report generated sources as missing sources to be removed. 2. Correctly report that ts_libraries with generated sources provide the generated sources as exports. PiperOrigin-RevId: 230936754 --- .../ts_auto_deps/analyze/analyze.go | 156 +++++++++--- .../ts_auto_deps/analyze/analyze_test.go | 224 +++++++++++++++++- .../ts_auto_deps/analyze/loader.go | 65 ++++- 3 files changed, 392 insertions(+), 53 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go index 04a8f57f17..851509a1b1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go @@ -44,19 +44,29 @@ func debugf(format string, v ...interface{}) { // TargetLoader provides methods for loading targets from BUILD files. type TargetLoader interface { - // LoadLabels loads targets from BUILD files associated with labels. - // It returns a mapping from labels to targets or an error, if any + // LoadTargets loads targets from BUILD files associated with labels. A target + // is a rule, source file, generated file, package group or environment group. + // It returns a mapping from labels to targets or an error, if any occurred. + // + // A label must be the absolute label associated with a target. For example, + // '//foo/bar:baz' is acceptable whereas 'bar:baz' or '//foo/bar' will result + // in undefined behavior. TODO(lucassloan): make this an error + // + // Only returns targets visible to currentPkg. If currentPkg is an empty + // string returns all targets regardless of visibility. + LoadTargets(currentPkg string, labels []string) (map[string]*appb.Target, error) + // LoadRules loads rules from BUILD files associated with labels. + // It returns a mapping from labels to rules or an error, if any // occurred. // - // A label must be the absolute label associated with a target. For + // A label must be the absolute label associated with a rule. For // example, '//foo/bar:baz' is acceptable whereas 'bar:baz' or '//foo/bar' - // will result in undefined behavior. If no target is found associated - // with a provided label, the label should be excluded from the returned - // mapping but an error should not be returned. + // will result in undefined behavior. + // TODO(lucassloan): make this an error. // // Only returns rules visible to currentPkg. If currentPkg is an empty string - // returns all targets regardless of visibility. - LoadLabels(currentPkg string, labels []string) (map[string]*appb.Rule, error) + // returns all rules regardless of visibility. + LoadRules(currentPkg string, labels []string) (map[string]*appb.Rule, error) // LoadImportPaths loads targets from BUILD files associated with import // paths relative to a root directory. It returns a mapping from import // paths to targets or an error, if any occurred. @@ -102,11 +112,11 @@ func (a *Analyzer) Analyze(ctx context.Context, dir string, labels []string) ([] if err != nil { return nil, err } - targets, err := a.loader.LoadLabels(currentPkg, labels) + rules, err := a.loader.LoadRules(currentPkg, labels) if err != nil { return nil, err } - resolved, err := a.resolveImportsForTargets(ctx, currentPkg, root, targets) + resolved, err := a.resolveImportsForTargets(ctx, currentPkg, root, rules) if err != nil { return nil, err } @@ -126,30 +136,91 @@ type resolvedTarget struct { // missingSources are source files which could not be opened on disk. // These are added to the dependency reports and MissingSources. missingSources []string + // A map from the labels in the target's srcs to the Targets those + // labels refer. + sources map[string]*appb.Target +} + +// setSources sets the sources on t. It returns an error if one of the srcs of +// t's rule isn't in loadedSrcs. +func (t *resolvedTarget) setSources(loadedSrcs map[string]*appb.Target) error { + for _, label := range listAttribute(t.rule, "srcs") { + src := loadedSrcs[label] + if src == nil { + return fmt.Errorf("no source found for label %s", label) + } + t.sources[label] = src + } + return nil } +// srcs returns the labels of the sources of t. func (t *resolvedTarget) srcs() ([]string, error) { - srcs, err := sources(t.rule) - if err != nil { - // Targets without sources are considered errors. - return nil, err + srcs := listAttribute(t.rule, "srcs") + if srcs == nil { + return nil, fmt.Errorf("target %q missing \"srcs\" attribute", t.label) } + return srcs, nil } +// literalSrcPaths returns the file paths of the non-generated sources of t. +func (t *resolvedTarget) literalSrcPaths() ([]string, error) { + srcs := listAttribute(t.rule, "srcs") + if srcs == nil { + return nil, fmt.Errorf("target %q missing \"srcs\" attribute", t.label) + } + var literalFilePaths []string + for _, label := range listAttribute(t.rule, "srcs") { + src := t.sources[label] + if src == nil { + return nil, fmt.Errorf("src %q has no associated target", label) + } + // There's no syntactic way to determine if a label is a source file + // so check against the type of the relevant target + if src.GetType() == appb.Target_SOURCE_FILE { + literalFilePaths = append(literalFilePaths, labelToPath(label)) + } + } + return literalFilePaths, nil +} + +// getAllLiteralSrcPaths returns the file paths of all the non-generated sources +// of the targets. +func getAllLiteralSrcPaths(targets map[string]*resolvedTarget) ([]string, error) { + var allLiteralSrcPaths []string + for _, t := range targets { + literalSrcPaths, err := t.literalSrcPaths() + if err != nil { + return nil, err + } + allLiteralSrcPaths = append(allLiteralSrcPaths, literalSrcPaths...) + } + + return allLiteralSrcPaths, nil +} + func (t *resolvedTarget) deps() []string { return listAttribute(t.rule, "deps") } // provides returns whether the resolved target can provide the path provided. func (t *resolvedTarget) provides(path string) bool { - srcs, err := t.srcs() - if err != nil { - return false - } - for _, src := range srcs { - if src == path { - return true + for _, label := range listAttribute(t.rule, "srcs") { + src := t.sources[label] + if src.GetType() == appb.Target_SOURCE_FILE { + // For literal sources, check the path of the source + if labelToPath(label) == path { + return true + } + } else if src.GetType() == appb.Target_RULE { + // For generated souces, check against the paths of rule's + // outputs + for _, genSrc := range src.GetRule().GetRuleOutput() { + if labelToPath(genSrc) == path { + return true + } + } } } return false @@ -162,6 +233,7 @@ func newResolvedTarget(r *appb.Rule) *resolvedTarget { dependencies: make(map[string]*appb.Rule), imports: make(map[string][]*ts_auto_depsImport), rule: r, + sources: make(map[string]*appb.Target), } } @@ -180,7 +252,7 @@ func (a *Analyzer) resolveImportsForTargets(ctx context.Context, currentPkg, roo allDeps = append(allDeps, target.deps()...) allSrcs = append(allSrcs, srcs...) } - deps, err := a.loader.LoadLabels(currentPkg, allDeps) + deps, err := a.loader.LoadRules(currentPkg, allDeps) if err != nil { return nil, err } @@ -191,7 +263,25 @@ func (a *Analyzer) resolveImportsForTargets(ctx context.Context, currentPkg, roo t.dependencies[dep] = deps[dep] } } - imports, errs := extractAllImports(root, allSrcs) + // load all the sources in the targets, so that literal and generated + // targets can be distinguished + srcs, err := a.loader.LoadTargets(currentPkg, allSrcs) + if err != nil { + return nil, err + } + for _, t := range targets { + err := t.setSources(srcs) + if err != nil { + return nil, err + } + } + // only extract the imports out of the literal sources, since ts_auto_deps can't + // see the contents of generated files + allLiteralSrcPaths, err := getAllLiteralSrcPaths(targets) + if err != nil { + return nil, err + } + imports, errs := extractAllImports(root, allLiteralSrcPaths) for _, err := range errs { // NotExist errors are caught and added to the generated dependency // reports as missing source files. Only errors which are not NotExist @@ -201,7 +291,7 @@ func (a *Analyzer) resolveImportsForTargets(ctx context.Context, currentPkg, roo } } for _, t := range targets { - srcs, err := t.srcs() + srcs, err := t.literalSrcPaths() if err != nil { return nil, err } @@ -328,19 +418,9 @@ func redirectedLabel(target *appb.Rule) string { return target.GetName() } -// sources creates an array of all sources listed in the 'srcs' attribute -// on each target in targets. -func sources(target *appb.Rule) ([]string, error) { - srcs := listAttribute(target, "srcs") - if srcs == nil { - return nil, fmt.Errorf("target %q missing \"srcs\" attribute", target.GetName()) - } - for i, src := range srcs { - _, pkg, file := edit.ParseLabel(src) - // TODO(jdhamlik): Handle generated files. - srcs[i] = platform.Normalize(filepath.Clean(filepath.Join(pkg, file))) - } - return srcs, nil +func labelToPath(label string) string { + _, pkg, file := edit.ParseLabel(label) + return platform.Normalize(filepath.Clean(filepath.Join(pkg, file))) } // generateReports generates reports for each label in labels. @@ -419,7 +499,7 @@ func (a *Analyzer) generateReport(target *resolvedTarget) (*arpb.DependencyRepor unusedDeps = append(unusedDeps, dep) } } - labelToRule, err := a.loader.LoadLabels("", unusedDeps) + labelToRule, err := a.loader.LoadRules("", unusedDeps) if err != nil { return nil, err } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go index 26aac4db6f..700ea845f4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go @@ -6,6 +6,8 @@ import ( "io/ioutil" "os" "path/filepath" + "reflect" + "strconv" "strings" "testing" @@ -44,8 +46,20 @@ func newFakeTargetLoader() *fakeTargetLoader { } } -func (bl *fakeTargetLoader) LoadLabels(_ string, labels []string) (map[string]*appb.Rule, error) { - return bl.loadTargets(bl.targetsByLabels, labels) +func (bl *fakeTargetLoader) LoadRules(_ string, labels []string) (map[string]*appb.Rule, error) { + return bl.loadRules(bl.targetsByLabels, labels) +} + +func (bl *fakeTargetLoader) LoadTargets(_ string, labels []string) (map[string]*appb.Target, error) { + targets := make(map[string]*appb.Target) + for _, l := range labels { + if strings.Contains(l, ".") { + targets[l] = &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()} + } else { + targets[l] = &appb.Target{Type: appb.Target_RULE.Enum()} + } + } + return targets, nil } func (bl *fakeTargetLoader) byLabel(label, value string) { @@ -53,14 +67,14 @@ func (bl *fakeTargetLoader) byLabel(label, value string) { } func (bl *fakeTargetLoader) LoadImportPaths(_ context.Context, _, _ string, paths []string) (map[string]*appb.Rule, error) { - return bl.loadTargets(bl.targetsByImportPaths, paths) + return bl.loadRules(bl.targetsByImportPaths, paths) } func (bl *fakeTargetLoader) byImportPath(importPath, value string) { bl.targetsByImportPaths[importPath] = value } -func (bl *fakeTargetLoader) loadTargets(source map[string]string, keys []string) (map[string]*appb.Rule, error) { +func (bl *fakeTargetLoader) loadRules(source map[string]string, keys []string) (map[string]*appb.Rule, error) { targets := make(map[string]*appb.Rule) for _, key := range keys { value, ok := source[key] @@ -479,6 +493,208 @@ func TestStringAttribute(t *testing.T) { } } +func createResolvedTarget(srcs []string) *resolvedTarget { + return &resolvedTarget{ + rule: &appb.Rule{ + Attribute: []*appb.Attribute{ + &appb.Attribute{ + Name: proto.String("srcs"), + Type: appb.Attribute_STRING_LIST.Enum(), + StringListValue: srcs, + }, + }, + }, + sources: map[string]*appb.Target{ + "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, + "//b:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, + "//b:generator": &appb.Target{Type: appb.Target_RULE.Enum()}, + "//b:wiz": &appb.Target{Type: appb.Target_RULE.Enum()}, + }, + } +} + +func TestLiteralSrcPaths(t *testing.T) { + tests := []struct { + name string + srcs []string + err error + expected []string + }{ + { + "OneLiteralSource", + []string{"//a:file.ts"}, + nil, + []string{"a/file.ts"}, + }, + { + "MultipleLiteralSources", + []string{"//a:file.ts", "//b:file.ts"}, + nil, + []string{"a/file.ts", "b/file.ts"}, + }, + { + "MultipleGeneratedSources", + []string{"//b:generator", "//b:wiz"}, + nil, + nil, + }, + { + "MixedSources", + []string{"//a:file.ts", "//b:file.ts", "//b:generator", "//b:wiz"}, + nil, + []string{"a/file.ts", "b/file.ts"}, + }, + { + "MissingSource", + []string{"//not/in/the/set/of/resolved:sources"}, + fmt.Errorf("src %q has no associated target", "//not/in/the/set/of/resolved:sources"), + nil, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + rt := createResolvedTarget(test.srcs) + literalSrcPaths, err := rt.literalSrcPaths() + if !reflect.DeepEqual(err, test.err) { + t.Errorf("got err %q, expected %q", err, test.err) + } + + if diff := pretty.Compare(literalSrcPaths, test.expected); diff != "" { + t.Errorf("failed to get correct literal source paths: (-got, +want)\n%s", diff) + } + }) + } +} + +func TestGetAllLiteralSrcPaths(t *testing.T) { + tests := []struct { + name string + srcsLists [][]string + err error + expected []string + }{ + { + "OneTarget", + [][]string{ + []string{"//a:file.ts", "//b:file.ts"}, + }, + nil, + []string{"a/file.ts", "b/file.ts"}, + }, + { + "MultipleTargets", + [][]string{ + []string{"//a:file.ts"}, + []string{"//b:file.ts"}, + }, + nil, + []string{"a/file.ts", "b/file.ts"}, + }, + { + "MissingSource", + [][]string{ + []string{"//not/in/the/set/of/resolved:sources"}, + }, + fmt.Errorf("src %q has no associated target", "//not/in/the/set/of/resolved:sources"), + nil, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + rts := make(map[string]*resolvedTarget) + for i, srcs := range test.srcsLists { + rts[strconv.Itoa(i)] = createResolvedTarget(srcs) + } + literalSrcPaths, err := getAllLiteralSrcPaths(rts) + if !reflect.DeepEqual(err, test.err) { + t.Errorf("got err %q, expected %q", err, test.err) + } + + if diff := pretty.Compare(literalSrcPaths, test.expected); diff != "" { + t.Errorf("failed to get correct literal source paths: (-got, +want)\n%s", diff) + } + }) + } +} + +func TestSetSources(t *testing.T) { + tests := []struct { + name string + srcs []string + loadedSrcs map[string]*appb.Target + err error + expected map[string]*appb.Target + }{ + { + "NoSources", + nil, + nil, + nil, + nil, + }, + { + "OneSource", + []string{"//a:file.ts"}, + map[string]*appb.Target{ + "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, + }, + nil, + map[string]*appb.Target{ + "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, + }, + }, + { + "ExtraSources", + []string{"//a:file.ts"}, + map[string]*appb.Target{ + "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, + "//b:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, + "//b:generator": &appb.Target{Type: appb.Target_RULE.Enum()}, + "//b:wiz": &appb.Target{Type: appb.Target_RULE.Enum()}, + }, + nil, + map[string]*appb.Target{ + "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, + }, + }, + { + "MissingSources", + []string{"//a:file.ts"}, + nil, + fmt.Errorf("no source found for label %s", "//a:file.ts"), + nil, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + rt := &resolvedTarget{ + rule: &appb.Rule{ + Attribute: []*appb.Attribute{ + &appb.Attribute{ + Name: proto.String("srcs"), + Type: appb.Attribute_STRING_LIST.Enum(), + StringListValue: test.srcs, + }, + }, + }, + sources: make(map[string]*appb.Target), + } + + err := rt.setSources(test.loadedSrcs) + if !reflect.DeepEqual(err, test.err) { + t.Errorf("got err %q, expected %q", err, test.err) + } + + if diff := pretty.Compare(rt.sources, test.expected); diff != "" { + t.Errorf("failed to set correct sources: (-got, +want)\n%s", diff) + } + }) + } +} + func missingDeps(report *arpb.DependencyReport) []string { var deps []string for _, group := range report.GetMissingDependencyGroup() { diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go index 0308267e96..51cfd4482e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go @@ -42,8 +42,8 @@ type QueryBasedTargetLoader struct { // analyzed in the "-recursive" case, these caches will be garbage // collected between directories. pkgCache map[string]*pkgCacheEntry - // labelCache is a mapping from a label to its loaded rule. - labelCache map[string]*appb.Rule + // labelCache is a mapping from a label to its loaded target. + labelCache map[string]*appb.Target // queryCount is the total number of queries executed by the target loader. queryCount int @@ -57,13 +57,33 @@ func NewQueryBasedTargetLoader(workdir, bazelBinary string) *QueryBasedTargetLoa bazelBinary: bazelBinary, pkgCache: make(map[string]*pkgCacheEntry), - labelCache: make(map[string]*appb.Rule), + labelCache: make(map[string]*appb.Target), } } -// LoadLabels uses Bazel query to load targets associated with labels from BUILD +// LoadRules uses Bazel query to load rules associated with labels from BUILD // files. -func (q *QueryBasedTargetLoader) LoadLabels(pkg string, labels []string) (map[string]*appb.Rule, error) { +func (q *QueryBasedTargetLoader) LoadRules(pkg string, labels []string) (map[string]*appb.Rule, error) { + labelToTarget, err := q.LoadTargets(pkg, labels) + if err != nil { + return nil, err + } + + labelToRule := make(map[string]*appb.Rule) + for _, label := range labels { + target := labelToTarget[label] + if target.GetType() == appb.Target_RULE { + labelToRule[label] = target.GetRule() + } else { + return nil, fmt.Errorf("target contains object of type %q instead of type %q", target.GetType(), appb.Target_RULE) + } + } + return labelToRule, nil +} + +// LoadTargets uses Bazel query to load targets associated with labels from BUILD +// files. +func (q *QueryBasedTargetLoader) LoadTargets(pkg string, labels []string) (map[string]*appb.Target, error) { var labelCacheMisses []string for _, label := range labels { if _, ok := q.labelCache[labelCacheKey(pkg, label)]; !ok { @@ -84,11 +104,11 @@ func (q *QueryBasedTargetLoader) LoadLabels(pkg string, labels []string) (map[st return nil, err } for _, target := range r.GetTarget() { - label, err := q.ruleLabel(target) + label, err := q.targetLabel(target) if err != nil { return nil, err } - q.labelCache[labelCacheKey(pkg, label)] = target.GetRule() + q.labelCache[labelCacheKey(pkg, label)] = target } for _, label := range labelCacheMisses { key := labelCacheKey(pkg, label) @@ -101,11 +121,11 @@ func (q *QueryBasedTargetLoader) LoadLabels(pkg string, labels []string) (map[st } } } - labelToRule := make(map[string]*appb.Rule) + labelToTarget := make(map[string]*appb.Target) for _, label := range labels { - labelToRule[label] = q.labelCache[labelCacheKey(pkg, label)] + labelToTarget[label] = q.labelCache[labelCacheKey(pkg, label)] } - return labelToRule, nil + return labelToTarget, nil } func labelCacheKey(currentPkg, label string) string { @@ -168,7 +188,7 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg labelToRule := make(map[string]*appb.Rule) for len(generators) > 0 { - generatorToRule, err := q.LoadLabels(currentPkg, generators) + generatorToRule, err := q.LoadRules(currentPkg, generators) if err != nil { return nil, err } @@ -218,6 +238,8 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg return results, nil } +// ruleLabel returns the label for a target which is a rule. Returns an error if +// target is not a rule. func (q *QueryBasedTargetLoader) ruleLabel(target *appb.Target) (string, error) { if t := target.GetType(); t != appb.Target_RULE { return "", fmt.Errorf("target contains object of type %q instead of type %q", t, appb.Target_RULE) @@ -225,6 +247,8 @@ func (q *QueryBasedTargetLoader) ruleLabel(target *appb.Target) (string, error) return target.GetRule().GetName(), nil } +// fileLabel returns the label for a target which is a file. Returns an error if +// target is not a source file or a generated file. func (q *QueryBasedTargetLoader) fileLabel(target *appb.Target) (string, error) { switch t := target.GetType(); t { case appb.Target_GENERATED_FILE: @@ -236,6 +260,25 @@ func (q *QueryBasedTargetLoader) fileLabel(target *appb.Target) (string, error) } } +// targetLabel returns the label for a target. Returns an error if target is an +// unknown type. +func (q *QueryBasedTargetLoader) targetLabel(target *appb.Target) (string, error) { + switch t := target.GetType(); t { + case appb.Target_GENERATED_FILE: + return target.GetGeneratedFile().GetName(), nil + case appb.Target_SOURCE_FILE: + return target.GetSourceFile().GetName(), nil + case appb.Target_RULE: + return target.GetRule().GetName(), nil + case appb.Target_PACKAGE_GROUP: + return target.GetPackageGroup().GetName(), nil + case appb.Target_ENVIRONMENT_GROUP: + return target.GetEnvironmentGroup().GetName(), nil + default: + return "", fmt.Errorf("target contains object of unknown type %q", t) + } +} + // loadRuleIncludingSourceFiles loads all rules which include labels in // sourceFileLabels, Returns a map from source file label to the rule which // includes it. From a54532bb548680fd84a17d8625440f462cb49fab Mon Sep 17 00:00:00 2001 From: radokirov Date: Fri, 25 Jan 2019 17:20:30 -0800 Subject: [PATCH 0488/1134] Fix error messages text when validating compilerOptions. PiperOrigin-RevId: 230998217 --- .../rules_typescript/internal/tsc_wrapped/compiler_host.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index 96eb3d2739..04c35fd081 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -29,10 +29,10 @@ export function narrowTsOptions(options: ts.CompilerOptions): BazelTsOptions { throw new Error(`compilerOptions.rootDirs should be set by tsconfig.bzl`); } if (!options.rootDir) { - throw new Error(`compilerOptions.rootDirs should be set by tsconfig.bzl`); + throw new Error(`compilerOptions.rootDir should be set by tsconfig.bzl`); } if (!options.outDir) { - throw new Error(`compilerOptions.rootDirs should be set by tsconfig.bzl`); + throw new Error(`compilerOptions.outDir should be set by tsconfig.bzl`); } return options as BazelTsOptions; } From 77848a4ddb8b0c7b475871d48ac9e65536a20ad2 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Mon, 28 Jan 2019 14:38:32 -0800 Subject: [PATCH 0489/1134] Support an alternative collection point for test libraries. PiperOrigin-RevId: 231291427 --- .../rules_typescript/ts_auto_deps/main.go | 7 +- .../ts_auto_deps/updater/test_register.go | 202 ++++++++++++++++++ .../ts_auto_deps/updater/updater.go | 163 +++----------- 3 files changed, 238 insertions(+), 134 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go index 81542dc2f6..2d1da26f04 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go @@ -12,8 +12,9 @@ import ( var ( isRoot = flag.Bool("root", false, "the given path is the root of a TypeScript project "+ "(generates ts_config and ts_development_sources targets).") - recursive = flag.Bool("recursive", false, "recursively update all packages under the given root.") - files = flag.Bool("files", false, "treats arguments as file names. Filters .ts files, then runs on their dirnames.") + recursive = flag.Bool("recursive", false, "recursively update all packages under the given root.") + files = flag.Bool("files", false, "treats arguments as file names. Filters .ts files, then runs on their dirnames.") + allowAllTestLibraries = flag.Bool("allow_all_test_libraries", false, "treats testonly ts_libraries named 'all_tests' as an alternative to ts_config/ts_dev_srcs for registering tests") ) func usage() { @@ -58,7 +59,7 @@ func main() { } host := updater.New(false, false, updater.QueryBasedBazelAnalyze, updater.LocalUpdateFile) - if err := updater.Execute(host, paths, *isRoot, *recursive); err != nil { + if err := updater.Execute(host, paths, *isRoot, *recursive, *allowAllTestLibraries); err != nil { platform.Error(err) } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go new file mode 100644 index 0000000000..794dcecb6c --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go @@ -0,0 +1,202 @@ +package updater + +import ( + "context" + "fmt" + "path/filepath" + + "github.com/bazelbuild/buildtools/build" + "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform" +) + +// isAllTestLibrary identifies testonly ts_libraries named "all_tests". Taze +// will register tests with these rules instead of +// ts_config/ts_development_sources rules to allow users to set up their builds +// differently. +func isAllTestLibrary(bld *build.File, r *build.Rule) bool { + if !ruleMatches(bld, r, "ts_library", ruleTypeTest) { + return false + } + + if r.Name() != "all_tests" { + return false + } + + return true +} + +func getAllTestLibraries(bld *build.File) []*build.Rule { + var allTestRules []*build.Rule + for _, r := range buildRules(bld, "ts_library") { + if isAllTestLibrary(bld, r) { + allTestRules = append(allTestRules, r) + } + } + return allTestRules +} + +// RegisterTestRules registers ts_library test targets with the project's +// ts_config and ts_development_sources rules. It may also register the tests +// with a testonly ts_library named "all_tests", which allows users to set up +// their own BUILD layout. It's separated from UpdateBUILD since it's non-local, +// multiple packages may all need to make writes to the same ts_config. +func (upd *Updater) RegisterTestRules(ctx context.Context, allowAllTestLibrary bool, paths ...string) (bool, error) { + reg := &buildRegistry{make(map[string]*build.File), make(map[*build.File]bool)} + var g3root string + for _, path := range paths { + // declare variables manually so that g3root doesn't get overwritten by a := + // declaration + var err error + var buildPath string + g3root, buildPath, err = getBUILDPath(ctx, path) + if err != nil { + return false, err + } + bld, err := reg.readBUILD(ctx, g3root, buildPath) + if err != nil { + return false, err + } + if tr := getRule(bld, "ts_library", ruleTypeTest); tr != nil { + // don't register all_test libraries themselves + if isAllTestLibrary(bld, tr) { + continue + } + platform.Infof("Registering test rule in closest ts_config & ts_development_sources") + target := AbsoluteBazelTarget(bld, tr.Name()) + if err := reg.registerTestRule(ctx, bld, tsConfig, g3root, target); err != nil { + return false, err + } + // NodeJS rules should not be added to ts_development_sources automatically, because + // they typically do not run in the browser. + if tr.AttrString("runtime") != "nodejs" { + if err := reg.registerTestRule(ctx, bld, tsDevSrcs, g3root, target); err != nil { + return false, err + } + } + } + } + + updated := false + for b := range reg.filesToUpdate { + fmt.Printf("Registered test(s) in %s\n", b.Path) + fileChanged, err := upd.maybeWriteBUILD(ctx, filepath.Join(g3root, b.Path), b) + if err != nil { + return false, err + } + updated = updated || fileChanged + } + + return updated, nil +} + +// buildRegistry buffers reads and writes done while registering ts_libraries +// with ts_config and ts_development_sources rules, so that registers from +// multiple packages all get applied at once. +type buildRegistry struct { + bldFiles map[string]*build.File + filesToUpdate map[*build.File]bool +} + +func (reg *buildRegistry) readBUILD(ctx context.Context, workspaceRoot, buildFilePath string) (*build.File, error) { + normalizedG3Path, err := getAbsoluteBUILDPath(workspaceRoot, buildFilePath) + if err != nil { + return nil, err + } + + if bld, ok := reg.bldFiles[normalizedG3Path]; ok { + return bld, nil + } + + bld, err := readBUILD(ctx, workspaceRoot, buildFilePath) + if err != nil { + return nil, err + } + + reg.bldFiles[normalizedG3Path] = bld + + return bld, nil +} + +func (reg *buildRegistry) registerForPossibleUpdate(bld *build.File) { + reg.filesToUpdate[bld] = true +} + +type registerTarget int + +const ( + tsConfig registerTarget = iota + tsDevSrcs +) + +func (rt registerTarget) kind() string { + if rt == tsConfig { + return "ts_config" + } + + return "ts_development_sources" +} + +func (rt registerTarget) ruleType() ruleType { + if rt == tsConfig { + return ruleTypeAny + } + + return ruleTypeTest +} + +// registerTestRule searches ancestor packages for a rule matching the register +// target and adds the given target to it. If an all_tests library is found, the +// rule is registered with it, instead of specified register target. Prints a +// warning if no rule is found, but only returns an error if adding the +// dependency fails. +func (reg *buildRegistry) registerTestRule(ctx context.Context, bld *build.File, rt registerTarget, g3root, target string) error { + if buildHasDisableTaze(bld) { + return nil + } + + var ruleToRegister *build.Rule + for _, r := range bld.Rules("") { + if isAllTestLibrary(bld, r) { + if hasDependency(bld, r, target) { + return nil + } + + // an all_tests library takes presidence over a registerTarget, and there + // can only be one, since there can only be one rule with a given name, so + // can just break after finding + ruleToRegister = r + break + } + if ruleMatches(bld, r, rt.kind(), rt.ruleType()) { + if hasDependency(bld, r, target) { + return nil + } + + // keep overwriting ruleToRegister so the last match in the BUILD gets + // used + ruleToRegister = r + } + } + + if ruleToRegister != nil { + addDep(bld, ruleToRegister, target) + reg.registerForPossibleUpdate(bld) + return nil + } + + parentDir := filepath.Dir(filepath.Dir(bld.Path)) + for parentDir != "." && parentDir != "/" { + buildFile := filepath.Join(g3root, parentDir, "BUILD") + if _, err := platform.Stat(ctx, buildFile); err == nil { + parent, err := reg.readBUILD(ctx, g3root, buildFile) + if err != nil { + return err + } + return reg.registerTestRule(ctx, parent, rt, g3root, target) + } + parentDir = filepath.Dir(parentDir) + } + fmt.Printf("WARNING: no %s rule in parent packages of %s to register with.\n", + rt.kind(), target) + return nil +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index 3f6980bc02..a45d04c82d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -477,16 +477,26 @@ func (upd *Updater) maybeWriteBUILD(ctx context.Context, path string, bld *build return true, nil } -func getBUILDPathAndBUILDFile(ctx context.Context, path string) (string, string, *build.File, error) { +func getBUILDPath(ctx context.Context, path string) (string, string, error) { path = strings.TrimSuffix(path, "/BUILD") // Support both package paths and BUILD files if _, err := platform.Stat(ctx, path); os.IsNotExist(err) { - return "", "", nil, err + return "", "", err } buildFilePath := filepath.Join(path, "BUILD") g3root, err := workspace.Root(buildFilePath) + if err != nil { + return "", "", err + } + + return g3root, buildFilePath, nil +} + +func getBUILDPathAndBUILDFile(ctx context.Context, path string) (string, string, *build.File, error) { + g3root, buildFilePath, err := getBUILDPath(ctx, path) if err != nil { return "", "", nil, err } + bld, err := readBUILD(ctx, g3root, buildFilePath) if err != nil { platform.Infof("Error reading building file!") @@ -629,48 +639,6 @@ func (upd *Updater) updateBUILDAfterBazelAnalyze(ctx context.Context, isRoot boo return upd.maybeWriteBUILD(ctx, buildFilePath, bld) } -// RegisterTsconfigAndTsDevelopmentSources registers ts_library targets with the project's -// ts_config and ts_development_sources rules. It's separated from UpdateBUILD since it's -// non-local, multiple packages may all need to make writes to the same ts_config. -func (upd *Updater) RegisterTsconfigAndTsDevelopmentSources(ctx context.Context, paths ...string) (bool, error) { - reg := &buildRegistry{make(map[string]*build.File), make(map[*build.File]bool)} - var g3root string - for _, path := range paths { - var bld *build.File - var err error - g3root, _, bld, err = getBUILDPathAndBUILDFile(ctx, path) - if err != nil { - return false, err - } - if tr := getRule(bld, "ts_library", ruleTypeTest); tr != nil { - platform.Infof("Registering test rule in closest ts_config & ts_development_sources") - target := AbsoluteBazelTarget(bld, tr.Name()) - if err := reg.registerTestRule(ctx, bld, "ts_config", ruleTypeAny, g3root, target); err != nil { - return false, err - } - // NodeJS rules should not be added to ts_development_sources automatically, because - // they typically do not run in the browser. - if tr.AttrString("runtime") != "nodejs" { - if err := reg.registerTestRule(ctx, bld, "ts_development_sources", ruleTypeTest, g3root, target); err != nil { - return false, err - } - } - } - } - - updated := false - for b := range reg.filesToUpdate { - fmt.Printf("Registered test(s) in %s\n", b.Path) - fileChanged, err := upd.maybeWriteBUILD(ctx, filepath.Join(g3root, b.Path), b) - if err != nil { - return false, err - } - updated = updated || fileChanged - } - - return updated, nil -} - // IsTazeDisabledForDir checks if ts_auto_deps is disabled in the BUILD file in the dir, // or if no BUILD file exists, in the closest ancestor BUILD func IsTazeDisabledForDir(ctx context.Context, dir string) (bool, error) { @@ -803,82 +771,6 @@ func QueryBasedBazelAnalyze(buildFilePath string, args []string) ([]byte, []byte return s, nil, err } -// buildRegistry buffers reads and writes done while registering ts_libraries -// with ts_config and ts_development_sources rules, so that registers from -// multiple packages all get applied at once. -type buildRegistry struct { - bldFiles map[string]*build.File - filesToUpdate map[*build.File]bool -} - -func (reg *buildRegistry) readBUILD(ctx context.Context, workspaceRoot, buildFilePath string) (*build.File, error) { - normalizedG3Path, err := getAbsoluteBUILDPath(workspaceRoot, buildFilePath) - if err != nil { - return nil, err - } - - if bld, ok := reg.bldFiles[normalizedG3Path]; ok { - return bld, nil - } - - bld, err := readBUILD(ctx, workspaceRoot, buildFilePath) - if err != nil { - return nil, err - } - - reg.bldFiles[normalizedG3Path] = bld - - return bld, nil -} - -func (reg *buildRegistry) registerForPossibleUpdate(bld *build.File) { - reg.filesToUpdate[bld] = true -} - -// registerTestRule searches ancestor packages for a rule with the given ruleKind and ruleType -// and adds the given target to it. Prints a warning if no rule is found, but only returns an error -// if adding the dependency fails. -func (reg *buildRegistry) registerTestRule(ctx context.Context, bld *build.File, ruleKind string, rt ruleType, g3root, target string) error { - // If the target has already been registered in any of the rule with the given ruleKind and ruleType, - // we shouldn't register it again. - if targetRegisteredInRule(bld, ruleKind, rt, target) { - return nil - } - if buildHasDisableTaze(bld) { - return nil - } - r := getRule(bld, ruleKind, rt) - if r != nil { - addDep(bld, r, target) - reg.registerForPossibleUpdate(bld) - return nil - } - parentDir := filepath.Dir(filepath.Dir(bld.Path)) - for parentDir != "." && parentDir != "/" { - buildFile := filepath.Join(g3root, parentDir, "BUILD") - if _, err := platform.Stat(ctx, buildFile); err == nil { - parent, err := reg.readBUILD(ctx, g3root, buildFile) - if err != nil { - return err - } - return reg.registerTestRule(ctx, parent, ruleKind, rt, g3root, target) - } - parentDir = filepath.Dir(parentDir) - } - ruleTypeStr := "" - switch rt { - case ruleTypeRegular: - ruleTypeStr = "testonly=0" - case ruleTypeTest, ruleTypeTestSupport: - ruleTypeStr = "testonly=1" - default: - break - } - fmt.Printf("WARNING: no %s(%s) rule in parent packages of %s to register with.\n", - ruleKind, ruleTypeStr, target) - return nil -} - type ruleType int const ( @@ -888,6 +780,14 @@ const ( ruleTypeTestSupport ) +// isKind returns true if the rule has given kind. It also accepts "ng_modules" +// as "ts_library" kind. +func isKind(r *build.Rule, kind string) bool { + acceptNgModule := kind == "ts_library" + + return r.Kind() == kind || (acceptNgModule && r.Kind() == "ng_module") +} + func buildRules(bld *build.File, kind string) []*build.Rule { // Find all rules, then filter by kind. // This is nearly the same as just calling bld.Rules(kind), but allows to @@ -896,9 +796,8 @@ func buildRules(bld *build.File, kind string) []*build.Rule { // last build rule in the file in case multiple match, regardless of kind. allRules := bld.Rules("") var res []*build.Rule - acceptNgModule := kind == "ts_library" for _, r := range allRules { - if r.Kind() == kind || (acceptNgModule && r.Kind() == "ng_module") { + if isKind(r, kind) { res = append(res, r) } } @@ -1152,8 +1051,11 @@ func getOrCreateRule(bld *build.File, ruleName, ruleKind string, rt ruleType) *b return r } -// ruleMatches return whether a rule matches the specified rt value. -func ruleMatches(bld *build.File, r *build.Rule, rt ruleType) bool { +// ruleMatches return whether a rule matches the specified kind and rt value. +func ruleMatches(bld *build.File, r *build.Rule, kind string, rt ruleType) bool { + if !isKind(r, kind) { + return false + } inTestingDir := determineRuleType(bld.Path, "somefile.ts") == ruleTypeTestSupport hasTestsName := strings.HasSuffix(r.Name(), "_tests") // Accept the rule if it matches the testonly attribute. @@ -1174,9 +1076,8 @@ func ruleMatches(bld *build.File, r *build.Rule, rt ruleType) bool { // targetRegisteredInRule returns whether a target has been registered in a rule that // matches a specified ruleKind and ruleType in current build file func targetRegisteredInRule(bld *build.File, ruleKind string, rt ruleType, target string) bool { - rs := buildRules(bld, ruleKind) - for _, r := range rs { - if ruleMatches(bld, r, rt) && hasDependency(bld, r, target) { + for _, r := range bld.Rules("") { + if ruleMatches(bld, r, ruleKind, rt) && hasDependency(bld, r, target) { return true } } @@ -1186,10 +1087,10 @@ func targetRegisteredInRule(bld *build.File, ruleKind string, rt ruleType, targe // getRule returns the last rule in bld that has the given ruleKind and matches // the specified rt value. func getRule(bld *build.File, ruleKind string, rt ruleType) *build.Rule { - rs := buildRules(bld, ruleKind) + rs := bld.Rules("") for i := len(rs) - 1; i >= 0; i-- { r := rs[i] - if ruleMatches(bld, r, rt) { + if ruleMatches(bld, r, ruleKind, rt) { return r } } @@ -1320,7 +1221,7 @@ func Paths(isRoot bool, files bool, recursive bool) ([]string, error) { } // Execute runs ts_auto_deps on paths using host. -func Execute(host *Updater, paths []string, isRoot bool, recursive bool) error { +func Execute(host *Updater, paths []string, isRoot, recursive, allowAllTestLibraries bool) error { ctx := context.Background() for i, p := range paths { isLastAndRoot := isRoot && i == len(paths)-1 @@ -1339,7 +1240,7 @@ func Execute(host *Updater, paths []string, isRoot bool, recursive bool) error { } } } - host.RegisterTsconfigAndTsDevelopmentSources(ctx, paths...) + host.RegisterTestRules(ctx, allowAllTestLibraries, paths...) return nil } From 50b751cc9a6c5cedb51414fcf279e75766d8ad99 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Tue, 29 Jan 2019 13:50:46 -0800 Subject: [PATCH 0490/1134] Report unused ts_declaration deps as unused instead of ambiguous. PiperOrigin-RevId: 231466548 --- .../rules_typescript/ts_auto_deps/analyze/analyze.go | 4 ---- .../rules_typescript/ts_auto_deps/analyze/analyze_test.go | 4 ++++ .../rules_typescript/ts_auto_deps/analyze/loader.go | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go index 851509a1b1..644110a2c2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go @@ -506,10 +506,6 @@ func (a *Analyzer) generateReport(target *resolvedTarget) (*arpb.DependencyRepor for label, rule := range labelToRule { if isTazeManagedRuleClass(rule.GetRuleClass()) || isGenerated(rule) { report.UnnecessaryDependency = append(report.UnnecessaryDependency, label) - } else if c := rule.GetRuleClass(); c == "ts_declaration" { - // ts_declarations may be used even if there is no explicit import - // since ambient types can't be detected. - report.AmbiguousDependency = append(report.AmbiguousDependency, label) } } return report, nil diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go index 700ea845f4..3e669ad369 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go @@ -7,6 +7,7 @@ import ( "os" "path/filepath" "reflect" + "sort" "strconv" "strings" "testing" @@ -612,6 +613,9 @@ func TestGetAllLiteralSrcPaths(t *testing.T) { t.Errorf("got err %q, expected %q", err, test.err) } + // getAllLiteralSrcPaths takes a map, so its output ordering isn't + // deterministic + sort.Strings(literalSrcPaths) if diff := pretty.Compare(literalSrcPaths, test.expected); diff != "" { t.Errorf("failed to get correct literal source paths: (-got, +want)\n%s", diff) } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go index 51cfd4482e..cdfee61819 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go @@ -380,8 +380,7 @@ func dedupeLabels(labels []string) []string { func isTazeManagedRuleClass(class string) bool { for _, c := range []string{ "ts_library", - // TODO(alexeagle): Add ts_declaration once it can be determined - // if they are unused. + "ts_declaration", "ng_module", "js_library", } { From 5e6caf039da76ec9b8632f72ec621aa4c76165e8 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Tue, 29 Jan 2019 15:11:24 -0800 Subject: [PATCH 0491/1134] Add data to karma runfiles Closes #391 PiperOrigin-RevId: 231482078 --- .../rules_typescript/internal/karma/karma_web_test.bzl | 1 + 1 file changed, 1 insertion(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl index f6be58fcaf..99ea150564 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl @@ -263,6 +263,7 @@ $KARMA ${{ARGV[@]}} runfiles += ctx.files.runtime_deps runfiles += ctx.files.bootstrap runfiles += ctx.files.static_files + runfiles += ctx.files.data return ctx.runfiles( files = runfiles, From eb87e82670fa755516ca22b45979f33ef41fb459 Mon Sep 17 00:00:00 2001 From: Keen Yee Liau Date: Tue, 29 Jan 2019 15:52:24 -0800 Subject: [PATCH 0492/1134] ci: run gazelle and bazel:format --- .../rules_typescript/devserver/concatjs/BUILD.bazel | 2 +- .../rules_typescript/devserver/devserver/BUILD.bazel | 1 - .../devserver/devserver/test/test-workspace/BUILD.bazel | 1 - .../rules_typescript/devserver/runfiles/BUILD.bazel | 4 ++-- .../rules_typescript/internal/common/compilation.bzl | 1 - .../rules_typescript/internal/common/module_mappings.bzl | 1 - .../bazelbuild/rules_typescript/internal/karma/BUILD.bazel | 2 +- .../rules_typescript/ts_auto_deps/updater/BUILD.bazel | 5 ++++- 8 files changed, 8 insertions(+), 9 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/BUILD.bazel index 4606773bef..6cc1a741c2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/BUILD.bazel @@ -11,4 +11,4 @@ go_test( name = "go_default_test", srcs = ["concatjs_test.go"], embed = [":go_default_library"], -) \ No newline at end of file +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/BUILD.bazel index a7c273599e..4602de94a9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/BUILD.bazel @@ -21,4 +21,3 @@ go_test( ], embed = [":go_default_library"], ) - diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/test/test-workspace/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/test/test-workspace/BUILD.bazel index d2c2e9d64e..85d47776c6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/test/test-workspace/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/test/test-workspace/BUILD.bazel @@ -3,4 +3,3 @@ filegroup( srcs = glob(["**/*"]), visibility = ["//visibility:public"], ) - diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/BUILD.bazel index 2e0b9b7ab3..2285f5ba51 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/BUILD.bazel @@ -9,9 +9,9 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["runfiles.go"], + importpath = "github.com/bazelbuild/rules_typescript/devserver/runfiles", + visibility = ["//visibility:public"], deps = [ "@io_bazel_rules_go//go/tools/bazel:go_default_library", ], - importpath = "github.com/bazelbuild/rules_typescript/devserver/runfiles", - visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 3672044343..23e5a59b07 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -18,7 +18,6 @@ load(":common/json_marshal.bzl", "json_marshal") load(":common/module_mappings.bzl", "module_mappings_aspect") - _DEBUG = False DEPS_ASPECTS = [ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl index d085d726f9..a28b32793c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl @@ -33,7 +33,6 @@ def _get_deps(attrs, names): # Traverse 'srcs' in addition so that we can go across a genrule _MODULE_MAPPINGS_DEPS_NAMES = ["deps", "srcs", "_helpers"] - _DEBUG = False def debug(msg, values = ()): diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel index b2a22bce4d..dc8a50ddca 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel @@ -64,8 +64,8 @@ npm_package( "package.json", ], deps = [ - ":check_version_copy", ":bazel_karma", + ":check_version_copy", ":license_copy", ], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/BUILD.bazel index 53e319c795..ea67ff6ee8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/BUILD.bazel @@ -2,7 +2,10 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", - srcs = ["updater.go"], + srcs = [ + "test_register.go", + "updater.go", + ], importpath = "github.com/bazelbuild/rules_typescript/ts_auto_deps/updater", visibility = ["//visibility:public"], deps = [ From 8858d9c3bb51f4dcb8b2f05e5bcc5148f4158dd9 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Tue, 29 Jan 2019 16:57:18 -0800 Subject: [PATCH 0493/1134] Formatting cleanup PiperOrigin-RevId: 231501183 --- .../rules_typescript/devserver/concatjs/BUILD.bazel | 2 +- .../rules_typescript/devserver/devserver/BUILD.bazel | 1 + .../devserver/devserver/test/test-workspace/BUILD.bazel | 1 + .../rules_typescript/devserver/runfiles/BUILD.bazel | 4 ++-- .../rules_typescript/internal/common/compilation.bzl | 1 + .../rules_typescript/internal/common/module_mappings.bzl | 1 + .../bazelbuild/rules_typescript/internal/karma/BUILD.bazel | 2 +- 7 files changed, 8 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/BUILD.bazel index 6cc1a741c2..4606773bef 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/BUILD.bazel @@ -11,4 +11,4 @@ go_test( name = "go_default_test", srcs = ["concatjs_test.go"], embed = [":go_default_library"], -) +) \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/BUILD.bazel index 4602de94a9..a7c273599e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/BUILD.bazel @@ -21,3 +21,4 @@ go_test( ], embed = [":go_default_library"], ) + diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/test/test-workspace/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/test/test-workspace/BUILD.bazel index 85d47776c6..d2c2e9d64e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/test/test-workspace/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/test/test-workspace/BUILD.bazel @@ -3,3 +3,4 @@ filegroup( srcs = glob(["**/*"]), visibility = ["//visibility:public"], ) + diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/BUILD.bazel index 2285f5ba51..2e0b9b7ab3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/BUILD.bazel @@ -9,9 +9,9 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["runfiles.go"], - importpath = "github.com/bazelbuild/rules_typescript/devserver/runfiles", - visibility = ["//visibility:public"], deps = [ "@io_bazel_rules_go//go/tools/bazel:go_default_library", ], + importpath = "github.com/bazelbuild/rules_typescript/devserver/runfiles", + visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 23e5a59b07..3672044343 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -18,6 +18,7 @@ load(":common/json_marshal.bzl", "json_marshal") load(":common/module_mappings.bzl", "module_mappings_aspect") + _DEBUG = False DEPS_ASPECTS = [ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl index a28b32793c..d085d726f9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl @@ -33,6 +33,7 @@ def _get_deps(attrs, names): # Traverse 'srcs' in addition so that we can go across a genrule _MODULE_MAPPINGS_DEPS_NAMES = ["deps", "srcs", "_helpers"] + _DEBUG = False def debug(msg, values = ()): diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel index dc8a50ddca..b2a22bce4d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel @@ -64,8 +64,8 @@ npm_package( "package.json", ], deps = [ - ":bazel_karma", ":check_version_copy", + ":bazel_karma", ":license_copy", ], ) From 14795fac2875bae5f74e6826e0be0899bab0568e Mon Sep 17 00:00:00 2001 From: radokirov Date: Tue, 29 Jan 2019 17:20:46 -0800 Subject: [PATCH 0494/1134] Remove local override of protobuf JS option - convertFieldsToCamelCase. PiperOrigin-RevId: 231505010 --- .../bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts index 287486d0b8..4a102cc0d1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts @@ -4,8 +4,6 @@ const protobufjs = require('protobufjs'); // tslint:disable-next-line:variable-name: ByteBuffer is instantiatable. const ByteBuffer = require('bytebuffer'); -protobufjs.convertFieldsToCamelCase = true; - export const DEBUG = false; export function debug(...args: Array<{}>) { From 61f8d7126f4b3e9c5ffee433d84ba2e23236c192 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Wed, 30 Jan 2019 12:33:11 -0800 Subject: [PATCH 0495/1134] Update to rules_nodejs 0.16.6, rules_webtesting 0.3.0 and Bazel 0.22.0 Closes #394 PiperOrigin-RevId: 231647001 --- .../rules_typescript/.circleci/config.yml | 50 +++++++------------ .../devserver/concatjs/BUILD.bazel | 2 +- .../devserver/devserver/BUILD.bazel | 1 - .../devserver/test/test-workspace/BUILD.bazel | 1 - .../devserver/runfiles/BUILD.bazel | 4 +- .../internal/e2e/default_tsconfig_test.js | 2 - .../internal/karma/BUILD.bazel | 2 +- .../bazelbuild/rules_typescript/package.bzl | 19 ++++--- .../bazelbuild/rules_typescript/package.json | 3 +- .../bazelbuild/rules_typescript/yarn.lock | 24 +++++++++ 10 files changed, 58 insertions(+), 50 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml index e2cb0bb6af..eb5c2558d3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml @@ -9,22 +9,13 @@ ## IMPORTANT # If you change the `docker_image` version, also change the `cache_key` suffix -var_1: &docker_image angular/ngcontainer:0.7.0 -var_2: &cache_key rules_typescript-{{ checksum "yarn.lock" }}-0.7.0 +var_1: &docker_image circleci/node:10.12-browsers +var_2: &cache_key rules_typescript-{{ checksum "yarn.lock" }}-internal/karma:{{ checksum "internal/karma/yarn.lock" }}-node:10.12-browsers var_3: &setup-bazel-remote-cache run: name: Start up bazel remote cache proxy command: ~/bazel-remote-proxy -backend circleci:// background: true -# Move node binaries out of the way to enforce that Bazel uses -# only the hermetic ones it downloads -var_4: &hide_node_and_yarn_local_binaries - run: - name: Move node, npm, and yarn binaries - command: | - sudo mv /usr/local/bin/node /usr/local/bin/node_ - sudo mv /usr/local/bin/npm /usr/local/bin/npm_ - sudo mv /usr/local/bin/yarn /usr/local/bin/yarn_ # Settings common to each job anchor_1: &job_defaults @@ -49,14 +40,14 @@ jobs: - run: .circleci/setup_cache.sh - run: sudo cp .circleci/bazel.rc /etc/bazel.bazelrc - *setup-bazel-remote-cache - - *hide_node_and_yarn_local_binaries - - restore_cache: key: *cache_key - - run: bazel info release - - run: bazel build ... - - run: bazel test ... - - run: bazel build @disable_tsetse_for_external_test//... + + - run: yarn install + - run: yarn bazel info release + - run: yarn bazel build ... + - run: yarn bazel test ... + - run: yarn bazel build @disable_tsetse_for_external_test//... # This job tests the same stuff, but without the .bazelrc file. # It disables worker mode, for example. @@ -68,17 +59,17 @@ jobs: - run: .circleci/setup_cache.sh - run: sudo cp .circleci/bazel.rc /etc/bazel.bazelrc - *setup-bazel-remote-cache - - *hide_node_and_yarn_local_binaries - - restore_cache: key: *cache_key - - run: bazel --bazelrc=/dev/null info release + + - run: yarn install + - run: yarn bazel --bazelrc=/dev/null info release # We cherry pick the memory utilization options from .circleci/bazel.rc here. # Since the default CircleCI container has only 4G, limiting the memory # is required to keep Bazel from exhausting the memory. - - run: bazel --bazelrc=/dev/null --host_jvm_args=-Xmx3g build ... --local_resources=2560,1.0,1.0 - - run: bazel --bazelrc=/dev/null --host_jvm_args=-Xmx3g test ... --local_resources=2560,1.0,1.0 - - run: bazel --bazelrc=/dev/null --host_jvm_args=-Xmx3g build @disable_tsetse_for_external_test//... --local_resources=2560,1.0,1.0 + - run: yarn bazel --bazelrc=/dev/null --host_jvm_args=-Xmx3g build ... --local_resources=2560,1.0,1.0 + - run: yarn bazel --bazelrc=/dev/null --host_jvm_args=-Xmx3g test ... --local_resources=2560,1.0,1.0 + - run: yarn bazel --bazelrc=/dev/null --host_jvm_args=-Xmx3g build @disable_tsetse_for_external_test//... --local_resources=2560,1.0,1.0 - save_cache: key: *cache_key @@ -95,17 +86,14 @@ jobs: - run: .circleci/setup_cache.sh - run: sudo cp .circleci/bazel.rc /etc/bazel.bazelrc - *setup-bazel-remote-cache - - *hide_node_and_yarn_local_binaries - restore_cache: key: *cache_key + + - run: yarn install # Build the npm packages which are used in the e2e tests - - run: bazel build //internal:npm_package - - run: bazel build //internal/karma:npm_package - # Run yarn as e2e tests depend on self managed node_modules - - run: bazel run @nodejs//:bin/yarn - # Don't occupy the bazel server, as this test wants to run Bazel itself - - run: bazel run @nodejs//:bin/yarn e2e --script_path=yarn_e2e.sh - - run: xvfb-run -a ./yarn_e2e.sh + - run: yarn bazel build //internal:npm_package + - run: yarn bazel build //internal/karma:npm_package + - run: xvfb-run -a yarn e2e lint: <<: *job_defaults diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/BUILD.bazel index 4606773bef..6cc1a741c2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/BUILD.bazel @@ -11,4 +11,4 @@ go_test( name = "go_default_test", srcs = ["concatjs_test.go"], embed = [":go_default_library"], -) \ No newline at end of file +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/BUILD.bazel index a7c273599e..4602de94a9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/BUILD.bazel @@ -21,4 +21,3 @@ go_test( ], embed = [":go_default_library"], ) - diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/test/test-workspace/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/test/test-workspace/BUILD.bazel index d2c2e9d64e..85d47776c6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/test/test-workspace/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/test/test-workspace/BUILD.bazel @@ -3,4 +3,3 @@ filegroup( srcs = glob(["**/*"]), visibility = ["//visibility:public"], ) - diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/BUILD.bazel index 2e0b9b7ab3..2285f5ba51 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/BUILD.bazel @@ -9,9 +9,9 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["runfiles.go"], + importpath = "github.com/bazelbuild/rules_typescript/devserver/runfiles", + visibility = ["//visibility:public"], deps = [ "@io_bazel_rules_go//go/tools/bazel:go_default_library", ], - importpath = "github.com/bazelbuild/rules_typescript/devserver/runfiles", - visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js index 2df18270a3..b079271814 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js @@ -28,8 +28,6 @@ local_repository( ) load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") rules_typescript_dependencies() -load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") -rules_nodejs_dependencies() load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") node_repositories() yarn_install( diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel index b2a22bce4d..dc8a50ddca 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel @@ -64,8 +64,8 @@ npm_package( "package.json", ], deps = [ - ":check_version_copy", ":bazel_karma", + ":check_version_copy", ":license_copy", ], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index 5e1e5b0f3b..f0d3b3212b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -38,17 +38,16 @@ def rules_typescript_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.4.zip"], - strip_prefix = "rules_nodejs-0.16.4", + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.6.zip"], + strip_prefix = "rules_nodejs-0.16.6", ) # ts_web_test depends on the web testing rules to provision browsers. _maybe( http_archive, name = "io_bazel_rules_webtesting", - urls = ["https://github.com/bazelbuild/rules_webtesting/archive/111d792b9a5b17f87b6e177e274dbbee46094791.zip"], - strip_prefix = "rules_webtesting-111d792b9a5b17f87b6e177e274dbbee46094791", - sha256 = "a13af63e928c34eff428d47d31bafeec4e38ee9b6940e70bf2c9cd47184c5c16", + urls = ["https://github.com/bazelbuild/rules_webtesting/releases/download/0.3.0/rules_webtesting.tar.gz"], + sha256 = "1c0900547bdbe33d22aa258637dc560ce6042230e41e9ea9dad5d7d2fca8bc42", ) # ts_devserver depends on the Go rules. @@ -81,11 +80,11 @@ def rules_typescript_dependencies(): sha256 = "9176a7df34dbed2cf5171eb56271868824560364e60644348219f852f593ae79", ) - ############################################### - # Repeat the dependencies of rules_nodejs here! - # We can't load() from rules_nodejs yet, because we've only just fetched it. - # But we also don't want to make users load and call the rules_nodejs_dependencies - # function because we can do that for them, mostly hiding the transitive dependency. + # io_bazel_rules_webtesting depends on bazel_skylib. It is installed by + # web_test_repositories() but we depend on it here in case users don't call + # web_test_repositories(). This will get cleaned up by https://github.com/bazelbuild/rules_typescript/pull/374 + # which introduces build_bazel_rules_karma with its own defs.bzl file + # that will allow this dep to be removed from rules_typescript_dependencies() _maybe( http_archive, name = "bazel_skylib", diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 724a1f2717..c117f15461 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -19,8 +19,9 @@ "tsutils": "2.27.2" }, "devDependencies": { - "@bazel/ibazel": "^0.2.0", + "@bazel/bazel": "~0.22.0", "@bazel/buildifier": "^0.20.0", + "@bazel/ibazel": "^0.2.0", "@bazel/typescript": "0.19.1", "@types/jasmine": "^2.8.2", "@types/long": "^4.0.0", diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index c6df00c181..db0c286bd8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -2,6 +2,30 @@ # yarn lockfile v1 +"@bazel/bazel-darwin_x64@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@bazel/bazel-darwin_x64/-/bazel-darwin_x64-0.22.0.tgz#a2bea5922dba9a32554a218ba4849a200115b248" + integrity sha512-LFxkyQgPATeB64z/1IvOWZhK+lc3JVHejbmdo96qB4lsoD8zselvOlgHvVXxlAjRxVZ9mlmXDvDRDyaXyyRdwA== + +"@bazel/bazel-linux_x64@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@bazel/bazel-linux_x64/-/bazel-linux_x64-0.22.0.tgz#12e5884f2a7b7f3b62afbef9f8da4de0976f3bc8" + integrity sha512-xDs8cb2bbGZ9uvzYZOzCVrMBywzRhLj0J/t+py+FYZj+VO5B3wVg9eUf6nWWR0oJ2mzvToI9h31t2tNdqwy2kQ== + +"@bazel/bazel-win32_x64@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@bazel/bazel-win32_x64/-/bazel-win32_x64-0.22.0.tgz#a8a65986639583a8cc7b018e001aedfdafe41b50" + integrity sha512-FbJaXVDoCLnpIFLnPHFkQdfriYPXfnfQNuf9EXMliERdRuoeBVbwEZfwcuArxZWNFus7bD8QiTj0XzKVWO+Wbw== + +"@bazel/bazel@~0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@bazel/bazel/-/bazel-0.22.0.tgz#feb0f2d82f9d169cb47951d95d55e512eda72bc9" + integrity sha512-uaXZsfCXOASBXzmge56akRIhJnKYdShn1X3AdEBzq2NNCf2llkc1H25gKGm4BfuWDBXRbXDMmcXup+fw39h+WQ== + optionalDependencies: + "@bazel/bazel-darwin_x64" "0.22.0" + "@bazel/bazel-linux_x64" "0.22.0" + "@bazel/bazel-win32_x64" "0.22.0" + "@bazel/buildifier-darwin_x64@0.20.0": version "0.20.0" resolved "https://registry.yarnpkg.com/@bazel/buildifier-darwin_x64/-/buildifier-darwin_x64-0.20.0.tgz#1aeceb5a1a57a62eef6415377dbe95091781a7d4" From f99b17148be64d83d63c4e2db1ec900971ecc953 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Wed, 30 Jan 2019 16:43:12 -0800 Subject: [PATCH 0496/1134] Improve handling of generated source files. Previously, the query-based analyzer looked for the dep providing a generated source file by walking up the graph of generating rules, which relied on generated files only happening in macros and the ts_library in the macro sharing a label with the macro. Instead, generated sources should be handled like any other source - the analyzer should look for the generated file (or the generating rule) in the srcs attribute of some other rule. PiperOrigin-RevId: 231693464 --- .../ts_auto_deps/analyze/loader.go | 59 ++++++++----------- 1 file changed, 26 insertions(+), 33 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go index cdfee61819..ab82fcea2a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go @@ -167,7 +167,7 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg if err != nil { return nil, err } - var sourceFileLabels, generators []string + var fileLabels, generators []string generatorsToFiles := make(map[string][]*appb.GeneratedFile) for _, target := range r.GetTarget() { label, err := q.fileLabel(target) @@ -179,40 +179,21 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg file := target.GetGeneratedFile() generator := file.GetGeneratingRule() + // a generated file can be included as a source by referencing the label + // of the generated file, or the label of the generating rule, so check + // for both + fileLabels = append(fileLabels, file.GetName()) generators = append(generators, generator) generatorsToFiles[generator] = append(generatorsToFiles[generator], file) case appb.Target_SOURCE_FILE: - sourceFileLabels = append(sourceFileLabels, label) + fileLabels = append(fileLabels, label) } } labelToRule := make(map[string]*appb.Rule) - for len(generators) > 0 { - generatorToRule, err := q.LoadRules(currentPkg, generators) - if err != nil { - return nil, err - } - var newGenerators []string - for label, rule := range generatorToRule { - _, _, target := edit.ParseLabel(label) - - if generator := stringAttribute(rule, "generator_name"); generator != "" && generator != target { - // Located rule is also a generated rule. Look for the rule - // that generates it. - _, pkg, _ := edit.ParseLabel(label) - newLabel := "//" + pkg + ":" + generator - newGenerators = append(newGenerators, newLabel) - generatorsToFiles[newLabel] = generatorsToFiles[label] - } else { - for _, generated := range generatorsToFiles[label] { - labelToRule[generated.GetName()] = rule - } - } - } - generators = newGenerators - } - sourceLabelToRule, err := q.loadRulesIncludingSourceFiles(workspaceRoot, sourceFileLabels) + // load all the rules with file srcs (either literal or generated) + sourceLabelToRule, err := q.loadRulesWithSources(workspaceRoot, fileLabels) if err != nil { return nil, err } @@ -220,6 +201,17 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg labelToRule[label] = rule } + // load all the rules with generator rule srcs + generatorLabelToRule, err := q.loadRulesWithSources(workspaceRoot, generators) + if err != nil { + return nil, err + } + for label, rule := range generatorLabelToRule { + for _, generated := range generatorsToFiles[label] { + labelToRule[generated.GetName()] = rule + } + } + for label, rule := range labelToRule { _, pkg, file := edit.ParseLabel(label) // Trim "/index" suffixes that were added to path in the queries above. @@ -279,13 +271,14 @@ func (q *QueryBasedTargetLoader) targetLabel(target *appb.Target) (string, error } } -// loadRuleIncludingSourceFiles loads all rules which include labels in -// sourceFileLabels, Returns a map from source file label to the rule which -// includes it. -func (q *QueryBasedTargetLoader) loadRulesIncludingSourceFiles(workspaceRoot string, sourceFileLabels []string) (map[string]*appb.Rule, error) { +// loadRulesWithSources loads all rules which include the labels in sources as +// srcs attributes. Returns a map from source label to the rule which includes +// it. A source label can be the label of a source file or a generated file or +// a generating rule. +func (q *QueryBasedTargetLoader) loadRulesWithSources(workspaceRoot string, sources []string) (map[string]*appb.Rule, error) { pkgToLabels := make(map[string][]string) - queries := make([]string, 0, len(sourceFileLabels)) - for _, label := range sourceFileLabels { + queries := make([]string, 0, len(sources)) + for _, label := range sources { _, pkg, file := edit.ParseLabel(label) pkgToLabels[pkg] = append(pkgToLabels[pkg], label) // Query for all targets in the package which use file. From 29d6c5758be1bf230baf5081bd9b89f002224626 Mon Sep 17 00:00:00 2001 From: vikerman Date: Wed, 30 Jan 2019 22:55:29 -0800 Subject: [PATCH 0497/1134] fix: fix formatting of Karma stack traces Make the paths(with and without sourcemaps) relative to the project root so that the file locations are linkified in editors like VS Code. Tested in angular/angular using VS Code. Closes #369 PiperOrigin-RevId: 231730383 --- .../bazelbuild/rules_typescript/.bazelignore | 1 + .../e2e/package_karma_stack_trace/.bazelrc | 6 + .../e2e/package_karma_stack_trace/BUILD.bazel | 52 + .../e2e/package_karma_stack_trace/WORKSPACE | 57 + .../package_karma_stack_trace/failing.spec.ts | 9 + .../package_karma_stack_trace/package.json | 8 + .../test_folder/BUILD.bazel | 35 + .../test_folder/hello.ts | 7 + .../test_folder/test.spec.ts | 11 + .../test_sourcemap.sh | 25 + .../package_karma_stack_trace/tsconfig.json | 0 .../e2e/package_karma_stack_trace/yarn.lock | 2305 +++++++++++++++++ .../rules_typescript/internal/karma/index.ts | 8 +- .../internal/karma/karma.conf.js | 26 + .../bazelbuild/rules_typescript/package.json | 3 +- 15 files changed, 2548 insertions(+), 5 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/.bazelrc create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/WORKSPACE create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/failing.spec.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/package.json create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/hello.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/test.spec.ts create mode 100755 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_sourcemap.sh create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/tsconfig.json create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/yarn.lock diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelignore b/third_party/github.com/bazelbuild/rules_typescript/.bazelignore index d4962dede4..adba1fb2a7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelignore +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelignore @@ -1,6 +1,7 @@ node_modules internal/e2e/ts_auto_deps internal/e2e/package_karma +internal/e2e/package_karma_stack_trace internal/e2e/package_typescript_2.7 internal/e2e/package_typescript_2.8 internal/e2e/package_typescript_2.9 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/.bazelrc new file mode 100644 index 0000000000..178af0a3f9 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/.bazelrc @@ -0,0 +1,6 @@ +# Don't create symlinks like bazel-out in the project. +# These cause VSCode to traverse a massive tree, opening file handles and +# eventually a surprising failure with auto-discovery of the C++ toolchain in +# MacOS High Sierra. +# See https://github.com/bazelbuild/bazel/issues/4603 +build --symlink_prefix=/ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/BUILD.bazel new file mode 100644 index 0000000000..fbd169e951 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/BUILD.bazel @@ -0,0 +1,52 @@ +# Copyright 2019 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_web_test_suite") + +package(default_visibility = ["//visibility:public"]) + +exports_files(["tsconfig.json"]) + +ts_library( + name = "test_lib", + testonly = True, + srcs = glob(["*.spec.ts"]), + deps = [ + "@npm//@types/jasmine", + ], +) + +# This is a test with failing test. This test is not directly run by CI. +# The sh_test below invokes this test and checks the source mapped lines in the +# stack trace. +ts_web_test_suite( + name = "karma_test", + browsers = [ + "@io_bazel_rules_webtesting//browsers:chromium-local", + ], + tags = ["manual"], # not run by CI + deps = [ + ":test_lib", + "//test_folder:test_lib", + ], +) + +sh_test( + name = "test_sourcemap", + srcs = ["test_sourcemap.sh"], + data = [ + ":karma_test", + "@bazel_tools//tools/bash/runfiles", + ], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/WORKSPACE new file mode 100644 index 0000000000..aa0c58bfc1 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/WORKSPACE @@ -0,0 +1,57 @@ +# Copyright 2019 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +workspace(name = "package_karma_stack_trace") + +local_repository( + name = "build_bazel_rules_typescript", + path = "../../..", +) + +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") + +rules_typescript_dependencies() + +load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") + +rules_nodejs_dependencies() + +load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") + +node_repositories(preserve_symlinks = True) + +yarn_install( + name = "npm", + package_json = "//:package.json", + yarn_lock = "//:yarn.lock", +) + +load("@io_bazel_rules_go//go:def.bzl", "go_register_toolchains", "go_rules_dependencies") + +go_rules_dependencies() + +go_register_toolchains() + +load("@io_bazel_rules_webtesting//web:repositories.bzl", "browser_repositories", "web_test_repositories") + +web_test_repositories() + +browser_repositories( + chromium = True, + firefox = True, +) + +load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") + +ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/failing.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/failing.spec.ts new file mode 100644 index 0000000000..5b77ed5be5 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/failing.spec.ts @@ -0,0 +1,9 @@ +// This dummy export ensures that this file is compiled as a module instead +// of a script. +export {}; + +describe('stack trace', () => { + it('failing test', () => { + expect(true).toBe(false); + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/package.json new file mode 100644 index 0000000000..87f725b97d --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/package.json @@ -0,0 +1,8 @@ +{ + "dependencies": { + "@bazel/typescript": "file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package", + "@bazel/karma": "file:../build_bazel_rules_typescript/bazel-bin/internal/karma/npm_package", + "@types/jasmine": "2.8.2", + "typescript": "3.1.x" + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/BUILD.bazel new file mode 100644 index 0000000000..6ffe7a79da --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/BUILD.bazel @@ -0,0 +1,35 @@ +# Copyright 2019 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") + +package(default_visibility = ["//visibility:public"]) + +ts_library( + name = "hello", + srcs = glob( + ["*.ts"], + exclude = ["*.spec.ts"], + ), +) + +ts_library( + name = "test_lib", + testonly = True, + srcs = glob(["*.spec.ts"]), + deps = [ + ":hello", + "@npm//@types/jasmine", + ], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/hello.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/hello.ts new file mode 100644 index 0000000000..72c2d1f95d --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/hello.ts @@ -0,0 +1,7 @@ +export function sayHello() { + return 'Hello'; +} + +export function error() { + throw new Error('Error here'); +} \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/test.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/test.spec.ts new file mode 100644 index 0000000000..5ff4034131 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/test.spec.ts @@ -0,0 +1,11 @@ +import { sayHello, error } from "./hello"; + +describe('multiple stack frames', () => { + it('failing test', () => { + expect(sayHello()).toBe('World'); + }); + + it('another failing test', () => { + expect(error()).toBe(null); + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_sourcemap.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_sourcemap.sh new file mode 100755 index 0000000000..0d85f8ecb6 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_sourcemap.sh @@ -0,0 +1,25 @@ +# Execute first test. +OUTPUT=$(${RUNFILES_DIR}/package_karma_stack_trace/karma_test_chromium-local) + +# Test whether the package relative TS path is printed in stack trace. +echo ${OUTPUT} | grep -q "(failing.spec.ts:7:17" +if [[ "$?" != "0" ]]; then + echo "Did not find 'failing.spec.ts:7:17' in Karma stack trace" + exit 1 +fi + +# Test whether the package relative path inside a subdirectory is printed. +echo ${OUTPUT} | grep -q "(test_folder/test.spec.ts:5:23" +if [[ "$?" != "0" ]]; then + echo "Did not find 'test_folder/test.spec.ts:5:23' in Karma stack trace" + exit 1 +fi + +# Test whether stack trace with multiple stack frames mapped get printed. +echo ${OUTPUT} | grep -q "(test_folder/hello.ts:6:8" +if [[ "$?" != "0" ]]; then + echo "Did not find 'test_folder/hello.ts:6:8' in Karma stack trace" + exit 1 +fi + +exit 0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/tsconfig.json new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/yarn.lock new file mode 100644 index 0000000000..24ba869ecc --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/yarn.lock @@ -0,0 +1,2305 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@bazel/karma@file:../build_bazel_rules_typescript/bazel-bin/internal/karma/npm_package": + version "0.22.1-10-g1bac7de" + dependencies: + jasmine-core "2.8.0" + karma "^4.0.0" + karma-chrome-launcher "2.2.0" + karma-firefox-launcher "1.1.0" + karma-jasmine "1.1.1" + karma-requirejs "1.1.0" + karma-sauce-launcher "2.0.2" + karma-sourcemap-loader "0.3.7" + requirejs "2.3.5" + semver "5.6.0" + tmp "0.0.33" + +"@bazel/typescript@file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package": + version "0.22.1-10-g63696af" + dependencies: + protobufjs "5.0.3" + semver "5.6.0" + source-map-support "0.5.9" + tsutils "2.27.2" + +"@types/jasmine@2.8.2": + version "2.8.2" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" + integrity sha512-RabEJPjYMpjWqW1qYj4k0rlgP5uzyguoc0yxedJdq7t5h19MYvqhjCR1evM3raZ/peHRxp1Qfl24iawvkibSug== + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + +adm-zip@~0.4.3: + version "0.4.13" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" + integrity sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw== + +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= + +agent-base@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== + dependencies: + es6-promisify "^5.0.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + 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" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +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" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== + +ascli@~1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" + integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= + dependencies: + colour "~0.7.1" + optjs "~3.2.2" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + integrity sha1-GdOGodntxufByF04iu28xW0zYC0= + +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== + +async@^2.1.2: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== + dependencies: + lodash "^4.17.10" + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= + +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + 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" + +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= + dependencies: + callsite "1.0.0" + +binary-extensions@^1.0.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" + integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== + +blob@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" + integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== + +bluebird@^3.3.0: + version "3.5.3" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" + integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== + +body-parser@^1.16.1: + version "1.18.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" + integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "~1.6.3" + iconv-lite "0.4.23" + on-finished "~2.3.0" + qs "6.5.2" + raw-body "2.3.3" + type-is "~1.6.16" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^0.1.2: + version "0.1.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" + integrity sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY= + dependencies: + expand-range "^0.1.0" + +braces@^2.3.0, braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + 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" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +bytebuffer@~5: + version "5.0.1" + resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" + integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= + dependencies: + long "~3" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + 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" + +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= + +camelcase@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +chokidar@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== + 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" + lodash.debounce "^4.0.8" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.5" + optionalDependencies: + fsevents "^1.2.2" + +chownr@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + +circular-json@^0.5.5: + version "0.5.9" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" + integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cliui@^3.0.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +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" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +colors@^1.1.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" + integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== + +colour@~0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" + integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= + +combine-lists@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" + integrity sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y= + dependencies: + lodash "^4.5.0" + +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= + +component-emitter@1.2.1, component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +connect@^3.6.0: + version "3.6.6" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" + integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ= + dependencies: + debug "2.6.9" + finalhandler "1.1.0" + parseurl "~1.3.2" + utils-merge "1.0.1" + +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" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js@^2.2.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.3.tgz#4b70938bdffdaf64931e66e2db158f0892289c49" + integrity sha512-l00tmFFZOBHtYhN4Cz7k32VM7vTn3rE2ANjQDxdEN6zmXZ/xq1jQuutnmHvMG1ZJ7xd72+TA5YpUK8wz3rWsfQ== + +core-js@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" + integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= + +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" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= + +date-format@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" + integrity sha1-YV6CjiM90aubua4JUODOzPpuytg= + +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@=3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +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" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + 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" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + 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" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= + +dom-serialize@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +encodeurl@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +engine.io-client@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.1.1" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~3.3.1" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + +engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6" + integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.5" + has-binary2 "~1.0.2" + +engine.io@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" + integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== + dependencies: + accepts "~1.3.4" + base64id "1.0.0" + cookie "0.3.1" + debug "~3.1.0" + engine.io-parser "~2.1.0" + ws "~3.3.1" + +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= + +es6-promise@^4.0.3: + version "4.2.5" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" + integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg== + +es6-promise@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" + integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + dependencies: + es6-promise "^4.0.3" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +eventemitter3@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" + integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== + +expand-braces@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" + integrity sha1-SIsdHSRRyz06axks/AMPRMWFX+o= + dependencies: + array-slice "^0.2.3" + array-unique "^0.2.1" + braces "^0.1.2" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + 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" + +expand-range@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" + integrity sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ= + dependencies: + is-number "^0.1.1" + repeat-string "^0.2.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + 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" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + 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" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U= + dependencies: + debug "2.6.9" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.3.1" + unpipe "~1.0.0" + +flatted@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" + integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== + +follow-redirects@^1.0.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.6.1.tgz#514973c44b5757368bad8bddfe52f81f015c94cb" + integrity sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ== + dependencies: + debug "=3.1.0" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fs-access@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" + integrity sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o= + dependencies: + null-check "^1.0.0" + +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== + 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" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.2: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" + integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + 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-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" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob@^7.0.5, glob@^7.1.1, glob@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + 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" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + +has-binary2@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" + integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== + dependencies: + isarray "2.0.1" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + 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" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + 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" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +http-errors@1.6.3, http-errors@~1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-proxy@^1.13.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" + integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== + dependencies: + eventemitter3 "^3.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +https-proxy-agent@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" + integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== + dependencies: + agent-base "^4.1.0" + debug "^3.1.0" + +iconv-lite@0.4.23: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + dependencies: + minimatch "^3.0.4" + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +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" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + 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" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + 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" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + 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" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +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" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + 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" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + 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" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + 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" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + 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" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +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" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + 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" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + 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" + integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= + dependencies: + is-extglob "^2.1.1" + +is-number@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" + integrity sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY= + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +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" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= + +isbinaryfile@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" + integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== + dependencies: + buffer-alloc "^1.2.0" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + 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" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +jasmine-core@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" + integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= + +jszip@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" + integrity sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ== + dependencies: + core-js "~2.3.0" + es6-promise "~3.0.2" + lie "~3.1.0" + pako "~1.0.2" + readable-stream "~2.0.6" + +karma-chrome-launcher@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" + integrity sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w== + dependencies: + fs-access "^1.0.0" + which "^1.2.1" + +karma-firefox-launcher@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz#2c47030452f04531eb7d13d4fc7669630bb93339" + integrity sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA== + +karma-jasmine@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.1.tgz#6fe840e75a11600c9d91e84b33c458e1c46a3529" + integrity sha1-b+hA51oRYAydkehLM8RY4cRqNSk= + +karma-requirejs@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/karma-requirejs/-/karma-requirejs-1.1.0.tgz#fddae2cb87d7ebc16fb0222893564d7fee578798" + integrity sha1-/driy4fX68FvsCIok1ZNf+5Xh5g= + +karma-sauce-launcher@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-2.0.2.tgz#dbf98e70d86bf287b03a537cf637eb7aefa975c3" + integrity sha512-jLUFaJhHMcKpxFWUesyWYihzM5FvQiJsDwGcCtKeOy2lsWhkVw0V0Byqb1d+wU6myU1mribBtsIcub23HS4kWA== + dependencies: + sauce-connect-launcher "^1.2.4" + saucelabs "^1.5.0" + selenium-webdriver "^4.0.0-alpha.1" + +karma-sourcemap-loader@0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" + integrity sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg= + dependencies: + graceful-fs "^4.1.2" + +karma@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-4.0.0.tgz#f28e38a2b66243fde3f98e12a8dcaa2c6ff8ca9c" + integrity sha512-EFoFs3F6G0BcUGPNOn/YloGOb3h09hzTguyXlg6loHlKY76qbJikkcyPk43m2kfRF65TUGda/mig29QQtyhm1g== + dependencies: + bluebird "^3.3.0" + body-parser "^1.16.1" + chokidar "^2.0.3" + colors "^1.1.0" + combine-lists "^1.0.0" + connect "^3.6.0" + core-js "^2.2.0" + di "^0.0.1" + dom-serialize "^2.2.0" + expand-braces "^0.1.1" + flatted "^2.0.0" + glob "^7.1.1" + graceful-fs "^4.1.2" + http-proxy "^1.13.0" + isbinaryfile "^3.0.0" + lodash "^4.17.5" + log4js "^3.0.0" + mime "^2.3.1" + minimatch "^3.0.2" + optimist "^0.6.1" + qjobs "^1.1.4" + range-parser "^1.2.0" + rimraf "^2.6.0" + safe-buffer "^5.0.1" + socket.io "2.1.1" + source-map "^0.6.1" + tmp "0.0.33" + useragent "2.3.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" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + 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" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + 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" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +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" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lie@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= + dependencies: + immediate "~3.0.5" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.5, lodash@^4.5.0: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +log4js@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.6.tgz#e6caced94967eeeb9ce399f9f8682a4b2b28c8ff" + integrity sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== + dependencies: + circular-json "^0.5.5" + date-format "^1.2.0" + debug "^3.1.0" + rfdc "^1.1.2" + streamroller "0.7.0" + +long@~3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= + +lru-cache@4.1.x: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + 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" + +mime-db@~1.37.0: + version "1.37.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" + integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== + +mime-types@~2.1.18: + version "2.1.21" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" + integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== + dependencies: + mime-db "~1.37.0" + +mime@^2.3.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" + integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== + +minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + 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" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + +minipass@^2.2.1, minipass@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + 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" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.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" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + 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" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +nan@^2.9.2: + version "2.12.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" + integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + 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-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.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" + integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= + +node-pre-gyp@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" + integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.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" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +npm-bundled@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" + integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== + +npm-packlist@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.2.0.tgz#55a60e793e272f00862c7089274439a4cc31fc7f" + integrity sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ== + 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" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +null-check@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" + integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0= + +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" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.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" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + 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" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optjs@~3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" + integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +pako@~1.0.2: + version "1.0.8" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.8.tgz#6844890aab9c635af868ad5fecc62e8acbba3ea4" + integrity sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA== + +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= + dependencies: + better-assert "~1.0.0" + +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +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" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= + +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" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + +protobufjs@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" + integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== + dependencies: + ascli "~1" + bytebuffer "~5" + glob "^7.0.5" + yargs "^3.10.0" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +qjobs@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" + integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== + +qs@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +range-parser@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= + +raw-body@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== + dependencies: + bytes "3.0.0" + http-errors "1.6.3" + iconv-lite "0.4.23" + unpipe "1.0.0" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + 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.3.0: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + 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" + +readable-stream@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +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" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.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" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" + integrity sha1-x6jTI2BoNiBZp+RlH8aITosftK4= + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +requirejs@2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0" + integrity sha512-svnO+aNcR/an9Dpi44C7KSAy5fFGLtmPbaaCeQaklUz8BQhS64tWWIIlvEA5jrWICzlO/X9KSzSeXFnZdBu8nw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rfdc@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.2.tgz#e6e72d74f5dc39de8f538f65e00c36c18018e349" + integrity sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA== + +rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +safe-buffer@^5.0.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" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + 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" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sauce-connect-launcher@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.2.4.tgz#8d38f85242a9fbede1b2303b559f7e20c5609a1c" + integrity sha512-X2vfwulR6brUGiicXKxPm1GJ7dBEeP1II450Uv4bHGrcGOapZNgzJvn9aioea5IC5BPp/7qjKdE3xbbTBIVXMA== + dependencies: + adm-zip "~0.4.3" + async "^2.1.2" + https-proxy-agent "^2.2.1" + lodash "^4.16.6" + rimraf "^2.5.4" + +saucelabs@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" + integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== + dependencies: + https-proxy-agent "^2.2.1" + +sax@>=0.6.0, sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +selenium-webdriver@^4.0.0-alpha.1: + version "4.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz#cc93415e21d2dc1dfd85dfc5f6b55f3ac53933b1" + integrity sha512-z88rdjHAv3jmTZ7KSGUkTvo4rGzcDGMq0oXWHNIDK96Gs31JKVdu9+FMtT4KBrVoibg8dUicJDok6GnqqttO5Q== + dependencies: + jszip "^3.1.3" + rimraf "^2.5.4" + tmp "0.0.30" + xml2js "^0.4.17" + +semver@5.6.0, semver@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= + 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" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + 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" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + 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" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + 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" + +socket.io-adapter@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" + integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= + +socket.io-client@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" + integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~3.1.0" + engine.io-client "~3.2.0" + has-binary2 "~1.0.2" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.2.0" + to-array "0.1.4" + +socket.io-parser@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" + integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + isarray "2.0.1" + +socket.io@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" + integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== + dependencies: + debug "~3.1.0" + engine.io "~3.2.0" + has-binary2 "~1.0.2" + socket.io-adapter "~1.1.0" + socket.io-client "2.1.1" + socket.io-parser "~3.2.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" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + 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.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +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" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +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" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= + +streamroller@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" + integrity sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ== + dependencies: + date-format "^1.2.0" + debug "^3.1.0" + mkdirp "^0.5.1" + readable-stream "^2.3.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + 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" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + 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" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + 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" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + 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" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +tar@^4: + version "4.4.8" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" + integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.3.4" + minizlib "^1.1.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + +tmp@0.0.30: + version "0.0.30" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" + integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= + dependencies: + os-tmpdir "~1.0.1" + +tmp@0.0.33, tmp@0.0.x: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= + +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" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + 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" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + 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" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +tslib@^1.8.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +tsutils@2.27.2: + version "2.27.2" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" + integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== + dependencies: + tslib "^1.8.1" + +type-is@~1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.18" + +typescript@3.1.x: + version "3.1.6" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" + integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +useragent@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" + integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== + dependencies: + lru-cache "4.1.x" + tmp "0.0.x" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + +which@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + 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" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@~3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +xml2js@^0.4.17: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + +xmlhttprequest-ssl@~1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= + +y18n@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + +yargs@^3.10.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/index.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/index.ts index ad02ec93c4..511a6fbbf9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/index.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/index.ts @@ -21,7 +21,7 @@ function sha1(data) { /** * Entry-point for the Karma plugin. */ -function initConcatJs(logger, emitter, basePath) { +function initConcatJs(logger, emitter, basePath, hostname, port) { const log = logger.create('framework.concat_js'); // Create a tmp file for the concat bundle that is automatically cleaned up on @@ -50,8 +50,8 @@ function initConcatJs(logger, emitter, basePath) { let content = file.content.replace(/('use strict'|"use strict");?/, ''); content = JSON.stringify( - content + '\n//# sourceURL=http://concatjs/base/' + - relativePath + '\n'); + `${content}\n//# sourceURL=http://${hostname}:${port}/base/` + + `${relativePath}\n`); content = `//${relativePath}\neval(${content});\n`; bundleFile.content += content; } @@ -70,7 +70,7 @@ function initConcatJs(logger, emitter, basePath) { }); } -(initConcatJs as any).$inject = ['logger', 'emitter', 'config.basePath']; +(initConcatJs as any).$inject = ['logger', 'emitter', 'config.basePath', 'config.hostname', 'config.port']; function watcher(fileList: {refresh: () => void}) { // ibazel will write this string after a successful build diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js index ff066d9f3d..76c2343e4d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js @@ -353,6 +353,31 @@ try } } + function configureFormatError(conf) { + conf.formatError = (msg) => { + // This is a bazel specific formatError that removes the workspace + // name from stack traces. + // Look for filenames of the format "(::" + const FILENAME_REGEX = /\(([^:]+)(:\d+:\d+)/gm; + msg = msg.replace(FILENAME_REGEX, (_, p1, p2) => { + if (p1. startsWith('../')) { + // Remove all leading "../" + while (p1.startsWith('../')) { + p1 = p1.substr(3); + } + } else { + // Remove workspace name(angular, ngdeps etc.) from the beginning. + const index = p1.indexOf('/'); + if (index >= 0) { + p1 = p1.substr(index + 1); + } + } + return '(' + p1 + p2; + }); + return msg + '\n\n'; + }; + } + module.exports = function(config) { let conf = {}; @@ -373,6 +398,7 @@ try configureFiles(conf); configureTsWebTestSuiteConfig(conf); configureTsWebTestConfig(conf); + configureFormatError(conf); if (DEBUG) console.info(`Karma configuration: ${JSON.stringify(conf, null, 2)}`); diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index c117f15461..1394247d2d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -39,13 +39,14 @@ }, "scripts": { "pree2e": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG && bazel build examples/app:e2e && bazel build examples/protocol_buffers:e2e", - "e2e": "yarn e2e-bazel-external && yarn e2e-examples-app-devserver && yarn e2e-examples-app-prodserver && yarn e2e-examples-protobuf-devserver && yarn e2e-examples-protobuf-prodserver && yarn e2e-package_karma && yarn e2e-package_typescript && yarn e2e-package_typescript_karma && yarn e2e-ts_auto_deps", + "e2e": "yarn e2e-bazel-external && yarn e2e-examples-app-devserver && yarn e2e-examples-app-prodserver && yarn e2e-examples-protobuf-devserver && yarn e2e-examples-protobuf-prodserver && yarn e2e-package_karma && yarn e2e-package_karma_stack_trace && yarn e2e-package_typescript && yarn e2e-package_typescript_karma && yarn e2e-ts_auto_deps", "e2e-bazel-external": "jasmine internal/e2e/default_tsconfig_test.js", "e2e-examples-app-devserver": "concurrently \"bazel run examples/app:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", "e2e-examples-app-prodserver": "concurrently \"bazel run examples/app:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", "e2e-examples-protobuf-devserver": "concurrently \"bazel run examples/protocol_buffers:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first", "e2e-examples-protobuf-prodserver": "concurrently \"bazel run examples/protocol_buffers:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first", "e2e-package_karma": "cd internal/e2e/package_karma; bazel test ...", + "e2e-package_karma_stack_trace": "cd internal/e2e/package_karma_stack_trace; bazel test ...", "e2e-package_typescript": "yarn e2e-package_typescript_2.7 && yarn e2e-package_typescript_2.8 && yarn e2e-package_typescript_2.9 && yarn e2e-package_typescript_3.0 && yarn e2e-package_typescript_3.1 && yarn e2e-package_typescript_3.1_no_npm", "e2e-package_typescript_2.7": "cd internal/e2e/package_typescript_2.7; bazel test ...", "e2e-package_typescript_2.8": "cd internal/e2e/package_typescript_2.8; bazel test ...", From 093878dc91fd498288e355d305549e95e568302b Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Thu, 31 Jan 2019 08:24:36 -0800 Subject: [PATCH 0498/1134] Create CODEOWNERS. Closes https://github.com/bazelbuild/rules_typescript/pull/393. PiperOrigin-RevId: 231790200 --- third_party/github.com/bazelbuild/rules_typescript/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/CODEOWNERS diff --git a/third_party/github.com/bazelbuild/rules_typescript/CODEOWNERS b/third_party/github.com/bazelbuild/rules_typescript/CODEOWNERS new file mode 100644 index 0000000000..b1485d04d9 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/CODEOWNERS @@ -0,0 +1 @@ +* @mgechev @kyliau @alexeagle \ No newline at end of file From d736f71c390c25c11e78c4f0760b03986348e2c3 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Thu, 31 Jan 2019 14:01:15 -0800 Subject: [PATCH 0499/1134] Cleanup of e2e tests Closes #395 PiperOrigin-RevId: 231848839 --- .../bazelbuild/rules_typescript/.bazelignore | 14 +- .../rules_typescript/.circleci/config.yml | 5 +- .../bazelbuild/rules_typescript/.gitignore | 9 +- .../bazelbuild/rules_typescript/DEVELOPING.md | 4 +- .../bazelbuild/rules_typescript/WORKSPACE | 4 - .../internal/e2e/npm_packages/README.md | 19 + .../karma}/.bazelrc | 0 .../karma}/BUILD.bazel | 0 .../karma}/README.md | 0 .../karma}/WORKSPACE | 8 +- .../karma}/decrement.js | 2 +- .../karma}/decrement.spec.js | 6 +- .../npm_packages/karma/package-template.json | 9 + .../karma}/yarn.lock | 1588 ++-------------- .../karma_stack_trace}/.bazelrc | 0 .../karma_stack_trace}/BUILD.bazel | 0 .../karma_stack_trace}/WORKSPACE | 8 +- .../karma_stack_trace}/failing.spec.ts | 0 .../karma_stack_trace/package-template.json | 11 + .../test_folder/BUILD.bazel | 0 .../karma_stack_trace}/test_folder/hello.ts | 0 .../test_folder/test.spec.ts | 0 .../karma_stack_trace}/test_sourcemap.sh | 2 +- .../karma_stack_trace}/tsconfig.json | 0 .../karma_stack_trace}/yarn.lock | 0 .../karma_typescript}/.bazelrc | 0 .../karma_typescript}/BUILD.bazel | 0 .../karma_typescript}/WORKSPACE | 8 +- .../karma_typescript}/decrement.spec.ts | 0 .../karma_typescript}/decrement.ts | 0 .../karma_typescript/package-template.json | 11 + .../karma_typescript}/tsconfig.json | 0 .../karma_typescript}/yarn.lock | 1641 +++-------------- .../internal/e2e/npm_packages/test.sh | 65 + .../typescript_2.7}/.bazelrc | 0 .../typescript_2.7}/BUILD.bazel | 0 .../typescript_2.7}/WORKSPACE | 8 +- .../typescript_2.7}/main.spec.ts | 0 .../typescript_2.7}/main.ts | 0 .../typescript_2.7/package-template.json} | 5 +- .../typescript_2.7}/tsconfig.json | 0 .../typescript_2.7}/yarn.lock | 10 +- .../typescript_2.8}/.bazelrc | 0 .../typescript_2.8}/BUILD.bazel | 0 .../typescript_2.8}/WORKSPACE | 8 +- .../typescript_2.8}/main.spec.ts | 0 .../typescript_2.8}/main.ts | 0 .../typescript_2.8/package-template.json} | 5 +- .../typescript_2.8}/tsconfig.json | 0 .../typescript_2.8}/yarn.lock | 10 +- .../typescript_2.9}/.bazelrc | 0 .../typescript_2.9}/BUILD.bazel | 0 .../typescript_2.9}/WORKSPACE | 8 +- .../typescript_2.9}/main.spec.ts | 0 .../typescript_2.9}/main.ts | 0 .../typescript_2.9/package-template.json} | 5 +- .../typescript_2.9}/tsconfig.json | 0 .../typescript_2.9}/yarn.lock | 10 +- .../typescript_3.0}/.bazelrc | 0 .../typescript_3.0}/BUILD.bazel | 0 .../e2e/npm_packages/typescript_3.0/WORKSPACE | 38 + .../typescript_3.0}/main.spec.ts | 0 .../typescript_3.0}/main.ts | 0 .../typescript_3.0/package-template.json} | 5 +- .../typescript_3.0}/tsconfig.json | 0 .../typescript_3.0}/yarn.lock | 10 +- .../typescript_3.1}/.bazelrc | 0 .../typescript_3.1}/BUILD.bazel | 0 .../e2e/npm_packages/typescript_3.1/WORKSPACE | 38 + .../typescript_3.1}/main.spec.ts | 0 .../typescript_3.1}/main.ts | 0 .../typescript_3.1/package-template.json} | 5 +- .../typescript_3.1}/tsconfig.json | 0 .../typescript_3.1}/yarn.lock | 10 +- .../internal/e2e/package_karma/package.json | 6 - .../package_karma_stack_trace/package.json | 8 - .../tsconfig.json.oss} | 0 .../package_typescript_2.7/tsconfig.json.oss | 0 .../package_typescript_2.8/tsconfig.json.oss | 0 .../package_typescript_2.9/tsconfig.json.oss | 0 .../package_typescript_3.0/tsconfig.json.oss | 0 .../e2e/package_typescript_3.1/WORKSPACE | 42 - .../package_typescript_3.1/tsconfig.json.oss | 0 .../package_typescript_3.1_no_npm/WORKSPACE | 42 - .../tsconfig.json.oss | 0 .../e2e/package_typescript_karma/package.json | 8 - .../tsconfig.json.oss | 0 .../internal/e2e/ts_auto_deps/WORKSPACE | 4 - .../internal/e2e/ts_auto_deps/package.json | 3 + .../.bazelrc | 0 .../BUILD.bazel | 0 .../WORKSPACE | 6 +- .../main.spec.ts | 0 .../main.ts | 0 .../package.json | 3 + .../internal/e2e/typescript_3.1/tsconfig.json | 0 .../yarn.lock | 0 .../bazelbuild/rules_typescript/package.bzl | 4 +- .../bazelbuild/rules_typescript/package.json | 26 +- 99 files changed, 675 insertions(+), 3066 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/README.md rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma => npm_packages/karma}/.bazelrc (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma => npm_packages/karma}/BUILD.bazel (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma => npm_packages/karma}/README.md (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma => npm_packages/karma}/WORKSPACE (89%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma => npm_packages/karma}/decrement.js (84%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma => npm_packages/karma}/decrement.spec.js (72%) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/package-template.json rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma => npm_packages/karma}/yarn.lock (55%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma_stack_trace => npm_packages/karma_stack_trace}/.bazelrc (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma_stack_trace => npm_packages/karma_stack_trace}/BUILD.bazel (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma_stack_trace => npm_packages/karma_stack_trace}/WORKSPACE (89%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma_stack_trace => npm_packages/karma_stack_trace}/failing.spec.ts (100%) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/package-template.json rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma_stack_trace => npm_packages/karma_stack_trace}/test_folder/BUILD.bazel (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma_stack_trace => npm_packages/karma_stack_trace}/test_folder/hello.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma_stack_trace => npm_packages/karma_stack_trace}/test_folder/test.spec.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma_stack_trace => npm_packages/karma_stack_trace}/test_sourcemap.sh (89%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma_stack_trace => npm_packages/karma_stack_trace}/tsconfig.json (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma_stack_trace => npm_packages/karma_stack_trace}/yarn.lock (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.7 => npm_packages/karma_typescript}/.bazelrc (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_karma => npm_packages/karma_typescript}/BUILD.bazel (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_karma => npm_packages/karma_typescript}/WORKSPACE (89%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_karma => npm_packages/karma_typescript}/decrement.spec.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_karma => npm_packages/karma_typescript}/decrement.ts (100%) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/package-template.json rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.7 => npm_packages/karma_typescript}/tsconfig.json (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_karma => npm_packages/karma_typescript}/yarn.lock (56%) create mode 100755 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/test.sh rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.8 => npm_packages/typescript_2.7}/.bazelrc (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.7 => npm_packages/typescript_2.7}/BUILD.bazel (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.9 => npm_packages/typescript_2.7}/WORKSPACE (86%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.7 => npm_packages/typescript_2.7}/main.spec.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.7 => npm_packages/typescript_2.7}/main.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.7/package.json => npm_packages/typescript_2.7/package-template.json} (54%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.8 => npm_packages/typescript_2.7}/tsconfig.json (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.7 => npm_packages/typescript_2.7}/yarn.lock (94%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.9 => npm_packages/typescript_2.8}/.bazelrc (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.8 => npm_packages/typescript_2.8}/BUILD.bazel (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.7 => npm_packages/typescript_2.8}/WORKSPACE (86%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.8 => npm_packages/typescript_2.8}/main.spec.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.8 => npm_packages/typescript_2.8}/main.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.8/package.json => npm_packages/typescript_2.8/package-template.json} (54%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.9 => npm_packages/typescript_2.8}/tsconfig.json (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.8 => npm_packages/typescript_2.8}/yarn.lock (94%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.0 => npm_packages/typescript_2.9}/.bazelrc (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.9 => npm_packages/typescript_2.9}/BUILD.bazel (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.8 => npm_packages/typescript_2.9}/WORKSPACE (86%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.9 => npm_packages/typescript_2.9}/main.spec.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.9 => npm_packages/typescript_2.9}/main.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.9/package.json => npm_packages/typescript_2.9/package-template.json} (54%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.0 => npm_packages/typescript_2.9}/tsconfig.json (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_2.9 => npm_packages/typescript_2.9}/yarn.lock (94%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.1 => npm_packages/typescript_3.0}/.bazelrc (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.0 => npm_packages/typescript_3.0}/BUILD.bazel (100%) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.0 => npm_packages/typescript_3.0}/main.spec.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.0 => npm_packages/typescript_3.0}/main.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.0/package.json => npm_packages/typescript_3.0/package-template.json} (54%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.1 => npm_packages/typescript_3.0}/tsconfig.json (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.0 => npm_packages/typescript_3.0}/yarn.lock (94%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.1_no_npm => npm_packages/typescript_3.1}/.bazelrc (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.1 => npm_packages/typescript_3.1}/BUILD.bazel (100%) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.1 => npm_packages/typescript_3.1}/main.spec.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.1 => npm_packages/typescript_3.1}/main.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.1/package.json => npm_packages/typescript_3.1/package-template.json} (54%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.1_no_npm => npm_packages/typescript_3.1}/tsconfig.json (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.1 => npm_packages/typescript_3.1}/yarn.lock (94%) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/package.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/package.json rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_karma/tsconfig.json => package_karma_stack_trace/tsconfig.json.oss} (100%) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/tsconfig.json.oss create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/tsconfig.json.oss create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/tsconfig.json.oss create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/WORKSPACE create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/WORKSPACE create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/package.json create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/tsconfig.json.oss rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_karma => typescript_3.1}/.bazelrc (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.1_no_npm => typescript_3.1}/BUILD.bazel (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.0 => typescript_3.1}/WORKSPACE (88%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.1_no_npm => typescript_3.1}/main.spec.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.1_no_npm => typescript_3.1}/main.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.1_no_npm => typescript_3.1}/package.json (83%) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/tsconfig.json rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_typescript_3.1_no_npm => typescript_3.1}/yarn.lock (100%) diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelignore b/third_party/github.com/bazelbuild/rules_typescript/.bazelignore index adba1fb2a7..f4b9e2b273 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelignore +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelignore @@ -1,12 +1,6 @@ node_modules -internal/e2e/ts_auto_deps -internal/e2e/package_karma -internal/e2e/package_karma_stack_trace -internal/e2e/package_typescript_2.7 -internal/e2e/package_typescript_2.8 -internal/e2e/package_typescript_2.9 -internal/e2e/package_typescript_3.0 -internal/e2e/package_typescript_3.1 -internal/e2e/package_typescript_3.1_no_npm -internal/e2e/package_typescript_karma +devserver/devserver/test/test-workspace internal/e2e/disable_tsetse_for_external +internal/e2e/npm_packages +internal/e2e/ts_auto_deps +internal/e2e/typescript_3.1 diff --git a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml index eb5c2558d3..9c19ed027c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml @@ -10,7 +10,7 @@ ## IMPORTANT # If you change the `docker_image` version, also change the `cache_key` suffix var_1: &docker_image circleci/node:10.12-browsers -var_2: &cache_key rules_typescript-{{ checksum "yarn.lock" }}-internal/karma:{{ checksum "internal/karma/yarn.lock" }}-node:10.12-browsers +var_2: &cache_key rules_typescript-{{ checksum "yarn.lock" }}-node:10.12-browsers var_3: &setup-bazel-remote-cache run: name: Start up bazel remote cache proxy @@ -90,9 +90,6 @@ jobs: key: *cache_key - run: yarn install - # Build the npm packages which are used in the e2e tests - - run: yarn bazel build //internal:npm_package - - run: yarn bazel build //internal/karma:npm_package - run: xvfb-run -a yarn e2e lint: diff --git a/third_party/github.com/bazelbuild/rules_typescript/.gitignore b/third_party/github.com/bazelbuild/rules_typescript/.gitignore index b19e31d8cd..be15be3d4a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.gitignore +++ b/third_party/github.com/bazelbuild/rules_typescript/.gitignore @@ -1,9 +1,8 @@ .idea node_modules /bazel-* -/internal/e2e/package_karma/bazel-* -/internal/e2e/package_typescript_*/bazel-* +/internal/e2e/npm_packages/*/bazel-* +/internal/e2e/npm_packages/*/package.json /internal/e2e/ts_auto_deps/bazel-* - -internal/e2e/ts_auto_deps/simple/BUILD -internal/e2e/ts_auto_deps/simple/BUILD.bazel +/internal/e2e/ts_auto_deps/simple/BUILD +/internal/e2e/ts_auto_deps/simple/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md b/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md index 684835fab7..426443f1ed 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md +++ b/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md @@ -42,12 +42,12 @@ to ``` The correct defaults to use so that you are not depending on the npm package downstream are in `/internal/defaults.bzl`. Note, your downstream -workspace will also need the correct `@npm` dependencies available to build these targets (see `internal/e2e/package_typescript_3.1_no_npm/package.json`). +workspace will also need the correct `@npm` dependencies available to build these targets (see `internal/e2e/typescript_3.1/package.json`). In the case of the `angular` workspace, some `@npm` dependencies in this repository will also need to be changed to `@ngdeps` since `angular` does not have an `@npm` workspace with npm dependencies. Note, with this workflow the downstream version of `@npm//typescript` will be used to compile the `ts_library` targets in `build_bazel_rules_typescript`. -An example of this can be found under `internal/e2e/package_typescript_3.1_no_npm`. +An example of this can be found under `internal/e2e/typescript_3.1`. ## Releasing diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index a62f07bc01..49d4fde2f8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -24,10 +24,6 @@ rules_typescript_dependencies() rules_typescript_dev_dependencies() -load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") - -rules_nodejs_dependencies() - load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") # Use a bazel-managed npm dependency, allowing us to test resolution to these paths diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/README.md b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/README.md new file mode 100644 index 0000000000..183e15cde1 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/README.md @@ -0,0 +1,19 @@ +# End-to-end tests for generated npm packages + +All tests that depend on the generated npm packages such as `@bazel/typescript` and `@bazel/karma` should +go in this folder. + +## Running + +These tests are run using `test.sh` which generates the `package.json` files in each directory before calling `yarn test`. +The `package.json` files are generated from template `package-template.json` files. The absolute locations of +the generated npm packages are substituted in when generating the `package.json` files. + +### Running an individual test + +To run a specific test run this script with `./internal/e2e/npm_packages/test.sh --test ` where `` +is the name of the test folder to run. + +### Updating yarn.lock file + +To update the `yarn.lock` files for these tests run `./internal/e2e/npm_packages/test.sh --update-lock-files`. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/.bazelrc similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/.bazelrc rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/.bazelrc diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/BUILD.bazel rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/README.md b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/README.md similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/README.md rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/README.md diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE similarity index 89% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/WORKSPACE rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE index f8b1ad9cb1..c2e453c1ea 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE @@ -12,21 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "package_karma_e2e") +workspace(name = "npm_packages_karma_e2e") local_repository( name = "build_bazel_rules_typescript", - path = "../../..", + path = "../../../..", ) load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") rules_typescript_dependencies() -load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") - -rules_nodejs_dependencies() - load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") node_repositories(preserve_symlinks = True) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/decrement.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/decrement.js similarity index 84% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/decrement.js rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/decrement.js index 6fd5fbb6e1..9743a4004d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/decrement.js +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/decrement.js @@ -3,7 +3,7 @@ if (typeof module === 'object' && typeof module.exports === 'object') { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === 'function' && define.amd) { - define('package_karma_e2e/decrement', ['require', 'exports'], factory); + define('npm_packages_karma_e2e/decrement', ['require', 'exports'], factory); } })(function(require, exports) { 'use strict'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/decrement.spec.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/decrement.spec.js similarity index 72% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/decrement.spec.js rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/decrement.spec.js index b29d16b322..6485d22b08 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/decrement.spec.js +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/decrement.spec.js @@ -4,13 +4,13 @@ if (typeof module === 'object' && typeof module.exports === 'object') { if (v !== undefined) module.exports = v; } else if (typeof define === 'function' && define.amd) { define( - 'package_karma_e2e/decrement.spec', - ['require', 'exports', 'package_karma_e2e/decrement'], factory); + 'npm_packages_karma_e2e/decrement.spec', + ['require', 'exports', 'npm_packages_karma_e2e/decrement'], factory); } })(function(require, exports) { 'use strict'; Object.defineProperty(exports, '__esModule', {value: true}); -var decrement_1 = require('package_karma_e2e/decrement'); +var decrement_1 = require('npm_packages_karma_e2e/decrement'); describe('decrementing', function() { it('should do that', function() { expect(decrement_1.decrement(1)).toBe(0); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/package-template.json new file mode 100644 index 0000000000..9f22599aa2 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/package-template.json @@ -0,0 +1,9 @@ +{ + "dependencies": { + "@bazel/karma": "file:${BAZEL_KARMA_NPM_PACKAGE}", + "karma": "3.0.0" + }, + "scripts": { + "test": "bazel test ..." + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock similarity index 55% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/yarn.lock rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock index f62050fe93..5d4f3b09ba 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock @@ -2,18 +2,19 @@ # yarn lockfile v1 -"@bazel/karma@file:../build_bazel_rules_typescript/bazel-bin/internal/karma/npm_package": - version "0.20.3" +"@bazel/karma@file:../../../../../../../../../private/var/tmp/_bazel_greg/2c1df01758b58adaef1f5cb29a065852/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/internal/karma/npm_package": + version "0.22.1-19-gecef600" dependencies: jasmine-core "2.8.0" - karma alexeagle/karma#fa1a84ac881485b5657cb669e9b4e5da77b79f0a + karma "^4.0.0" karma-chrome-launcher "2.2.0" karma-firefox-launcher "1.1.0" karma-jasmine "1.1.1" karma-requirejs "1.1.0" - karma-sauce-launcher "1.2.0" + karma-sauce-launcher "2.0.2" karma-sourcemap-loader "0.3.7" requirejs "2.3.5" + semver "5.6.0" tmp "0.0.33" abbrev@1: @@ -27,10 +28,6 @@ accepts@~1.3.4: mime-types "~2.1.18" negotiator "0.6.1" -addressparser@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746" - adm-zip@~0.4.3: version "0.4.11" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.11.tgz#2aa54c84c4b01a9d0fb89bb11982a51f13e3d62a" @@ -39,31 +36,12 @@ after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" -agent-base@4, agent-base@^4.1.0, agent-base@^4.2.0, agent-base@~4.2.0: +agent-base@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" dependencies: es6-promisify "^5.0.0" -ajv@^5.1.0, ajv@^5.3.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - -amqplib@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/amqplib/-/amqplib-0.5.2.tgz#d2d7313c7ffaa4d10bcf1e6252de4591b6cc7b63" - dependencies: - bitsyntax "~0.0.4" - bluebird "^3.4.6" - buffer-more-ints "0.0.2" - readable-stream "1.x >=1.1.9" - safe-buffer "^5.0.1" - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -72,17 +50,6 @@ 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" - -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -94,30 +61,6 @@ aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" -archiver-utils@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" - dependencies: - glob "^7.0.0" - graceful-fs "^4.1.0" - lazystream "^1.0.0" - lodash "^4.8.0" - normalize-path "^2.0.0" - readable-stream "^2.0.0" - -archiver@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-2.1.1.tgz#ff662b4a78201494a3ee544d3a33fe7496509ebc" - dependencies: - archiver-utils "^1.3.0" - async "^2.0.0" - buffer-crc32 "^0.2.1" - glob "^7.0.0" - lodash "^4.8.0" - readable-stream "^2.0.0" - tar-stream "^1.5.0" - zip-stream "^1.2.0" - 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" @@ -125,17 +68,11 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - arr-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.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" @@ -159,28 +96,10 @@ arraybuffer.slice@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" -ast-types@0.x.x: - version "0.11.5" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.5.tgz#9890825d660c03c28339f315e9fa0a360e31ec28" - async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -189,44 +108,16 @@ async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" -async@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.0.1.tgz#b709cc0280a9c36f09f4536be823c838a9049e25" - dependencies: - lodash "^4.8.0" - -async@^2.0.0, async@^2.1.2, async@~2.6.0: +async@^2.1.2: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" dependencies: lodash "^4.17.10" -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - -aws4@^1.2.1, aws4@^1.6.0, aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - -axios@^0.15.3: - version "0.15.3" - resolved "http://registry.npmjs.org/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053" - dependencies: - follow-redirects "1.0.0" - backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" @@ -239,10 +130,6 @@ base64-arraybuffer@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" -base64-js@^1.0.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" - base64id@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" @@ -259,12 +146,6 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - dependencies: - tweetnacl "^0.14.3" - better-assert@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" @@ -275,30 +156,11 @@ binary-extensions@^1.0.0: version "1.12.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" -bitsyntax@~0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/bitsyntax/-/bitsyntax-0.0.4.tgz#eb10cc6f82b8c490e3e85698f07e83d46e0cba82" - dependencies: - buffer-more-ints "0.0.2" - -bl@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - -bl@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" - dependencies: - readable-stream "~2.0.5" - blob@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" -bluebird@^3.3.0, bluebird@^3.4.6: +bluebird@^3.3.0: version "3.5.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" @@ -317,24 +179,6 @@ body-parser@^1.16.1: raw-body "2.3.3" type-is "~1.6.16" -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - -boom@4.x.x: - version "4.3.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" - dependencies: - hoek "4.x.x" - -boom@5.x.x: - version "5.2.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" - dependencies: - hoek "4.x.x" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -348,14 +192,6 @@ braces@^0.1.2: dependencies: expand-range "^0.1.0" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - braces@^2.3.0, braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -375,44 +211,17 @@ buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" -buffer-alloc@^1.1.0, buffer-alloc@^1.2.0: +buffer-alloc@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" dependencies: buffer-alloc-unsafe "^1.1.0" buffer-fill "^1.0.0" -buffer-crc32@^0.2.1: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" -buffer-more-ints@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/buffer-more-ints/-/buffer-more-ints-0.0.2.tgz#26b3885d10fa13db7fc01aae3aab870199e0124c" - -buffer@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - -buildmail@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/buildmail/-/buildmail-4.0.1.tgz#877f7738b78729871c9a105e3b837d2be11a7a72" - dependencies: - addressparser "1.0.1" - libbase64 "0.1.0" - libmime "3.0.0" - libqp "1.1.0" - nodemailer-fetch "1.6.0" - nodemailer-shared "1.1.0" - punycode "1.4.1" - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -435,39 +244,6 @@ callsite@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" -caseless@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -chalk@^1.1.1: - version "1.1.3" - resolved "http://registry.npmjs.org/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" - -chokidar@^1.4.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - chokidar@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" @@ -491,7 +267,7 @@ chownr@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" -circular-json@^0.5.4, circular-json@^0.5.5: +circular-json@^0.5.5: version "0.5.7" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.7.tgz#b8be478d72ea58c7eeda26bf1cf1fba43d188842" @@ -504,10 +280,6 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - 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" @@ -529,22 +301,6 @@ combine-lists@^1.0.0: dependencies: lodash "^4.5.0" -combined-stream@1.0.6: - version "1.0.6" - resolved "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" - dependencies: - delayed-stream "~1.0.0" - -combined-stream@^1.0.5, combined-stream@~1.0.5, combined-stream@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" - dependencies: - delayed-stream "~1.0.0" - -commander@^2.9.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" - component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -557,15 +313,6 @@ component-inherit@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" -compress-commons@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.2.2.tgz#524a9f10903f3a813389b0225d27c48bb751890f" - dependencies: - buffer-crc32 "^0.2.1" - crc32-stream "^2.0.0" - normalize-path "^2.0.0" - readable-stream "^2.0.0" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -599,60 +346,30 @@ core-js@^2.2.0: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" -core-util-is@1.0.2, core-util-is@~1.0.0: +core-js@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" + integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= + +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" -crc32-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz#e3cdd3b4df3168dd74e3de3fbbcb7b297fe908f4" - dependencies: - crc "^3.4.4" - readable-stream "^2.0.0" - -crc@^3.4.4: - version "3.8.0" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" - dependencies: - buffer "^5.1.0" - -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - -cryptiles@3.x.x: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" - dependencies: - boom "5.x.x" - custom-event@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - -data-uri-to-buffer@1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" - date-format@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" -debug@2, debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@~2.6.4, debug@~2.6.6: +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@3.1.0, debug@=3.1.0, debug@~3.1.0: +debug@=3.1.0, debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: @@ -672,10 +389,6 @@ 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-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -695,18 +408,6 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -degenerator@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" - dependencies: - ast-types "0.x.x" - escodegen "1.x.x" - esprima "3.x.x" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -732,17 +433,6 @@ dom-serialize@^2.2.0: extend "^3.0.0" void-elements "^2.0.0" -double-ended-queue@^2.1.0-0: - version "2.1.0-0" - resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -751,28 +441,6 @@ encodeurl@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" -end-of-stream@^1.0.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - dependencies: - once "^1.4.0" - -engine.io-client@~3.1.0: - version "3.1.6" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.6.tgz#5bdeb130f8b94a50ac5cbeb72583e7a4a063ddfd" - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.1.1" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.5" - parseuri "0.0.5" - ws "~3.3.1" - xmlhttprequest-ssl "~1.5.4" - yeast "0.1.2" - engine.io-client@~3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" @@ -799,19 +467,6 @@ engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: blob "0.0.4" has-binary2 "~1.0.2" -engine.io@~3.1.0: - version "3.1.5" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.5.tgz#0e7ef9d690eb0b35597f1d4ad02a26ca2dba3845" - dependencies: - accepts "~1.3.4" - base64id "1.0.0" - cookie "0.3.1" - debug "~3.1.0" - engine.io-parser "~2.1.0" - ws "~3.3.1" - optionalDependencies: - uws "~9.14.0" - engine.io@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.0.tgz#54332506f42f2edc71690d2f2a42349359f3bf7d" @@ -831,6 +486,11 @@ es6-promise@^4.0.3: version "4.2.5" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" +es6-promise@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" + integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= + es6-promisify@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" @@ -841,33 +501,6 @@ 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: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -escodegen@1.x.x: - version "1.11.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" - dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -esprima@3.x.x, esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - -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" - eventemitter3@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" @@ -880,12 +513,6 @@ expand-braces@^0.1.1: array-unique "^0.2.1" braces "^0.1.2" -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -905,12 +532,6 @@ expand-range@^0.1.0: is-number "^0.1.1" repeat-string "^0.2.2" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -924,16 +545,10 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.1, extend@~3.0.2: +extend@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -947,44 +562,6 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - -file-uri-to-path@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -1006,11 +583,10 @@ finalhandler@1.1.0: statuses "~1.3.1" unpipe "~1.0.0" -follow-redirects@1.0.0: - version "1.0.0" - resolved "http://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37" - dependencies: - debug "^2.2.0" +flatted@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" + integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== follow-redirects@^1.0.0: version "1.5.8" @@ -1018,36 +594,10 @@ follow-redirects@^1.0.0: dependencies: debug "=3.1.0" -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.0.0.tgz#6f0aebadcc5da16c13e1ecc11137d85f9b883b25" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.11" - -form-data@~2.3.0, form-data@~2.3.1, form-data@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" - dependencies: - asynckit "^0.4.0" - combined-stream "1.0.6" - mime-types "^2.1.12" - fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -1060,10 +610,6 @@ fs-access@^1.0.0: dependencies: null-check "^1.0.0" -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -1074,20 +620,13 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.0.0, fsevents@^1.2.2: +fsevents@^1.2.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" -ftp@~0.3.10: - version "0.3.10" - resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" - dependencies: - readable-stream "1.1.x" - xregexp "2.0.0" - gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -1101,52 +640,10 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -generate-function@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" - dependencies: - is-property "^1.0.2" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - dependencies: - is-property "^1.0.0" - -get-uri@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.2.tgz#5c795e71326f6ca1286f2fc82575cd2bab2af578" - dependencies: - data-uri-to-buffer "1" - debug "2" - extend "3" - file-uri-to-path "1" - ftp "~0.3.10" - readable-stream "2" - 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" -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - dependencies: - assert-plus "^1.0.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - dependencies: - is-glob "^2.0.0" - glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -1154,7 +651,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob@^7.0.0, glob@^7.0.5, glob@^7.1.1: +glob@^7.0.5, glob@^7.1.1: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" dependencies: @@ -1165,43 +662,10 @@ glob@^7.0.0, glob@^7.0.5, glob@^7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - -har-validator@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" - dependencies: - chalk "^1.1.1" - commander "^2.9.0" - is-my-json-valid "^2.12.4" - pinkie-promise "^2.0.0" - -har-validator@~5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" - dependencies: - ajv "^5.1.0" - har-schema "^2.0.0" - -har-validator@~5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" - dependencies: - ajv "^5.3.0" - har-schema "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - has-binary2@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" @@ -1243,39 +707,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -hawk@~6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" - dependencies: - boom "4.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - sntp "2.x.x" - -hipchat-notifier@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz#b6d249755437c191082367799d3ba9a0f23b231e" - dependencies: - lodash "^4.0.0" - request "^2.0.0" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - -hoek@4.x.x: - version "4.2.1" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" - http-errors@1.6.3, http-errors@~1.6.3: version "1.6.3" resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" @@ -1285,13 +716,6 @@ http-errors@1.6.3, http-errors@~1.6.3: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - dependencies: - agent-base "4" - debug "3.1.0" - http-proxy@^1.13.0: version "1.17.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" @@ -1300,33 +724,6 @@ http-proxy@^1.13.0: follow-redirects "^1.0.0" requires-port "^1.0.0" -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -httpntlm@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/httpntlm/-/httpntlm-1.6.1.tgz#ad01527143a2e8773cfae6a96f58656bb52a34b2" - dependencies: - httpreq ">=0.4.22" - underscore "~1.7.0" - -httpreq@>=0.4.22: - version "0.4.24" - resolved "https://registry.yarnpkg.com/httpreq/-/httpreq-0.4.24.tgz#4335ffd82cd969668a39465c929ac61d6393627f" - https-proxy-agent@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" @@ -1334,10 +731,6 @@ https-proxy-agent@^2.2.1: agent-base "^4.1.0" debug "^3.1.0" -iconv-lite@0.4.15: - version "0.4.15" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" - iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" @@ -1350,28 +743,21 @@ iconv-lite@^0.4.4: 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" +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" -inflection@~1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" - -inflection@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.3.8.tgz#cbd160da9f75b14c3cc63578d4f396784bf3014e" - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -1387,10 +773,6 @@ ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" -ip@^1.1.2, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - 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" @@ -1441,16 +823,6 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -1461,10 +833,6 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - 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" @@ -1479,12 +847,6 @@ 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@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" - is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -1497,74 +859,26 @@ is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" -is-my-ip-valid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" - -is-my-json-valid@^2.12.4: - version "2.19.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.19.0.tgz#8fd6e40363cd06b963fa877d444bfb5eddc62175" - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - is-my-ip-valid "^1.0.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - is-number@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - is-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-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-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-property@^1.0.0, is-property@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" +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-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" -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: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -1593,42 +907,20 @@ isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - jasmine-core@2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stringify-safe@5.0.x, json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" +jszip@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" + integrity sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ== dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" + core-js "~2.3.0" + es6-promise "~3.0.2" + lie "~3.1.0" + pako "~1.0.2" + readable-stream "~2.0.6" karma-chrome-launcher@2.2.0: version "2.2.0" @@ -1649,14 +941,14 @@ karma-requirejs@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/karma-requirejs/-/karma-requirejs-1.1.0.tgz#fddae2cb87d7ebc16fb0222893564d7fee578798" -karma-sauce-launcher@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-1.2.0.tgz#6f2558ddef3cf56879fa27540c8ae9f8bfd16bca" +karma-sauce-launcher@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-2.0.2.tgz#dbf98e70d86bf287b03a537cf637eb7aefa975c3" + integrity sha512-jLUFaJhHMcKpxFWUesyWYihzM5FvQiJsDwGcCtKeOy2lsWhkVw0V0Byqb1d+wU6myU1mribBtsIcub23HS4kWA== dependencies: - q "^1.5.0" - sauce-connect-launcher "^1.2.2" - saucelabs "^1.4.0" - wd "^1.4.0" + sauce-connect-launcher "^1.2.4" + saucelabs "^1.5.0" + selenium-webdriver "^4.0.0-alpha.1" karma-sourcemap-loader@0.3.7: version "0.3.7" @@ -1696,13 +988,14 @@ karma@3.0.0: tmp "0.0.33" useragent "2.2.1" -karma@alexeagle/karma#fa1a84ac881485b5657cb669e9b4e5da77b79f0a: - version "1.7.1" - resolved "https://codeload.github.com/alexeagle/karma/tar.gz/fa1a84ac881485b5657cb669e9b4e5da77b79f0a" +karma@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-4.0.0.tgz#f28e38a2b66243fde3f98e12a8dcaa2c6ff8ca9c" + integrity sha512-EFoFs3F6G0BcUGPNOn/YloGOb3h09hzTguyXlg6loHlKY76qbJikkcyPk43m2kfRF65TUGda/mig29QQtyhm1g== dependencies: bluebird "^3.3.0" body-parser "^1.16.1" - chokidar "^1.4.1" + chokidar "^2.0.3" colors "^1.1.0" combine-lists "^1.0.0" connect "^3.6.0" @@ -1710,23 +1003,24 @@ karma@alexeagle/karma#fa1a84ac881485b5657cb669e9b4e5da77b79f0a: di "^0.0.1" dom-serialize "^2.2.0" expand-braces "^0.1.1" + flatted "^2.0.0" glob "^7.1.1" graceful-fs "^4.1.2" http-proxy "^1.13.0" isbinaryfile "^3.0.0" - lodash "^4.17.4" - log4js "^2.3.9" - mime "^1.3.4" + lodash "^4.17.5" + log4js "^3.0.0" + mime "^2.3.1" minimatch "^3.0.2" optimist "^0.6.1" qjobs "^1.1.4" range-parser "^1.2.0" rimraf "^2.6.0" safe-buffer "^5.0.1" - socket.io "2.0.4" + socket.io "2.1.1" source-map "^0.6.1" tmp "0.0.33" - useragent "^2.1.12" + useragent "2.3.0" kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" @@ -1748,66 +1042,21 @@ 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" -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - dependencies: - readable-stream "^2.0.5" - -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" - -libbase64@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/libbase64/-/libbase64-0.1.0.tgz#62351a839563ac5ff5bd26f12f60e9830bb751e6" - -libmime@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/libmime/-/libmime-3.0.0.tgz#51a1a9e7448ecbd32cda54421675bb21bc093da6" +lie@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= dependencies: - iconv-lite "0.4.15" - libbase64 "0.1.0" - libqp "1.1.0" - -libqp@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/libqp/-/libqp-1.1.0.tgz#f5e6e06ad74b794fb5b5b66988bf728ef1dedbe8" + immediate "~3.0.5" lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" -lodash@4.17.10: - version "4.17.10" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" - -lodash@^4.0.0, lodash@^4.15.0, lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.5.0, lodash@^4.8.0: +lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.5.0: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" -log4js@^2.3.9: - version "2.11.0" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-2.11.0.tgz#bf3902eff65c6923d9ce9cfbd2db54160e34005a" - dependencies: - circular-json "^0.5.4" - date-format "^1.2.0" - debug "^3.1.0" - semver "^5.5.0" - streamroller "0.7.0" - optionalDependencies: - amqplib "^0.5.2" - axios "^0.15.3" - hipchat-notifier "^1.1.0" - loggly "^1.1.0" - mailgun-js "^0.18.0" - nodemailer "^2.5.0" - redis "^2.7.1" - slack-node "~0.2.0" - log4js@^3.0.0: version "3.0.5" resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.5.tgz#b80146bfebad68b430d4f3569556d8a6edfef303" @@ -1818,46 +1067,17 @@ log4js@^3.0.0: rfdc "^1.1.2" streamroller "0.7.0" -loggly@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/loggly/-/loggly-1.1.1.tgz#0a0fc1d3fa3a5ec44fdc7b897beba2a4695cebee" - dependencies: - json-stringify-safe "5.0.x" - request "2.75.x" - timespan "2.3.x" - lru-cache@2.2.x: version "2.2.4" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" -lru-cache@4.1.x, lru-cache@^4.1.2: +lru-cache@4.1.x: version "4.1.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" dependencies: pseudomap "^1.0.2" yallist "^2.1.2" -mailcomposer@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/mailcomposer/-/mailcomposer-4.0.1.tgz#0e1c44b2a07cf740ee17dc149ba009f19cadfeb4" - dependencies: - buildmail "4.0.1" - libmime "3.0.0" - -mailgun-js@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/mailgun-js/-/mailgun-js-0.18.1.tgz#ee39aa18d7bb598a5ce9ede84afb681defc8a6b0" - dependencies: - async "~2.6.0" - debug "~3.1.0" - form-data "~2.3.0" - inflection "~1.12.0" - is-stream "^1.1.0" - path-proxy "~1.0.0" - promisify-call "^2.0.2" - proxy-agent "~3.0.0" - tsscmp "~1.0.0" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -1868,32 +1088,10 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -math-random@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -1916,16 +1114,12 @@ mime-db@~1.36.0: version "1.36.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" -mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19, mime-types@~2.1.7: +mime-types@~2.1.18: version "2.1.20" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" dependencies: mime-db "~1.36.0" -mime@^1.3.4: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - mime@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" @@ -2014,10 +1208,6 @@ negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" -netmask@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" - node-pre-gyp@^0.10.0: version "0.10.3" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" @@ -2033,59 +1223,6 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -node-uuid@~1.4.7: - version "1.4.8" - resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" - -nodemailer-direct-transport@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz#e96fafb90358560947e569017d97e60738a50a86" - dependencies: - nodemailer-shared "1.1.0" - smtp-connection "2.12.0" - -nodemailer-fetch@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz#79c4908a1c0f5f375b73fe888da9828f6dc963a4" - -nodemailer-shared@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz#cf5994e2fd268d00f5cf0fa767a08169edb07ec0" - dependencies: - nodemailer-fetch "1.6.0" - -nodemailer-smtp-pool@2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.8.2.tgz#2eb94d6cf85780b1b4725ce853b9cbd5e8da8c72" - dependencies: - nodemailer-shared "1.1.0" - nodemailer-wellknown "0.1.10" - smtp-connection "2.12.0" - -nodemailer-smtp-transport@2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.2.tgz#03d71c76314f14ac7dbc7bf033a6a6d16d67fb77" - dependencies: - nodemailer-shared "1.1.0" - nodemailer-wellknown "0.1.10" - smtp-connection "2.12.0" - -nodemailer-wellknown@0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz#586db8101db30cb4438eb546737a41aad0cf13d5" - -nodemailer@^2.5.0: - version "2.7.2" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-2.7.2.tgz#f242e649aeeae39b6c7ed740ef7b061c404d30f9" - dependencies: - libmime "3.0.0" - mailcomposer "4.0.1" - nodemailer-direct-transport "3.3.2" - nodemailer-shared "1.1.0" - nodemailer-smtp-pool "2.8.2" - nodemailer-smtp-transport "2.7.2" - socks "1.1.9" - nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -2093,7 +1230,7 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.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: @@ -2127,14 +1264,6 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -oauth-sign@~0.8.1, oauth-sign@~0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -2157,13 +1286,6 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -2176,7 +1298,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@^1.3.0, once@^1.4.0: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -2189,22 +1311,11 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -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-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.2: +os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -2215,37 +1326,10 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -pac-proxy-agent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-3.0.0.tgz#11d578b72a164ad74bf9d5bac9ff462a38282432" - dependencies: - agent-base "^4.2.0" - debug "^3.1.0" - get-uri "^2.0.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - pac-resolver "^3.0.0" - raw-body "^2.2.0" - socks-proxy-agent "^4.0.1" - -pac-resolver@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-3.0.0.tgz#6aea30787db0a891704deb7800a722a7615a6f26" - dependencies: - co "^4.6.0" - degenerator "^1.0.4" - ip "^1.1.5" - netmask "^1.0.6" - thunkify "^2.1.2" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" +pako@~1.0.2: + version "1.0.8" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.8.tgz#6844890aab9c635af868ad5fecc62e8acbba3ea4" + integrity sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA== parseqs@0.0.5: version "0.0.5" @@ -2275,38 +1359,10 @@ path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -path-proxy@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/path-proxy/-/path-proxy-1.0.0.tgz#18e8a36859fc9d2f1a53b48dee138543c020de5e" - dependencies: - inflection "~1.3.0" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - 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" -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" @@ -2315,74 +1371,23 @@ 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" -promisify-call@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/promisify-call/-/promisify-call-2.0.4.tgz#d48c2d45652ccccd52801ddecbd533a6d4bd5fba" - dependencies: - with-callback "^1.0.2" - -proxy-agent@~3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-3.0.3.tgz#1c1a33db60ef5f2e9e35b876fd63c2bc681c611d" - dependencies: - agent-base "^4.2.0" - debug "^3.1.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - lru-cache "^4.1.2" - pac-proxy-agent "^3.0.0" - proxy-from-env "^1.0.0" - socks-proxy-agent "^4.0.1" - -proxy-from-env@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" -psl@^1.1.24: - version "1.1.29" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" - -punycode@1.4.1, punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -q@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" - -q@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - qjobs@^1.1.4: version "1.2.0" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" -qs@6.5.2, qs@~6.5.1, qs@~6.5.2: +qs@6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" -qs@~6.2.0: - version "6.2.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" - -randomatic@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116" - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - range-parser@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" -raw-body@2.3.3, raw-body@^2.2.0: +raw-body@2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" dependencies: @@ -2400,16 +1405,7 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -readable-stream@1.1.x, "readable-stream@1.x >=1.1.9": - version "1.1.14" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.3.0, readable-stream@^2.3.5: +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.0: version "2.3.6" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -2421,9 +1417,10 @@ readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stre string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@~2.0.5: +readable-stream@~2.0.6: version "2.0.6" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -2440,28 +1437,6 @@ readdirp@^2.0.0: micromatch "^3.1.10" readable-stream "^2.0.2" -redis-commands@^1.2.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.5.tgz#4495889414f1e886261180b1442e7295602d83a2" - -redis-parser@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b" - -redis@^2.7.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02" - dependencies: - double-ended-queue "^2.1.0-0" - redis-commands "^1.2.0" - redis-parser "^2.6.0" - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - dependencies: - is-equal-shallow "^0.1.3" - 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" @@ -2481,97 +1456,10 @@ repeat-string@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" -request@2.75.x: - version "2.75.0" - resolved "http://registry.npmjs.org/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - bl "~1.1.2" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.0.0" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - node-uuid "~1.4.7" - oauth-sign "~0.8.1" - qs "~6.2.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - -request@2.85.0: - version "2.85.0" - resolved "http://registry.npmjs.org/request/-/request-2.85.0.tgz#5a03615a47c61420b3eb99b7dba204f83603e1fa" - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.6.0" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.1" - forever-agent "~0.6.1" - form-data "~2.3.1" - har-validator "~5.0.3" - hawk "~6.0.2" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.17" - oauth-sign "~0.8.2" - performance-now "^2.1.0" - qs "~6.5.1" - safe-buffer "^5.1.1" - stringstream "~0.0.5" - tough-cookie "~2.3.3" - tunnel-agent "^0.6.0" - uuid "^3.1.0" - -request@^2.0.0, request@^2.74.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.0" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -requestretry@^1.2.2: - version "1.13.0" - resolved "https://registry.yarnpkg.com/requestretry/-/requestretry-1.13.0.tgz#213ec1006eeb750e8b8ce54176283d15a8d55d94" - dependencies: - extend "^3.0.0" - lodash "^4.15.0" - request "^2.74.0" - when "^3.7.7" - requirejs@2.3.5: version "2.3.5" resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0" @@ -2598,7 +1486,7 @@ rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: dependencies: glob "^7.0.5" -safe-buffer@^5.0.1, 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.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" @@ -2608,13 +1496,14 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" -sauce-connect-launcher@^1.2.2: +sauce-connect-launcher@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.2.4.tgz#8d38f85242a9fbede1b2303b559f7e20c5609a1c" + integrity sha512-X2vfwulR6brUGiicXKxPm1GJ7dBEeP1II450Uv4bHGrcGOapZNgzJvn9aioea5IC5BPp/7qjKdE3xbbTBIVXMA== dependencies: adm-zip "~0.4.3" async "^2.1.2" @@ -2622,17 +1511,33 @@ sauce-connect-launcher@^1.2.2: lodash "^4.16.6" rimraf "^2.5.4" -saucelabs@^1.4.0: +saucelabs@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" + integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== dependencies: https-proxy-agent "^2.2.1" -sax@^1.2.4: +sax@>=0.6.0, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" -semver@^5.3.0, semver@^5.5.0: +selenium-webdriver@^4.0.0-alpha.1: + version "4.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz#cc93415e21d2dc1dfd85dfc5f6b55f3ac53933b1" + integrity sha512-z88rdjHAv3jmTZ7KSGUkTvo4rGzcDGMq0oXWHNIDK96Gs31JKVdu9+FMtT4KBrVoibg8dUicJDok6GnqqttO5Q== + dependencies: + jszip "^3.1.3" + rimraf "^2.5.4" + tmp "0.0.30" + xml2js "^0.4.17" + +semver@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +semver@^5.3.0: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" @@ -2666,27 +1571,6 @@ signal-exit@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -slack-node@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/slack-node/-/slack-node-0.2.0.tgz#de4b8dddaa8b793f61dbd2938104fdabf37dfa30" - dependencies: - requestretry "^1.2.2" - -smart-buffer@^1.0.4: - version "1.1.15" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" - -smart-buffer@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.1.tgz#07ea1ca8d4db24eb4cac86537d7d18995221ace3" - -smtp-connection@2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/smtp-connection/-/smtp-connection-2.12.0.tgz#d76ef9127cb23c2259edb1e8349c2e8d5e2d74c1" - dependencies: - httpntlm "1.6.1" - nodemailer-shared "1.1.0" - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -2714,40 +1598,10 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - -sntp@2.x.x: - version "2.1.0" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" - dependencies: - hoek "4.x.x" - socket.io-adapter@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" -socket.io-client@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e" - dependencies: - backo2 "1.0.2" - base64-arraybuffer "0.1.5" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "~2.6.4" - engine.io-client "~3.1.0" - has-cors "1.1.0" - indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - socket.io-parser "~3.1.1" - to-array "0.1.4" - socket.io-client@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" @@ -2767,15 +1621,6 @@ socket.io-client@2.1.1: socket.io-parser "~3.2.0" to-array "0.1.4" -socket.io-parser@~3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.3.tgz#ed2da5ee79f10955036e3da413bfd7f1e4d86c8e" - dependencies: - component-emitter "1.2.1" - debug "~3.1.0" - has-binary2 "~1.0.2" - isarray "2.0.1" - socket.io-parser@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" @@ -2784,16 +1629,6 @@ socket.io-parser@~3.2.0: debug "~3.1.0" isarray "2.0.1" -socket.io@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014" - dependencies: - debug "~2.6.6" - engine.io "~3.1.0" - socket.io-adapter "~1.1.0" - socket.io-client "2.0.4" - socket.io-parser "~3.1.1" - socket.io@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" @@ -2805,27 +1640,6 @@ socket.io@2.1.1: socket.io-client "2.1.1" socket.io-parser "~3.2.0" -socks-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz#5936bf8b707a993079c6f37db2091821bffa6473" - dependencies: - agent-base "~4.2.0" - socks "~2.2.0" - -socks@1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.9.tgz#628d7e4d04912435445ac0b6e459376cb3e6d691" - dependencies: - ip "^1.1.2" - smart-buffer "^1.0.4" - -socks@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.1.tgz#68ad678b3642fbc5d99c64c165bc561eab0215f9" - dependencies: - ip "^1.1.5" - smart-buffer "^4.0.1" - 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" @@ -2844,7 +1658,7 @@ source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" -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" @@ -2854,21 +1668,6 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -sshpk@^1.7.0: - version "1.14.2" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - safer-buffer "^2.0.2" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -2918,10 +1717,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringstream@~0.0.4, stringstream@~0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" - 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" @@ -2938,22 +1733,6 @@ 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" - -tar-stream@^1.5.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.1.tgz#f84ef1696269d6223ca48f6e1eeede3f7e81f395" - dependencies: - bl "^1.0.0" - buffer-alloc "^1.1.0" - end-of-stream "^1.0.0" - fs-constants "^1.0.0" - readable-stream "^2.3.0" - to-buffer "^1.1.0" - xtend "^4.0.0" - tar@^4: version "4.4.6" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" @@ -2966,13 +1745,12 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" -thunkify@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" - -timespan@2.3.x: - version "2.3.0" - resolved "https://registry.yarnpkg.com/timespan/-/timespan-2.3.0.tgz#4902ce040bd13d845c8f59b27e9d59bad6f39929" +tmp@0.0.30: + version "0.0.30" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" + integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= + dependencies: + os-tmpdir "~1.0.1" tmp@0.0.33, tmp@0.0.x: version "0.0.33" @@ -2984,10 +1762,6 @@ to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" -to-buffer@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" - 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" @@ -3010,43 +1784,6 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@~2.3.0, tough-cookie@~2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - dependencies: - punycode "^1.4.1" - -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - -tsscmp@~1.0.0: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -tunnel-agent@~0.4.1: - version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - -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" - type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" @@ -3058,10 +1795,6 @@ ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" -underscore@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" - union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" @@ -3101,9 +1834,10 @@ useragent@2.2.1: lru-cache "2.2.x" tmp "0.0.x" -useragent@^2.1.12: +useragent@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" + integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== dependencies: lru-cache "4.1.x" tmp "0.0.x" @@ -3116,46 +1850,10 @@ utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" -uuid@^3.1.0, uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - -uws@~9.14.0: - version "9.14.0" - resolved "https://registry.yarnpkg.com/uws/-/uws-9.14.0.tgz#fac8386befc33a7a3705cbd58dc47b430ca4dd95" - -vargs@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/vargs/-/vargs-0.1.0.tgz#6b6184da6520cc3204ce1b407cac26d92609ebff" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" -wd@^1.4.0: - version "1.10.3" - resolved "https://registry.yarnpkg.com/wd/-/wd-1.10.3.tgz#395ac7eb58a98e556369f8f8e5f845d91fb152a3" - dependencies: - archiver "2.1.1" - async "2.0.1" - lodash "4.17.10" - mkdirp "^0.5.1" - q "1.4.1" - request "2.85.0" - vargs "0.1.0" - -when@^3.7.7: - version "3.7.8" - resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" - which@^1.2.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -3168,18 +1866,10 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -with-callback@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/with-callback/-/with-callback-1.0.2.tgz#a09629b9a920028d721404fb435bdcff5c91bc21" - wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" -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" @@ -3192,18 +1882,23 @@ ws@~3.3.1: safe-buffer "~5.1.0" ultron "~1.1.0" +xml2js@^0.4.17: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + xmlhttprequest-ssl@~1.5.4: version "1.5.5" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" -xregexp@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" - -xtend@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" @@ -3215,12 +1910,3 @@ yallist@^3.0.0, yallist@^3.0.2: yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - -zip-stream@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.2.0.tgz#a8bc45f4c1b49699c6b90198baacaacdbcd4ba04" - dependencies: - archiver-utils "^1.3.0" - compress-commons "^1.2.0" - lodash "^4.8.0" - readable-stream "^2.0.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/.bazelrc similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/.bazelrc rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/.bazelrc diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/BUILD.bazel similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/BUILD.bazel rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE similarity index 89% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/WORKSPACE rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE index aa0c58bfc1..5cad07ea92 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE @@ -12,21 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "package_karma_stack_trace") +workspace(name = "npm_packages_karma_stack_trace") local_repository( name = "build_bazel_rules_typescript", - path = "../../..", + path = "../../../..", ) load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") rules_typescript_dependencies() -load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") - -rules_nodejs_dependencies() - load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") node_repositories(preserve_symlinks = True) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/failing.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/failing.spec.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/failing.spec.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/failing.spec.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/package-template.json new file mode 100644 index 0000000000..4e167d87a0 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/package-template.json @@ -0,0 +1,11 @@ +{ + "dependencies": { + "@bazel/karma": "file:${BAZEL_KARMA_NPM_PACKAGE}", + "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", + "@types/jasmine": "2.8.2", + "typescript": "3.1.x" + }, + "scripts": { + "test": "bazel test ..." + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/BUILD.bazel similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/BUILD.bazel rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/hello.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/hello.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/hello.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/hello.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/test.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/test.spec.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_folder/test.spec.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/test.spec.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_sourcemap.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_sourcemap.sh similarity index 89% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_sourcemap.sh rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_sourcemap.sh index 0d85f8ecb6..1f733f8ef1 100755 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/test_sourcemap.sh +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_sourcemap.sh @@ -1,5 +1,5 @@ # Execute first test. -OUTPUT=$(${RUNFILES_DIR}/package_karma_stack_trace/karma_test_chromium-local) +OUTPUT=$(${RUNFILES_DIR}/npm_packages_karma_stack_trace/karma_test_chromium-local) # Test whether the package relative TS path is printed in stack trace. echo ${OUTPUT} | grep -q "(failing.spec.ts:7:17" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/tsconfig.json similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/tsconfig.json diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/yarn.lock similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/yarn.lock rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/yarn.lock diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/.bazelrc similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/.bazelrc rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/.bazelrc diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/BUILD.bazel similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/BUILD.bazel rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE similarity index 89% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/WORKSPACE rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE index d30e254c56..aab8aa706c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE @@ -12,21 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "package_typescript_karma_e2e") +workspace(name = "npm_package_karma_typescript_e2e") local_repository( name = "build_bazel_rules_typescript", - path = "../../..", + path = "../../../..", ) load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") rules_typescript_dependencies() -load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") - -rules_nodejs_dependencies() - load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") node_repositories(preserve_symlinks = True) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/decrement.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/decrement.spec.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/decrement.spec.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/decrement.spec.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/decrement.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/decrement.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/decrement.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/decrement.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/package-template.json new file mode 100644 index 0000000000..a2d01b3582 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/package-template.json @@ -0,0 +1,11 @@ +{ + "dependencies": { + "@bazel/karma": "file:${BAZEL_KARMA_NPM_PACKAGE}", + "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", + "@types/jasmine": "2.8.2", + "typescript": "2.9.2" + }, + "scripts": { + "test": "bazel test ..." + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/tsconfig.json similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/tsconfig.json diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/yarn.lock similarity index 56% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/yarn.lock rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/yarn.lock index d35f28b551..4434114664 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/yarn.lock @@ -2,26 +2,27 @@ # yarn lockfile v1 -"@bazel/karma@file:../build_bazel_rules_typescript/bazel-bin/internal/karma/npm_package": - version "0.20.3" +"@bazel/karma@file:../../../../../../../../../private/var/tmp/_bazel_greg/2c1df01758b58adaef1f5cb29a065852/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/internal/karma/npm_package": + version "0.22.1-19-gecef600" dependencies: jasmine-core "2.8.0" - karma alexeagle/karma#fa1a84ac881485b5657cb669e9b4e5da77b79f0a + karma "^4.0.0" karma-chrome-launcher "2.2.0" karma-firefox-launcher "1.1.0" karma-jasmine "1.1.1" karma-requirejs "1.1.0" - karma-sauce-launcher "1.2.0" + karma-sauce-launcher "2.0.2" karma-sourcemap-loader "0.3.7" requirejs "2.3.5" + semver "5.6.0" tmp "0.0.33" -"@bazel/typescript@file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package": - version "0.20.3" +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/2c1df01758b58adaef1f5cb29a065852/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/internal/npm_package": + version "0.22.1-18-g169a278" dependencies: protobufjs "5.0.3" + semver "5.6.0" source-map-support "0.5.9" - tsickle "0.28.0" tsutils "2.27.2" "@types/jasmine@2.8.2": @@ -39,10 +40,6 @@ accepts@~1.3.4: mime-types "~2.1.18" negotiator "0.6.1" -addressparser@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746" - adm-zip@~0.4.3: version "0.4.11" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.11.tgz#2aa54c84c4b01a9d0fb89bb11982a51f13e3d62a" @@ -51,31 +48,12 @@ after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" -agent-base@4, agent-base@^4.1.0, agent-base@^4.2.0, agent-base@~4.2.0: +agent-base@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" dependencies: es6-promisify "^5.0.0" -ajv@^5.1.0, ajv@^5.3.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - -amqplib@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/amqplib/-/amqplib-0.5.2.tgz#d2d7313c7ffaa4d10bcf1e6252de4591b6cc7b63" - dependencies: - bitsyntax "~0.0.4" - bluebird "^3.4.6" - buffer-more-ints "0.0.2" - readable-stream "1.x >=1.1.9" - safe-buffer "^5.0.1" - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -84,45 +62,18 @@ 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" - -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" + 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" -archiver-utils@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" - dependencies: - glob "^7.0.0" - graceful-fs "^4.1.0" - lazystream "^1.0.0" - lodash "^4.8.0" - normalize-path "^2.0.0" - readable-stream "^2.0.0" - -archiver@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-2.1.1.tgz#ff662b4a78201494a3ee544d3a33fe7496509ebc" - dependencies: - archiver-utils "^1.3.0" - async "^2.0.0" - buffer-crc32 "^0.2.1" - glob "^7.0.0" - lodash "^4.8.0" - readable-stream "^2.0.0" - tar-stream "^1.5.0" - zip-stream "^1.2.0" - 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" @@ -130,17 +81,11 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - arr-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.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" @@ -171,28 +116,10 @@ ascli@~1: colour "~0.7.1" optjs "~3.2.2" -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" -ast-types@0.x.x: - version "0.11.5" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.5.tgz#9890825d660c03c28339f315e9fa0a360e31ec28" - async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -201,44 +128,16 @@ async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" -async@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.0.1.tgz#b709cc0280a9c36f09f4536be823c838a9049e25" - dependencies: - lodash "^4.8.0" - -async@^2.0.0, async@^2.1.2, async@~2.6.0: +async@^2.1.2: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" dependencies: lodash "^4.17.10" -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - -aws4@^1.2.1, aws4@^1.6.0, aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - -axios@^0.15.3: - version "0.15.3" - resolved "http://registry.npmjs.org/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053" - dependencies: - follow-redirects "1.0.0" - backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" @@ -251,10 +150,6 @@ base64-arraybuffer@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" -base64-js@^1.0.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" - base64id@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" @@ -271,12 +166,6 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - dependencies: - tweetnacl "^0.14.3" - better-assert@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" @@ -287,30 +176,11 @@ binary-extensions@^1.0.0: version "1.12.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" -bitsyntax@~0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/bitsyntax/-/bitsyntax-0.0.4.tgz#eb10cc6f82b8c490e3e85698f07e83d46e0cba82" - dependencies: - buffer-more-ints "0.0.2" - -bl@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - -bl@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" - dependencies: - readable-stream "~2.0.5" - blob@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" -bluebird@^3.3.0, bluebird@^3.4.6: +bluebird@^3.3.0: version "3.5.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" @@ -329,24 +199,6 @@ body-parser@^1.16.1: raw-body "2.3.3" type-is "~1.6.16" -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - -boom@4.x.x: - version "4.3.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" - dependencies: - hoek "4.x.x" - -boom@5.x.x: - version "5.2.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" - dependencies: - hoek "4.x.x" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -360,15 +212,7 @@ braces@^0.1.2: dependencies: expand-range "^0.1.0" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -braces@^2.3.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: @@ -387,17 +231,13 @@ buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" -buffer-alloc@^1.1.0, buffer-alloc@^1.2.0: +buffer-alloc@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" dependencies: buffer-alloc-unsafe "^1.1.0" buffer-fill "^1.0.0" -buffer-crc32@^0.2.1: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" @@ -406,29 +246,6 @@ buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" -buffer-more-ints@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/buffer-more-ints/-/buffer-more-ints-0.0.2.tgz#26b3885d10fa13db7fc01aae3aab870199e0124c" - -buffer@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - -buildmail@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/buildmail/-/buildmail-4.0.1.tgz#877f7738b78729871c9a105e3b837d2be11a7a72" - dependencies: - addressparser "1.0.1" - libbase64 "0.1.0" - libmime "3.0.0" - libqp "1.1.0" - nodemailer-fetch "1.6.0" - nodemailer-shared "1.1.0" - punycode "1.4.1" - bytebuffer@~5: version "5.0.1" resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" @@ -461,46 +278,34 @@ camelcase@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" -caseless@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -chalk@^1.1.1: - version "1.1.3" - resolved "http://registry.npmjs.org/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" - -chokidar@^1.4.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" +chokidar@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== dependencies: - anymatch "^1.3.0" + anymatch "^2.0.0" async-each "^1.0.0" - glob-parent "^2.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" inherits "^2.0.1" is-binary-path "^1.0.0" - is-glob "^2.0.0" + is-glob "^4.0.0" + lodash.debounce "^4.0.8" + normalize-path "^2.1.1" path-is-absolute "^1.0.0" readdirp "^2.0.0" + upath "^1.0.5" optionalDependencies: - fsevents "^1.0.0" + fsevents "^1.2.2" chownr@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" -circular-json@^0.5.4: - version "0.5.7" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.7.tgz#b8be478d72ea58c7eeda26bf1cf1fba43d188842" +circular-json@^0.5.5: + version "0.5.9" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" + integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== class-utils@^0.3.5: version "0.3.6" @@ -519,10 +324,6 @@ cliui@^3.0.3: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - 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" @@ -548,22 +349,6 @@ combine-lists@^1.0.0: dependencies: lodash "^4.5.0" -combined-stream@1.0.6: - version "1.0.6" - resolved "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" - dependencies: - delayed-stream "~1.0.0" - -combined-stream@^1.0.5, combined-stream@~1.0.5, combined-stream@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" - dependencies: - delayed-stream "~1.0.0" - -commander@^2.9.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" - component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -576,15 +361,6 @@ component-inherit@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" -compress-commons@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.2.2.tgz#524a9f10903f3a813389b0225d27c48bb751890f" - dependencies: - buffer-crc32 "^0.2.1" - crc32-stream "^2.0.0" - normalize-path "^2.0.0" - readable-stream "^2.0.0" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -618,60 +394,30 @@ core-js@^2.2.0: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" -core-util-is@1.0.2, core-util-is@~1.0.0: +core-js@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" + integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= + +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" -crc32-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz#e3cdd3b4df3168dd74e3de3fbbcb7b297fe908f4" - dependencies: - crc "^3.4.4" - readable-stream "^2.0.0" - -crc@^3.4.4: - version "3.8.0" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" - dependencies: - buffer "^5.1.0" - -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - -cryptiles@3.x.x: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" - dependencies: - boom "5.x.x" - custom-event@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - -data-uri-to-buffer@1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" - date-format@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" -debug@2, debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@~2.6.4, debug@~2.6.6: +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@3.1.0, debug@=3.1.0, debug@~3.1.0: +debug@=3.1.0, debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: @@ -695,10 +441,6 @@ 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-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -718,18 +460,6 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -degenerator@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" - dependencies: - ast-types "0.x.x" - escodegen "1.x.x" - esprima "3.x.x" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -755,17 +485,6 @@ dom-serialize@^2.2.0: extend "^3.0.0" void-elements "^2.0.0" -double-ended-queue@^2.1.0-0: - version "2.1.0-0" - resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -774,15 +493,10 @@ encodeurl@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" -end-of-stream@^1.0.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - dependencies: - once "^1.4.0" - -engine.io-client@~3.1.0: - version "3.1.6" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.6.tgz#5bdeb130f8b94a50ac5cbeb72583e7a4a063ddfd" +engine.io-client@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== dependencies: component-emitter "1.2.1" component-inherit "0.0.3" @@ -806,9 +520,10 @@ engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: blob "0.0.4" has-binary2 "~1.0.2" -engine.io@~3.1.0: - version "3.1.5" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.5.tgz#0e7ef9d690eb0b35597f1d4ad02a26ca2dba3845" +engine.io@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" + integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== dependencies: accepts "~1.3.4" base64id "1.0.0" @@ -816,8 +531,6 @@ engine.io@~3.1.0: debug "~3.1.0" engine.io-parser "~2.1.0" ws "~3.3.1" - optionalDependencies: - uws "~9.14.0" ent@~2.2.0: version "2.2.0" @@ -827,6 +540,11 @@ es6-promise@^4.0.3: version "4.2.5" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" +es6-promise@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" + integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= + es6-promisify@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" @@ -837,33 +555,6 @@ 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: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -escodegen@1.x.x: - version "1.11.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" - dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -esprima@3.x.x, esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - -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" - eventemitter3@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" @@ -876,12 +567,6 @@ expand-braces@^0.1.1: array-unique "^0.2.1" braces "^0.1.2" -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -901,12 +586,6 @@ expand-range@^0.1.0: is-number "^0.1.1" repeat-string "^0.2.2" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -920,16 +599,10 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.1, extend@~3.0.2: +extend@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -943,44 +616,6 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - -file-uri-to-path@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -1002,11 +637,10 @@ finalhandler@1.1.0: statuses "~1.3.1" unpipe "~1.0.0" -follow-redirects@1.0.0: - version "1.0.0" - resolved "http://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37" - dependencies: - debug "^2.2.0" +flatted@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" + integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== follow-redirects@^1.0.0: version "1.5.8" @@ -1014,36 +648,10 @@ follow-redirects@^1.0.0: dependencies: debug "=3.1.0" -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.0.0.tgz#6f0aebadcc5da16c13e1ecc11137d85f9b883b25" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.11" - -form-data@~2.3.0, form-data@~2.3.1, form-data@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" - dependencies: - asynckit "^0.4.0" - combined-stream "1.0.6" - mime-types "^2.1.12" - fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -1056,10 +664,6 @@ fs-access@^1.0.0: dependencies: null-check "^1.0.0" -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -1070,20 +674,14 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.0.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" +fsevents@^1.2.2: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" + integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== dependencies: nan "^2.9.2" node-pre-gyp "^0.10.0" -ftp@~0.3.10: - version "0.3.10" - resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" - dependencies: - readable-stream "1.1.x" - xregexp "2.0.0" - gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -1097,53 +695,19 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -generate-function@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" - dependencies: - is-property "^1.0.2" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - dependencies: - is-property "^1.0.0" - -get-uri@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.2.tgz#5c795e71326f6ca1286f2fc82575cd2bab2af578" - dependencies: - data-uri-to-buffer "1" - debug "2" - extend "3" - file-uri-to-path "1" - ftp "~0.3.10" - readable-stream "2" - 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" -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - dependencies: - assert-plus "^1.0.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= dependencies: - is-glob "^2.0.0" + is-glob "^3.1.0" + path-dirname "^1.0.0" -glob@^7.0.0, glob@^7.0.5, glob@^7.1.1: +glob@^7.0.5, glob@^7.1.1: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" dependencies: @@ -1154,43 +718,10 @@ glob@^7.0.0, glob@^7.0.5, glob@^7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - -har-validator@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" - dependencies: - chalk "^1.1.1" - commander "^2.9.0" - is-my-json-valid "^2.12.4" - pinkie-promise "^2.0.0" - -har-validator@~5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" - dependencies: - ajv "^5.1.0" - har-schema "^2.0.0" - -har-validator@~5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" - dependencies: - ajv "^5.3.0" - har-schema "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - has-binary2@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" @@ -1232,39 +763,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -hawk@~6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" - dependencies: - boom "4.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - sntp "2.x.x" - -hipchat-notifier@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz#b6d249755437c191082367799d3ba9a0f23b231e" - dependencies: - lodash "^4.0.0" - request "^2.0.0" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - -hoek@4.x.x: - version "4.2.1" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" - http-errors@1.6.3, http-errors@~1.6.3: version "1.6.3" resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" @@ -1274,13 +772,6 @@ http-errors@1.6.3, http-errors@~1.6.3: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - dependencies: - agent-base "4" - debug "3.1.0" - http-proxy@^1.13.0: version "1.17.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" @@ -1289,33 +780,6 @@ http-proxy@^1.13.0: follow-redirects "^1.0.0" requires-port "^1.0.0" -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -httpntlm@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/httpntlm/-/httpntlm-1.6.1.tgz#ad01527143a2e8773cfae6a96f58656bb52a34b2" - dependencies: - httpreq ">=0.4.22" - underscore "~1.7.0" - -httpreq@>=0.4.22: - version "0.4.24" - resolved "https://registry.yarnpkg.com/httpreq/-/httpreq-0.4.24.tgz#4335ffd82cd969668a39465c929ac61d6393627f" - https-proxy-agent@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" @@ -1323,10 +787,6 @@ https-proxy-agent@^2.2.1: agent-base "^4.1.0" debug "^3.1.0" -iconv-lite@0.4.15: - version "0.4.15" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" - iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" @@ -1339,28 +799,21 @@ iconv-lite@^0.4.4: 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" +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" -inflection@~1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" - -inflection@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.3.8.tgz#cbd160da9f75b14c3cc63578d4f396784bf3014e" - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -1380,10 +833,6 @@ invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" -ip@^1.1.2, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - 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" @@ -1434,16 +883,6 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -1454,9 +893,10 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" +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" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-fullwidth-code-point@^1.0.0: version "1.0.0" @@ -1468,80 +908,40 @@ 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@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= dependencies: - is-extglob "^1.0.0" - -is-my-ip-valid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" + is-extglob "^2.1.0" -is-my-json-valid@^2.12.4: - version "2.19.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.19.0.tgz#8fd6e40363cd06b963fa877d444bfb5eddc62175" +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - is-my-ip-valid "^1.0.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" + is-extglob "^2.1.1" is-number@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - is-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-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-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-property@^1.0.0, is-property@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" -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: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -1570,42 +970,20 @@ isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - jasmine-core@2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stringify-safe@5.0.x, json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" +jszip@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" + integrity sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ== dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" + core-js "~2.3.0" + es6-promise "~3.0.2" + lie "~3.1.0" + pako "~1.0.2" + readable-stream "~2.0.6" karma-chrome-launcher@2.2.0: version "2.2.0" @@ -1626,14 +1004,14 @@ karma-requirejs@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/karma-requirejs/-/karma-requirejs-1.1.0.tgz#fddae2cb87d7ebc16fb0222893564d7fee578798" -karma-sauce-launcher@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-1.2.0.tgz#6f2558ddef3cf56879fa27540c8ae9f8bfd16bca" +karma-sauce-launcher@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-2.0.2.tgz#dbf98e70d86bf287b03a537cf637eb7aefa975c3" + integrity sha512-jLUFaJhHMcKpxFWUesyWYihzM5FvQiJsDwGcCtKeOy2lsWhkVw0V0Byqb1d+wU6myU1mribBtsIcub23HS4kWA== dependencies: - q "^1.5.0" - sauce-connect-launcher "^1.2.2" - saucelabs "^1.4.0" - wd "^1.4.0" + sauce-connect-launcher "^1.2.4" + saucelabs "^1.5.0" + selenium-webdriver "^4.0.0-alpha.1" karma-sourcemap-loader@0.3.7: version "0.3.7" @@ -1641,13 +1019,14 @@ karma-sourcemap-loader@0.3.7: dependencies: graceful-fs "^4.1.2" -karma@alexeagle/karma#fa1a84ac881485b5657cb669e9b4e5da77b79f0a: - version "1.7.1" - resolved "https://codeload.github.com/alexeagle/karma/tar.gz/fa1a84ac881485b5657cb669e9b4e5da77b79f0a" +karma@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-4.0.0.tgz#f28e38a2b66243fde3f98e12a8dcaa2c6ff8ca9c" + integrity sha512-EFoFs3F6G0BcUGPNOn/YloGOb3h09hzTguyXlg6loHlKY76qbJikkcyPk43m2kfRF65TUGda/mig29QQtyhm1g== dependencies: bluebird "^3.3.0" body-parser "^1.16.1" - chokidar "^1.4.1" + chokidar "^2.0.3" colors "^1.1.0" combine-lists "^1.0.0" connect "^3.6.0" @@ -1655,23 +1034,24 @@ karma@alexeagle/karma#fa1a84ac881485b5657cb669e9b4e5da77b79f0a: di "^0.0.1" dom-serialize "^2.2.0" expand-braces "^0.1.1" + flatted "^2.0.0" glob "^7.1.1" graceful-fs "^4.1.2" http-proxy "^1.13.0" isbinaryfile "^3.0.0" - lodash "^4.17.4" - log4js "^2.3.9" - mime "^1.3.4" + lodash "^4.17.5" + log4js "^3.0.0" + mime "^2.3.1" minimatch "^3.0.2" optimist "^0.6.1" qjobs "^1.1.4" range-parser "^1.2.0" rimraf "^2.6.0" safe-buffer "^5.0.1" - socket.io "2.0.4" + socket.io "2.1.1" source-map "^0.6.1" tmp "0.0.33" - useragent "^2.1.12" + useragent "2.3.0" kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" @@ -1693,108 +1073,50 @@ 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" -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - dependencies: - readable-stream "^2.0.5" - lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" dependencies: invert-kv "^1.0.0" -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" - -libbase64@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/libbase64/-/libbase64-0.1.0.tgz#62351a839563ac5ff5bd26f12f60e9830bb751e6" - -libmime@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/libmime/-/libmime-3.0.0.tgz#51a1a9e7448ecbd32cda54421675bb21bc093da6" +lie@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= dependencies: - iconv-lite "0.4.15" - libbase64 "0.1.0" - libqp "1.1.0" - -libqp@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/libqp/-/libqp-1.1.0.tgz#f5e6e06ad74b794fb5b5b66988bf728ef1dedbe8" + immediate "~3.0.5" -lodash@4.17.10: - version "4.17.10" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= -lodash@^4.0.0, lodash@^4.15.0, lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.5.0, lodash@^4.8.0: +lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.5, lodash@^4.5.0: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" -log4js@^2.3.9: - version "2.11.0" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-2.11.0.tgz#bf3902eff65c6923d9ce9cfbd2db54160e34005a" +log4js@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.6.tgz#e6caced94967eeeb9ce399f9f8682a4b2b28c8ff" + integrity sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== dependencies: - circular-json "^0.5.4" + circular-json "^0.5.5" date-format "^1.2.0" debug "^3.1.0" - semver "^5.5.0" + rfdc "^1.1.2" streamroller "0.7.0" - optionalDependencies: - amqplib "^0.5.2" - axios "^0.15.3" - hipchat-notifier "^1.1.0" - loggly "^1.1.0" - mailgun-js "^0.18.0" - nodemailer "^2.5.0" - redis "^2.7.1" - slack-node "~0.2.0" - -loggly@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/loggly/-/loggly-1.1.1.tgz#0a0fc1d3fa3a5ec44fdc7b897beba2a4695cebee" - dependencies: - json-stringify-safe "5.0.x" - request "2.75.x" - timespan "2.3.x" long@~3: version "3.2.0" resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" -lru-cache@4.1.x, lru-cache@^4.1.2: +lru-cache@4.1.x: version "4.1.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" dependencies: pseudomap "^1.0.2" yallist "^2.1.2" -mailcomposer@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/mailcomposer/-/mailcomposer-4.0.1.tgz#0e1c44b2a07cf740ee17dc149ba009f19cadfeb4" - dependencies: - buildmail "4.0.1" - libmime "3.0.0" - -mailgun-js@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/mailgun-js/-/mailgun-js-0.18.1.tgz#ee39aa18d7bb598a5ce9ede84afb681defc8a6b0" - dependencies: - async "~2.6.0" - debug "~3.1.0" - form-data "~2.3.0" - inflection "~1.12.0" - is-stream "^1.1.0" - path-proxy "~1.0.0" - promisify-call "^2.0.2" - proxy-agent "~3.0.0" - tsscmp "~1.0.0" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -1805,33 +1127,11 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -math-random@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -micromatch@^3.1.10: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" dependencies: @@ -1853,15 +1153,16 @@ mime-db@~1.36.0: version "1.36.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" -mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19, mime-types@~2.1.7: +mime-types@~2.1.18: version "2.1.20" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" dependencies: mime-db "~1.36.0" -mime@^1.3.4: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" +mime@^2.3.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" + integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" @@ -1947,10 +1248,6 @@ negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" -netmask@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" - node-pre-gyp@^0.10.0: version "0.10.3" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" @@ -1966,59 +1263,6 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -node-uuid@~1.4.7: - version "1.4.8" - resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" - -nodemailer-direct-transport@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz#e96fafb90358560947e569017d97e60738a50a86" - dependencies: - nodemailer-shared "1.1.0" - smtp-connection "2.12.0" - -nodemailer-fetch@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz#79c4908a1c0f5f375b73fe888da9828f6dc963a4" - -nodemailer-shared@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz#cf5994e2fd268d00f5cf0fa767a08169edb07ec0" - dependencies: - nodemailer-fetch "1.6.0" - -nodemailer-smtp-pool@2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.8.2.tgz#2eb94d6cf85780b1b4725ce853b9cbd5e8da8c72" - dependencies: - nodemailer-shared "1.1.0" - nodemailer-wellknown "0.1.10" - smtp-connection "2.12.0" - -nodemailer-smtp-transport@2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.2.tgz#03d71c76314f14ac7dbc7bf033a6a6d16d67fb77" - dependencies: - nodemailer-shared "1.1.0" - nodemailer-wellknown "0.1.10" - smtp-connection "2.12.0" - -nodemailer-wellknown@0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz#586db8101db30cb4438eb546737a41aad0cf13d5" - -nodemailer@^2.5.0: - version "2.7.2" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-2.7.2.tgz#f242e649aeeae39b6c7ed740ef7b061c404d30f9" - dependencies: - libmime "3.0.0" - mailcomposer "4.0.1" - nodemailer-direct-transport "3.3.2" - nodemailer-shared "1.1.0" - nodemailer-smtp-pool "2.8.2" - nodemailer-smtp-transport "2.7.2" - socks "1.1.9" - nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -2026,9 +1270,10 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-path@^2.0.0, normalize-path@^2.0.1: +normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" @@ -2060,14 +1305,6 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -oauth-sign@~0.8.1, oauth-sign@~0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -2090,13 +1327,6 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -2109,7 +1339,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@^1.3.0, once@^1.4.0: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -2122,17 +1352,6 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -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" - optjs@~3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" @@ -2147,7 +1366,7 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -2158,37 +1377,10 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -pac-proxy-agent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-3.0.0.tgz#11d578b72a164ad74bf9d5bac9ff462a38282432" - dependencies: - agent-base "^4.2.0" - debug "^3.1.0" - get-uri "^2.0.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - pac-resolver "^3.0.0" - raw-body "^2.2.0" - socks-proxy-agent "^4.0.1" - -pac-resolver@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-3.0.0.tgz#6aea30787db0a891704deb7800a722a7615a6f26" - dependencies: - co "^4.6.0" - degenerator "^1.0.4" - ip "^1.1.5" - netmask "^1.0.6" - thunkify "^2.1.2" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" +pako@~1.0.2: + version "1.0.8" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.8.tgz#6844890aab9c635af868ad5fecc62e8acbba3ea4" + integrity sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA== parseqs@0.0.5: version "0.0.5" @@ -2210,42 +1402,19 @@ pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -path-proxy@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/path-proxy/-/path-proxy-1.0.0.tgz#18e8a36859fc9d2f1a53b48dee138543c020de5e" - dependencies: - inflection "~1.3.0" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - 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" -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" @@ -2254,12 +1423,6 @@ 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" -promisify-call@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/promisify-call/-/promisify-call-2.0.4.tgz#d48c2d45652ccccd52801ddecbd533a6d4bd5fba" - dependencies: - with-callback "^1.0.2" - protobufjs@5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" @@ -2269,68 +1432,23 @@ protobufjs@5.0.3: glob "^7.0.5" yargs "^3.10.0" -proxy-agent@~3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-3.0.3.tgz#1c1a33db60ef5f2e9e35b876fd63c2bc681c611d" - dependencies: - agent-base "^4.2.0" - debug "^3.1.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - lru-cache "^4.1.2" - pac-proxy-agent "^3.0.0" - proxy-from-env "^1.0.0" - socks-proxy-agent "^4.0.1" - -proxy-from-env@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" -psl@^1.1.24: - version "1.1.29" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" - -punycode@1.4.1, punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -q@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" - -q@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - qjobs@^1.1.4: version "1.2.0" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" -qs@6.5.2, qs@~6.5.1, qs@~6.5.2: +qs@6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" -qs@~6.2.0: - version "6.2.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" - -randomatic@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116" - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - range-parser@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" -raw-body@2.3.3, raw-body@^2.2.0: +raw-body@2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" dependencies: @@ -2348,16 +1466,7 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -readable-stream@1.1.x, "readable-stream@1.x >=1.1.9": - version "1.1.14" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.3.0, readable-stream@^2.3.5: +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.0: version "2.3.6" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -2369,9 +1478,10 @@ readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stre string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@~2.0.5: +readable-stream@~2.0.6: version "2.0.6" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -2388,28 +1498,6 @@ readdirp@^2.0.0: micromatch "^3.1.10" readable-stream "^2.0.2" -redis-commands@^1.2.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.5.tgz#4495889414f1e886261180b1442e7295602d83a2" - -redis-parser@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b" - -redis@^2.7.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02" - dependencies: - double-ended-queue "^2.1.0-0" - redis-commands "^1.2.0" - redis-parser "^2.6.0" - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - dependencies: - is-equal-shallow "^0.1.3" - 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" @@ -2429,97 +1517,10 @@ repeat-string@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" -request@2.75.x: - version "2.75.0" - resolved "http://registry.npmjs.org/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - bl "~1.1.2" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.0.0" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - node-uuid "~1.4.7" - oauth-sign "~0.8.1" - qs "~6.2.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - -request@2.85.0: - version "2.85.0" - resolved "http://registry.npmjs.org/request/-/request-2.85.0.tgz#5a03615a47c61420b3eb99b7dba204f83603e1fa" - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.6.0" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.1" - forever-agent "~0.6.1" - form-data "~2.3.1" - har-validator "~5.0.3" - hawk "~6.0.2" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.17" - oauth-sign "~0.8.2" - performance-now "^2.1.0" - qs "~6.5.1" - safe-buffer "^5.1.1" - stringstream "~0.0.5" - tough-cookie "~2.3.3" - tunnel-agent "^0.6.0" - uuid "^3.1.0" - -request@^2.0.0, request@^2.74.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.0" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -requestretry@^1.2.2: - version "1.13.0" - resolved "https://registry.yarnpkg.com/requestretry/-/requestretry-1.13.0.tgz#213ec1006eeb750e8b8ce54176283d15a8d55d94" - dependencies: - extend "^3.0.0" - lodash "^4.15.0" - request "^2.74.0" - when "^3.7.7" - requirejs@2.3.5: version "2.3.5" resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0" @@ -2536,13 +1537,18 @@ ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" +rfdc@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.2.tgz#e6e72d74f5dc39de8f538f65e00c36c18018e349" + integrity sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA== + rimraf@^2.5.4, rimraf@^2.6.0, 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" -safe-buffer@^5.0.1, 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.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" @@ -2552,13 +1558,14 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" -sauce-connect-launcher@^1.2.2: +sauce-connect-launcher@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.2.4.tgz#8d38f85242a9fbede1b2303b559f7e20c5609a1c" + integrity sha512-X2vfwulR6brUGiicXKxPm1GJ7dBEeP1II450Uv4bHGrcGOapZNgzJvn9aioea5IC5BPp/7qjKdE3xbbTBIVXMA== dependencies: adm-zip "~0.4.3" async "^2.1.2" @@ -2566,17 +1573,33 @@ sauce-connect-launcher@^1.2.2: lodash "^4.16.6" rimraf "^2.5.4" -saucelabs@^1.4.0: +saucelabs@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" + integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== dependencies: https-proxy-agent "^2.2.1" -sax@^1.2.4: +sax@>=0.6.0, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" -semver@^5.3.0, semver@^5.5.0: +selenium-webdriver@^4.0.0-alpha.1: + version "4.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz#cc93415e21d2dc1dfd85dfc5f6b55f3ac53933b1" + integrity sha512-z88rdjHAv3jmTZ7KSGUkTvo4rGzcDGMq0oXWHNIDK96Gs31JKVdu9+FMtT4KBrVoibg8dUicJDok6GnqqttO5Q== + dependencies: + jszip "^3.1.3" + rimraf "^2.5.4" + tmp "0.0.30" + xml2js "^0.4.17" + +semver@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +semver@^5.3.0: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" @@ -2610,27 +1633,6 @@ signal-exit@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -slack-node@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/slack-node/-/slack-node-0.2.0.tgz#de4b8dddaa8b793f61dbd2938104fdabf37dfa30" - dependencies: - requestretry "^1.2.2" - -smart-buffer@^1.0.4: - version "1.1.15" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" - -smart-buffer@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.1.tgz#07ea1ca8d4db24eb4cac86537d7d18995221ace3" - -smtp-connection@2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/smtp-connection/-/smtp-connection-2.12.0.tgz#d76ef9127cb23c2259edb1e8349c2e8d5e2d74c1" - dependencies: - httpntlm "1.6.1" - nodemailer-shared "1.1.0" - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -2658,79 +1660,50 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - -sntp@2.x.x: - version "2.1.0" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" - dependencies: - hoek "4.x.x" - socket.io-adapter@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" -socket.io-client@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e" +socket.io-client@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" + integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== dependencies: backo2 "1.0.2" base64-arraybuffer "0.1.5" component-bind "1.0.0" component-emitter "1.2.1" - debug "~2.6.4" - engine.io-client "~3.1.0" + debug "~3.1.0" + engine.io-client "~3.2.0" + has-binary2 "~1.0.2" has-cors "1.1.0" indexof "0.0.1" object-component "0.0.3" parseqs "0.0.5" parseuri "0.0.5" - socket.io-parser "~3.1.1" + socket.io-parser "~3.2.0" to-array "0.1.4" -socket.io-parser@~3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.3.tgz#ed2da5ee79f10955036e3da413bfd7f1e4d86c8e" +socket.io-parser@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" + integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== dependencies: component-emitter "1.2.1" debug "~3.1.0" - has-binary2 "~1.0.2" isarray "2.0.1" -socket.io@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014" +socket.io@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" + integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== dependencies: - debug "~2.6.6" - engine.io "~3.1.0" + debug "~3.1.0" + engine.io "~3.2.0" + has-binary2 "~1.0.2" socket.io-adapter "~1.1.0" - socket.io-client "2.0.4" - socket.io-parser "~3.1.1" - -socks-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz#5936bf8b707a993079c6f37db2091821bffa6473" - dependencies: - agent-base "~4.2.0" - socks "~2.2.0" - -socks@1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.9.tgz#628d7e4d04912435445ac0b6e459376cb3e6d691" - dependencies: - ip "^1.1.2" - smart-buffer "^1.0.4" - -socks@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.1.tgz#68ad678b3642fbc5d99c64c165bc561eab0215f9" - dependencies: - ip "^1.1.5" - smart-buffer "^4.0.1" + socket.io-client "2.1.1" + socket.io-parser "~3.2.0" source-map-resolve@^0.5.0: version "0.5.2" @@ -2742,7 +1715,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@0.5.9, source-map-support@^0.5.0: +source-map-support@0.5.9: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" dependencies: @@ -2757,7 +1730,7 @@ source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -2767,21 +1740,6 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -sshpk@^1.7.0: - version "1.14.2" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - safer-buffer "^2.0.2" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -2831,10 +1789,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringstream@~0.0.4, stringstream@~0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" - 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" @@ -2851,22 +1805,6 @@ 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" - -tar-stream@^1.5.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.1.tgz#f84ef1696269d6223ca48f6e1eeede3f7e81f395" - dependencies: - bl "^1.0.0" - buffer-alloc "^1.1.0" - end-of-stream "^1.0.0" - fs-constants "^1.0.0" - readable-stream "^2.3.0" - to-buffer "^1.1.0" - xtend "^4.0.0" - tar@^4: version "4.4.6" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" @@ -2879,13 +1817,12 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" -thunkify@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" - -timespan@2.3.x: - version "2.3.0" - resolved "https://registry.yarnpkg.com/timespan/-/timespan-2.3.0.tgz#4902ce040bd13d845c8f59b27e9d59bad6f39929" +tmp@0.0.30: + version "0.0.30" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" + integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= + dependencies: + os-tmpdir "~1.0.1" tmp@0.0.33, tmp@0.0.x: version "0.0.33" @@ -2897,10 +1834,6 @@ to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" -to-buffer@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" - 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" @@ -2923,62 +1856,16 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@~2.3.0, tough-cookie@~2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - dependencies: - punycode "^1.4.1" - -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - -tsickle@0.28.0: - version "0.28.0" - resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.28.0.tgz#6cd6fa004766c6ad9261b599c83866ee97cc7875" - dependencies: - minimist "^1.2.0" - mkdirp "^0.5.1" - source-map "^0.6.0" - source-map-support "^0.5.0" - tslib@^1.8.1: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" -tsscmp@~1.0.0: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" - tsutils@2.27.2: version "2.27.2" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" dependencies: tslib "^1.8.1" -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -tunnel-agent@~0.4.1: - version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - -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" - type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" @@ -2994,10 +1881,6 @@ ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" -underscore@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" - union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" @@ -3018,6 +1901,11 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +upath@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== + urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" @@ -3026,9 +1914,10 @@ use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" -useragent@^2.1.12: +useragent@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" + integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== dependencies: lru-cache "4.1.x" tmp "0.0.x" @@ -3041,46 +1930,10 @@ utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" -uuid@^3.1.0, uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - -uws@~9.14.0: - version "9.14.0" - resolved "https://registry.yarnpkg.com/uws/-/uws-9.14.0.tgz#fac8386befc33a7a3705cbd58dc47b430ca4dd95" - -vargs@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/vargs/-/vargs-0.1.0.tgz#6b6184da6520cc3204ce1b407cac26d92609ebff" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" -wd@^1.4.0: - version "1.10.3" - resolved "https://registry.yarnpkg.com/wd/-/wd-1.10.3.tgz#395ac7eb58a98e556369f8f8e5f845d91fb152a3" - dependencies: - archiver "2.1.1" - async "2.0.1" - lodash "4.17.10" - mkdirp "^0.5.1" - q "1.4.1" - request "2.85.0" - vargs "0.1.0" - -when@^3.7.7: - version "3.7.8" - resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" - which@^1.2.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -3097,18 +1950,10 @@ window-size@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" -with-callback@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/with-callback/-/with-callback-1.0.2.tgz#a09629b9a920028d721404fb435bdcff5c91bc21" - wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - wrap-ansi@^2.0.0: version "2.1.0" resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -3128,18 +1973,23 @@ ws@~3.3.1: safe-buffer "~5.1.0" ultron "~1.1.0" +xml2js@^0.4.17: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + xmlhttprequest-ssl@~1.5.4: version "1.5.5" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" -xregexp@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" - -xtend@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - y18n@^3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" @@ -3167,12 +2017,3 @@ yargs@^3.10.0: yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - -zip-stream@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.2.0.tgz#a8bc45f4c1b49699c6b90198baacaacdbcd4ba04" - dependencies: - archiver-utils "^1.3.0" - compress-commons "^1.2.0" - lodash "^4.8.0" - readable-stream "^2.0.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/test.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/test.sh new file mode 100755 index 0000000000..cb769dada1 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/test.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash + +set -u -e -o pipefail + +cd $(dirname "$0") +TESTS_ROOT_DIR=$(pwd) + +echo "" +echo "#################################################################################" +echo "Running all npm package e2e tests under $TESTS_ROOT_DIR" +echo "" +echo "To run a specific test run this script with `--test ` where " +echo "is the name of the test folder to run" +echo "" +echo "Run this script with `--update-lock-files` to update yarn.lock files" +echo "instead of running tests" +echo "" + +# Determine the absolute paths to the generated @bazel/typescript and @bazel/karma npm packages +cd $TESTS_ROOT_DIR/../../.. +BAZEL=$(pwd)/node_modules/.bin/bazel +if [[ ! -f $BAZEL ]] ; then + echo "Bazel not found under $BAZEL" + exit 1 +fi +BAZEL_BIN=$($BAZEL info bazel-bin) +BAZEL_TYPESCRIPT_NPM_PACKAGE=$BAZEL_BIN/internal/npm_package +BAZEL_KARMA_NPM_PACKAGE=$BAZEL_BIN/internal/karma/npm_package +echo "@bazel/typescript: $BAZEL_TYPESCRIPT_NPM_PACKAGE" +echo "@bazel/karma: $BAZEL_KARMA_NPM_PACKAGE" + +# Now run all e2e tests +cd $TESTS_ROOT_DIR +for testDir in $(ls) ; do + [[ -d "$testDir" ]] || continue + ( + cd $testDir + echo "" + echo "#################################################################################" + echo "Running npm package e2e test $(pwd)" + echo "" + if [[ ! -f "package-template.json" ]] ; then + echo "No package-template.json file found in $testDir" + exit 1 + fi + # Generate package.json subsituting variables + # BAZEL_TYPESCRIPT_NPM_PACKAGE and BAZEL_KARMA_NPM_PACKAGE + ESCAPED_TYPESCRIPT=$(echo $BAZEL_TYPESCRIPT_NPM_PACKAGE | sed 's/\//\\\//g') + ESCAPED_KARMA=$(echo $BAZEL_KARMA_NPM_PACKAGE | sed 's/\//\\\//g') + sed -e "s/\${BAZEL_TYPESCRIPT_NPM_PACKAGE}/$ESCAPED_TYPESCRIPT/" -e "s/\${BAZEL_KARMA_NPM_PACKAGE}/$ESCAPED_KARMA/" package-template.json > package.json + if [[ $# -ge 1 && $1 = "--update-lock-files" ]] ; then + # Update yarn.lock files + echo "Running yarn install to update lock file" + yarn install + else + if [[ $# -ge 2 && $1 = "--test" && $2 != $testDir ]] ; then + # Skip this test + echo "Skipping test that was not specified in --test argument" + else + # Run tests + yarn test + fi + fi + ) +done diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/.bazelrc similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/.bazelrc rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/.bazelrc diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/BUILD.bazel rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE similarity index 86% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/WORKSPACE rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE index bfc88db639..f585fb6601 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE @@ -12,21 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "package_typescript_29_e2e") +workspace(name = "npm_packages_typescript_27_e2e") local_repository( name = "build_bazel_rules_typescript", - path = "../../..", + path = "../../../..", ) load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") rules_typescript_dependencies() -load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") - -rules_nodejs_dependencies() - load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") node_repositories(preserve_symlinks = True) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/main.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/main.spec.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/main.spec.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/main.spec.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/main.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/main.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/main.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/main.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/package-template.json similarity index 54% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/package.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/package-template.json index 26c1fd8cc1..dd80dfa74a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/package-template.json @@ -1,9 +1,12 @@ { "dependencies": { - "@bazel/typescript": "file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package", + "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "jasmine": "2.8.0", "typescript": "2.7.x" + }, + "scripts": { + "test": "bazel test ..." } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/tsconfig.json similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/tsconfig.json diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock similarity index 94% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/yarn.lock rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock index 474a2b8fe3..3f71f88bf3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock @@ -2,10 +2,11 @@ # yarn lockfile v1 -"@bazel/typescript@file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package": - version "0.22.0-1-g1e6d07d" +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/2c1df01758b58adaef1f5cb29a065852/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/internal/npm_package": + version "0.22.1-18-g169a278" dependencies: protobufjs "5.0.3" + semver "5.6.0" source-map-support "0.5.9" tsutils "2.27.2" @@ -178,6 +179,11 @@ protobufjs@5.0.3: glob "^7.0.5" yargs "^3.10.0" +semver@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + source-map-support@0.5.9: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/.bazelrc similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/.bazelrc rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/.bazelrc diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/BUILD.bazel similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/BUILD.bazel rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE similarity index 86% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/WORKSPACE rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE index ec6631369f..8866bbd61f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE @@ -12,21 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "package_typescript_27_e2e") +workspace(name = "npm_packages_typescript_28_e2e") local_repository( name = "build_bazel_rules_typescript", - path = "../../..", + path = "../../../..", ) load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") rules_typescript_dependencies() -load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") - -rules_nodejs_dependencies() - load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") node_repositories(preserve_symlinks = True) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/main.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/main.spec.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/main.spec.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/main.spec.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/main.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/main.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/main.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/main.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/package-template.json similarity index 54% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/package.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/package-template.json index d67c935f58..b0fb4851c6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/package-template.json @@ -1,9 +1,12 @@ { "dependencies": { - "@bazel/typescript": "file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package", + "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "jasmine": "2.8.0", "typescript": "2.8.x" + }, + "scripts": { + "test": "bazel test ..." } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/tsconfig.json similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/tsconfig.json diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock similarity index 94% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/yarn.lock rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock index cc4f619d9c..6edcd7e896 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock @@ -2,10 +2,11 @@ # yarn lockfile v1 -"@bazel/typescript@file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package": - version "0.22.0-1-g1e6d07d" +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/2c1df01758b58adaef1f5cb29a065852/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/internal/npm_package": + version "0.22.1-18-g169a278" dependencies: protobufjs "5.0.3" + semver "5.6.0" source-map-support "0.5.9" tsutils "2.27.2" @@ -178,6 +179,11 @@ protobufjs@5.0.3: glob "^7.0.5" yargs "^3.10.0" +semver@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + source-map-support@0.5.9: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/.bazelrc similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/.bazelrc rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/.bazelrc diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/BUILD.bazel similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/BUILD.bazel rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE similarity index 86% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/WORKSPACE rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE index 558b690577..1758dec3c9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE @@ -12,21 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "package_typescript_28_e2e") +workspace(name = "npm_packages_typescript_29_e2e") local_repository( name = "build_bazel_rules_typescript", - path = "../../..", + path = "../../../..", ) load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") rules_typescript_dependencies() -load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") - -rules_nodejs_dependencies() - load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") node_repositories(preserve_symlinks = True) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/main.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/main.spec.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/main.spec.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/main.spec.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/main.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/main.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/main.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/main.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/package-template.json similarity index 54% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/package.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/package-template.json index 5907089cb7..31480f03c6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/package-template.json @@ -1,9 +1,12 @@ { "dependencies": { - "@bazel/typescript": "file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package", + "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "jasmine": "2.8.0", "typescript": "2.9.x" + }, + "scripts": { + "test": "bazel test ..." } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/tsconfig.json similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/tsconfig.json diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock similarity index 94% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/yarn.lock rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock index abb04b31db..a0a84fcc7d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock @@ -2,10 +2,11 @@ # yarn lockfile v1 -"@bazel/typescript@file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package": - version "0.22.0-1-g1e6d07d" +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/2c1df01758b58adaef1f5cb29a065852/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/internal/npm_package": + version "0.22.1-18-g169a278" dependencies: protobufjs "5.0.3" + semver "5.6.0" source-map-support "0.5.9" tsutils "2.27.2" @@ -178,6 +179,11 @@ protobufjs@5.0.3: glob "^7.0.5" yargs "^3.10.0" +semver@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + source-map-support@0.5.9: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/.bazelrc similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/.bazelrc rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/.bazelrc diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/BUILD.bazel similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/BUILD.bazel rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE new file mode 100644 index 0000000000..92816e4f82 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE @@ -0,0 +1,38 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +workspace(name = "npm_packages_typescript_30_e2e") + +local_repository( + name = "build_bazel_rules_typescript", + path = "../../../..", +) + +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") + +rules_typescript_dependencies() + +load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") + +node_repositories(preserve_symlinks = True) + +yarn_install( + name = "npm", + package_json = "//:package.json", + yarn_lock = "//:yarn.lock", +) + +load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") + +ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/main.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/main.spec.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/main.spec.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/main.spec.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/main.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/main.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/main.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/main.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/package-template.json similarity index 54% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/package.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/package-template.json index 1d3eb0fcb9..23f78b62ca 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/package-template.json @@ -1,9 +1,12 @@ { "dependencies": { - "@bazel/typescript": "file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package", + "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "jasmine": "2.8.0", "typescript": "3.0.x" + }, + "scripts": { + "test": "bazel test ..." } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/tsconfig.json similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/tsconfig.json diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock similarity index 94% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/yarn.lock rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock index f2b74f8dcf..6177ba672c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock @@ -2,10 +2,11 @@ # yarn lockfile v1 -"@bazel/typescript@file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package": - version "0.22.0-1-g1e6d07d" +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/2c1df01758b58adaef1f5cb29a065852/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/internal/npm_package": + version "0.22.1-18-g169a278" dependencies: protobufjs "5.0.3" + semver "5.6.0" source-map-support "0.5.9" tsutils "2.27.2" @@ -178,6 +179,11 @@ protobufjs@5.0.3: glob "^7.0.5" yargs "^3.10.0" +semver@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + source-map-support@0.5.9: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/.bazelrc similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/.bazelrc rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/.bazelrc diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/BUILD.bazel similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/BUILD.bazel rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE new file mode 100644 index 0000000000..92816e4f82 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE @@ -0,0 +1,38 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +workspace(name = "npm_packages_typescript_30_e2e") + +local_repository( + name = "build_bazel_rules_typescript", + path = "../../../..", +) + +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") + +rules_typescript_dependencies() + +load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") + +node_repositories(preserve_symlinks = True) + +yarn_install( + name = "npm", + package_json = "//:package.json", + yarn_lock = "//:yarn.lock", +) + +load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") + +ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/main.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/main.spec.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/main.spec.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/main.spec.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/main.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/main.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/main.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/main.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/package-template.json similarity index 54% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/package.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/package-template.json index fb560b5092..b53c57a7f7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/package-template.json @@ -1,9 +1,12 @@ { "dependencies": { - "@bazel/typescript": "file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package", + "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "jasmine": "2.8.0", "typescript": "3.1.x" + }, + "scripts": { + "test": "bazel test ..." } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/tsconfig.json similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/tsconfig.json diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock similarity index 94% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/yarn.lock rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock index 9033fe3e1c..2fdc680edb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock @@ -2,10 +2,11 @@ # yarn lockfile v1 -"@bazel/typescript@file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package": - version "0.22.0-1-g1e6d07d" +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/2c1df01758b58adaef1f5cb29a065852/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/internal/npm_package": + version "0.22.1-18-g169a278" dependencies: protobufjs "5.0.3" + semver "5.6.0" source-map-support "0.5.9" tsutils "2.27.2" @@ -178,6 +179,11 @@ protobufjs@5.0.3: glob "^7.0.5" yargs "^3.10.0" +semver@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + source-map-support@0.5.9: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/package.json deleted file mode 100644 index f91e5bbdc3..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "dependencies": { - "@bazel/karma": "file:../build_bazel_rules_typescript/bazel-bin/internal/karma/npm_package", - "karma": "3.0.0" - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/package.json deleted file mode 100644 index 87f725b97d..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "dependencies": { - "@bazel/typescript": "file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package", - "@bazel/karma": "file:../build_bazel_rules_typescript/bazel-bin/internal/karma/npm_package", - "@types/jasmine": "2.8.2", - "typescript": "3.1.x" - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/tsconfig.json.oss similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/tsconfig.json.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/tsconfig.json.oss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/tsconfig.json.oss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/tsconfig.json.oss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/tsconfig.json.oss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/WORKSPACE deleted file mode 100644 index 6ac19531fe..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/WORKSPACE +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -workspace(name = "package_typescript_30_e2e") - -local_repository( - name = "build_bazel_rules_typescript", - path = "../../..", -) - -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") - -rules_typescript_dependencies() - -load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") - -rules_nodejs_dependencies() - -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") - -node_repositories(preserve_symlinks = True) - -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") - -ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/tsconfig.json.oss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/WORKSPACE deleted file mode 100644 index 6ac19531fe..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/WORKSPACE +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -workspace(name = "package_typescript_30_e2e") - -local_repository( - name = "build_bazel_rules_typescript", - path = "../../..", -) - -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") - -rules_typescript_dependencies() - -load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") - -rules_nodejs_dependencies() - -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") - -node_repositories(preserve_symlinks = True) - -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") - -ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/tsconfig.json.oss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/package.json deleted file mode 100644 index 98fa1871cb..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "dependencies": { - "@bazel/karma": "file:../build_bazel_rules_typescript/bazel-bin/internal/karma/npm_package", - "@bazel/typescript": "file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package", - "@types/jasmine": "2.8.2", - "typescript": "2.9.2" - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/tsconfig.json.oss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/WORKSPACE index 2fbfb8889c..49f673dba7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/WORKSPACE @@ -25,10 +25,6 @@ rules_typescript_dependencies() rules_typescript_dev_dependencies() -load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") - -rules_nodejs_dependencies() - load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") node_repositories(preserve_symlinks = True) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/package.json index 74af3ee5b3..b51c2ea1e7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/package.json @@ -2,5 +2,8 @@ "dependencies": { "@bazel/typescript": "file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package", "typescript": "2.9.2" + }, + "scripts": { + "test": "bazel run @build_bazel_rules_typescript//ts_auto_deps -- -recursive && bazel build simple" } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/.bazelrc similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/.bazelrc rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/.bazelrc diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/BUILD.bazel similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/BUILD.bazel rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/WORKSPACE similarity index 88% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/WORKSPACE rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/WORKSPACE index 6ac19531fe..6b022fa7cd 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/WORKSPACE @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "package_typescript_30_e2e") +workspace(name = "typescript_31") local_repository( name = "build_bazel_rules_typescript", @@ -23,10 +23,6 @@ load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependenci rules_typescript_dependencies() -load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") - -rules_nodejs_dependencies() - load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") node_repositories(preserve_symlinks = True) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/main.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/main.spec.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/main.spec.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/main.spec.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/main.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/main.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/main.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/main.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/package.json similarity index 83% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/package.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/package.json index 44bb87ec13..37929100ba 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/package.json @@ -8,5 +8,8 @@ "tsickle": "0.33.1", "tsutils": "2.27.2", "typescript": "3.1.x" + }, + "scripts": { + "test": "bazel test ..." } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/tsconfig.json new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/yarn.lock similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/yarn.lock rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/yarn.lock diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index f0d3b3212b..68d1afd020 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -38,8 +38,8 @@ def rules_typescript_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.6.zip"], - strip_prefix = "rules_nodejs-0.16.6", + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.7.zip"], + strip_prefix = "rules_nodejs-0.16.7", ) # ts_web_test depends on the web testing rules to provision browsers. diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 1394247d2d..176f49facb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -38,24 +38,16 @@ "which": "~1.0.5" }, "scripts": { - "pree2e": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG && bazel build examples/app:e2e && bazel build examples/protocol_buffers:e2e", - "e2e": "yarn e2e-bazel-external && yarn e2e-examples-app-devserver && yarn e2e-examples-app-prodserver && yarn e2e-examples-protobuf-devserver && yarn e2e-examples-protobuf-prodserver && yarn e2e-package_karma && yarn e2e-package_karma_stack_trace && yarn e2e-package_typescript && yarn e2e-package_typescript_karma && yarn e2e-ts_auto_deps", + "pree2e": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG && bazel build //examples/app:e2e //examples/protocol_buffers:e2e //internal:npm_package //internal/karma:npm_package", + "e2e": "yarn e2e-bazel-external && yarn e2e-examples-app-devserver && yarn e2e-examples-app-prodserver && yarn e2e-examples-protobuf-devserver && yarn e2e-examples-protobuf-prodserver && yarn e2e-npm_packages && yarn e2e-ts_auto_deps && yarn e2e-typescript_3.1", "e2e-bazel-external": "jasmine internal/e2e/default_tsconfig_test.js", - "e2e-examples-app-devserver": "concurrently \"bazel run examples/app:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", - "e2e-examples-app-prodserver": "concurrently \"bazel run examples/app:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", - "e2e-examples-protobuf-devserver": "concurrently \"bazel run examples/protocol_buffers:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first", - "e2e-examples-protobuf-prodserver": "concurrently \"bazel run examples/protocol_buffers:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first", - "e2e-package_karma": "cd internal/e2e/package_karma; bazel test ...", - "e2e-package_karma_stack_trace": "cd internal/e2e/package_karma_stack_trace; bazel test ...", - "e2e-package_typescript": "yarn e2e-package_typescript_2.7 && yarn e2e-package_typescript_2.8 && yarn e2e-package_typescript_2.9 && yarn e2e-package_typescript_3.0 && yarn e2e-package_typescript_3.1 && yarn e2e-package_typescript_3.1_no_npm", - "e2e-package_typescript_2.7": "cd internal/e2e/package_typescript_2.7; bazel test ...", - "e2e-package_typescript_2.8": "cd internal/e2e/package_typescript_2.8; bazel test ...", - "e2e-package_typescript_2.9": "cd internal/e2e/package_typescript_2.9; bazel test ...", - "e2e-package_typescript_3.0": "cd internal/e2e/package_typescript_3.0; bazel test ...", - "e2e-package_typescript_3.1": "cd internal/e2e/package_typescript_3.1; bazel test ...", - "e2e-package_typescript_3.1_no_npm": "cd internal/e2e/package_typescript_3.1_no_npm; bazel test ...", - "e2e-package_typescript_karma": "cd internal/e2e/package_typescript_karma; bazel test ...", - "e2e-ts_auto_deps": "cd internal/e2e/ts_auto_deps; bazel run @build_bazel_rules_typescript//ts_auto_deps -- -recursive && bazel build simple", + "e2e-examples-app-devserver": "concurrently \"bazel run //examples/app:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", + "e2e-examples-app-prodserver": "concurrently \"bazel run //examples/app:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", + "e2e-examples-protobuf-devserver": "concurrently \"bazel run //examples/protocol_buffers:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first", + "e2e-examples-protobuf-prodserver": "concurrently \"bazel run //examples/protocol_buffers:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first", + "e2e-npm_packages": "./internal/e2e/npm_packages/test.sh", + "e2e-ts_auto_deps": "cd internal/e2e/ts_auto_deps; yarn test", + "e2e-typescript_3.1": "cd internal/e2e/typescript_3.1; yarn test", "skydoc": "bazel build //docs && unzip -o -d docs/api bazel-bin/docs/docs-skydoc.zip", "version": "node ./on-version.js && git stage package.bzl", "bazel:format": "find . -type f \\( -name \"*.bzl\" -or -name WORKSPACE -or -name BUILD -or -name BUILD.bazel \\) ! -path \"*/node_modules/*\" | xargs buildifier -v --warnings=args-order,attr-cfg,attr-license,attr-non-empty,attr-output-default,attr-single-file,constant-glob,ctx-actions,ctx-args,depset-iteration,depset-union,dict-concatenation,duplicated-name,filetype,git-repository,http-archive,integer-division,load,load-on-top,native-build,native-package,out-of-order-load,output-group,package-name,package-on-top,positional-args,redefined-variable,repository-name,same-origin-load,string-iteration,unsorted-dict-items,unused-variable", From a546e54901a348aa7810ed889e14cd775627c3a0 Mon Sep 17 00:00:00 2001 From: radokirov Date: Thu, 31 Jan 2019 14:03:53 -0800 Subject: [PATCH 0500/1134] Exports emit_with_tsickle method for custom tsc_wrapped-like compilations. PiperOrigin-RevId: 231849528 --- .../rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index eb8bcbb557..983ac78863 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -262,7 +262,14 @@ function emitWithTypescript( return diagnostics; } -function emitWithTsickle( +/** + * Runs the emit pipeline with Tsickle transformations - goog.module rewriting + * and Closure types emitted included. + * Exported to be used by the internal global refactoring tools. + * TODO(radokirov): investigate using runWithOptions and making this private + * again, if we can make compilerHosts match. + */ +export function emitWithTsickle( program: ts.Program, compilerHost: CompilerHost, compilationTargets: ts.SourceFile[], options: ts.CompilerOptions, bazelOpts: BazelOptions): ts.Diagnostic[] { From 2eeae823e7f4a3a1433a0c55ac770e618473a210 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Thu, 31 Jan 2019 15:18:34 -0800 Subject: [PATCH 0501/1134] Remove the (unused) flag to control whether taze registers tests with all_tests libraries. PiperOrigin-RevId: 231864435 --- .../bazelbuild/rules_typescript/ts_auto_deps/main.go | 7 +++---- .../rules_typescript/ts_auto_deps/updater/test_register.go | 2 +- .../rules_typescript/ts_auto_deps/updater/updater.go | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go index 2d1da26f04..81542dc2f6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go @@ -12,9 +12,8 @@ import ( var ( isRoot = flag.Bool("root", false, "the given path is the root of a TypeScript project "+ "(generates ts_config and ts_development_sources targets).") - recursive = flag.Bool("recursive", false, "recursively update all packages under the given root.") - files = flag.Bool("files", false, "treats arguments as file names. Filters .ts files, then runs on their dirnames.") - allowAllTestLibraries = flag.Bool("allow_all_test_libraries", false, "treats testonly ts_libraries named 'all_tests' as an alternative to ts_config/ts_dev_srcs for registering tests") + recursive = flag.Bool("recursive", false, "recursively update all packages under the given root.") + files = flag.Bool("files", false, "treats arguments as file names. Filters .ts files, then runs on their dirnames.") ) func usage() { @@ -59,7 +58,7 @@ func main() { } host := updater.New(false, false, updater.QueryBasedBazelAnalyze, updater.LocalUpdateFile) - if err := updater.Execute(host, paths, *isRoot, *recursive, *allowAllTestLibraries); err != nil { + if err := updater.Execute(host, paths, *isRoot, *recursive); err != nil { platform.Error(err) } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go index 794dcecb6c..b5f9e67b7c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go @@ -40,7 +40,7 @@ func getAllTestLibraries(bld *build.File) []*build.Rule { // with a testonly ts_library named "all_tests", which allows users to set up // their own BUILD layout. It's separated from UpdateBUILD since it's non-local, // multiple packages may all need to make writes to the same ts_config. -func (upd *Updater) RegisterTestRules(ctx context.Context, allowAllTestLibrary bool, paths ...string) (bool, error) { +func (upd *Updater) RegisterTestRules(ctx context.Context, paths ...string) (bool, error) { reg := &buildRegistry{make(map[string]*build.File), make(map[*build.File]bool)} var g3root string for _, path := range paths { diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index a45d04c82d..f4f9a5e0b9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -1221,7 +1221,7 @@ func Paths(isRoot bool, files bool, recursive bool) ([]string, error) { } // Execute runs ts_auto_deps on paths using host. -func Execute(host *Updater, paths []string, isRoot, recursive, allowAllTestLibraries bool) error { +func Execute(host *Updater, paths []string, isRoot, recursive bool) error { ctx := context.Background() for i, p := range paths { isLastAndRoot := isRoot && i == len(paths)-1 @@ -1240,7 +1240,7 @@ func Execute(host *Updater, paths []string, isRoot, recursive, allowAllTestLibra } } } - host.RegisterTestRules(ctx, allowAllTestLibraries, paths...) + host.RegisterTestRules(ctx, paths...) return nil } From 6d2967f109bfc85e323cc91c830f7d40ce08ac37 Mon Sep 17 00:00:00 2001 From: Di Fan Date: Fri, 1 Feb 2019 07:58:40 -0800 Subject: [PATCH 0502/1134] Update README.md to latest version. Closes #386 PiperOrigin-RevId: 231971554 --- .../github.com/bazelbuild/rules_typescript/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 4ee41fe71e..efd663a71a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -25,8 +25,8 @@ Optionally add the `@bazel/karma` npm package if you would like to use the { ... "devDependencies": { - "@bazel/typescript": "0.20.3", - "@bazel/karma": "0.20.3", + "@bazel/typescript": "0.22.1", + "@bazel/karma": "0.22.1", ... }, ... @@ -46,8 +46,8 @@ containing: ```python http_archive( name = "build_bazel_rules_typescript", - url = "https://github.com/bazelbuild/rules_typescript/archive/0.20.3.zip", - strip_prefix = "rules_typescript-0.20.3", + url = "https://github.com/bazelbuild/rules_typescript/archive/0.22.1.zip", + strip_prefix = "rules_typescript-0.22.1", ) # Fetch transitive Bazel dependencies of build_bazel_rules_typescript From d1d559b02f08164a40277257b06caea8b7d4fbd7 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Fri, 1 Feb 2019 08:25:16 -0800 Subject: [PATCH 0503/1134] Include pre-built ts_auto_deps binaries in the distribution of rules_typescript. This avoids another .go source file dependency in users projects. PiperOrigin-RevId: 231975183 --- .../bazelbuild/rules_typescript/BUILD.bazel | 1 + .../rules_typescript/ts_auto_deps/BUILD.bazel | 78 +++++++++++++++++++ 2 files changed, 79 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index c11b189cbe..dfd563cb28 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -89,5 +89,6 @@ pkg_tar( "//devserver:package", "//internal:package", "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:package", + "//ts_auto_deps:package", ], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel index 827fc90a19..b3d05fee75 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel @@ -1,4 +1,5 @@ load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") +load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar") go_library( name = "go_default_library", @@ -16,3 +17,80 @@ go_binary( embed = [":go_default_library"], visibility = ["//visibility:public"], ) + +config_setting( + name = "darwin_amd64", + constraint_values = [ + "@bazel_tools//platforms:osx", + "@bazel_tools//platforms:x86_64", + ], +) + +config_setting( + name = "linux_amd64", + constraint_values = [ + "@bazel_tools//platforms:linux", + "@bazel_tools//platforms:x86_64", + ], +) + +config_setting( + name = "windows_amd64", + constraint_values = [ + "@bazel_tools//platforms:windows", + "@bazel_tools//platforms:x86_64", + ], +) + +filegroup( + name = "auto_deps", + srcs = select({ + ":darwin_amd64": ["ts_auto_deps-darwin_amd64"], + ":linux_amd64": ["ts_auto_deps-linux_amd64"], + ":windows_amd64": ["ts_auto_deps-windows_amd64.exe"], + }), + # Don't build on CI + tags = ["manual"], +) + +go_binary( + name = "ts_auto_deps-windows", + out = "ts_auto_deps-windows_amd64.exe", + embed = [":go_default_library"], + goarch = "amd64", + goos = "windows", + pure = "on", + visibility = ["//visibility:public"], +) + +go_binary( + name = "ts_auto_deps-darwin", + out = "ts_auto_deps-darwin_amd64", + embed = [":go_default_library"], + goarch = "amd64", + goos = "darwin", + pure = "on", + visibility = ["//visibility:public"], +) + +go_binary( + name = "ts_auto_deps-linux", + out = "ts_auto_deps-linux_amd64", + embed = [":go_default_library"], + goarch = "amd64", + goos = "linux", + pure = "on", + visibility = ["//visibility:public"], +) + +pkg_tar( + name = "package", + srcs = [ + "BUILD.bazel", + ":ts_auto_deps-darwin", + ":ts_auto_deps-linux", + ":ts_auto_deps-windows", + ], + package_dir = "ts_auto_deps", + visibility = ["//:__pkg__"], +) From 1413c947921d19c71e208fea3d4806b2ebe73653 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Fri, 1 Feb 2019 10:07:38 -0800 Subject: [PATCH 0504/1134] Release automation: update README tags to latest also fix a lint error (we really need bazelci to run the linter...) Closes #399 PiperOrigin-RevId: 231991321 --- .../github.com/bazelbuild/rules_typescript/on-version.js | 3 +++ .../github.com/bazelbuild/rules_typescript/package.json | 2 +- .../bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/on-version.js b/third_party/github.com/bazelbuild/rules_typescript/on-version.js index 33a7c04f74..61c881b272 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/on-version.js +++ b/third_party/github.com/bazelbuild/rules_typescript/on-version.js @@ -28,3 +28,6 @@ const shell = require('shelljs'); const version = require('./package.json').version; shell.sed('-i', 'VERSION \= \"[0-9\.]*\"', `VERSION = "${version}"`, 'package.bzl') +shell.sed('-i', '\"@bazel/typescript\": \"[0-9\.]*\"', `"@bazel/typescript": "${version}"`, 'README.md') +shell.sed('-i', 'https://github.com/bazelbuild/rules_typescript/archive/[0-9\.]*\.zip', `https://github.com/bazelbuild/rules_typescript/archive/${version}.zip`, 'README.md') +shell.sed('-i', 'strip_prefix \= \"rules_typescript-[0-9\.]*\"', `strip_prefix = "rules_typescript-${version}"`, 'README.md') diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 176f49facb..9577f6f83c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -49,7 +49,7 @@ "e2e-ts_auto_deps": "cd internal/e2e/ts_auto_deps; yarn test", "e2e-typescript_3.1": "cd internal/e2e/typescript_3.1; yarn test", "skydoc": "bazel build //docs && unzip -o -d docs/api bazel-bin/docs/docs-skydoc.zip", - "version": "node ./on-version.js && git stage package.bzl", + "version": "node ./on-version.js && git stage package.bzl README.md", "bazel:format": "find . -type f \\( -name \"*.bzl\" -or -name WORKSPACE -or -name BUILD -or -name BUILD.bazel \\) ! -path \"*/node_modules/*\" | xargs buildifier -v --warnings=args-order,attr-cfg,attr-license,attr-non-empty,attr-output-default,attr-single-file,constant-glob,ctx-actions,ctx-args,depset-iteration,depset-union,dict-concatenation,duplicated-name,filetype,git-repository,http-archive,integer-division,load,load-on-top,native-build,native-package,out-of-order-load,output-group,package-name,package-on-top,positional-args,redefined-variable,repository-name,same-origin-load,string-iteration,unsorted-dict-items,unused-variable", "bazel:lint": "yarn bazel:format --lint=warn", "bazel:lint-fix": "yarn bazel:format --lint=fix" diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel index b3d05fee75..0ab24a73e8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel @@ -1,5 +1,5 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar") +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") go_library( name = "go_default_library", From c595af386b9a4ef277af11a58067ac447c3479d7 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Fri, 1 Feb 2019 10:22:25 -0800 Subject: [PATCH 0505/1134] Fix for Bazel incompatible changes - Update to the new args API - Update the dependencies - Avoid depset concatenation Fixes #342 Tested: `bazel-0.21 test //... --all_incompatible_changes --incompatible_disable_deprecated_attr_params=false --incompatible_depset_is_not_iterable=false` Closes #378 PiperOrigin-RevId: 231994159 --- .../.github/PULL_REQUEST_TEMPLATE.md | 2 ++ .../rules_typescript/internal/build_defs.bzl | 2 +- .../rules_typescript/internal/common/compilation.bzl | 12 ++++++------ .../internal/protobufjs/ts_proto_library.bzl | 10 +++++----- .../bazelbuild/rules_typescript/package.bzl | 9 +++++---- 5 files changed, 19 insertions(+), 16 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/.github/PULL_REQUEST_TEMPLATE.md b/third_party/github.com/bazelbuild/rules_typescript/.github/PULL_REQUEST_TEMPLATE.md index 1f8ff5ecd3..f705ad6e61 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.github/PULL_REQUEST_TEMPLATE.md +++ b/third_party/github.com/bazelbuild/rules_typescript/.github/PULL_REQUEST_TEMPLATE.md @@ -1,3 +1,5 @@ +*Attention Googlers:* This repo has its Source of Truth in Piper. After sending a PR, you can follow http://g3doc/third_party/bazel_rules/rules_typescript/README.google.md#merging-changes to get your change merged. + ## PR Checklist Please check if your PR fulfills the following requirements: diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index d194f7e996..fbf93d4dcc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -103,7 +103,7 @@ def _compile_action(ctx, inputs, outputs, tsconfig_file, node_opts, description # These deps are identified by the NodeModuleInfo provider. for d in ctx.attr.deps: if NodeModuleInfo in d: - action_inputs.extend(_filter_ts_inputs(d.files)) + action_inputs.extend(_filter_ts_inputs(d.files.to_list())) if ctx.file.tsconfig: action_inputs.append(ctx.file.tsconfig) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 3672044343..99b043ac6c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -256,7 +256,7 @@ def compile_ts( tsickle_externs = [ctx.actions.declare_file(ctx.label.name + ".externs.js")] dep_declarations = _collect_dep_declarations(ctx, deps) - input_declarations = dep_declarations.transitive + src_declarations + input_declarations = depset(src_declarations, transitive = [dep_declarations.transitive]) type_blacklisted_declarations = dep_declarations.type_blacklisted if not is_library and not ctx.attr.generate_externs: type_blacklisted_declarations += srcs_files @@ -276,7 +276,7 @@ def compile_ts( if "TYPESCRIPT_PERF_TRACE_TARGET" in ctx.var: perf_trace = str(ctx.label) == ctx.var["TYPESCRIPT_PERF_TRACE_TARGET"] - compilation_inputs = input_declarations + srcs_files + compilation_inputs = depset(srcs_files, transitive = [input_declarations]) tsickle_externs_path = tsickle_externs[0] if tsickle_externs else None # Calculate allowed dependencies for strict deps enforcement. @@ -293,7 +293,7 @@ def compile_ts( srcs_files, jsx_factory = jsx_factory, tsickle_externs = tsickle_externs_path, - type_blacklisted_declarations = type_blacklisted_declarations, + type_blacklisted_declarations = type_blacklisted_declarations.to_list(), allowed_deps = allowed_deps, ) @@ -332,7 +332,7 @@ def compile_ts( replay_params = None if has_sources: - inputs = compilation_inputs + [ctx.outputs.tsconfig] + inputs = depset([ctx.outputs.tsconfig], transitive = [compilation_inputs]) replay_params = compile_action( ctx, inputs, @@ -376,7 +376,7 @@ def compile_ts( ctx.actions.write(output = tsconfig_json_es5, content = json_marshal( tsconfig_es5, )) - inputs = compilation_inputs + [tsconfig_json_es5] + inputs = depset([tsconfig_json_es5], transitive = [compilation_inputs]) devmode_compile_action( ctx, inputs, @@ -387,7 +387,7 @@ def compile_ts( # TODO(martinprobst): Merge the generated .d.ts files, and enforce strict # deps (do not re-export transitive types from the transitive closure). - transitive_decls = dep_declarations.transitive + src_declarations + gen_declarations + transitive_decls = depset(src_declarations + gen_declarations, transitive = [dep_declarations.transitive]) # both ts_library and ts_declarations generate .closure.js files: # - for libraries, this is the ES6/production code diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl index 07ae0d303d..ee2ea3e1be 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl @@ -23,11 +23,11 @@ def _run_pbjs(actions, executable, output_name, proto_files, suffix = ".js", wra # Reference of arguments: # https://github.com/dcodeIO/ProtoBuf.js/#pbjs-for-javascript args = actions.args() - args.add(["--target", "static-module"]) - args.add(["--wrap", wrap]) + args.add_all(["--target", "static-module"]) + args.add_all(["--wrap", wrap]) args.add("--strict-long") # Force usage of Long type with int64 fields - args.add(["--out", js_file.path + ".tmpl"]) - args.add([f.path for f in proto_files]) + args.add_all(["--out", js_file.path + ".tmpl"]) + args.add_all(proto_files) actions.run( executable = executable._pbjs, @@ -55,7 +55,7 @@ def _run_pbts(actions, executable, js_file): # Reference of arguments: # https://github.com/dcodeIO/ProtoBuf.js/#pbts-for-typescript args = actions.args() - args.add(["--out", ts_file.path]) + args.add_all(["--out", ts_file.path]) args.add(js_file.path) actions.run( diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index 68d1afd020..5ba34e367f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -104,7 +104,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "io_bazel", - urls = ["https://github.com/bazelbuild/bazel/releases/download/0.17.1/bazel-0.17.1-dist.zip"], + urls = ["https://github.com/bazelbuild/bazel/releases/download/0.21.0/bazel-0.21.0-dist.zip"], + sha256 = "6ccb831e683179e0cfb351cb11ea297b4db48f9eab987601c038aa0f83037db4", ) ############################################# @@ -120,9 +121,9 @@ def rules_typescript_dev_dependencies(): http_archive( name = "io_bazel_skydoc", - url = "https://github.com/bazelbuild/skydoc/archive/9bbdf62c03b5c3fed231604f78d3976f47753d79.zip", # 2018-11-20 - strip_prefix = "skydoc-9bbdf62c03b5c3fed231604f78d3976f47753d79", - sha256 = "07ae937026cb56000fb268d4986b220e868c1bdfe6aac27ecada4b4b3dae246f", + url = "https://github.com/bazelbuild/skydoc/archive/82fdbfe797c6591d8732df0c0389a2b1c3e50992.zip", # 2018-12-12 + strip_prefix = "skydoc-82fdbfe797c6591d8732df0c0389a2b1c3e50992", + sha256 = "75fd965a71ca1f0d0406d0d0fb0964d24090146a853f58b432761a1a6c6b47b9", ) def _maybe(repo_rule, name, **kwargs): From 50121e9e7ef9a5dd186d585ba49c0c2d1bcee9f4 Mon Sep 17 00:00:00 2001 From: clydin <19598772+clydin@users.noreply.github.com> Date: Fri, 1 Feb 2019 10:26:46 -0800 Subject: [PATCH 0506/1134] fix(tsetse): avoid double type discover in failure condition for ban-expect-truthy-promise rule Also optimize must-use-promises rule via removal of unneeded type/node checks Closes #372 PiperOrigin-RevId: 231994937 --- .../rules/ban_expect_truthy_promise_rule.ts | 4 +-- .../tsetse/rules/must_use_promises_rule.ts | 35 +++++++++---------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_expect_truthy_promise_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_expect_truthy_promise_rule.ts index fbbefd96e8..d1e79c0208 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_expect_truthy_promise_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_expect_truthy_promise_rule.ts @@ -56,11 +56,11 @@ function checkForTruthy(checker: Checker, node: ts.PropertyAccessExpression) { return; } - if (!tsutils.isThenableType(tc, expectCallNode.arguments[0])) { + const argType = tc.getTypeAtLocation(expectCallNode.arguments[0]); + if (!tsutils.isThenableType(tc, expectCallNode.arguments[0], argType)) { return; } - const argType = tc.getTypeAtLocation(expectCallNode.arguments[0]); checker.addFailureAtNode( node, `Value passed to expect() is of type ${tc.typeToString(argType)}, which` + diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/must_use_promises_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/must_use_promises_rule.ts index 5c39fe506f..7e4905a302 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/must_use_promises_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/must_use_promises_rule.ts @@ -30,30 +30,29 @@ function checkCallExpression(checker: Checker, node: ts.CallExpression) { return; } - const signature = checker.typeChecker.getResolvedSignature(node); - if (signature === undefined) { - return; - } - - const returnType = checker.typeChecker.getReturnTypeOfSignature(signature); - if (!!(returnType.flags & ts.TypeFlags.Void)) { - return; - } - if (tsutils.isThenableType(checker.typeChecker, node)) { checker.addFailureAtNode(node, FAILURE_STRING); } } function inAsyncFunction(node: ts.Node): boolean { - const isFunction = tsutils.isFunctionDeclaration(node) || - tsutils.isArrowFunction(node) || tsutils.isMethodDeclaration(node) || - tsutils.isFunctionExpression(node); - if (isFunction) { - return tsutils.hasModifier(node.modifiers, ts.SyntaxKind.AsyncKeyword); - } - if (node.parent) { - return inAsyncFunction(node.parent); + for (let inode = node.parent; inode !== undefined; inode = inode.parent) { + switch (inode.kind) { + case ts.SyntaxKind.ArrowFunction: + case ts.SyntaxKind.FunctionDeclaration: + case ts.SyntaxKind.FunctionExpression: + case ts.SyntaxKind.MethodDeclaration: + // Potentially async + return tsutils.hasModifier(inode.modifiers, ts.SyntaxKind.AsyncKeyword); + case ts.SyntaxKind.GetAccessor: + case ts.SyntaxKind.SetAccessor: + // These cannot be async + return false; + default: + // Loop and check parent + break; + } } + return false; } From 64f0ca77c89299f8fb949f8c0b50fec4d3fa3b32 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Fri, 1 Feb 2019 16:10:36 -0800 Subject: [PATCH 0507/1134] Adds bazelWorkspaces support to @bazel/typescript and @bazel/karma npm packages Work-around for https://github.com/bazelbuild/rules_typescript/issues/400 in ts_auto_deps e2e test Pin chromedriver version Rename ts_auto_deps-windows_x64.exe to ts_auto_deps-win32_x64.exe so it matches the node os.platform() naming Closes #374 PiperOrigin-RevId: 232055567 --- .../bazelbuild/rules_typescript/.bazelignore | 1 - .../rules_typescript/.circleci/config.yml | 11 +- .../bazelbuild/rules_typescript/.gitignore | 6 +- .../bazelbuild/rules_typescript/BUILD.bazel | 75 +- .../bazelbuild/rules_typescript/README.md | 50 +- .../bazelbuild/rules_typescript/WORKSPACE | 46 +- .../bazelbuild/rules_typescript/defs.bzl | 41 +- .../rules_typescript/devserver/BUILD.bazel | 97 +- .../rules_typescript/docs/BUILD.bazel | 4 +- .../examples/devserver/BUILD.bazel | 3 +- .../examples/protocol_buffers/BUILD.bazel | 3 +- .../examples/testing/BUILD.bazel | 3 +- .../rules_typescript/internal/BUILD.bazel | 75 +- .../rules_typescript/internal/README.md | 5 - .../rules_typescript/internal/defaults.bzl | 17 - .../rules_typescript/internal/devserver/BUILD | 28 +- .../internal/devserver/ts_devserver.bzl | 2 +- .../internal/e2e/default_tsconfig_test.js | 10 +- .../internal/e2e/npm_packages/README.md | 4 +- .../e2e/npm_packages/karma/BUILD.bazel | 2 +- .../internal/e2e/npm_packages/karma/WORKSPACE | 27 +- .../karma}/tsconfig.json | 0 .../internal/e2e/npm_packages/karma/yarn.lock | 1910 -------------- .../karma_stack_trace/BUILD.bazel | 3 +- .../npm_packages/karma_stack_trace/WORKSPACE | 27 +- .../npm_packages/karma_typescript/BUILD.bazel | 3 +- .../npm_packages/karma_typescript/WORKSPACE | 27 +- .../internal/e2e/npm_packages/test.sh | 15 +- .../{ => npm_packages}/ts_auto_deps/.bazelrc | 0 .../ts_auto_deps/BUILD.bazel | 0 .../e2e/npm_packages/ts_auto_deps/WORKSPACE | 45 + .../ts_auto_deps/package-template.json | 9 + .../ts_auto_deps/simple/file.ts | 0 .../ts_auto_deps/tsconfig.json} | 0 .../{ => npm_packages}/ts_auto_deps/yarn.lock | 2 +- .../e2e/npm_packages/typescript_2.7/WORKSPACE | 23 +- .../e2e/npm_packages/typescript_2.7/yarn.lock | 253 -- .../e2e/npm_packages/typescript_2.8/WORKSPACE | 23 +- .../e2e/npm_packages/typescript_2.8/yarn.lock | 253 -- .../e2e/npm_packages/typescript_2.9/WORKSPACE | 23 +- .../e2e/npm_packages/typescript_2.9/yarn.lock | 253 -- .../e2e/npm_packages/typescript_3.0/WORKSPACE | 23 +- .../e2e/npm_packages/typescript_3.0/yarn.lock | 253 -- .../e2e/npm_packages/typescript_3.1/WORKSPACE | 23 +- .../e2e/npm_packages/typescript_3.1/yarn.lock | 254 -- .../package_typescript_2.7/tsconfig.json.oss | 0 .../package_typescript_2.8/tsconfig.json.oss | 0 .../package_typescript_2.9/tsconfig.json.oss | 0 .../package_typescript_3.0/tsconfig.json.oss | 0 .../package_typescript_3.1/tsconfig.json.oss | 0 .../tsconfig.json.oss | 0 .../tsconfig.json.oss | 0 .../internal/e2e/ts_auto_deps/package.json | 9 - .../internal/e2e/typescript_3.1/WORKSPACE | 6 +- .../internal/karma/BUILD.bazel | 60 +- .../rules_typescript/internal/karma/README.md | 5 - .../{e2e/ts_auto_deps => karma}/WORKSPACE | 28 +- .../internal/karma/defaults.bzl | 37 + .../rules_typescript/internal/karma/defs.bzl | 33 + .../internal/karma/karma.conf.js | 2 +- .../internal/karma/karma_web_test.bzl | 4 +- .../internal/karma/package.bzl | 46 + .../internal/karma/package.json | 21 +- .../rules_typescript/internal/karma/yarn.lock | 2320 +++++++++++++++++ .../rules_typescript/internal/package.json | 32 - .../internal/protobufjs/BUILD.bazel | 20 +- .../internal/protobufjs/ts_proto_library.bzl | 2 +- .../internal/ts_repositories.bzl | 44 +- .../bazelbuild/rules_typescript/package.bzl | 51 +- .../bazelbuild/rules_typescript/package.json | 55 +- .../bazel/src/main/protobuf/BUILD.bazel | 7 +- .../rules_typescript/tools/BUILD.bazel | 3 - .../rules_typescript/tools/check_version.js | 93 - .../rules_typescript/ts_auto_deps/BUILD.bazel | 68 +- .../ts_auto_deps/ts_auto_deps.js | 34 + .../bazelbuild/rules_typescript/version.bzl | 56 + .../bazelbuild/rules_typescript/yarn.lock | 5 + 77 files changed, 3099 insertions(+), 3874 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/README.md rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{ts_auto_deps => npm_packages/karma}/tsconfig.json (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{ => npm_packages}/ts_auto_deps/.bazelrc (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{ => npm_packages}/ts_auto_deps/BUILD.bazel (100%) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/package-template.json rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{ => npm_packages}/ts_auto_deps/simple/file.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{package_karma_stack_trace/tsconfig.json.oss => npm_packages/ts_auto_deps/tsconfig.json} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/{ => npm_packages}/ts_auto_deps/yarn.lock (98%) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/package.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/README.md rename third_party/github.com/bazelbuild/rules_typescript/internal/{e2e/ts_auto_deps => karma}/WORKSPACE (71%) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/defaults.bzl create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/defs.bzl create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/package.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/tools/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/tools/check_version.js create mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/ts_auto_deps.js create mode 100644 third_party/github.com/bazelbuild/rules_typescript/version.bzl diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelignore b/third_party/github.com/bazelbuild/rules_typescript/.bazelignore index f4b9e2b273..8f1d7b0fa2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelignore +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelignore @@ -2,5 +2,4 @@ node_modules devserver/devserver/test/test-workspace internal/e2e/disable_tsetse_for_external internal/e2e/npm_packages -internal/e2e/ts_auto_deps internal/e2e/typescript_3.1 diff --git a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml index 9c19ed027c..883705f05a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml @@ -10,7 +10,7 @@ ## IMPORTANT # If you change the `docker_image` version, also change the `cache_key` suffix var_1: &docker_image circleci/node:10.12-browsers -var_2: &cache_key rules_typescript-{{ checksum "yarn.lock" }}-node:10.12-browsers +var_2: &cache_key rules_typescript-{{ checksum "yarn.lock" }}-internal/karma:node:{{ checksum "internal/karma/yarn.lock" }}-10.12-browsers var_3: &setup-bazel-remote-cache run: name: Start up bazel remote cache proxy @@ -47,6 +47,9 @@ jobs: - run: yarn bazel info release - run: yarn bazel build ... - run: yarn bazel test ... + - run: 'cd internal/karma && + yarn install && + yarn bazel build ...' - run: yarn bazel build @disable_tsetse_for_external_test//... # This job tests the same stuff, but without the .bazelrc file. @@ -69,17 +72,23 @@ jobs: # is required to keep Bazel from exhausting the memory. - run: yarn bazel --bazelrc=/dev/null --host_jvm_args=-Xmx3g build ... --local_resources=2560,1.0,1.0 - run: yarn bazel --bazelrc=/dev/null --host_jvm_args=-Xmx3g test ... --local_resources=2560,1.0,1.0 + - run: 'cd internal/karma && + yarn install && + yarn bazel --bazelrc=/dev/null --host_jvm_args=-Xmx3g build ... --local_resources=2560,1.0,1.0' - run: yarn bazel --bazelrc=/dev/null --host_jvm_args=-Xmx3g build @disable_tsetse_for_external_test//... --local_resources=2560,1.0,1.0 - save_cache: key: *cache_key paths: - "node_modules" + - "internal/karma/node_modules" # Runs end-to-end browser tests. test: <<: *job_defaults resource_class: xlarge + environment: + CHROMEDRIVER_VERSION_ARG: --versions.chrome 2.41 steps: - checkout: <<: *post_checkout diff --git a/third_party/github.com/bazelbuild/rules_typescript/.gitignore b/third_party/github.com/bazelbuild/rules_typescript/.gitignore index be15be3d4a..eea1acf5e9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.gitignore +++ b/third_party/github.com/bazelbuild/rules_typescript/.gitignore @@ -3,6 +3,6 @@ node_modules /bazel-* /internal/e2e/npm_packages/*/bazel-* /internal/e2e/npm_packages/*/package.json -/internal/e2e/ts_auto_deps/bazel-* -/internal/e2e/ts_auto_deps/simple/BUILD -/internal/e2e/ts_auto_deps/simple/BUILD.bazel +/internal/e2e/npm_packages/ts_auto_deps/simple/BUILD +/internal/e2e/npm_packages/ts_auto_deps/simple/BUILD.bazel +/internal/karma/bazel-* diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index dfd563cb28..1dffb8188d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -19,9 +19,9 @@ # https://github.com/bazelbuild/rules_go/blob/master/go/tools/gazelle/README.rst#directives # gazelle:exclude node_modules load("@bazel_gazelle//:def.bzl", "gazelle") -load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar") -load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary") +load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary", "npm_package") load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") +load("//:version.bzl", "COMPAT_VERSION") # ts_library defaults to this label in the top-level package. # Point to where the file actually lives. @@ -55,40 +55,61 @@ js_library( visibility = ["//visibility:public"], ) +npm_package( + name = "npm_package", + srcs = [ + "BUILD.bazel", + "LICENSE", + "README.md", + "WORKSPACE", + "defs.bzl", + "package.bzl", + "package.json", + "version.bzl", + "//devserver:npm_package_assets", + "//internal:npm_package_assets", + "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:npm_package_assets", + "//ts_auto_deps:npm_package_assets", + ], + replacements = { + # Do a simple replacement needed to make the local development differ + # from how our release is used. + "//devserver:devserver_bin": "//devserver", + "0.0.0-COMPAT_VERSION": COMPAT_VERSION, + }, + deps = [ + "//devserver:devserver-darwin", + "//devserver:devserver-linux", + "//devserver:devserver-windows", + "//internal:tsc_wrapped", + "//ts_auto_deps:ts_auto_deps-darwin", + "//ts_auto_deps:ts_auto_deps-linux", + "//ts_auto_deps:ts_auto_deps-windows", + ], +) + +# Produces the release we publish to GitHub. Users download this starlark package +# to get the @build_bazel_rules_typescript workspace. +# FIXME(gregmagolan): strip the npm_package prefix from within the generated archive +# pkg_tar( +# name = "release", +# srcs = ["//:npm_package"], +# extension = "tgz", +# ) + + # A nodejs_binary for @bazel/typescript/tsc_wrapped to use by default in # ts_library that depends on @npm//@bazel/typescript instead of the # output of the //internal/tsc_wrapped ts_library rule. This # default is for downstream users that depend on the @bazel/typescript npm -# package. The generated @npm//@bazel/typescript/bin:tsc_wrapped target -# does not work because it does not have the node `--expose-gc` flag +# package. A generated @npm//@bazel/typescript/bin:tsc_wrapped target +# would not work because it does not have the node `--expose-gc` flag # set which is required to support the call to `global.gc()`. nodejs_binary( name = "@bazel/typescript/tsc_wrapped", data = ["@npm//@bazel/typescript"], - entry_point = "@bazel/typescript/tsc_wrapped/tsc_wrapped.js", + entry_point = "@bazel/typescript/internal/tsc_wrapped/tsc_wrapped.js", install_source_map_support = False, templated_args = ["--node_options=--expose-gc"], visibility = ["//visibility:public"], ) - -# Produces the release we publish to GitHub. Users download this starlark package -# to get the @build_bazel_rules_typescript workspace. -# It's the companion of the @bazel/typescript, @bazel/karma, etc npm packages. -pkg_tar( - name = "release", - srcs = [ - "AUTHORS", - "BUILD.bazel", - "LICENSE", - "WORKSPACE", - "defs.bzl", - "package.bzl", - ], - extension = "tgz", - deps = [ - "//devserver:package", - "//internal:package", - "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:package", - "//ts_auto_deps:package", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index efd663a71a..df68fecd8b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -19,14 +19,14 @@ First, install a current Bazel distribution. Add the `@bazel/typescript` npm package to your `package.json` `devDependencies`. Optionally add the `@bazel/karma` npm package if you would like to use the -`ts_web_test_suite` rule. +`ts_web_test`, `ts_web_test_suite`, `karma_web_test` or `karma_web_test_suite` rules. ``` { ... "devDependencies": { - "@bazel/typescript": "0.22.1", - "@bazel/karma": "0.22.1", + "@bazel/typescript": "0.23.0", + "@bazel/karma": "0.23.0", ... }, ... @@ -44,24 +44,15 @@ Next create a `WORKSPACE` file in your project root (or edit the existing one) containing: ```python +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +# Fetch rules_nodejs http_archive( - name = "build_bazel_rules_typescript", - url = "https://github.com/bazelbuild/rules_typescript/archive/0.22.1.zip", - strip_prefix = "rules_typescript-0.22.1", + name = "build_bazel_rules_nodejs", + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], + strip_prefix = "rules_nodejs-0.16.8", ) -# Fetch transitive Bazel dependencies of build_bazel_rules_typescript -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") -rules_typescript_dependencies() - -# Fetch transitive Bazel dependencies of build_bazel_rules_nodejs -load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") -rules_nodejs_dependencies() - -# Setup TypeScript toolchain -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") -ts_setup_workspace() - # Setup the NodeJS toolchain load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") node_repositories() @@ -77,12 +68,25 @@ yarn_install( yarn_lock = "//:yarn.lock", ) -# Setup Go toolchain -load("@io_bazel_rules_go//go:def.bzl", "go_rules_dependencies", "go_register_toolchains") -go_rules_dependencies() -go_register_toolchains() +# Install all Bazel dependencies needed for npm packages that supply Bazel rules +load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") +install_bazel_dependencies() + +# Fetch transitive Bazel dependencies of build_bazel_rules_typescript +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") +rules_typescript_dependencies() + +# Fetch transitive Bazel dependencies of build_bazel_rules_karma +# ONLY REQUIRED if you are using the @bazel/karma npm package +load("@build_bazel_rules_karma//:package.bzl", "rules_karma_dependencies") +rules_karma_dependencies() + +# Setup TypeScript toolchain +load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") +ts_setup_workspace() # Setup web testing, choose browsers we can test on +# ONLY REQUIRED if you are using the @bazel/karma npm package load("@io_bazel_rules_webtesting//web:repositories.bzl", "browser_repositories", "web_test_repositories") web_test_repositories() @@ -138,7 +142,7 @@ filegroup( # compiler attribute when using self-managed dependencies nodejs_binary( name = "@bazel/typescript/tsc_wrapped", - entry_point = "@bazel/typescript/tsc_wrapped/tsc_wrapped.js", + entry_point = "@bazel/typescript/internal/tsc_wrapped/tsc_wrapped.js", # The --expose-gc node option is required for tsc_wrapped templated_args = ["--node_options=--expose-gc"], # Point bazel to your node_modules to find the entry point diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 49d4fde2f8..2c90799deb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -14,16 +14,23 @@ workspace(name = "build_bazel_rules_typescript") -load( - "@build_bazel_rules_typescript//:package.bzl", - "rules_typescript_dependencies", - "rules_typescript_dev_dependencies", +# Load nested build_bazel_rules_karma repository +local_repository( + name = "build_bazel_rules_karma", + path = "internal/karma", ) -rules_typescript_dependencies() +# Load our dependencies +load("//:package.bzl", "rules_typescript_dev_dependencies") rules_typescript_dev_dependencies() +# Load rules_karma dependencies +load("@build_bazel_rules_karma//:package.bzl", "rules_karma_dependencies") + +rules_karma_dependencies() + +# Setup nodejs toolchain load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") # Use a bazel-managed npm dependency, allowing us to test resolution to these paths @@ -41,39 +48,36 @@ yarn_install( ) # Install a hermetic version of node. -node_repositories(preserve_symlinks = True) +node_repositories() -# Note: We depend on @bazel/typescript in package.json -# so that the target @npm//@bazel/typescript is defined -# as it is referenced in /BUILD.bazel for use downstream. -# This target and package is not used locally so -# the version of this dependency does not matter. +# Download npm dependencies yarn_install( name = "npm", package_json = "//:package.json", yarn_lock = "//:yarn.lock", ) +# Setup rules_go toolchain load("@io_bazel_rules_go//go:def.bzl", "go_register_toolchains", "go_rules_dependencies") go_rules_dependencies() go_register_toolchains() +# Setup gazelle toolchain load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") gazelle_dependencies() -load( - "@build_bazel_rules_typescript//:defs.bzl", - "check_rules_typescript_version", - "ts_setup_workspace", -) +# Setup typescript toolchain +load("//internal:ts_repositories.bzl", "ts_setup_dev_workspace") -ts_setup_workspace() +ts_setup_dev_workspace() # Test that check_rules_typescript_version works as expected -check_rules_typescript_version(minimum_version_string = "0.15.3") +load("//:defs.bzl", "check_rules_typescript_version") + +check_rules_typescript_version(version_string = "0.22.0") # Dependencies for generating documentation load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") @@ -84,12 +88,14 @@ load("@io_bazel_skydoc//skylark:skylark.bzl", "skydoc_repositories") skydoc_repositories() -# Load pinned browser versions for rules_webtesting. +# Setup rules_webtesting toolchain load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories") -load("@io_bazel_rules_webtesting//web/internal:platform_http_file.bzl", "platform_http_file") web_test_repositories() +# Load pinned browser versions for rules_webtesting. +load("@io_bazel_rules_webtesting//web/internal:platform_http_file.bzl", "platform_http_file") + platform_http_file( name = "org_chromium_chromium", amd64_sha256 = diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl index 4f68fa23ea..7ae01391cd 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl @@ -17,56 +17,19 @@ Users should not load files under "/internal" """ -load("@build_bazel_rules_nodejs//internal/common:check_version.bzl", "check_version") -load("//:package.bzl", "VERSION") +load("//:version.bzl", _check_rules_typescript_version = "check_rules_typescript_version") load("//internal/devserver:ts_devserver.bzl", _ts_devserver = "ts_devserver_macro") -load( - "//internal/karma:karma_web_test.bzl", - _karma_web_test = "karma_web_test", - _karma_web_test_suite = "karma_web_test_suite", -) -load( - "//internal/karma:ts_web_test.bzl", - _ts_web_test = "ts_web_test", - _ts_web_test_suite = "ts_web_test_suite", -) load("//internal/protobufjs:ts_proto_library.bzl", _ts_proto_library = "ts_proto_library") load("//internal:build_defs.bzl", _ts_library = "ts_library_macro") load("//internal:ts_config.bzl", _ts_config = "ts_config") load("//internal:ts_repositories.bzl", _ts_setup_workspace = "ts_setup_workspace") +check_rules_typescript_version = _check_rules_typescript_version ts_setup_workspace = _ts_setup_workspace ts_library = _ts_library ts_config = _ts_config ts_devserver = _ts_devserver -# TODO(alexeagle): make ts_web_test && ts_web_test_suite work in google3 -ts_web_test = _ts_web_test -ts_web_test_suite = _ts_web_test_suite -karma_web_test = _karma_web_test -karma_web_test_suite = _karma_web_test_suite ts_proto_library = _ts_proto_library # DO NOT ADD MORE rules here unless they appear in the generated docsite. # Run yarn skydoc to re-generate the docsite. - -def check_rules_typescript_version(minimum_version_string): - """ - Verify that a minimum build_bazel_rules_typescript is loaded a WORKSPACE. - - This should be called from the `WORKSPACE` file so that the build fails as - early as possible. For example: - - ``` - # in WORKSPACE: - load("@build_bazel_rules_typescript//:defs.bzl", "check_rules_typescript_version") - check_rules_typescript_version("0.15.3") - ``` - - Args: - minimum_version_string: a string indicating the minimum version - """ - if not check_version(VERSION, minimum_version_string): - fail("\nCurrent build_bazel_rules_typescript version is {}, expected at least {}\n".format( - VERSION, - minimum_version_string, - )) diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/BUILD.bazel index a79f5459aa..07e8907a1f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/BUILD.bazel @@ -1,8 +1,5 @@ -load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar") load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") -package(default_visibility = ["//visibility:public"]) - go_library( name = "go_default_library", srcs = [ @@ -19,13 +16,51 @@ go_library( ) go_binary( - name = "devserver", + name = "devserver_bin", + embed = [":go_default_library"], + visibility = ["//visibility:public"], +) + +go_binary( + name = "devserver-darwin", + out = "devserver-darwin_x64", + embed = [":go_default_library"], + goarch = "amd64", + goos = "darwin", + pure = "on", + visibility = ["//visibility:public"], +) + +go_binary( + name = "devserver-linux", + out = "devserver-linux_x64", embed = [":go_default_library"], + goarch = "amd64", + goos = "linux", + pure = "on", + visibility = ["//visibility:public"], +) + +go_binary( + name = "devserver-windows", + out = "devserver-windows_x64.exe", + embed = [":go_default_library"], + goarch = "amd64", + goos = "windows", + pure = "on", + visibility = ["//visibility:public"], +) + +filegroup( + name = "npm_package_assets", + srcs = [ + "BUILD.bazel", + ], visibility = ["//visibility:public"], ) config_setting( - name = "darwin_amd64", + name = "darwin_x64", constraint_values = [ "@bazel_tools//platforms:osx", "@bazel_tools//platforms:x86_64", @@ -33,7 +68,7 @@ config_setting( ) config_setting( - name = "linux_amd64", + name = "linux_x64", constraint_values = [ "@bazel_tools//platforms:linux", "@bazel_tools//platforms:x86_64", @@ -41,7 +76,7 @@ config_setting( ) config_setting( - name = "windows_amd64", + name = "windows_x64", constraint_values = [ "@bazel_tools//platforms:windows", "@bazel_tools//platforms:x86_64", @@ -49,53 +84,13 @@ config_setting( ) filegroup( - name = "server", + name = "devserver", srcs = select({ - ":darwin_amd64": ["devserver-darwin_amd64"], - ":linux_amd64": ["devserver-linux_amd64"], - ":windows_amd64": ["devserver-windows_amd64.exe"], + ":darwin_x64": ["devserver-darwin_x64"], + ":linux_x64": ["devserver-linux_x64"], + ":windows_x64": ["devserver-windows_x64.exe"], }), # Don't build on CI tags = ["manual"], -) - -go_binary( - name = "devserver-windows", - out = "devserver-windows_amd64.exe", - embed = [":go_default_library"], - goarch = "amd64", - goos = "windows", - pure = "on", - visibility = ["//visibility:public"], -) - -go_binary( - name = "devserver-darwin", - out = "devserver-darwin_amd64", - embed = [":go_default_library"], - goarch = "amd64", - goos = "darwin", - pure = "on", visibility = ["//visibility:public"], ) - -go_binary( - name = "devserver-linux", - out = "devserver-linux_amd64", - embed = [":go_default_library"], - goarch = "amd64", - goos = "linux", - pure = "on", - visibility = ["//visibility:public"], -) - -pkg_tar( - name = "package", - srcs = [ - "BUILD.bazel", - ":devserver-darwin", - ":devserver-linux", - ":devserver-windows", - ], - package_dir = "devserver", -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/docs/BUILD.bazel index c5fa396638..c8c686b6ee 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/BUILD.bazel @@ -7,8 +7,10 @@ skylark_doc( "//internal:ts_config.bzl", "//internal:ts_repositories.bzl", "//internal/devserver:ts_devserver.bzl", - "//internal/karma:ts_web_test.bzl", "//internal/protobufjs:ts_proto_library.bzl", + # TODO(gregmagolan): fix docs for build_bazel_rules_karma + # "@build_bazel_rules_karma//:karma_web_test.bzl", + # "@build_bazel_rules_karma//:ts_web_test.bzl", ], format = "html", # The site is served at http://tsetse.info so the URL doesn't include a diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/BUILD.bazel index f29149e90b..efa1f62856 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/BUILD.bazel @@ -1,4 +1,5 @@ -load("//:defs.bzl", "ts_devserver", "ts_library") +load("//:defs.bzl", "ts_devserver") +load("//internal:defaults.bzl", "ts_library") ts_library( name = "app", diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel index 89a2cbb48b..16452de7f4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel @@ -1,3 +1,4 @@ +load("@build_bazel_rules_karma//:defaults.bzl", "ts_web_test_suite") load("@build_bazel_rules_nodejs//:defs.bzl", "http_server", "rollup_bundle") load("@io_bazel_rules_go//go:def.bzl", "go_library") load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") @@ -6,7 +7,7 @@ load( "ts_devserver", "ts_proto_library", ) -load("//internal:defaults.bzl", "ts_library", "ts_web_test_suite") +load("//internal:defaults.bzl", "ts_library") proto_library( name = "tire_proto", diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel index d2d7e2879a..287a3b9dd9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel @@ -1,4 +1,5 @@ -load("//internal:defaults.bzl", "karma_web_test_suite", "ts_library", "ts_web_test_suite") +load("@build_bazel_rules_karma//:defaults.bzl", "karma_web_test_suite", "ts_web_test_suite") +load("//internal:defaults.bzl", "ts_library") ts_library( name = "lib", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 5a4932cc43..44372313a7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -14,8 +14,7 @@ # gazelle:exclude worker_protocol.proto -load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar") -load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test", "nodejs_binary", "npm_package") +load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test", "nodejs_binary") load("//internal:defaults.bzl", "ts_library") package(default_visibility = ["//visibility:public"]) @@ -117,75 +116,21 @@ jasmine_node_test( ], ) -genrule( - name = "license_copy", - srcs = ["//:LICENSE"], - outs = ["LICENSE"], - cmd = "cp $< $@", -) - -genrule( - name = "worker_protocol_copy", - srcs = ["//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto"], - outs = ["worker_protocol.proto"], - cmd = "cp $< $@", -) - -genrule( - name = "check_version_copy", - srcs = ["//tools:check_version.js"], - outs = ["check_version.js"], - cmd = "cp $< $@", -) - -npm_package( - name = "npm_package", - srcs = [ - "README.md", - "package.json", - ], - deps = [ - ":check_version_copy", - ":license_copy", - ":tsc_wrapped", - ":worker_protocol_copy", - ], -) - -pkg_tar( - name = "tsc_wrapped_pkg", - srcs = glob([ - "tsc_wrapped/**", - ]), - package_dir = "tsc_wrapped", -) - -pkg_tar( - name = "common_pkg", +filegroup( + name = "npm_package_assets", srcs = [ + "BUILD.bazel", + "build_defs.bzl", "common/compilation.bzl", "common/json_marshal.bzl", "common/module_mappings.bzl", "common/tsconfig.bzl", - ], - package_dir = "common", -) - -pkg_tar( - name = "package", - srcs = [ - "BUILD.bazel", - "build_defs.bzl", - "package.json", + "defaults.bzl", "ts_config.bzl", "ts_repositories.bzl", - ], - package_dir = "internal", - deps = [ - ":common_pkg", - ":tsc_wrapped_pkg", - "//internal/devserver:package", - "//internal/karma:package", - "//internal/protobufjs:package", + "tsc_wrapped/package.json", + "tsc_wrapped/yarn.lock", + "//internal/devserver:npm_package_assets", + "//internal/protobufjs:npm_package_assets", ], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/README.md b/third_party/github.com/bazelbuild/rules_typescript/internal/README.md deleted file mode 100644 index f613e96f7f..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Bazel TypeScript compiler - -This npm package provides the JavaScript code needed by the `ts_library` Bazel rule. - -See http://tsetse.info/api/build_defs.html#ts_library for documentation. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/defaults.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/defaults.bzl index ca2f423537..1823e30837 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/defaults.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/defaults.bzl @@ -16,30 +16,13 @@ load( "@build_bazel_rules_typescript//:defs.bzl", - _karma_web_test = "karma_web_test", - _karma_web_test_suite = "karma_web_test_suite", _ts_library = "ts_library", - _ts_web_test = "ts_web_test", - _ts_web_test_suite = "ts_web_test_suite", ) # We can't use the defaults for ts_library compiler and ts_web_test_suite karma # internally because the defaults are .js dependencies on the npm packages that are # published and internally we are building the things themselves to publish to npm INTERNAL_TS_LIBRARY_COMPILER = "@build_bazel_rules_typescript//internal:tsc_wrapped_bin" -INTERNAL_KARMA_BIN = "@build_bazel_rules_typescript//internal/karma:karma_bin" - -def karma_web_test(karma = INTERNAL_KARMA_BIN, **kwargs): - _karma_web_test(karma = karma, **kwargs) - -def karma_web_test_suite(karma = INTERNAL_KARMA_BIN, **kwargs): - _karma_web_test_suite(karma = karma, **kwargs) def ts_library(compiler = INTERNAL_TS_LIBRARY_COMPILER, **kwargs): _ts_library(compiler = compiler, **kwargs) - -def ts_web_test(karma = INTERNAL_KARMA_BIN, **kwargs): - _ts_web_test(karma = karma, **kwargs) - -def ts_web_test_suite(karma = INTERNAL_KARMA_BIN, **kwargs): - _ts_web_test_suite(karma = karma, **kwargs) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD index 0f8171f182..d6e9733128 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar") - licenses(["notice"]) # Apache 2.0 package(default_visibility = [ @@ -30,29 +28,13 @@ filegroup( srcs = glob(["**/*"]), ) -# Do a simple replacement needed to make the local development differ from how -# our release is used. -# NB: doesn't work on Windows, so we have to release from Mac/Linux for now. -genrule( - name = "patched_devserver_bzl", - srcs = ["ts_devserver.bzl"], - outs = ["patched/ts_devserver.bzl"], - cmd = """sed 's#"//devserver:devserver"#"//devserver:server"#' < $< > $@""", -) - -# Remove the "patched/" directory prefix so that the ts_devserver.bzl ends up in -# the same path in the final tar as it had in our local repo. -pkg_tar( - name = "strip_workaround", - srcs = [":patched_devserver_bzl"], -) - -pkg_tar( - name = "package", +filegroup( + name = "npm_package_assets", srcs = [ "BUILD", + "package.json", + "ts_devserver.bzl", + "yarn.lock", ], - package_dir = "devserver", visibility = ["//internal:__pkg__"], - deps = ["strip_workaround"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl index eee9b69edb..0667c98f30 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl @@ -200,7 +200,7 @@ ts_devserver = rule( # NB: this value is replaced by "//devserver:server" in the packaged distro # //devserver:server is the pre-compiled binary. # That means that our users don't need the go toolchain. - default = Label("//devserver:devserver"), + default = Label("//devserver:devserver_bin"), executable = True, cfg = "host", ), diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js index b079271814..7711521393 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js @@ -26,8 +26,9 @@ local_repository( name = "build_bazel_rules_typescript", path = "${process.cwd()}", ) -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") -rules_typescript_dependencies() +# Using rules_typescript_dev_dependencies for this test since we're not depending on the generated npm package +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dev_dependencies") +rules_typescript_dev_dependencies() load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") node_repositories() yarn_install( @@ -35,8 +36,9 @@ yarn_install( package_json = "//:package.json", yarn_lock = "//:yarn.lock", ) -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") -ts_setup_workspace() +# Using ts_setup_dev_workspace for this test since we're not depending on the generated npm package +load("@build_bazel_rules_typescript//internal:ts_repositories.bzl", "ts_setup_dev_workspace") +ts_setup_dev_workspace() `; const PACKAGE_JSON = `{ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/README.md b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/README.md index 183e15cde1..240a622996 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/README.md @@ -11,9 +11,9 @@ the generated npm packages are substituted in when generating the `package.json` ### Running an individual test -To run a specific test run this script with `./internal/e2e/npm_packages/test.sh --test ` where `` +To run a specific test run `yarn e2e-npm_packages --test ` where `` is the name of the test folder to run. ### Updating yarn.lock file -To update the `yarn.lock` files for these tests run `./internal/e2e/npm_packages/test.sh --update-lock-files`. +To update the `yarn.lock` files for these tests run `yarn e2e-npm_packages --update-lock-files`. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel index 4db820d46f..85122f3d84 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@build_bazel_rules_typescript//:defs.bzl", "ts_web_test_suite") +load("@build_bazel_rules_karma//:defs.bzl", "ts_web_test_suite") ts_web_test_suite( name = "testing", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE index c2e453c1ea..5a409ea806 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE @@ -14,18 +14,17 @@ workspace(name = "npm_packages_karma_e2e") -local_repository( - name = "build_bazel_rules_typescript", - path = "../../../..", -) - -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -rules_typescript_dependencies() +http_archive( + name = "build_bazel_rules_nodejs", + strip_prefix = "rules_nodejs-0.16.8", + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], +) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") -node_repositories(preserve_symlinks = True) +node_repositories() yarn_install( name = "npm", @@ -33,11 +32,13 @@ yarn_install( yarn_lock = "//:yarn.lock", ) -load("@io_bazel_rules_go//go:def.bzl", "go_register_toolchains", "go_rules_dependencies") +load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") -go_rules_dependencies() +install_bazel_dependencies() -go_register_toolchains() +load("@build_bazel_rules_karma//:package.bzl", "rules_karma_dependencies") + +rules_karma_dependencies() load("@io_bazel_rules_webtesting//web:repositories.bzl", "browser_repositories", "web_test_repositories") @@ -47,7 +48,3 @@ browser_repositories( chromium = True, firefox = True, ) - -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") - -ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/tsconfig.json similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/tsconfig.json diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock index 5d4f3b09ba..4a5801883d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock @@ -1,1912 +1,2 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 - - -"@bazel/karma@file:../../../../../../../../../private/var/tmp/_bazel_greg/2c1df01758b58adaef1f5cb29a065852/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/internal/karma/npm_package": - version "0.22.1-19-gecef600" - dependencies: - jasmine-core "2.8.0" - karma "^4.0.0" - karma-chrome-launcher "2.2.0" - karma-firefox-launcher "1.1.0" - karma-jasmine "1.1.1" - karma-requirejs "1.1.0" - karma-sauce-launcher "2.0.2" - karma-sourcemap-loader "0.3.7" - requirejs "2.3.5" - semver "5.6.0" - tmp "0.0.33" - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - -accepts@~1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" - dependencies: - mime-types "~2.1.18" - negotiator "0.6.1" - -adm-zip@~0.4.3: - version "0.4.11" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.11.tgz#2aa54c84c4b01a9d0fb89bb11982a51f13e3d62a" - -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - -agent-base@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - dependencies: - es6-promisify "^5.0.0" - -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" - -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" - -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-slice@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - -arraybuffer.slice@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" - -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" - -async@^2.1.2: - version "2.6.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" - dependencies: - lodash "^4.17.10" - -atob@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - -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" - -better-assert@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" - dependencies: - callsite "1.0.0" - -binary-extensions@^1.0.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" - -blob@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" - -bluebird@^3.3.0: - version "3.5.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" - -body-parser@^1.16.1: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" - on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" - -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@^0.1.2: - version "0.1.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" - dependencies: - expand-range "^0.1.0" - -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" - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - -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" - -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - -chokidar@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" - 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" - lodash.debounce "^4.0.8" - normalize-path "^2.1.1" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - upath "^1.0.5" - optionalDependencies: - fsevents "^1.2.2" - -chownr@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - -circular-json@^0.5.5: - version "0.5.7" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.7.tgz#b8be478d72ea58c7eeda26bf1cf1fba43d188842" - -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" - -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" - -colors@^1.1.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.2.tgz#2df8ff573dfbf255af562f8ce7181d6b971a359b" - -combine-lists@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" - dependencies: - lodash "^4.5.0" - -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - -component-emitter@1.2.1, component-emitter@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -connect@^3.6.0: - version "3.6.6" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" - dependencies: - debug "2.6.9" - finalhandler "1.1.0" - parseurl "~1.3.2" - utils-merge "1.0.1" - -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" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - -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.2.0: - version "2.5.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" - -core-js@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" - integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= - -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" - -custom-event@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" - -date-format@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" - -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" - -debug@=3.1.0, debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - dependencies: - ms "2.0.0" - -debug@^3.1.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.5.tgz#c2418fbfd7a29f4d4f70ff4cea604d4b64c46407" - dependencies: - ms "^2.1.1" - -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" - -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" - -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" - -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - -di@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - -dom-serialize@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" - dependencies: - custom-event "~1.0.0" - ent "~2.2.0" - extend "^3.0.0" - void-elements "^2.0.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - -encodeurl@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - -engine.io-client@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.1.1" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.5" - parseuri "0.0.5" - ws "~3.3.1" - xmlhttprequest-ssl "~1.5.4" - yeast "0.1.2" - -engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" - dependencies: - after "0.8.2" - arraybuffer.slice "~0.0.7" - base64-arraybuffer "0.1.5" - blob "0.0.4" - has-binary2 "~1.0.2" - -engine.io@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.0.tgz#54332506f42f2edc71690d2f2a42349359f3bf7d" - dependencies: - accepts "~1.3.4" - base64id "1.0.0" - cookie "0.3.1" - debug "~3.1.0" - engine.io-parser "~2.1.0" - ws "~3.3.1" - -ent@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - -es6-promise@^4.0.3: - version "4.2.5" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" - -es6-promise@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" - integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - dependencies: - es6-promise "^4.0.3" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - -eventemitter3@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" - -expand-braces@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" - dependencies: - array-slice "^0.2.3" - array-unique "^0.2.1" - braces "^0.1.2" - -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" - -expand-range@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" - dependencies: - is-number "^0.1.1" - repeat-string "^0.2.2" - -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" - -extend@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - -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" - -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" - -finalhandler@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" - dependencies: - debug "2.6.9" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.3.1" - unpipe "~1.0.0" - -flatted@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" - integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== - -follow-redirects@^1.0.0: - version "1.5.8" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.8.tgz#1dbfe13e45ad969f813e86c00e5296f525c885a1" - dependencies: - debug "=3.1.0" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -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" - -fs-access@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" - dependencies: - null-check "^1.0.0" - -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.2.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" - -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-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.1: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - 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" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -has-binary2@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" - dependencies: - isarray "2.0.1" - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - -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" - -http-errors@1.6.3, http-errors@~1.6.3: - version "1.6.3" - resolved "http://registry.npmjs.org/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" - -http-proxy@^1.13.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" - dependencies: - eventemitter3 "^3.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -https-proxy-agent@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" - dependencies: - agent-base "^4.1.0" - debug "^3.1.0" - -iconv-lite@0.4.23: - 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" - -iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - dependencies: - safer-buffer ">= 2.1.2 < 3" - -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" - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= - -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.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - -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-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-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-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@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" - -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-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-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isarray@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" - -isbinaryfile@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" - dependencies: - buffer-alloc "^1.2.0" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - -jasmine-core@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - -jszip@^3.1.3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" - integrity sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ== - dependencies: - core-js "~2.3.0" - es6-promise "~3.0.2" - lie "~3.1.0" - pako "~1.0.2" - readable-stream "~2.0.6" - -karma-chrome-launcher@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" - dependencies: - fs-access "^1.0.0" - which "^1.2.1" - -karma-firefox-launcher@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz#2c47030452f04531eb7d13d4fc7669630bb93339" - -karma-jasmine@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.1.tgz#6fe840e75a11600c9d91e84b33c458e1c46a3529" - -karma-requirejs@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/karma-requirejs/-/karma-requirejs-1.1.0.tgz#fddae2cb87d7ebc16fb0222893564d7fee578798" - -karma-sauce-launcher@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-2.0.2.tgz#dbf98e70d86bf287b03a537cf637eb7aefa975c3" - integrity sha512-jLUFaJhHMcKpxFWUesyWYihzM5FvQiJsDwGcCtKeOy2lsWhkVw0V0Byqb1d+wU6myU1mribBtsIcub23HS4kWA== - dependencies: - sauce-connect-launcher "^1.2.4" - saucelabs "^1.5.0" - selenium-webdriver "^4.0.0-alpha.1" - -karma-sourcemap-loader@0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" - dependencies: - graceful-fs "^4.1.2" - -karma@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-3.0.0.tgz#6da83461a8a28d8224575c3b5b874e271b4730c3" - dependencies: - bluebird "^3.3.0" - body-parser "^1.16.1" - chokidar "^2.0.3" - colors "^1.1.0" - combine-lists "^1.0.0" - connect "^3.6.0" - core-js "^2.2.0" - di "^0.0.1" - dom-serialize "^2.2.0" - expand-braces "^0.1.1" - glob "^7.1.1" - graceful-fs "^4.1.2" - http-proxy "^1.13.0" - isbinaryfile "^3.0.0" - lodash "^4.17.4" - log4js "^3.0.0" - mime "^2.3.1" - minimatch "^3.0.2" - optimist "^0.6.1" - qjobs "^1.1.4" - range-parser "^1.2.0" - rimraf "^2.6.0" - safe-buffer "^5.0.1" - socket.io "2.1.1" - source-map "^0.6.1" - tmp "0.0.33" - useragent "2.2.1" - -karma@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-4.0.0.tgz#f28e38a2b66243fde3f98e12a8dcaa2c6ff8ca9c" - integrity sha512-EFoFs3F6G0BcUGPNOn/YloGOb3h09hzTguyXlg6loHlKY76qbJikkcyPk43m2kfRF65TUGda/mig29QQtyhm1g== - dependencies: - bluebird "^3.3.0" - body-parser "^1.16.1" - chokidar "^2.0.3" - colors "^1.1.0" - combine-lists "^1.0.0" - connect "^3.6.0" - core-js "^2.2.0" - di "^0.0.1" - dom-serialize "^2.2.0" - expand-braces "^0.1.1" - flatted "^2.0.0" - glob "^7.1.1" - graceful-fs "^4.1.2" - http-proxy "^1.13.0" - isbinaryfile "^3.0.0" - lodash "^4.17.5" - log4js "^3.0.0" - mime "^2.3.1" - minimatch "^3.0.2" - optimist "^0.6.1" - qjobs "^1.1.4" - range-parser "^1.2.0" - rimraf "^2.6.0" - safe-buffer "^5.0.1" - socket.io "2.1.1" - source-map "^0.6.1" - tmp "0.0.33" - useragent "2.3.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" - -lie@~3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" - integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= - dependencies: - immediate "~3.0.5" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - -lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.5.0: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - -log4js@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.5.tgz#b80146bfebad68b430d4f3569556d8a6edfef303" - dependencies: - circular-json "^0.5.5" - date-format "^1.2.0" - debug "^3.1.0" - rfdc "^1.1.2" - streamroller "0.7.0" - -lru-cache@2.2.x: - version "2.2.4" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" - -lru-cache@4.1.x: - version "4.1.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.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" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - -micromatch@^3.1.10, 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" - -mime-db@~1.36.0: - version "1.36.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" - -mime-types@~2.1.18: - version "2.1.20" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" - dependencies: - mime-db "~1.36.0" - -mime@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" - -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 "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@^1.2.0: - version "1.2.0" - resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -minimist@~0.0.1: - version "0.0.10" - resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - -minipass@^2.2.1, minipass@^2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957" - 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: - version "0.5.1" - resolved "http://registry.npmjs.org/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" - -ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - -nan@^2.9.2: - version "2.11.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099" - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - 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-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.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.3.tgz#c1b04da378cd634d8befe2de965dc2cfb0fd65ca" - dependencies: - debug "^2.1.2" - iconv-lite "^0.4.4" - sax "^1.2.4" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - -node-pre-gyp@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.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" - -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" - -npm-bundled@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" - -npm-packlist@^1.1.6: - version "1.1.11" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" - 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" - -null-check@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" - -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.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - -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-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.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" - -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" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -os-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, os-tmpdir@~1.0.2: - 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@~1.0.2: - version "1.0.8" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.8.tgz#6844890aab9c635af868ad5fecc62e8acbba3ea4" - integrity sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA== - -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - dependencies: - better-assert "~1.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-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: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -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" - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - -process-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" - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -qjobs@^1.1.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" - -qs@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - -range-parser@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" - unpipe "1.0.0" - -rc@^1.2.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.3.0: - version "2.3.6" - resolved "http://registry.npmjs.org/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" - -readable-stream@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -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" - -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.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - -repeat-string@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -requirejs@2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0" - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - -rfdc@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.2.tgz#e6e72d74f5dc39de8f538f65e00c36c18018e349" - -rimraf@^2.5.4, rimraf@^2.6.0, 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" - -safe-buffer@^5.0.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" - -sauce-connect-launcher@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.2.4.tgz#8d38f85242a9fbede1b2303b559f7e20c5609a1c" - integrity sha512-X2vfwulR6brUGiicXKxPm1GJ7dBEeP1II450Uv4bHGrcGOapZNgzJvn9aioea5IC5BPp/7qjKdE3xbbTBIVXMA== - dependencies: - adm-zip "~0.4.3" - async "^2.1.2" - https-proxy-agent "^2.2.1" - lodash "^4.16.6" - rimraf "^2.5.4" - -saucelabs@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" - integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== - dependencies: - https-proxy-agent "^2.2.1" - -sax@>=0.6.0, sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - -selenium-webdriver@^4.0.0-alpha.1: - version "4.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz#cc93415e21d2dc1dfd85dfc5f6b55f3ac53933b1" - integrity sha512-z88rdjHAv3jmTZ7KSGUkTvo4rGzcDGMq0oXWHNIDK96Gs31JKVdu9+FMtT4KBrVoibg8dUicJDok6GnqqttO5Q== - dependencies: - jszip "^3.1.3" - rimraf "^2.5.4" - tmp "0.0.30" - xml2js "^0.4.17" - -semver@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -semver@^5.3.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" - -set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - -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" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -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" - -socket.io-adapter@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" - -socket.io-client@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" - dependencies: - backo2 "1.0.2" - base64-arraybuffer "0.1.5" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "~3.1.0" - engine.io-client "~3.2.0" - has-binary2 "~1.0.2" - has-cors "1.1.0" - indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - socket.io-parser "~3.2.0" - to-array "0.1.4" - -socket.io-parser@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" - dependencies: - component-emitter "1.2.1" - debug "~3.1.0" - isarray "2.0.1" - -socket.io@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" - dependencies: - debug "~3.1.0" - engine.io "~3.2.0" - has-binary2 "~1.0.2" - socket.io-adapter "~1.1.0" - socket.io-client "2.1.1" - socket.io-parser "~3.2.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-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.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - -source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - -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" - -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" - -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - -statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - -streamroller@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" - dependencies: - date-format "^1.2.0" - debug "^3.1.0" - mkdirp "^0.5.1" - readable-stream "^2.3.0" - -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@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - -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" - -tar@^4: - version "4.4.6" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" - 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" - -tmp@0.0.30: - version "0.0.30" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" - integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= - dependencies: - os-tmpdir "~1.0.1" - -tmp@0.0.33, tmp@0.0.x: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - dependencies: - os-tmpdir "~1.0.2" - -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - -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" - -type-is@~1.6.16: - version "1.6.16" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" - dependencies: - media-typer "0.3.0" - mime-types "~2.1.18" - -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - -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" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - -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.5: - 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" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - -useragent@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e" - dependencies: - lru-cache "2.2.x" - tmp "0.0.x" - -useragent@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" - integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== - dependencies: - lru-cache "4.1.x" - tmp "0.0.x" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - -void-elements@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - -which@^1.2.1: - 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@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -ws@~3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - -xml2js@^0.4.17: - version "0.4.19" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" - integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== - dependencies: - sax ">=0.6.0" - xmlbuilder "~9.0.1" - -xmlbuilder@~9.0.1: - version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= - -xmlhttprequest-ssl@~1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/BUILD.bazel index fbd169e951..6a0ed2467f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/BUILD.bazel @@ -12,7 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_web_test_suite") +load("@build_bazel_rules_karma//:defs.bzl", "ts_web_test_suite") +load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") package(default_visibility = ["//visibility:public"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE index 5cad07ea92..cc1d388d77 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE @@ -14,18 +14,17 @@ workspace(name = "npm_packages_karma_stack_trace") -local_repository( - name = "build_bazel_rules_typescript", - path = "../../../..", -) - -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -rules_typescript_dependencies() +http_archive( + name = "build_bazel_rules_nodejs", + strip_prefix = "rules_nodejs-0.16.8", + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], +) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") -node_repositories(preserve_symlinks = True) +node_repositories() yarn_install( name = "npm", @@ -33,11 +32,17 @@ yarn_install( yarn_lock = "//:yarn.lock", ) -load("@io_bazel_rules_go//go:def.bzl", "go_register_toolchains", "go_rules_dependencies") +load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") + +install_bazel_dependencies() + +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") + +rules_typescript_dependencies() -go_rules_dependencies() +load("@build_bazel_rules_karma//:package.bzl", "rules_karma_dependencies") -go_register_toolchains() +rules_karma_dependencies() load("@io_bazel_rules_webtesting//web:repositories.bzl", "browser_repositories", "web_test_repositories") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/BUILD.bazel index 78f068e6bf..c42feee377 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/BUILD.bazel @@ -12,7 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_web_test_suite") +load("@build_bazel_rules_karma//:defs.bzl", "ts_web_test_suite") +load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") ts_library( name = "lib", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE index aab8aa706c..c10ae4afe5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE @@ -14,18 +14,17 @@ workspace(name = "npm_package_karma_typescript_e2e") -local_repository( - name = "build_bazel_rules_typescript", - path = "../../../..", -) - -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -rules_typescript_dependencies() +http_archive( + name = "build_bazel_rules_nodejs", + strip_prefix = "rules_nodejs-0.16.8", + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], +) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") -node_repositories(preserve_symlinks = True) +node_repositories() yarn_install( name = "npm", @@ -33,11 +32,17 @@ yarn_install( yarn_lock = "//:yarn.lock", ) -load("@io_bazel_rules_go//go:def.bzl", "go_register_toolchains", "go_rules_dependencies") +load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") + +install_bazel_dependencies() + +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") + +rules_typescript_dependencies() -go_rules_dependencies() +load("@build_bazel_rules_karma//:package.bzl", "rules_karma_dependencies") -go_register_toolchains() +rules_karma_dependencies() load("@io_bazel_rules_webtesting//web:repositories.bzl", "browser_repositories", "web_test_repositories") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/test.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/test.sh index cb769dada1..12be17e9d1 100755 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/test.sh +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/test.sh @@ -9,11 +9,10 @@ echo "" echo "#################################################################################" echo "Running all npm package e2e tests under $TESTS_ROOT_DIR" echo "" -echo "To run a specific test run this script with `--test ` where " +echo "To run a specific test run this script with '--test ' where " echo "is the name of the test folder to run" echo "" -echo "Run this script with `--update-lock-files` to update yarn.lock files" -echo "instead of running tests" +echo "Run this script with '--update-lock-files' to update yarn.lock files instead of running tests" echo "" # Determine the absolute paths to the generated @bazel/typescript and @bazel/karma npm packages @@ -23,9 +22,11 @@ if [[ ! -f $BAZEL ]] ; then echo "Bazel not found under $BAZEL" exit 1 fi -BAZEL_BIN=$($BAZEL info bazel-bin) -BAZEL_TYPESCRIPT_NPM_PACKAGE=$BAZEL_BIN/internal/npm_package -BAZEL_KARMA_NPM_PACKAGE=$BAZEL_BIN/internal/karma/npm_package +BAZEL_BIN_TYPESCRIPT=$($BAZEL info bazel-bin) +BAZEL_TYPESCRIPT_NPM_PACKAGE=$BAZEL_BIN_TYPESCRIPT/npm_package +cd $TESTS_ROOT_DIR/../../../internal/karma +BAZEL_BIN_KARMA=$($BAZEL info bazel-bin) +BAZEL_KARMA_NPM_PACKAGE=$BAZEL_BIN_KARMA/npm_package echo "@bazel/typescript: $BAZEL_TYPESCRIPT_NPM_PACKAGE" echo "@bazel/karma: $BAZEL_KARMA_NPM_PACKAGE" @@ -57,6 +58,8 @@ for testDir in $(ls) ; do # Skip this test echo "Skipping test that was not specified in --test argument" else + # Some tests like ts_auto_deps depend on node_modules + yarn install # Run tests yarn test fi diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/.bazelrc similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/.bazelrc rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/.bazelrc diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/BUILD.bazel similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/BUILD.bazel rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE new file mode 100644 index 0000000000..4635bbd19e --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE @@ -0,0 +1,45 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +workspace(name = "npm_packages_ts_auto_deps_e2e") + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "build_bazel_rules_nodejs", + strip_prefix = "rules_nodejs-0.16.8", + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], +) + +load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") + +node_repositories() + +yarn_install( + name = "npm", + package_json = "//:package.json", + yarn_lock = "//:yarn.lock", +) + +load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") + +install_bazel_dependencies() + +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") + +rules_typescript_dependencies() + +load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") + +ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/package-template.json new file mode 100644 index 0000000000..848840ee62 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/package-template.json @@ -0,0 +1,9 @@ +{ + "dependencies": { + "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", + "typescript": "2.9.2" + }, + "scripts": { + "test": "cd simple; ts_auto_deps && bazel build simple" + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/simple/file.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/simple/file.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/simple/file.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/simple/file.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/tsconfig.json similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_karma_stack_trace/tsconfig.json.oss rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/tsconfig.json diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/yarn.lock similarity index 98% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/yarn.lock rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/yarn.lock index 0cd0cad354..6f96f90a17 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@bazel/typescript@file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package": +"@bazel/typescript@file:../local_typescript/bazel-bin/npm_package": version "0.17.0-20-g8657b80" dependencies: protobufjs "5.0.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE index f585fb6601..8a5425807f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE @@ -14,18 +14,17 @@ workspace(name = "npm_packages_typescript_27_e2e") -local_repository( - name = "build_bazel_rules_typescript", - path = "../../../..", -) - -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -rules_typescript_dependencies() +http_archive( + name = "build_bazel_rules_nodejs", + strip_prefix = "rules_nodejs-0.16.8", + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], +) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") -node_repositories(preserve_symlinks = True) +node_repositories() yarn_install( name = "npm", @@ -33,6 +32,14 @@ yarn_install( yarn_lock = "//:yarn.lock", ) +load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") + +install_bazel_dependencies() + +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") + +rules_typescript_dependencies() + load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock index 3f71f88bf3..4a5801883d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock @@ -1,255 +1,2 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 - - -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/2c1df01758b58adaef1f5cb29a065852/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/internal/npm_package": - version "0.22.1-18-g169a278" - dependencies: - protobufjs "5.0.3" - semver "5.6.0" - source-map-support "0.5.9" - tsutils "2.27.2" - -"@types/jasmine@2.8.2": - version "2.8.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" - -"@types/node@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -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" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - dependencies: - long "~3" - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -glob@^7.0.5, glob@^7.0.6: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - 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" - -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: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -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" - -jasmine-core@~2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - -jasmine@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" - dependencies: - exit "^0.1.2" - glob "^7.0.6" - jasmine-core "~2.8.0" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - -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" - -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" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - -os-locale@^1.4.0: - version "1.4.0" - resolved "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -semver@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - 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" - -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" - -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" - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - dependencies: - tslib "^1.8.1" - -typescript@2.7.x: - version "2.7.2" - resolved "http://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -yargs@^3.10.0: - version "3.32.0" - resolved "http://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE index 8866bbd61f..4aa41ec705 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE @@ -14,18 +14,17 @@ workspace(name = "npm_packages_typescript_28_e2e") -local_repository( - name = "build_bazel_rules_typescript", - path = "../../../..", -) - -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -rules_typescript_dependencies() +http_archive( + name = "build_bazel_rules_nodejs", + strip_prefix = "rules_nodejs-0.16.8", + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], +) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") -node_repositories(preserve_symlinks = True) +node_repositories() yarn_install( name = "npm", @@ -33,6 +32,14 @@ yarn_install( yarn_lock = "//:yarn.lock", ) +load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") + +install_bazel_dependencies() + +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") + +rules_typescript_dependencies() + load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock index 6edcd7e896..4a5801883d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock @@ -1,255 +1,2 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 - - -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/2c1df01758b58adaef1f5cb29a065852/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/internal/npm_package": - version "0.22.1-18-g169a278" - dependencies: - protobufjs "5.0.3" - semver "5.6.0" - source-map-support "0.5.9" - tsutils "2.27.2" - -"@types/jasmine@2.8.2": - version "2.8.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" - -"@types/node@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -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" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - dependencies: - long "~3" - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -glob@^7.0.5, glob@^7.0.6: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - 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" - -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: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -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" - -jasmine-core@~2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - -jasmine@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" - dependencies: - exit "^0.1.2" - glob "^7.0.6" - jasmine-core "~2.8.0" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - -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" - -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" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - -os-locale@^1.4.0: - version "1.4.0" - resolved "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -semver@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - 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" - -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" - -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" - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - dependencies: - tslib "^1.8.1" - -typescript@2.8.x: - version "2.8.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.4.tgz#0b1db68e6bdfb0b767fa2ab642136a35b059b199" - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -yargs@^3.10.0: - version "3.32.0" - resolved "http://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE index 1758dec3c9..ce12fa90d2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE @@ -14,18 +14,17 @@ workspace(name = "npm_packages_typescript_29_e2e") -local_repository( - name = "build_bazel_rules_typescript", - path = "../../../..", -) - -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -rules_typescript_dependencies() +http_archive( + name = "build_bazel_rules_nodejs", + strip_prefix = "rules_nodejs-0.16.8", + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], +) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") -node_repositories(preserve_symlinks = True) +node_repositories() yarn_install( name = "npm", @@ -33,6 +32,14 @@ yarn_install( yarn_lock = "//:yarn.lock", ) +load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") + +install_bazel_dependencies() + +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") + +rules_typescript_dependencies() + load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock index a0a84fcc7d..4a5801883d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock @@ -1,255 +1,2 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 - - -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/2c1df01758b58adaef1f5cb29a065852/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/internal/npm_package": - version "0.22.1-18-g169a278" - dependencies: - protobufjs "5.0.3" - semver "5.6.0" - source-map-support "0.5.9" - tsutils "2.27.2" - -"@types/jasmine@2.8.2": - version "2.8.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" - -"@types/node@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -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" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - dependencies: - long "~3" - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -glob@^7.0.5, glob@^7.0.6: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - 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" - -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: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -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" - -jasmine-core@~2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - -jasmine@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" - dependencies: - exit "^0.1.2" - glob "^7.0.6" - jasmine-core "~2.8.0" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - -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" - -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" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - -os-locale@^1.4.0: - version "1.4.0" - resolved "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -semver@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - 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" - -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" - -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" - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - dependencies: - tslib "^1.8.1" - -typescript@2.9.x: - version "2.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -yargs@^3.10.0: - version "3.32.0" - resolved "http://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE index 92816e4f82..8e0d2f144f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE @@ -14,18 +14,17 @@ workspace(name = "npm_packages_typescript_30_e2e") -local_repository( - name = "build_bazel_rules_typescript", - path = "../../../..", -) - -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -rules_typescript_dependencies() +http_archive( + name = "build_bazel_rules_nodejs", + strip_prefix = "rules_nodejs-0.16.8", + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], +) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") -node_repositories(preserve_symlinks = True) +node_repositories() yarn_install( name = "npm", @@ -33,6 +32,14 @@ yarn_install( yarn_lock = "//:yarn.lock", ) +load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") + +install_bazel_dependencies() + +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") + +rules_typescript_dependencies() + load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock index 6177ba672c..4a5801883d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock @@ -1,255 +1,2 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 - - -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/2c1df01758b58adaef1f5cb29a065852/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/internal/npm_package": - version "0.22.1-18-g169a278" - dependencies: - protobufjs "5.0.3" - semver "5.6.0" - source-map-support "0.5.9" - tsutils "2.27.2" - -"@types/jasmine@2.8.2": - version "2.8.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" - -"@types/node@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -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" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - dependencies: - long "~3" - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -glob@^7.0.5, glob@^7.0.6: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - 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" - -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: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -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" - -jasmine-core@~2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - -jasmine@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" - dependencies: - exit "^0.1.2" - glob "^7.0.6" - jasmine-core "~2.8.0" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - -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" - -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" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - -os-locale@^1.4.0: - version "1.4.0" - resolved "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -semver@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - 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" - -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" - -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" - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - dependencies: - tslib "^1.8.1" - -typescript@3.0.x: - version "3.0.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.0.3.tgz#4853b3e275ecdaa27f78fda46dc273a7eb7fc1c8" - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -yargs@^3.10.0: - version "3.32.0" - resolved "http://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE index 92816e4f82..8e0d2f144f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE @@ -14,18 +14,17 @@ workspace(name = "npm_packages_typescript_30_e2e") -local_repository( - name = "build_bazel_rules_typescript", - path = "../../../..", -) - -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -rules_typescript_dependencies() +http_archive( + name = "build_bazel_rules_nodejs", + strip_prefix = "rules_nodejs-0.16.8", + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], +) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") -node_repositories(preserve_symlinks = True) +node_repositories() yarn_install( name = "npm", @@ -33,6 +32,14 @@ yarn_install( yarn_lock = "//:yarn.lock", ) +load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") + +install_bazel_dependencies() + +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") + +rules_typescript_dependencies() + load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock index 2fdc680edb..4a5801883d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock @@ -1,256 +1,2 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 - - -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/2c1df01758b58adaef1f5cb29a065852/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/internal/npm_package": - version "0.22.1-18-g169a278" - dependencies: - protobufjs "5.0.3" - semver "5.6.0" - source-map-support "0.5.9" - tsutils "2.27.2" - -"@types/jasmine@2.8.2": - version "2.8.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" - -"@types/node@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -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" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - dependencies: - long "~3" - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -glob@^7.0.5, glob@^7.0.6: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - 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" - -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: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -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" - -jasmine-core@~2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - -jasmine@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" - dependencies: - exit "^0.1.2" - glob "^7.0.6" - jasmine-core "~2.8.0" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - -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" - -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" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - -os-locale@^1.4.0: - version "1.4.0" - resolved "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -semver@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - 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" - -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" - -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" - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - dependencies: - tslib "^1.8.1" - -typescript@3.1.x: - version "3.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" - integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -yargs@^3.10.0: - version "3.32.0" - resolved "http://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.7/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.8/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_2.9/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.0/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_3.1_no_npm/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/package_typescript_karma/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/package.json deleted file mode 100644 index b51c2ea1e7..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "dependencies": { - "@bazel/typescript": "file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package", - "typescript": "2.9.2" - }, - "scripts": { - "test": "bazel run @build_bazel_rules_typescript//ts_auto_deps -- -recursive && bazel build simple" - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/WORKSPACE index 6b022fa7cd..ab0e7c3dd9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/WORKSPACE @@ -19,13 +19,13 @@ local_repository( path = "../../..", ) -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dev_dependencies") -rules_typescript_dependencies() +rules_typescript_dev_dependencies() load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") -node_repositories(preserve_symlinks = True) +node_repositories() yarn_install( name = "npm", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel index dc8a50ddca..b2dd97d190 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel @@ -1,22 +1,35 @@ -load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar") +# Copyright 2018 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary", "npm_package") -load("//internal:defaults.bzl", "ts_library") +load("@build_bazel_rules_typescript//:version.bzl", "COMPAT_VERSION") +load("@build_bazel_rules_typescript//internal:defaults.bzl", "ts_library") package(default_visibility = ["//visibility:public"]) +# Exports to be consumed for generating skydoc. exports_files([ - "test-main.js", - "karma.conf.js", - # Exported to be consumed for generating skydoc. + "karma_web_test.bzl", "ts_web_test.bzl", - "ts_web_test_suite.bzl", + "web_test.bzl", ]) ts_library( name = "bazel_karma", srcs = glob(["*.ts"]), module_name = "@bazel/karma", - tsconfig = "//internal/karma:tsconfig.json", + tsconfig = ":tsconfig.json", deps = [ "@npm//@types/node", "@npm//tmp", @@ -44,38 +57,33 @@ nodejs_binary( genrule( name = "license_copy", - srcs = ["//:LICENSE"], + srcs = ["@build_bazel_rules_typescript//:LICENSE"], outs = ["LICENSE"], cmd = "cp $< $@", ) -genrule( - name = "check_version_copy", - srcs = ["//tools:check_version.js"], - outs = ["check_version.js"], - cmd = "cp $< $@", -) - npm_package( name = "npm_package", srcs = [ - "README.md", + "BUILD.bazel", + "WORKSPACE", + "defaults.bzl", + "defs.bzl", + "karma.conf.js", "karma.js", + "karma_web_test.bzl", + "package.bzl", "package.json", + "ts_web_test.bzl", + "web_test.bzl", ], + replacements = { + "0.0.0-COMPAT_VERSION": COMPAT_VERSION, + }, deps = [ ":bazel_karma", - ":check_version_copy", ":license_copy", ], ) -pkg_tar( - name = "package", - srcs = [ - "BUILD.bazel", - "package.json", - "ts_web_test.bzl", - ], - package_dir = "karma", -) +exports_files(["karma.conf.js"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/README.md b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/README.md deleted file mode 100644 index d325a80042..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Bazel web unit tests with karma - -This npm package provides the JavaScript code needed by the `ts_web_test_suite` and `ts_web_test` Bazel rule. - -See http://tsetse.info/api/karma/ts_web_test.html for documentation. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/WORKSPACE similarity index 71% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/WORKSPACE rename to third_party/github.com/bazelbuild/rules_typescript/internal/karma/WORKSPACE index 49f673dba7..3e166d8714 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/ts_auto_deps/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/WORKSPACE @@ -12,39 +12,43 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "ts_auto_deps_e2e") +workspace(name = "build_bazel_rules_karma") +# Load nested build_bazel_rules_typescript repository local_repository( name = "build_bazel_rules_typescript", - path = "../../..", + path = "../..", ) -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies", "rules_typescript_dev_dependencies") - -rules_typescript_dependencies() +# Load our dependencies +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dev_dependencies") rules_typescript_dev_dependencies() +# Load rules_karma dependencies +load("//:package.bzl", "rules_karma_dependencies") + +rules_karma_dependencies() + +# Setup nodejs toolchain load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") -node_repositories(preserve_symlinks = True) +# Install a hermetic version of node. +node_repositories() +# Download npm dependencies yarn_install( name = "npm", package_json = "//:package.json", yarn_lock = "//:yarn.lock", ) -load("@io_bazel_rules_go//go:def.bzl", "go_register_toolchains", "go_rules_dependencies") - -go_rules_dependencies() - -go_register_toolchains() - +# Setup gazelle toolchain load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") gazelle_dependencies() +# Setup typescript toolchain load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/defaults.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/defaults.bzl new file mode 100644 index 0000000000..7e891dd7ed --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/defaults.bzl @@ -0,0 +1,37 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"Defaults for rules_karma repository not meant to be used downstream" + +load( + "@build_bazel_rules_karma//:defs.bzl", + _karma_web_test = "karma_web_test", + _karma_web_test_suite = "karma_web_test_suite", + _ts_web_test = "ts_web_test", + _ts_web_test_suite = "ts_web_test_suite", +) + +INTERNAL_KARMA_BIN = "@build_bazel_rules_karma//:karma_bin" + +def karma_web_test(karma = INTERNAL_KARMA_BIN, **kwargs): + _karma_web_test(karma = karma, **kwargs) + +def karma_web_test_suite(karma = INTERNAL_KARMA_BIN, **kwargs): + _karma_web_test_suite(karma = karma, **kwargs) + +def ts_web_test(karma = INTERNAL_KARMA_BIN, **kwargs): + _ts_web_test(karma = karma, **kwargs) + +def ts_web_test_suite(karma = INTERNAL_KARMA_BIN, **kwargs): + _ts_web_test_suite(karma = karma, **kwargs) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/defs.bzl new file mode 100644 index 0000000000..b8053b97cd --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/defs.bzl @@ -0,0 +1,33 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" Public API surface is re-exported here. +""" + +load( + ":karma_web_test.bzl", + _karma_web_test = "karma_web_test", + _karma_web_test_suite = "karma_web_test_suite", +) +load( + ":ts_web_test.bzl", + _ts_web_test = "ts_web_test", + _ts_web_test_suite = "ts_web_test_suite", +) + +# TODO(alexeagle): make ts_web_test && ts_web_test_suite work in google3 +ts_web_test = _ts_web_test +ts_web_test_suite = _ts_web_test_suite +karma_web_test = _karma_web_test +karma_web_test_suite = _karma_web_test_suite diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js index 76c2343e4d..dae40a9354 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js @@ -178,7 +178,7 @@ try ].map(f => { if (f.startsWith('NODE_MODULES/')) { try { - // attempt to resolve in @bazel/karma nested node_modules first + // attempt to resolve in @bazel/typescript nested node_modules first return require.resolve(f.replace(/^NODE_MODULES\//, '@bazel/karma/node_modules/')); } catch (e) { // if that failed then attempt to resolve in root node_modules diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl index 99ea150564..28526d7305 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl @@ -23,7 +23,7 @@ load("@io_bazel_rules_webtesting//web/internal:constants.bzl", "DEFAULT_WRAPPED_ load("@io_bazel_rules_webtesting//web:web.bzl", "web_test_suite") load(":web_test.bzl", "COMMON_WEB_TEST_ATTRS") -_CONF_TMPL = "//internal/karma:karma.conf.js" +_CONF_TMPL = "//:karma.conf.js" _DEFAULT_KARMA_BIN = "@npm//@bazel/karma/bin:karma" # Attributes for karma_web_test that are shared with ts_web_test which @@ -123,7 +123,7 @@ def _write_karma_config(ctx, files, amd_names_shim): # polyfilling before test libraries load. # See https://github.com/karma-runner/karma/issues/699 # `NODE_MODULES/` is a prefix recogized by karma.conf.js to allow - # for a priority require of nested `@bazel/karma/node_modules` before + # for a priority require of nested `@bazel/typescript/node_modules` before # looking in root node_modules. bootstrap_entries += [ "NODE_MODULES/requirejs/require.js", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl new file mode 100644 index 0000000000..564cb3c99a --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl @@ -0,0 +1,46 @@ +# Copyright 2018 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Package file which defines build_bazel_rules_karma dependencies +""" + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +def rules_karma_dependencies(): + """ + Fetch our transitive dependencies. + + If the user wants to get a different version of these, they can just fetch it + from their WORKSPACE before calling this function, or not call this function at all. + """ + + # TypeScript compiler runs on node.js runtime + _maybe( + http_archive, + name = "build_bazel_rules_nodejs", + strip_prefix = "rules_nodejs-0.16.8", + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], + ) + + # ts_web_test depends on the web testing rules to provision browsers. + _maybe( + http_archive, + name = "io_bazel_rules_webtesting", + urls = ["https://github.com/bazelbuild/rules_webtesting/releases/download/0.3.0/rules_webtesting.tar.gz"], + sha256 = "1c0900547bdbe33d22aa258637dc560ce6042230e41e9ea9dad5d7d2fca8bc42", + ) + +def _maybe(repo_rule, name, **kwargs): + if name not in native.existing_rules(): + repo_rule(name = name, **kwargs) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json index be1c6eb4b0..9f04bff1d5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json @@ -1,6 +1,6 @@ { "name": "@bazel/karma", - "description": "runtime dependences for web test rules", + "description": "Karma rules for Bazel", "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", "version": "0.0.0-PLACEHOLDER", @@ -26,7 +26,22 @@ "semver": "5.6.0", "tmp": "0.0.33" }, - "scripts": { - "postinstall": "node ./check_version.js" + "devDependencies": { + "@bazel/bazel": "~0.22.0", + "@types/node": "7.0.18", + "protobufjs": "5.0.3", + "semver": "5.6.0", + "source-map-support": "0.5.9", + "tsickle": "0.33.1", + "tsutils": "2.27.2", + "typescript": "~3.1.6", + "jasmine-core": "2.8.0" + }, + "bazelWorkspaces": { + "build_bazel_rules_karma": { + "version": "0.0.0-PLACEHOLDER", + "compatVersion": "0.0.0-COMPAT_VERSION", + "rootPath": "." + } } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock new file mode 100644 index 0000000000..1d21df6884 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock @@ -0,0 +1,2320 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@bazel/bazel-darwin_x64@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@bazel/bazel-darwin_x64/-/bazel-darwin_x64-0.22.0.tgz#a2bea5922dba9a32554a218ba4849a200115b248" + integrity sha512-LFxkyQgPATeB64z/1IvOWZhK+lc3JVHejbmdo96qB4lsoD8zselvOlgHvVXxlAjRxVZ9mlmXDvDRDyaXyyRdwA== + +"@bazel/bazel-linux_x64@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@bazel/bazel-linux_x64/-/bazel-linux_x64-0.22.0.tgz#12e5884f2a7b7f3b62afbef9f8da4de0976f3bc8" + integrity sha512-xDs8cb2bbGZ9uvzYZOzCVrMBywzRhLj0J/t+py+FYZj+VO5B3wVg9eUf6nWWR0oJ2mzvToI9h31t2tNdqwy2kQ== + +"@bazel/bazel-win32_x64@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@bazel/bazel-win32_x64/-/bazel-win32_x64-0.22.0.tgz#a8a65986639583a8cc7b018e001aedfdafe41b50" + integrity sha512-FbJaXVDoCLnpIFLnPHFkQdfriYPXfnfQNuf9EXMliERdRuoeBVbwEZfwcuArxZWNFus7bD8QiTj0XzKVWO+Wbw== + +"@bazel/bazel@~0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@bazel/bazel/-/bazel-0.22.0.tgz#feb0f2d82f9d169cb47951d95d55e512eda72bc9" + integrity sha512-uaXZsfCXOASBXzmge56akRIhJnKYdShn1X3AdEBzq2NNCf2llkc1H25gKGm4BfuWDBXRbXDMmcXup+fw39h+WQ== + optionalDependencies: + "@bazel/bazel-darwin_x64" "0.22.0" + "@bazel/bazel-linux_x64" "0.22.0" + "@bazel/bazel-win32_x64" "0.22.0" + +"@types/node@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" + integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + +adm-zip@~0.4.3: + version "0.4.13" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" + integrity sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw== + +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= + +agent-base@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== + dependencies: + es6-promisify "^5.0.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + 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" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +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" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== + +ascli@~1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" + integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= + dependencies: + colour "~0.7.1" + optjs "~3.2.2" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + integrity sha1-GdOGodntxufByF04iu28xW0zYC0= + +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== + +async@^2.1.2: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== + dependencies: + lodash "^4.17.10" + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= + +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + 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" + +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= + dependencies: + callsite "1.0.0" + +binary-extensions@^1.0.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" + integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== + +blob@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" + integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== + +bluebird@^3.3.0: + version "3.5.3" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" + integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== + +body-parser@^1.16.1: + version "1.18.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" + integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "~1.6.3" + iconv-lite "0.4.23" + on-finished "~2.3.0" + qs "6.5.2" + raw-body "2.3.3" + type-is "~1.6.16" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^0.1.2: + version "0.1.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" + integrity sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY= + dependencies: + expand-range "^0.1.0" + +braces@^2.3.0, braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + 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" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +bytebuffer@~5: + version "5.0.1" + resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" + integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= + dependencies: + long "~3" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + 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" + +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= + +camelcase@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +chokidar@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== + 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" + lodash.debounce "^4.0.8" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.5" + optionalDependencies: + fsevents "^1.2.2" + +chownr@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + +circular-json@^0.5.5: + version "0.5.9" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" + integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cliui@^3.0.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +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" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +colors@^1.1.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" + integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== + +colour@~0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" + integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= + +combine-lists@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" + integrity sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y= + dependencies: + lodash "^4.5.0" + +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= + +component-emitter@1.2.1, component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +connect@^3.6.0: + version "3.6.6" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" + integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ= + dependencies: + debug "2.6.9" + finalhandler "1.1.0" + parseurl "~1.3.2" + utils-merge "1.0.1" + +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" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js@^2.2.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.3.tgz#4b70938bdffdaf64931e66e2db158f0892289c49" + integrity sha512-l00tmFFZOBHtYhN4Cz7k32VM7vTn3rE2ANjQDxdEN6zmXZ/xq1jQuutnmHvMG1ZJ7xd72+TA5YpUK8wz3rWsfQ== + +core-js@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" + integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= + +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" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= + +date-format@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" + integrity sha1-YV6CjiM90aubua4JUODOzPpuytg= + +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@=3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +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" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + 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" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + 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" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= + +dom-serialize@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +encodeurl@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +engine.io-client@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.1.1" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~3.3.1" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + +engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6" + integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.5" + has-binary2 "~1.0.2" + +engine.io@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" + integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== + dependencies: + accepts "~1.3.4" + base64id "1.0.0" + cookie "0.3.1" + debug "~3.1.0" + engine.io-parser "~2.1.0" + ws "~3.3.1" + +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= + +es6-promise@^4.0.3: + version "4.2.5" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" + integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg== + +es6-promise@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" + integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + dependencies: + es6-promise "^4.0.3" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +eventemitter3@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" + integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== + +expand-braces@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" + integrity sha1-SIsdHSRRyz06axks/AMPRMWFX+o= + dependencies: + array-slice "^0.2.3" + array-unique "^0.2.1" + braces "^0.1.2" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + 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" + +expand-range@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" + integrity sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ= + dependencies: + is-number "^0.1.1" + repeat-string "^0.2.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + 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" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + 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" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U= + dependencies: + debug "2.6.9" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.3.1" + unpipe "~1.0.0" + +flatted@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" + integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== + +follow-redirects@^1.0.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.6.1.tgz#514973c44b5757368bad8bddfe52f81f015c94cb" + integrity sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ== + dependencies: + debug "=3.1.0" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fs-access@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" + integrity sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o= + dependencies: + null-check "^1.0.0" + +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== + 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" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.2: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" + integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + 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-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" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob@^7.0.5, glob@^7.1.1, glob@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + 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" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + +has-binary2@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" + integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== + dependencies: + isarray "2.0.1" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + 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" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + 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" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +http-errors@1.6.3, http-errors@~1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-proxy@^1.13.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" + integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== + dependencies: + eventemitter3 "^3.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +https-proxy-agent@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" + integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== + dependencies: + agent-base "^4.1.0" + debug "^3.1.0" + +iconv-lite@0.4.23: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + dependencies: + minimatch "^3.0.4" + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +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" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + 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" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + 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" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + 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" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +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" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + 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" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + 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" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + 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" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + 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" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +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" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + 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" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + 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" + integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= + dependencies: + is-extglob "^2.1.1" + +is-number@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" + integrity sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY= + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +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" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= + +isbinaryfile@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" + integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== + dependencies: + buffer-alloc "^1.2.0" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + 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" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +jasmine-core@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" + integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= + +jszip@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" + integrity sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ== + dependencies: + core-js "~2.3.0" + es6-promise "~3.0.2" + lie "~3.1.0" + pako "~1.0.2" + readable-stream "~2.0.6" + +karma-chrome-launcher@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" + integrity sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w== + dependencies: + fs-access "^1.0.0" + which "^1.2.1" + +karma-firefox-launcher@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz#2c47030452f04531eb7d13d4fc7669630bb93339" + integrity sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA== + +karma-jasmine@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.1.tgz#6fe840e75a11600c9d91e84b33c458e1c46a3529" + integrity sha1-b+hA51oRYAydkehLM8RY4cRqNSk= + +karma-requirejs@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/karma-requirejs/-/karma-requirejs-1.1.0.tgz#fddae2cb87d7ebc16fb0222893564d7fee578798" + integrity sha1-/driy4fX68FvsCIok1ZNf+5Xh5g= + +karma-sauce-launcher@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-2.0.2.tgz#dbf98e70d86bf287b03a537cf637eb7aefa975c3" + integrity sha512-jLUFaJhHMcKpxFWUesyWYihzM5FvQiJsDwGcCtKeOy2lsWhkVw0V0Byqb1d+wU6myU1mribBtsIcub23HS4kWA== + dependencies: + sauce-connect-launcher "^1.2.4" + saucelabs "^1.5.0" + selenium-webdriver "^4.0.0-alpha.1" + +karma-sourcemap-loader@0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" + integrity sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg= + dependencies: + graceful-fs "^4.1.2" + +karma@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-4.0.0.tgz#f28e38a2b66243fde3f98e12a8dcaa2c6ff8ca9c" + integrity sha512-EFoFs3F6G0BcUGPNOn/YloGOb3h09hzTguyXlg6loHlKY76qbJikkcyPk43m2kfRF65TUGda/mig29QQtyhm1g== + dependencies: + bluebird "^3.3.0" + body-parser "^1.16.1" + chokidar "^2.0.3" + colors "^1.1.0" + combine-lists "^1.0.0" + connect "^3.6.0" + core-js "^2.2.0" + di "^0.0.1" + dom-serialize "^2.2.0" + expand-braces "^0.1.1" + flatted "^2.0.0" + glob "^7.1.1" + graceful-fs "^4.1.2" + http-proxy "^1.13.0" + isbinaryfile "^3.0.0" + lodash "^4.17.5" + log4js "^3.0.0" + mime "^2.3.1" + minimatch "^3.0.2" + optimist "^0.6.1" + qjobs "^1.1.4" + range-parser "^1.2.0" + rimraf "^2.6.0" + safe-buffer "^5.0.1" + socket.io "2.1.1" + source-map "^0.6.1" + tmp "0.0.33" + useragent "2.3.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" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + 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" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + 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" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +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" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lie@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= + dependencies: + immediate "~3.0.5" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.5, lodash@^4.5.0: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +log4js@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.6.tgz#e6caced94967eeeb9ce399f9f8682a4b2b28c8ff" + integrity sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== + dependencies: + circular-json "^0.5.5" + date-format "^1.2.0" + debug "^3.1.0" + rfdc "^1.1.2" + streamroller "0.7.0" + +long@~3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= + +lru-cache@4.1.x: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + 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" + +mime-db@~1.37.0: + version "1.37.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" + integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== + +mime-types@~2.1.18: + version "2.1.21" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" + integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== + dependencies: + mime-db "~1.37.0" + +mime@^2.3.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" + integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== + +minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + 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" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + +minipass@^2.2.1, minipass@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + 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" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.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" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + 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" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +nan@^2.9.2: + version "2.12.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" + integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + 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-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.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" + integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= + +node-pre-gyp@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" + integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.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" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +npm-bundled@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" + integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== + +npm-packlist@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.2.0.tgz#55a60e793e272f00862c7089274439a4cc31fc7f" + integrity sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ== + 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" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +null-check@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" + integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0= + +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" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.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" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + 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" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optjs@~3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" + integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +pako@~1.0.2: + version "1.0.8" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.8.tgz#6844890aab9c635af868ad5fecc62e8acbba3ea4" + integrity sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA== + +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= + dependencies: + better-assert "~1.0.0" + +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +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" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= + +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" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + +protobufjs@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" + integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== + dependencies: + ascli "~1" + bytebuffer "~5" + glob "^7.0.5" + yargs "^3.10.0" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +qjobs@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" + integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== + +qs@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +range-parser@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= + +raw-body@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== + dependencies: + bytes "3.0.0" + http-errors "1.6.3" + iconv-lite "0.4.23" + unpipe "1.0.0" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + 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.3.0: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + 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" + +readable-stream@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +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" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.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" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" + integrity sha1-x6jTI2BoNiBZp+RlH8aITosftK4= + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +requirejs@2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0" + integrity sha512-svnO+aNcR/an9Dpi44C7KSAy5fFGLtmPbaaCeQaklUz8BQhS64tWWIIlvEA5jrWICzlO/X9KSzSeXFnZdBu8nw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rfdc@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.2.tgz#e6e72d74f5dc39de8f538f65e00c36c18018e349" + integrity sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA== + +rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +safe-buffer@^5.0.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" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + 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" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sauce-connect-launcher@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.2.4.tgz#8d38f85242a9fbede1b2303b559f7e20c5609a1c" + integrity sha512-X2vfwulR6brUGiicXKxPm1GJ7dBEeP1II450Uv4bHGrcGOapZNgzJvn9aioea5IC5BPp/7qjKdE3xbbTBIVXMA== + dependencies: + adm-zip "~0.4.3" + async "^2.1.2" + https-proxy-agent "^2.2.1" + lodash "^4.16.6" + rimraf "^2.5.4" + +saucelabs@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" + integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== + dependencies: + https-proxy-agent "^2.2.1" + +sax@>=0.6.0, sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +selenium-webdriver@^4.0.0-alpha.1: + version "4.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz#cc93415e21d2dc1dfd85dfc5f6b55f3ac53933b1" + integrity sha512-z88rdjHAv3jmTZ7KSGUkTvo4rGzcDGMq0oXWHNIDK96Gs31JKVdu9+FMtT4KBrVoibg8dUicJDok6GnqqttO5Q== + dependencies: + jszip "^3.1.3" + rimraf "^2.5.4" + tmp "0.0.30" + xml2js "^0.4.17" + +semver@5.6.0, semver@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= + 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" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + 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" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + 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" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + 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" + +socket.io-adapter@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" + integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= + +socket.io-client@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" + integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~3.1.0" + engine.io-client "~3.2.0" + has-binary2 "~1.0.2" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.2.0" + to-array "0.1.4" + +socket.io-parser@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" + integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + isarray "2.0.1" + +socket.io@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" + integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== + dependencies: + debug "~3.1.0" + engine.io "~3.2.0" + has-binary2 "~1.0.2" + socket.io-adapter "~1.1.0" + socket.io-client "2.1.1" + socket.io-parser "~3.2.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" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + 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.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +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" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +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" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= + +streamroller@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" + integrity sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ== + dependencies: + date-format "^1.2.0" + debug "^3.1.0" + mkdirp "^0.5.1" + readable-stream "^2.3.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + 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" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + 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" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + 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" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + 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" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +tar@^4: + version "4.4.8" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" + integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.3.4" + minizlib "^1.1.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + +tmp@0.0.30: + version "0.0.30" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" + integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= + dependencies: + os-tmpdir "~1.0.1" + +tmp@0.0.33, tmp@0.0.x: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= + +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" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + 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" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + 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" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +tsickle@0.33.1: + version "0.33.1" + resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.33.1.tgz#eee4ebabeda3bcd8afc32cee34c822cbe3e839ec" + integrity sha512-SpW2G3PvDGs4a5sMXPlWnCWHWRviWjSlI3U0734e3fU3U39VAE0NPr8M3W1cuL/OU/YXheYipGeEwtIJ5k0NHQ== + dependencies: + minimist "^1.2.0" + mkdirp "^0.5.1" + source-map "^0.7.3" + +tslib@^1.8.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +tsutils@2.27.2: + version "2.27.2" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" + integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== + dependencies: + tslib "^1.8.1" + +type-is@~1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.18" + +typescript@~3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" + integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +useragent@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" + integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== + dependencies: + lru-cache "4.1.x" + tmp "0.0.x" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + +which@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + 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" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@~3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +xml2js@^0.4.17: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + +xmlhttprequest-ssl@~1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= + +y18n@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + +yargs@^3.10.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/package.json deleted file mode 100644 index 3387c5444e..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "@bazel/typescript", - "description": "Custom TypeScript compiler for hosting on Bazel", - "homepage": "https://github.com/bazelbuild/rules_typescript", - "license": "Apache-2.0", - "version": "0.0.0-PLACEHOLDER", - "keywords": [ - "typescript", - "bazel" - ], - "main": "./tsc_wrapped/index.js", - "typings": "./tsc_wrapped/index.d.ts", - "peerDependencies": { - "typescript": ">=2.4.2" - }, - "dependencies": { - "protobufjs": "5.0.3", - "semver": "5.6.0", - "source-map-support": "0.5.9", - "tsutils": "2.27.2" - }, - "devDependencies": { - "@types/jasmine": "2.8.2", - "@types/node": "7.0.18", - "@types/tmp": "0.0.33", - "tmp": "0.0.33", - "typescript": "2.7.2" - }, - "scripts": { - "postinstall": "node ./check_version.js" - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/BUILD.bazel index 9f8522ef0d..b9ce1610fc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/BUILD.bazel @@ -1,4 +1,17 @@ -load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar") +# Copyright 2018 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary") package(default_visibility = ["//visibility:public"]) @@ -55,13 +68,12 @@ nodejs_binary( install_source_map_support = False, ) -pkg_tar( - name = "package", +filegroup( + name = "npm_package_assets", srcs = [ "BUILD.bazel", "package.json", "ts_proto_library.bzl", "yarn.lock", ], - package_dir = "protobufjs", ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl index ee2ea3e1be..7c6e58e176 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl @@ -178,7 +178,7 @@ in the `bootstrap` attribute of `ts_web_test_suite` or `ts_devserver`. To complete the example above, you could write a `ts_web_test_suite`: ``` -load("@build_bazel_rules_typescript//:defs.bzl", "ts_web_test_suite") +load("@build_bazel_rules_karma//:defs.bzl", "ts_web_test_suite") ts_web_test_suite( name = "test", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl index 87327f9586..6a37d9848a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl @@ -24,29 +24,11 @@ def ts_setup_workspace(): by the TypeScript rules. """ - # 0.14.0: @bazel_tools//tools/bash/runfiles is required - # 0.15.0: "data" attributes don't need 'cfg = "data"' - # 0.17.1: allow @ in package names is required for fine grained deps # 0.18.0: support for .bazelignore check_bazel_version("0.18.0") - go_repository( - name = "com_github_kylelemons_godebug", - commit = "d65d576e9348f5982d7f6d83682b694e731a45c6", - importpath = "github.com/kylelemons/godebug", - ) - - go_repository( - name = "com_github_mattn_go_isatty", - commit = "3fb116b820352b7f0c281308a4d6250c22d94e27", - importpath = "github.com/mattn/go-isatty", - ) - - # 0.11.3: node module resolution fixes & check_rules_nodejs_version - # 0.14.0: fine grained npm dependencies support for ts_library - # 0.14.1: fine grained npm dependencies fix for npm_install - # 0.15.0: fine grained npm dependencies breaking change - check_rules_nodejs_version("0.15.0") + # 0.16.8: ng_package fix for packaging binary files + check_rules_nodejs_version("0.16.8") # Included here for backward compatability for downstream repositories # that use @build_bazel_rules_typescript_tsc_wrapped_deps such as rxjs. @@ -68,3 +50,25 @@ def ts_setup_workspace(): package_json = "@build_bazel_rules_typescript//internal/protobufjs:package.json", yarn_lock = "@build_bazel_rules_typescript//internal/protobufjs:yarn.lock", ) + +def ts_setup_dev_workspace(): + """ + Setup the toolchain needed for local development, but not needed by users. + + These needs to be in a separate file from ts_setup_workspace() so as not + to leak load statements. + """ + + ts_setup_workspace() + + go_repository( + name = "com_github_kylelemons_godebug", + commit = "d65d576e9348f5982d7f6d83682b694e731a45c6", + importpath = "github.com/kylelemons/godebug", + ) + + go_repository( + name = "com_github_mattn_go_isatty", + commit = "3fb116b820352b7f0c281308a4d6250c22d94e27", + importpath = "github.com/mattn/go-isatty", + ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index 5ba34e367f..69ae928c75 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -12,20 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Package file which defines build_bazel_rules_typescript version in skylark - -check_rules_typescript_version can be used in downstream WORKSPACES to check -against a minimum dependent build_bazel_rules_typescript version. +"""Package file which defines build_bazel_rules_typescript dependencies """ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -# This version is synced with the version in package.json. -# It will be automatically synced via the npm "version" script -# that is run when running `npm version` during the release -# process. See `Releasing` section in README.md. -VERSION = "0.22.1" - def rules_typescript_dependencies(): """ Fetch our transitive dependencies. @@ -38,19 +29,29 @@ def rules_typescript_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.7.zip"], - strip_prefix = "rules_nodejs-0.16.7", + strip_prefix = "rules_nodejs-0.16.8", + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], ) - # ts_web_test depends on the web testing rules to provision browsers. +def rules_typescript_dev_dependencies(): + """ + Fetch dependencies needed for local development, but not needed by users. + + These are in this file to keep version information in one place, and make the WORKSPACE + shorter. + """ + + rules_typescript_dependencies() + + # For running skylint _maybe( http_archive, - name = "io_bazel_rules_webtesting", - urls = ["https://github.com/bazelbuild/rules_webtesting/releases/download/0.3.0/rules_webtesting.tar.gz"], - sha256 = "1c0900547bdbe33d22aa258637dc560ce6042230e41e9ea9dad5d7d2fca8bc42", + name = "io_bazel", + urls = ["https://github.com/bazelbuild/bazel/releases/download/0.21.0/bazel-0.21.0-dist.zip"], + sha256 = "6ccb831e683179e0cfb351cb11ea297b4db48f9eab987601c038aa0f83037db4", ) - # ts_devserver depends on the Go rules. + # For building ts_devserver and ts_auto_deps binaries # See https://github.com/bazelbuild/rules_go#setup for the latest version. _maybe( http_archive, @@ -92,22 +93,6 @@ def rules_typescript_dependencies(): strip_prefix = "bazel-skylib-d7c5518fa061ae18a20d00b14082705d3d2d885d", ) -def rules_typescript_dev_dependencies(): - """ - Fetch dependencies needed for local development, but not needed by users. - - These are in this file to keep version information in one place, and make the WORKSPACE - shorter. - """ - - # For running skylint - _maybe( - http_archive, - name = "io_bazel", - urls = ["https://github.com/bazelbuild/bazel/releases/download/0.21.0/bazel-0.21.0-dist.zip"], - sha256 = "6ccb831e683179e0cfb351cb11ea297b4db48f9eab987601c038aa0f83037db4", - ) - ############################################# # Dependencies for generating documentation # ############################################# diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 9577f6f83c..a2ec917727 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -1,22 +1,24 @@ { - "description": "Monorepo for TypeScript Bazel support. Published packages are in subdirectories under internal/", - "private": true, - "version": "0.22.1", + "name": "@bazel/typescript", + "description": "TypeScript rules for Bazel", + "homepage": "https://github.com/bazelbuild/rules_typescript", + "license": "Apache-2.0", + "version": "0.0.0-PLACEHOLDER", + "keywords": [ + "typescript", + "bazel" + ], + "main": "./internal/tsc_wrapped/index.js", + "typings": "./internal/tsc_wrapped/index.d.ts", + "bin": { + "ts_auto_deps": "./ts_auto_deps/ts_auto_deps.js" + }, "dependencies": { - "jasmine-core": "2.8.0", - "karma": "alexeagle/karma#fa1a84ac881485b5657cb669e9b4e5da77b79f0a", - "karma-chrome-launcher": "2.2.0", - "karma-firefox-launcher": "1.1.0", - "karma-jasmine": "1.1.1", - "karma-json-result-reporter": "1.0.0", - "karma-requirejs": "1.1.0", - "karma-sauce-launcher": "2.0.2", - "karma-sourcemap-loader": "0.3.7", "protobufjs": "5.0.3", - "requirejs": "2.3.5", + "semver": "5.6.0", "source-map-support": "0.5.9", - "tmp": "0.0.33", - "tsutils": "2.27.2" + "tsutils": "2.27.2", + "jasmine-core": "2.8.0" }, "devDependencies": { "@bazel/bazel": "~0.22.0", @@ -31,25 +33,40 @@ "clang-format": "1.0.49", "concurrently": "^3.5.1", "http-server": "^0.11.1", + "karma": "alexeagle/karma#fa1a84ac881485b5657cb669e9b4e5da77b79f0a", + "karma-chrome-launcher": "2.2.0", + "karma-firefox-launcher": "1.1.0", + "karma-jasmine": "1.1.1", + "karma-json-result-reporter": "1.0.0", + "karma-requirejs": "1.1.0", + "karma-sauce-launcher": "2.0.2", + "karma-sourcemap-loader": "0.3.7", "protractor": "^5.2.0", + "requirejs": "2.3.5", "shelljs": "^0.8.2", + "tmp": "0.0.33", "tsickle": "0.33.1", "typescript": "~3.1.6", "which": "~1.0.5" }, + "bazelWorkspaces": { + "build_bazel_rules_typescript": { + "version": "0.0.0-PLACEHOLDER", + "compatVersion": "0.0.0-COMPAT_VERSION", + "rootPath": "." + } + }, "scripts": { - "pree2e": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG && bazel build //examples/app:e2e //examples/protocol_buffers:e2e //internal:npm_package //internal/karma:npm_package", - "e2e": "yarn e2e-bazel-external && yarn e2e-examples-app-devserver && yarn e2e-examples-app-prodserver && yarn e2e-examples-protobuf-devserver && yarn e2e-examples-protobuf-prodserver && yarn e2e-npm_packages && yarn e2e-ts_auto_deps && yarn e2e-typescript_3.1", + "pree2e": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG && bazel build //examples/app:e2e //examples/protocol_buffers:e2e //:npm_package && cd internal/karma; bazel build //:npm_package", + "e2e": "yarn e2e-bazel-external && yarn e2e-examples-app-devserver && yarn e2e-examples-app-prodserver && yarn e2e-examples-protobuf-devserver && yarn e2e-examples-protobuf-prodserver && yarn e2e-npm_packages && yarn e2e-typescript_3.1", "e2e-bazel-external": "jasmine internal/e2e/default_tsconfig_test.js", "e2e-examples-app-devserver": "concurrently \"bazel run //examples/app:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", "e2e-examples-app-prodserver": "concurrently \"bazel run //examples/app:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", "e2e-examples-protobuf-devserver": "concurrently \"bazel run //examples/protocol_buffers:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first", "e2e-examples-protobuf-prodserver": "concurrently \"bazel run //examples/protocol_buffers:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first", "e2e-npm_packages": "./internal/e2e/npm_packages/test.sh", - "e2e-ts_auto_deps": "cd internal/e2e/ts_auto_deps; yarn test", "e2e-typescript_3.1": "cd internal/e2e/typescript_3.1; yarn test", "skydoc": "bazel build //docs && unzip -o -d docs/api bazel-bin/docs/docs-skydoc.zip", - "version": "node ./on-version.js && git stage package.bzl README.md", "bazel:format": "find . -type f \\( -name \"*.bzl\" -or -name WORKSPACE -or -name BUILD -or -name BUILD.bazel \\) ! -path \"*/node_modules/*\" | xargs buildifier -v --warnings=args-order,attr-cfg,attr-license,attr-non-empty,attr-output-default,attr-single-file,constant-glob,ctx-actions,ctx-args,depset-iteration,depset-union,dict-concatenation,duplicated-name,filetype,git-repository,http-archive,integer-division,load,load-on-top,native-build,native-package,out-of-order-load,output-group,package-name,package-on-top,positional-args,redefined-variable,repository-name,same-origin-load,string-iteration,unsorted-dict-items,unused-variable", "bazel:lint": "yarn bazel:format --lint=warn", "bazel:lint-fix": "yarn bazel:format --lint=fix" diff --git a/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel index ce4c41523d..38af0d0ae6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel @@ -1,4 +1,3 @@ -load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar") load("@io_bazel_rules_go//go:def.bzl", "go_library") load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") @@ -29,11 +28,9 @@ go_library( visibility = ["//visibility:public"], ) -pkg_tar( - name = "package", +filegroup( + name = "npm_package_assets", srcs = [ - "BUILD.bazel", "worker_protocol.proto", ], - package_dir = "third_party/github.com/bazelbuild/bazel/src/main/protobuf", ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/tools/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/tools/BUILD.bazel deleted file mode 100644 index ebae899d34..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/tools/BUILD.bazel +++ /dev/null @@ -1,3 +0,0 @@ -package(default_visibility = ["//visibility:public"]) - -exports_files(["check_version.js"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/tools/check_version.js b/third_party/github.com/bazelbuild/rules_typescript/tools/check_version.js deleted file mode 100644 index bff8a10128..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/tools/check_version.js +++ /dev/null @@ -1,93 +0,0 @@ -/** - * @license - * Copyright 2017 The Bazel Authors. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @fileoverview This script runs as a postinstall in the published npm packages - * and checks that the version of the build_bazel_rules_typescript external - * repository matches that of the published npm package. - * - * Note, this check is only performed with bazel managed deps when the yarn or - * npm install is from a yarn_install or npm_install repository rule. For self - * managed bazel deps this check is not performed and it is the responsibility - * of the user to ensure that the versions match. - */ -'use strict'; - -const path = require('path'); -const fs = require('fs'); -const semver = require('semver'); - -// If this is a bazel managed deps yarn_install or npm_install then the -// cwd is $(bazel info -// output_base)/external//node_modules/@bazel/typescript and there should -// be $(bazel info output_base)/external//generate_build_file.js -// folder -function isBazelManagedDeps() { - try { - fs.statSync('../../../generate_build_file.js'); - return true; - } catch (e) { - return false; - } -} - -if (isBazelManagedDeps()) { - let contents; - try { - // If this is a yarn_install or npm_install then the cwd is $(bazel info - // output_base)/external//node_modules/@bazel/ - // so we can look for the package.bzl file under $(bazel info - // output_base)/external/build_bazel_rules_typescript/package.bzl - const packagePath = path.resolve( - process.cwd(), '../../../../build_bazel_rules_typescript/package.bzl'); - contents = fs.readFileSync(packagePath, 'utf8'); - } catch (e) { - throw new Error( - 'The build_bazel_rules_typescript repository is not installed in your Bazel WORKSPACE file'); - } - - // Sanity check that this is build_bazel_rules_typescript since - // other repos will follow the same pattern and have a VERSION - // in a root pacakge.bzl file - if (!contents.includes('def rules_typescript_dependencies():')) { - throw new Error('Invalid package.bzl in build_bazel_rules_typescript'); - } - - const matchVersion = contents.match(/VERSION \= \"([0-9\.]*)\"/); - if (!matchVersion) { - throw new Error('Invalid package.bzl in build_bazel_rules_typescript'); - } - - const bazelPackageVersion = matchVersion[1]; - const bazelPackageVersionRange = `${semver.major(bazelPackageVersion)}.${semver.minor(bazelPackageVersion)}.x`; // should match patch version - - // Should be tolerant of development stamped versions such as "0.17.0-7-g76dc057" - const npmPackageVersion = process.env.npm_package_version.split('-')[0]; - - if (!semver.satisfies(npmPackageVersion, bazelPackageVersionRange)) { - throw new Error( - `Expected ${process.env.npm_package_name} version ${npmPackageVersion} to satisfy ${bazelPackageVersionRange}. ` + - `Please update the build_bazel_rules_typescript version in WORKSPACE file to match ${npmPackageVersion} or ` + - `update the ${process.env.npm_package_name} version in your package.json to satisfy ${bazelPackageVersionRange}.`); - } -} else { - // No version check - console.warn( - `WARNING: With self managed deps you must ensure the @bazel/typescript -and @bazel/karma npm package versions match the build_bazel_rules_typescript -repository version. Use yarn_install or npm_install for this version to be checked -automatically.`); -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel index 0ab24a73e8..a1e0f2dfad 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel @@ -1,4 +1,3 @@ -load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar") load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") go_library( @@ -13,84 +12,45 @@ go_library( ) go_binary( - name = "ts_auto_deps", + name = "ts_auto_deps_bin", embed = [":go_default_library"], visibility = ["//visibility:public"], ) -config_setting( - name = "darwin_amd64", - constraint_values = [ - "@bazel_tools//platforms:osx", - "@bazel_tools//platforms:x86_64", - ], -) - -config_setting( - name = "linux_amd64", - constraint_values = [ - "@bazel_tools//platforms:linux", - "@bazel_tools//platforms:x86_64", - ], -) - -config_setting( - name = "windows_amd64", - constraint_values = [ - "@bazel_tools//platforms:windows", - "@bazel_tools//platforms:x86_64", - ], -) - -filegroup( - name = "auto_deps", - srcs = select({ - ":darwin_amd64": ["ts_auto_deps-darwin_amd64"], - ":linux_amd64": ["ts_auto_deps-linux_amd64"], - ":windows_amd64": ["ts_auto_deps-windows_amd64.exe"], - }), - # Don't build on CI - tags = ["manual"], -) - go_binary( - name = "ts_auto_deps-windows", - out = "ts_auto_deps-windows_amd64.exe", + name = "ts_auto_deps-darwin", + out = "ts_auto_deps-darwin_x64", embed = [":go_default_library"], goarch = "amd64", - goos = "windows", + goos = "darwin", pure = "on", visibility = ["//visibility:public"], ) go_binary( - name = "ts_auto_deps-darwin", - out = "ts_auto_deps-darwin_amd64", + name = "ts_auto_deps-linux", + out = "ts_auto_deps-linux_x64", embed = [":go_default_library"], goarch = "amd64", - goos = "darwin", + goos = "linux", pure = "on", visibility = ["//visibility:public"], ) go_binary( - name = "ts_auto_deps-linux", - out = "ts_auto_deps-linux_amd64", + name = "ts_auto_deps-windows", + out = "ts_auto_deps-win32_x64.exe", embed = [":go_default_library"], goarch = "amd64", - goos = "linux", + goos = "windows", pure = "on", visibility = ["//visibility:public"], ) -pkg_tar( - name = "package", +filegroup( + name = "npm_package_assets", srcs = [ - "BUILD.bazel", - ":ts_auto_deps-darwin", - ":ts_auto_deps-linux", - ":ts_auto_deps-windows", + "ts_auto_deps.js", ], - package_dir = "ts_auto_deps", - visibility = ["//:__pkg__"], + visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/ts_auto_deps.js b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/ts_auto_deps.js new file mode 100644 index 0000000000..68f4f7e875 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/ts_auto_deps.js @@ -0,0 +1,34 @@ +#!/usr/bin/env node + +// This file is a shim to execute the ts_auto_deps binary from the right platform-specific package. +const os = require('os'); +const fs = require('fs'); +const path = require('path'); +const spawnSync = require('child_process').spawnSync; + +/** + * @return '.exe' for Windows and '' for all other platforms + */ +function getNativeBinaryExt() { + return os.platform() === 'win32' ? '.exe' : ''; +} + +/** + * @return the native `ts_auto_deps` binary for the current platform + * @throws when the `ts_auto_deps` executable can not be found + */ +function getNativeBinary() { + try { + return require.resolve(`./ts_auto_deps-${os.platform()}_${os.arch()}${getNativeBinaryExt()}`); + } catch (e) { + const message = 'ts_auto_deps executable not found for your platform: ' + + `(${os.platform()}_${os.arch()})\n`; + throw new Error(message); + } +} + +/** Starts a new synchronous child process that runs with the specified arguments. */ +const spawnedProcess = spawnSync(getNativeBinary(), process.argv.slice(2), {stdio: 'inherit'}); + +// Ensure that this wrapper script exits with the same exit code as the child process. +process.exit(spawnedProcess.status); diff --git a/third_party/github.com/bazelbuild/rules_typescript/version.bzl b/third_party/github.com/bazelbuild/rules_typescript/version.bzl new file mode 100644 index 0000000000..38d6119158 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/version.bzl @@ -0,0 +1,56 @@ +# Copyright 2018 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Package file which defines build_bazel_rules_typescript version in skylark +""" + +load("@build_bazel_rules_nodejs//internal/common:check_version.bzl", "check_version") + +VERSION = "0.22.1" + +# This version is the minimum version that is API compatible with this version +# of rules_typescript. This version should be updated to equal VERSION for +# releases with breaking changes and/or new features. +COMPAT_VERSION = "0.22.0" + +def check_rules_typescript_version(version_string): + """ + Verify that a compatible build_bazel_rules_typescript is loaded a WORKSPACE. + + Where COMPAT_VERSION and VERSION come from the build_bazel_rules_typescript that + is loaded in a WORKSPACE, this function will check: + + VERSION >= version_string >= COMPAT_VERSION + + This should be called from the `WORKSPACE` file so that the build fails as + early as possible. For example: + + ``` + # in WORKSPACE: + load("@build_bazel_rules_typescript//:defs.bzl", "check_rules_typescript_version") + check_rules_typescript_version(version_string = "0.22.0") + ``` + + Args: + version_string: A version string to check for compatibility with the loaded version + of build_bazel_rules_typescript. The version check performed is + `VERSION >= version_string >= COMPAT_VERSION` where VERSION and COMPAT_VERSION + come from the loaded version of build_bazel_rules_typescript. + """ + if not check_version(VERSION, version_string) or not check_version(version_string, COMPAT_VERSION): + fail("\nLoaded build_bazel_rules_typescript version {} with mimimum compat version of {} is not compatible with checked version {}!\n\n".format( + VERSION, + COMPAT_VERSION, + version_string, + )) diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index db0c286bd8..3c74b43f47 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -3415,6 +3415,11 @@ selenium-webdriver@^4.0.0-alpha.1: tmp "0.0.30" xml2js "^0.4.17" +semver@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + semver@^5.3.0: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" From b2aae72473f12d0df2cd0e476e395ed0b7cb1084 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Fri, 1 Feb 2019 16:42:16 -0800 Subject: [PATCH 0508/1134] Use fences to elide code from the published npm package. This prevents users having a transitive dependency on go rules. PiperOrigin-RevId: 232060510 --- .../bazelbuild/rules_typescript/BUILD.bazel | 11 ++++++++++- .../rules_typescript/devserver/BUILD.bazel | 18 ++++++++++++++++++ .../internal/karma/BUILD.bazel | 5 +++++ .../internal/ts_repositories.bzl | 8 ++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index 1dffb8188d..df7e9b750e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -12,6 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. +# BEGIN-DEV-ONLY +# Parts of this BUILD file only necessary when building within the bazelbuild/rules_typescript repo. +# The generated `@bazel/typescript` npm package contains a trimmed BUILD file using # DEV-ONLY fences. +# # To update BUILD.bazel files after changing Go code, run # bazel run //:gazelle # @@ -19,7 +23,11 @@ # https://github.com/bazelbuild/rules_go/blob/master/go/tools/gazelle/README.rst#directives # gazelle:exclude node_modules load("@bazel_gazelle//:def.bzl", "gazelle") + +# END-DEV-ONLY load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary", "npm_package") + +# BEGIN-DEV-ONLY load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") load("//:version.bzl", "COMPAT_VERSION") @@ -76,6 +84,7 @@ npm_package( # from how our release is used. "//devserver:devserver_bin": "//devserver", "0.0.0-COMPAT_VERSION": COMPAT_VERSION, + "(#|\/\/)\\s+BEGIN-DEV-ONLY[\\w\W]+?(#|\/\/)\\s+END-DEV-ONLY": "", }, deps = [ "//devserver:devserver-darwin", @@ -97,7 +106,7 @@ npm_package( # extension = "tgz", # ) - +# END-DEV-ONLY # A nodejs_binary for @bazel/typescript/tsc_wrapped to use by default in # ts_library that depends on @npm//@bazel/typescript instead of the # output of the //internal/tsc_wrapped ts_library rule. This diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/BUILD.bazel index 07e8907a1f..a04d169bb8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/BUILD.bazel @@ -1,3 +1,20 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# BEGIN-DEV-ONLY +# Parts of this BUILD file only necessary when building within the bazelbuild/rules_typescript repo. +# The generated `@bazel/typescript` npm package contains a trimmed BUILD file using # DEV-ONLY fences. load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") go_library( @@ -59,6 +76,7 @@ filegroup( visibility = ["//visibility:public"], ) +# END-DEV-ONLY config_setting( name = "darwin_x64", constraint_values = [ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel index b2dd97d190..815b6da69e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel @@ -12,6 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +# BEGIN-DEV-ONLY +# Parts of this BUILD file only necessary when building within the bazelbuild/rules_typescript repo. +# The generated `@bazel/karma` npm package contains a trimmed BUILD file using # DEV-ONLY fences. load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary", "npm_package") load("@build_bazel_rules_typescript//:version.bzl", "COMPAT_VERSION") load("@build_bazel_rules_typescript//internal:defaults.bzl", "ts_library") @@ -79,6 +82,7 @@ npm_package( ], replacements = { "0.0.0-COMPAT_VERSION": COMPAT_VERSION, + "(#|\/\/)\\s+BEGIN-DEV-ONLY[\\w\W]+?(#|\/\/)\\s+END-DEV-ONLY": "", }, deps = [ ":bazel_karma", @@ -86,4 +90,5 @@ npm_package( ], ) +# END-DEV-ONLY exports_files(["karma.conf.js"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl index 6a37d9848a..2a90a70f15 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl @@ -14,7 +14,12 @@ "Install toolchain dependencies" +# BEGIN-DEV-ONLY +# Parts of this BUILD file only necessary when building within the bazelbuild/rules_typescript repo. +# The generated `@bazel/typescript` npm package contains a trimmed BUILD file using # DEV-ONLY fences. load("@bazel_gazelle//:deps.bzl", "go_repository") + +# END-DEV-ONLY load("@build_bazel_rules_nodejs//:defs.bzl", "check_bazel_version", "check_rules_nodejs_version", "yarn_install") def ts_setup_workspace(): @@ -51,6 +56,7 @@ def ts_setup_workspace(): yarn_lock = "@build_bazel_rules_typescript//internal/protobufjs:yarn.lock", ) +# BEGIN-DEV-ONLY def ts_setup_dev_workspace(): """ Setup the toolchain needed for local development, but not needed by users. @@ -72,3 +78,5 @@ def ts_setup_dev_workspace(): commit = "3fb116b820352b7f0c281308a4d6250c22d94e27", importpath = "github.com/mattn/go-isatty", ) + +# END-DEV-ONLY From 196569466f5323dea07f2fd595b313d9ecfc7b9f Mon Sep 17 00:00:00 2001 From: alexeagle Date: Mon, 4 Feb 2019 11:45:53 -0800 Subject: [PATCH 0509/1134] Fence out the content of /internal/BUILD.bazel Since we don't want any of the content, generate an empty BUILD file. PiperOrigin-RevId: 232337263 --- .../bazelbuild/rules_typescript/internal/BUILD.bazel | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 44372313a7..73041a9385 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -116,10 +116,20 @@ jasmine_node_test( ], ) +# We don't need to distribute any of the content of the BUILD.bazel file in this package +# So generate an empty marker file +genrule( + name = "generated_BUILD", + srcs = [], + # Name the output "BUILD" so it doesn't collide with InputArtifact "BUILD.bazel" + outs = ["BUILD"], + cmd = "echo \"# Marker that this directory is a Bazel package\" > $@", +) + filegroup( name = "npm_package_assets", srcs = [ - "BUILD.bazel", + ":generated_BUILD", "build_defs.bzl", "common/compilation.bzl", "common/json_marshal.bzl", From 116a572b5e73d4ea2202b021291ae22d35b6d56d Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Mon, 4 Feb 2019 12:34:39 -0800 Subject: [PATCH 0510/1134] Add e2e/npm_packages/ts_devserver test Fix npm script syntax to run on Windows Closes #401 PiperOrigin-RevId: 232346165 --- .../internal/e2e/npm_packages/karma/yarn.lock | 2197 +++++++++++++++++ .../npm_packages/karma_stack_trace/yarn.lock | 9 +- .../npm_packages/karma_typescript/yarn.lock | 9 +- .../ts_auto_deps/package-template.json | 2 +- .../e2e/npm_packages/ts_auto_deps/yarn.lock | 80 +- .../BUILD.bazel | 35 +- .../WORKSPACE | 2 +- .../e2e/npm_packages/ts_devserver/app.ts | 4 + .../npm_packages/ts_devserver/app_e2e_test.ts | 25 + .../e2e/npm_packages/ts_devserver/index.html | 21 + .../ts_devserver/package-template.json | 15 + .../ts_devserver/protractor.conf.js | 12 + .../tsconfig.json | 0 .../e2e/npm_packages/ts_devserver/yarn.lock | 1261 ++++++++++ .../e2e/npm_packages/typescript_2.7/yarn.lock | 298 +++ .../e2e/npm_packages/typescript_2.8/yarn.lock | 298 +++ .../e2e/npm_packages/typescript_2.9/yarn.lock | 298 +++ .../e2e/npm_packages/typescript_3.0/yarn.lock | 298 +++ .../e2e/npm_packages/typescript_3.1/yarn.lock | 298 +++ 19 files changed, 5094 insertions(+), 68 deletions(-) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/{typescript_2.7 => ts_devserver}/BUILD.bazel (55%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/{typescript_2.7 => ts_devserver}/WORKSPACE (96%) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/app.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/app_e2e_test.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/index.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/package-template.json create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/protractor.conf.js rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/{typescript_2.7 => ts_devserver}/tsconfig.json (100%) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/yarn.lock diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock index 4a5801883d..00bda136c7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock @@ -1,2 +1,2199 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 + + +"@bazel/karma@file:../../../../../../../../../private/var/tmp/_bazel_greg/8018d2bc8e133e0b44c274b6423215ba/execroot/build_bazel_rules_karma/bazel-out/darwin-fastbuild/bin/npm_package": + version "0.0.0" + dependencies: + jasmine-core "2.8.0" + karma "^4.0.0" + karma-chrome-launcher "2.2.0" + karma-firefox-launcher "1.1.0" + karma-jasmine "1.1.1" + karma-requirejs "1.1.0" + karma-sauce-launcher "2.0.2" + karma-sourcemap-loader "0.3.7" + requirejs "2.3.5" + semver "5.6.0" + tmp "0.0.33" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + +adm-zip@~0.4.3: + version "0.4.13" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" + integrity sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw== + +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= + +agent-base@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== + dependencies: + es6-promisify "^5.0.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + 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" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +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" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + integrity sha1-GdOGodntxufByF04iu28xW0zYC0= + +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== + +async@^2.1.2: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== + dependencies: + lodash "^4.17.10" + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= + +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + 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" + +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= + dependencies: + callsite "1.0.0" + +binary-extensions@^1.0.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" + integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== + +blob@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" + integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== + +bluebird@^3.3.0: + version "3.5.3" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" + integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== + +body-parser@^1.16.1: + version "1.18.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" + integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "~1.6.3" + iconv-lite "0.4.23" + on-finished "~2.3.0" + qs "6.5.2" + raw-body "2.3.3" + type-is "~1.6.16" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^0.1.2: + version "0.1.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" + integrity sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY= + dependencies: + expand-range "^0.1.0" + +braces@^2.3.0, braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + 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" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + 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" + +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= + +chokidar@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== + 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" + lodash.debounce "^4.0.8" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.5" + optionalDependencies: + fsevents "^1.2.2" + +chownr@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + +circular-json@^0.5.5: + version "0.5.9" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" + integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +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" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +colors@^1.1.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" + integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== + +combine-lists@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" + integrity sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y= + dependencies: + lodash "^4.5.0" + +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= + +component-emitter@1.2.1, component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +connect@^3.6.0: + version "3.6.6" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" + integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ= + dependencies: + debug "2.6.9" + finalhandler "1.1.0" + parseurl "~1.3.2" + utils-merge "1.0.1" + +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" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js@^2.2.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.3.tgz#4b70938bdffdaf64931e66e2db158f0892289c49" + integrity sha512-l00tmFFZOBHtYhN4Cz7k32VM7vTn3rE2ANjQDxdEN6zmXZ/xq1jQuutnmHvMG1ZJ7xd72+TA5YpUK8wz3rWsfQ== + +core-js@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" + integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= + +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" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= + +date-format@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" + integrity sha1-YV6CjiM90aubua4JUODOzPpuytg= + +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@=3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +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" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + 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" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + 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" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= + +dom-serialize@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +encodeurl@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +engine.io-client@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.1.1" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~3.3.1" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + +engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6" + integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.5" + has-binary2 "~1.0.2" + +engine.io@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" + integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== + dependencies: + accepts "~1.3.4" + base64id "1.0.0" + cookie "0.3.1" + debug "~3.1.0" + engine.io-parser "~2.1.0" + ws "~3.3.1" + +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= + +es6-promise@^4.0.3: + version "4.2.5" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" + integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg== + +es6-promise@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" + integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + dependencies: + es6-promise "^4.0.3" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +eventemitter3@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" + integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== + +expand-braces@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" + integrity sha1-SIsdHSRRyz06axks/AMPRMWFX+o= + dependencies: + array-slice "^0.2.3" + array-unique "^0.2.1" + braces "^0.1.2" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + 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" + +expand-range@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" + integrity sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ= + dependencies: + is-number "^0.1.1" + repeat-string "^0.2.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + 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" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + 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" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U= + dependencies: + debug "2.6.9" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.3.1" + unpipe "~1.0.0" + +flatted@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" + integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== + +follow-redirects@^1.0.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.6.1.tgz#514973c44b5757368bad8bddfe52f81f015c94cb" + integrity sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ== + dependencies: + debug "=3.1.0" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fs-access@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" + integrity sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o= + dependencies: + null-check "^1.0.0" + +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== + 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" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.2: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" + integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + 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-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" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob@^7.1.1, glob@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + 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" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + +has-binary2@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" + integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== + dependencies: + isarray "2.0.1" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + 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" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + 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" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +http-errors@1.6.3, http-errors@~1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-proxy@^1.13.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" + integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== + dependencies: + eventemitter3 "^3.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +https-proxy-agent@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" + integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== + dependencies: + agent-base "^4.1.0" + debug "^3.1.0" + +iconv-lite@0.4.23: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + dependencies: + minimatch "^3.0.4" + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +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" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + 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" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + 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" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + 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" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +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" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + 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" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + 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" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + 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" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + 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" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +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" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + 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" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + 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" + integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= + dependencies: + is-extglob "^2.1.1" + +is-number@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" + integrity sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY= + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +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" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= + +isbinaryfile@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" + integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== + dependencies: + buffer-alloc "^1.2.0" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + 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" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +jasmine-core@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" + integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= + +jszip@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" + integrity sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ== + dependencies: + core-js "~2.3.0" + es6-promise "~3.0.2" + lie "~3.1.0" + pako "~1.0.2" + readable-stream "~2.0.6" + +karma-chrome-launcher@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" + integrity sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w== + dependencies: + fs-access "^1.0.0" + which "^1.2.1" + +karma-firefox-launcher@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz#2c47030452f04531eb7d13d4fc7669630bb93339" + integrity sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA== + +karma-jasmine@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.1.tgz#6fe840e75a11600c9d91e84b33c458e1c46a3529" + integrity sha1-b+hA51oRYAydkehLM8RY4cRqNSk= + +karma-requirejs@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/karma-requirejs/-/karma-requirejs-1.1.0.tgz#fddae2cb87d7ebc16fb0222893564d7fee578798" + integrity sha1-/driy4fX68FvsCIok1ZNf+5Xh5g= + +karma-sauce-launcher@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-2.0.2.tgz#dbf98e70d86bf287b03a537cf637eb7aefa975c3" + integrity sha512-jLUFaJhHMcKpxFWUesyWYihzM5FvQiJsDwGcCtKeOy2lsWhkVw0V0Byqb1d+wU6myU1mribBtsIcub23HS4kWA== + dependencies: + sauce-connect-launcher "^1.2.4" + saucelabs "^1.5.0" + selenium-webdriver "^4.0.0-alpha.1" + +karma-sourcemap-loader@0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" + integrity sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg= + dependencies: + graceful-fs "^4.1.2" + +karma@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-3.0.0.tgz#6da83461a8a28d8224575c3b5b874e271b4730c3" + integrity sha512-ZTjyuDXVXhXsvJ1E4CnZzbCjSxD6sEdzEsFYogLuZM0yqvg/mgz+O+R1jb0J7uAQeuzdY8kJgx6hSNXLwFuHIQ== + dependencies: + bluebird "^3.3.0" + body-parser "^1.16.1" + chokidar "^2.0.3" + colors "^1.1.0" + combine-lists "^1.0.0" + connect "^3.6.0" + core-js "^2.2.0" + di "^0.0.1" + dom-serialize "^2.2.0" + expand-braces "^0.1.1" + glob "^7.1.1" + graceful-fs "^4.1.2" + http-proxy "^1.13.0" + isbinaryfile "^3.0.0" + lodash "^4.17.4" + log4js "^3.0.0" + mime "^2.3.1" + minimatch "^3.0.2" + optimist "^0.6.1" + qjobs "^1.1.4" + range-parser "^1.2.0" + rimraf "^2.6.0" + safe-buffer "^5.0.1" + socket.io "2.1.1" + source-map "^0.6.1" + tmp "0.0.33" + useragent "2.2.1" + +karma@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-4.0.0.tgz#f28e38a2b66243fde3f98e12a8dcaa2c6ff8ca9c" + integrity sha512-EFoFs3F6G0BcUGPNOn/YloGOb3h09hzTguyXlg6loHlKY76qbJikkcyPk43m2kfRF65TUGda/mig29QQtyhm1g== + dependencies: + bluebird "^3.3.0" + body-parser "^1.16.1" + chokidar "^2.0.3" + colors "^1.1.0" + combine-lists "^1.0.0" + connect "^3.6.0" + core-js "^2.2.0" + di "^0.0.1" + dom-serialize "^2.2.0" + expand-braces "^0.1.1" + flatted "^2.0.0" + glob "^7.1.1" + graceful-fs "^4.1.2" + http-proxy "^1.13.0" + isbinaryfile "^3.0.0" + lodash "^4.17.5" + log4js "^3.0.0" + mime "^2.3.1" + minimatch "^3.0.2" + optimist "^0.6.1" + qjobs "^1.1.4" + range-parser "^1.2.0" + rimraf "^2.6.0" + safe-buffer "^5.0.1" + socket.io "2.1.1" + source-map "^0.6.1" + tmp "0.0.33" + useragent "2.3.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" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + 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" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + 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" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +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" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + +lie@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= + dependencies: + immediate "~3.0.5" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.5.0: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +log4js@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.6.tgz#e6caced94967eeeb9ce399f9f8682a4b2b28c8ff" + integrity sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== + dependencies: + circular-json "^0.5.5" + date-format "^1.2.0" + debug "^3.1.0" + rfdc "^1.1.2" + streamroller "0.7.0" + +lru-cache@2.2.x: + version "2.2.4" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" + integrity sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0= + +lru-cache@4.1.x: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + 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" + +mime-db@~1.37.0: + version "1.37.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" + integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== + +mime-types@~2.1.18: + version "2.1.21" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" + integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== + dependencies: + mime-db "~1.37.0" + +mime@^2.3.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" + integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== + +minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + 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" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + +minipass@^2.2.1, minipass@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + 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" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.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" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + 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" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +nan@^2.9.2: + version "2.12.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" + integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + 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-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.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" + integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= + +node-pre-gyp@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" + integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.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" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +npm-bundled@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" + integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== + +npm-packlist@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.2.0.tgz#55a60e793e272f00862c7089274439a4cc31fc7f" + integrity sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ== + 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" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +null-check@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" + integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0= + +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" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.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" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + 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" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +pako@~1.0.2: + version "1.0.8" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.8.tgz#6844890aab9c635af868ad5fecc62e8acbba3ea4" + integrity sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA== + +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= + dependencies: + better-assert "~1.0.0" + +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +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" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= + +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" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +qjobs@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" + integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== + +qs@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +range-parser@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= + +raw-body@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== + dependencies: + bytes "3.0.0" + http-errors "1.6.3" + iconv-lite "0.4.23" + unpipe "1.0.0" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + 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.3.0: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + 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" + +readable-stream@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +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" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.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" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" + integrity sha1-x6jTI2BoNiBZp+RlH8aITosftK4= + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +requirejs@2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0" + integrity sha512-svnO+aNcR/an9Dpi44C7KSAy5fFGLtmPbaaCeQaklUz8BQhS64tWWIIlvEA5jrWICzlO/X9KSzSeXFnZdBu8nw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rfdc@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.2.tgz#e6e72d74f5dc39de8f538f65e00c36c18018e349" + integrity sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA== + +rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +safe-buffer@^5.0.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" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + 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" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sauce-connect-launcher@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.2.4.tgz#8d38f85242a9fbede1b2303b559f7e20c5609a1c" + integrity sha512-X2vfwulR6brUGiicXKxPm1GJ7dBEeP1II450Uv4bHGrcGOapZNgzJvn9aioea5IC5BPp/7qjKdE3xbbTBIVXMA== + dependencies: + adm-zip "~0.4.3" + async "^2.1.2" + https-proxy-agent "^2.2.1" + lodash "^4.16.6" + rimraf "^2.5.4" + +saucelabs@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" + integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== + dependencies: + https-proxy-agent "^2.2.1" + +sax@>=0.6.0, sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +selenium-webdriver@^4.0.0-alpha.1: + version "4.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz#cc93415e21d2dc1dfd85dfc5f6b55f3ac53933b1" + integrity sha512-z88rdjHAv3jmTZ7KSGUkTvo4rGzcDGMq0oXWHNIDK96Gs31JKVdu9+FMtT4KBrVoibg8dUicJDok6GnqqttO5Q== + dependencies: + jszip "^3.1.3" + rimraf "^2.5.4" + tmp "0.0.30" + xml2js "^0.4.17" + +semver@5.6.0, semver@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= + 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" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + 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" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + 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" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + 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" + +socket.io-adapter@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" + integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= + +socket.io-client@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" + integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~3.1.0" + engine.io-client "~3.2.0" + has-binary2 "~1.0.2" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.2.0" + to-array "0.1.4" + +socket.io-parser@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" + integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + isarray "2.0.1" + +socket.io@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" + integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== + dependencies: + debug "~3.1.0" + engine.io "~3.2.0" + has-binary2 "~1.0.2" + socket.io-adapter "~1.1.0" + socket.io-client "2.1.1" + socket.io-parser "~3.2.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" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + 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-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +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" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= + +streamroller@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" + integrity sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ== + dependencies: + date-format "^1.2.0" + debug "^3.1.0" + mkdirp "^0.5.1" + readable-stream "^2.3.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + 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" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + 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" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + 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" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + 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" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +tar@^4: + version "4.4.8" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" + integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.3.4" + minizlib "^1.1.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + +tmp@0.0.30: + version "0.0.30" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" + integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= + dependencies: + os-tmpdir "~1.0.1" + +tmp@0.0.33, tmp@0.0.x: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= + +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" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + 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" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + 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" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +type-is@~1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.18" + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +useragent@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e" + integrity sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4= + dependencies: + lru-cache "2.2.x" + tmp "0.0.x" + +useragent@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" + integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== + dependencies: + lru-cache "4.1.x" + tmp "0.0.x" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + +which@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + 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" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@~3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +xml2js@^0.4.17: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + +xmlhttprequest-ssl@~1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/yarn.lock index 24ba869ecc..7436e4734c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/yarn.lock @@ -2,8 +2,8 @@ # yarn lockfile v1 -"@bazel/karma@file:../build_bazel_rules_typescript/bazel-bin/internal/karma/npm_package": - version "0.22.1-10-g1bac7de" +"@bazel/karma@file:../../../../../../../../../private/var/tmp/_bazel_greg/8018d2bc8e133e0b44c274b6423215ba/execroot/build_bazel_rules_karma/bazel-out/darwin-fastbuild/bin/npm_package": + version "0.0.0" dependencies: jasmine-core "2.8.0" karma "^4.0.0" @@ -17,9 +17,10 @@ semver "5.6.0" tmp "0.0.33" -"@bazel/typescript@file:../build_bazel_rules_typescript/bazel-bin/internal/npm_package": - version "0.22.1-10-g63696af" +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": + version "0.22.1-41-gc1f5737" dependencies: + jasmine-core "2.8.0" protobufjs "5.0.3" semver "5.6.0" source-map-support "0.5.9" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/yarn.lock index 4434114664..d6c3344218 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/yarn.lock @@ -2,8 +2,8 @@ # yarn lockfile v1 -"@bazel/karma@file:../../../../../../../../../private/var/tmp/_bazel_greg/2c1df01758b58adaef1f5cb29a065852/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/internal/karma/npm_package": - version "0.22.1-19-gecef600" +"@bazel/karma@file:../../../../../../../../../private/var/tmp/_bazel_greg/8018d2bc8e133e0b44c274b6423215ba/execroot/build_bazel_rules_karma/bazel-out/darwin-fastbuild/bin/npm_package": + version "0.0.0" dependencies: jasmine-core "2.8.0" karma "^4.0.0" @@ -17,9 +17,10 @@ semver "5.6.0" tmp "0.0.33" -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/2c1df01758b58adaef1f5cb29a065852/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/internal/npm_package": - version "0.22.1-18-g169a278" +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": + version "0.22.1-41-gc1f5737" dependencies: + jasmine-core "2.8.0" protobufjs "5.0.3" semver "5.6.0" source-map-support "0.5.9" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/package-template.json index 848840ee62..44bcfa3ba7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/package-template.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/package-template.json @@ -4,6 +4,6 @@ "typescript": "2.9.2" }, "scripts": { - "test": "cd simple; ts_auto_deps && bazel build simple" + "test": "cd simple && ts_auto_deps && bazel build simple" } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/yarn.lock index 6f96f90a17..cff6e8d9a0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/yarn.lock @@ -2,13 +2,14 @@ # yarn lockfile v1 -"@bazel/typescript@file:../local_typescript/bazel-bin/npm_package": - version "0.17.0-20-g8657b80" +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": + version "0.22.1-41-gc1f5737" dependencies: - protobufjs "5.0.0" + jasmine-core "2.8.0" + protobufjs "5.0.3" + semver "5.6.0" source-map-support "0.5.9" - tsickle "0.28.0" - tsutils "2.20.0" + tsutils "2.27.2" ansi-regex@^2.0.0: version "2.1.1" @@ -70,13 +71,20 @@ decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" -glob@^5.0.10: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +glob@^7.0.5: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: + fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "2 || 3" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" @@ -101,6 +109,11 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" +jasmine-core@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" + integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= + lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -111,26 +124,13 @@ long@~3: version "3.2.0" resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" -"minimatch@2 || 3": +minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@^1.2.0: - version "1.2.0" - resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -mkdirp@^0.5.1: - version "0.5.1" - resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - 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" @@ -155,16 +155,22 @@ path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -protobufjs@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.0.tgz#4223063233ea96ac063ca2b554035204db524fa1" +protobufjs@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" + integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== dependencies: ascli "~1" bytebuffer "~5" - glob "^5.0.10" + glob "^7.0.5" yargs "^3.10.0" -source-map-support@0.5.9, source-map-support@^0.5.0: +semver@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +source-map-support@0.5.9: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" dependencies: @@ -189,22 +195,14 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -tsickle@0.28.0: - version "0.28.0" - resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.28.0.tgz#6cd6fa004766c6ad9261b599c83866ee97cc7875" - dependencies: - minimist "^1.2.0" - mkdirp "^0.5.1" - source-map "^0.6.0" - source-map-support "^0.5.0" - tslib@^1.8.1: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" -tsutils@2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.20.0.tgz#303394064bc80be8ee04e10b8609ae852e9312d3" +tsutils@2.27.2: + version "2.27.2" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" + integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== dependencies: tslib "^1.8.1" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/BUILD.bazel similarity index 55% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/BUILD.bazel index db3403d95c..0b4ec011de 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/BUILD.bazel @@ -12,30 +12,31 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") -load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") +load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver", "ts_library") ts_library( - name = "main", - srcs = ["main.ts"], + name = "app", + srcs = ["app.ts"], +) + +ts_devserver( + name = "devserver", + port = 8080, + # This is the path we'll request from the browser, see index.html + serving_path = "/bundle.min.js", + # The devserver can serve our static files too + static_files = ["index.html"], + # We'll collect all the devmode JS sources from these TypeScript libraries + deps = [":app"], ) ts_library( - name = "test_lib", - testonly = True, - srcs = glob(["*.spec.ts"]), + name = "e2e", + testonly = 1, + srcs = ["app_e2e_test.ts"], deps = [ - ":main", - "@npm//@bazel/typescript", "@npm//@types/jasmine", "@npm//@types/node", - ], -) - -jasmine_node_test( - name = "test", - deps = [ - ":test_lib", - "@npm//jasmine", + "@npm//protractor", ], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE similarity index 96% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE index 8a5425807f..586927ac07 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "npm_packages_typescript_27_e2e") +workspace(name = "npm_packages_ts_devserver") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/app.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/app.ts new file mode 100644 index 0000000000..6c1c6e9d06 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/app.ts @@ -0,0 +1,4 @@ +const el: HTMLDivElement = document.createElement('div'); +el.innerText = 'Hello, TypeScript'; +el.className = 'ts1'; +document.body.appendChild(el); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/app_e2e_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/app_e2e_test.ts new file mode 100644 index 0000000000..1ce56fbcd2 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/app_e2e_test.ts @@ -0,0 +1,25 @@ +import {browser, by, element, ExpectedConditions} from 'protractor'; + +// This test uses Protractor without Angular, so disable Angular features +browser.waitForAngularEnabled(false); + +// Since we don't have a protractor bazel rule yet, the test is brought up in +// parallel with building the service under test. So the timeout must include +// compiling the application as well as starting the server. +const timeoutMs = 90 * 1000; + +describe('app', () => { + beforeAll(() => { + browser.get(''); + // Don't run any specs until we see a
                      on the page. + browser.wait( + ExpectedConditions.presenceOf(element(by.css('div.ts1'))), + timeoutMs); + }, timeoutMs); + + it('should display: Hello, TypeScript', (done) => { + const div = element(by.css('div.ts1')); + div.getText().then(t => expect(t).toEqual(`Hello, TypeScript`)); + done(); + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/index.html b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/index.html new file mode 100644 index 0000000000..8af1e7f68b --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/index.html @@ -0,0 +1,21 @@ + + + + + + ts_devserver example + + + + + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/package-template.json new file mode 100644 index 0000000000..7001bfac86 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/package-template.json @@ -0,0 +1,15 @@ +{ + "dependencies": { + "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", + "@types/jasmine": "2.8.2", + "@types/node": "7.0.18", + "concurrently": "^3.5.1", + "jasmine": "2.8.0", + "protractor": "^5.2.0", + "typescript": "2.7.x" + }, + "scripts": { + "pretest": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG", + "test": "bazel build ... && concurrently \"bazel run //:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor\" --kill-others --success first" + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/protractor.conf.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/protractor.conf.js new file mode 100644 index 0000000000..9691a64662 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/protractor.conf.js @@ -0,0 +1,12 @@ +exports.config = { + specs: [ + 'bazel-bin/*_e2e_test.js', + ], + capabilities: { + browserName: 'chrome', + chromeOptions: {args: ['--no-sandbox']} + }, + directConnect: true, + baseUrl: 'http://localhost:8080/', + framework: 'jasmine', +}; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/tsconfig.json similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/tsconfig.json diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/yarn.lock new file mode 100644 index 0000000000..0f87dee240 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/yarn.lock @@ -0,0 +1,1261 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": + version "0.22.1-41-gc1f5737" + dependencies: + jasmine-core "2.8.0" + protobufjs "5.0.3" + semver "5.6.0" + source-map-support "0.5.9" + tsutils "2.27.2" + +"@types/jasmine@2.8.2": + version "2.8.2" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" + integrity sha512-RabEJPjYMpjWqW1qYj4k0rlgP5uzyguoc0yxedJdq7t5h19MYvqhjCR1evM3raZ/peHRxp1Qfl24iawvkibSug== + +"@types/node@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" + integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= + +"@types/q@^0.0.32": + version "0.0.32" + resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" + integrity sha1-vShOV8hPEyXacCur/IKlMoGQwMU= + +"@types/selenium-webdriver@^3.0.0": + version "3.0.14" + resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.14.tgz#0b20a2370e6b1b8322c9c3dfcaa409e6c7c0c0a9" + integrity sha512-4GbNCDs98uHCT/OMv40qQC/OpoPbYn9XdXeTiFwHBBFO6eJhYEPUu2zDKirXSbHlvDV8oZ9l8EQ+HrEx/YS9DQ== + +adm-zip@^0.4.9: + version "0.4.13" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" + integrity sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw== + +agent-base@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== + dependencies: + es6-promisify "^5.0.0" + +ajv@^6.5.5: + version "6.7.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.7.0.tgz#e3ce7bb372d6577bb1839f1dfdfcbf5ad2948d96" + integrity sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +ascli@~1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" + integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= + dependencies: + colour "~0.7.1" + optjs "~3.2.2" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +blocking-proxy@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/blocking-proxy/-/blocking-proxy-1.0.1.tgz#81d6fd1fe13a4c0d6957df7f91b75e98dac40cb2" + integrity sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA== + dependencies: + minimist "^1.2.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +browserstack@^1.5.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/browserstack/-/browserstack-1.5.2.tgz#17d8bb76127a1cc0ea416424df80d218f803673f" + integrity sha512-+6AFt9HzhKykcPF79W6yjEUJcdvZOV0lIXdkORXMJftGrDl0OKWqRF4GHqpDNkxiceDT/uB7Fb/aDwktvXX7dg== + dependencies: + https-proxy-agent "^2.2.1" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= + +bytebuffer@~5: + version "5.0.1" + resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" + integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= + dependencies: + long "~3" + +camelcase@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + 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.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +cliui@^3.0.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +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" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +colour@~0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" + integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" + integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== + dependencies: + delayed-stream "~1.0.0" + +commander@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d" + integrity sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0= + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concurrently@^3.5.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-3.6.1.tgz#2f95baec5c4051294dfbb55b57a3b98a3e2b45ec" + integrity sha512-/+ugz+gwFSEfTGUxn0KHkY+19XPRTXR8+7oUK/HxgiN1n7FjeJmkrbSiXAJfyQ0zORgJYPaenmymwon51YXH9Q== + dependencies: + chalk "^2.4.1" + commander "2.6.0" + date-fns "^1.23.0" + lodash "^4.5.1" + read-pkg "^3.0.0" + rx "2.3.24" + spawn-command "^0.0.2-1" + supports-color "^3.2.3" + tree-kill "^1.1.0" + +core-js@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" + integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= + +core-util-is@1.0.2, 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" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +date-fns@^1.23.0: + version "1.30.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + +debug@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +del@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es6-promise@^4.0.3: + version "4.2.5" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" + integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg== + +es6-promise@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" + integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + dependencies: + es6-promise "^4.0.3" + +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" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + 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" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.2: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + 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" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +hosted-git-info@^2.1.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-proxy-agent@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" + integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== + dependencies: + agent-base "^4.1.0" + debug "^3.1.0" + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@~2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= + dependencies: + builtin-modules "^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" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= + dependencies: + path-is-inside "^1.0.1" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +jasmine-core@2.8.0, jasmine-core@~2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" + integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= + +jasmine@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" + integrity sha1-awicChFXax8W3xG4AUbZHU6Lij4= + dependencies: + exit "^0.1.2" + glob "^7.0.6" + jasmine-core "~2.8.0" + +jasminewd2@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" + integrity sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4= + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jszip@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" + integrity sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ== + dependencies: + core-js "~2.3.0" + es6-promise "~3.0.2" + lie "~3.1.0" + pako "~1.0.2" + readable-stream "~2.0.6" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lie@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= + dependencies: + immediate "~3.0.5" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +lodash@^4.5.1: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +long@~3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= + +mime-db@~1.37.0: + version "1.37.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" + integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== + +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.21" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" + integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== + dependencies: + mime-db "~1.37.0" + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +normalize-package-data@^2.3.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.2.tgz#6b2abd85774e51f7936f1395e45acb905dc849b2" + integrity sha512-YcMnjqeoUckXTPKZSAsPjUPLxH85XotbpqK3w4RyCwdFQSU5FxxBys8buehkSfg0j9fKvV1hn7O0+8reEgkAiw== + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +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" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optimist@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optjs@~3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" + integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^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" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +pako@~1.0.2: + version "1.0.8" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.8.tgz#6844890aab9c635af868ad5fecc62e8acbba3ea4" + integrity sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA== + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= + +protobufjs@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" + integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== + dependencies: + ascli "~1" + bytebuffer "~5" + glob "^7.0.5" + yargs "^3.10.0" + +protractor@^5.2.0: + version "5.4.2" + resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.4.2.tgz#329efe37f48b2141ab9467799be2d4d12eb48c13" + integrity sha512-zlIj64Cr6IOWP7RwxVeD8O4UskLYPoyIcg0HboWJL9T79F1F0VWtKkGTr/9GN6BKL+/Q/GmM7C9kFVCfDbP5sA== + dependencies: + "@types/q" "^0.0.32" + "@types/selenium-webdriver" "^3.0.0" + blocking-proxy "^1.0.0" + browserstack "^1.5.1" + chalk "^1.1.3" + glob "^7.0.3" + jasmine "2.8.0" + jasminewd2 "^2.1.0" + optimist "~0.6.0" + q "1.4.1" + saucelabs "^1.5.0" + selenium-webdriver "3.6.0" + source-map-support "~0.4.0" + webdriver-js-extender "2.1.0" + webdriver-manager "^12.0.6" + +psl@^1.1.24: + version "1.1.31" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" + integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" + integrity sha1-VXBbzZPF82c1MMLCy8DCs63cKG4= + +q@^1.4.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +readable-stream@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +request@^2.87.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rx@2.3.24: + version "2.3.24" + resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.24.tgz#14f950a4217d7e35daa71bbcbe58eff68ea4b2b7" + integrity sha1-FPlQpCF9fjXapxu8vljv9o6ksrc= + +safe-buffer@^5.0.1, safe-buffer@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +saucelabs@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" + integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== + dependencies: + https-proxy-agent "^2.2.1" + +sax@>=0.6.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz#2ba87a1662c020b8988c981ae62cb2a01298eafc" + integrity sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q== + dependencies: + jszip "^3.1.3" + rimraf "^2.5.4" + tmp "0.0.30" + xml2js "^0.4.17" + +"semver@2 || 3 || 4 || 5", semver@5.6.0, semver@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +source-map-support@0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@~0.4.0: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e" + integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g== + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +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" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +tmp@0.0.30: + version "0.0.30" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" + integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= + dependencies: + os-tmpdir "~1.0.1" + +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +tree-kill@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.1.tgz#5398f374e2f292b9dcc7b2e71e30a5c3bb6c743a" + integrity sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q== + +tslib@^1.8.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +tsutils@2.27.2: + version "2.27.2" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" + integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== + dependencies: + tslib "^1.8.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +typescript@2.7.x: + version "2.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" + integrity sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw== + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +webdriver-js-extender@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz#57d7a93c00db4cc8d556e4d3db4b5db0a80c3bb7" + integrity sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ== + dependencies: + "@types/selenium-webdriver" "^3.0.0" + selenium-webdriver "^3.0.1" + +webdriver-manager@^12.0.6: + version "12.1.1" + resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.1.1.tgz#66c3271f69cefdaa9fdfca617ae95afae41c3c62" + integrity sha512-L9TEQmZs6JbMMRQI1w60mfps265/NCr0toYJl7p/R2OAk6oXAfwI6jqYP7EWae+d7Ad2S2Aj4+rzxoSjqk3ZuA== + dependencies: + adm-zip "^0.4.9" + chalk "^1.1.1" + del "^2.2.0" + glob "^7.0.3" + ini "^1.3.4" + minimist "^1.2.0" + q "^1.4.1" + request "^2.87.0" + rimraf "^2.5.2" + semver "^5.3.0" + xml2js "^0.4.17" + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +xml2js@^0.4.17: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + +y18n@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +yargs@^3.10.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock index 4a5801883d..00b356bce8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock @@ -1,2 +1,300 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 + + +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": + version "0.22.1-41-gc1f5737" + dependencies: + jasmine-core "2.8.0" + protobufjs "5.0.3" + semver "5.6.0" + source-map-support "0.5.9" + tsutils "2.27.2" + +"@types/jasmine@2.8.2": + version "2.8.2" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" + integrity sha512-RabEJPjYMpjWqW1qYj4k0rlgP5uzyguoc0yxedJdq7t5h19MYvqhjCR1evM3raZ/peHRxp1Qfl24iawvkibSug== + +"@types/node@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" + integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ascli@~1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" + integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= + dependencies: + colour "~0.7.1" + optjs "~3.2.2" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +bytebuffer@~5: + version "5.0.1" + resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" + integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= + dependencies: + long "~3" + +camelcase@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +cliui@^3.0.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +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" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +colour@~0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" + integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +glob@^7.0.5, glob@^7.0.6: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + 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" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +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" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +jasmine-core@2.8.0, jasmine-core@~2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" + integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= + +jasmine@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" + integrity sha1-awicChFXax8W3xG4AUbZHU6Lij4= + dependencies: + exit "^0.1.2" + glob "^7.0.6" + jasmine-core "~2.8.0" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +long@~3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +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" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optjs@~3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" + integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +protobufjs@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" + integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== + dependencies: + ascli "~1" + bytebuffer "~5" + glob "^7.0.5" + yargs "^3.10.0" + +semver@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +source-map-support@0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== + 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" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.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" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +tslib@^1.8.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +tsutils@2.27.2: + version "2.27.2" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" + integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== + dependencies: + tslib "^1.8.1" + +typescript@2.7.x: + version "2.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" + integrity sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw== + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +y18n@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +yargs@^3.10.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock index 4a5801883d..0f79fc4c8a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock @@ -1,2 +1,300 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 + + +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": + version "0.22.1-41-gc1f5737" + dependencies: + jasmine-core "2.8.0" + protobufjs "5.0.3" + semver "5.6.0" + source-map-support "0.5.9" + tsutils "2.27.2" + +"@types/jasmine@2.8.2": + version "2.8.2" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" + integrity sha512-RabEJPjYMpjWqW1qYj4k0rlgP5uzyguoc0yxedJdq7t5h19MYvqhjCR1evM3raZ/peHRxp1Qfl24iawvkibSug== + +"@types/node@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" + integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ascli@~1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" + integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= + dependencies: + colour "~0.7.1" + optjs "~3.2.2" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +bytebuffer@~5: + version "5.0.1" + resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" + integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= + dependencies: + long "~3" + +camelcase@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +cliui@^3.0.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +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" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +colour@~0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" + integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +glob@^7.0.5, glob@^7.0.6: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + 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" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +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" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +jasmine-core@2.8.0, jasmine-core@~2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" + integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= + +jasmine@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" + integrity sha1-awicChFXax8W3xG4AUbZHU6Lij4= + dependencies: + exit "^0.1.2" + glob "^7.0.6" + jasmine-core "~2.8.0" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +long@~3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +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" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optjs@~3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" + integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +protobufjs@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" + integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== + dependencies: + ascli "~1" + bytebuffer "~5" + glob "^7.0.5" + yargs "^3.10.0" + +semver@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +source-map-support@0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== + 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" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.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" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +tslib@^1.8.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +tsutils@2.27.2: + version "2.27.2" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" + integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== + dependencies: + tslib "^1.8.1" + +typescript@2.8.x: + version "2.8.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.4.tgz#0b1db68e6bdfb0b767fa2ab642136a35b059b199" + integrity sha512-IIU5cN1mR5J3z9jjdESJbnxikTrEz3lzAw/D0Tf45jHpBp55nY31UkUvmVHoffCfKHTqJs3fCLPDxknQTTFegQ== + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +y18n@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +yargs@^3.10.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock index 4a5801883d..36885d1920 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock @@ -1,2 +1,300 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 + + +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": + version "0.22.1-41-gc1f5737" + dependencies: + jasmine-core "2.8.0" + protobufjs "5.0.3" + semver "5.6.0" + source-map-support "0.5.9" + tsutils "2.27.2" + +"@types/jasmine@2.8.2": + version "2.8.2" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" + integrity sha512-RabEJPjYMpjWqW1qYj4k0rlgP5uzyguoc0yxedJdq7t5h19MYvqhjCR1evM3raZ/peHRxp1Qfl24iawvkibSug== + +"@types/node@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" + integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ascli@~1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" + integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= + dependencies: + colour "~0.7.1" + optjs "~3.2.2" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +bytebuffer@~5: + version "5.0.1" + resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" + integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= + dependencies: + long "~3" + +camelcase@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +cliui@^3.0.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +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" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +colour@~0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" + integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +glob@^7.0.5, glob@^7.0.6: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + 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" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +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" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +jasmine-core@2.8.0, jasmine-core@~2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" + integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= + +jasmine@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" + integrity sha1-awicChFXax8W3xG4AUbZHU6Lij4= + dependencies: + exit "^0.1.2" + glob "^7.0.6" + jasmine-core "~2.8.0" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +long@~3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +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" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optjs@~3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" + integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +protobufjs@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" + integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== + dependencies: + ascli "~1" + bytebuffer "~5" + glob "^7.0.5" + yargs "^3.10.0" + +semver@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +source-map-support@0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== + 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" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.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" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +tslib@^1.8.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +tsutils@2.27.2: + version "2.27.2" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" + integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== + dependencies: + tslib "^1.8.1" + +typescript@2.9.x: + version "2.9.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" + integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w== + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +y18n@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +yargs@^3.10.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock index 4a5801883d..88ed70c018 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock @@ -1,2 +1,300 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 + + +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": + version "0.22.1-41-gc1f5737" + dependencies: + jasmine-core "2.8.0" + protobufjs "5.0.3" + semver "5.6.0" + source-map-support "0.5.9" + tsutils "2.27.2" + +"@types/jasmine@2.8.2": + version "2.8.2" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" + integrity sha512-RabEJPjYMpjWqW1qYj4k0rlgP5uzyguoc0yxedJdq7t5h19MYvqhjCR1evM3raZ/peHRxp1Qfl24iawvkibSug== + +"@types/node@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" + integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ascli@~1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" + integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= + dependencies: + colour "~0.7.1" + optjs "~3.2.2" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +bytebuffer@~5: + version "5.0.1" + resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" + integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= + dependencies: + long "~3" + +camelcase@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +cliui@^3.0.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +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" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +colour@~0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" + integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +glob@^7.0.5, glob@^7.0.6: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + 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" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +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" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +jasmine-core@2.8.0, jasmine-core@~2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" + integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= + +jasmine@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" + integrity sha1-awicChFXax8W3xG4AUbZHU6Lij4= + dependencies: + exit "^0.1.2" + glob "^7.0.6" + jasmine-core "~2.8.0" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +long@~3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +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" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optjs@~3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" + integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +protobufjs@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" + integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== + dependencies: + ascli "~1" + bytebuffer "~5" + glob "^7.0.5" + yargs "^3.10.0" + +semver@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +source-map-support@0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== + 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" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.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" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +tslib@^1.8.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +tsutils@2.27.2: + version "2.27.2" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" + integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== + dependencies: + tslib "^1.8.1" + +typescript@3.0.x: + version "3.0.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.0.3.tgz#4853b3e275ecdaa27f78fda46dc273a7eb7fc1c8" + integrity sha512-kk80vLW9iGtjMnIv11qyxLqZm20UklzuR2tL0QAnDIygIUIemcZMxlMWudl9OOt76H3ntVzcTiddQ1/pAAJMYg== + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +y18n@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +yargs@^3.10.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock index 4a5801883d..2b15616400 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock @@ -1,2 +1,300 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 + + +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": + version "0.22.1-41-gc1f5737" + dependencies: + jasmine-core "2.8.0" + protobufjs "5.0.3" + semver "5.6.0" + source-map-support "0.5.9" + tsutils "2.27.2" + +"@types/jasmine@2.8.2": + version "2.8.2" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" + integrity sha512-RabEJPjYMpjWqW1qYj4k0rlgP5uzyguoc0yxedJdq7t5h19MYvqhjCR1evM3raZ/peHRxp1Qfl24iawvkibSug== + +"@types/node@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" + integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ascli@~1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" + integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= + dependencies: + colour "~0.7.1" + optjs "~3.2.2" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +bytebuffer@~5: + version "5.0.1" + resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" + integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= + dependencies: + long "~3" + +camelcase@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +cliui@^3.0.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +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" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +colour@~0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" + integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +glob@^7.0.5, glob@^7.0.6: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + 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" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +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" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +jasmine-core@2.8.0, jasmine-core@~2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" + integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= + +jasmine@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" + integrity sha1-awicChFXax8W3xG4AUbZHU6Lij4= + dependencies: + exit "^0.1.2" + glob "^7.0.6" + jasmine-core "~2.8.0" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +long@~3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +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" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optjs@~3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" + integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +protobufjs@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" + integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== + dependencies: + ascli "~1" + bytebuffer "~5" + glob "^7.0.5" + yargs "^3.10.0" + +semver@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +source-map-support@0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== + 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" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.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" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +tslib@^1.8.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +tsutils@2.27.2: + version "2.27.2" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" + integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== + dependencies: + tslib "^1.8.1" + +typescript@3.1.x: + version "3.1.6" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" + integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +y18n@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +yargs@^3.10.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" From 760e94248c123c06d2cceea538b4b70c1c84d69e Mon Sep 17 00:00:00 2001 From: alexeagle Date: Mon, 4 Feb 2019 12:57:34 -0800 Subject: [PATCH 0511/1134] Cleanups of rules_typescript: - fix lint/formatting of .bzl files as observed by CircleCI - restore some files which were dropped in the move to e2e/npm_packages PiperOrigin-RevId: 232350070 --- .../bazelbuild/rules_typescript/BUILD.bazel | 2 +- .../internal/common/compilation.bzl | 1 - .../internal/common/module_mappings.bzl | 1 - .../npm_packages/typescript_2.7/BUILD.bazel | 41 ++++++++++++++++++ .../e2e/npm_packages/typescript_2.7/WORKSPACE | 42 +++++++++++++++++++ .../npm_packages/typescript_2.7/tsconfig.json | 0 .../internal/karma/BUILD.bazel | 2 +- 7 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/tsconfig.json diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index df7e9b750e..7594bf810c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -80,11 +80,11 @@ npm_package( "//ts_auto_deps:npm_package_assets", ], replacements = { + "(#|\/\/)\\s+BEGIN-DEV-ONLY[\\w\W]+?(#|\/\/)\\s+END-DEV-ONLY": "", # Do a simple replacement needed to make the local development differ # from how our release is used. "//devserver:devserver_bin": "//devserver", "0.0.0-COMPAT_VERSION": COMPAT_VERSION, - "(#|\/\/)\\s+BEGIN-DEV-ONLY[\\w\W]+?(#|\/\/)\\s+END-DEV-ONLY": "", }, deps = [ "//devserver:devserver-darwin", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 99b043ac6c..44483cbff7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -18,7 +18,6 @@ load(":common/json_marshal.bzl", "json_marshal") load(":common/module_mappings.bzl", "module_mappings_aspect") - _DEBUG = False DEPS_ASPECTS = [ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl index d085d726f9..a28b32793c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl @@ -33,7 +33,6 @@ def _get_deps(attrs, names): # Traverse 'srcs' in addition so that we can go across a genrule _MODULE_MAPPINGS_DEPS_NAMES = ["deps", "srcs", "_helpers"] - _DEBUG = False def debug(msg, values = ()): diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel new file mode 100644 index 0000000000..db3403d95c --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel @@ -0,0 +1,41 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") +load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") + +ts_library( + name = "main", + srcs = ["main.ts"], +) + +ts_library( + name = "test_lib", + testonly = True, + srcs = glob(["*.spec.ts"]), + deps = [ + ":main", + "@npm//@bazel/typescript", + "@npm//@types/jasmine", + "@npm//@types/node", + ], +) + +jasmine_node_test( + name = "test", + deps = [ + ":test_lib", + "@npm//jasmine", + ], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE new file mode 100644 index 0000000000..ec6631369f --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE @@ -0,0 +1,42 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +workspace(name = "package_typescript_27_e2e") + +local_repository( + name = "build_bazel_rules_typescript", + path = "../../..", +) + +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") + +rules_typescript_dependencies() + +load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") + +rules_nodejs_dependencies() + +load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") + +node_repositories(preserve_symlinks = True) + +yarn_install( + name = "npm", + package_json = "//:package.json", + yarn_lock = "//:yarn.lock", +) + +load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") + +ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/tsconfig.json new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel index 815b6da69e..7fcc0b853b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel @@ -81,8 +81,8 @@ npm_package( "web_test.bzl", ], replacements = { - "0.0.0-COMPAT_VERSION": COMPAT_VERSION, "(#|\/\/)\\s+BEGIN-DEV-ONLY[\\w\W]+?(#|\/\/)\\s+END-DEV-ONLY": "", + "0.0.0-COMPAT_VERSION": COMPAT_VERSION, }, deps = [ ":bazel_karma", From c209337ee74dfa567567d0ecf2d2bef2ae3391e2 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 4 Feb 2019 13:10:26 -0800 Subject: [PATCH 0512/1134] Update release bits --- .../bazelbuild/rules_typescript/DEVELOPING.md | 4 +--- .../bazelbuild/rules_typescript/README.md | 4 ++-- .../rules_typescript/internal/BUILD.bazel | 2 +- .../rules_typescript/internal/karma/.bazelrc | 1 + .../bazelbuild/rules_typescript/on-version.js | 14 ++++++++++---- .../bazelbuild/rules_typescript/package.json | 11 ++++++----- 6 files changed, 21 insertions(+), 15 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/.bazelrc diff --git a/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md b/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md index 426443f1ed..8428d01929 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md +++ b/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md @@ -62,10 +62,8 @@ rule is that minors are breaking changes and patches are new features). 1. `git commit -a -m 'Update docs for release'` 1. `npm config set tag-version-prefix ''` 1. `npm version minor -m 'rel: %s'` (replace `minor` with `patch` if no breaking changes) -1. Build npm packages and publish them: `bazel run //internal:npm_package.publish && bazel run //internal/karma:npm_package.publish` -1. `bazel build :release` +1. Build npm packages and publish them: `TMP=$(mktemp -d -t bazel-release.XXXXXXX); bazel --output_base=$TMP run //:npm_package.publish && cd internal/karma && bazel --output_base=$TMP run //:npm_package.publish` 1. `git push && git push --tags` -1. (Manual for now) go to the [releases] page, edit the new release, and attach the `bazel-bin/release.tgz` file 1. (Temporary): submit a google3 CL to update the versions in package.bzl and package.json [releases]: https://github.com/bazelbuild/rules_typescript/releases diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index df68fecd8b..46f86f38b0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -25,8 +25,8 @@ Optionally add the `@bazel/karma` npm package if you would like to use the { ... "devDependencies": { - "@bazel/typescript": "0.23.0", - "@bazel/karma": "0.23.0", + "@bazel/typescript": "0.22.1", + "@bazel/karma": "0.22.1", ... }, ... diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 73041a9385..555e2fdd7b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -129,7 +129,6 @@ genrule( filegroup( name = "npm_package_assets", srcs = [ - ":generated_BUILD", "build_defs.bzl", "common/compilation.bzl", "common/json_marshal.bzl", @@ -140,6 +139,7 @@ filegroup( "ts_repositories.bzl", "tsc_wrapped/package.json", "tsc_wrapped/yarn.lock", + ":generated_BUILD", "//internal/devserver:npm_package_assets", "//internal/protobufjs:npm_package_assets", ], diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/.bazelrc new file mode 100644 index 0000000000..ad69514f6d --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/.bazelrc @@ -0,0 +1 @@ +build --workspace_status_command=../../tools/bazel_stamp_vars.sh diff --git a/third_party/github.com/bazelbuild/rules_typescript/on-version.js b/third_party/github.com/bazelbuild/rules_typescript/on-version.js index 61c881b272..18dee8173f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/on-version.js +++ b/third_party/github.com/bazelbuild/rules_typescript/on-version.js @@ -27,7 +27,13 @@ // in package.bzl to match that of package.json. const shell = require('shelljs'); const version = require('./package.json').version; -shell.sed('-i', 'VERSION \= \"[0-9\.]*\"', `VERSION = "${version}"`, 'package.bzl') -shell.sed('-i', '\"@bazel/typescript\": \"[0-9\.]*\"', `"@bazel/typescript": "${version}"`, 'README.md') -shell.sed('-i', 'https://github.com/bazelbuild/rules_typescript/archive/[0-9\.]*\.zip', `https://github.com/bazelbuild/rules_typescript/archive/${version}.zip`, 'README.md') -shell.sed('-i', 'strip_prefix \= \"rules_typescript-[0-9\.]*\"', `strip_prefix = "rules_typescript-${version}"`, 'README.md') +shell.sed('-i', '\"@bazel/typescript\": \"[0-9\.]*\"', `"@bazel/typescript": "${version}"`, 'README.md'); +shell.sed('-i', '\"@bazel/karma\": \"[0-9\.]*\"', `"@bazel/karma": "${version}"`, 'README.md'); +shell.sed('-i', 'VERSION \= \"[0-9\.]*\"', `VERSION = "${version}"`, 'version.bzl'); +shell.sed('-i', 'check_rules_typescript_version\\\(version_string \= \"[0-9\.]*\"', `check_rules_typescript_version(version_string = "${version}"`, 'WORKSPACE'); + +// Following instructions in version.bzl, we should update the minimal compatibility version whenever +// we have new features or breaking changes. So we assume that a patch number of 0 implies this. +if (version.endsWith('.0')) { + shell.sed('-i', 'COMPAT_VERSION \= \"[0-9\.]*\"', `COMPAT_VERSION = "${version}"`, 'version.bzl') +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index a2ec917727..52710e9990 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,15 +3,15 @@ "description": "TypeScript rules for Bazel", "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", - "version": "0.0.0-PLACEHOLDER", + "version": "0.22.1", "keywords": [ - "typescript", - "bazel" + "typescript", + "bazel" ], "main": "./internal/tsc_wrapped/index.js", "typings": "./internal/tsc_wrapped/index.d.ts", "bin": { - "ts_auto_deps": "./ts_auto_deps/ts_auto_deps.js" + "ts_auto_deps": "./ts_auto_deps/ts_auto_deps.js" }, "dependencies": { "protobufjs": "5.0.3", @@ -69,6 +69,7 @@ "skydoc": "bazel build //docs && unzip -o -d docs/api bazel-bin/docs/docs-skydoc.zip", "bazel:format": "find . -type f \\( -name \"*.bzl\" -or -name WORKSPACE -or -name BUILD -or -name BUILD.bazel \\) ! -path \"*/node_modules/*\" | xargs buildifier -v --warnings=args-order,attr-cfg,attr-license,attr-non-empty,attr-output-default,attr-single-file,constant-glob,ctx-actions,ctx-args,depset-iteration,depset-union,dict-concatenation,duplicated-name,filetype,git-repository,http-archive,integer-division,load,load-on-top,native-build,native-package,out-of-order-load,output-group,package-name,package-on-top,positional-args,redefined-variable,repository-name,same-origin-load,string-iteration,unsorted-dict-items,unused-variable", "bazel:lint": "yarn bazel:format --lint=warn", - "bazel:lint-fix": "yarn bazel:format --lint=fix" + "bazel:lint-fix": "yarn bazel:format --lint=fix", + "version": "node ./on-version.js && git stage README.md" } } From 5263c66416dd0096f3421dc22329089a798d867d Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 4 Feb 2019 13:52:04 -0800 Subject: [PATCH 0513/1134] rel 0.23.0 --- third_party/github.com/bazelbuild/rules_typescript/README.md | 4 ++-- .../github.com/bazelbuild/rules_typescript/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 46f86f38b0..df68fecd8b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -25,8 +25,8 @@ Optionally add the `@bazel/karma` npm package if you would like to use the { ... "devDependencies": { - "@bazel/typescript": "0.22.1", - "@bazel/karma": "0.22.1", + "@bazel/typescript": "0.23.0", + "@bazel/karma": "0.23.0", ... }, ... diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 52710e9990..9303c95fbb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,7 +3,7 @@ "description": "TypeScript rules for Bazel", "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", - "version": "0.22.1", + "version": "0.23.0", "keywords": [ "typescript", "bazel" From 217831436deec9be5aada2992b30266c67bb6e3b Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 4 Feb 2019 14:50:45 -0800 Subject: [PATCH 0514/1134] Fixes for 0.23 release - files that weren't staged after on-version.js - karma version from upstream (for local dev) - missing internal/BUILD file in the npm package Also Deprecate rules_typescript_dependencies it contains only rules_nodejs which users will have to install first anyway Closes #403 PiperOrigin-RevId: 232371626 --- .../bazelbuild/rules_typescript/BUILD.bazel | 1 + .../bazelbuild/rules_typescript/README.md | 4 - .../bazelbuild/rules_typescript/WORKSPACE | 2 +- .../rules_typescript/internal/BUILD.bazel | 1 - .../npm_packages/karma_stack_trace/WORKSPACE | 4 - .../npm_packages/karma_typescript/WORKSPACE | 4 - .../e2e/npm_packages/ts_auto_deps/WORKSPACE | 4 - .../e2e/npm_packages/ts_devserver/WORKSPACE | 4 - .../e2e/npm_packages/typescript_2.7/WORKSPACE | 25 +- .../e2e/npm_packages/typescript_2.8/WORKSPACE | 4 - .../e2e/npm_packages/typescript_2.9/WORKSPACE | 4 - .../e2e/npm_packages/typescript_3.0/WORKSPACE | 4 - .../e2e/npm_packages/typescript_3.1/WORKSPACE | 4 - .../bazelbuild/rules_typescript/package.bzl | 25 +- .../bazelbuild/rules_typescript/package.json | 4 +- .../bazelbuild/rules_typescript/version.bzl | 4 +- .../bazelbuild/rules_typescript/yarn.lock | 1260 ++--------------- 17 files changed, 181 insertions(+), 1177 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index 7594bf810c..09ee44b315 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -90,6 +90,7 @@ npm_package( "//devserver:devserver-darwin", "//devserver:devserver-linux", "//devserver:devserver-windows", + "//internal:generated_BUILD", "//internal:tsc_wrapped", "//ts_auto_deps:ts_auto_deps-darwin", "//ts_auto_deps:ts_auto_deps-linux", diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index df68fecd8b..e334a93bb1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -72,10 +72,6 @@ yarn_install( load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -# Fetch transitive Bazel dependencies of build_bazel_rules_typescript -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") -rules_typescript_dependencies() - # Fetch transitive Bazel dependencies of build_bazel_rules_karma # ONLY REQUIRED if you are using the @bazel/karma npm package load("@build_bazel_rules_karma//:package.bzl", "rules_karma_dependencies") diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 2c90799deb..2b644566e3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -77,7 +77,7 @@ ts_setup_dev_workspace() # Test that check_rules_typescript_version works as expected load("//:defs.bzl", "check_rules_typescript_version") -check_rules_typescript_version(version_string = "0.22.0") +check_rules_typescript_version(version_string = "0.23.0") # Dependencies for generating documentation load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 555e2fdd7b..5132aa88ac 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -139,7 +139,6 @@ filegroup( "ts_repositories.bzl", "tsc_wrapped/package.json", "tsc_wrapped/yarn.lock", - ":generated_BUILD", "//internal/devserver:npm_package_assets", "//internal/protobufjs:npm_package_assets", ], diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE index cc1d388d77..03bfe1eae0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE @@ -36,10 +36,6 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") - -rules_typescript_dependencies() - load("@build_bazel_rules_karma//:package.bzl", "rules_karma_dependencies") rules_karma_dependencies() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE index c10ae4afe5..83983637ec 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE @@ -36,10 +36,6 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") - -rules_typescript_dependencies() - load("@build_bazel_rules_karma//:package.bzl", "rules_karma_dependencies") rules_karma_dependencies() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE index 4635bbd19e..a4662d5b91 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE @@ -36,10 +36,6 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") - -rules_typescript_dependencies() - load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE index 586927ac07..dc13223beb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE @@ -36,10 +36,6 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") - -rules_typescript_dependencies() - load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE index ec6631369f..d3abdb37d4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE @@ -12,24 +12,19 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "package_typescript_27_e2e") +workspace(name = "npm_packages_typescript_27_e2e") -local_repository( - name = "build_bazel_rules_typescript", - path = "../../..", -) - -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") - -rules_typescript_dependencies() - -load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -rules_nodejs_dependencies() +http_archive( + name = "build_bazel_rules_nodejs", + strip_prefix = "rules_nodejs-0.16.8", + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], +) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") -node_repositories(preserve_symlinks = True) +node_repositories() yarn_install( name = "npm", @@ -37,6 +32,10 @@ yarn_install( yarn_lock = "//:yarn.lock", ) +load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") + +install_bazel_dependencies() + load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE index 4aa41ec705..5403864090 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE @@ -36,10 +36,6 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") - -rules_typescript_dependencies() - load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE index ce12fa90d2..2ce03cdb17 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE @@ -36,10 +36,6 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") - -rules_typescript_dependencies() - load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE index 8e0d2f144f..1fb00c1d7e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE @@ -36,10 +36,6 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") - -rules_typescript_dependencies() - load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE index 8e0d2f144f..1fb00c1d7e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE @@ -36,10 +36,6 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") - -rules_typescript_dependencies() - load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index 69ae928c75..ab74c6713c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -18,14 +18,21 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") def rules_typescript_dependencies(): + print("""DEPRECATION WARNING: + rules_typescript_dependencies is no longer needed, and will be removed in a future release. + We assume you will fetch rules_nodejs in your WORKSPACE file, and no other dependencies remain here. + Simply remove any calls to this function and the corresponding call to + load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") + """) + +def rules_typescript_dev_dependencies(): """ - Fetch our transitive dependencies. + Fetch dependencies needed for local development. - If the user wants to get a different version of these, they can just fetch it - from their WORKSPACE before calling this function, or not call this function at all. + These are in this file to keep version information in one place, and make the WORKSPACE + shorter. """ - # TypeScript compiler runs on node.js runtime _maybe( http_archive, name = "build_bazel_rules_nodejs", @@ -33,16 +40,6 @@ def rules_typescript_dependencies(): urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], ) -def rules_typescript_dev_dependencies(): - """ - Fetch dependencies needed for local development, but not needed by users. - - These are in this file to keep version information in one place, and make the WORKSPACE - shorter. - """ - - rules_typescript_dependencies() - # For running skylint _maybe( http_archive, diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 9303c95fbb..15f4a391d7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -33,7 +33,7 @@ "clang-format": "1.0.49", "concurrently": "^3.5.1", "http-server": "^0.11.1", - "karma": "alexeagle/karma#fa1a84ac881485b5657cb669e9b4e5da77b79f0a", + "karma": "^4.0.0", "karma-chrome-launcher": "2.2.0", "karma-firefox-launcher": "1.1.0", "karma-jasmine": "1.1.1", @@ -70,6 +70,6 @@ "bazel:format": "find . -type f \\( -name \"*.bzl\" -or -name WORKSPACE -or -name BUILD -or -name BUILD.bazel \\) ! -path \"*/node_modules/*\" | xargs buildifier -v --warnings=args-order,attr-cfg,attr-license,attr-non-empty,attr-output-default,attr-single-file,constant-glob,ctx-actions,ctx-args,depset-iteration,depset-union,dict-concatenation,duplicated-name,filetype,git-repository,http-archive,integer-division,load,load-on-top,native-build,native-package,out-of-order-load,output-group,package-name,package-on-top,positional-args,redefined-variable,repository-name,same-origin-load,string-iteration,unsorted-dict-items,unused-variable", "bazel:lint": "yarn bazel:format --lint=warn", "bazel:lint-fix": "yarn bazel:format --lint=fix", - "version": "node ./on-version.js && git stage README.md" + "version": "node ./on-version.js && git stage README.md version.bzl WORKSPACE" } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/version.bzl b/third_party/github.com/bazelbuild/rules_typescript/version.bzl index 38d6119158..ec462f9699 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/version.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/version.bzl @@ -17,12 +17,12 @@ load("@build_bazel_rules_nodejs//internal/common:check_version.bzl", "check_version") -VERSION = "0.22.1" +VERSION = "0.23.0" # This version is the minimum version that is API compatible with this version # of rules_typescript. This version should be updated to equal VERSION for # releases with breaking changes and/or new features. -COMPAT_VERSION = "0.22.0" +COMPAT_VERSION = "0.23.0" def check_rules_typescript_version(version_string): """ diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index 3c74b43f47..eb756630ed 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -112,11 +112,6 @@ accepts@~1.3.4: mime-types "~2.1.18" negotiator "0.6.1" -addressparser@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746" - integrity sha1-R6++GiqSYhkdtoOOT9HTm0CCF0Y= - adm-zip@0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736" @@ -145,7 +140,7 @@ agent-base@2: extend "~3.0.0" semver "~5.0.1" -agent-base@4, agent-base@^4.1.0, agent-base@^4.2.0, agent-base@~4.2.0: +agent-base@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== @@ -162,27 +157,6 @@ ajv@^5.1.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -ajv@^5.3.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - -amqplib@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/amqplib/-/amqplib-0.5.2.tgz#d2d7313c7ffaa4d10bcf1e6252de4591b6cc7b63" - integrity sha512-l9mCs6LbydtHqRniRwYkKdqxVa6XMz3Vw1fh+2gJaaVgTM6Jk3o8RccAKWKtlhT1US5sWrFh+KKxsVUALURSIA== - dependencies: - bitsyntax "~0.0.4" - bluebird "^3.4.6" - buffer-more-ints "0.0.2" - readable-stream "1.x >=1.1.9" - safe-buffer "^5.0.1" - ansi-regex@^0.2.0, ansi-regex@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" @@ -208,13 +182,13 @@ ansi-styles@^2.2.1: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" + micromatch "^3.1.4" + normalize-path "^2.1.1" aproba@^1.0.3: version "1.2.0" @@ -229,19 +203,12 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= - dependencies: - arr-flatten "^1.0.1" - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== @@ -306,21 +273,11 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ= - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -ast-types@0.x.x: - version "0.11.5" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.5.tgz#9890825d660c03c28339f315e9fa0a360e31ec28" - integrity sha512-oJjo+5e7/vEc2FBK8gUalV0pba4L3VdBIs2EKhOLHLcOd2FgQIVQN9xb0eZ9IjEWyAL7vq6fGJxOvVvdCHNyMw== - async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -336,7 +293,7 @@ async@^1.5.2: resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@^2.1.2, async@~2.6.0: +async@^2.1.2: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== @@ -353,33 +310,16 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8= - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= -aws4@^1.2.1, aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== - aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" integrity sha1-g+9cqGCysy5KDe7e6MdxudtXRx4= -axios@^0.15.3: - version "0.15.3" - resolved "http://registry.npmjs.org/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053" - integrity sha1-LJ1jiy4ZGgjqHWzJiOrda6W9wFM= - dependencies: - follow-redirects "1.0.0" - backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" @@ -432,20 +372,6 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== -bitsyntax@~0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/bitsyntax/-/bitsyntax-0.0.4.tgz#eb10cc6f82b8c490e3e85698f07e83d46e0cba82" - integrity sha1-6xDMb4K4xJDj6FaY8H6D1G4MuoI= - dependencies: - buffer-more-ints "0.0.2" - -bl@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" - integrity sha1-/cqHGplxOqANGeO7ukHER4emU5g= - dependencies: - readable-stream "~2.0.5" - blob@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" @@ -458,7 +384,7 @@ blocking-proxy@0.0.5: dependencies: minimist "^1.2.0" -bluebird@^3.3.0, bluebird@^3.4.6: +bluebird@^3.3.0: version "3.5.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg== @@ -479,13 +405,6 @@ body-parser@^1.16.1: raw-body "2.3.3" type-is "~1.6.16" -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8= - dependencies: - hoek "2.x.x" - boom@4.x.x: version "4.3.1" resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" @@ -515,16 +434,7 @@ braces@^0.1.2: dependencies: expand-range "^0.1.0" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -braces@^2.3.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" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -563,24 +473,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -buffer-more-ints@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/buffer-more-ints/-/buffer-more-ints-0.0.2.tgz#26b3885d10fa13db7fc01aae3aab870199e0124c" - integrity sha1-JrOIXRD6E9t/wBquOquHAZngEkw= - -buildmail@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/buildmail/-/buildmail-4.0.1.tgz#877f7738b78729871c9a105e3b837d2be11a7a72" - integrity sha1-h393OLeHKYccmhBeO4N9K+EaenI= - dependencies: - addressparser "1.0.1" - libbase64 "0.1.0" - libmime "3.0.0" - libqp "1.1.0" - nodemailer-fetch "1.6.0" - nodemailer-shared "1.1.0" - punycode "1.4.1" - bytebuffer@~5: version "5.0.1" resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" @@ -618,11 +510,6 @@ camelcase@^2.0.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= -caseless@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - integrity sha1-cVuW6phBWTzDMGeSP17GDr2k99c= - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -650,31 +537,35 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chokidar@^1.4.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= +chokidar@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== dependencies: - anymatch "^1.3.0" + anymatch "^2.0.0" async-each "^1.0.0" - glob-parent "^2.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" inherits "^2.0.1" is-binary-path "^1.0.0" - is-glob "^2.0.0" + is-glob "^4.0.0" + lodash.debounce "^4.0.8" + normalize-path "^2.1.1" path-is-absolute "^1.0.0" readdirp "^2.0.0" + upath "^1.0.5" optionalDependencies: - fsevents "^1.0.0" + fsevents "^1.2.2" chownr@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== -circular-json@^0.5.4: - version "0.5.5" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.5.tgz#64182ef359042d37cd8e767fc9de878b1e9447d3" - integrity sha512-13YaR6kiz0kBNmIVM87Io8Hp7bWOo4r61vkEANy8iH9R9bc6avud/1FT0SBpqR1RpIQADOh/Q+yHZDA1iL6ysA== +circular-json@^0.5.5: + version "0.5.9" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" + integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== clang-format@1.0.49: version "1.0.49" @@ -744,13 +635,6 @@ combine-lists@^1.0.0: dependencies: lodash "^4.5.0" -combined-stream@1.0.6: - version "1.0.6" - resolved "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" - integrity sha1-cj599ugBrFYTETp+RFqbactjKBg= - dependencies: - delayed-stream "~1.0.0" - combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" @@ -758,23 +642,11 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" -combined-stream@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" - integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== - dependencies: - delayed-stream "~1.0.0" - commander@2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d" integrity sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0= -commander@^2.9.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" - integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== - component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -859,13 +731,6 @@ corser@~2.0.0: resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" integrity sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c= -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g= - dependencies: - boom "2.x.x" - cryptiles@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" @@ -885,11 +750,6 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-uri-to-buffer@1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" - integrity sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ== - date-fns@^1.23.0: version "1.29.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" @@ -900,14 +760,14 @@ date-format@^1.2.0: resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" integrity sha1-YV6CjiM90aubua4JUODOzPpuytg= -debug@2, debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@~2.6.4, debug@~2.6.6: +debug@2, debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@3.1.0, debug@^3.1.0, debug@~3.1.0: +debug@^3.1.0, debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== @@ -929,11 +789,6 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -956,15 +811,6 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -degenerator@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" - integrity sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU= - dependencies: - ast-types "0.x.x" - escodegen "1.x.x" - esprima "3.x.x" - del@^2.2.0: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" @@ -1013,11 +859,6 @@ dom-serialize@^2.2.0: extend "^3.0.0" void-elements "^2.0.0" -double-ended-queue@^2.1.0-0: - version "2.1.0-0" - resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" - integrity sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw= - ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" @@ -1045,10 +886,10 @@ encodeurl@~1.0.1: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -engine.io-client@~3.1.0: - version "3.1.6" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.6.tgz#5bdeb130f8b94a50ac5cbeb72583e7a4a063ddfd" - integrity sha512-hnuHsFluXnsKOndS4Hv6SvUrgdYx1pk2NqfaDMW+GWdgfU3+/V25Cj7I8a0x92idSpa5PIhJRKxPvp9mnoLsfg== +engine.io-client@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== dependencies: component-emitter "1.2.1" component-inherit "0.0.3" @@ -1073,10 +914,10 @@ engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: blob "0.0.4" has-binary2 "~1.0.2" -engine.io@~3.1.0: - version "3.1.5" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.5.tgz#0e7ef9d690eb0b35597f1d4ad02a26ca2dba3845" - integrity sha512-D06ivJkYxyRrcEe0bTpNnBQNgP9d3xog+qZlLbui8EsMr/DouQpf5o9FzJnWYHEYE0YsFHllUv2R1dkgYZXHcA== +engine.io@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" + integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== dependencies: accepts "~1.3.4" base64id "1.0.0" @@ -1084,8 +925,6 @@ engine.io@~3.1.0: debug "~3.1.0" engine.io-parser "~2.1.0" ws "~3.3.1" - optionalDependencies: - uws "~9.14.0" ent@~2.2.0: version "2.2.0" @@ -1119,33 +958,6 @@ escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@1.x.x: - version "1.11.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" - integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw== - dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -esprima@3.x.x, esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - -estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= - eventemitter3@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" @@ -1165,13 +977,6 @@ expand-braces@^0.1.1: array-unique "^0.2.1" braces "^0.1.2" -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -1193,13 +998,6 @@ expand-range@^0.1.0: is-number "^0.1.1" repeat-string "^0.2.2" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -1220,18 +1018,11 @@ extend@3, extend@~3.0.0, extend@~3.0.1: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" integrity sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ= -extend@^3.0.0, extend@~3.0.2: +extend@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= - dependencies: - is-extglob "^1.0.0" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -1261,32 +1052,6 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -file-uri-to-path@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -1310,12 +1075,10 @@ finalhandler@1.1.0: statuses "~1.3.1" unpipe "~1.0.0" -follow-redirects@1.0.0: - version "1.0.0" - resolved "http://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37" - integrity sha1-jjQpjL0uF28lTv/sdaHHjMhJ/Tc= - dependencies: - debug "^2.2.0" +flatted@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" + integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== follow-redirects@^1.0.0: version "1.4.1" @@ -1324,41 +1087,16 @@ follow-redirects@^1.0.0: dependencies: debug "^3.1.0" -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -form-data@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.0.0.tgz#6f0aebadcc5da16c13e1ecc11137d85f9b883b25" - integrity sha1-bwrrrcxdoWwT4ezBETfYX5uIOyU= - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.11" - -form-data@~2.3.0, form-data@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" - integrity sha1-SXBJi+YEwgwAXU9cI67NIda0kJk= - dependencies: - asynckit "^0.4.0" - combined-stream "1.0.6" - mime-types "^2.1.12" - form-data@~2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" @@ -1394,22 +1132,14 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.0.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" - integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== +fsevents@^1.2.2: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" + integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== dependencies: nan "^2.9.2" node-pre-gyp "^0.10.0" -ftp@~0.3.10: - version "0.3.10" - resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" - integrity sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0= - dependencies: - readable-stream "1.1.x" - xregexp "2.0.0" - fun-map@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/fun-map/-/fun-map-3.3.1.tgz#6415fde3b93ad58f9ee9566236cff3e3c64b94cb" @@ -1429,32 +1159,6 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -generate-function@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" - integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== - dependencies: - is-property "^1.0.2" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA= - dependencies: - is-property "^1.0.0" - -get-uri@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.2.tgz#5c795e71326f6ca1286f2fc82575cd2bab2af578" - integrity sha512-ZD325dMZOgerGqF/rF6vZXyFGTAay62svjQIT+X/oU2PtxYpFxvSkbsdi+oxIrsNxlZVd4y8wUDqkaExWTI/Cw== - dependencies: - data-uri-to-buffer "1" - debug "2" - extend "3" - file-uri-to-path "1" - ftp "~0.3.10" - readable-stream "2" - 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" @@ -1467,20 +1171,13 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= dependencies: - is-glob "^2.0.0" + is-glob "^3.1.0" + path-dirname "^1.0.0" glob@^5.0.10: version "5.0.15" @@ -1539,16 +1236,6 @@ har-schema@^2.0.0: resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" - integrity sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0= - dependencies: - chalk "^1.1.1" - commander "^2.9.0" - is-my-json-valid "^2.12.4" - pinkie-promise "^2.0.0" - har-validator@~5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" @@ -1557,14 +1244,6 @@ har-validator@~5.0.3: ajv "^5.1.0" har-schema "^2.0.0" -har-validator@~5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" - integrity sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA== - dependencies: - ajv "^5.3.0" - har-schema "^2.0.0" - has-ansi@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e" @@ -1632,16 +1311,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ= - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - hawk@~6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" @@ -1657,19 +1326,6 @@ he@^1.1.1: resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= -hipchat-notifier@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz#b6d249755437c191082367799d3ba9a0f23b231e" - integrity sha1-ttJJdVQ3wZEII2d5nTupoPI7Ix4= - dependencies: - lodash "^4.0.0" - request "^2.0.0" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0= - hoek@4.x.x: version "4.2.0" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" @@ -1685,14 +1341,6 @@ http-errors@1.6.3, http-errors@~1.6.3: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== - dependencies: - agent-base "4" - debug "3.1.0" - http-proxy@^1.13.0, http-proxy@^1.8.1: version "1.17.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" @@ -1716,15 +1364,6 @@ http-server@^0.11.1: portfinder "^1.0.13" union "~0.4.3" -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8= - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -1734,19 +1373,6 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -httpntlm@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/httpntlm/-/httpntlm-1.6.1.tgz#ad01527143a2e8773cfae6a96f58656bb52a34b2" - integrity sha1-rQFScUOi6Hc8+uapb1hla7UqNLI= - dependencies: - httpreq ">=0.4.22" - underscore "~1.7.0" - -httpreq@>=0.4.22: - version "0.4.24" - resolved "https://registry.yarnpkg.com/httpreq/-/httpreq-0.4.24.tgz#4335ffd82cd969668a39465c929ac61d6393627f" - integrity sha1-QzX/2CzZaWaKOUZckprGHWOTYn8= - https-proxy-agent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6" @@ -1764,11 +1390,6 @@ https-proxy-agent@^2.2.1: agent-base "^4.1.0" debug "^3.1.0" -iconv-lite@0.4.15: - version "0.4.15" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" - integrity sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es= - iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" @@ -1800,16 +1421,6 @@ indexof@0.0.1: resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= -inflection@~1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" - integrity sha1-ogCTVlbW9fa8TcdQLhrstwMihBY= - -inflection@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.3.8.tgz#cbd160da9f75b14c3cc63578d4f396784bf3014e" - integrity sha1-y9Fg2p91sUw8xjV41POWeEvzAU4= - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -1838,11 +1449,6 @@ invert-kv@^1.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= -ip@^1.1.2, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - 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" @@ -1901,18 +1507,6 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - 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" @@ -1925,10 +1519,10 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= +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" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-fullwidth-code-point@^1.0.0: version "1.0.0" @@ -1942,41 +1536,25 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= dependencies: - is-extglob "^1.0.0" - -is-my-ip-valid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" - integrity sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ== + is-extglob "^2.1.0" -is-my-json-valid@^2.12.4: - version "2.19.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.19.0.tgz#8fd6e40363cd06b963fa877d444bfb5eddc62175" - integrity sha512-mG0f/unGX1HZ5ep4uhRaPOS8EkAY8/j6mDRMJrutq4CqhoJWYp7qAlonIPy3TV7p3ju4TK9fo/PbnoksWmsp5Q== +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - is-my-ip-valid "^1.0.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" + is-extglob "^2.1.1" is-number@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" integrity sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY= -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -1984,11 +1562,6 @@ is-number@^3.0.0: 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" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" @@ -2015,26 +1588,6 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= - -is-property@^1.0.0, is-property@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ= - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -2045,11 +1598,6 @@ is-windows@^1.0.2: resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -2123,16 +1671,11 @@ json-schema@0.2.3: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= -json-stringify-safe@5.0.x, json-stringify-safe@~5.0.1: +json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk= - jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -2200,13 +1743,14 @@ karma-sourcemap-loader@0.3.7: dependencies: graceful-fs "^4.1.2" -karma@alexeagle/karma#fa1a84ac881485b5657cb669e9b4e5da77b79f0a: - version "1.7.1" - resolved "https://codeload.github.com/alexeagle/karma/tar.gz/fa1a84ac881485b5657cb669e9b4e5da77b79f0a" +karma@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-4.0.0.tgz#f28e38a2b66243fde3f98e12a8dcaa2c6ff8ca9c" + integrity sha512-EFoFs3F6G0BcUGPNOn/YloGOb3h09hzTguyXlg6loHlKY76qbJikkcyPk43m2kfRF65TUGda/mig29QQtyhm1g== dependencies: bluebird "^3.3.0" body-parser "^1.16.1" - chokidar "^1.4.1" + chokidar "^2.0.3" colors "^1.1.0" combine-lists "^1.0.0" connect "^3.6.0" @@ -2214,23 +1758,24 @@ karma@alexeagle/karma#fa1a84ac881485b5657cb669e9b4e5da77b79f0a: di "^0.0.1" dom-serialize "^2.2.0" expand-braces "^0.1.1" + flatted "^2.0.0" glob "^7.1.1" graceful-fs "^4.1.2" http-proxy "^1.13.0" isbinaryfile "^3.0.0" - lodash "^4.17.4" - log4js "^2.3.9" - mime "^1.3.4" + lodash "^4.17.5" + log4js "^3.0.0" + mime "^2.3.1" minimatch "^3.0.2" optimist "^0.6.1" qjobs "^1.1.4" range-parser "^1.2.0" rimraf "^2.6.0" safe-buffer "^5.0.1" - socket.io "2.0.4" + socket.io "2.1.1" source-map "^0.6.1" tmp "0.0.33" - useragent "^2.1.12" + useragent "2.3.0" kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" @@ -2263,33 +1808,6 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -libbase64@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/libbase64/-/libbase64-0.1.0.tgz#62351a839563ac5ff5bd26f12f60e9830bb751e6" - integrity sha1-YjUag5VjrF/1vSbxL2Dpgwu3UeY= - -libmime@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/libmime/-/libmime-3.0.0.tgz#51a1a9e7448ecbd32cda54421675bb21bc093da6" - integrity sha1-UaGp50SOy9Ms2lRCFnW7IbwJPaY= - dependencies: - iconv-lite "0.4.15" - libbase64 "0.1.0" - libqp "1.1.0" - -libqp@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/libqp/-/libqp-1.1.0.tgz#f5e6e06ad74b794fb5b5b66988bf728ef1dedbe8" - integrity sha1-9ebgatdLeU+1tbZpiL9yjvHe2+g= - lie@~3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" @@ -2297,7 +1815,12 @@ lie@~3.1.0: dependencies: immediate "~3.0.5" -lodash@^4.0.0, lodash@^4.15.0, lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.5.0: +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.5, lodash@^4.5.0: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== @@ -2307,41 +1830,23 @@ lodash@^4.5.1: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4= -log4js@^2.3.9: - version "2.11.0" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-2.11.0.tgz#bf3902eff65c6923d9ce9cfbd2db54160e34005a" - integrity sha512-z1XdwyGFg8/WGkOyF6DPJjivCWNLKrklGdViywdYnSKOvgtEBo2UyEMZS5sD2mZrQlU3TvO8wDWLc8mzE1ncBQ== +log4js@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.6.tgz#e6caced94967eeeb9ce399f9f8682a4b2b28c8ff" + integrity sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== dependencies: - circular-json "^0.5.4" + circular-json "^0.5.5" date-format "^1.2.0" debug "^3.1.0" - semver "^5.5.0" + rfdc "^1.1.2" streamroller "0.7.0" - optionalDependencies: - amqplib "^0.5.2" - axios "^0.15.3" - hipchat-notifier "^1.1.0" - loggly "^1.1.0" - mailgun-js "^0.18.0" - nodemailer "^2.5.0" - redis "^2.7.1" - slack-node "~0.2.0" - -loggly@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/loggly/-/loggly-1.1.1.tgz#0a0fc1d3fa3a5ec44fdc7b897beba2a4695cebee" - integrity sha1-Cg/B0/o6XsRP3HuJe+uipGlc6+4= - dependencies: - json-stringify-safe "5.0.x" - request "2.75.x" - timespan "2.3.x" long@~3: version "3.2.0" resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= -lru-cache@4.1.x, lru-cache@^4.1.2: +lru-cache@4.1.x: version "4.1.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" integrity sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA== @@ -2349,29 +1854,6 @@ lru-cache@4.1.x, lru-cache@^4.1.2: pseudomap "^1.0.2" yallist "^2.1.2" -mailcomposer@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/mailcomposer/-/mailcomposer-4.0.1.tgz#0e1c44b2a07cf740ee17dc149ba009f19cadfeb4" - integrity sha1-DhxEsqB890DuF9wUm6AJ8Zyt/rQ= - dependencies: - buildmail "4.0.1" - libmime "3.0.0" - -mailgun-js@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/mailgun-js/-/mailgun-js-0.18.1.tgz#ee39aa18d7bb598a5ce9ede84afb681defc8a6b0" - integrity sha512-lvuMP14u24HS2uBsJEnzSyPMxzU2b99tQsIx1o6QNjqxjk8b3WvR+vq5oG1mjqz/IBYo+5gF+uSoDS0RkMVHmg== - dependencies: - async "~2.6.0" - debug "~3.1.0" - form-data "~2.3.0" - inflection "~1.12.0" - is-stream "^1.1.0" - path-proxy "~1.0.0" - promisify-call "^2.0.2" - proxy-agent "~3.0.0" - tsscmp "~1.0.0" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -2384,36 +1866,12 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -math-random@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" - integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w= - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -micromatch@^3.1.10: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -2442,13 +1900,6 @@ mime-db@~1.36.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" integrity sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw== -mime-types@^2.1.11, mime-types@~2.1.18, mime-types@~2.1.19, mime-types@~2.1.7: - version "2.1.20" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" - integrity sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A== - dependencies: - mime-db "~1.36.0" - mime-types@^2.1.12, mime-types@~2.1.17: version "2.1.17" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" @@ -2456,11 +1907,23 @@ mime-types@^2.1.12, mime-types@~2.1.17: dependencies: mime-db "~1.30.0" -mime@^1.3.4, mime@^1.4.1: +mime-types@~2.1.18: + version "2.1.20" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" + integrity sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A== + dependencies: + mime-db "~1.36.0" + +mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime@^2.3.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" + integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== + "minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -2549,11 +2012,6 @@ negotiator@0.6.1: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= -netmask@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" - integrity sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU= - node-pre-gyp@^0.10.0: version "0.10.3" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" @@ -2570,67 +2028,6 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -node-uuid@~1.4.7: - version "1.4.8" - resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" - integrity sha1-sEDrCSOWivq/jTL7HxfxFn/auQc= - -nodemailer-direct-transport@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz#e96fafb90358560947e569017d97e60738a50a86" - integrity sha1-6W+vuQNYVglH5WkBfZfmBzilCoY= - dependencies: - nodemailer-shared "1.1.0" - smtp-connection "2.12.0" - -nodemailer-fetch@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz#79c4908a1c0f5f375b73fe888da9828f6dc963a4" - integrity sha1-ecSQihwPXzdbc/6IjamCj23JY6Q= - -nodemailer-shared@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz#cf5994e2fd268d00f5cf0fa767a08169edb07ec0" - integrity sha1-z1mU4v0mjQD1zw+nZ6CBae2wfsA= - dependencies: - nodemailer-fetch "1.6.0" - -nodemailer-smtp-pool@2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.8.2.tgz#2eb94d6cf85780b1b4725ce853b9cbd5e8da8c72" - integrity sha1-LrlNbPhXgLG0clzoU7nL1ejajHI= - dependencies: - nodemailer-shared "1.1.0" - nodemailer-wellknown "0.1.10" - smtp-connection "2.12.0" - -nodemailer-smtp-transport@2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.2.tgz#03d71c76314f14ac7dbc7bf033a6a6d16d67fb77" - integrity sha1-A9ccdjFPFKx9vHvwM6am0W1n+3c= - dependencies: - nodemailer-shared "1.1.0" - nodemailer-wellknown "0.1.10" - smtp-connection "2.12.0" - -nodemailer-wellknown@0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz#586db8101db30cb4438eb546737a41aad0cf13d5" - integrity sha1-WG24EB2zDLRDjrVGc3pBqtDPE9U= - -nodemailer@^2.5.0: - version "2.7.2" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-2.7.2.tgz#f242e649aeeae39b6c7ed740ef7b061c404d30f9" - integrity sha1-8kLmSa7q45tsftdA73sGHEBNMPk= - dependencies: - libmime "3.0.0" - mailcomposer "4.0.1" - nodemailer-direct-transport "3.3.2" - nodemailer-shared "1.1.0" - nodemailer-smtp-pool "2.8.2" - nodemailer-smtp-transport "2.7.2" - socks "1.1.9" - nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -2639,7 +2036,7 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-path@^2.0.0, normalize-path@^2.0.1: +normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -2679,16 +2076,11 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -oauth-sign@~0.8.1, oauth-sign@~0.8.2: +oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -2715,14 +2107,6 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -2757,18 +2141,6 @@ optimist@0.6.x, optimist@^0.6.1, optimist@~0.6.0: minimist "~0.0.1" wordwrap "~0.0.2" -optionator@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= - 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" - options@>=0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" @@ -2804,46 +2176,11 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -pac-proxy-agent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-3.0.0.tgz#11d578b72a164ad74bf9d5bac9ff462a38282432" - integrity sha512-AOUX9jES/EkQX2zRz0AW7lSx9jD//hQS8wFXBvcnd/J2Py9KaMJMqV/LPqJssj1tgGufotb2mmopGPR15ODv1Q== - dependencies: - agent-base "^4.2.0" - debug "^3.1.0" - get-uri "^2.0.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - pac-resolver "^3.0.0" - raw-body "^2.2.0" - socks-proxy-agent "^4.0.1" - -pac-resolver@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-3.0.0.tgz#6aea30787db0a891704deb7800a722a7615a6f26" - integrity sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA== - dependencies: - co "^4.6.0" - degenerator "^1.0.4" - ip "^1.1.5" - netmask "^1.0.6" - thunkify "^2.1.2" - pako@~1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - parseqs@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" @@ -2868,6 +2205,11 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -2883,13 +2225,6 @@ path-parse@^1.0.5: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" integrity sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME= -path-proxy@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/path-proxy/-/path-proxy-1.0.0.tgz#18e8a36859fc9d2f1a53b48dee138543c020de5e" - integrity sha1-GOijaFn8nS8aU7SN7hOFQ8Ag3l4= - dependencies: - inflection "~1.3.0" - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -2926,16 +2261,6 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= - process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" @@ -2946,13 +2271,6 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== -promisify-call@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/promisify-call/-/promisify-call-2.0.4.tgz#d48c2d45652ccccd52801ddecbd533a6d4bd5fba" - integrity sha1-1IwtRWUszM1SgB3ey9UzptS9X7o= - dependencies: - with-callback "^1.0.2" - protobufjs@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.0.tgz#4223063233ea96ac063ca2b554035204db524fa1" @@ -2994,36 +2312,12 @@ protractor@^5.2.0: webdriver-js-extender "^1.0.0" webdriver-manager "^12.0.6" -proxy-agent@~3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-3.0.3.tgz#1c1a33db60ef5f2e9e35b876fd63c2bc681c611d" - integrity sha512-PXVVVuH9tiQuxQltFJVSnXWuDtNr+8aNBP6XVDDCDiUuDN8eRCm+ii4/mFWmXWEA0w8jjJSlePa4LXlM4jIzNA== - dependencies: - agent-base "^4.2.0" - debug "^3.1.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - lru-cache "^4.1.2" - pac-proxy-agent "^3.0.0" - proxy-from-env "^1.0.0" - socks-proxy-agent "^4.0.1" - -proxy-from-env@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" - integrity sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4= - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24: - version "1.1.29" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" - integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== - -punycode@1.4.1, punycode@^1.4.1: +punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= @@ -3038,7 +2332,7 @@ qjobs@^1.1.4: resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== -qs@6.5.2, qs@~6.5.2: +qs@6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== @@ -3048,31 +2342,17 @@ qs@~2.3.3: resolved "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz#e9e85adbe75da0bbe4c8e0476a086290f863b404" integrity sha1-6eha2+ddoLvkyOBHaghikPhjtAQ= -qs@~6.2.0: - version "6.2.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" - integrity sha1-HPyyXBCpsrSDBT/zn138kjOQjP4= - qs@~6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== -randomatic@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116" - integrity sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - range-parser@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= -raw-body@2.3.3, raw-body@^2.2.0: +raw-body@2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== @@ -3092,17 +2372,7 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -readable-stream@1.1.x, "readable-stream@1.x >=1.1.9": - version "1.1.14" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@2, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.0: +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.0: version "2.3.6" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -3115,7 +2385,7 @@ readable-stream@2, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stre string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@~2.0.5, readable-stream@~2.0.6: +readable-stream@~2.0.6: version "2.0.6" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= @@ -3143,32 +2413,6 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -redis-commands@^1.2.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.5.tgz#4495889414f1e886261180b1442e7295602d83a2" - integrity sha512-foGF8u6MXGFF++1TZVC6icGXuMYPftKXt1FBT2vrfU9ZATNtZJ8duRC5d1lEfE8hyVe3jhelHGB91oB7I6qLsA== - -redis-parser@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b" - integrity sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs= - -redis@^2.7.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02" - integrity sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A== - dependencies: - double-ended-queue "^2.1.0-0" - redis-commands "^1.2.0" - redis-parser "^2.6.0" - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" - 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" @@ -3192,64 +2436,11 @@ repeat-string@^0.2.2: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" integrity sha1-x6jTI2BoNiBZp+RlH8aITosftK4= -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request@2.75.x: - version "2.75.0" - resolved "http://registry.npmjs.org/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93" - integrity sha1-0rgmiihtoT6qXQGt9dGMyQ9lfZM= - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - bl "~1.1.2" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.0.0" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - node-uuid "~1.4.7" - oauth-sign "~0.8.1" - qs "~6.2.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - -request@^2.0.0, request@^2.74.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.0" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - request@^2.78.0: version "2.83.0" resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" @@ -3278,16 +2469,6 @@ request@^2.78.0: tunnel-agent "^0.6.0" uuid "^3.1.0" -requestretry@^1.2.2: - version "1.13.0" - resolved "https://registry.yarnpkg.com/requestretry/-/requestretry-1.13.0.tgz#213ec1006eeb750e8b8ce54176283d15a8d55d94" - integrity sha512-Lmh9qMvnQXADGAQxsXHP4rbgO6pffCfuR8XUBdP9aitJcLQJxhp7YZK4xAVYXnPJ5E52mwrfiKQtKonPL8xsmg== - dependencies: - extend "^3.0.0" - lodash "^4.15.0" - request "^2.74.0" - when "^3.7.7" - requirejs@2.3.5: version "2.3.5" resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0" @@ -3315,6 +2496,11 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +rfdc@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.2.tgz#e6e72d74f5dc39de8f538f65e00c36c18018e349" + integrity sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA== + rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" @@ -3425,11 +2611,6 @@ semver@^5.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== -semver@^5.5.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" - integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== - semver@~5.0.1: version "5.0.3" resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" @@ -3479,31 +2660,6 @@ signal-exit@^3.0.0: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -slack-node@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/slack-node/-/slack-node-0.2.0.tgz#de4b8dddaa8b793f61dbd2938104fdabf37dfa30" - integrity sha1-3kuN3aqLeT9h29KTgQT9q/N9+jA= - dependencies: - requestretry "^1.2.2" - -smart-buffer@^1.0.4: - version "1.1.15" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" - integrity sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY= - -smart-buffer@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.1.tgz#07ea1ca8d4db24eb4cac86537d7d18995221ace3" - integrity sha512-RFqinRVJVcCAL9Uh1oVqE6FZkqsyLiVOYEZ20TqIOjuX7iFVJ+zsbs4RIghnw/pTs7mZvt8ZHhvm1ZUrR4fykg== - -smtp-connection@2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/smtp-connection/-/smtp-connection-2.12.0.tgz#d76ef9127cb23c2259edb1e8349c2e8d5e2d74c1" - integrity sha1-1275EnyyPCJZ7bHoNJwujV4tdME= - dependencies: - httpntlm "1.6.1" - nodemailer-shared "1.1.0" - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -3534,13 +2690,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg= - dependencies: - hoek "2.x.x" - sntp@2.x.x: version "2.1.0" resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" @@ -3553,69 +2702,46 @@ socket.io-adapter@~1.1.0: resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= -socket.io-client@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e" - integrity sha1-CRilUkBtxeVAs4Dc2Xr8SmQzL44= +socket.io-client@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" + integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== dependencies: backo2 "1.0.2" base64-arraybuffer "0.1.5" component-bind "1.0.0" component-emitter "1.2.1" - debug "~2.6.4" - engine.io-client "~3.1.0" + debug "~3.1.0" + engine.io-client "~3.2.0" + has-binary2 "~1.0.2" has-cors "1.1.0" indexof "0.0.1" object-component "0.0.3" parseqs "0.0.5" parseuri "0.0.5" - socket.io-parser "~3.1.1" + socket.io-parser "~3.2.0" to-array "0.1.4" -socket.io-parser@~3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.3.tgz#ed2da5ee79f10955036e3da413bfd7f1e4d86c8e" - integrity sha512-g0a2HPqLguqAczs3dMECuA1RgoGFPyvDqcbaDEdCWY9g59kdUAz3YRmaJBNKXflrHNwB7Q12Gkf/0CZXfdHR7g== +socket.io-parser@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" + integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== dependencies: component-emitter "1.2.1" debug "~3.1.0" - has-binary2 "~1.0.2" isarray "2.0.1" -socket.io@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014" - integrity sha1-waRZDO/4fs8TxyZS8Eb3FrKeYBQ= +socket.io@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" + integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== dependencies: - debug "~2.6.6" - engine.io "~3.1.0" + debug "~3.1.0" + engine.io "~3.2.0" + has-binary2 "~1.0.2" socket.io-adapter "~1.1.0" - socket.io-client "2.0.4" - socket.io-parser "~3.1.1" - -socks-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz#5936bf8b707a993079c6f37db2091821bffa6473" - integrity sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw== - dependencies: - agent-base "~4.2.0" - socks "~2.2.0" - -socks@1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.9.tgz#628d7e4d04912435445ac0b6e459376cb3e6d691" - integrity sha1-Yo1+TQSRJDVEWsC25Fk3bLPm1pE= - dependencies: - ip "^1.1.2" - smart-buffer "^1.0.4" - -socks@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.1.tgz#68ad678b3642fbc5d99c64c165bc561eab0215f9" - integrity sha512-0GabKw7n9mI46vcNrVfs0o6XzWzjVa3h6GaSo2UPxtWAROXUWavfJWh1M4PR5tnE0dcnQXZIDFP4yrAysLze/w== - dependencies: - ip "^1.1.5" - smart-buffer "^4.0.1" + socket.io-client "2.1.1" + socket.io-parser "~3.2.0" source-map-resolve@^0.5.0: version "0.5.2" @@ -3661,7 +2787,7 @@ source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -3755,11 +2881,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringstream@~0.0.4: - version "0.0.6" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" - integrity sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA== - stringstream@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -3821,16 +2942,6 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" -thunkify@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" - integrity sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0= - -timespan@2.3.x: - version "2.3.0" - resolved "https://registry.yarnpkg.com/timespan/-/timespan-2.3.0.tgz#4902ce040bd13d845c8f59b27e9d59bad6f39929" - integrity sha1-SQLOBAvRPYRcj1myfp1ZutbzmSk= - tmp@0.0.24: version "0.0.24" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12" @@ -3880,13 +2991,6 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@~2.3.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== - dependencies: - punycode "^1.4.1" - tough-cookie@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" @@ -3894,14 +2998,6 @@ tough-cookie@~2.3.3: dependencies: punycode "^1.4.1" -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - tree-kill@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" @@ -3931,11 +3027,6 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" integrity sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ== -tsscmp@~1.0.0: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" - integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== - tsutils@2.27.2: version "2.27.2" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" @@ -3950,23 +3041,11 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tunnel-agent@~0.4.1: - version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" - integrity sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us= - tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" @@ -3990,11 +3069,6 @@ ultron@~1.1.0: resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== -underscore@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" - integrity sha1-a7rwh3UA02vjTsqlhODbn+8DUgk= - union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" @@ -4025,6 +3099,11 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +upath@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== + urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" @@ -4040,7 +3119,7 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -useragent@^2.1.12: +useragent@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== @@ -4063,16 +3142,6 @@ uuid@^3.1.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" integrity sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g== -uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - -uws@~9.14.0: - version "9.14.0" - resolved "https://registry.yarnpkg.com/uws/-/uws-9.14.0.tgz#fac8386befc33a7a3705cbd58dc47b430ca4dd95" - integrity sha512-HNMztPP5A1sKuVFmdZ6BPVpBQd5bUjNC8EFMFiICK+oho/OQsAJy5hnIx4btMHiOk8j04f/DbIlqnEZ9d72dqg== - verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -4112,11 +3181,6 @@ webdriver-manager@^12.0.6: semver "^5.3.0" xml2js "^0.4.17" -when@^3.7.7: - version "3.7.8" - resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" - integrity sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I= - which@^1.2.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -4141,21 +3205,11 @@ window-size@^0.1.4: resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= -with-callback@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/with-callback/-/with-callback-1.0.2.tgz#a09629b9a920028d721404fb435bdcff5c91bc21" - integrity sha1-oJYpuakgAo1yFAT7Q1vc/1yRvCE= - wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -4212,16 +3266,6 @@ xmlhttprequest-ssl@~1.5.4: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= -xregexp@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" - integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= - -xtend@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= - y18n@^3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" From 346424ded6a780841f3c3fdb23ff1fdfb0141ca7 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 4 Feb 2019 14:55:11 -0800 Subject: [PATCH 0515/1134] fix regex for updating VERSION on release --- .../github.com/bazelbuild/rules_typescript/on-version.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/on-version.js b/third_party/github.com/bazelbuild/rules_typescript/on-version.js index 18dee8173f..87e3d8e7db 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/on-version.js +++ b/third_party/github.com/bazelbuild/rules_typescript/on-version.js @@ -29,7 +29,7 @@ const shell = require('shelljs'); const version = require('./package.json').version; shell.sed('-i', '\"@bazel/typescript\": \"[0-9\.]*\"', `"@bazel/typescript": "${version}"`, 'README.md'); shell.sed('-i', '\"@bazel/karma\": \"[0-9\.]*\"', `"@bazel/karma": "${version}"`, 'README.md'); -shell.sed('-i', 'VERSION \= \"[0-9\.]*\"', `VERSION = "${version}"`, 'version.bzl'); +shell.sed('-i', '^VERSION \= \"[0-9\.]*\"', `VERSION = "${version}"`, 'version.bzl'); shell.sed('-i', 'check_rules_typescript_version\\\(version_string \= \"[0-9\.]*\"', `check_rules_typescript_version(version_string = "${version}"`, 'WORKSPACE'); // Following instructions in version.bzl, we should update the minimal compatibility version whenever From c5bd8c65713c14353c858988732f6637dc5b9942 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 4 Feb 2019 14:57:29 -0800 Subject: [PATCH 0516/1134] rel: 0.23.1 --- third_party/github.com/bazelbuild/rules_typescript/README.md | 4 ++-- third_party/github.com/bazelbuild/rules_typescript/WORKSPACE | 2 +- .../github.com/bazelbuild/rules_typescript/package.json | 2 +- .../github.com/bazelbuild/rules_typescript/version.bzl | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index e334a93bb1..09dbcf59c2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -25,8 +25,8 @@ Optionally add the `@bazel/karma` npm package if you would like to use the { ... "devDependencies": { - "@bazel/typescript": "0.23.0", - "@bazel/karma": "0.23.0", + "@bazel/typescript": "0.23.1", + "@bazel/karma": "0.23.1", ... }, ... diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 2b644566e3..9427127ac8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -77,7 +77,7 @@ ts_setup_dev_workspace() # Test that check_rules_typescript_version works as expected load("//:defs.bzl", "check_rules_typescript_version") -check_rules_typescript_version(version_string = "0.23.0") +check_rules_typescript_version(version_string = "0.23.1") # Dependencies for generating documentation load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 15f4a391d7..e570a07fe9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,7 +3,7 @@ "description": "TypeScript rules for Bazel", "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", - "version": "0.23.0", + "version": "0.23.1", "keywords": [ "typescript", "bazel" diff --git a/third_party/github.com/bazelbuild/rules_typescript/version.bzl b/third_party/github.com/bazelbuild/rules_typescript/version.bzl index ec462f9699..3d4590cdb5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/version.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/version.bzl @@ -17,7 +17,7 @@ load("@build_bazel_rules_nodejs//internal/common:check_version.bzl", "check_version") -VERSION = "0.23.0" +VERSION = "0.23.1" # This version is the minimum version that is API compatible with this version # of rules_typescript. This version should be updated to equal VERSION for From 165d4974d3887074d406a07224dde790846f728e Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Mon, 4 Feb 2019 15:40:33 -0800 Subject: [PATCH 0517/1134] Fix @build_bazel_rules_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto target in npm @bazel/typescript generated bazel workspace Closes #404 PiperOrigin-RevId: 232380639 --- .../internal/e2e/npm_packages/typescript_2.7/BUILD.bazel | 4 ++++ .../internal/e2e/npm_packages/typescript_2.8/BUILD.bazel | 4 ++++ .../internal/e2e/npm_packages/typescript_2.9/BUILD.bazel | 4 ++++ .../internal/e2e/npm_packages/typescript_3.0/BUILD.bazel | 4 ++++ .../internal/e2e/npm_packages/typescript_3.1/BUILD.bazel | 4 ++++ .../bazelbuild/bazel/src/main/protobuf/BUILD.bazel | 7 +++++++ 6 files changed, 27 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel index db3403d95c..e7cccf4619 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel @@ -34,6 +34,10 @@ ts_library( jasmine_node_test( name = "test", + data = [ + # Verify that worker_protocol.proto can be referenced as a target in the generated npm bazel workspace + "@build_bazel_rules_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", + ], deps = [ ":test_lib", "@npm//jasmine", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/BUILD.bazel index db3403d95c..e7cccf4619 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/BUILD.bazel @@ -34,6 +34,10 @@ ts_library( jasmine_node_test( name = "test", + data = [ + # Verify that worker_protocol.proto can be referenced as a target in the generated npm bazel workspace + "@build_bazel_rules_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", + ], deps = [ ":test_lib", "@npm//jasmine", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/BUILD.bazel index db3403d95c..e7cccf4619 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/BUILD.bazel @@ -34,6 +34,10 @@ ts_library( jasmine_node_test( name = "test", + data = [ + # Verify that worker_protocol.proto can be referenced as a target in the generated npm bazel workspace + "@build_bazel_rules_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", + ], deps = [ ":test_lib", "@npm//jasmine", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/BUILD.bazel index db3403d95c..e7cccf4619 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/BUILD.bazel @@ -34,6 +34,10 @@ ts_library( jasmine_node_test( name = "test", + data = [ + # Verify that worker_protocol.proto can be referenced as a target in the generated npm bazel workspace + "@build_bazel_rules_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", + ], deps = [ ":test_lib", "@npm//jasmine", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/BUILD.bazel index db3403d95c..e7cccf4619 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/BUILD.bazel @@ -34,6 +34,10 @@ ts_library( jasmine_node_test( name = "test", + data = [ + # Verify that worker_protocol.proto can be referenced as a target in the generated npm bazel workspace + "@build_bazel_rules_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", + ], deps = [ ":test_lib", "@npm//jasmine", diff --git a/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel index 38af0d0ae6..24a43bf83f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel @@ -1,13 +1,18 @@ +# BEGIN-DEV-ONLY +# Parts of this BUILD file only necessary when building within the bazelbuild/rules_typescript repo. +# The generated `@bazel/typescript` npm package contains a trimmed BUILD file using # DEV-ONLY fences. load("@io_bazel_rules_go//go:def.bzl", "go_library") load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") package(default_visibility = ["//:__pkg__"]) licenses(["notice"]) # Apache 2.0 +# END-DEV-ONLY # Export the raw proto file so protobufjs can be used reflectively without codegen exports_files(["worker_protocol.proto"]) +# BEGIN-DEV-ONLY proto_library( name = "blaze_worker_proto", srcs = ["worker_protocol.proto"], @@ -31,6 +36,8 @@ go_library( filegroup( name = "npm_package_assets", srcs = [ + "BUILD.bazel", "worker_protocol.proto", ], ) +# END-DEV-ONLY From 2111504227af27c1ffe141c4493597372b7f87fc Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 4 Feb 2019 15:41:59 -0800 Subject: [PATCH 0518/1134] rel: 0.23.2 --- third_party/github.com/bazelbuild/rules_typescript/README.md | 4 ++-- third_party/github.com/bazelbuild/rules_typescript/WORKSPACE | 2 +- .../github.com/bazelbuild/rules_typescript/package.json | 2 +- .../github.com/bazelbuild/rules_typescript/version.bzl | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 09dbcf59c2..7ee8109c18 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -25,8 +25,8 @@ Optionally add the `@bazel/karma` npm package if you would like to use the { ... "devDependencies": { - "@bazel/typescript": "0.23.1", - "@bazel/karma": "0.23.1", + "@bazel/typescript": "0.23.2", + "@bazel/karma": "0.23.2", ... }, ... diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 9427127ac8..489d674e95 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -77,7 +77,7 @@ ts_setup_dev_workspace() # Test that check_rules_typescript_version works as expected load("//:defs.bzl", "check_rules_typescript_version") -check_rules_typescript_version(version_string = "0.23.1") +check_rules_typescript_version(version_string = "0.23.2") # Dependencies for generating documentation load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index e570a07fe9..fc1d4fb567 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,7 +3,7 @@ "description": "TypeScript rules for Bazel", "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", - "version": "0.23.1", + "version": "0.23.2", "keywords": [ "typescript", "bazel" diff --git a/third_party/github.com/bazelbuild/rules_typescript/version.bzl b/third_party/github.com/bazelbuild/rules_typescript/version.bzl index 3d4590cdb5..d2bc5506fe 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/version.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/version.bzl @@ -17,7 +17,7 @@ load("@build_bazel_rules_nodejs//internal/common:check_version.bzl", "check_version") -VERSION = "0.23.1" +VERSION = "0.23.2" # This version is the minimum version that is API compatible with this version # of rules_typescript. This version should be updated to equal VERSION for From 7b92b1c8d413a6ae9883e1f4e3b8774d23545262 Mon Sep 17 00:00:00 2001 From: radokirov Date: Tue, 5 Feb 2019 15:08:58 -0800 Subject: [PATCH 0519/1134] Add a list of the current available rules at tsetse.info. PiperOrigin-RevId: 232566676 --- .../github.com/bazelbuild/rules_typescript/README.md | 4 ++-- .../github.com/bazelbuild/rules_typescript/WORKSPACE | 2 +- .../github.com/bazelbuild/rules_typescript/docs/index.md | 8 ++++++++ .../github.com/bazelbuild/rules_typescript/package.json | 2 +- .../github.com/bazelbuild/rules_typescript/version.bzl | 2 +- 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 7ee8109c18..09dbcf59c2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -25,8 +25,8 @@ Optionally add the `@bazel/karma` npm package if you would like to use the { ... "devDependencies": { - "@bazel/typescript": "0.23.2", - "@bazel/karma": "0.23.2", + "@bazel/typescript": "0.23.1", + "@bazel/karma": "0.23.1", ... }, ... diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 489d674e95..9427127ac8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -77,7 +77,7 @@ ts_setup_dev_workspace() # Test that check_rules_typescript_version works as expected load("//:defs.bzl", "check_rules_typescript_version") -check_rules_typescript_version(version_string = "0.23.2") +check_rules_typescript_version(version_string = "0.23.1") # Dependencies for generating documentation load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/index.md b/third_party/github.com/bazelbuild/rules_typescript/docs/index.md index ee00762dbe..ef521eb3e4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/index.md +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/index.md @@ -41,3 +41,11 @@ $ bazel build :all mycode.ts(2,1): error TS21222: return value is unused. See http://tsetse.info/check-return-value ``` + +## Rules + +* [Ban expect truthy promise](./ban-expect-truthy-promise) +* [Ban promise as condition](./ban-promise-as-condition) +* [Check return value](./check-return-value) +* [Equals NaN](./equals-nan) +* [Must use promises](./must-use-promises) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index fc1d4fb567..e570a07fe9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,7 +3,7 @@ "description": "TypeScript rules for Bazel", "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", - "version": "0.23.2", + "version": "0.23.1", "keywords": [ "typescript", "bazel" diff --git a/third_party/github.com/bazelbuild/rules_typescript/version.bzl b/third_party/github.com/bazelbuild/rules_typescript/version.bzl index d2bc5506fe..3d4590cdb5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/version.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/version.bzl @@ -17,7 +17,7 @@ load("@build_bazel_rules_nodejs//internal/common:check_version.bzl", "check_version") -VERSION = "0.23.2" +VERSION = "0.23.1" # This version is the minimum version that is API compatible with this version # of rules_typescript. This version should be updated to equal VERSION for From 009a1e4b44b287bcd3830c1d274eb19728882c37 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Wed, 6 Feb 2019 08:42:12 -0800 Subject: [PATCH 0520/1134] Call ngtsc when registered as a tsc_wrapped plugin. PiperOrigin-RevId: 232681550 --- .../rules_typescript/internal/build_defs.bzl | 3 + .../internal/common/tsconfig.bzl | 3 + .../internal/tsc_wrapped/tsc_wrapped.ts | 93 +++++++++++++++---- .../internal/tsc_wrapped/tsconfig.ts | 6 ++ 4 files changed, 88 insertions(+), 17 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index fbf93d4dcc..b300f906c7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -341,6 +341,9 @@ ts_library = rule( """, default = Label("@npm//typescript:typescript__typings"), ), + "compile_angular_templates": attr.bool( + doc = """Run the Angular ngtsc compiler under ts_library""", + ), "supports_workers": attr.bool( doc = """Intended for internal use only. Allows you to disable the Bazel Worker strategy for this library. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 0b1fcda676..349dc6f94c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -155,6 +155,9 @@ def create_tsconfig( "expectedDiagnostics": getattr(ctx.attr, "expected_diagnostics", []), } + if hasattr(ctx.attr, "compile_angular_templates") and ctx.attr.compile_angular_templates: + bazel_options["compileAngularTemplates"] = True + if disable_strict_deps: bazel_options["disableStrictDeps"] = disable_strict_deps bazel_options["allowedStrictDeps"] = [] diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 983ac78863..9aa747382e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -10,6 +10,7 @@ import {CompilerHost} from './compiler_host'; import * as bazelDiagnostics from './diagnostics'; import {constructManifest} from './manifest'; import * as perfTrace from './perf_trace'; +import {PluginCompilerHost, TscPlugin} from './plugin_api'; import {PLUGIN as strictDepsPlugin} from './strict_deps'; import {BazelOptions, parseTsconfig, resolveNormalizedPath} from './tsconfig'; import {debug, log, runAsWorker, runWorkerLoop} from './worker'; @@ -47,7 +48,7 @@ function isCompilationTarget( */ export function gatherDiagnostics( options: ts.CompilerOptions, bazelOpts: BazelOptions, program: ts.Program, - disabledTsetseRules: string[]): ts.Diagnostic[] { + disabledTsetseRules: string[], angularPlugin?: TscPlugin): ts.Diagnostic[] { // Install extra diagnostic plugins if (!bazelOpts.disableStrictDeps) { const ignoredFilesPrefixes: string[] = []; @@ -73,8 +74,9 @@ export function gatherDiagnostics( let selectedTsetsePlugin = bazelConformancePlugin; program = selectedTsetsePlugin.wrap(program, disabledTsetseRules); } - - // TODO(alexeagle): support plugins registered by config + if (angularPlugin) { + program = angularPlugin.wrap(program); + } const diagnostics: ts.Diagnostic[] = []; perfTrace.wrap('type checking', () => { @@ -129,7 +131,13 @@ function runOneBuild( throw new Error( 'Impossible state: if parseTsconfig returns no errors, then parsed should be non-null'); } - const {options, bazelOpts, files, disabledTsetseRules} = parsed; + const { + options, + bazelOpts, + files, + disabledTsetseRules, + angularCompilerOptions + } = parsed; if (bazelOpts.maxCacheSizeMb !== undefined) { const maxCacheSizeBytes = bazelOpts.maxCacheSizeMb * (1 << 20); @@ -154,14 +162,16 @@ function runOneBuild( const perfTracePath = bazelOpts.perfTracePath; if (!perfTracePath) { return runFromOptions( - fileLoader, options, bazelOpts, files, disabledTsetseRules); + fileLoader, options, bazelOpts, files, disabledTsetseRules, + angularCompilerOptions); } log('Writing trace to', perfTracePath); const success = perfTrace.wrap( 'runOneBuild', () => runFromOptions( - fileLoader, options, bazelOpts, files, disabledTsetseRules)); + fileLoader, options, bazelOpts, files, disabledTsetseRules, + angularCompilerOptions)); if (!success) return false; // Force a garbage collection pass. This keeps our memory usage // consistent across multiple compilations, and allows the file @@ -182,20 +192,47 @@ const expectDiagnosticsWhitelist: string[] = [ function runFromOptions( fileLoader: FileLoader, options: ts.CompilerOptions, - bazelOpts: BazelOptions, files: string[], - disabledTsetseRules: string[]): boolean { + bazelOpts: BazelOptions, files: string[], disabledTsetseRules: string[], + angularCompilerOptions?: {[key: string]: unknown}): boolean { perfTrace.snapshotMemoryUsage(); cache.resetStats(); cache.traceStats(); + const compilerHostDelegate = ts.createCompilerHost({target: ts.ScriptTarget.ES5}); const moduleResolver = bazelOpts.isJsTranspilation ? makeJsModuleResolver(bazelOpts.workspaceName) : ts.resolveModuleName; - const compilerHost = new CompilerHost( + const tsickleCompilerHost: CompilerHost = new CompilerHost( files, options, bazelOpts, compilerHostDelegate, fileLoader, moduleResolver); + let compilerHost: PluginCompilerHost = tsickleCompilerHost; + + let angularPlugin: TscPlugin|undefined; + if (bazelOpts.compileAngularTemplates) { + try { + const ngOptions = angularCompilerOptions || {}; + // Add the rootDir setting to the options passed to NgTscPlugin. + // Required so that synthetic files added to the rootFiles in the program + // can be given absolute paths, just as we do in tsconfig.ts, matching + // the behavior in TypeScript's tsconfig parsing logic. + ngOptions['rootDir'] = options.rootDir; + + // Dynamically load the Angular compiler installed as a peerDep + const ngtsc = require('@angular/compiler-cli'); + angularPlugin = new ngtsc.NgTscPlugin(ngOptions); + } catch (e) { + console.error(e); + throw new Error( + 'when using `ts_library(compile_angular_templates=True)`, ' + + 'you must install @angular/compiler-cli'); + } + + // Wrap host only needed until after Ivy cleanup + // TODO(alexeagle): remove after ngsummary and ngfactory files eliminated + compilerHost = angularPlugin!.wrapHost!(files, compilerHost); + } const oldProgram = cache.getProgram(bazelOpts.target); @@ -209,8 +246,8 @@ function runFromOptions( // If there are any TypeScript type errors abort now, so the error // messages refer to the original source. After any subsequent passes // (decorator downleveling or tsickle) we do not type check. - let diagnostics = - gatherDiagnostics(options, bazelOpts, program, disabledTsetseRules); + let diagnostics = gatherDiagnostics( + options, bazelOpts, program, disabledTsetseRules, angularPlugin); if (!expectDiagnosticsWhitelist.length || expectDiagnosticsWhitelist.some(p => bazelOpts.target.startsWith(p))) { diagnostics = bazelDiagnostics.filterExpected( @@ -235,11 +272,22 @@ function runFromOptions( let diagnostics: ts.Diagnostic[] = []; let useTsickleEmit = bazelOpts.tsickle; + let transforms: ts.CustomTransformers = { + before: [], + after: [], + afterDeclarations: [], + }; + + if (angularPlugin) { + transforms = angularPlugin.createTransformers!(compilerHost); + } + if (useTsickleEmit) { diagnostics = emitWithTsickle( - program, compilerHost, compilationTargets, options, bazelOpts); + program, tsickleCompilerHost, compilationTargets, options, bazelOpts, + transforms); } else { - diagnostics = emitWithTypescript(program, compilationTargets); + diagnostics = emitWithTypescript(program, compilationTargets, transforms); } if (diagnostics.length > 0) { @@ -253,10 +301,14 @@ function runFromOptions( } function emitWithTypescript( - program: ts.Program, compilationTargets: ts.SourceFile[]): ts.Diagnostic[] { + program: ts.Program, compilationTargets: ts.SourceFile[], + transforms: ts.CustomTransformers): ts.Diagnostic[] { const diagnostics: ts.Diagnostic[] = []; for (const sf of compilationTargets) { - const result = program.emit(sf); + const result = program.emit( + sf, /*writeFile*/ undefined, + /*cancellationToken*/ undefined, /*emitOnlyDtsFiles*/ undefined, + transforms); diagnostics.push(...result.diagnostics); } return diagnostics; @@ -272,7 +324,8 @@ function emitWithTypescript( export function emitWithTsickle( program: ts.Program, compilerHost: CompilerHost, compilationTargets: ts.SourceFile[], options: ts.CompilerOptions, - bazelOpts: BazelOptions): ts.Diagnostic[] { + bazelOpts: BazelOptions, + transforms: ts.CustomTransformers): ts.Diagnostic[] { const emitResults: tsickle.EmitResult[] = []; const diagnostics: ts.Diagnostic[] = []; // The 'tsickle' import above is only used in type positions, so it won't @@ -295,7 +348,13 @@ export function emitWithTsickle( for (const sf of compilationTargets) { perfTrace.wrap(`emit ${sf.fileName}`, () => { emitResults.push(optTsickle.emitWithTsickle( - program, compilerHost, compilerHost, options, sf)); + program, compilerHost, compilerHost, options, sf, + /*writeFile*/ undefined, + /*cancellationToken*/ undefined, /*emitOnlyDtsFiles*/ undefined, { + beforeTs: transforms.before, + afterTs: transforms.after, + afterDeclarations: transforms.afterDeclarations, + })); }); } }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index 076439c0de..060b5ff8dd 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -156,11 +156,17 @@ export interface BazelOptions { * compilation unit. */ hasImplementation?: boolean; + + /** + * Enable the Angular ngtsc plugin. + */ + compileAngularTemplates?: boolean; } export interface ParsedTsConfig { options: ts.CompilerOptions; bazelOpts: BazelOptions; + angularCompilerOptions?: {[k: string]: unknown}; files: string[]; disabledTsetseRules: string[]; config: {}; From 5ee446a85d5787b0496c3cbd7cf29f3b822fed93 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Wed, 6 Feb 2019 10:18:16 -0800 Subject: [PATCH 0521/1134] Fix lint Closes #405 PiperOrigin-RevId: 232697351 --- .../bazelbuild/rules_typescript/internal/build_defs.bzl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index b300f906c7..ef73fa2a92 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -260,6 +260,9 @@ ts_library = rule( allow_files = [".ts", ".tsx"], mandatory = True, ), + "compile_angular_templates": attr.bool( + doc = """Run the Angular ngtsc compiler under ts_library""", + ), "compiler": attr.label( doc = """Sets a different TypeScript compiler binary to use for this library. For example, we use the vanilla TypeScript tsc.js for bootstrapping, @@ -341,9 +344,6 @@ ts_library = rule( """, default = Label("@npm//typescript:typescript__typings"), ), - "compile_angular_templates": attr.bool( - doc = """Run the Angular ngtsc compiler under ts_library""", - ), "supports_workers": attr.bool( doc = """Intended for internal use only. Allows you to disable the Bazel Worker strategy for this library. From 7830d922f29373af9ba8c8c488c70a5167aaf1a5 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Wed, 6 Feb 2019 10:26:00 -0800 Subject: [PATCH 0522/1134] rel: 0.23.3 --- third_party/github.com/bazelbuild/rules_typescript/README.md | 4 ++-- third_party/github.com/bazelbuild/rules_typescript/WORKSPACE | 2 +- .../github.com/bazelbuild/rules_typescript/package.json | 2 +- .../github.com/bazelbuild/rules_typescript/version.bzl | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 09dbcf59c2..93d21e9441 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -25,8 +25,8 @@ Optionally add the `@bazel/karma` npm package if you would like to use the { ... "devDependencies": { - "@bazel/typescript": "0.23.1", - "@bazel/karma": "0.23.1", + "@bazel/typescript": "0.23.3", + "@bazel/karma": "0.23.3", ... }, ... diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 9427127ac8..acb4497a09 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -77,7 +77,7 @@ ts_setup_dev_workspace() # Test that check_rules_typescript_version works as expected load("//:defs.bzl", "check_rules_typescript_version") -check_rules_typescript_version(version_string = "0.23.1") +check_rules_typescript_version(version_string = "0.23.3") # Dependencies for generating documentation load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index e570a07fe9..6fc1cd9ce8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,7 +3,7 @@ "description": "TypeScript rules for Bazel", "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", - "version": "0.23.1", + "version": "0.23.3", "keywords": [ "typescript", "bazel" diff --git a/third_party/github.com/bazelbuild/rules_typescript/version.bzl b/third_party/github.com/bazelbuild/rules_typescript/version.bzl index 3d4590cdb5..50cee429c8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/version.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/version.bzl @@ -17,7 +17,7 @@ load("@build_bazel_rules_nodejs//internal/common:check_version.bzl", "check_version") -VERSION = "0.23.1" +VERSION = "0.23.3" # This version is the minimum version that is API compatible with this version # of rules_typescript. This version should be updated to equal VERSION for From 8f10dd16bd59b8b07da07f3e9576ec18748d0ce4 Mon Sep 17 00:00:00 2001 From: Fabian Wiles Date: Wed, 6 Feb 2019 14:12:54 -0800 Subject: [PATCH 0523/1134] feat(ts_library): bump default target to es2015 Closes #406 PiperOrigin-RevId: 232743893 --- .../examples/devmode_consumer/BUILD.bazel | 15 +++++++++++++++ .../devmode_consumer.bzl} | 8 ++++---- .../devmode_consumer_test.sh} | 7 +++++++ .../examples/es5_output/BUILD.bazel | 15 --------------- .../examples/googmodule/BUILD.bazel | 8 ++++---- .../rules_typescript/internal/build_defs.bzl | 4 ++++ 6 files changed, 34 insertions(+), 23 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/BUILD.bazel rename third_party/github.com/bazelbuild/rules_typescript/examples/{es5_output/es5_consumer.bzl => devmode_consumer/devmode_consumer.bzl} (89%) rename third_party/github.com/bazelbuild/rules_typescript/examples/{es5_output/es5_output_test.sh => devmode_consumer/devmode_consumer_test.sh} (95%) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/BUILD.bazel new file mode 100644 index 0000000000..78d6a463a1 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/BUILD.bazel @@ -0,0 +1,15 @@ +load(":devmode_consumer.bzl", "devmode_consumer") + +devmode_consumer( + name = "devmode_consumer", + deps = ["//examples:bar_ts_library"], +) + +sh_test( + name = "devmode_consumer_test", + srcs = ["devmode_consumer_test.sh"], + data = [ + ":devmode_consumer", + "@bazel_tools//tools/bash/runfiles", + ], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_consumer.bzl b/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer.bzl similarity index 89% rename from third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_consumer.bzl rename to third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer.bzl index 05d406c774..0d29ca92c0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_consumer.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer.bzl @@ -12,12 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Example of a rule that requires ES5 (devmode) inputs. +"""Example of a rule that requires es2015 (devmode) inputs. """ load("@build_bazel_rules_nodejs//internal:node.bzl", "sources_aspect") -def _es5_consumer(ctx): +def _devmode_consumer(ctx): files = depset() # Since we apply the sources_aspect to our deps below, we can iterate through @@ -32,8 +32,8 @@ def _es5_consumer(ctx): runfiles = ctx.runfiles(files.to_list()), )] -es5_consumer = rule( - implementation = _es5_consumer, +devmode_consumer = rule( + implementation = _devmode_consumer, attrs = { "deps": attr.label_list(aspects = [sources_aspect]), }, diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_output_test.sh b/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer_test.sh similarity index 95% rename from third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_output_test.sh rename to third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer_test.sh index ab58ce5922..096f4d55a4 100755 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/es5_output_test.sh +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer_test.sh @@ -79,3 +79,10 @@ if [[ "$FOO_JS" != *"define(\"build_bazel_rules_typescript/examples/foo\""* ]]; echo "$FOO_JS" exit 1 fi + +# should produce es2015 classes +if [[ "$FOO_JS" != *"class Greeter"* ]]; then + echo "Expected foo.js produce a es2015, but was" + echo "$FOO_JS" + exit 1 +fi \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/BUILD.bazel deleted file mode 100644 index 5bc709f8dc..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/es5_output/BUILD.bazel +++ /dev/null @@ -1,15 +0,0 @@ -load(":es5_consumer.bzl", "es5_consumer") - -es5_consumer( - name = "es5_output", - deps = ["//examples:bar_ts_library"], -) - -sh_test( - name = "es5_output_test", - srcs = ["es5_output_test.sh"], - data = [ - ":es5_output", - "@bazel_tools//tools/bash/runfiles", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/BUILD.bazel index 6bc149c652..efaa52e7db 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/BUILD.bazel @@ -1,5 +1,5 @@ load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") -load("//examples/es5_output:es5_consumer.bzl", "es5_consumer") +load("//examples/devmode_consumer:devmode_consumer.bzl", "devmode_consumer") load("//internal:defaults.bzl", "ts_library") ts_library( @@ -8,8 +8,8 @@ ts_library( tsconfig = "tsconfig.json", ) -es5_consumer( - name = "es5_output", +devmode_consumer( + name = "devmode_output", deps = [":googmodule"], ) @@ -17,7 +17,7 @@ jasmine_node_test( name = "googmodule_output_test", srcs = ["googmodule_output_test.js"], data = [ - ":es5_output", + ":devmode_output", "@npm//jasmine", ], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index ef73fa2a92..fb22d2a805 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -188,6 +188,10 @@ def tsc_wrapped_tsconfig( ) config["bazelOptions"]["nodeModulesPrefix"] = node_modules_root + # Override the target so we use es2015 for devmode + # Since g3 isn't ready to do this yet + config["compilerOptions"]["target"] = "es2015" + # If the user gives a tsconfig attribute, the generated file should extend # from the user's tsconfig. # See https://github.com/Microsoft/TypeScript/issues/9876 From 4fcf1b4e93b1755783beac0a0c16c0527877e02d Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 7 Feb 2019 10:19:49 -0800 Subject: [PATCH 0524/1134] Fix issue with module_root when building external repo Closes #242 Closes #249 PiperOrigin-RevId: 232897910 --- .../rules_typescript/.bazelci/presubmit.yml | 3 +++ .../internal/common/module_mappings.bzl | 12 ++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml index fef676048d..f587cc9162 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml @@ -19,6 +19,9 @@ platforms: build_targets: - "..." - "@disable_tsetse_for_external_test//..." + # Run some targets again, but addressed as an external repo + # TODO(alexeagle): run all of them after fixing https://github.com/bazelbuild/rules_typescript/issues/243 + - "@build_bazel_rules_typescript//examples/some_library:lib" test_flags: # TODO(gregmagolan): shared libs needed by chrome & firefox not available on ubuntu1604 - "--test_tag_filters=-browser:chromium-local,-browser:firefox-local" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl index a28b32793c..b74e5b80c3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/module_mappings.bzl @@ -90,9 +90,17 @@ def get_module_mappings(label, attrs, srcs = [], workspace_name = None, mappings else: for s in srcs: - if not s.short_path.startswith(mr): + short_path = s.short_path + + # Execroot paths for external repositories should start with external/ + # But the short_path property of file gives the relative path from our workspace + # instead. We must correct this to compare with the module_root which is an + # execroot path. + if short_path.startswith("../"): + short_path = "external/" + short_path[3:] + if not short_path.startswith(mr): fail(("all sources must be under module root: %s, but found: %s" % - (mr, s.short_path))) + (mr, short_path))) if mn in mappings and mappings[mn] != mr: fail(("duplicate module mapping at %s: %s maps to both %s and %s" % (label, mn, mappings[mn], mr)), "deps") From 64feabc79220558a11d7144673a9dfe53c0e6885 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 7 Feb 2019 13:38:58 -0800 Subject: [PATCH 0525/1134] Prepare for next rules_nodejs release by updating usages of deprecated internal/node.bzl Closes #407 PiperOrigin-RevId: 232936088 --- .../examples/devmode_consumer/devmode_consumer.bzl | 2 +- .../rules_typescript/examples/es6_output/es6_consumer.bzl | 2 +- .../rules_typescript/internal/devserver/ts_devserver.bzl | 5 +---- .../rules_typescript/internal/karma/karma_web_test.bzl | 7 ++----- .../rules_typescript/internal/karma/web_test.bzl | 2 +- .../github.com/bazelbuild/rules_typescript/package.bzl | 2 ++ 6 files changed, 8 insertions(+), 12 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer.bzl b/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer.bzl index 0d29ca92c0..b23a4b421d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer.bzl @@ -15,7 +15,7 @@ """Example of a rule that requires es2015 (devmode) inputs. """ -load("@build_bazel_rules_nodejs//internal:node.bzl", "sources_aspect") +load("@build_bazel_rules_nodejs//internal/common:sources_aspect.bzl", "sources_aspect") def _devmode_consumer(ctx): files = depset() diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_consumer.bzl b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_consumer.bzl index 2e4e824fd1..16726baf67 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_consumer.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_consumer.bzl @@ -15,7 +15,7 @@ """Example of a rule that requires ES6 inputs. """ -load("@build_bazel_rules_nodejs//internal:collect_es6_sources.bzl", "collect_es6_sources") +load("@build_bazel_rules_nodejs//internal/common:collect_es6_sources.bzl", "collect_es6_sources") def _es6_consumer(ctx): es6_sources = collect_es6_sources(ctx) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl index 0667c98f30..3fd9519e0d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl @@ -14,6 +14,7 @@ "Simple development server" +load("@build_bazel_rules_nodejs//internal/common:sources_aspect.bzl", "sources_aspect") load( "@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "write_amd_names_shim", @@ -22,10 +23,6 @@ load( "@build_bazel_rules_nodejs//internal/web_package:web_package.bzl", "html_asset_inject", ) -load( - "@build_bazel_rules_nodejs//internal:node.bzl", - "sources_aspect", -) def _ts_devserver(ctx): files = depset() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl index 28526d7305..b1bab2d5dc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl @@ -13,12 +13,9 @@ # limitations under the License. "Unit testing with Karma" +load("@build_bazel_rules_nodejs//internal/common:expand_into_runfiles.bzl", "expand_path_into_runfiles") +load("@build_bazel_rules_nodejs//internal/common:sources_aspect.bzl", "sources_aspect") load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "write_amd_names_shim") -load( - "@build_bazel_rules_nodejs//internal:node.bzl", - "expand_path_into_runfiles", - "sources_aspect", -) load("@io_bazel_rules_webtesting//web/internal:constants.bzl", "DEFAULT_WRAPPED_TEST_TAGS") load("@io_bazel_rules_webtesting//web:web.bzl", "web_test_suite") load(":web_test.bzl", "COMMON_WEB_TEST_ATTRS") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/web_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/web_test.bzl index b40d4e08dd..7ebb58b259 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/web_test.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/web_test.bzl @@ -13,7 +13,7 @@ # limitations under the License. "Common web_test attributes" -load("@build_bazel_rules_nodejs//internal:node.bzl", "sources_aspect") +load("@build_bazel_rules_nodejs//internal/common:sources_aspect.bzl", "sources_aspect") # Attributes shared by any web_test rule (ts_web_test, karma_web_test, protractor_web_test) COMMON_WEB_TEST_ATTRS = { diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index ab74c6713c..a0746fe32b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -31,6 +31,8 @@ def rules_typescript_dev_dependencies(): These are in this file to keep version information in one place, and make the WORKSPACE shorter. + + Also this allows other repos to reference our sources with local_repository and install the needed deps. """ _maybe( From e7b7ba28307088291a3f73ec459766c9054a1c02 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 7 Feb 2019 13:41:57 -0800 Subject: [PATCH 0526/1134] rel: 0.24.0 --- third_party/github.com/bazelbuild/rules_typescript/README.md | 4 ++-- third_party/github.com/bazelbuild/rules_typescript/WORKSPACE | 2 +- .../github.com/bazelbuild/rules_typescript/package.json | 2 +- .../github.com/bazelbuild/rules_typescript/version.bzl | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 93d21e9441..3ee4c16072 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -25,8 +25,8 @@ Optionally add the `@bazel/karma` npm package if you would like to use the { ... "devDependencies": { - "@bazel/typescript": "0.23.3", - "@bazel/karma": "0.23.3", + "@bazel/typescript": "0.24.0", + "@bazel/karma": "0.24.0", ... }, ... diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index acb4497a09..5f821778ba 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -77,7 +77,7 @@ ts_setup_dev_workspace() # Test that check_rules_typescript_version works as expected load("//:defs.bzl", "check_rules_typescript_version") -check_rules_typescript_version(version_string = "0.23.3") +check_rules_typescript_version(version_string = "0.24.0") # Dependencies for generating documentation load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 6fc1cd9ce8..f416c522f8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,7 +3,7 @@ "description": "TypeScript rules for Bazel", "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", - "version": "0.23.3", + "version": "0.24.0", "keywords": [ "typescript", "bazel" diff --git a/third_party/github.com/bazelbuild/rules_typescript/version.bzl b/third_party/github.com/bazelbuild/rules_typescript/version.bzl index 50cee429c8..2584db8089 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/version.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/version.bzl @@ -17,12 +17,12 @@ load("@build_bazel_rules_nodejs//internal/common:check_version.bzl", "check_version") -VERSION = "0.23.3" +VERSION = "0.24.0" # This version is the minimum version that is API compatible with this version # of rules_typescript. This version should be updated to equal VERSION for # releases with breaking changes and/or new features. -COMPAT_VERSION = "0.23.0" +COMPAT_VERSION = "0.24.0" def check_rules_typescript_version(version_string): """ From cccb2466914675100970485d7b5b966b435f7827 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Fri, 8 Feb 2019 18:26:51 +0000 Subject: [PATCH 0527/1134] Check existing dependencies for ambient module declarations. PiperOrigin-RevId: 233083308 --- .../bazelbuild/rules_typescript/README.md | 4 +- .../bazelbuild/rules_typescript/WORKSPACE | 2 +- .../bazelbuild/rules_typescript/package.json | 2 +- .../ts_auto_deps/analyze/analyze.go | 53 ++++++++++++++++--- .../bazelbuild/rules_typescript/version.bzl | 4 +- 5 files changed, 53 insertions(+), 12 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 3ee4c16072..93d21e9441 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -25,8 +25,8 @@ Optionally add the `@bazel/karma` npm package if you would like to use the { ... "devDependencies": { - "@bazel/typescript": "0.24.0", - "@bazel/karma": "0.24.0", + "@bazel/typescript": "0.23.3", + "@bazel/karma": "0.23.3", ... }, ... diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 5f821778ba..acb4497a09 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -77,7 +77,7 @@ ts_setup_dev_workspace() # Test that check_rules_typescript_version works as expected load("//:defs.bzl", "check_rules_typescript_version") -check_rules_typescript_version(version_string = "0.24.0") +check_rules_typescript_version(version_string = "0.23.3") # Dependencies for generating documentation load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index f416c522f8..6fc1cd9ce8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,7 +3,7 @@ "description": "TypeScript rules for Bazel", "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", - "version": "0.24.0", + "version": "0.23.3", "keywords": [ "typescript", "bazel" diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go index 644110a2c2..0960b57900 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go @@ -7,6 +7,7 @@ import ( "fmt" "os" "path/filepath" + "regexp" "strings" "github.com/bazelbuild/buildtools/edit" @@ -327,7 +328,7 @@ func (a *Analyzer) resolveImports(ctx context.Context, currentPkg, root string, continue handlingImports } } - d, err := a.findRuleProvidingImport(target.dependencies, imp) + d, err := a.findExistingDepProvidingImport(ctx, target.dependencies, imp) if err != nil { return err } @@ -368,22 +369,27 @@ func pathWithExtensions(basename string) []string { return paths } -// findRuleProvidingImport looks through a map of loaded rules for a rule -// which can provide the passed import. +var ambientModuleDeclRE = regexp.MustCompile("(?m)^\\s*declare\\s+module\\s+['\"]([^'\"]+)['\"]\\s+\\{") + +// findExistingDepProvidingImport looks through a map of the existing deps to +// see if any of them provide the import in a way that can't be queried +// for. E.g. if the build rule has a "module_name" attribute or if one +// of the .d.ts sources has an ambient module declaration. // // If the import already has a knownTarget, findRuleProvidingImport will // return the knownTarget. -func (a *Analyzer) findRuleProvidingImport(rules map[string]*appb.Rule, i *ts_auto_depsImport) (string, error) { +func (a *Analyzer) findExistingDepProvidingImport(ctx context.Context, rules map[string]*appb.Rule, i *ts_auto_depsImport) (string, error) { if i.knownTarget != "" { return i.knownTarget, nil } + + // check if any of the existing deps declare a module_name that matches the import for _, r := range rules { moduleName := stringAttribute(r, "module_name") if moduleName == "" { continue } - srcs := listAttribute(r, "srcs") - for _, src := range srcs { + for _, src := range listAttribute(r, "srcs") { _, _, file := edit.ParseLabel(src) moduleImportPath := moduleName + "/" + stripTSExtension(file) if i.importPath == moduleImportPath || i.importPath == strings.TrimSuffix(moduleImportPath, "/index") { @@ -391,6 +397,41 @@ func (a *Analyzer) findRuleProvidingImport(rules map[string]*appb.Rule, i *ts_au } } } + + // check if any of the existing deps have .d.ts sources which have ambient module + // declarations + for _, r := range rules { + for _, src := range listAttribute(r, "srcs") { + filepath := labelToPath(src) + if !strings.HasSuffix(filepath, ".d.ts") { + continue + } + + contents, err := platform.ReadFile(ctx, filepath) + if err != nil { + return "", fmt.Errorf("error reading file lookinf for ambient module decls: %s", err) + } + + matches := ambientModuleDeclRE.FindAllStringSubmatch(string(contents), -1) + + // put all the ambient modules into a set + declaredModules := make(map[string]bool) + for _, match := range matches { + declaredModules[match[1]] = true + } + + // remove all the modules that were imported (ie all the modules that + // were being augmented/re-opened) + for _, mi := range parseImports(filepath, contents) { + delete(declaredModules, mi.importPath) + } + + if declaredModules[i.importPath] { + debugf("found import %s in ambient module declaration in %s", i.importPath, r.GetName()) + return r.GetName(), nil + } + } + } return "", nil } diff --git a/third_party/github.com/bazelbuild/rules_typescript/version.bzl b/third_party/github.com/bazelbuild/rules_typescript/version.bzl index 2584db8089..50cee429c8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/version.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/version.bzl @@ -17,12 +17,12 @@ load("@build_bazel_rules_nodejs//internal/common:check_version.bzl", "check_version") -VERSION = "0.24.0" +VERSION = "0.23.3" # This version is the minimum version that is API compatible with this version # of rules_typescript. This version should be updated to equal VERSION for # releases with breaking changes and/or new features. -COMPAT_VERSION = "0.24.0" +COMPAT_VERSION = "0.23.0" def check_rules_typescript_version(version_string): """ From d988a2c85e0fd440692188ce40b7d493358eaf0f Mon Sep 17 00:00:00 2001 From: lucassloan Date: Fri, 8 Feb 2019 18:28:37 +0000 Subject: [PATCH 0528/1134] Improve handling of import paths versus file paths. There isn't a one to one mapping of ts import paths to file paths. A import path of "google3/foo/bar" could be from "foo/bar.ts" or "foo/bar.d.ts" or foo/bar/index.ts" or several others. The query-based analyzer has to issue a query looking for all the possible files for an import, then match the files found to the import path. This cl improves the matching from found files back to import paths by consistently using a single function to generate all the possibilities, and matching against all of them, instead of trying to normalize a file path back into an import path. Fixes a bug where the query based analyzer couldn't find an import that was both named index and an ngsummary. PiperOrigin-RevId: 233083622 --- .../ts_auto_deps/analyze/loader.go | 51 +++++++++++-------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go index ab82fcea2a..4b509caa64 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go @@ -132,6 +132,25 @@ func labelCacheKey(currentPkg, label string) string { return currentPkg + "^" + label } +// possibleFilepaths generates the possible filepaths for the ts import path. +// e.g. google3/foo/bar could be foo/bar.ts or foo/bar.d.ts or foo/bar/index.ts, etc. +// Also handles special angular import paths (.ngfactory and .ngsummary). +func possibleFilepaths(importPath string) []string { + // If the path has a suffix of ".ngfactory" or ".ngsummary", it might + // be an Angular AOT generated file. We can infer the target as we + // infer its corresponding ngmodule target by simply stripping the + // ".ngfactory" / ".ngsummary" suffix + importPath = strings.TrimSuffix(strings.TrimSuffix(importPath, ".ngsummary"), ".ngfactory") + importPath = strings.TrimPrefix(importPath, workspace.Name()+"/") + + var possiblePaths []string + + possiblePaths = append(possiblePaths, pathWithExtensions(importPath)...) + possiblePaths = append(possiblePaths, pathWithExtensions(filepath.Join(importPath, "index"))...) + + return possiblePaths +} + // LoadImportPaths uses Bazel Query to load targets associated with import // paths from BUILD files. func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg, workspaceRoot string, paths []string) (map[string]*appb.Rule, error) { @@ -150,15 +169,9 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg if _, ok := addedPaths[path]; !ok { addedPaths[path] = true - // If the path has a suffix of ".ngfactory" or ".ngsummary", it might - // be an Angular AOT generated file. We can infer the target as we - // infer its corresponding ngmodule target by simply stripping the - // ".ngfactory" / ".ngsummary" suffix - path = strings.TrimSuffix(strings.TrimSuffix(path, ".ngsummary"), ".ngfactory") - path = strings.TrimPrefix(path, workspace.Name()+"/") - - possiblePaths = append(possiblePaths, pathWithExtensions(path)...) - possiblePaths = append(possiblePaths, pathWithExtensions(filepath.Join(path, "index"))...) + // there isn't a one to one mapping from ts import paths to file + // paths, so look for all the possible file paths + possiblePaths = append(possiblePaths, possibleFilepaths(path)...) } } } @@ -190,7 +203,7 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg } } - labelToRule := make(map[string]*appb.Rule) + filepathToRule := make(map[string]*appb.Rule) // load all the rules with file srcs (either literal or generated) sourceLabelToRule, err := q.loadRulesWithSources(workspaceRoot, fileLabels) @@ -198,7 +211,7 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg return nil, err } for label, rule := range sourceLabelToRule { - labelToRule[label] = rule + filepathToRule[labelToPath(label)] = rule } // load all the rules with generator rule srcs @@ -208,20 +221,14 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg } for label, rule := range generatorLabelToRule { for _, generated := range generatorsToFiles[label] { - labelToRule[generated.GetName()] = rule + filepathToRule[labelToPath(generated.GetName())] = rule } } - for label, rule := range labelToRule { - _, pkg, file := edit.ParseLabel(label) - // Trim "/index" suffixes that were added to path in the queries above. - pathWithoutExtension := strings.TrimSuffix(filepath.Join(pkg, stripTSExtension(file)), string(filepath.Separator)+"index") - for _, path := range paths { - if pathWithoutExtension == strings.TrimSuffix(path, string(filepath.Separator)+"index") { - results[path] = rule - } else if pathWithoutExtension == strings.TrimSuffix(path, ".ngsummary") { - results[path] = rule - } else if pathWithoutExtension == strings.TrimSuffix(path, ".ngfactory") { + for _, path := range paths { + // check all the possible file paths for the import path + for _, fp := range possibleFilepaths(path) { + if rule, ok := filepathToRule[fp]; ok { results[path] = rule } } From 97bb8945f242585c397cd68f17203002ff7c16cc Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Fri, 8 Feb 2019 19:53:07 +0000 Subject: [PATCH 0529/1134] fix: devserver not working on windows refactor: remove unnecessary runfile stat Closes #385 PiperOrigin-RevId: 233100030 --- .../rules_typescript/.bazelci/presubmit.yml | 2 - .../devserver/devserver/devserver.go | 38 ++++---- .../rules_typescript/devserver/main.go | 31 +++++-- .../devserver/runfile-filesystem.go | 4 +- .../devserver/runfiles/runfiles.go | 4 +- .../rules_typescript/internal/devserver/BUILD | 1 + .../internal/devserver/launcher_template.sh | 59 ++++++++++++ .../internal/devserver/ts_devserver.bzl | 93 +++++++++++-------- 8 files changed, 162 insertions(+), 70 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/devserver/launcher_template.sh diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml index f587cc9162..5b60a2c2ad 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml @@ -52,6 +52,4 @@ platforms: - "--action_env=PATH" - "--test_env=PATH" test_targets: - - "--" - "..." - - "-//devserver/devserver:go_default_test" diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/devserver.go b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/devserver.go index 474890803d..9bd3a8661c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/devserver.go +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/devserver.go @@ -97,13 +97,7 @@ func (w *headerSuppressorResponseWriter) WriteHeader(code int) {} func CreateFileHandler(servingPath, manifest string, pkgs []string, base string) http.HandlerFunc { // We want to add the root runfile path because by default developers should be able to request // runfiles through their absolute manifest path (e.g. "my_workspace_name/src/file.css") - // We use the empty string package because of the different algorithm for - // file resolution used internally and externally. - pkgPaths := dirHTTPFileSystem{[]string{"./"}, base} - for _, pkg := range pkgs { - pkgPaths.files = append(pkgPaths.files, pathReplacer.Replace(pkg)) - } - pkgPaths.files = append(pkgPaths.files, base) + pkgPaths := dirHTTPFileSystem{append(pkgs, "./"), base} fileHandler := http.FileServer(pkgPaths).ServeHTTP @@ -127,8 +121,8 @@ func CreateFileHandler(servingPath, manifest string, pkgs []string, base string) userIndexFile, err := runfiles.Runfile(base, pathReplacer.Replace(filepath.Join(pkg, "index.html"))) // In case the potential user index file couldn't be found in the runfiles, - // just continue searching. - if _, statErr := os.Stat(userIndexFile); err != nil || statErr != nil { + // continue searching within other packages. + if err != nil { continue } @@ -175,34 +169,40 @@ func CreateFileHandler(servingPath, manifest string, pkgs []string, base string) // dirHTTPFileSystem implements http.FileSystem by looking in the list of dirs one after each other. type dirHTTPFileSystem struct { - files []string + packageDirs []string base string } func (fs dirHTTPFileSystem) Open(name string) (http.File, error) { - for _, packageName := range fs.files { - filePackageName := filepath.Join(packageName, name) - realFilePath, err := runfiles.Runfile(fs.base, filePackageName) - stat, statErr := os.Stat(realFilePath) + for _, packageName := range fs.packageDirs { + manifestFilePath := filepath.Join(packageName, name) + realFilePath, err := runfiles.Runfile(fs.base, manifestFilePath) - if err != nil || statErr != nil { + if err != nil { // In case the runfile could not be found, we also need to check that the requested // path does not refer to a directory containing an "index.html" file. This can // happen if Bazel runs without runfile symlinks, where only files can be resolved // from the manifest. In that case we dirty check if there is a "index.html" file. - realFilePath, err = runfiles.Runfile(fs.base, filepath.Join(filePackageName, "index.html")) + realFilePath, err = runfiles.Runfile(fs.base, filepath.Join(manifestFilePath, "index.html")) - // Continue searching if the runfile couldn't be found for the request filed. - if _, statErr := os.Stat(realFilePath); err != nil || statErr != nil { + // Continue searching if the runfile couldn't be found for the requested file. + if err != nil { continue } } + stat, err := os.Stat(realFilePath) + if err != nil { + // This should actually never happen because runfiles resolved through the runfile helpers + // should always exist. Just in order to properly handle the error, we add this error handling. + return nil, fmt.Errorf("could not read runfile %s", manifestFilePath) + } + // In case the resolved file resolves to a directory. This can only happen if // Bazel runs with symlinked runfiles (e.g. on MacOS, linux). In that case, we // just look for a index.html in the directory. if stat.IsDir() { - realFilePath, err = runfiles.Runfile(fs.base, filepath.Join(filePackageName, "index.html")) + realFilePath, err = runfiles.Runfile(fs.base, filepath.Join(manifestFilePath, "index.html")) // In case the index.html file of the requested directory couldn't be found, // we just continue searching. diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/main.go b/third_party/github.com/bazelbuild/rules_typescript/devserver/main.go index 29c224b7b4..7b0a2a0c8f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/main.go +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/main.go @@ -8,15 +8,17 @@ import ( "io/ioutil" "net/http" "os" - "path/filepath" "strings" "github.com/bazelbuild/rules_typescript/devserver/concatjs" "github.com/bazelbuild/rules_typescript/devserver/devserver" + "github.com/bazelbuild/rules_typescript/devserver/runfiles" ) var ( port = flag.Int("port", 5432, "server port to listen on") + // The "base" CLI flag is only kept because within Google3 because removing would be a breaking change due to + // ConcatJS and "devserver/devserver.go" still respecting the specified base flag. base = flag.String("base", "", "server base (required, runfiles of the binary)") pkgs = flag.String("packages", "", "root package(s) to serve, comma-separated") manifest = flag.String("manifest", "", "sources manifest (.MF)") @@ -28,23 +30,30 @@ var ( func main() { flag.Parse() - if *base == "" || len(*pkgs) == 0 || (*manifest == "") || (*scriptsManifest == "") { + if len(*pkgs) == 0 || (*manifest == "") || (*scriptsManifest == "") { fmt.Fprintf(os.Stderr, "Required argument not set\n") os.Exit(1) } - if _, err := os.Stat(*base); err != nil { - fmt.Fprintf(os.Stderr, "Cannot read server base %s: %v\n", *base, err) + manifestPath, err := runfiles.Runfile(*base, *scriptsManifest) + + if err != nil { + fmt.Fprintf(os.Stderr, "Failed to find scripts_manifest in runfiles: %v\n", err) os.Exit(1) } - scriptsManifestPath := filepath.Join(*base, *scriptsManifest) - scriptFiles, err := manifestFiles(scriptsManifestPath) + scriptFiles, err := manifestFiles(manifestPath) if err != nil { fmt.Fprintf(os.Stderr, "Failed to read scripts_manifest: %v\n", err) os.Exit(1) } + if !strings.HasPrefix(*servingPath, "/") { + fmt.Fprintf(os.Stderr, "The specified serving_path does not start with a slash. "+ + "This causes the serving path to not have any effect.\n") + os.Exit(1) + } + preScripts := make([]string, 0, 100) postScripts := make([]string, 0, 1) @@ -76,7 +85,12 @@ func main() { // the requirejs script which is added to scriptFiles by the devserver // skylark rule. for _, v := range scriptFiles { - js, err := loadScript(filepath.Join(*base, v)) + runfile, err := runfiles.Runfile(*base, v) + if err != nil { + fmt.Fprintf(os.Stderr, "Could not find runfile %s, got error %s", v, err) + } + + js, err := loadScript(runfile) if err != nil { fmt.Fprintf(os.Stderr, "Failed to read script %s: %v\n", v, err) } else { @@ -90,7 +104,8 @@ func main() { postScripts = append(postScripts, fmt.Sprintf("require([\"%s\"]);", *entryModule)) } - http.Handle(*servingPath, concatjs.ServeConcatenatedJS(*manifest, *base, preScripts, postScripts, nil /* realFileSystem */)) + http.Handle(*servingPath, concatjs.ServeConcatenatedJS(*manifest, *base, preScripts, postScripts, + &RunfileFileSystem{})) pkgList := strings.Split(*pkgs, ",") http.HandleFunc("/", devserver.CreateFileHandler(*servingPath, *manifest, pkgList, *base)) diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/runfile-filesystem.go b/third_party/github.com/bazelbuild/rules_typescript/devserver/runfile-filesystem.go index 3f99c2f3e8..090ded64d5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/runfile-filesystem.go +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/runfile-filesystem.go @@ -30,6 +30,6 @@ func (fs *RunfileFileSystem) ReadFile(filename string) ([]byte, error) { // ResolvePath resolves the specified path within a given root using Bazel's runfile resolution. // This is necessary because on Windows, runfiles are not symlinked and need to be // resolved using the runfile manifest file. -func (fs *RunfileFileSystem) ResolvePath(root string, file string) (string, error) { - return runfiles.Runfile(root, file) +func (fs *RunfileFileSystem) ResolvePath(root string, manifestFilePath string) (string, error) { + return runfiles.Runfile(root, manifestFilePath) } diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/runfiles.go b/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/runfiles.go index 1d03448e01..cff9accb8b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/runfiles.go +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/runfiles/runfiles.go @@ -4,7 +4,7 @@ package runfiles import "github.com/bazelbuild/rules_go/go/tools/bazel" // Runfile returns the base directory to the bazel runfiles -func Runfile(_ string, path string) (string, error) { - return bazel.Runfile(path) +func Runfile(_base string, manifestPath string) (string, error) { + return bazel.Runfile(manifestPath) } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD index d6e9733128..2dfa86beae 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD @@ -19,6 +19,7 @@ package(default_visibility = [ ]) exports_files([ + "launcher_template.sh", # Exported to be consumed for generating skydoc. "ts_devserver.bzl", ]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/launcher_template.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/launcher_template.sh new file mode 100644 index 0000000000..13722a99c1 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/launcher_template.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# Copyright 2018 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +# --- begin runfiles.bash initialization --- +# Source the runfiles library: +# https://github.com/bazelbuild/bazel/blob/master/tools/bash/runfiles/runfiles.bash +# The runfiles library defines rlocation, which is a platform independent function +# used to lookup the runfiles locations. This code snippet is needed at the top +# of scripts that use rlocation to lookup the location of runfiles.bash and source it +if [[ ! -d "${RUNFILES_DIR:-/dev/null}" && ! -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then + if [[ -f "$0.runfiles_manifest" ]]; then + export RUNFILES_MANIFEST_FILE="$0.runfiles_manifest" + elif [[ -f "$0.runfiles/MANIFEST" ]]; then + export RUNFILES_MANIFEST_FILE="$0.runfiles/MANIFEST" + elif [[ -f "$0.runfiles/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then + export RUNFILES_DIR="$0.runfiles" + fi +fi +if [[ -f "${RUNFILES_DIR:-/dev/null}/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then + source "${RUNFILES_DIR}/bazel_tools/tools/bash/runfiles/runfiles.bash" +elif [[ -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then + source "$(grep -m1 "^bazel_tools/tools/bash/runfiles/runfiles.bash " \ + "$RUNFILES_MANIFEST_FILE" | cut -d ' ' -f 2-)" +else + echo >&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash" + exit 1 +fi +# --- end runfiles.bash initialization --- + + +readonly main=$(rlocation "TEMPLATED_main") +readonly manifest=$(rlocation "TEMPLATED_manifest") +readonly scripts_manifest=$(rlocation "TEMPLATED_scripts_manifest") + +# Workaround for https://github.com/bazelbuild/bazel/issues/6764 +# If this issue is incorporated into Bazel, the workaround here should be removed. +MSYS2_ARG_CONV_EXCL="*" "${main}" \ + -packages=TEMPLATED_packages \ + -serving_path=TEMPLATED_serving_path \ + -entry_module=TEMPLATED_entry_module \ + -port=TEMPLATED_port \ + -manifest="${manifest}" \ + -scripts_manifest="${scripts_manifest}" \ + "$@" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl index 3fd9519e0d..fe377eccd7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl @@ -24,6 +24,14 @@ load( "html_asset_inject", ) +# Helper function to convert a short path to a path that is +# found in the MANIFEST file. +def _short_path_to_manifest_path(ctx, short_path): + if short_path.startswith("../"): + return short_path[3:] + else: + return ctx.workspace_name + "/" + short_path + def _ts_devserver(ctx): files = depset() for d in ctx.attr.deps: @@ -52,7 +60,7 @@ def _ts_devserver(ctx): amd_names_shim = ctx.actions.declare_file( "_%s.amd_names_shim.js" % ctx.label.name, - sibling = ctx.outputs.executable, + sibling = ctx.outputs.script, ) write_amd_names_shim(ctx.actions, amd_names_shim, ctx.attr.bootstrap) @@ -76,6 +84,7 @@ def _ts_devserver(ctx): ] devserver_runfiles += ctx.files.static_files devserver_runfiles += script_files + devserver_runfiles += ctx.files._bash_runfile_helpers if ctx.file.index_html: injected_index = ctx.actions.declare_file("index.html") @@ -96,37 +105,24 @@ def _ts_devserver(ctx): ) devserver_runfiles += [injected_index] - serving_arg = "" - if ctx.attr.serving_path: - serving_arg = "-serving_path=%s" % ctx.attr.serving_path - packages = depset(["/".join([workspace_name, ctx.label.package])] + ctx.attr.additional_root_paths) - # FIXME: more bash dependencies makes Windows support harder - ctx.actions.write( - output = ctx.outputs.executable, + ctx.actions.expand_template( + template = ctx.file._launcher_template, + output = ctx.outputs.script, + substitutions = { + "TEMPLATED_entry_module": ctx.attr.entry_module, + "TEMPLATED_main": _short_path_to_manifest_path(ctx, ctx.executable._devserver.short_path), + "TEMPLATED_manifest": _short_path_to_manifest_path(ctx, ctx.outputs.manifest.short_path), + "TEMPLATED_packages": ",".join(packages.to_list()), + "TEMPLATED_port": str(ctx.attr.port), + "TEMPLATED_scripts_manifest": _short_path_to_manifest_path(ctx, ctx.outputs.scripts_manifest.short_path), + "TEMPLATED_serving_path": ctx.attr.serving_path if ctx.attr.serving_path else "", + "TEMPLATED_workspace": workspace_name, + }, is_executable = True, - content = """#!/bin/sh -RUNFILES="$PWD/.." -{main} {serving_arg} \ - -base="$RUNFILES" \ - -packages={packages} \ - -manifest={workspace}/{manifest} \ - -scripts_manifest={workspace}/{scripts_manifest} \ - -entry_module={entry_module} \ - -port={port} \ - "$@" -""".format( - main = ctx.executable._devserver.short_path, - serving_arg = serving_arg, - workspace = workspace_name, - packages = ",".join(packages.to_list()), - manifest = ctx.outputs.manifest.short_path, - scripts_manifest = ctx.outputs.scripts_manifest.short_path, - entry_module = ctx.attr.entry_module, - port = str(ctx.attr.port), - ), ) + return [DefaultInfo( runfiles = ctx.runfiles( files = devserver_runfiles, @@ -191,6 +187,7 @@ ts_devserver = rule( allow_files = True, aspects = [sources_aspect], ), + "_bash_runfile_helpers": attr.label(default = Label("@bazel_tools//tools/bash/runfiles")), "_devserver": attr.label( # For local development in rules_typescript, we build the devserver from sources. # This requires that we have the go toolchain available. @@ -206,33 +203,52 @@ ts_devserver = rule( executable = True, cfg = "host", ), + "_launcher_template": attr.label(allow_single_file = True, default = Label("//internal/devserver:launcher_template.sh")), "_requirejs_script": attr.label(allow_single_file = True, default = Label("@build_bazel_rules_typescript_devserver_deps//node_modules/requirejs:require.js")), }, outputs = { "manifest": "%{name}.MF", + "script": "%{name}.sh", "scripts_manifest": "scripts_%{name}.MF", }, - executable = True, ) """ts_devserver is a simple development server intended for a quick "getting started" experience. Additional documentation at https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel """ -def ts_devserver_macro(tags = [], **kwargs): - """ibazel wrapper for `ts_devserver` - - This macro re-exposes the `ts_devserver` rule with some extra tags so that - it behaves correctly under ibazel. +def ts_devserver_macro(name, data = [], args = [], visibility = None, tags = [], testonly = 0, **kwargs): + """Macro for creating a `ts_devserver` + This macro re-exposes a `sh_binary` and `ts_devserver` target that can run the + actual devserver implementation. + The `ts_devserver` rule is just responsible for generating a launcher script + that runs the Go devserver implementation. The `sh_binary` is the primary + target that matches the specified "name" and executes the generated bash + launcher script. This is re-exported in `//:defs.bzl` as `ts_devserver` so if you load the rule from there, you actually get this macro. - Args: - tags: standard Bazel tags, this macro adds a couple for ibazel + name: Name of the devserver target + data: Runtime dependencies for the devserver + args: Command line arguments that will be passed to the devserver Go implementation + visibility: Visibility of the devserver targets + tags: Standard Bazel tags, this macro adds a couple for ibazel + testonly: Whether the devserver should only run in `bazel test` **kwargs: passed through to `ts_devserver` """ ts_devserver( + name = "%s_launcher" % name, + data = data + ["@bazel_tools//tools/bash/runfiles"], + testonly = testonly, + visibility = ["//visibility:private"], + tags = tags, + **kwargs + ) + + native.sh_binary( + name = name, + args = args, # Users don't need to know that these tags are required to run under ibazel tags = tags + [ # Tell ibazel not to restart the devserver when its deps change. @@ -241,5 +257,8 @@ def ts_devserver_macro(tags = [], **kwargs): # this program. "ibazel_live_reload", ], - **kwargs + srcs = ["%s_launcher.sh" % name], + data = [":%s_launcher" % name], + testonly = testonly, + visibility = visibility, ) From 5e836d010a1a730f4caef281e839777a4a285350 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Fri, 8 Feb 2019 12:48:59 -0800 Subject: [PATCH 0530/1134] Update to rules_nodejs 0.18.2 Closes #408 PiperOrigin-RevId: 233109259 --- .../github.com/bazelbuild/rules_typescript/README.md | 7 +++---- .../github.com/bazelbuild/rules_typescript/WORKSPACE | 2 +- .../internal/e2e/npm_packages/karma/WORKSPACE | 3 +-- .../internal/e2e/npm_packages/karma_stack_trace/WORKSPACE | 3 +-- .../internal/e2e/npm_packages/karma_typescript/WORKSPACE | 3 +-- .../internal/e2e/npm_packages/ts_auto_deps/WORKSPACE | 3 +-- .../internal/e2e/npm_packages/ts_devserver/WORKSPACE | 3 +-- .../internal/e2e/npm_packages/typescript_2.7/WORKSPACE | 3 +-- .../internal/e2e/npm_packages/typescript_2.8/WORKSPACE | 3 +-- .../internal/e2e/npm_packages/typescript_2.9/WORKSPACE | 3 +-- .../internal/e2e/npm_packages/typescript_3.0/WORKSPACE | 3 +-- .../internal/e2e/npm_packages/typescript_3.1/WORKSPACE | 3 +-- .../bazelbuild/rules_typescript/internal/karma/package.bzl | 3 +-- .../github.com/bazelbuild/rules_typescript/package.bzl | 4 ++-- .../github.com/bazelbuild/rules_typescript/package.json | 2 +- .../github.com/bazelbuild/rules_typescript/version.bzl | 4 ++-- 16 files changed, 20 insertions(+), 32 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 93d21e9441..76ca1e3a7d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -25,8 +25,8 @@ Optionally add the `@bazel/karma` npm package if you would like to use the { ... "devDependencies": { - "@bazel/typescript": "0.23.3", - "@bazel/karma": "0.23.3", + "@bazel/typescript": "0.24.0", + "@bazel/karma": "0.24.0", ... }, ... @@ -49,8 +49,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch rules_nodejs http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], - strip_prefix = "rules_nodejs-0.16.8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], ) # Setup the NodeJS toolchain diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index acb4497a09..5f821778ba 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -77,7 +77,7 @@ ts_setup_dev_workspace() # Test that check_rules_typescript_version works as expected load("//:defs.bzl", "check_rules_typescript_version") -check_rules_typescript_version(version_string = "0.23.3") +check_rules_typescript_version(version_string = "0.24.0") # Dependencies for generating documentation load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE index 5a409ea806..56e31178fb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE @@ -18,8 +18,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - strip_prefix = "rules_nodejs-0.16.8", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE index 03bfe1eae0..3b01b546db 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE @@ -18,8 +18,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - strip_prefix = "rules_nodejs-0.16.8", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE index 83983637ec..ddbf4ca5db 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE @@ -18,8 +18,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - strip_prefix = "rules_nodejs-0.16.8", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE index a4662d5b91..62145df942 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE @@ -18,8 +18,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - strip_prefix = "rules_nodejs-0.16.8", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE index dc13223beb..093598020f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE @@ -18,8 +18,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - strip_prefix = "rules_nodejs-0.16.8", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE index d3abdb37d4..34d2587b55 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE @@ -18,8 +18,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - strip_prefix = "rules_nodejs-0.16.8", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE index 5403864090..576c9e1b2c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE @@ -18,8 +18,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - strip_prefix = "rules_nodejs-0.16.8", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE index 2ce03cdb17..0a445c941f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE @@ -18,8 +18,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - strip_prefix = "rules_nodejs-0.16.8", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE index 1fb00c1d7e..2d7f57709b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE @@ -18,8 +18,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - strip_prefix = "rules_nodejs-0.16.8", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE index 1fb00c1d7e..2d7f57709b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE @@ -18,8 +18,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - strip_prefix = "rules_nodejs-0.16.8", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl index 564cb3c99a..b99e1d1a90 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl @@ -29,8 +29,7 @@ def rules_karma_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - strip_prefix = "rules_nodejs-0.16.8", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], ) # ts_web_test depends on the web testing rules to provision browsers. diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index a0746fe32b..dcdfde8734 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -38,8 +38,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - strip_prefix = "rules_nodejs-0.16.8", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.16.8.zip"], + strip_prefix = "rules_nodejs-0.18.2", + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.18.2.zip"], ) # For running skylint diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 6fc1cd9ce8..f416c522f8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,7 +3,7 @@ "description": "TypeScript rules for Bazel", "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", - "version": "0.23.3", + "version": "0.24.0", "keywords": [ "typescript", "bazel" diff --git a/third_party/github.com/bazelbuild/rules_typescript/version.bzl b/third_party/github.com/bazelbuild/rules_typescript/version.bzl index 50cee429c8..2584db8089 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/version.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/version.bzl @@ -17,12 +17,12 @@ load("@build_bazel_rules_nodejs//internal/common:check_version.bzl", "check_version") -VERSION = "0.23.3" +VERSION = "0.24.0" # This version is the minimum version that is API compatible with this version # of rules_typescript. This version should be updated to equal VERSION for # releases with breaking changes and/or new features. -COMPAT_VERSION = "0.23.0" +COMPAT_VERSION = "0.24.0" def check_rules_typescript_version(version_string): """ From da806b127aaa20e1fabca906e526b995ce919ca0 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Fri, 8 Feb 2019 13:35:15 -0800 Subject: [PATCH 0531/1134] Update to latest rules_nodejs Closes #413 Closes #410 PiperOrigin-RevId: 233117208 --- third_party/github.com/bazelbuild/rules_typescript/README.md | 4 +++- .../bazelbuild/rules_typescript/internal/devserver/BUILD | 1 + .../internal/e2e/npm_packages/karma/WORKSPACE | 3 ++- .../internal/e2e/npm_packages/karma_stack_trace/WORKSPACE | 3 ++- .../internal/e2e/npm_packages/karma_typescript/WORKSPACE | 3 ++- .../internal/e2e/npm_packages/ts_auto_deps/WORKSPACE | 3 ++- .../internal/e2e/npm_packages/ts_devserver/WORKSPACE | 3 ++- .../internal/e2e/npm_packages/typescript_2.7/WORKSPACE | 3 ++- .../internal/e2e/npm_packages/typescript_2.8/WORKSPACE | 3 ++- .../internal/e2e/npm_packages/typescript_2.9/WORKSPACE | 3 ++- .../internal/e2e/npm_packages/typescript_3.0/WORKSPACE | 3 ++- .../internal/e2e/npm_packages/typescript_3.1/WORKSPACE | 3 ++- .../bazelbuild/rules_typescript/internal/karma/package.bzl | 3 ++- .../github.com/bazelbuild/rules_typescript/package.bzl | 4 ++-- 14 files changed, 28 insertions(+), 14 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 76ca1e3a7d..1cbe6ab139 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -47,9 +47,11 @@ containing: load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch rules_nodejs +# (you can check https://github.com/bazelbuild/rules_nodejs for a newer release than this) http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], + sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", ) # Setup the NodeJS toolchain diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD index 2dfa86beae..25b03e1537 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD @@ -33,6 +33,7 @@ filegroup( name = "npm_package_assets", srcs = [ "BUILD", + "launcher_template.sh", "package.json", "ts_devserver.bzl", "yarn.lock", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE index 56e31178fb..7898a78f16 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE @@ -18,7 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], + sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE index 3b01b546db..538809e755 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE @@ -18,7 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], + sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE index ddbf4ca5db..96a736cf51 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE @@ -18,7 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], + sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE index 62145df942..a73ab0f2ba 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE @@ -18,7 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], + sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE index 093598020f..b552476034 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE @@ -18,7 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], + sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE index 34d2587b55..0d7b73f4b9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE @@ -18,7 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], + sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE index 576c9e1b2c..12eba13761 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE @@ -18,7 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], + sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE index 0a445c941f..d0b4e905f2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE @@ -18,7 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], + sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE index 2d7f57709b..b27f076788 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE @@ -18,7 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], + sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE index 2d7f57709b..b27f076788 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE @@ -18,7 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], + sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl index b99e1d1a90..94a216c1ca 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl @@ -29,7 +29,8 @@ def rules_karma_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.2/rules_nodejs-0.18.2.tar.gz"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], + sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", ) # ts_web_test depends on the web testing rules to provision browsers. diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index dcdfde8734..2a28acb48e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -38,8 +38,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - strip_prefix = "rules_nodejs-0.18.2", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/0.18.2.zip"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], + sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", ) # For running skylint From becb154afd70ff475ba737bddca49f7cb869eb7f Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Fri, 8 Feb 2019 13:38:33 -0800 Subject: [PATCH 0532/1134] rel: 0.24.1 --- third_party/github.com/bazelbuild/rules_typescript/README.md | 4 ++-- third_party/github.com/bazelbuild/rules_typescript/WORKSPACE | 2 +- .../github.com/bazelbuild/rules_typescript/package.json | 2 +- .../github.com/bazelbuild/rules_typescript/version.bzl | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 1cbe6ab139..e228827d8c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -25,8 +25,8 @@ Optionally add the `@bazel/karma` npm package if you would like to use the { ... "devDependencies": { - "@bazel/typescript": "0.24.0", - "@bazel/karma": "0.24.0", + "@bazel/typescript": "0.24.1", + "@bazel/karma": "0.24.1", ... }, ... diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 5f821778ba..2f8b991a1f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -77,7 +77,7 @@ ts_setup_dev_workspace() # Test that check_rules_typescript_version works as expected load("//:defs.bzl", "check_rules_typescript_version") -check_rules_typescript_version(version_string = "0.24.0") +check_rules_typescript_version(version_string = "0.24.1") # Dependencies for generating documentation load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index f416c522f8..990862500d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,7 +3,7 @@ "description": "TypeScript rules for Bazel", "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", - "version": "0.24.0", + "version": "0.24.1", "keywords": [ "typescript", "bazel" diff --git a/third_party/github.com/bazelbuild/rules_typescript/version.bzl b/third_party/github.com/bazelbuild/rules_typescript/version.bzl index 2584db8089..1f97561669 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/version.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/version.bzl @@ -17,7 +17,7 @@ load("@build_bazel_rules_nodejs//internal/common:check_version.bzl", "check_version") -VERSION = "0.24.0" +VERSION = "0.24.1" # This version is the minimum version that is API compatible with this version # of rules_typescript. This version should be updated to equal VERSION for From 908c133d85b3cba9fd9e24ef0a4489f0e570c2ec Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Mon, 11 Feb 2019 09:37:25 -0800 Subject: [PATCH 0533/1134] Update to rules_nodejs 0.18.5 Closes #414 PiperOrigin-RevId: 233423330 --- third_party/github.com/bazelbuild/rules_typescript/README.md | 4 ++-- .../internal/e2e/npm_packages/karma/WORKSPACE | 4 ++-- .../internal/e2e/npm_packages/karma_stack_trace/WORKSPACE | 4 ++-- .../internal/e2e/npm_packages/karma_typescript/WORKSPACE | 4 ++-- .../internal/e2e/npm_packages/ts_auto_deps/WORKSPACE | 4 ++-- .../internal/e2e/npm_packages/ts_devserver/WORKSPACE | 4 ++-- .../internal/e2e/npm_packages/typescript_2.7/WORKSPACE | 4 ++-- .../internal/e2e/npm_packages/typescript_2.8/WORKSPACE | 4 ++-- .../internal/e2e/npm_packages/typescript_2.9/WORKSPACE | 4 ++-- .../internal/e2e/npm_packages/typescript_3.0/WORKSPACE | 4 ++-- .../internal/e2e/npm_packages/typescript_3.1/WORKSPACE | 4 ++-- .../bazelbuild/rules_typescript/internal/karma/package.bzl | 4 ++-- .../github.com/bazelbuild/rules_typescript/package.bzl | 4 ++-- 13 files changed, 26 insertions(+), 26 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index e228827d8c..c8082c36bd 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -50,8 +50,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # (you can check https://github.com/bazelbuild/rules_nodejs for a newer release than this) http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], - sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], + sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", ) # Setup the NodeJS toolchain diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE index 7898a78f16..6545390f45 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE @@ -18,8 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], - sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", + sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE index 538809e755..20b5d217ff 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE @@ -18,8 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], - sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", + sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE index 96a736cf51..07b71008a6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE @@ -18,8 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], - sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", + sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE index a73ab0f2ba..be2a4dbdaa 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE @@ -18,8 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], - sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", + sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE index b552476034..703cac1a16 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE @@ -18,8 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], - sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", + sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE index 0d7b73f4b9..7cdc694997 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE @@ -18,8 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], - sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", + sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE index 12eba13761..ca44e458e2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE @@ -18,8 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], - sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", + sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE index d0b4e905f2..5631a12590 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE @@ -18,8 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], - sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", + sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE index b27f076788..6a741b6878 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE @@ -18,8 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], - sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", + sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE index b27f076788..6a741b6878 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE @@ -18,8 +18,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], - sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", + sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], ) load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl index 94a216c1ca..1d0832ccb1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl @@ -29,8 +29,8 @@ def rules_karma_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], - sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], + sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", ) # ts_web_test depends on the web testing rules to provision browsers. diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index 2a28acb48e..be88028c67 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -38,8 +38,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.4/rules_nodejs-0.18.4.tar.gz"], - sha256 = "23987a5cf549146742aa6a0d2536e4906906e63a608d5b9b32dd9fe5523ef51c", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], + sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", ) # For running skylint From eebf314f5b14c50def7995c2d0cfee678a12ae90 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 11 Feb 2019 12:02:11 -0800 Subject: [PATCH 0534/1134] Define global.gc using v8 and vm modules if needed This allows us to tear down a bunch of complexity related to setting the --expose-gc flag when starting nodejs Closes #415 PiperOrigin-RevId: 233451681 --- .../bazelbuild/rules_typescript/BUILD.bazel | 17 +---------------- .../bazelbuild/rules_typescript/README.md | 2 -- .../rules_typescript/internal/BUILD.bazel | 1 - .../rules_typescript/internal/build_defs.bzl | 2 +- .../internal/e2e/default_tsconfig_test.js | 4 ++-- .../internal/tsc_wrapped/tsc_wrapped.ts | 8 ++++++++ .../internal/tsc_wrapped/worker.ts | 8 ++++++++ .../bazelbuild/rules_typescript/package.json | 3 ++- .../ts_auto_deps/updater/updater.go | 2 +- 9 files changed, 23 insertions(+), 24 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index 09ee44b315..05517305c7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -25,7 +25,7 @@ load("@bazel_gazelle//:def.bzl", "gazelle") # END-DEV-ONLY -load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary", "npm_package") +load("@build_bazel_rules_nodejs//:defs.bzl", "npm_package") # BEGIN-DEV-ONLY load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") @@ -108,18 +108,3 @@ npm_package( # ) # END-DEV-ONLY -# A nodejs_binary for @bazel/typescript/tsc_wrapped to use by default in -# ts_library that depends on @npm//@bazel/typescript instead of the -# output of the //internal/tsc_wrapped ts_library rule. This -# default is for downstream users that depend on the @bazel/typescript npm -# package. A generated @npm//@bazel/typescript/bin:tsc_wrapped target -# would not work because it does not have the node `--expose-gc` flag -# set which is required to support the call to `global.gc()`. -nodejs_binary( - name = "@bazel/typescript/tsc_wrapped", - data = ["@npm//@bazel/typescript"], - entry_point = "@bazel/typescript/internal/tsc_wrapped/tsc_wrapped.js", - install_source_map_support = False, - templated_args = ["--node_options=--expose-gc"], - visibility = ["//visibility:public"], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index c8082c36bd..074475b88d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -140,8 +140,6 @@ filegroup( nodejs_binary( name = "@bazel/typescript/tsc_wrapped", entry_point = "@bazel/typescript/internal/tsc_wrapped/tsc_wrapped.js", - # The --expose-gc node option is required for tsc_wrapped - templated_args = ["--node_options=--expose-gc"], # Point bazel to your node_modules to find the entry point node_modules = ["//:node_modules"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 5132aa88ac..64174550f4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -86,7 +86,6 @@ nodejs_binary( "@npm//typescript", ], entry_point = "build_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js", - templated_args = ["--node_options=--expose-gc"], visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl index fb22d2a805..16395468c1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl @@ -22,7 +22,7 @@ load(":common/compilation.bzl", "COMMON_ATTRIBUTES", "DEPS_ASPECTS", "compile_ts load(":common/tsconfig.bzl", "create_tsconfig") load(":ts_config.bzl", "TsConfigInfo") -_DEFAULT_COMPILER = "@build_bazel_rules_typescript//:@bazel/typescript/tsc_wrapped" +_DEFAULT_COMPILER = "@npm//@bazel/typescript/bin:tsc_wrapped" def _trim_package_node_modules(package_name): # trim a package name down to its path prior to a node_modules diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js index 7711521393..a71affd140 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js @@ -387,7 +387,7 @@ workspace(name = "a") ${WORKSPACE_BOILERPLATE}`); write('a/BUILD', ` # We use ts_library from internal/defaults.bzl since we don't have a @bazel/typescript npm -# package in this test. This changes the ts_library compiler from the default '@build_bazel_rules_typescript//:@bazel/typescript/tsc_wrapped' +# package in this test. This changes the ts_library compiler from the default # which depends on @npm//@bazel/typescript which is not available in this test to '@build_bazel_rules_typescript//internal:tsc_wrapped_bin' which is load("@build_bazel_rules_typescript//internal:defaults.bzl", "ts_library") ts_library( @@ -410,7 +410,7 @@ local_repository(name="a", path="../a") ${WORKSPACE_BOILERPLATE}`); write('b/BUILD', ` # We use ts_library from internal/defaults.bzl since we don't have a @bazel/typescript npm -# package in this test. This changes the ts_library compiler from the default '@build_bazel_rules_typescript//:@bazel/typescript/tsc_wrapped' +# package in this test. This changes the ts_library compiler from the default # which depends on @npm//@bazel/typescript which is not available in this test to '@build_bazel_rules_typescript//internal:tsc_wrapped_bin' which is load("@build_bazel_rules_typescript//internal:defaults.bzl", "ts_library") exports_files(["tsconfig.json"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 9aa747382e..2062b73575 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -15,6 +15,14 @@ import {PLUGIN as strictDepsPlugin} from './strict_deps'; import {BazelOptions, parseTsconfig, resolveNormalizedPath} from './tsconfig'; import {debug, log, runAsWorker, runWorkerLoop} from './worker'; +// Equivalent of running node with --expose-gc +// but easier to write tooling since we don't need to inject that arg to +// nodejs_binary +if (typeof global.gc !== 'function') { + require('v8').setFlagsFromString('--expose_gc'); + global.gc = require('vm').runInNewContext('gc'); +} + /** * Top-level entry point for tsc_wrapped. */ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts index 4a102cc0d1..7e52ba8f74 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts @@ -4,6 +4,14 @@ const protobufjs = require('protobufjs'); // tslint:disable-next-line:variable-name: ByteBuffer is instantiatable. const ByteBuffer = require('bytebuffer'); +// Equivalent of running node with --expose-gc +// but easier to write tooling since we don't need to inject that arg to +// nodejs_binary +if (typeof global.gc !== 'function') { + require('v8').setFlagsFromString('--expose_gc'); + global.gc = require('vm').runInNewContext('gc'); +} + export const DEBUG = false; export function debug(...args: Array<{}>) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 990862500d..8b9df61991 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -11,7 +11,8 @@ "main": "./internal/tsc_wrapped/index.js", "typings": "./internal/tsc_wrapped/index.d.ts", "bin": { - "ts_auto_deps": "./ts_auto_deps/ts_auto_deps.js" + "ts_auto_deps": "./ts_auto_deps/ts_auto_deps.js", + "tsc_wrapped": "./internal/tsc_wrapped/tsc_wrapped.js" }, "dependencies": { "protobufjs": "5.0.3", diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index f4f9a5e0b9..44e6492964 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -867,7 +867,7 @@ func removeSourcesUsed(bld *build.File, ruleKind, attrName string, srcs srcSet) } const ( - tsSkylarkLabel = "@build_bazel_rules_typescript//:defs.bzl" + tsSkylarkLabel = "@npm_bazel_typescript//:defs.bzl" ngSkylarkLabel = "@angular//:index.bzl" ) From a9b74c925eff38411f6783366debe929b0349a72 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Mon, 11 Feb 2019 13:51:51 -0800 Subject: [PATCH 0535/1134] Renames `build_bazel_rules_typescript` and `build_bazel_rules_karma` to `npm_bazel_typescript` and `npm_bazel_karma` respectively BREAKING CHANGE: Users will need to rename `build_bazel_rules_typescript` to `npm_bazel_typescript` and `build_bazel_rules_karma` to `npm_bazel_karma` in their projects Closes #412 PiperOrigin-RevId: 233472013 --- .../rules_typescript/.bazelci/presubmit.yml | 2 +- .../bazelbuild/rules_typescript/BUILD.bazel | 2 +- .../bazelbuild/rules_typescript/DEVELOPING.md | 8 ++++---- .../bazelbuild/rules_typescript/README.md | 10 +++++----- .../bazelbuild/rules_typescript/WORKSPACE | 8 ++++---- .../devserver/devserver/devserver_test.go | 4 ++-- .../bazelbuild/rules_typescript/docs/BUILD.bazel | 6 +++--- .../bazelbuild/rules_typescript/examples/bar.ts | 4 ++-- .../devmode_consumer/devmode_consumer_test.sh | 14 +++++++------- .../examples/devserver/BUILD.bazel | 2 +- .../examples/es6_output/es6_output_test.sh | 6 +++--- .../examples/googmodule/googmodule_output_test.js | 4 ++-- .../examples/protocol_buffers/BUILD.bazel | 8 ++++---- .../examples/some_module/BUILD.bazel | 2 +- .../examples/some_module/module_load_test.sh | 2 +- .../rules_typescript/examples/testing/BUILD.bazel | 2 +- .../examples/testing/static_script.spec.ts | 2 +- .../rules_typescript/internal/BUILD.bazel | 2 +- .../rules_typescript/internal/defaults.bzl | 4 ++-- .../e2e/disable_tsetse_for_external/BUILD.bazel | 2 +- .../internal/e2e/npm_packages/karma/BUILD.bazel | 2 +- .../internal/e2e/npm_packages/karma/WORKSPACE | 2 +- .../internal/e2e/npm_packages/karma/yarn.lock | 2 +- .../e2e/npm_packages/karma_stack_trace/BUILD.bazel | 4 ++-- .../e2e/npm_packages/karma_stack_trace/WORKSPACE | 4 ++-- .../karma_stack_trace/test_folder/BUILD.bazel | 2 +- .../e2e/npm_packages/karma_stack_trace/yarn.lock | 4 ++-- .../e2e/npm_packages/karma_typescript/BUILD.bazel | 4 ++-- .../e2e/npm_packages/karma_typescript/WORKSPACE | 4 ++-- .../e2e/npm_packages/karma_typescript/yarn.lock | 4 ++-- .../e2e/npm_packages/ts_auto_deps/WORKSPACE | 2 +- .../e2e/npm_packages/ts_auto_deps/yarn.lock | 2 +- .../e2e/npm_packages/ts_devserver/BUILD.bazel | 2 +- .../e2e/npm_packages/ts_devserver/WORKSPACE | 2 +- .../e2e/npm_packages/ts_devserver/yarn.lock | 2 +- .../e2e/npm_packages/typescript_2.7/BUILD.bazel | 4 ++-- .../e2e/npm_packages/typescript_2.7/WORKSPACE | 2 +- .../e2e/npm_packages/typescript_2.7/yarn.lock | 2 +- .../e2e/npm_packages/typescript_2.8/BUILD.bazel | 4 ++-- .../e2e/npm_packages/typescript_2.8/WORKSPACE | 2 +- .../e2e/npm_packages/typescript_2.8/yarn.lock | 2 +- .../e2e/npm_packages/typescript_2.9/BUILD.bazel | 4 ++-- .../e2e/npm_packages/typescript_2.9/WORKSPACE | 2 +- .../e2e/npm_packages/typescript_2.9/yarn.lock | 2 +- .../e2e/npm_packages/typescript_3.0/BUILD.bazel | 4 ++-- .../e2e/npm_packages/typescript_3.0/WORKSPACE | 2 +- .../e2e/npm_packages/typescript_3.0/yarn.lock | 2 +- .../e2e/npm_packages/typescript_3.1/BUILD.bazel | 4 ++-- .../e2e/npm_packages/typescript_3.1/WORKSPACE | 2 +- .../e2e/npm_packages/typescript_3.1/yarn.lock | 2 +- .../internal/e2e/typescript_3.1/BUILD.bazel | 6 +++--- .../internal/e2e/typescript_3.1/WORKSPACE | 6 +++--- .../rules_typescript/internal/karma/BUILD.bazel | 6 +++--- .../rules_typescript/internal/karma/WORKSPACE | 10 +++++----- .../rules_typescript/internal/karma/defaults.bzl | 4 ++-- .../internal/karma/karma_web_test.bzl | 4 ++-- .../rules_typescript/internal/karma/package.bzl | 2 +- .../rules_typescript/internal/karma/package.json | 2 +- .../internal/karma/ts_web_test.bzl | 2 +- .../internal/protobufjs/ts_proto_library.bzl | 8 ++++---- .../rules_typescript/internal/ts_repositories.bzl | 12 ++++++------ .../bazelbuild/rules_typescript/package.bzl | 6 +++--- .../bazelbuild/rules_typescript/package.json | 2 +- .../bazelbuild/rules_typescript/version.bzl | 14 +++++++------- 64 files changed, 130 insertions(+), 130 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml index 5b60a2c2ad..5d8f34e7de 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml @@ -21,7 +21,7 @@ platforms: - "@disable_tsetse_for_external_test//..." # Run some targets again, but addressed as an external repo # TODO(alexeagle): run all of them after fixing https://github.com/bazelbuild/rules_typescript/issues/243 - - "@build_bazel_rules_typescript//examples/some_library:lib" + - "@npm_bazel_typescript//examples/some_library:lib" test_flags: # TODO(gregmagolan): shared libs needed by chrome & firefox not available on ubuntu1604 - "--test_tag_filters=-browser:chromium-local,-browser:firefox-local" diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index 05517305c7..c47ed666df 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -99,7 +99,7 @@ npm_package( ) # Produces the release we publish to GitHub. Users download this starlark package -# to get the @build_bazel_rules_typescript workspace. +# to get the @npm_bazel_typescript workspace. # FIXME(gregmagolan): strip the npm_package prefix from within the generated archive # pkg_tar( # name = "release", diff --git a/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md b/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md index 8428d01929..f45639b5f1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md +++ b/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md @@ -4,13 +4,13 @@ We strongly encourage you to review the project's scope described in the `README ## Testing changing downstream -By default, downstream projects use both an `http_archive` of `build_bazel_rules_typescript` and the released `@bazel/typescript` and `@bazel/karma` npm packages. `postinstall` steps in these npm packages check that the version of the `build_bazel_rules_typescript` is compatible with the version of the npm package(s). +By default, downstream projects use both an `http_archive` of `npm_bazel_typescript` and the released `@bazel/typescript` and `@bazel/karma` npm packages. `postinstall` steps in these npm packages check that the version of the `npm_bazel_typescript` is compatible with the version of the npm package(s). For example, if a downstream `WORKSPACE` contain: ```python http_archive( - name = "build_bazel_rules_typescript", + name = "npm_bazel_typescript", url = "https://github.com/bazelbuild/rules_typescript/archive/0.21.0.zip", strip_prefix = "rules_typescript-0.21.0", ) @@ -38,7 +38,7 @@ to ```python "compiler": attr.label( - default = Label("@build_bazel_rules_typescript//internal:tsc_wrapped_bin"), + default = Label("@npm_bazel_typescript//internal:tsc_wrapped_bin"), ``` The correct defaults to use so that you are not depending on the npm package downstream are in `/internal/defaults.bzl`. Note, your downstream @@ -46,7 +46,7 @@ workspace will also need the correct `@npm` dependencies available to build thes In the case of the `angular` workspace, some `@npm` dependencies in this repository will also need to be changed to `@ngdeps` since `angular` does not have an `@npm` workspace with npm dependencies. -Note, with this workflow the downstream version of `@npm//typescript` will be used to compile the `ts_library` targets in `build_bazel_rules_typescript`. +Note, with this workflow the downstream version of `@npm//typescript` will be used to compile the `ts_library` targets in `npm_bazel_typescript`. An example of this can be found under `internal/e2e/typescript_3.1`. ## Releasing diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 074475b88d..d696a902a1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -73,13 +73,13 @@ yarn_install( load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -# Fetch transitive Bazel dependencies of build_bazel_rules_karma +# Fetch transitive Bazel dependencies of npm_bazel_karma # ONLY REQUIRED if you are using the @bazel/karma npm package -load("@build_bazel_rules_karma//:package.bzl", "rules_karma_dependencies") +load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies") rules_karma_dependencies() # Setup TypeScript toolchain -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") +load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() # Setup web testing, choose browsers we can test on @@ -168,7 +168,7 @@ Create a `BUILD` file next to your sources: ```python package(default_visibility=["//visibility:public"]) -load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_library") ts_library( name = "my_code", @@ -250,7 +250,7 @@ To use `ts_devserver`, you simply `load` the rule, and call it with `deps` that point to your `ts_library` target(s): ```python -load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver", "ts_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_devserver", "ts_library") ts_library( name = "app", diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 2f8b991a1f..f7cfc7dc78 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -12,11 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "build_bazel_rules_typescript") +workspace(name = "npm_bazel_typescript") -# Load nested build_bazel_rules_karma repository +# Load nested npm_bazel_karma repository local_repository( - name = "build_bazel_rules_karma", + name = "npm_bazel_karma", path = "internal/karma", ) @@ -26,7 +26,7 @@ load("//:package.bzl", "rules_typescript_dev_dependencies") rules_typescript_dev_dependencies() # Load rules_karma dependencies -load("@build_bazel_rules_karma//:package.bzl", "rules_karma_dependencies") +load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies") rules_karma_dependencies() diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/devserver_test.go b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/devserver_test.go index 0c0ba56a40..1fa912941d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/devserver_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/devserver_test.go @@ -47,9 +47,9 @@ func TestDevserverFileHandling(t *testing.T) { handler := CreateFileHandler("/app.js", "manifest.MF", []string{ // This verifies that we can resolve relatively to the current package. Usually the // devserver Bazel rule adds the current package here. - "build_bazel_rules_typescript/devserver/devserver", + "npm_bazel_typescript/devserver/devserver", // Verifies that we can specify subfolders of workspaces - "build_bazel_rules_typescript/devserver/devserver/test", + "npm_bazel_typescript/devserver/devserver/test", // Verifies that we can specify external workspaces as root dirs. "devserver_test_workspace", // Verifies that we can specify subfolders from external workspaces. diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/docs/BUILD.bazel index c8c686b6ee..edd71438e2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/BUILD.bazel @@ -8,9 +8,9 @@ skylark_doc( "//internal:ts_repositories.bzl", "//internal/devserver:ts_devserver.bzl", "//internal/protobufjs:ts_proto_library.bzl", - # TODO(gregmagolan): fix docs for build_bazel_rules_karma - # "@build_bazel_rules_karma//:karma_web_test.bzl", - # "@build_bazel_rules_karma//:ts_web_test.bzl", + # TODO(gregmagolan): fix docs for npm_bazel_karma + # "@npm_bazel_karma//:karma_web_test.bzl", + # "@npm_bazel_karma//:ts_web_test.bzl", ], format = "html", # The site is served at http://tsetse.info so the URL doesn't include a diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts index ab6ce26999..d363ae37a6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import {Greeter} from 'build_bazel_rules_typescript/examples/foo'; -import {a} from 'build_bazel_rules_typescript/examples/generated_ts/foo'; +import {Greeter} from 'npm_bazel_typescript/examples/foo'; +import {a} from 'npm_bazel_typescript/examples/generated_ts/foo'; // Repro for #31, should automatically discover @types/node import * as fs from 'fs'; import {cool} from 'some-lib'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer_test.sh b/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer_test.sh index 096f4d55a4..eb51180340 100755 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer_test.sh +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer_test.sh @@ -27,9 +27,9 @@ else fi # --- end runfiles.bash initialization --- -readonly LIBRARY_JS=$(cat $(rlocation "build_bazel_rules_typescript/examples/some_library/library.js")) -readonly BAR_JS=$(cat $(rlocation "build_bazel_rules_typescript/examples/bar.js")) -readonly FOO_JS=$(cat $(rlocation "build_bazel_rules_typescript/examples/foo.js")) +readonly LIBRARY_JS=$(cat $(rlocation "npm_bazel_typescript/examples/some_library/library.js")) +readonly BAR_JS=$(cat $(rlocation "npm_bazel_typescript/examples/bar.js")) +readonly FOO_JS=$(cat $(rlocation "npm_bazel_typescript/examples/foo.js")) # should produce named UMD modules if [[ "$LIBRARY_JS" != *"define(\"some-lib\""* ]]; then @@ -39,14 +39,14 @@ if [[ "$LIBRARY_JS" != *"define(\"some-lib\""* ]]; then fi # should produce named UMD modules -if [[ "$BAR_JS" != *"define(\"build_bazel_rules_typescript/examples/bar\""* ]]; then +if [[ "$BAR_JS" != *"define(\"npm_bazel_typescript/examples/bar\""* ]]; then echo "Expected bar.js to declare named module, but was" echo "$BAR_JS" exit 1 fi # should give a name to required modules -if [[ "$BAR_JS" != *"require(\"build_bazel_rules_typescript/examples/foo\")"* ]]; then +if [[ "$BAR_JS" != *"require(\"npm_bazel_typescript/examples/foo\")"* ]]; then echo "Expected bar.js to require named module foo, but was" echo "$BAR_JS" exit 1 @@ -60,7 +60,7 @@ if [[ "$BAR_JS" != *"require(\"some-lib\")"* ]]; then fi # should give a name to required generated modules without bazel-bin -if [[ "$BAR_JS" != *"require(\"build_bazel_rules_typescript/examples/generated_ts/foo\")"* ]]; then +if [[ "$BAR_JS" != *"require(\"npm_bazel_typescript/examples/generated_ts/foo\")"* ]]; then echo "Expected bar.js to require generated named module foo, but was" echo "$BAR_JS" exit 1 @@ -74,7 +74,7 @@ if [[ "$BAR_JS" != *"require(\"typescript\")"* ]]; then fi # should produce named UMD modules -if [[ "$FOO_JS" != *"define(\"build_bazel_rules_typescript/examples/foo\""* ]]; then +if [[ "$FOO_JS" != *"define(\"npm_bazel_typescript/examples/foo\""* ]]; then echo "Expected foo.js to declare named module, but was" echo "$FOO_JS" exit 1 diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/BUILD.bazel index efa1f62856..249e7282b1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/BUILD.bazel @@ -14,7 +14,7 @@ ts_devserver( name = "devserver", additional_root_paths = [ "npm/node_modules/tslib", - "build_bazel_rules_typescript/examples/devserver/", + "npm_bazel_typescript/examples/devserver/", ], port = 80, serving_path = "/bundle.js", diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_output_test.sh b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_output_test.sh index 81ba1f15f7..c6a0102f06 100755 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_output_test.sh +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_output_test.sh @@ -27,9 +27,9 @@ else fi # --- end runfiles.bash initialization --- -readonly FOO_JS=$(cat $(rlocation "build_bazel_rules_typescript/examples/es6_output/es6_output.es6/examples/foo.js")) -readonly BAR_JS=$(cat $(rlocation "build_bazel_rules_typescript/examples/es6_output/es6_output.es6/examples/bar.js")) -readonly LIBRARY_JS=$(cat $(rlocation "build_bazel_rules_typescript/examples/es6_output/es6_output.es6/examples/some_library/library.js")) +readonly FOO_JS=$(cat $(rlocation "npm_bazel_typescript/examples/es6_output/es6_output.es6/examples/foo.js")) +readonly BAR_JS=$(cat $(rlocation "npm_bazel_typescript/examples/es6_output/es6_output.es6/examples/bar.js")) +readonly LIBRARY_JS=$(cat $(rlocation "npm_bazel_typescript/examples/es6_output/es6_output.es6/examples/some_library/library.js")) # should not down-level ES2015 syntax, eg. `class` if [[ "$FOO_JS" != *"class Greeter"* ]]; then diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/googmodule_output_test.js b/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/googmodule_output_test.js index b3b4d403f0..82d9e209d8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/googmodule_output_test.js +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/googmodule_output_test.js @@ -4,13 +4,13 @@ describe('googmodule', () => { let output; beforeAll(() => { output = require.resolve( - 'build_bazel_rules_typescript/examples/googmodule/a.js'); + 'npm_bazel_typescript/examples/googmodule/a.js'); }); it('should have goog module syntax in devmode', () => { expect(fs.readFileSync(output, {encoding: 'utf-8'})) .toContain( - `goog.module('build_bazel_rules_typescript.examples.googmodule.a')`); + `goog.module('npm_bazel_typescript.examples.googmodule.a')`); }); it('should have tsickle type annotations', () => { expect(fs.readFileSync(output, { diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel index 16452de7f4..4594ffeff8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel @@ -1,7 +1,7 @@ -load("@build_bazel_rules_karma//:defaults.bzl", "ts_web_test_suite") load("@build_bazel_rules_nodejs//:defs.bzl", "http_server", "rollup_bundle") load("@io_bazel_rules_go//go:def.bzl", "go_library") load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") +load("@npm_bazel_karma//:defaults.bzl", "ts_web_test_suite") load( "//:defs.bzl", "ts_devserver", @@ -44,7 +44,7 @@ ts_library( ts_web_test_suite( name = "test", - bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"], + bootstrap = ["@npm_bazel_typescript//:protobufjs_bootstrap_scripts"], browsers = [ "@io_bazel_rules_webtesting//browsers:chromium-local", "@io_bazel_rules_webtesting//browsers:firefox-local", @@ -60,8 +60,8 @@ ts_library( ts_devserver( name = "devserver", - bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"], - entry_module = "build_bazel_rules_typescript/examples/protocol_buffers/app", + bootstrap = ["@npm_bazel_typescript//:protobufjs_bootstrap_scripts"], + entry_module = "npm_bazel_typescript/examples/protocol_buffers/app", port = 8080, deps = [":bundle"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/BUILD.bazel index a6ff1bf39c..ecd8224ac0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/BUILD.bazel @@ -39,7 +39,7 @@ nodejs_binary( ":main", ":some_module", ], - entry_point = "build_bazel_rules_typescript/examples/some_module/main.js", + entry_point = "npm_bazel_typescript/examples/some_module/main.js", ) sh_test( diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/module_load_test.sh b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/module_load_test.sh index 68cd275950..752979aea4 100755 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/module_load_test.sh +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/module_load_test.sh @@ -27,7 +27,7 @@ else fi # --- end runfiles.bash initialization --- -readonly OUT=$($(rlocation "build_bazel_rules_typescript/examples/some_module/bin")) +readonly OUT=$($(rlocation "npm_bazel_typescript/examples/some_module/bin")) if [ "$OUT" != "hello world" ]; then echo "Expected output 'hello world' but was $OUT" diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel index 287a3b9dd9..133ee68ecf 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel @@ -1,4 +1,4 @@ -load("@build_bazel_rules_karma//:defaults.bzl", "karma_web_test_suite", "ts_web_test_suite") +load("@npm_bazel_karma//:defaults.bzl", "karma_web_test_suite", "ts_web_test_suite") load("//internal:defaults.bzl", "ts_library") ts_library( diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.spec.ts index ebc6cbc4bd..6651308f31 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.spec.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.spec.ts @@ -1,6 +1,6 @@ const someGlobal = new Promise((resolve, reject) => { const script = document.createElement('script'); - script.src = `base/build_bazel_rules_typescript/examples/testing/static_script.js`; + script.src = `base/npm_bazel_typescript/examples/testing/static_script.js`; script.onerror = reject; script.onload = () => { document.body.removeChild(script); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 64174550f4..e9baf8eb97 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -85,7 +85,7 @@ nodejs_binary( "@npm//tsutils", "@npm//typescript", ], - entry_point = "build_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js", + entry_point = "npm_bazel_typescript/internal/tsc_wrapped/tsc_wrapped.js", visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/defaults.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/defaults.bzl index 1823e30837..9ef73e2f93 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/defaults.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/defaults.bzl @@ -15,14 +15,14 @@ "Defaults for rules_typescript repository not meant to be used downstream" load( - "@build_bazel_rules_typescript//:defs.bzl", + "@npm_bazel_typescript//:defs.bzl", _ts_library = "ts_library", ) # We can't use the defaults for ts_library compiler and ts_web_test_suite karma # internally because the defaults are .js dependencies on the npm packages that are # published and internally we are building the things themselves to publish to npm -INTERNAL_TS_LIBRARY_COMPILER = "@build_bazel_rules_typescript//internal:tsc_wrapped_bin" +INTERNAL_TS_LIBRARY_COMPILER = "@npm_bazel_typescript//internal:tsc_wrapped_bin" def ts_library(compiler = INTERNAL_TS_LIBRARY_COMPILER, **kwargs): _ts_library(compiler = compiler, **kwargs) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/BUILD.bazel index b626aaa7ca..ccdb610dbc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/BUILD.bazel @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@build_bazel_rules_typescript//internal:defaults.bzl", "ts_library") +load("@npm_bazel_typescript//internal:defaults.bzl", "ts_library") package(default_visibility = ["//visibility:public"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel index 85122f3d84..e401902c07 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@build_bazel_rules_karma//:defs.bzl", "ts_web_test_suite") +load("@npm_bazel_karma//:defs.bzl", "ts_web_test_suite") ts_web_test_suite( name = "testing", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE index 6545390f45..e86f32042f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE @@ -36,7 +36,7 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_karma//:package.bzl", "rules_karma_dependencies") +load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies") rules_karma_dependencies() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock index 00bda136c7..392dea6cd2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@bazel/karma@file:../../../../../../../../../private/var/tmp/_bazel_greg/8018d2bc8e133e0b44c274b6423215ba/execroot/build_bazel_rules_karma/bazel-out/darwin-fastbuild/bin/npm_package": +"@bazel/karma@file:../../../../../../../../../private/var/tmp/_bazel_greg/8018d2bc8e133e0b44c274b6423215ba/execroot/npm_bazel_karma/bazel-out/darwin-fastbuild/bin/npm_package": version "0.0.0" dependencies: jasmine-core "2.8.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/BUILD.bazel index 6a0ed2467f..63535a46ab 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/BUILD.bazel @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@build_bazel_rules_karma//:defs.bzl", "ts_web_test_suite") -load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") +load("@npm_bazel_karma//:defs.bzl", "ts_web_test_suite") +load("@npm_bazel_typescript//:defs.bzl", "ts_library") package(default_visibility = ["//visibility:public"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE index 20b5d217ff..2a3dcc998c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE @@ -36,7 +36,7 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_karma//:package.bzl", "rules_karma_dependencies") +load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies") rules_karma_dependencies() @@ -49,6 +49,6 @@ browser_repositories( firefox = True, ) -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") +load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/BUILD.bazel index 6ffe7a79da..100ddf298d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/BUILD.bazel @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_library") package(default_visibility = ["//visibility:public"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/yarn.lock index 7436e4734c..c6588b228c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@bazel/karma@file:../../../../../../../../../private/var/tmp/_bazel_greg/8018d2bc8e133e0b44c274b6423215ba/execroot/build_bazel_rules_karma/bazel-out/darwin-fastbuild/bin/npm_package": +"@bazel/karma@file:../../../../../../../../../private/var/tmp/_bazel_greg/8018d2bc8e133e0b44c274b6423215ba/execroot/npm_bazel_karma/bazel-out/darwin-fastbuild/bin/npm_package": version "0.0.0" dependencies: jasmine-core "2.8.0" @@ -17,7 +17,7 @@ semver "5.6.0" tmp "0.0.33" -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": version "0.22.1-41-gc1f5737" dependencies: jasmine-core "2.8.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/BUILD.bazel index c42feee377..e2311f12c0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/BUILD.bazel @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@build_bazel_rules_karma//:defs.bzl", "ts_web_test_suite") -load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") +load("@npm_bazel_karma//:defs.bzl", "ts_web_test_suite") +load("@npm_bazel_typescript//:defs.bzl", "ts_library") ts_library( name = "lib", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE index 07b71008a6..cdf3cac4f2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE @@ -36,7 +36,7 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_karma//:package.bzl", "rules_karma_dependencies") +load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies") rules_karma_dependencies() @@ -49,6 +49,6 @@ browser_repositories( firefox = True, ) -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") +load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/yarn.lock index d6c3344218..e72c0ff2a2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@bazel/karma@file:../../../../../../../../../private/var/tmp/_bazel_greg/8018d2bc8e133e0b44c274b6423215ba/execroot/build_bazel_rules_karma/bazel-out/darwin-fastbuild/bin/npm_package": +"@bazel/karma@file:../../../../../../../../../private/var/tmp/_bazel_greg/8018d2bc8e133e0b44c274b6423215ba/execroot/npm_bazel_karma/bazel-out/darwin-fastbuild/bin/npm_package": version "0.0.0" dependencies: jasmine-core "2.8.0" @@ -17,7 +17,7 @@ semver "5.6.0" tmp "0.0.33" -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": version "0.22.1-41-gc1f5737" dependencies: jasmine-core "2.8.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE index be2a4dbdaa..3dddfc8b18 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE @@ -36,6 +36,6 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") +load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/yarn.lock index cff6e8d9a0..6a6c9f2ecc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": version "0.22.1-41-gc1f5737" dependencies: jasmine-core "2.8.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/BUILD.bazel index 0b4ec011de..dd6eeef0f0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/BUILD.bazel @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver", "ts_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_devserver", "ts_library") ts_library( name = "app", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE index 703cac1a16..95df7348fa 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE @@ -36,6 +36,6 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") +load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/yarn.lock index 0f87dee240..64043372ca 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": version "0.22.1-41-gc1f5737" dependencies: jasmine-core "2.8.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel index e7cccf4619..0f08b301f4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel @@ -13,7 +13,7 @@ # limitations under the License. load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") -load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_library") ts_library( name = "main", @@ -36,7 +36,7 @@ jasmine_node_test( name = "test", data = [ # Verify that worker_protocol.proto can be referenced as a target in the generated npm bazel workspace - "@build_bazel_rules_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", + "@npm_bazel_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", ], deps = [ ":test_lib", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE index 7cdc694997..edbf762549 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE @@ -36,6 +36,6 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") +load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock index 00b356bce8..3ccf2bfcd5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": version "0.22.1-41-gc1f5737" dependencies: jasmine-core "2.8.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/BUILD.bazel index e7cccf4619..0f08b301f4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/BUILD.bazel @@ -13,7 +13,7 @@ # limitations under the License. load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") -load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_library") ts_library( name = "main", @@ -36,7 +36,7 @@ jasmine_node_test( name = "test", data = [ # Verify that worker_protocol.proto can be referenced as a target in the generated npm bazel workspace - "@build_bazel_rules_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", + "@npm_bazel_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", ], deps = [ ":test_lib", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE index ca44e458e2..55c47cc60e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE @@ -36,6 +36,6 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") +load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock index 0f79fc4c8a..b5348dcf01 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": version "0.22.1-41-gc1f5737" dependencies: jasmine-core "2.8.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/BUILD.bazel index e7cccf4619..0f08b301f4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/BUILD.bazel @@ -13,7 +13,7 @@ # limitations under the License. load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") -load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_library") ts_library( name = "main", @@ -36,7 +36,7 @@ jasmine_node_test( name = "test", data = [ # Verify that worker_protocol.proto can be referenced as a target in the generated npm bazel workspace - "@build_bazel_rules_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", + "@npm_bazel_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", ], deps = [ ":test_lib", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE index 5631a12590..a01a0f0cfa 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE @@ -36,6 +36,6 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") +load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock index 36885d1920..8ac413b119 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": version "0.22.1-41-gc1f5737" dependencies: jasmine-core "2.8.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/BUILD.bazel index e7cccf4619..0f08b301f4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/BUILD.bazel @@ -13,7 +13,7 @@ # limitations under the License. load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") -load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_library") ts_library( name = "main", @@ -36,7 +36,7 @@ jasmine_node_test( name = "test", data = [ # Verify that worker_protocol.proto can be referenced as a target in the generated npm bazel workspace - "@build_bazel_rules_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", + "@npm_bazel_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", ], deps = [ ":test_lib", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE index 6a741b6878..55c70816f1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE @@ -36,6 +36,6 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") +load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock index 88ed70c018..887715e8af 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": version "0.22.1-41-gc1f5737" dependencies: jasmine-core "2.8.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/BUILD.bazel index e7cccf4619..0f08b301f4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/BUILD.bazel @@ -13,7 +13,7 @@ # limitations under the License. load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") -load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_library") ts_library( name = "main", @@ -36,7 +36,7 @@ jasmine_node_test( name = "test", data = [ # Verify that worker_protocol.proto can be referenced as a target in the generated npm bazel workspace - "@build_bazel_rules_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", + "@npm_bazel_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", ], deps = [ ":test_lib", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE index 6a741b6878..55c70816f1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE @@ -36,6 +36,6 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") +load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock index 2b15616400..be3dbed117 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/build_bazel_rules_typescript/bazel-out/darwin-fastbuild/bin/npm_package": +"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": version "0.22.1-41-gc1f5737" dependencies: jasmine-core "2.8.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/BUILD.bazel index 042f54675c..693fc5fa94 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/BUILD.bazel @@ -13,19 +13,19 @@ # limitations under the License. load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") -load("@build_bazel_rules_typescript//:defs.bzl", "ts_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_library") ts_library( name = "main", srcs = ["main.ts"], - compiler = "@build_bazel_rules_typescript//internal:tsc_wrapped_bin", + compiler = "@npm_bazel_typescript//internal:tsc_wrapped_bin", ) ts_library( name = "test_lib", testonly = True, srcs = glob(["*.spec.ts"]), - compiler = "@build_bazel_rules_typescript//internal:tsc_wrapped_bin", + compiler = "@npm_bazel_typescript//internal:tsc_wrapped_bin", deps = [ ":main", "@npm//@types/jasmine", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/WORKSPACE index ab0e7c3dd9..d53e1b5bff 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/WORKSPACE @@ -15,11 +15,11 @@ workspace(name = "typescript_31") local_repository( - name = "build_bazel_rules_typescript", + name = "npm_bazel_typescript", path = "../../..", ) -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dev_dependencies") +load("@npm_bazel_typescript//:package.bzl", "rules_typescript_dev_dependencies") rules_typescript_dev_dependencies() @@ -33,6 +33,6 @@ yarn_install( yarn_lock = "//:yarn.lock", ) -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") +load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel index 7fcc0b853b..2c1cfc3e03 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel @@ -16,8 +16,8 @@ # Parts of this BUILD file only necessary when building within the bazelbuild/rules_typescript repo. # The generated `@bazel/karma` npm package contains a trimmed BUILD file using # DEV-ONLY fences. load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary", "npm_package") -load("@build_bazel_rules_typescript//:version.bzl", "COMPAT_VERSION") -load("@build_bazel_rules_typescript//internal:defaults.bzl", "ts_library") +load("@npm_bazel_typescript//:version.bzl", "COMPAT_VERSION") +load("@npm_bazel_typescript//internal:defaults.bzl", "ts_library") package(default_visibility = ["//visibility:public"]) @@ -60,7 +60,7 @@ nodejs_binary( genrule( name = "license_copy", - srcs = ["@build_bazel_rules_typescript//:LICENSE"], + srcs = ["@npm_bazel_typescript//:LICENSE"], outs = ["LICENSE"], cmd = "cp $< $@", ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/WORKSPACE index 3e166d8714..a2a340109c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/WORKSPACE @@ -12,16 +12,16 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "build_bazel_rules_karma") +workspace(name = "npm_bazel_karma") -# Load nested build_bazel_rules_typescript repository +# Load nested npm_bazel_typescript repository local_repository( - name = "build_bazel_rules_typescript", + name = "npm_bazel_typescript", path = "../..", ) # Load our dependencies -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dev_dependencies") +load("@npm_bazel_typescript//:package.bzl", "rules_typescript_dev_dependencies") rules_typescript_dev_dependencies() @@ -49,6 +49,6 @@ load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") gazelle_dependencies() # Setup typescript toolchain -load("@build_bazel_rules_typescript//:defs.bzl", "ts_setup_workspace") +load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/defaults.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/defaults.bzl index 7e891dd7ed..954a99152a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/defaults.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/defaults.bzl @@ -15,14 +15,14 @@ "Defaults for rules_karma repository not meant to be used downstream" load( - "@build_bazel_rules_karma//:defs.bzl", + "@npm_bazel_karma//:defs.bzl", _karma_web_test = "karma_web_test", _karma_web_test_suite = "karma_web_test_suite", _ts_web_test = "ts_web_test", _ts_web_test_suite = "ts_web_test_suite", ) -INTERNAL_KARMA_BIN = "@build_bazel_rules_karma//:karma_bin" +INTERNAL_KARMA_BIN = "@npm_bazel_karma//:karma_bin" def karma_web_test(karma = INTERNAL_KARMA_BIN, **kwargs): _karma_web_test(karma = karma, **kwargs) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl index b1bab2d5dc..2002fd22b2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl @@ -43,7 +43,7 @@ KARMA_GENERIC_WEB_TEST_ATTRS = dict(COMMON_WEB_TEST_ATTRS, **{ doc = """Arbitrary files which are available to be served on request. Files are served at: `/base//`, e.g. - `/base/build_bazel_rules_typescript/examples/testing/static_script.js`""", + `/base/npm_bazel_typescript/examples/testing/static_script.js`""", allow_files = True, ), "runtime_deps": attr.label_list( @@ -332,7 +332,7 @@ def karma_web_test( static_files: Arbitrary files which are available to be served on request. Files are served at: `/base//`, e.g. - `/base/build_bazel_rules_typescript/examples/testing/static_script.js` + `/base/npm_bazel_typescript/examples/testing/static_script.js` config_file: User supplied Karma configuration file. Bazel will override certain attributes of this configuration file. Attributes that are overridden will be outputted to the test log. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl index 1d0832ccb1..ed31fee881 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Package file which defines build_bazel_rules_karma dependencies +"""Package file which defines npm_bazel_karma dependencies """ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json index 9f04bff1d5..5f71978dcd 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json @@ -38,7 +38,7 @@ "jasmine-core": "2.8.0" }, "bazelWorkspaces": { - "build_bazel_rules_karma": { + "npm_bazel_karma": { "version": "0.0.0-PLACEHOLDER", "compatVersion": "0.0.0-COMPAT_VERSION", "rootPath": "." diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl index 9189076a71..ab5329b29a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl @@ -86,7 +86,7 @@ def ts_web_test( static_files: Arbitrary files which are available to be served on request. Files are served at: `/base//`, e.g. - `/base/build_bazel_rules_typescript/examples/testing/static_script.js` + `/base/npm_bazel_typescript/examples/testing/static_script.js` tags: Standard Bazel tags, this macro adds tags for ibazel support as well as `browser:chromium-system` to allow for filtering on systems with no system Chrome. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl index 7c6e58e176..807dea0fd8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl @@ -144,7 +144,7 @@ a `ts_library` can appear, such as in the `deps[]` of another `ts_library`. Example: ``` -load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_proto_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_library", "ts_proto_library") proto_library( name = "car_proto", @@ -172,18 +172,18 @@ name the rule differently from the output file. The JavaScript produced by protobuf.js has a runtime dependency on a support library. Under devmode (e.g. `ts_devserver`, `ts_web_test_suite`) you'll need to include these scripts in the `bootstrap` phase (before Require.js loads). You can use the label -`@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts` to reference these scripts +`@npm_bazel_typescript//:protobufjs_bootstrap_scripts` to reference these scripts in the `bootstrap` attribute of `ts_web_test_suite` or `ts_devserver`. To complete the example above, you could write a `ts_web_test_suite`: ``` -load("@build_bazel_rules_karma//:defs.bzl", "ts_web_test_suite") +load("@npm_bazel_karma//:defs.bzl", "ts_web_test_suite") ts_web_test_suite( name = "test", deps = ["test_lib"], - bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"], + bootstrap = ["@npm_bazel_typescript//:protobufjs_bootstrap_scripts"], browsers = [ "@io_bazel_rules_webtesting//browsers:chromium-local", "@io_bazel_rules_webtesting//browsers:firefox-local", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl index 2a90a70f15..16c3e40cd3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl @@ -40,20 +40,20 @@ def ts_setup_workspace(): # @build_bazel_rules_typescript_tsc_wrapped_deps is not used locally. yarn_install( name = "build_bazel_rules_typescript_tsc_wrapped_deps", - package_json = "@build_bazel_rules_typescript//internal:tsc_wrapped/package.json", - yarn_lock = "@build_bazel_rules_typescript//internal:tsc_wrapped/yarn.lock", + package_json = "@npm_bazel_typescript//internal:tsc_wrapped/package.json", + yarn_lock = "@npm_bazel_typescript//internal:tsc_wrapped/yarn.lock", ) yarn_install( name = "build_bazel_rules_typescript_devserver_deps", - package_json = "@build_bazel_rules_typescript//internal/devserver:package.json", - yarn_lock = "@build_bazel_rules_typescript//internal/devserver:yarn.lock", + package_json = "@npm_bazel_typescript//internal/devserver:package.json", + yarn_lock = "@npm_bazel_typescript//internal/devserver:yarn.lock", ) yarn_install( name = "build_bazel_rules_typescript_protobufs_compiletime_deps", - package_json = "@build_bazel_rules_typescript//internal/protobufjs:package.json", - yarn_lock = "@build_bazel_rules_typescript//internal/protobufjs:yarn.lock", + package_json = "@npm_bazel_typescript//internal/protobufjs:package.json", + yarn_lock = "@npm_bazel_typescript//internal/protobufjs:yarn.lock", ) # BEGIN-DEV-ONLY diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index be88028c67..900d106ca9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Package file which defines build_bazel_rules_typescript dependencies +"""Package file which defines npm_bazel_typescript dependencies """ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") @@ -22,7 +22,7 @@ def rules_typescript_dependencies(): rules_typescript_dependencies is no longer needed, and will be removed in a future release. We assume you will fetch rules_nodejs in your WORKSPACE file, and no other dependencies remain here. Simply remove any calls to this function and the corresponding call to - load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies") + load("@npm_bazel_typescript//:package.bzl", "rules_typescript_dependencies") """) def rules_typescript_dev_dependencies(): @@ -83,7 +83,7 @@ def rules_typescript_dev_dependencies(): # io_bazel_rules_webtesting depends on bazel_skylib. It is installed by # web_test_repositories() but we depend on it here in case users don't call # web_test_repositories(). This will get cleaned up by https://github.com/bazelbuild/rules_typescript/pull/374 - # which introduces build_bazel_rules_karma with its own defs.bzl file + # which introduces npm_bazel_karma with its own defs.bzl file # that will allow this dep to be removed from rules_typescript_dependencies() _maybe( http_archive, diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 8b9df61991..ba5d33d2b2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -51,7 +51,7 @@ "which": "~1.0.5" }, "bazelWorkspaces": { - "build_bazel_rules_typescript": { + "npm_bazel_typescript": { "version": "0.0.0-PLACEHOLDER", "compatVersion": "0.0.0-COMPAT_VERSION", "rootPath": "." diff --git a/third_party/github.com/bazelbuild/rules_typescript/version.bzl b/third_party/github.com/bazelbuild/rules_typescript/version.bzl index 1f97561669..42b13de742 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/version.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/version.bzl @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Package file which defines build_bazel_rules_typescript version in skylark +"""Package file which defines npm_bazel_typescript version in skylark """ load("@build_bazel_rules_nodejs//internal/common:check_version.bzl", "check_version") @@ -26,9 +26,9 @@ COMPAT_VERSION = "0.24.0" def check_rules_typescript_version(version_string): """ - Verify that a compatible build_bazel_rules_typescript is loaded a WORKSPACE. + Verify that a compatible npm_bazel_typescript is loaded a WORKSPACE. - Where COMPAT_VERSION and VERSION come from the build_bazel_rules_typescript that + Where COMPAT_VERSION and VERSION come from the npm_bazel_typescript that is loaded in a WORKSPACE, this function will check: VERSION >= version_string >= COMPAT_VERSION @@ -38,18 +38,18 @@ def check_rules_typescript_version(version_string): ``` # in WORKSPACE: - load("@build_bazel_rules_typescript//:defs.bzl", "check_rules_typescript_version") + load("@npm_bazel_typescript//:defs.bzl", "check_rules_typescript_version") check_rules_typescript_version(version_string = "0.22.0") ``` Args: version_string: A version string to check for compatibility with the loaded version - of build_bazel_rules_typescript. The version check performed is + of npm_bazel_typescript. The version check performed is `VERSION >= version_string >= COMPAT_VERSION` where VERSION and COMPAT_VERSION - come from the loaded version of build_bazel_rules_typescript. + come from the loaded version of npm_bazel_typescript. """ if not check_version(VERSION, version_string) or not check_version(version_string, COMPAT_VERSION): - fail("\nLoaded build_bazel_rules_typescript version {} with mimimum compat version of {} is not compatible with checked version {}!\n\n".format( + fail("\nLoaded npm_bazel_typescript version {} with mimimum compat version of {} is not compatible with checked version {}!\n\n".format( VERSION, COMPAT_VERSION, version_string, From 4dc32e4a9fc9184edbb7371b9afe113d4332ed28 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Mon, 11 Feb 2019 14:38:08 -0800 Subject: [PATCH 0536/1134] Fix broken CircleCI Missed a spot where build_bazel_rules_typescript needs renamed to npm_bazel_typescript PiperOrigin-RevId: 233481401 --- .../internal/e2e/default_tsconfig_test.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js index a71affd140..dd909a4742 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js @@ -23,11 +23,11 @@ const os = require('os'); const tmpdir = fs.mkdtempSync(path.join(os.tmpdir(), 'wksp')); const WORKSPACE_BOILERPLATE = ` local_repository( - name = "build_bazel_rules_typescript", + name = "npm_bazel_typescript", path = "${process.cwd()}", ) # Using rules_typescript_dev_dependencies for this test since we're not depending on the generated npm package -load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dev_dependencies") +load("@npm_bazel_typescript//:package.bzl", "rules_typescript_dev_dependencies") rules_typescript_dev_dependencies() load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") node_repositories() @@ -37,7 +37,7 @@ yarn_install( yarn_lock = "//:yarn.lock", ) # Using ts_setup_dev_workspace for this test since we're not depending on the generated npm package -load("@build_bazel_rules_typescript//internal:ts_repositories.bzl", "ts_setup_dev_workspace") +load("@npm_bazel_typescript//internal:ts_repositories.bzl", "ts_setup_dev_workspace") ts_setup_dev_workspace() `; @@ -388,8 +388,8 @@ ${WORKSPACE_BOILERPLATE}`); write('a/BUILD', ` # We use ts_library from internal/defaults.bzl since we don't have a @bazel/typescript npm # package in this test. This changes the ts_library compiler from the default -# which depends on @npm//@bazel/typescript which is not available in this test to '@build_bazel_rules_typescript//internal:tsc_wrapped_bin' which is -load("@build_bazel_rules_typescript//internal:defaults.bzl", "ts_library") +# which depends on @npm//@bazel/typescript which is not available in this test to '@npm_bazel_typescript//internal:tsc_wrapped_bin' which is +load("@npm_bazel_typescript//internal:defaults.bzl", "ts_library") ts_library( name = "a_lib", srcs=["has_implicit_any.ts"], @@ -411,8 +411,8 @@ ${WORKSPACE_BOILERPLATE}`); write('b/BUILD', ` # We use ts_library from internal/defaults.bzl since we don't have a @bazel/typescript npm # package in this test. This changes the ts_library compiler from the default -# which depends on @npm//@bazel/typescript which is not available in this test to '@build_bazel_rules_typescript//internal:tsc_wrapped_bin' which is -load("@build_bazel_rules_typescript//internal:defaults.bzl", "ts_library") +# which depends on @npm//@bazel/typescript which is not available in this test to '@npm_bazel_typescript//internal:tsc_wrapped_bin' which is +load("@npm_bazel_typescript//internal:defaults.bzl", "ts_library") exports_files(["tsconfig.json"]) ts_library( name = "b_lib", From caacd35cac2701ba7bf966650cd69f4a02f38d75 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 11 Feb 2019 15:29:09 -0800 Subject: [PATCH 0537/1134] rel: 0.25.0 --- third_party/github.com/bazelbuild/rules_typescript/README.md | 4 ++-- third_party/github.com/bazelbuild/rules_typescript/WORKSPACE | 2 +- .../github.com/bazelbuild/rules_typescript/package.json | 2 +- .../github.com/bazelbuild/rules_typescript/version.bzl | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index d696a902a1..736956d50d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -25,8 +25,8 @@ Optionally add the `@bazel/karma` npm package if you would like to use the { ... "devDependencies": { - "@bazel/typescript": "0.24.1", - "@bazel/karma": "0.24.1", + "@bazel/typescript": "0.25.0", + "@bazel/karma": "0.25.0", ... }, ... diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index f7cfc7dc78..e58de6ada4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -77,7 +77,7 @@ ts_setup_dev_workspace() # Test that check_rules_typescript_version works as expected load("//:defs.bzl", "check_rules_typescript_version") -check_rules_typescript_version(version_string = "0.24.1") +check_rules_typescript_version(version_string = "0.25.0") # Dependencies for generating documentation load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index ba5d33d2b2..9dacadb29e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,7 +3,7 @@ "description": "TypeScript rules for Bazel", "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", - "version": "0.24.1", + "version": "0.25.0", "keywords": [ "typescript", "bazel" diff --git a/third_party/github.com/bazelbuild/rules_typescript/version.bzl b/third_party/github.com/bazelbuild/rules_typescript/version.bzl index 42b13de742..570c649b1b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/version.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/version.bzl @@ -17,12 +17,12 @@ load("@build_bazel_rules_nodejs//internal/common:check_version.bzl", "check_version") -VERSION = "0.24.1" +VERSION = "0.25.0" # This version is the minimum version that is API compatible with this version # of rules_typescript. This version should be updated to equal VERSION for # releases with breaking changes and/or new features. -COMPAT_VERSION = "0.24.0" +COMPAT_VERSION = "0.25.0" def check_rules_typescript_version(version_string): """ From cc49db2e72ab1c07d55b291b377b641aae9e7e33 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Tue, 12 Feb 2019 19:09:52 -0800 Subject: [PATCH 0538/1134] Generate npm_packages in internal/e2e/npm_packages/test.sh for smoother local testing Closes #416 PiperOrigin-RevId: 233672246 --- .../internal/e2e/npm_packages/test.sh | 14 +++++++++----- .../bazelbuild/rules_typescript/package.json | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/test.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/test.sh index 12be17e9d1..306b2f7e8a 100755 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/test.sh +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/test.sh @@ -2,8 +2,9 @@ set -u -e -o pipefail -cd $(dirname "$0") -TESTS_ROOT_DIR=$(pwd) +TESTS_ROOT_DIR=$(cd $(dirname "$0"); pwd) +TYPESCRIPT_ROOT_DIR=$(cd $TESTS_ROOT_DIR/../../..; pwd) +KARMA_ROOT_DIR=$(cd $TESTS_ROOT_DIR/../../../internal/karma; pwd) echo "" echo "#################################################################################" @@ -15,16 +16,19 @@ echo "" echo "Run this script with '--update-lock-files' to update yarn.lock files instead of running tests" echo "" -# Determine the absolute paths to the generated @bazel/typescript and @bazel/karma npm packages -cd $TESTS_ROOT_DIR/../../.. +# Generate the npm packages @bazel/typescript and @bazel/karma npm packages and +# determine their absolute paths in bazel-bin +cd $TYPESCRIPT_ROOT_DIR BAZEL=$(pwd)/node_modules/.bin/bazel if [[ ! -f $BAZEL ]] ; then echo "Bazel not found under $BAZEL" exit 1 fi +$BAZEL build //:npm_package BAZEL_BIN_TYPESCRIPT=$($BAZEL info bazel-bin) BAZEL_TYPESCRIPT_NPM_PACKAGE=$BAZEL_BIN_TYPESCRIPT/npm_package -cd $TESTS_ROOT_DIR/../../../internal/karma +cd $KARMA_ROOT_DIR +$BAZEL build //:npm_package BAZEL_BIN_KARMA=$($BAZEL info bazel-bin) BAZEL_KARMA_NPM_PACKAGE=$BAZEL_BIN_KARMA/npm_package echo "@bazel/typescript: $BAZEL_TYPESCRIPT_NPM_PACKAGE" diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 9dacadb29e..b416f5f424 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -58,7 +58,7 @@ } }, "scripts": { - "pree2e": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG && bazel build //examples/app:e2e //examples/protocol_buffers:e2e //:npm_package && cd internal/karma; bazel build //:npm_package", + "pree2e": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG && bazel build //examples/app:e2e //examples/protocol_buffers:e2e", "e2e": "yarn e2e-bazel-external && yarn e2e-examples-app-devserver && yarn e2e-examples-app-prodserver && yarn e2e-examples-protobuf-devserver && yarn e2e-examples-protobuf-prodserver && yarn e2e-npm_packages && yarn e2e-typescript_3.1", "e2e-bazel-external": "jasmine internal/e2e/default_tsconfig_test.js", "e2e-examples-app-devserver": "concurrently \"bazel run //examples/app:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", From afd1b27b37f0db0884ceb23e86b7162cfb61c0aa Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Tue, 12 Feb 2019 21:53:13 -0800 Subject: [PATCH 0539/1134] Add docs for karma rules Closes #417 PiperOrigin-RevId: 233688614 --- .../bazelbuild/rules_typescript/DEVELOPING.md | 6 +- .../bazelbuild/rules_typescript/README.md | 34 +- .../rules_typescript/docs/BUILD.bazel | 3 - .../internal/karma/.gitignore | 2 + .../rules_typescript/internal/karma/WORKSPACE | 25 +- .../internal/karma/docs/BUILD.bazel | 10 + .../internal/karma/docs/index.md | 89 +++++ .../internal/karma/docs/install.md | 80 +++++ .../internal/karma/docs/karma_web_test.md | 315 ++++++++++++++++++ .../internal/karma/docs/ts_web_test.md | 272 +++++++++++++++ .../internal/karma/package.json | 3 + 11 files changed, 798 insertions(+), 41 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/.gitignore create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/index.md create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/install.md create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/karma_web_test.md create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/ts_web_test.md diff --git a/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md b/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md index f45639b5f1..81bc6e126f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md +++ b/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md @@ -56,14 +56,14 @@ changes since the last tag - if so, this will be a minor, if not, it's a patch. (This may not sound like semver - but since our major version is a zero, the rule is that minors are breaking changes and patches are new features). -1. Re-generate the API docs: `yarn skydoc` +1. Re-generate the API docs: `yarn skydoc && (cd internal/karma; yarn skydoc)` 1. May be necessary if Go code has changed though probably it was already necessary to run this to keep CI green: `bazel run :gazelle` 1. If we depend on a newer rules_nodejs, update the `check_rules_nodejs_version` in `ts_repositories.bzl` 1. `git commit -a -m 'Update docs for release'` 1. `npm config set tag-version-prefix ''` 1. `npm version minor -m 'rel: %s'` (replace `minor` with `patch` if no breaking changes) -1. Build npm packages and publish them: `TMP=$(mktemp -d -t bazel-release.XXXXXXX); bazel --output_base=$TMP run //:npm_package.publish && cd internal/karma && bazel --output_base=$TMP run //:npm_package.publish` -1. `git push && git push --tags` +1. Build npm packages and publish them: `TMP=$(mktemp -d -t bazel-release.XXXXXXX); bazel --output_base=$TMP run //:npm_package.publish && ( cd internal/karma && bazel --output_base=$TMP run //:npm_package.publish )` +1. `git push upstream && git push upstream --tags` (assumes you named the bazelbuild fork as "upstream") 1. (Temporary): submit a google3 CL to update the versions in package.bzl and package.json [releases]: https://github.com/bazelbuild/rules_typescript/releases diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 736956d50d..b404de88e5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -8,6 +8,9 @@ Circle CI | Bazel CI The TypeScript rules integrate the TypeScript compiler with Bazel. +This repo used to contain Karma rules `ts_web_test` and `karma_web_test`. +These are now documented in the README at http://npmjs.com/package/@bazel/karma + ## API Docs Generated documentation for using each rule is at: @@ -18,15 +21,12 @@ http://tsetse.info/api/ First, install a current Bazel distribution. Add the `@bazel/typescript` npm package to your `package.json` `devDependencies`. -Optionally add the `@bazel/karma` npm package if you would like to use the -`ts_web_test`, `ts_web_test_suite`, `karma_web_test` or `karma_web_test_suite` rules. ``` { ... "devDependencies": { "@bazel/typescript": "0.25.0", - "@bazel/karma": "0.25.0", ... }, ... @@ -59,7 +59,7 @@ load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install" node_repositories() # Setup Bazel managed npm dependencies with the `yarn_install` rule. -# The name of this rule should be set to `npm` so that `ts_library` and `ts_web_test_suite` +# The name of this rule should be set to `npm` so that `ts_library` # can find your npm dependencies by default in the `@npm` workspace. You may # also use the `npm_install` rule with a `package-lock.json` file if you prefer. # See https://github.com/bazelbuild/rules_nodejs#dependencies for more info. @@ -73,23 +73,9 @@ yarn_install( load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() -# Fetch transitive Bazel dependencies of npm_bazel_karma -# ONLY REQUIRED if you are using the @bazel/karma npm package -load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies") -rules_karma_dependencies() - # Setup TypeScript toolchain load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() - -# Setup web testing, choose browsers we can test on -# ONLY REQUIRED if you are using the @bazel/karma npm package -load("@io_bazel_rules_webtesting//web:repositories.bzl", "browser_repositories", "web_test_repositories") - -web_test_repositories() -browser_repositories( - chromium = True, -) ``` # Self-managed npm dependencies @@ -143,15 +129,6 @@ nodejs_binary( # Point bazel to your node_modules to find the entry point node_modules = ["//:node_modules"], ) - -# Create a karma rule to use in ts_web_test_suite karma -# attribute when using self-managed dependencies -nodejs_binary( - name = "karma/karma", - entry_point = "karma/bin/karma", - # Point bazel to your node_modules to find the entry point - node_modules = ["//:node_modules"], -) ``` See https://github.com/bazelbuild/rules_nodejs#dependencies for more information on @@ -325,7 +302,4 @@ If you'd like a "watch mode", try https://github.com/bazelbuild/bazel-watcher At some point, we plan to release a tool similar to [gazelle] to generate the BUILD files from your source code. -In the meantime, we suggest associating the `.bazel` extension with Python in -your editor, so that you get useful syntax highlighting. - [gazelle]: https://github.com/bazelbuild/rules_go/tree/master/go/tools/gazelle diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/docs/BUILD.bazel index edd71438e2..019f3dcdd1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/BUILD.bazel @@ -8,9 +8,6 @@ skylark_doc( "//internal:ts_repositories.bzl", "//internal/devserver:ts_devserver.bzl", "//internal/protobufjs:ts_proto_library.bzl", - # TODO(gregmagolan): fix docs for npm_bazel_karma - # "@npm_bazel_karma//:karma_web_test.bzl", - # "@npm_bazel_karma//:ts_web_test.bzl", ], format = "html", # The site is served at http://tsetse.info so the URL doesn't include a diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/.gitignore b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/.gitignore new file mode 100644 index 0000000000..bae2b58568 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/.gitignore @@ -0,0 +1,2 @@ +# This file is generated during the build +README.md diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/WORKSPACE index a2a340109c..f584c27397 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/WORKSPACE @@ -43,12 +43,27 @@ yarn_install( yarn_lock = "//:yarn.lock", ) -# Setup gazelle toolchain -load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") - -gazelle_dependencies() - # Setup typescript toolchain load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") ts_setup_workspace() + +# Dependencies for generating documentation +load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") + +sass_repositories() + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "com_google_protobuf", + strip_prefix = "protobuf-3.6.1.3", + sha256 = "9510dd2afc29e7245e9e884336f848c8a6600a14ae726adb6befdb4f786f0be2", + # v3.6.1.3 as of 2019-01-15 + urls = ["https://github.com/protocolbuffers/protobuf/archive/v3.6.1.3.zip"], + type = "zip", +) + +load("@io_bazel_skydoc//skylark:skylark.bzl", "skydoc_repositories") + +skydoc_repositories() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/BUILD.bazel new file mode 100644 index 0000000000..dc0a3bc946 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/BUILD.bazel @@ -0,0 +1,10 @@ +load("@io_bazel_skydoc//skylark:skylark.bzl", "skylark_doc") + +skylark_doc( + name = "docs", + srcs = [ + "//:karma_web_test.bzl", + "//:ts_web_test.bzl", + ], + format = "markdown", +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/index.md b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/index.md new file mode 100644 index 0000000000..697f82ff73 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/index.md @@ -0,0 +1,89 @@ + +# Overview + + + + +

                      Unit testing with Karma

                      + +

                      Macros

                      + + + + + + + + + + + + + + + + + + + +
                      + + run_karma_web_test + + +

                      Creates an action that can run karma.

                      + +
                      + + karma_web_test + + +

                      Runs unit tests in a browser with Karma.

                      + +
                      + + karma_web_test_suite + + +

                      Defines a test_suite of web_test targets that wrap a karma_web_test target.

                      + +
                      +

                      Unit testing in a browser

                      + +

                      Macros

                      + + + + + + + + + + + + + + + +
                      + + ts_web_test + + +

                      Runs unit tests in a browser.

                      + +
                      + + ts_web_test_suite + + +

                      Defines a test_suite of web_test targets that wrap a ts_web_test target.

                      + +
                      diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/install.md b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/install.md new file mode 100644 index 0000000000..e04b558419 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/install.md @@ -0,0 +1,80 @@ +# Karma rules for Bazel + +**WARNING: this is beta-quality software. Breaking changes are likely. Not recommended for production use without expert support.** + +The Karma rules run karma tests with Bazel. + +## Installation + +Add the `@bazel/karma` npm package to your `devDependencies` in `package.json`. + +Your `WORKSPACE` should declare a `yarn_install` or `npm_install` rule named `npm`. +It should then install the rules found in the npm packages. + +This is copied from the README for rules_nodejs: + +```python +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +# Fetch rules_nodejs +# (you can check https://github.com/bazelbuild/rules_nodejs/releases for a newer release than this) +http_archive( + name = "build_bazel_rules_nodejs", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], + sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", +) + +# Setup the NodeJS toolchain +load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") +node_repositories() + +yarn_install( + name = "npm", + package_json = "//:package.json", + yarn_lock = "//:yarn.lock", +) + +# Install all Bazel dependencies needed for npm packages that supply Bazel rules +load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") +install_bazel_dependencies() +``` + +This causes the `@bazel/karma` package to be installed as a Bazel workspace named `npm_bazel_karma`. + +Now add this to your `WORKSPACE` to install the Karma dependencies: + +```python +# Fetch transitive Bazel dependencies of npm_bazel_karma +load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies") +rules_karma_dependencies() +``` + +This installs the `io_bazel_rules_webtesting` repository, if you haven't installed it earlier. + +Finally, configure the rules_webtesting: + +```python +# Setup web testing, choose browsers we can test on +load("@io_bazel_rules_webtesting//web:repositories.bzl", "browser_repositories", "web_test_repositories") + +web_test_repositories() +browser_repositories( + chromium = True, +) +``` + +## Installing with self-managed dependencies + +If you didn't use the `yarn_install` or `npm_install` rule to create an `npm` workspace, you'll have to declare a rule in your root `BUILD.bazel` file to execute karma: + +```python +# Create a karma rule to use in ts_web_test_suite karma +# attribute when using self-managed dependencies +nodejs_binary( + name = "karma/karma", + entry_point = "karma/bin/karma", + # Point bazel to your node_modules to find the entry point + node_modules = ["//:node_modules"], +) +``` + diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/karma_web_test.md b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/karma_web_test.md new file mode 100644 index 0000000000..39c6543450 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/karma_web_test.md @@ -0,0 +1,315 @@ + + +

                      Unit testing with Karma

                      + + + + +## run_karma_web_test + +
                      +run_karma_web_test(ctx)
                      +
                      + +Creates an action that can run karma. + +This is also used by ts_web_test_rule. + +Returns: + The runfiles for the generated action. + + + +### Attributes + + + + + + + + + + + + + +
                      ctx +

                      Unknown; Required

                      +

                      Bazel rule execution context

                      +
                      + +## karma_web_test + +
                      +karma_web_test(srcs, deps, data, configuration_env_vars, bootstrap, runtime_deps, static_files, config_file, tags, **kwargs)
                      +
                      + +Runs unit tests in a browser with Karma. + +When executed under `bazel test`, this uses a headless browser for speed. +This is also because `bazel test` allows multiple targets to be tested together, +and we don't want to open a Chrome window on your machine for each one. Also, +under `bazel test` the test will execute and immediately terminate. + +Running under `ibazel test` gives you a "watch mode" for your tests. The rule is +optimized for this case - the test runner server will stay running and just +re-serve the up-to-date JavaScript source bundle. + +To debug a single test target, run it with `bazel run` instead. This will open a +browser window on your computer. Also you can use any other browser by opening +the URL printed when the test starts up. The test will remain running until you +cancel the `bazel run` command. + +This rule will use your system Chrome by default. In the default case, your +environment must specify CHROME_BIN so that the rule will know which Chrome binary to run. +Other `browsers` and `customLaunchers` may be set using the a base Karma configuration +specified in the `config_file` attribute. + + + +### Attributes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      srcs +

                      List of strings; Optional

                      +

                      A list of JavaScript test files

                      +
                      deps +

                      List of strings; Optional

                      +

                      Other targets which produce JavaScript such as ts_library

                      +
                      data +

                      List of strings; Optional

                      +

                      Runtime dependencies

                      +
                      configuration_env_vars +

                      List of strings; Optional

                      +

                      Pass these configuration environment variables to the resulting binary. +Chooses a subset of the configuration environment variables (taken from ctx.var), which also +includes anything specified via the --define flag. +Note, this can lead to different outputs produced by this rule.

                      +
                      bootstrap +

                      List of strings; Optional

                      +

                      JavaScript files to include before the module loader (require.js). +For example, you can include Reflect,js for TypeScript decorator metadata reflection, +or UMD bundles for third-party libraries.

                      +
                      runtime_deps +

                      List of strings; Optional

                      +

                      Dependencies which should be loaded after the module loader but before the srcs and deps. +These should be a list of targets which produce JavaScript such as ts_library. +The files will be loaded in the same order they are declared by that rule.

                      +
                      static_files +

                      List of strings; Optional

                      +

                      Arbitrary files which are available to be served on request. +Files are served at: +/base/&lt;WORKSPACE_NAME&gt;/&lt;path-to-file&gt;, e.g. +/base/npm_bazel_typescript/examples/testing/static_script.js

                      +
                      config_file +

                      Unknown; Optional

                      +

                      User supplied Karma configuration file. Bazel will override +certain attributes of this configuration file. Attributes that are +overridden will be outputted to the test log.

                      +
                      tags +

                      List of strings; Optional

                      +

                      Standard Bazel tags, this macro adds tags for ibazel support

                      +
                      **kwargs +

                      Unknown; Optional

                      +

                      Passed through to karma_web_test

                      +
                      + +## karma_web_test_suite + +
                      +karma_web_test_suite(name, browsers, args, browser_overrides, config, flaky, local, shard_count, size, tags, test_suite_tags, timeout, visibility, web_test_data, wrapped_test_tags, **remaining_keyword_args)
                      +
                      + +Defines a test_suite of web_test targets that wrap a karma_web_test target. + +This macro also accepts all parameters in karma_web_test. See karma_web_test docs +for details. + + + +### Attributes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      name +

                      Name; Required

                      +

                      The base name of the test

                      +
                      browsers +

                      List of strings; Optional

                      +

                      A sequence of labels specifying the browsers to use.

                      +
                      args +

                      Unknown; Optional

                      +

                      Args for web_test targets generated by this extension.

                      +
                      browser_overrides +

                      Unknown; Optional

                      +

                      Dictionary; optional; default is an empty dictionary. A +dictionary mapping from browser names to browser-specific web_test +attributes, such as shard_count, flakiness, timeout, etc. For example: +{'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1} +'//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}.

                      +
                      config +

                      Unknown; Optional

                      +

                      Label; optional; Configuration of web test features.

                      +
                      flaky +

                      Unknown; Optional

                      +

                      A boolean specifying that the test is flaky. If set, the test will +be retried up to 3 times (default: 0)

                      +
                      local +

                      Unknown; Optional

                      +

                      boolean; optional.

                      +
                      shard_count +

                      Unknown; Optional

                      +

                      The number of test shards to use per browser. (default: 1)

                      +
                      size +

                      Unknown; Optional

                      +

                      A string specifying the test size. (default: 'large')

                      +
                      tags +

                      List of strings; Optional

                      +

                      A list of test tag strings to apply to each generated web_test target. +This macro adds a couple for ibazel.

                      +
                      test_suite_tags +

                      Unknown; Optional

                      +

                      A list of tag strings for the generated test_suite.

                      +
                      timeout +

                      Unknown; Optional

                      +

                      A string specifying the test timeout (default: computed from size)

                      +
                      visibility +

                      Unknown; Optional

                      +

                      List of labels; optional.

                      +
                      web_test_data +

                      List of strings; Optional

                      +

                      Data dependencies for the web_test.

                      +
                      wrapped_test_tags +

                      Unknown; Optional

                      +

                      A list of test tag strings to use for the wrapped test

                      +
                      **remaining_keyword_args +

                      Unknown; Optional

                      +

                      Arguments for the wrapped test target.

                      +
                      diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/ts_web_test.md b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/ts_web_test.md new file mode 100644 index 0000000000..eca853558f --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/ts_web_test.md @@ -0,0 +1,272 @@ + + +

                      Unit testing in a browser

                      + + + + +## ts_web_test + +
                      +ts_web_test(srcs, deps, data, configuration_env_vars, bootstrap, runtime_deps, static_files, tags, **kwargs)
                      +
                      + +Runs unit tests in a browser. + +When executed under `bazel test`, this uses a headless browser for speed. +This is also because `bazel test` allows multiple targets to be tested together, +and we don't want to open a Chrome window on your machine for each one. Also, +under `bazel test` the test will execute and immediately terminate. + +Running under `ibazel test` gives you a "watch mode" for your tests. The rule is +optimized for this case - the test runner server will stay running and just +re-serve the up-to-date JavaScript source bundle. + +To debug a single test target, run it with `bazel run` instead. This will open a +browser window on your computer. Also you can use any other browser by opening +the URL printed when the test starts up. The test will remain running until you +cancel the `bazel run` command. + +This rule will use your system Chrome. Your environment must specify CHROME_BIN +so that the rule will know which Chrome binary to run. + +Currently this rule uses Karma as the test runner under the hood, but this is +an implementation detail. We might switch to another runner like Jest in the future. + + + +### Attributes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      srcs +

                      List of strings; Optional

                      +

                      A list of JavaScript test files

                      +
                      deps +

                      List of strings; Optional

                      +

                      Other targets which produce JavaScript such as ts_library

                      +
                      data +

                      List of strings; Optional

                      +

                      Runtime dependencies

                      +
                      configuration_env_vars +

                      List of strings; Optional

                      +

                      Pass these configuration environment variables to the resulting binary. +Chooses a subset of the configuration environment variables (taken from ctx.var), which also +includes anything specified via the --define flag. +Note, this can lead to different outputs produced by this rule.

                      +
                      bootstrap +

                      List of strings; Optional

                      +

                      JavaScript files to include before the module loader (require.js). +For example, you can include Reflect,js for TypeScript decorator metadata reflection, +or UMD bundles for third-party libraries.

                      +
                      runtime_deps +

                      List of strings; Optional

                      +

                      Dependencies which should be loaded after the module loader but before the srcs and deps. +These should be a list of targets which produce JavaScript such as ts_library. +The files will be loaded in the same order they are declared by that rule.

                      +
                      static_files +

                      List of strings; Optional

                      +

                      Arbitrary files which are available to be served on request. +Files are served at: +/base/&lt;WORKSPACE_NAME&gt;/&lt;path-to-file&gt;, e.g. +/base/npm_bazel_typescript/examples/testing/static_script.js

                      +
                      tags +

                      List of strings; Optional

                      +

                      Standard Bazel tags, this macro adds tags for ibazel support as well as

                      +
                      **kwargs +

                      Unknown; Optional

                      +

                      Passed through to ts_web_test

                      +
                      + +## ts_web_test_suite + +
                      +ts_web_test_suite(name, browsers, args, browser_overrides, config, flaky, local, shard_count, size, tags, test_suite_tags, timeout, visibility, web_test_data, wrapped_test_tags, **remaining_keyword_args)
                      +
                      + +Defines a test_suite of web_test targets that wrap a ts_web_test target. + +This macro also accepts all parameters in ts_web_test. See ts_web_test docs for +details. + + + +### Attributes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      name +

                      Name; Required

                      +

                      The base name of the test.

                      +
                      browsers +

                      List of strings; Optional

                      +

                      A sequence of labels specifying the browsers to use.

                      +
                      args +

                      Unknown; Optional

                      +

                      Args for web_test targets generated by this extension.

                      +
                      browser_overrides +

                      Unknown; Optional

                      +

                      Dictionary; optional; default is an empty dictionary. A +dictionary mapping from browser names to browser-specific web_test +attributes, such as shard_count, flakiness, timeout, etc. For example: +{'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1} +'//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}.

                      +
                      config +

                      Unknown; Optional

                      +

                      Label; optional; Configuration of web test features.

                      +
                      flaky +

                      Unknown; Optional

                      +

                      A boolean specifying that the test is flaky. If set, the test will +be retried up to 3 times (default: 0)

                      +
                      local +

                      Unknown; Optional

                      +

                      boolean; optional.

                      +
                      shard_count +

                      Unknown; Optional

                      +

                      The number of test shards to use per browser. (default: 1)

                      +
                      size +

                      Unknown; Optional

                      +

                      A string specifying the test size. (default: 'large')

                      +
                      tags +

                      List of strings; Optional

                      +

                      A list of test tag strings to apply to each generated web_test_suite target. +This macro adds a couple for ibazel.

                      +
                      test_suite_tags +

                      Unknown; Optional

                      +

                      A list of tag strings for the generated test_suite.

                      +
                      timeout +

                      Unknown; Optional

                      +

                      A string specifying the test timeout (default: computed from size)

                      +
                      visibility +

                      Unknown; Optional

                      +

                      List of labels; optional.

                      +
                      web_test_data +

                      List of strings; Optional

                      +

                      Data dependencies for the web_test_suite.

                      +
                      wrapped_test_tags +

                      Unknown; Optional

                      +

                      A list of test tag strings to use for the wrapped test

                      +
                      **remaining_keyword_args +

                      Unknown; Optional

                      +

                      Arguments for the wrapped test target.

                      +
                      diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json index 5f71978dcd..e714d267b4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json @@ -43,5 +43,8 @@ "compatVersion": "0.0.0-COMPAT_VERSION", "rootPath": "." } + }, + "scripts": { + "skydoc": "bazel build --symlink_prefix=bazel- //docs && unzip -o -d docs bazel-bin/docs/docs-skydoc.zip && cat docs/install.md docs/*_web_test.md | sed 's/^##/\\\n##/' > README.md" } } From 4057089afab42ed8270b203d42eab12ef25645ee Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Wed, 13 Feb 2019 10:03:55 -0800 Subject: [PATCH 0540/1134] Pin rules_webtesting browser versions for CI and local testing Closes #418 PiperOrigin-RevId: 233775615 --- .../bazelbuild/rules_typescript/WORKSPACE | 78 +-------------- .../internal/e2e/npm_packages/karma/WORKSPACE | 9 +- .../npm_packages/karma_stack_trace/WORKSPACE | 9 +- .../npm_packages/karma_typescript/WORKSPACE | 9 +- .../internal/karma/BUILD.bazel | 1 + .../internal/karma/browser_repositories.bzl | 95 +++++++++++++++++++ 6 files changed, 111 insertions(+), 90 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/browser_repositories.bzl diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index e58de6ada4..27b209827f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -93,82 +93,10 @@ load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories" web_test_repositories() -# Load pinned browser versions for rules_webtesting. -load("@io_bazel_rules_webtesting//web/internal:platform_http_file.bzl", "platform_http_file") - -platform_http_file( - name = "org_chromium_chromium", - amd64_sha256 = - "6933d0afce6e17304b62029fbbd246cbe9e130eb0d90d7682d3765d3dbc8e1c8", - amd64_urls = [ - "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux_x64/561732/chrome-linux.zip", - ], - licenses = ["notice"], # BSD 3-clause (maybe more?) - macos_sha256 = - "084884e91841a923d7b6e81101f0105bbc3b0026f9f6f7a3477f5b313ee89e32", - macos_urls = [ - "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/561733/chrome-mac.zip", - ], - windows_sha256 = - "d1bb728118c12ea436d8ea07dba980789e7d860aa664dd1fad78bc20e8d9391c", - windows_urls = [ - "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Win_x64/540270/chrome-win32.zip", - ], -) - -platform_http_file( - name = "org_chromium_chromedriver", - amd64_sha256 = - "71eafe087900dbca4bc0b354a1d172df48b31a4a502e21f7c7b156d7e76c95c7", - amd64_urls = [ - "https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip", - ], - licenses = ["reciprocal"], # BSD 3-clause, ICU, MPL 1.1, libpng (BSD/MIT-like), Academic Free License v. 2.0, BSD 2-clause, MIT - macos_sha256 = - "fd32a27148f44796a55f5ce3397015c89ebd9f600d9dda2bcaca54575e2497ae", - macos_urls = [ - "https://chromedriver.storage.googleapis.com/2.41/chromedriver_mac64.zip", - ], - windows_sha256 = - "a8fa028acebef7b931ef9cb093f02865f9f7495e49351f556e919f7be77f072e", - windows_urls = [ - "https://chromedriver.storage.googleapis.com/2.38/chromedriver_win32.zip", - ], -) +# Setup browser repositories +load("@npm_bazel_karma//:browser_repositories.bzl", "browser_repositories") -platform_http_file( - name = "org_mozilla_firefox", - amd64_sha256 = - "3a729ddcb1e0f5d63933177a35177ac6172f12edbf9fbbbf45305f49333608de", - amd64_urls = [ - "https://mirror.bazel.build/ftp.mozilla.org/pub/firefox/releases/61.0.2/linux-x86_64/en-US/firefox-61.0.2.tar.bz2", - "https://ftp.mozilla.org/pub/firefox/releases/61.0.2/linux-x86_64/en-US/firefox-61.0.2.tar.bz2", - ], - licenses = ["reciprocal"], # MPL 2.0 - macos_sha256 = - "bf23f659ae34832605dd0576affcca060d1077b7bf7395bc9874f62b84936dc5", - macos_urls = [ - "https://mirror.bazel.build/ftp.mozilla.org/pub/firefox/releases/61.0.2/mac/en-US/Firefox%2061.0.2.dmg", - "https://ftp.mozilla.org/pub/firefox/releases/61.0.2/mac/en-US/Firefox%2061.0.2.dmg", - ], -) - -platform_http_file( - name = "org_mozilla_geckodriver", - amd64_sha256 = - "c9ae92348cf00aa719be6337a608fae8304691a95668e8e338d92623ba9e0ec6", - amd64_urls = [ - "https://mirror.bazel.build/github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz", - "https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz", - ], - licenses = ["reciprocal"], # MPL 2.0 - macos_sha256 = - "ce4a3e9d706db94e8760988de1ad562630412fa8cf898819572522be584f01ce", - macos_urls = [ - "https://mirror.bazel.build/github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-macos.tar.gz", - "https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-macos.tar.gz", - ], -) +browser_repositories() # Tell Bazel where the nested local repositories are that are # used for tests diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE index e86f32042f..fee3fa61aa 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE @@ -40,11 +40,10 @@ load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies") rules_karma_dependencies() -load("@io_bazel_rules_webtesting//web:repositories.bzl", "browser_repositories", "web_test_repositories") +load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories") web_test_repositories() -browser_repositories( - chromium = True, - firefox = True, -) +load("@npm_bazel_karma//:browser_repositories.bzl", "browser_repositories") + +browser_repositories() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE index 2a3dcc998c..969276f244 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE @@ -40,14 +40,13 @@ load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies") rules_karma_dependencies() -load("@io_bazel_rules_webtesting//web:repositories.bzl", "browser_repositories", "web_test_repositories") +load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories") web_test_repositories() -browser_repositories( - chromium = True, - firefox = True, -) +load("@npm_bazel_karma//:browser_repositories.bzl", "browser_repositories") + +browser_repositories() load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE index cdf3cac4f2..41fde934d4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE @@ -40,14 +40,13 @@ load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies") rules_karma_dependencies() -load("@io_bazel_rules_webtesting//web:repositories.bzl", "browser_repositories", "web_test_repositories") +load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories") web_test_repositories() -browser_repositories( - chromium = True, - firefox = True, -) +load("@npm_bazel_karma//:browser_repositories.bzl", "browser_repositories") + +browser_repositories() load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel index 2c1cfc3e03..f00ec1b339 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel @@ -70,6 +70,7 @@ npm_package( srcs = [ "BUILD.bazel", "WORKSPACE", + "browser_repositories.bzl", "defaults.bzl", "defs.bzl", "karma.conf.js", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/browser_repositories.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/browser_repositories.bzl new file mode 100644 index 0000000000..68c3601390 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/browser_repositories.bzl @@ -0,0 +1,95 @@ +# Copyright 2018 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Pinned browser versions tested against in https://github.com/bazelbuild/rules_typescript CI. +""" + +load("@io_bazel_rules_webtesting//web/internal:platform_http_file.bzl", "platform_http_file") + +def browser_repositories(): + """Load pinned rules_webtesting browser versions.""" + + platform_http_file( + name = "org_chromium_chromium", + amd64_sha256 = + "6933d0afce6e17304b62029fbbd246cbe9e130eb0d90d7682d3765d3dbc8e1c8", + amd64_urls = [ + "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux_x64/561732/chrome-linux.zip", + ], + licenses = ["notice"], # BSD 3-clause (maybe more?) + macos_sha256 = + "084884e91841a923d7b6e81101f0105bbc3b0026f9f6f7a3477f5b313ee89e32", + macos_urls = [ + "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/561733/chrome-mac.zip", + ], + windows_sha256 = + "d1bb728118c12ea436d8ea07dba980789e7d860aa664dd1fad78bc20e8d9391c", + windows_urls = [ + "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Win_x64/540270/chrome-win32.zip", + ], + ) + + platform_http_file( + name = "org_chromium_chromedriver", + amd64_sha256 = + "71eafe087900dbca4bc0b354a1d172df48b31a4a502e21f7c7b156d7e76c95c7", + amd64_urls = [ + "https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip", + ], + licenses = ["reciprocal"], # BSD 3-clause, ICU, MPL 1.1, libpng (BSD/MIT-like), Academic Free License v. 2.0, BSD 2-clause, MIT + macos_sha256 = + "fd32a27148f44796a55f5ce3397015c89ebd9f600d9dda2bcaca54575e2497ae", + macos_urls = [ + "https://chromedriver.storage.googleapis.com/2.41/chromedriver_mac64.zip", + ], + windows_sha256 = + "a8fa028acebef7b931ef9cb093f02865f9f7495e49351f556e919f7be77f072e", + windows_urls = [ + "https://chromedriver.storage.googleapis.com/2.38/chromedriver_win32.zip", + ], + ) + + platform_http_file( + name = "org_mozilla_firefox", + amd64_sha256 = + "3a729ddcb1e0f5d63933177a35177ac6172f12edbf9fbbbf45305f49333608de", + amd64_urls = [ + "https://mirror.bazel.build/ftp.mozilla.org/pub/firefox/releases/61.0.2/linux-x86_64/en-US/firefox-61.0.2.tar.bz2", + "https://ftp.mozilla.org/pub/firefox/releases/61.0.2/linux-x86_64/en-US/firefox-61.0.2.tar.bz2", + ], + licenses = ["reciprocal"], # MPL 2.0 + macos_sha256 = + "bf23f659ae34832605dd0576affcca060d1077b7bf7395bc9874f62b84936dc5", + macos_urls = [ + "https://mirror.bazel.build/ftp.mozilla.org/pub/firefox/releases/61.0.2/mac/en-US/Firefox%2061.0.2.dmg", + "https://ftp.mozilla.org/pub/firefox/releases/61.0.2/mac/en-US/Firefox%2061.0.2.dmg", + ], + ) + + platform_http_file( + name = "org_mozilla_geckodriver", + amd64_sha256 = + "c9ae92348cf00aa719be6337a608fae8304691a95668e8e338d92623ba9e0ec6", + amd64_urls = [ + "https://mirror.bazel.build/github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz", + "https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz", + ], + licenses = ["reciprocal"], # MPL 2.0 + macos_sha256 = + "ce4a3e9d706db94e8760988de1ad562630412fa8cf898819572522be584f01ce", + macos_urls = [ + "https://mirror.bazel.build/github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-macos.tar.gz", + "https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-macos.tar.gz", + ], + ) From db56ca2f1bf56b4f1c0bf2a95188faa4983af6a6 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Wed, 13 Feb 2019 11:34:42 -0800 Subject: [PATCH 0541/1134] fix(karma): do not show error message if unnamed amd module is loaded Currently unnamed AMD modules need to be manually configured through a `require.config` call. This then configures Require.JS to load the unnamed AMD module dynamically as a "static file". Meaning that the unnamed AMD module needs to be specified within the `ts_web_test_suite` `static_files` attribute. All static files will be proxied by default and can be loaded through `${location}/base/{workspace}/{path}` and therefore it's common to load static files that way. **The problem** here is that the "karma-requirejs" plugin by default shows an error message if something is loaded through a karma proxy. We need to disable this warning for such known & proxied requests so that the error output is clean and does not cause confusion what "no timestamp for XXX" means. Closes #371 PiperOrigin-RevId: 233796107 --- .../e2e/npm_packages/karma/BUILD.bazel | 6 ++++ .../npm_packages/karma/amd-modules.spec.js | 32 +++++++++++++++++++ .../npm_packages/karma/requirejs-config.js | 8 +++++ .../npm_packages/karma/unnamed-amd-module.js | 5 +++ .../internal/karma/karma.conf.js | 15 ++++++++- 5 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/amd-modules.spec.js create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/requirejs-config.js create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/unnamed-amd-module.js diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel index e401902c07..d96a405022 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel @@ -21,4 +21,10 @@ ts_web_test_suite( "@io_bazel_rules_webtesting//browsers:chromium-local", "@io_bazel_rules_webtesting//browsers:firefox-local", ], + static_files = [ + ":unnamed-amd-module.js", + ], + deps = [ + ":requirejs-config.js", + ], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/amd-modules.spec.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/amd-modules.spec.js new file mode 100644 index 0000000000..c52e4040b8 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/amd-modules.spec.js @@ -0,0 +1,32 @@ +define('npm_packages_karma_e2e/amd-modules.spec', ['require'], (require) => { + + describe('AMD module loading', () => { + + describe('unnamed amd modules', () => { + + it('should not warn if module is configured as static file', doneFn => { + spyOn(console, 'error'); + + require(['unnamed-module'], () => { + // Loading such an anonymous AMD module should not cause any error messages about + // a missing timestamp. This is a limitation of the "karma-requirejs" plugin which + // by default always prints an error for requests through Karma's proxy. + // See: https://github.com/karma-runner/karma-requirejs/issues/6 + expect(console.error).toHaveBeenCalledTimes(0); + doneFn(); + }); + }); + + it('should warn if module is not specified as static file', doneFn => { + spyOn(console, 'error').and.callThrough(); + + require(['unnamed-module-invalid-file'], + /* loaded callback */ () => {}, + /* error callback */ () => { + expect(console.error).toHaveBeenCalledWith(jasmine.stringMatching(/no timestamp/)); + doneFn(); + }); + }); + }); + }) +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/requirejs-config.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/requirejs-config.js new file mode 100644 index 0000000000..5ad31a12d9 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/requirejs-config.js @@ -0,0 +1,8 @@ +require.config({ + paths: { + // Configure some fake AMD module that exists and should not cause a loading + // error message from the "karma-requirejs" plugin which is enabled by default. + 'unnamed-module': '/base/npm_packages_karma_e2e/unnamed-amd-module', + 'unnamed-module-invalid-file': '/some-invalid-file-path', + } +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/unnamed-amd-module.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/unnamed-amd-module.js new file mode 100644 index 0000000000..fd58f4e6e8 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/unnamed-amd-module.js @@ -0,0 +1,5 @@ +// Unnamed AMD module definition which needs to be manually configured through +// a "requirejs" configuration whenever this module should be loaded. +define(function() { + // Just an empty definition. Nothing to assert here. +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js index dae40a9354..1d82ff1f8c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js @@ -165,6 +165,19 @@ try // base path that will be used to resolve all patterns // (eg. files, exclude) overrideConfigValue(conf, 'basePath', 'TMPL_runfiles_path'); + + // Do not show "no timestamp" errors from "karma-requirejs" for proxied file + // requests. Files which are passed as "static_files" are proxied by default and + // therefore should not cause such an exception when loaded as expected. + // See: https://github.com/karma-runner/karma-requirejs/issues/6 + const requireJsShowNoTimestampsError = '^(?!/base/).*$'; + + if (conf.client) { + overrideConfigValue(conf.client, 'requireJsShowNoTimestampsError', + requireJsShowNoTimestampsError); + } else { + conf.client = {requireJsShowNoTimestampsError}; + } } /** @@ -388,7 +401,7 @@ try throw new Error('Invalid base karma configuration. Expected config function to be exported.'); } const originalSetConfig = config.set; - config.set = function(c) { conf = c; } + config.set = function(c) { conf = c; }; baseConf(config); config.set = originalSetConfig; if (DEBUG) console.info(`Base karma configuration: ${JSON.stringify(conf, null, 2)}`); From 7c2c2d6ca2379ecf1ccb17328d044713176b0f21 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Wed, 13 Feb 2019 13:18:14 -0800 Subject: [PATCH 0542/1134] Handle ts_libraries with both moduleNames and moduleRoots. PiperOrigin-RevId: 233815780 --- .../ts_auto_deps/analyze/analyze.go | 51 +++++++++++++++++-- 1 file changed, 47 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go index 0960b57900..e7f2851113 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go @@ -371,6 +371,26 @@ func pathWithExtensions(basename string) []string { var ambientModuleDeclRE = regexp.MustCompile("(?m)^\\s*declare\\s+module\\s+['\"]([^'\"]+)['\"]\\s+\\{") +// pathStartsWith checks if path starts with prefix, checking each path segment, +// so that @angular/core starts with @angular/core, but @angular/core-bananas +// does not +func pathStartsWith(path, prefix string) bool { + pathParts := strings.Split(path, string(os.PathSeparator)) + prefixParts := strings.Split(prefix, string(os.PathSeparator)) + + if len(prefixParts) > len(pathParts) { + return false + } + + for i, prefixPart := range prefixParts { + if prefixPart != pathParts[i] { + return false + } + } + + return true +} + // findExistingDepProvidingImport looks through a map of the existing deps to // see if any of them provide the import in a way that can't be queried // for. E.g. if the build rule has a "module_name" attribute or if one @@ -389,11 +409,33 @@ func (a *Analyzer) findExistingDepProvidingImport(ctx context.Context, rules map if moduleName == "" { continue } + if !pathStartsWith(i.importPath, moduleName) { + continue + } + // fmt.Printf("checking if %s is provided by %s\n", i.importPath, moduleName) + // if module root is a file, remove the file extension, since it'll be added + // by possibleFilepaths below + moduleRoot := stripTSExtension(stringAttribute(r, "module_root")) + _, pkg, _ := edit.ParseLabel(r.GetName()) + + // resolve the import path against the module name and module root, ie if + // the import path is @foo/bar and there's a moduleName of @foo the resolved + // import path is location/of/foo/bar, or if there's also a moduleRoot of + // baz, the resolved import path is location/of/foo/baz/bar + // + // using strings.TrimPrefix for trimming the path is ok, since + // pathStartsWith already checked that moduleName is a proper prefix of + // i.importPath + resolvedImportPath := filepath.Join(pkg, moduleRoot, strings.TrimPrefix(i.importPath, moduleName)) + + // enumerate all the possible filepaths for the resolved import path, and + // compare against all the srcs + possibleImportPaths := possibleFilepaths(resolvedImportPath) for _, src := range listAttribute(r, "srcs") { - _, _, file := edit.ParseLabel(src) - moduleImportPath := moduleName + "/" + stripTSExtension(file) - if i.importPath == moduleImportPath || i.importPath == strings.TrimSuffix(moduleImportPath, "/index") { - return r.GetName(), nil + for _, mi := range possibleImportPaths { + if mi == labelToPath(src) { + return r.GetName(), nil + } } } } @@ -522,6 +564,7 @@ func (a *Analyzer) generateReport(target *resolvedTarget) (*arpb.DependencyRepor for _, dep := range target.deps() { if edit.LabelsEqual(dep, imp.knownTarget, "") { + // fmt.Printf("%s provides %s\n", dep, imp.importPath) usedDeps[dep] = true report.NecessaryDependency = append(report.NecessaryDependency, imp.knownTarget) continue handlingImports From 7f1f4e7e04938cd994de2f46034e593fee97e5d4 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Wed, 13 Feb 2019 13:52:26 -0800 Subject: [PATCH 0543/1134] Check for .d.ts files with ambient module declarations in the sources of the rule, not just in the sources of the deps. Also fixes an issue where the query-based analyzer failed when run outside of the workspace root. Fixed by prefixing the the root path to the file path when loading .d.ts files. PiperOrigin-RevId: 233822781 --- .../ts_auto_deps/analyze/analyze.go | 27 +++++++++++-------- .../ts_auto_deps/analyze/analyze_test.go | 7 +++-- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go index e7f2851113..d1ca2d5a21 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go @@ -328,7 +328,7 @@ func (a *Analyzer) resolveImports(ctx context.Context, currentPkg, root string, continue handlingImports } } - d, err := a.findExistingDepProvidingImport(ctx, target.dependencies, imp) + d, err := a.findExistingDepProvidingImport(ctx, root, target, imp) if err != nil { return err } @@ -398,13 +398,13 @@ func pathStartsWith(path, prefix string) bool { // // If the import already has a knownTarget, findRuleProvidingImport will // return the knownTarget. -func (a *Analyzer) findExistingDepProvidingImport(ctx context.Context, rules map[string]*appb.Rule, i *ts_auto_depsImport) (string, error) { +func (a *Analyzer) findExistingDepProvidingImport(ctx context.Context, root string, rt *resolvedTarget, i *ts_auto_depsImport) (string, error) { if i.knownTarget != "" { return i.knownTarget, nil } // check if any of the existing deps declare a module_name that matches the import - for _, r := range rules { + for _, r := range rt.dependencies { moduleName := stringAttribute(r, "module_name") if moduleName == "" { continue @@ -440,18 +440,23 @@ func (a *Analyzer) findExistingDepProvidingImport(ctx context.Context, rules map } } - // check if any of the existing deps have .d.ts sources which have ambient module - // declarations - for _, r := range rules { + // check if any of the other sources or the souces of any of the deps are .d.ts + // files which have ambient module declarations + var allRules []*appb.Rule + for _, r := range rt.dependencies { + allRules = append(allRules, r) + } + allRules = append(allRules, rt.rule) + for _, r := range allRules { for _, src := range listAttribute(r, "srcs") { - filepath := labelToPath(src) - if !strings.HasSuffix(filepath, ".d.ts") { + fp := filepath.Join(root, labelToPath(src)) + if !strings.HasSuffix(fp, ".d.ts") { continue } - contents, err := platform.ReadFile(ctx, filepath) + contents, err := platform.ReadFile(ctx, fp) if err != nil { - return "", fmt.Errorf("error reading file lookinf for ambient module decls: %s", err) + return "", fmt.Errorf("error reading file looking for ambient module decls: %s", err) } matches := ambientModuleDeclRE.FindAllStringSubmatch(string(contents), -1) @@ -464,7 +469,7 @@ func (a *Analyzer) findExistingDepProvidingImport(ctx context.Context, rules map // remove all the modules that were imported (ie all the modules that // were being augmented/re-opened) - for _, mi := range parseImports(filepath, contents) { + for _, mi := range parseImports(fp, contents) { delete(declaredModules, mi.importPath) } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go index 3e669ad369..9e97220a3d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go @@ -156,14 +156,13 @@ func TestUnresolvedImports(t *testing.T) { } for _, test := range tests { r := analyzeTargets(t, []string{"a_lib"}, []*testTarget{ - {"a_lib", ` + {"a_lib", fmt.Sprintf(` rule_class: "ts_library" attribute: < name: "srcs" - string_list_value: "//a:b/importer.ts" - string_list_value: "//a:importer.d.ts" + string_list_value: "//a:%s" type: 5 - >`, nil}, + >`, test.filepath), nil}, }, []*file{{test.filepath, []string{test.fileContents}}}) if r == nil { continue From 5794386d5c18b6d9284eed41c4ed239104e0c5e8 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 18 Feb 2019 07:23:51 -0800 Subject: [PATCH 0544/1134] Support Angular plugin rollout: declare extra outs Angular ngtsc needs to emit two additional .js files for each .ts input to support legacy imports Closes #420 PiperOrigin-RevId: 234478540 --- .../internal/common/compilation.bzl | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 44483cbff7..8bb4732dd2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -170,9 +170,22 @@ def _outputs(ctx, label, srcs_files = []): basename = basename[:-len(ext)] break closure_js_files += [ctx.actions.declare_file(basename + ".closure.js")] + + # Temporary until all imports of ngfactory/ngsummary files are removed + # TODO(alexeagle): clean up after Ivy launch + if getattr(ctx, "compile_angular_templates", False): + closure_js_files += [ctx.actions.declare_file(basename + ".ngfactory.closure.js")] + closure_js_files += [ctx.actions.declare_file(basename + ".ngsummary.closure.js")] + if not is_dts: devmode_js_files += [ctx.actions.declare_file(basename + ".js")] declaration_files += [ctx.actions.declare_file(basename + ".d.ts")] + + # Temporary until all imports of ngfactory/ngsummary files are removed + # TODO(alexeagle): clean up after Ivy launch + if getattr(ctx, "compile_angular_templates", False): + devmode_js_files += [ctx.actions.declare_file(basename + ".ngfactory.js")] + devmode_js_files += [ctx.actions.declare_file(basename + ".ngsummary.js")] return struct( closure_js = closure_js_files, devmode_js = devmode_js_files, From 4529d6e35f95284432b5dbfbd423c6f13e80bab4 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 19 Feb 2019 14:48:26 -0800 Subject: [PATCH 0545/1134] fix(devserver): static assets sometimes incorrectly injected Currently whenever the `ts_devserver` tries to inject static assets which are not part of the current Bazel package, but part of the current workspace (e.g. file in a parent package), incorrect asset URLs are injected. This is because the `ts_devserver` currently uses the `File#path` property which is relative to the execroot. So files which are not part of the current Bazel package, but part of the execroot sources, will be kept relative to the execroot. This is problematic because the execroot is not part of the devserver root directories and therfore the injected URLs are incorrect. Instead we should always explicitly pass the `ts_devserver` implementation-specific manifest paths to the asset injection function. To be clear: This currently only affects Windows because if Bazel symlinks the runfiles, the Go runfile helpers also look for the requested files in the `working dirctory` (which is always the the `devserver_runfiles/{workspace_name}` --> so runfiles within the current workspace can be always resolved even though they are not part of the root directory. This is something we need to make consistent in the future, but is not related to that specific bug (we should always precisely pass manifest paths) Fixes #409. Closes #423 PiperOrigin-RevId: 234678783 --- .../internal/devserver/ts_devserver.bzl | 2 +- .../e2e/npm_packages/ts_devserver/BUILD.bazel | 5 +++ .../ts_devserver/package-template.json | 4 ++- .../ts_devserver/protractor.conf.js | 2 +- .../ts_devserver/red-body-style.css | 3 ++ .../ts_devserver/subpackage/BUILD.bazel | 33 +++++++++++++++++++ .../ts_devserver/subpackage/index.html | 10 ++++++ .../subpackage/subpackage_e2e_test.ts | 17 ++++++++++ .../npm_packages/ts_devserver/tsconfig.json | 5 +++ 9 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/red-body-style.css create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/index.html create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/subpackage_e2e_test.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl index fe377eccd7..399bd4e356 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl @@ -100,7 +100,7 @@ def _ts_devserver(ctx): "/".join([ctx.bin_dir.path, ctx.label.package]), "/".join([ctx.genfiles_dir.path, ctx.label.package]), ], - [f.path for f in ctx.files.static_files] + [bundle_script], + [_short_path_to_manifest_path(ctx, f.short_path) for f in ctx.files.static_files] + [bundle_script], injected_index, ) devserver_runfiles += [injected_index] diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/BUILD.bazel index dd6eeef0f0..f7e2f11e4f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/BUILD.bazel @@ -14,6 +14,11 @@ load("@npm_bazel_typescript//:defs.bzl", "ts_devserver", "ts_library") +exports_files([ + "red-body-style.css", + "tsconfig.json", +]) + ts_library( name = "app", srcs = ["app.ts"], diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/package-template.json index 7001bfac86..5a9c82e081 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/package-template.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/package-template.json @@ -10,6 +10,8 @@ }, "scripts": { "pretest": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG", - "test": "bazel build ... && concurrently \"bazel run //:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor\" --kill-others --success first" + "wait-for-servers": "while [[ ! nc -z 127.0.0.1 8080 ]] || [[ ! nc -z 127.0.0.1 8081 ]]; do sleep 1; done", + "run-e2e-tests": "concurrently \"bazel run //:devserver\" \"yarn wait-for-servers\" --kill-others --success first", + "test": "bazel build ... && yarn run-e2e-tests" } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/protractor.conf.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/protractor.conf.js index 9691a64662..725b81e592 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/protractor.conf.js +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/protractor.conf.js @@ -1,6 +1,6 @@ exports.config = { specs: [ - 'bazel-bin/*_e2e_test.js', + 'bazel-bin/**/*_e2e_test.js', ], capabilities: { browserName: 'chrome', diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/red-body-style.css b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/red-body-style.css new file mode 100644 index 0000000000..5c5e887d76 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/red-body-style.css @@ -0,0 +1,3 @@ +body { + background: red; +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/BUILD.bazel new file mode 100644 index 0000000000..b68ac440a4 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/BUILD.bazel @@ -0,0 +1,33 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("@npm_bazel_typescript//:defs.bzl", "ts_devserver", "ts_library") + +ts_devserver( + name = "devserver", + index_html = "index.html", + port = 8081, + static_files = ["//:red-body-style.css"], +) + +ts_library( + name = "e2e", + testonly = 1, + srcs = ["subpackage_e2e_test.ts"], + deps = [ + "@npm//@types/jasmine", + "@npm//@types/node", + "@npm//protractor", + ], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/index.html b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/index.html new file mode 100644 index 0000000000..4ea2bf3c14 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/index.html @@ -0,0 +1,10 @@ + + + + + Subpackage Devserver + + + This is the devserver for a Bazel subpackage. + + diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/subpackage_e2e_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/subpackage_e2e_test.ts new file mode 100644 index 0000000000..281ea393f1 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/subpackage_e2e_test.ts @@ -0,0 +1,17 @@ +import {browser, by, element} from 'protractor'; + +describe('subpackage', () => { + + beforeAll(async () => { + await browser.waitForAngularEnabled(false); + await browser.get('http://127.0.0.1:8081/'); + }); + + // Ensures that the "ts_devserver" properly injects and loads static files which + // are in the current workspace, but not part of the current Bazel package. See + // related issue: https://github.com/bazelbuild/rules_typescript/issues/409 + it('should be able to properly load the injected CSS file', async () => { + const bodyElement = element(by.css('body')); + expect(await bodyElement.getCssValue('background')).toContain('rgb(255, 0, 0)'); + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/tsconfig.json index e69de29bb2..40dd22515a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/tsconfig.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "lib": ["es2015", "dom"] + } +} From a95f246e3b2c345132569f8f61fb0f39071c5b0d Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Wed, 20 Feb 2019 16:44:02 -0800 Subject: [PATCH 0546/1134] Add a tsconfig bazelOptions devmodeTargetOverride experimental setting Closes #426 PiperOrigin-RevId: 234895524 --- .../internal/tsc_wrapped/tsconfig.ts | 48 ++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index 060b5ff8dd..512b314656 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -36,7 +36,10 @@ export interface BazelOptions { /** If true, convert require()s into goog.module(). */ googmodule: boolean; - /** If true, emit ES5 into filename.es5.js. */ + /** + * If true, emit devmode output into filename.js. + * If false, emit prodmode output into filename.closure.js. + */ es5Mode: boolean; /** If true, convert TypeScript code into a Closure-compatible variant. */ @@ -161,6 +164,17 @@ export interface BazelOptions { * Enable the Angular ngtsc plugin. */ compileAngularTemplates?: boolean; + + /** + * Override for ECMAScript target language level to use for devmode. + * + * This setting can be set in a user's tsconfig to override the default + * devmode target. + * + * EXPERIMENTAL: This setting is experimental and may be removed in the + * future. + */ + devmodeTargetOverride?: string; } export interface ParsedTsConfig { @@ -299,6 +313,8 @@ export function parseTsconfig( bazelOpts.tsickle = bazelOpts.tsickle || userConfig.bazelOptions.tsickle; bazelOpts.googmodule = bazelOpts.googmodule || userConfig.bazelOptions.googmodule; + bazelOpts.devmodeTargetOverride = bazelOpts.devmodeTargetOverride || + userConfig.bazelOptions.devmodeTargetOverride; } if (!bazelOpts.suppressTsconfigOverrideWarnings) { warnOnOverriddenOptions(userConfig); @@ -311,6 +327,36 @@ export function parseTsconfig( return [null, errors, {target}]; } + // Override the devmode target if devmodeTargetOverride is set + if (bazelOpts.es5Mode && bazelOpts.devmodeTargetOverride) { + switch (bazelOpts.devmodeTargetOverride.toLowerCase()) { + case 'es3': + options.target = ts.ScriptTarget.ES3; + break; + case 'es5': + options.target = ts.ScriptTarget.ES5; + break; + case 'es2015': + options.target = ts.ScriptTarget.ES2015; + break; + case 'es2016': + options.target = ts.ScriptTarget.ES2016; + break; + case 'es2017': + options.target = ts.ScriptTarget.ES2017; + break; + case 'es2018': + options.target = ts.ScriptTarget.ES2018; + break; + case 'esnext': + options.target = ts.ScriptTarget.ESNext; + break; + default: + console.error( + 'WARNING: your tsconfig.json file specifies an invalid bazelOptions.devmodeTargetOverride value of: \'${bazelOpts.devmodeTargetOverride\''); + } + } + // Sort rootDirs with longest include directories first. // When canonicalizing paths, we always want to strip // `workspace/bazel-bin/file` to just `file`, not to `bazel-bin/file`. From e8ae218b023cc97219b8bbb96270938a29bc85f6 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Wed, 20 Feb 2019 16:56:59 -0800 Subject: [PATCH 0547/1134] Properly support the -remove_unused_declarations flag. Typescript declarations can declare arbitrary global symbols, so a declaration might be required without an explicit import. Long term the plan is to require explicit taze comments for the such declarations, but until then the query based analyzer needs to report the same warnings that blaze analyze does. Also warn for possibly unused css_libraries. PiperOrigin-RevId: 234897666 --- .../ts_auto_deps/analyze/analyze.go | 16 +++++++++++++++- .../ts_auto_deps/analyze/loader.go | 15 --------------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go index d1ca2d5a21..475ab3e3e3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go @@ -593,7 +593,21 @@ func (a *Analyzer) generateReport(target *resolvedTarget) (*arpb.DependencyRepor return nil, err } for label, rule := range labelToRule { - if isTazeManagedRuleClass(rule.GetRuleClass()) || isGenerated(rule) { + switch class := rule.GetRuleClass(); class { + case "ts_declaration": + // TypeScript declarations might declare arbitrary global symbols, so it + // is impossible to detect reliably if the import is being used (without + // compiling, at least). Report that the rule has no explicit import as a + // warning, so that ts_auto_deps can decide to import remove or not based on a + // flag. + warning := fmt.Sprintf("WARNING: %s: keeping possibly used %s '%s'", rule.GetLocation(), class, label) + report.Feedback = append(report.Feedback, warning) + case "css_library": + // Similar to ts_declaration, ts_auto_deps can't reliably detect if css_library + // imports are being used, since ts_auto_deps can't currently parse @requirecss + // annotations. Unlike ts_declaration, there's no flag to remove them, so + // there's no need to report a warning. + default: report.UnnecessaryDependency = append(report.UnnecessaryDependency, label) } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go index 4b509caa64..f70dbcb917 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go @@ -376,21 +376,6 @@ func dedupeLabels(labels []string) []string { return uniqueLabels } -// isTazeManagedRuleClass checks if a class is a ts_auto_deps-managed rule class. -func isTazeManagedRuleClass(class string) bool { - for _, c := range []string{ - "ts_library", - "ts_declaration", - "ng_module", - "js_library", - } { - if c == class { - return true - } - } - return false -} - // typeScriptRules returns all TypeScript rules in rules. func typeScriptRules(rules []*appb.Rule) []*appb.Rule { var tsRules []*appb.Rule From 2c83c9b9b5595e4847899caa1b2b6a68178b87da Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Wed, 20 Feb 2019 19:42:19 -0800 Subject: [PATCH 0548/1134] Update pinned chromium to 69.0.3497 and chrome-driver to 2.44 for OSX and Linux Closes #425 PiperOrigin-RevId: 234918540 --- .../internal/karma/browser_repositories.bzl | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/browser_repositories.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/browser_repositories.bzl index 68c3601390..cc58e5c638 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/browser_repositories.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/browser_repositories.bzl @@ -23,19 +23,29 @@ def browser_repositories(): platform_http_file( name = "org_chromium_chromium", amd64_sha256 = - "6933d0afce6e17304b62029fbbd246cbe9e130eb0d90d7682d3765d3dbc8e1c8", + "941de83d78b27d43db07f427136ba159d661bb111db8d9ffe12499b863a003e1", amd64_urls = [ - "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux_x64/561732/chrome-linux.zip", + # Chromium 69.0.3497.0 (2018-07-19 snaphot 576668) + # https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/576668/ + "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux_x64/576668/chrome-linux.zip", ], licenses = ["notice"], # BSD 3-clause (maybe more?) macos_sha256 = - "084884e91841a923d7b6e81101f0105bbc3b0026f9f6f7a3477f5b313ee89e32", + "bd01783e7d179e9f85d4b6f0c9df53118d13977cc7d365a1caa9d198c6afcfd8", macos_urls = [ - "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/561733/chrome-mac.zip", + # Chromium 69.0.3497.0 (2018-07-19 snaphot 576668) + # https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Mac/576668/ + # NOTE: There is an issue with ChromeHeadless on OSX chromium 70+ + "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/576668/chrome-mac.zip", ], windows_sha256 = "d1bb728118c12ea436d8ea07dba980789e7d860aa664dd1fad78bc20e8d9391c", windows_urls = [ + # Chromium 66.0.3359.0 (2018-03-01 snaphot 540270) + # https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Win_x64/612439/ + # NOTE: There is an issue with chromium 68-71 with Windows: https://bugs.chromium.org/p/chromium/issues/detail?id=540270 + # and pinning to 72 is not possible as the archive name has changed to chrome-win.zip which breaks + # as the executable path the hard-coded in rules_webtesting and includes the archive name. "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Win_x64/540270/chrome-win32.zip", ], ) @@ -43,19 +53,25 @@ def browser_repositories(): platform_http_file( name = "org_chromium_chromedriver", amd64_sha256 = - "71eafe087900dbca4bc0b354a1d172df48b31a4a502e21f7c7b156d7e76c95c7", + "687d2e15c42908e2911344c08a949461b3f20a83017a7a682ef4d002e05b5d46", amd64_urls = [ - "https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip", + # ChromeDriver 2.44 supports Chrome v69-71 + # http://chromedriver.chromium.org/downloads + "https://chromedriver.storage.googleapis.com/2.44/chromedriver_linux64.zip", ], licenses = ["reciprocal"], # BSD 3-clause, ICU, MPL 1.1, libpng (BSD/MIT-like), Academic Free License v. 2.0, BSD 2-clause, MIT macos_sha256 = - "fd32a27148f44796a55f5ce3397015c89ebd9f600d9dda2bcaca54575e2497ae", + "3fd49c2782a5f93cb48ff2dee021004d9a7fb393798e4c4807b391cedcd30ed9", macos_urls = [ - "https://chromedriver.storage.googleapis.com/2.41/chromedriver_mac64.zip", + # ChromeDriver 2.44 supports Chrome v69-71 + # http://chromedriver.chromium.org/downloads + "https://chromedriver.storage.googleapis.com/2.44/chromedriver_mac64.zip", ], windows_sha256 = "a8fa028acebef7b931ef9cb093f02865f9f7495e49351f556e919f7be77f072e", windows_urls = [ + # ChromeDriver 2.38 supports Chrome v65-67 + # http://chromedriver.chromium.org/downloads "https://chromedriver.storage.googleapis.com/2.38/chromedriver_win32.zip", ], ) From 39d47e0587d8117a012608546c312e37f32d7a20 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Wed, 20 Feb 2019 21:44:08 -0800 Subject: [PATCH 0549/1134] Update docs for release --- .../rules_typescript/docs/api/build_defs.html | 21 +++--- .../docs/api/devserver/ts_devserver.html | 61 ++++++++++++---- .../rules_typescript/docs/api/index.html | 73 +++---------------- .../docs/api/protobufjs/ts_proto_library.html | 18 +---- .../rules_typescript/docs/api/ts_config.html | 10 --- .../docs/api/ts_repositories.html | 22 +++--- 6 files changed, 80 insertions(+), 125 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html index 0fe642593b..4e9239a861 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html @@ -67,16 +67,6 @@
                  • -
                  • - Unit testing with Karma - -
                  • Protocol Buffers
                      @@ -209,7 +199,7 @@

                      Attributes

                      ts_library

                      -
                      ts_library(name, deps, srcs, compiler, internal_testing_type_check_dependencies, node_modules, supports_workers, tsconfig, tsickle_typed)
                      +
                      ts_library(name, deps, srcs, compile_angular_templates, compiler, internal_testing_type_check_dependencies, node_modules, supports_workers, tsconfig, tsickle_typed)

                      ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

                      It produces declarations files (.d.ts) which are used for compiling downstream @@ -245,10 +235,17 @@

                      Attributes

                      The TypeScript source files to compile.

                      + + compile_angular_templates + +

                      Boolean; Optional; Default is False

                      +

                      Run the Angular ngtsc compiler under ts_library

                      + + compiler -

                      Label; Optional; Default is @build_bazel_rules_typescript//:@bazel/typescript/tsc_wrapped

                      +

                      Label; Optional; Default is @npm//@bazel/typescript/bin:tsc_wrapped

                      Sets a different TypeScript compiler binary to use for this library. For example, we use the vanilla TypeScript tsc.js for bootstrapping, and Angular compilations can replace this with ngc.

                      diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html index 9c4febb233..22d1d37d7e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html @@ -67,16 +67,6 @@
                  • -
                  • - Unit testing with Karma - -
                  • Protocol Buffers
                      @@ -110,12 +100,16 @@

                      Macros

                      ts_devserver_macro

                      -
                      ts_devserver_macro(tags, **kwargs)
                      +
                      ts_devserver_macro(name, data, args, visibility, tags, testonly, **kwargs)
                      -

                      ibazel wrapper for ts_devserver

                      -

                      This macro re-exposes the ts_devserver rule with some extra tags so that -it behaves correctly under ibazel.

                      -

                      This is re-exported in //:defs.bzl as ts_devserver so if you load the rule +

                      Macro for creating a ts_devserver

                      +

                      This macro re-exposes a sh_binary and ts_devserver target that can run the +actual devserver implementation. +The ts_devserver rule is just responsible for generating a launcher script +that runs the Go devserver implementation. The sh_binary is the primary +target that matches the specified "name" and executes the generated bash +launcher script. +This is re-exported in //:defs.bzl as ts_devserver so if you load the rule from there, you actually get this macro.

                      @@ -127,11 +121,46 @@

                      Attributes

                      + + name + +

                      Name; Required

                      +

                      Name of the devserver target

                      + + + + data + +

                      List of strings; Optional

                      +

                      Runtime dependencies for the devserver

                      + + + + args + +

                      List of strings; Optional

                      +

                      Command line arguments that will be passed to the devserver Go implementation

                      + + + + visibility + +

                      Unknown; Optional

                      +

                      Visibility of the devserver targets

                      + + tags

                      List of strings; Optional

                      -

                      standard Bazel tags, this macro adds a couple for ibazel

                      +

                      Standard Bazel tags, this macro adds a couple for ibazel

                      + + + + testonly + +

                      Integer; Optional

                      +

                      Whether the devserver should only run in bazel test

                      diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html index b00ec92088..76bd794161 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html @@ -67,16 +67,6 @@
                  • -
                  • - Unit testing with Karma - -
                  • Protocol Buffers @@ -204,51 +193,20 @@

                    Macros

                    - - -

                    Simple development server

                    - -

                    Rules

                    - - - - - - - - - - - -
                    - - ts_devserver - - -

                    ts_devserver is a simple development server intended for a quick "getting started" experience.

                    - -
                    -

                    Macros

                    - - - - - -
                    - - ts_devserver_macro + + ts_setup_dev_workspace -

                    ibazel wrapper for ts_devserver

                    +

                    Setup the toolchain needed for local development, but not needed by users.

                    -

                    Unit testing with Karma

                    +

                    Simple development server

                    Rules

                    @@ -259,12 +217,12 @@

                    Rules

                    @@ -279,23 +237,12 @@

                    Macros

                    - - - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html index b1db1ea39d..c19d9db1e5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html @@ -67,16 +67,6 @@ -
                  • - Unit testing with Karma - -
                  • Protocol Buffers
                      @@ -111,7 +101,7 @@

                      ts_proto_library

                      Wraps https://github.com/dcodeIO/protobuf.js for use in Bazel.

                      ts_proto_library has identical outputs to ts_library, so it can be used anywhere a ts_library can appear, such as in the deps[] of another ts_library.

                      -
                      load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_proto_library")
                      +
                      load("@npm_bazel_typescript//:defs.bzl", "ts_library", "ts_proto_library")
                       
                       proto_library(
                           name = "car_proto",
                      @@ -137,15 +127,15 @@ 

                      ts_proto_library

                      The JavaScript produced by protobuf.js has a runtime dependency on a support library. Under devmode (e.g. ts_devserver, ts_web_test_suite) you'll need to include these scripts in the bootstrap phase (before Require.js loads). You can use the label -@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts to reference these scripts +@npm_bazel_typescript//:protobufjs_bootstrap_scripts to reference these scripts in the bootstrap attribute of ts_web_test_suite or ts_devserver.

                      To complete the example above, you could write a ts_web_test_suite:

                      -
                      load("@build_bazel_rules_typescript//:defs.bzl", "ts_web_test_suite")
                      +
                      load("@npm_bazel_karma//:defs.bzl", "ts_web_test_suite")
                       
                       ts_web_test_suite(
                           name = "test",
                           deps = ["test_lib"],
                      -    bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"],
                      +    bootstrap = ["@npm_bazel_typescript//:protobufjs_bootstrap_scripts"],
                           browsers = [
                             "@io_bazel_rules_webtesting//browsers:chromium-local",
                             "@io_bazel_rules_webtesting//browsers:firefox-local",
                      diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html
                      index 4dae48f537..c5dcbcb98b 100644
                      --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html
                      +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html
                      @@ -67,16 +67,6 @@
                           
                         
                  • -
                  • - Unit testing with Karma - -
                  • Protocol Buffers
                      diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html index 93135a7860..1b27aaf452 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html @@ -67,16 +67,6 @@
                  • -
                  • - Unit testing with Karma - -
                  • Protocol Buffers
                      @@ -100,6 +90,7 @@

                      Install toolchain dependencies

                      Macros


                      @@ -113,6 +104,17 @@

                      ts_setup_workspace

                      by the TypeScript rules.

                      +
                      + +

                      ts_setup_dev_workspace

                      + +
                      ts_setup_dev_workspace()
                      + +

                      Setup the toolchain needed for local development, but not needed by users.

                      +

                      These needs to be in a separate file from ts_setup_workspace() so as not +to leak load statements.

                      + + From 95fe3c58156be5c67db8b0b580d49797c17bf887 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Wed, 20 Feb 2019 21:44:22 -0800 Subject: [PATCH 0550/1134] rel: 0.25.1 --- third_party/github.com/bazelbuild/rules_typescript/README.md | 2 +- third_party/github.com/bazelbuild/rules_typescript/WORKSPACE | 2 +- third_party/github.com/bazelbuild/rules_typescript/package.json | 2 +- third_party/github.com/bazelbuild/rules_typescript/version.bzl | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index b404de88e5..3819e0a8af 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -26,7 +26,7 @@ Add the `@bazel/typescript` npm package to your `package.json` `devDependencies` { ... "devDependencies": { - "@bazel/typescript": "0.25.0", + "@bazel/typescript": "0.25.1", ... }, ... diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 27b209827f..b2e86ba8e9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -77,7 +77,7 @@ ts_setup_dev_workspace() # Test that check_rules_typescript_version works as expected load("//:defs.bzl", "check_rules_typescript_version") -check_rules_typescript_version(version_string = "0.25.0") +check_rules_typescript_version(version_string = "0.25.1") # Dependencies for generating documentation load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index b416f5f424..d82e3f201c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,7 +3,7 @@ "description": "TypeScript rules for Bazel", "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", - "version": "0.25.0", + "version": "0.25.1", "keywords": [ "typescript", "bazel" diff --git a/third_party/github.com/bazelbuild/rules_typescript/version.bzl b/third_party/github.com/bazelbuild/rules_typescript/version.bzl index 570c649b1b..f29533254a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/version.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/version.bzl @@ -17,7 +17,7 @@ load("@build_bazel_rules_nodejs//internal/common:check_version.bzl", "check_version") -VERSION = "0.25.0" +VERSION = "0.25.1" # This version is the minimum version that is API compatible with this version # of rules_typescript. This version should be updated to equal VERSION for From 31d1d6fb9ffcd9a5220069bf9b4ec0af2bc90e02 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 21 Feb 2019 10:35:30 -0800 Subject: [PATCH 0551/1134] Include README in @bazel/karma package This way the docs are visibile on npmjs.com Closes #427 PiperOrigin-RevId: 235021720 --- .../bazelbuild/rules_typescript/DEVELOPING.md | 2 +- .../rules_typescript/internal/karma/.gitignore | 2 -- .../rules_typescript/internal/karma/BUILD.bazel | 11 +++++++++++ .../rules_typescript/internal/karma/docs/BUILD.bazel | 3 ++- .../rules_typescript/internal/karma/package.json | 3 --- 5 files changed, 14 insertions(+), 7 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/.gitignore diff --git a/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md b/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md index 81bc6e126f..c5b36dd088 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md +++ b/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md @@ -56,7 +56,7 @@ changes since the last tag - if so, this will be a minor, if not, it's a patch. (This may not sound like semver - but since our major version is a zero, the rule is that minors are breaking changes and patches are new features). -1. Re-generate the API docs: `yarn skydoc && (cd internal/karma; yarn skydoc)` +1. Re-generate the API docs: `yarn skydoc` 1. May be necessary if Go code has changed though probably it was already necessary to run this to keep CI green: `bazel run :gazelle` 1. If we depend on a newer rules_nodejs, update the `check_rules_nodejs_version` in `ts_repositories.bzl` 1. `git commit -a -m 'Update docs for release'` diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/.gitignore b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/.gitignore deleted file mode 100644 index bae2b58568..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# This file is generated during the build -README.md diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel index f00ec1b339..54f69edf4f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel @@ -65,6 +65,16 @@ genrule( cmd = "cp $< $@", ) +# Ugly genrule depending on local linux environment to build the README out of skylark doc generation. +# Only referenced when we do a release. +# TODO: This ought to be possible with stardoc alone. Need to coordinate with Chris Parsons. +genrule( + name = "generate_README", + srcs = ["//docs", "//docs:install.md"], + outs = ["README.md"], + cmd = "unzip -o -d docs $(location //docs:docs) && cat docs/install.md docs/*_web_test.md | sed 's/^##/\\\n##/' > $@", +) + npm_package( name = "npm_package", srcs = [ @@ -88,6 +98,7 @@ npm_package( deps = [ ":bazel_karma", ":license_copy", + ":generate_README" ], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/BUILD.bazel index dc0a3bc946..ff0476c295 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/BUILD.bazel @@ -1,5 +1,5 @@ load("@io_bazel_skydoc//skylark:skylark.bzl", "skylark_doc") - +exports_files(["install.md"]) skylark_doc( name = "docs", srcs = [ @@ -7,4 +7,5 @@ skylark_doc( "//:ts_web_test.bzl", ], format = "markdown", + visibility = ["//:__subpackages__"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json index e714d267b4..5f71978dcd 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json @@ -43,8 +43,5 @@ "compatVersion": "0.0.0-COMPAT_VERSION", "rootPath": "." } - }, - "scripts": { - "skydoc": "bazel build --symlink_prefix=bazel- //docs && unzip -o -d docs bazel-bin/docs/docs-skydoc.zip && cat docs/install.md docs/*_web_test.md | sed 's/^##/\\\n##/' > README.md" } } From 166944d937cdd3e4ed18ccf5d04604d8686f992a Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 21 Feb 2019 12:34:29 -0800 Subject: [PATCH 0552/1134] Cleanups for moving @bazel/typescript to rules_nodejs - add a missing third-party license - make a cleaner root build file, don't need fencing - introduce a new npm_package that fetches just the first-party google3 stuff we need in the other repo Closes #428 PiperOrigin-RevId: 235047429 --- .../bazelbuild/rules_typescript/BUILD.bazel | 51 +++-- .../bazel/src/main/protobuf/BUILD.bazel | 6 +- .../bazel/src/main/protobuf/LICENSE | 202 ++++++++++++++++++ 3 files changed, 235 insertions(+), 24 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/LICENSE diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index c47ed666df..b2b79b65fa 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -12,10 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -# BEGIN-DEV-ONLY -# Parts of this BUILD file only necessary when building within the bazelbuild/rules_typescript repo. -# The generated `@bazel/typescript` npm package contains a trimmed BUILD file using # DEV-ONLY fences. -# # To update BUILD.bazel files after changing Go code, run # bazel run //:gazelle # @@ -23,11 +19,7 @@ # https://github.com/bazelbuild/rules_go/blob/master/go/tools/gazelle/README.rst#directives # gazelle:exclude node_modules load("@bazel_gazelle//:def.bzl", "gazelle") - -# END-DEV-ONLY load("@build_bazel_rules_nodejs//:defs.bzl", "npm_package") - -# BEGIN-DEV-ONLY load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") load("//:version.bzl", "COMPAT_VERSION") @@ -63,13 +55,18 @@ js_library( visibility = ["//visibility:public"], ) +genrule( + name = "generate_BUILD", + srcs = [], + outs = ["BUILD"], + cmd = "echo \"#marker that this is a bazel package\" > $@", +) + npm_package( name = "npm_package", srcs = [ - "BUILD.bazel", "LICENSE", "README.md", - "WORKSPACE", "defs.bzl", "package.bzl", "package.json", @@ -87,6 +84,7 @@ npm_package( "0.0.0-COMPAT_VERSION": COMPAT_VERSION, }, deps = [ + ":generate_BUILD", "//devserver:devserver-darwin", "//devserver:devserver-linux", "//devserver:devserver-windows", @@ -98,13 +96,26 @@ npm_package( ], ) -# Produces the release we publish to GitHub. Users download this starlark package -# to get the @npm_bazel_typescript workspace. -# FIXME(gregmagolan): strip the npm_package prefix from within the generated archive -# pkg_tar( -# name = "release", -# srcs = ["//:npm_package"], -# extension = "tgz", -# ) - -# END-DEV-ONLY +# This package is included in the npm_bazel_typescript package in rules_nodejs/packages/typescript +npm_package( + name = "npm_bazel_typescript_package", + srcs = [ + "//devserver:npm_package_assets", + "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:npm_package_assets", + "//internal:common/compilation.bzl", + "//internal:common/json_marshal.bzl", + "//internal:common/module_mappings.bzl", + "//internal:common/tsconfig.bzl", + ], + deps = [ + "//internal:generated_BUILD", + "//internal:tsc_wrapped", + "//devserver:devserver-darwin", + "//devserver:devserver-linux", + "//devserver:devserver-windows", + "//ts_auto_deps:ts_auto_deps-darwin", + "//ts_auto_deps:ts_auto_deps-linux", + "//ts_auto_deps:ts_auto_deps-windows", + ], + visibility = ["//visibility:public"], +) diff --git a/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel index 24a43bf83f..3b326019b6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel @@ -35,9 +35,7 @@ go_library( filegroup( name = "npm_package_assets", - srcs = [ - "BUILD.bazel", - "worker_protocol.proto", - ], + srcs = glob(["*"]), + visibility = ["//visibility:public"], ) # END-DEV-ONLY diff --git a/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/LICENSE b/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/LICENSE new file mode 100644 index 0000000000..7a4a3ea242 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file From 3814b747a164cbbde7d2010f6a8082728ad06c5c Mon Sep 17 00:00:00 2001 From: Lynn Chyi Date: Fri, 22 Feb 2019 08:51:20 -0800 Subject: [PATCH 0553/1134] Update README.md (#330) I ran into an error using self-managed deps because a `.proto` (I think it was worker_protocol) file was not included in my `@bazel/typescript` node_modules. It turns out that it was not included in the filegroup in my root `BUILD`. Hopefully this makes the getting started process a lot smoother for folks that need self-managed deps for some reason still. --- third_party/github.com/bazelbuild/rules_typescript/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 3819e0a8af..044cb3890f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -103,6 +103,8 @@ filegroup( name = "node_modules", srcs = glob( include = [ + # Must include .proto files since the tsc_wrapped compiler utilizes them + "node_modules/**/*.proto", "node_modules/**/*.js", "node_modules/**/*.d.ts", "node_modules/**/*.json", From e6ae9e17798c008350412d2b6dd62bf02f282664 Mon Sep 17 00:00:00 2001 From: radokirov Date: Fri, 22 Feb 2019 15:05:50 -0800 Subject: [PATCH 0554/1134] \nRemove e2e\n PiperOrigin-RevId: 235266333 --- .../bazelbuild/rules_typescript/README.md | 2 - .../{tsconfig.json => tsconfig.json.oss} | 0 .../{tsconfig.json => tsconfig.json.oss} | 0 .../{tsconfig.json => tsconfig.json.oss} | 0 .../{tsconfig.json => tsconfig.json.oss} | 0 .../{tsconfig.json => tsconfig.json.oss} | 0 .../{tsconfig.json => tsconfig.json.oss} | 0 .../{tsconfig.json => tsconfig.json.oss} | 0 .../{tsconfig.json => tsconfig.json.oss} | 0 .../{tsconfig.json => tsconfig.json.oss} | 0 .../{tsconfig.json => tsconfig.json.oss} | 0 .../{tsconfig.json => tsconfig.json.oss} | 0 .../{tsconfig.json => tsconfig.json.oss} | 0 .../internal/e2e/strict_deps/BUILD | 39 ------------------- .../{tsconfig.json => tsconfig.json.oss} | 0 .../internal/tsc_wrapped/test_support.ts | 2 +- 16 files changed, 1 insertion(+), 42 deletions(-) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/{tsconfig.json => tsconfig.json.oss} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/{tsconfig.json => tsconfig.json.oss} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/{tsconfig.json => tsconfig.json.oss} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/{tsconfig.json => tsconfig.json.oss} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/{tsconfig.json => tsconfig.json.oss} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/{tsconfig.json => tsconfig.json.oss} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/{tsconfig.json => tsconfig.json.oss} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/{tsconfig.json => tsconfig.json.oss} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/{tsconfig.json => tsconfig.json.oss} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/{tsconfig.json => tsconfig.json.oss} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/{tsconfig.json => tsconfig.json.oss} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/{tsconfig.json => tsconfig.json.oss} (100%) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/BUILD rename third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/{tsconfig.json => tsconfig.json.oss} (100%) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 044cb3890f..3819e0a8af 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -103,8 +103,6 @@ filegroup( name = "node_modules", srcs = glob( include = [ - # Must include .proto files since the tsc_wrapped compiler utilizes them - "node_modules/**/*.proto", "node_modules/**/*.js", "node_modules/**/*.d.ts", "node_modules/**/*.json", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/tsconfig.json.oss similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/tsconfig.json.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/tsconfig.json.oss similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/tsconfig.json.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/tsconfig.json.oss similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/tsconfig.json.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/tsconfig.json.oss similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/tsconfig.json.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/tsconfig.json.oss similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/tsconfig.json.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/tsconfig.json.oss similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/tsconfig.json.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/tsconfig.json.oss similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/tsconfig.json.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/tsconfig.json.oss similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/tsconfig.json.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/tsconfig.json.oss similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/tsconfig.json.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/tsconfig.json.oss similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/tsconfig.json.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/tsconfig.json.oss similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/tsconfig.json.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/tsconfig.json.oss similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/tsconfig.json.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/BUILD deleted file mode 100644 index e2387a1679..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/BUILD +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("//internal:defaults.bzl", "ts_library") - -licenses(["notice"]) # Apache 2.0 - -package(default_visibility = ["//visibility:public"]) - -ts_library( - name = "grandparent", - srcs = ["grandparent.ts"], -) - -ts_library( - name = "parent", - srcs = ["parent.ts"], - deps = [":grandparent"], -) - -ts_library( - name = "strict_deps", - srcs = ["child.ts"], - expected_diagnostics = [ - "TS2307:child\.ts\(2,.*transitive dependency.*not allowed", - ], - deps = [":parent"], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/tsconfig.json.oss similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/tsconfig.json.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/test_support.ts index 6c99a3ea5a..5f592e6969 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/test_support.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/test_support.ts @@ -23,7 +23,7 @@ import {FileCache} from './cache'; export function writeTempFile(name: string, contents: string): string { // TEST_TMPDIR is set by bazel. - const fn = (process.env.TEST_TMPDIR || '/tmp') + '/tmp.' + + const fn = (process.env['TEST_TMPDIR'] || '/tmp') + '/tmp.' + (Math.random() * 1000000).toFixed(0) + '.' + name; fs.writeFileSync(fn, contents); return fn; From 99f611af8c7d749304fe610a0ff6ae061ac4526b Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Fri, 22 Feb 2019 15:10:15 -0800 Subject: [PATCH 0555/1134] \nRemove e2e\n PiperOrigin-RevId: 235267098 --- .../rules_typescript/.bazelci/presubmit.yml | 4 - .../bazelbuild/rules_typescript/.bazelignore | 3 - .../.ci/rules_typescript.json | 21 - .../rules_typescript/.circleci/bazel.rc | 38 - .../rules_typescript/.circleci/config.yml | 131 - .../rules_typescript/.circleci/setup_cache.sh | 7 - .../bazelbuild/rules_typescript/.gitignore | 4 - .../bazelbuild/rules_typescript/README.md | 2 + .../bazelbuild/rules_typescript/WORKSPACE | 14 - .../internal/e2e/absolute_imports/BUILD.bazel | 25 - .../internal/e2e/absolute_imports/foo.ts | 2 - .../internal/e2e/absolute_imports/importer.ts | 1 - .../internal/e2e/default_tsconfig_test.js | 436 ---- .../disable_tsetse_for_external/BUILD.bazel | 23 - .../e2e/disable_tsetse_for_external/WORKSPACE | 15 - .../e2e/disable_tsetse_for_external/main.ts | 19 - .../tsconfig.json.oss | 0 .../internal/e2e/errorchecks/BUILD.bazel | 26 - .../internal/e2e/errorchecks/erroneous.ts | 1 - .../e2e/errorchecks/erroneous_decl.d.ts | 2 - .../internal/e2e/npm_packages/README.md | 19 - .../internal/e2e/npm_packages/karma/.bazelrc | 6 - .../e2e/npm_packages/karma/BUILD.bazel | 30 - .../internal/e2e/npm_packages/karma/README.md | 5 - .../internal/e2e/npm_packages/karma/WORKSPACE | 49 - .../npm_packages/karma/amd-modules.spec.js | 32 - .../e2e/npm_packages/karma/decrement.js | 15 - .../e2e/npm_packages/karma/decrement.spec.js | 19 - .../npm_packages/karma/package-template.json | 9 - .../npm_packages/karma/requirejs-config.js | 8 - .../e2e/npm_packages/karma/tsconfig.json.oss | 0 .../npm_packages/karma/unnamed-amd-module.js | 5 - .../internal/e2e/npm_packages/karma/yarn.lock | 2199 ---------------- .../npm_packages/karma_stack_trace/.bazelrc | 6 - .../karma_stack_trace/BUILD.bazel | 53 - .../npm_packages/karma_stack_trace/WORKSPACE | 53 - .../karma_stack_trace/failing.spec.ts | 9 - .../karma_stack_trace/package-template.json | 11 - .../karma_stack_trace/test_folder/BUILD.bazel | 35 - .../karma_stack_trace/test_folder/hello.ts | 7 - .../test_folder/test.spec.ts | 11 - .../karma_stack_trace/test_sourcemap.sh | 25 - .../karma_stack_trace/tsconfig.json.oss | 0 .../npm_packages/karma_stack_trace/yarn.lock | 2306 ----------------- .../npm_packages/karma_typescript/.bazelrc | 6 - .../npm_packages/karma_typescript/BUILD.bazel | 42 - .../npm_packages/karma_typescript/WORKSPACE | 53 - .../karma_typescript/decrement.spec.ts | 7 - .../karma_typescript/decrement.ts | 3 - .../karma_typescript/package-template.json | 11 - .../karma_typescript/tsconfig.json.oss | 0 .../npm_packages/karma_typescript/yarn.lock | 2020 --------------- .../internal/e2e/npm_packages/test.sh | 72 - .../e2e/npm_packages/ts_auto_deps/.bazelrc | 6 - .../e2e/npm_packages/ts_auto_deps/BUILD.bazel | 15 - .../e2e/npm_packages/ts_auto_deps/WORKSPACE | 41 - .../ts_auto_deps/package-template.json | 9 - .../npm_packages/ts_auto_deps/simple/file.ts | 2 - .../ts_auto_deps/tsconfig.json.oss | 0 .../e2e/npm_packages/ts_auto_deps/yarn.lock | 242 -- .../e2e/npm_packages/ts_devserver/BUILD.bazel | 47 - .../e2e/npm_packages/ts_devserver/WORKSPACE | 41 - .../e2e/npm_packages/ts_devserver/app.ts | 4 - .../npm_packages/ts_devserver/app_e2e_test.ts | 25 - .../e2e/npm_packages/ts_devserver/index.html | 21 - .../ts_devserver/package-template.json | 17 - .../ts_devserver/protractor.conf.js | 12 - .../ts_devserver/red-body-style.css | 3 - .../ts_devserver/subpackage/BUILD.bazel | 33 - .../ts_devserver/subpackage/index.html | 10 - .../subpackage/subpackage_e2e_test.ts | 17 - .../ts_devserver/tsconfig.json.oss | 5 - .../e2e/npm_packages/ts_devserver/yarn.lock | 1261 --------- .../e2e/npm_packages/typescript_2.7/.bazelrc | 6 - .../npm_packages/typescript_2.7/BUILD.bazel | 45 - .../e2e/npm_packages/typescript_2.7/WORKSPACE | 41 - .../npm_packages/typescript_2.7/main.spec.ts | 31 - .../e2e/npm_packages/typescript_2.7/main.ts | 3 - .../typescript_2.7/package-template.json | 12 - .../typescript_2.7/tsconfig.json.oss | 0 .../e2e/npm_packages/typescript_2.7/yarn.lock | 300 --- .../e2e/npm_packages/typescript_2.8/.bazelrc | 6 - .../npm_packages/typescript_2.8/BUILD.bazel | 45 - .../e2e/npm_packages/typescript_2.8/WORKSPACE | 41 - .../npm_packages/typescript_2.8/main.spec.ts | 31 - .../e2e/npm_packages/typescript_2.8/main.ts | 3 - .../typescript_2.8/package-template.json | 12 - .../typescript_2.8/tsconfig.json.oss | 0 .../e2e/npm_packages/typescript_2.8/yarn.lock | 300 --- .../e2e/npm_packages/typescript_2.9/.bazelrc | 6 - .../npm_packages/typescript_2.9/BUILD.bazel | 45 - .../e2e/npm_packages/typescript_2.9/WORKSPACE | 41 - .../npm_packages/typescript_2.9/main.spec.ts | 31 - .../e2e/npm_packages/typescript_2.9/main.ts | 3 - .../typescript_2.9/package-template.json | 12 - .../typescript_2.9/tsconfig.json.oss | 0 .../e2e/npm_packages/typescript_2.9/yarn.lock | 300 --- .../e2e/npm_packages/typescript_3.0/.bazelrc | 6 - .../npm_packages/typescript_3.0/BUILD.bazel | 45 - .../e2e/npm_packages/typescript_3.0/WORKSPACE | 41 - .../npm_packages/typescript_3.0/main.spec.ts | 31 - .../e2e/npm_packages/typescript_3.0/main.ts | 3 - .../typescript_3.0/package-template.json | 12 - .../typescript_3.0/tsconfig.json.oss | 0 .../e2e/npm_packages/typescript_3.0/yarn.lock | 300 --- .../e2e/npm_packages/typescript_3.1/.bazelrc | 6 - .../npm_packages/typescript_3.1/BUILD.bazel | 45 - .../e2e/npm_packages/typescript_3.1/WORKSPACE | 41 - .../npm_packages/typescript_3.1/main.spec.ts | 31 - .../e2e/npm_packages/typescript_3.1/main.ts | 3 - .../typescript_3.1/package-template.json | 12 - .../typescript_3.1/tsconfig.json.oss | 0 .../e2e/npm_packages/typescript_3.1/yarn.lock | 300 --- .../e2e/reference_types_directive/BUILD.bazel | 28 - .../reference_types_directive/package.json | 11 - .../reference_types.spec.ts | 21 - .../tsconfig.json.oss | 5 - .../tsconfig_types.ts | 3 - .../e2e/reference_types_directive/yarn.lock | 19 - .../internal/e2e/strict_deps/child.ts | 4 - .../internal/e2e/strict_deps/grandparent.ts | 1 - .../internal/e2e/strict_deps/parent.ts | 4 - .../internal/e2e/typescript_3.1/.bazelrc | 6 - .../internal/e2e/typescript_3.1/BUILD.bazel | 44 - .../internal/e2e/typescript_3.1/WORKSPACE | 38 - .../internal/e2e/typescript_3.1/main.spec.ts | 22 - .../internal/e2e/typescript_3.1/main.ts | 3 - .../internal/e2e/typescript_3.1/package.json | 15 - .../e2e/typescript_3.1/tsconfig.json.oss | 0 .../internal/e2e/typescript_3.1/yarn.lock | 301 --- .../bazelbuild/rules_typescript/package.json | 5 +- 131 files changed, 3 insertions(+), 12428 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/.ci/rules_typescript.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/.circleci/bazel.rc delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml delete mode 100755 third_party/github.com/bazelbuild/rules_typescript/.circleci/setup_cache.sh delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/absolute_imports/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/absolute_imports/foo.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/absolute_imports/importer.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/WORKSPACE delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/main.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/erroneous.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/erroneous_decl.d.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/README.md delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/.bazelrc delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/README.md delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/amd-modules.spec.js delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/decrement.js delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/decrement.spec.js delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/package-template.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/requirejs-config.js delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/unnamed-amd-module.js delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/.bazelrc delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/failing.spec.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/package-template.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/hello.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/test.spec.ts delete mode 100755 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_sourcemap.sh delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/yarn.lock delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/.bazelrc delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/decrement.spec.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/decrement.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/package-template.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/yarn.lock delete mode 100755 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/test.sh delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/.bazelrc delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/package-template.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/simple/file.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/yarn.lock delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/app.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/app_e2e_test.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/index.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/package-template.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/protractor.conf.js delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/red-body-style.css delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/index.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/subpackage_e2e_test.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/yarn.lock delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/.bazelrc delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/main.spec.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/main.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/package-template.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/.bazelrc delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/main.spec.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/main.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/package-template.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/.bazelrc delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/main.spec.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/main.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/package-template.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/.bazelrc delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/main.spec.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/main.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/package-template.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/.bazelrc delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/main.spec.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/main.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/package-template.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/package.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/reference_types.spec.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/tsconfig_types.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/yarn.lock delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/child.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/grandparent.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/parent.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/.bazelrc delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/WORKSPACE delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/main.spec.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/main.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/package.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/yarn.lock diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml index 5d8f34e7de..92b8746fdb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml @@ -6,7 +6,6 @@ platforms: - "@nodejs//:yarn" build_targets: - "..." - - "@disable_tsetse_for_external_test//..." test_flags: # TODO(gregmagolan): shared libs needed by chrome & firefox not available on ubuntu1404 - "--test_tag_filters=-browser:chromium-local,-browser:firefox-local" @@ -18,7 +17,6 @@ platforms: - "@nodejs//:yarn" build_targets: - "..." - - "@disable_tsetse_for_external_test//..." # Run some targets again, but addressed as an external repo # TODO(alexeagle): run all of them after fixing https://github.com/bazelbuild/rules_typescript/issues/243 - "@npm_bazel_typescript//examples/some_library:lib" @@ -33,7 +31,6 @@ platforms: - "@nodejs//:yarn" build_targets: - "..." - - "@disable_tsetse_for_external_test//..." test_flags: # TODO(gregmagolan): chrome & firefox unknown breakage on macos target here; does work locally on mac - "--test_tag_filters=-browser:chromium-local,-browser:firefox-local" @@ -47,7 +44,6 @@ platforms: - "--action_env=PATH" build_targets: - "..." - - "@disable_tsetse_for_external_test//..." test_flags: - "--action_env=PATH" - "--test_env=PATH" diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelignore b/third_party/github.com/bazelbuild/rules_typescript/.bazelignore index 8f1d7b0fa2..cf89afe190 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelignore +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelignore @@ -1,5 +1,2 @@ node_modules devserver/devserver/test/test-workspace -internal/e2e/disable_tsetse_for_external -internal/e2e/npm_packages -internal/e2e/typescript_3.1 diff --git a/third_party/github.com/bazelbuild/rules_typescript/.ci/rules_typescript.json b/third_party/github.com/bazelbuild/rules_typescript/.ci/rules_typescript.json deleted file mode 100644 index 01a62edb01..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/.ci/rules_typescript.json +++ /dev/null @@ -1,21 +0,0 @@ -[ - { - "configurations": [ - {"node": "linux-x86_64"}, - {"node": "ubuntu_16.04-x86_64"} - ], - "parameters": { - "configure": ["$BAZEL run @nodejs//:yarn"], - "test_tag_filters": ["-browser:chromium-local"] - } - }, - { - "configurations": [ - {"node": "darwin-x86_64"} - ], - "parameters": { - "configure": ["$BAZEL run @nodejs//:yarn"], - "test_tag_filters": ["-browser:chromium-local"] - } - } -] diff --git a/third_party/github.com/bazelbuild/rules_typescript/.circleci/bazel.rc b/third_party/github.com/bazelbuild/rules_typescript/.circleci/bazel.rc deleted file mode 100644 index 595b37d6e8..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/.circleci/bazel.rc +++ /dev/null @@ -1,38 +0,0 @@ -# These options are enabled when running on CI -# We do this by copying this file to /etc/bazel.bazelrc at the start of the build. - -# Don't be spammy in the logs -build --noshow_progress - -# Don't run manual tests -test --test_tag_filters=-manual - -# Print all the options that apply to the build. -# This helps us diagnose which options override others -# (e.g. /etc/bazel.bazelrc vs. /.bazelrc) -build --announce_rc - -# Enable experimental CircleCI bazel remote cache proxy -build --experimental_remote_spawn_cache --remote_rest_cache=http://localhost:7643 - -# Prevent unstable environment variables from tainting cache keys -build --experimental_strict_action_env - -# Save downloaded repositories such as the go toolchain -# This directory can then be included in the CircleCI cache -# It should save time running the first build -build --experimental_repository_cache=/home/circleci/bazel_repository_cache - -# Workaround https://github.com/bazelbuild/bazel/issues/3645 -# Bazel doesn't calculate the memory ceiling correctly when running under Docker. -# Limit Bazel to consuming 2360K of RAM -build --local_resources=2360,1.0,1.0 -# Also limit Bazel's own JVM heap to stay within our 4G container limit -startup --host_jvm_args=-Xmx3g -# Since the default CircleCI container has only 4G, limiting the memory -# is required to keep Bazel from exhausting the memory. These values -# are determined experimentally. If the Bazel process crashes without -# any error messages then the --local_resources and --host_jvm_args -# memory should be reduced. If the Bazel process errors out within -# a "JVM out of memory" error then the --host_jvm_args memory should -# be increased. \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml b/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml deleted file mode 100644 index 883705f05a..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/.circleci/config.yml +++ /dev/null @@ -1,131 +0,0 @@ -# Configuration file for https://circleci.com/gh/bazelbuild/rules_typescript - -# Note: YAML anchors allow an object to be re-used, reducing duplication. -# The ampersand declares an alias for an object, then later the `<<: *name` -# syntax dereferences it. -# See http://blog.daemonl.com/2016/02/yaml.html -# To validate changes, use an online parser, eg. -# http://yaml-online-parser.appspot.com/ - -## IMPORTANT -# If you change the `docker_image` version, also change the `cache_key` suffix -var_1: &docker_image circleci/node:10.12-browsers -var_2: &cache_key rules_typescript-{{ checksum "yarn.lock" }}-internal/karma:node:{{ checksum "internal/karma/yarn.lock" }}-10.12-browsers -var_3: &setup-bazel-remote-cache - run: - name: Start up bazel remote cache proxy - command: ~/bazel-remote-proxy -backend circleci:// - background: true - -# Settings common to each job -anchor_1: &job_defaults - working_directory: ~/ts - # Use a docker image with bazel already installed - docker: - - image: *docker_image - -# After checkout, rebase on top of master. -# Similar to travis behavior, but not quite the same. -# See https://discuss.circleci.com/t/1662 -anchor_2: &post_checkout - post: git pull --ff-only origin "refs/pull/${CI_PULL_REQUEST//*pull\//}/merge" - -version: 2 -jobs: - build: - <<: *job_defaults - steps: - - checkout: - <<: *post_checkout - - run: .circleci/setup_cache.sh - - run: sudo cp .circleci/bazel.rc /etc/bazel.bazelrc - - *setup-bazel-remote-cache - - restore_cache: - key: *cache_key - - - run: yarn install - - run: yarn bazel info release - - run: yarn bazel build ... - - run: yarn bazel test ... - - run: 'cd internal/karma && - yarn install && - yarn bazel build ...' - - run: yarn bazel build @disable_tsetse_for_external_test//... - - # This job tests the same stuff, but without the .bazelrc file. - # It disables worker mode, for example. - build_no_bazelrc: - <<: *job_defaults - steps: - - checkout: - <<: *post_checkout - - run: .circleci/setup_cache.sh - - run: sudo cp .circleci/bazel.rc /etc/bazel.bazelrc - - *setup-bazel-remote-cache - - restore_cache: - key: *cache_key - - - run: yarn install - - run: yarn bazel --bazelrc=/dev/null info release - # We cherry pick the memory utilization options from .circleci/bazel.rc here. - # Since the default CircleCI container has only 4G, limiting the memory - # is required to keep Bazel from exhausting the memory. - - run: yarn bazel --bazelrc=/dev/null --host_jvm_args=-Xmx3g build ... --local_resources=2560,1.0,1.0 - - run: yarn bazel --bazelrc=/dev/null --host_jvm_args=-Xmx3g test ... --local_resources=2560,1.0,1.0 - - run: 'cd internal/karma && - yarn install && - yarn bazel --bazelrc=/dev/null --host_jvm_args=-Xmx3g build ... --local_resources=2560,1.0,1.0' - - run: yarn bazel --bazelrc=/dev/null --host_jvm_args=-Xmx3g build @disable_tsetse_for_external_test//... --local_resources=2560,1.0,1.0 - - - save_cache: - key: *cache_key - paths: - - "node_modules" - - "internal/karma/node_modules" - - # Runs end-to-end browser tests. - test: - <<: *job_defaults - resource_class: xlarge - environment: - CHROMEDRIVER_VERSION_ARG: --versions.chrome 2.41 - steps: - - checkout: - <<: *post_checkout - - run: .circleci/setup_cache.sh - - run: sudo cp .circleci/bazel.rc /etc/bazel.bazelrc - - *setup-bazel-remote-cache - - restore_cache: - key: *cache_key - - - run: yarn install - - run: xvfb-run -a yarn e2e - - lint: - <<: *job_defaults - steps: - - checkout: - <<: *post_checkout - - - run: yarn install - - # Run the skylark linter to check our Bazel rules - # Note, this is not yet enforced, because - # - buildifier doesn't exit non-zero in the presence of lint warnings: https://github.com/bazelbuild/buildtools/issues/470 - # - false positive for rule docstrings: https://github.com/bazelbuild/buildtools/issues/471 - - run: 'yarn bazel:lint || - (echo -e "\n.bzl files have lint errors. Please run ''yarn bazel:lint-fix''"; exit 1)' - - # Enforce that BUILD files are formatted. - - run: 'yarn bazel:format -mode=check || - (echo "BUILD files not formatted. Please run ''yarn bazel:format''" ; exit 1)' - -workflows: - version: 2 - # Run the two builds in parallel, reporting separate status to github PRs. - default_workflow: - jobs: - - build - - build_no_bazelrc - - test - - lint diff --git a/third_party/github.com/bazelbuild/rules_typescript/.circleci/setup_cache.sh b/third_party/github.com/bazelbuild/rules_typescript/.circleci/setup_cache.sh deleted file mode 100755 index 53462a2044..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/.circleci/setup_cache.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -set -u -e - -readonly DOWNLOAD_URL="https://6-116431813-gh.circle-artifacts.com/0/pkg/bazel-remote-proxy-$(uname -s)_$(uname -m)" - -curl --fail -o ~/bazel-remote-proxy "$DOWNLOAD_URL" -chmod +x ~/bazel-remote-proxy diff --git a/third_party/github.com/bazelbuild/rules_typescript/.gitignore b/third_party/github.com/bazelbuild/rules_typescript/.gitignore index eea1acf5e9..ba9bf88d29 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.gitignore +++ b/third_party/github.com/bazelbuild/rules_typescript/.gitignore @@ -1,8 +1,4 @@ .idea node_modules /bazel-* -/internal/e2e/npm_packages/*/bazel-* -/internal/e2e/npm_packages/*/package.json -/internal/e2e/npm_packages/ts_auto_deps/simple/BUILD -/internal/e2e/npm_packages/ts_auto_deps/simple/BUILD.bazel /internal/karma/bazel-* diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 3819e0a8af..044cb3890f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -103,6 +103,8 @@ filegroup( name = "node_modules", srcs = glob( include = [ + # Must include .proto files since the tsc_wrapped compiler utilizes them + "node_modules/**/*.proto", "node_modules/**/*.js", "node_modules/**/*.d.ts", "node_modules/**/*.json", diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index b2e86ba8e9..9ee5c20816 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -40,13 +40,6 @@ yarn_install( yarn_lock = "//examples/bazel_managed_deps:yarn.lock", ) -# Deps for the //internal/e2e/reference_types_directive test -yarn_install( - name = "build_bazel_rules_typescript_internal_reference_types_directive_deps", - package_json = "//internal/e2e/reference_types_directive:package.json", - yarn_lock = "//internal/e2e/reference_types_directive:yarn.lock", -) - # Install a hermetic version of node. node_repositories() @@ -98,13 +91,6 @@ load("@npm_bazel_karma//:browser_repositories.bzl", "browser_repositories") browser_repositories() -# Tell Bazel where the nested local repositories are that are -# used for tests -local_repository( - name = "disable_tsetse_for_external_test", - path = "internal/e2e/disable_tsetse_for_external", -) - local_repository( name = "devserver_test_workspace", path = "devserver/devserver/test/test-workspace", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/absolute_imports/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/absolute_imports/BUILD.bazel deleted file mode 100644 index a9f216c8de..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/absolute_imports/BUILD.bazel +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("//internal:defaults.bzl", "ts_library") - -package(default_visibility = ["//visibility:public"]) - -ts_library( - name = "absolute_imports", - srcs = glob(["*.ts"]), - expected_diagnostics = [ - "TS2307: Cannot find module 'internal/e2e/absolute_imports/foo'", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/absolute_imports/foo.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/absolute_imports/foo.ts deleted file mode 100644 index ea26727cf8..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/absolute_imports/foo.ts +++ /dev/null @@ -1,2 +0,0 @@ -const a = 1; -export default a; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/absolute_imports/importer.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/absolute_imports/importer.ts deleted file mode 100644 index 472d9e403f..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/absolute_imports/importer.ts +++ /dev/null @@ -1 +0,0 @@ -import foo from 'internal/e2e/absolute_imports/foo'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js deleted file mode 100644 index dd909a4742..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/default_tsconfig_test.js +++ /dev/null @@ -1,436 +0,0 @@ -/** - * @fileoverview - * This tests interactions between multiple Bazel workspaces. - * - * We have learned from experience in the rules_nodejs repo that it's not - * practical to simply check in the nested WORKSPACE files and try to build - * them, because - * - it's hard to exclude them from the parent WORKSPACE - each nested workspace - * must be registered there with a matching name - * - testing a child workspace requires `cd` into the directory, which doesn't - * fit the CI model of `bazel test ...` - * - * The test is written in JavaScript simply to make it more portable, so we can - * run it on Windows for example. We don't use TypeScript here since we are - * running outside the build system. - */ - -const fs = require('fs'); -const path = require('path'); -const child_process = require('child_process'); -const os = require('os'); - -const tmpdir = fs.mkdtempSync(path.join(os.tmpdir(), 'wksp')); -const WORKSPACE_BOILERPLATE = ` -local_repository( - name = "npm_bazel_typescript", - path = "${process.cwd()}", -) -# Using rules_typescript_dev_dependencies for this test since we're not depending on the generated npm package -load("@npm_bazel_typescript//:package.bzl", "rules_typescript_dev_dependencies") -rules_typescript_dev_dependencies() -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") -node_repositories() -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) -# Using ts_setup_dev_workspace for this test since we're not depending on the generated npm package -load("@npm_bazel_typescript//internal:ts_repositories.bzl", "ts_setup_dev_workspace") -ts_setup_dev_workspace() -`; - -const PACKAGE_JSON = `{ - "devDependencies": { - "@types/node": "7.0.18", - "protobufjs": "5.0.3", - "source-map-support": "0.5.9", - "tsickle": "0.33.1", - "tsutils": "2.27.2", - "typescript": "~3.1.3" - } -} -`; - -const YARN_LOCK = - `# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@types/node@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" - integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= - dependencies: - long "~3" - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -glob@^7.0.5: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - 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" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -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" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - 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" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -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" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== - 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" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.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" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -tsickle@0.33.1: - version "0.33.1" - resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.33.1.tgz#eee4ebabeda3bcd8afc32cee34c822cbe3e839ec" - integrity sha512-SpW2G3PvDGs4a5sMXPlWnCWHWRviWjSlI3U0734e3fU3U39VAE0NPr8M3W1cuL/OU/YXheYipGeEwtIJ5k0NHQ== - dependencies: - minimist "^1.2.0" - mkdirp "^0.5.1" - source-map "^0.7.3" - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== - dependencies: - tslib "^1.8.1" - -typescript@~3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" - integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - -yargs@^3.10.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" -`; - -/** - * Create a file at path filename, creating parent directories as needed, under - * this test's temp directory. Write the content into that file. - */ -function write(filename, content) { - var parents = path.dirname(path.join(tmpdir, filename)); - while (path.dirname(parents) !== parents) { - if (!fs.existsSync(path.join(parents))) { - fs.mkdirSync(path.join(parents)); - } - parents = path.dirname(parents); - } - fs.writeFileSync(path.join(tmpdir, filename), content); -} - -function bazel(workspace, args) { - const result = child_process.spawnSync('bazel', args, { - cwd: path.join(tmpdir, workspace), - stdio: 'inherit', - }); - expect(result.status).toBe(0, 'bazel exited with non-zero exit code'); -} - -describe('default tsconfig', () => { - it(`uses the tsconfig in the workspace defining the rule, - not the workspace where the rule is defined (rules_typescript), nor - the workspace where the build is occurring`, - () => { - // Workspace 'a' can't compile with --noImplicitAny. - // When workspace 'b' has a dep here, we make sure not to use the - // tsconfig from workspace 'b' - write('a/package.json', PACKAGE_JSON); - write('a/yarn.lock', YARN_LOCK); - write('a/WORKSPACE', ` -workspace(name = "a") -${WORKSPACE_BOILERPLATE}`); - write('a/BUILD', ` -# We use ts_library from internal/defaults.bzl since we don't have a @bazel/typescript npm -# package in this test. This changes the ts_library compiler from the default -# which depends on @npm//@bazel/typescript which is not available in this test to '@npm_bazel_typescript//internal:tsc_wrapped_bin' which is -load("@npm_bazel_typescript//internal:defaults.bzl", "ts_library") -ts_library( - name = "a_lib", - srcs=["has_implicit_any.ts"], - visibility = ["//visibility:public"], -) - `); - write('a/tsconfig.json', `{}`); - write('a/has_implicit_any.ts', `function f(a) { - console.error(a); - }`); - - // Workspace 'b' has a default tsconfig that sets --noImplicitAny. - write('b/package.json', PACKAGE_JSON); - write('b/yarn.lock', YARN_LOCK); - write('b/WORKSPACE', ` -workspace(name="b") -local_repository(name="a", path="../a") -${WORKSPACE_BOILERPLATE}`); - write('b/BUILD', ` -# We use ts_library from internal/defaults.bzl since we don't have a @bazel/typescript npm -# package in this test. This changes the ts_library compiler from the default -# which depends on @npm//@bazel/typescript which is not available in this test to '@npm_bazel_typescript//internal:tsc_wrapped_bin' which is -load("@npm_bazel_typescript//internal:defaults.bzl", "ts_library") -exports_files(["tsconfig.json"]) -ts_library( - name = "b_lib", - srcs = ["file.ts"], - deps = ["@a//:a_lib"], -) - `); - write('b/file.ts', ` - f('thing'); - `); - write('b/tsconfig.json', `{ - "compilerOptions": { - "noImplicitAny": true - } - }`); - - // Now build from workspace 'b' and verify that the dep in workspace 'a' - // was able to compile. - bazel('b', ['build', ':all']); - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/BUILD.bazel deleted file mode 100644 index ccdb610dbc..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/BUILD.bazel +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("@npm_bazel_typescript//internal:defaults.bzl", "ts_library") - -package(default_visibility = ["//visibility:public"]) - -ts_library( - name = "main", - srcs = glob(["*.ts"]), - deps = ["@npm//@types"], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/WORKSPACE deleted file mode 100644 index 96c1bacf63..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/WORKSPACE +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -workspace(name = "disable_tsetse_for_external_test") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/main.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/main.ts deleted file mode 100644 index 691f11af3d..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/main.ts +++ /dev/null @@ -1,19 +0,0 @@ -export {}; - -// string.trim() result is unused -let stringUnused; -stringUnused = 'hello'; -stringUnused.trim(); -const stringLiteralUnused = 'hello'; -stringLiteralUnused.trim(); - -// Array.concat() result is unused. -const arrayOfStringsUnused = ['hello']; -arrayOfStringsUnused.concat(arrayOfStringsUnused); - -// Object.create() result is unused -const objectUnused = {}; -Object.create(objectUnused); - -// string.replace() with a substring -stringUnused.replace('o', 'O'); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/disable_tsetse_for_external/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/BUILD.bazel deleted file mode 100644 index 874aeb7a80..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/BUILD.bazel +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("//internal:defaults.bzl", "ts_library") - -package(default_visibility = ["//visibility:public"]) - -ts_library( - name = "erroneous", - srcs = glob(["*.ts"]), - expected_diagnostics = [ - "TS2322: Type '\"not a number\"' is not assignable to type 'number'", - "TS2304: Cannot find name 'TypeThatDoesNotExist'", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/erroneous.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/erroneous.ts deleted file mode 100644 index b0a583ca5f..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/erroneous.ts +++ /dev/null @@ -1 +0,0 @@ -export const x: number = 'not a number'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/erroneous_decl.d.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/erroneous_decl.d.ts deleted file mode 100644 index c1a3b97db3..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/errorchecks/erroneous_decl.d.ts +++ /dev/null @@ -1,2 +0,0 @@ - -export declare class Foo { field: TypeThatDoesNotExist; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/README.md b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/README.md deleted file mode 100644 index 240a622996..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# End-to-end tests for generated npm packages - -All tests that depend on the generated npm packages such as `@bazel/typescript` and `@bazel/karma` should -go in this folder. - -## Running - -These tests are run using `test.sh` which generates the `package.json` files in each directory before calling `yarn test`. -The `package.json` files are generated from template `package-template.json` files. The absolute locations of -the generated npm packages are substituted in when generating the `package.json` files. - -### Running an individual test - -To run a specific test run `yarn e2e-npm_packages --test ` where `` -is the name of the test folder to run. - -### Updating yarn.lock file - -To update the `yarn.lock` files for these tests run `yarn e2e-npm_packages --update-lock-files`. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/.bazelrc deleted file mode 100644 index 178af0a3f9..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/.bazelrc +++ /dev/null @@ -1,6 +0,0 @@ -# Don't create symlinks like bazel-out in the project. -# These cause VSCode to traverse a massive tree, opening file handles and -# eventually a surprising failure with auto-discovery of the C++ toolchain in -# MacOS High Sierra. -# See https://github.com/bazelbuild/bazel/issues/4603 -build --symlink_prefix=/ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel deleted file mode 100644 index d96a405022..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/BUILD.bazel +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("@npm_bazel_karma//:defs.bzl", "ts_web_test_suite") - -ts_web_test_suite( - name = "testing", - srcs = glob(["*.js"]), - browsers = [ - "@io_bazel_rules_webtesting//browsers:chromium-local", - "@io_bazel_rules_webtesting//browsers:firefox-local", - ], - static_files = [ - ":unnamed-amd-module.js", - ], - deps = [ - ":requirejs-config.js", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/README.md b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/README.md deleted file mode 100644 index a9c025493b..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Testing karma dependency - -A karma 3.0.0 dependency is here to verify that a user's karma dependency doesn't interfere with -the ts_web_test_suite rule which depends on a transitive dependency in @bazel/karma on a different -version of karma. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE deleted file mode 100644 index fee3fa61aa..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/WORKSPACE +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -workspace(name = "npm_packages_karma_e2e") - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "build_bazel_rules_nodejs", - sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], -) - -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") - -node_repositories() - -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") - -install_bazel_dependencies() - -load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies") - -rules_karma_dependencies() - -load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories") - -web_test_repositories() - -load("@npm_bazel_karma//:browser_repositories.bzl", "browser_repositories") - -browser_repositories() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/amd-modules.spec.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/amd-modules.spec.js deleted file mode 100644 index c52e4040b8..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/amd-modules.spec.js +++ /dev/null @@ -1,32 +0,0 @@ -define('npm_packages_karma_e2e/amd-modules.spec', ['require'], (require) => { - - describe('AMD module loading', () => { - - describe('unnamed amd modules', () => { - - it('should not warn if module is configured as static file', doneFn => { - spyOn(console, 'error'); - - require(['unnamed-module'], () => { - // Loading such an anonymous AMD module should not cause any error messages about - // a missing timestamp. This is a limitation of the "karma-requirejs" plugin which - // by default always prints an error for requests through Karma's proxy. - // See: https://github.com/karma-runner/karma-requirejs/issues/6 - expect(console.error).toHaveBeenCalledTimes(0); - doneFn(); - }); - }); - - it('should warn if module is not specified as static file', doneFn => { - spyOn(console, 'error').and.callThrough(); - - require(['unnamed-module-invalid-file'], - /* loaded callback */ () => {}, - /* error callback */ () => { - expect(console.error).toHaveBeenCalledWith(jasmine.stringMatching(/no timestamp/)); - doneFn(); - }); - }); - }); - }) -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/decrement.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/decrement.js deleted file mode 100644 index 9743a4004d..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/decrement.js +++ /dev/null @@ -1,15 +0,0 @@ -(function(factory) { -if (typeof module === 'object' && typeof module.exports === 'object') { - var v = factory(require, exports); - if (v !== undefined) module.exports = v; -} else if (typeof define === 'function' && define.amd) { - define('npm_packages_karma_e2e/decrement', ['require', 'exports'], factory); -} -})(function(require, exports) { -'use strict'; -Object.defineProperty(exports, '__esModule', {value: true}); -function decrement(n) { - return n - 1; -} -exports.decrement = decrement; -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/decrement.spec.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/decrement.spec.js deleted file mode 100644 index 6485d22b08..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/decrement.spec.js +++ /dev/null @@ -1,19 +0,0 @@ -(function(factory) { -if (typeof module === 'object' && typeof module.exports === 'object') { - var v = factory(require, exports); - if (v !== undefined) module.exports = v; -} else if (typeof define === 'function' && define.amd) { - define( - 'npm_packages_karma_e2e/decrement.spec', - ['require', 'exports', 'npm_packages_karma_e2e/decrement'], factory); -} -})(function(require, exports) { -'use strict'; -Object.defineProperty(exports, '__esModule', {value: true}); -var decrement_1 = require('npm_packages_karma_e2e/decrement'); -describe('decrementing', function() { - it('should do that', function() { - expect(decrement_1.decrement(1)).toBe(0); - }); -}); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/package-template.json deleted file mode 100644 index 9f22599aa2..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/package-template.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "dependencies": { - "@bazel/karma": "file:${BAZEL_KARMA_NPM_PACKAGE}", - "karma": "3.0.0" - }, - "scripts": { - "test": "bazel test ..." - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/requirejs-config.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/requirejs-config.js deleted file mode 100644 index 5ad31a12d9..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/requirejs-config.js +++ /dev/null @@ -1,8 +0,0 @@ -require.config({ - paths: { - // Configure some fake AMD module that exists and should not cause a loading - // error message from the "karma-requirejs" plugin which is enabled by default. - 'unnamed-module': '/base/npm_packages_karma_e2e/unnamed-amd-module', - 'unnamed-module-invalid-file': '/some-invalid-file-path', - } -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/unnamed-amd-module.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/unnamed-amd-module.js deleted file mode 100644 index fd58f4e6e8..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/unnamed-amd-module.js +++ /dev/null @@ -1,5 +0,0 @@ -// Unnamed AMD module definition which needs to be manually configured through -// a "requirejs" configuration whenever this module should be loaded. -define(function() { - // Just an empty definition. Nothing to assert here. -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock deleted file mode 100644 index 392dea6cd2..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma/yarn.lock +++ /dev/null @@ -1,2199 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@bazel/karma@file:../../../../../../../../../private/var/tmp/_bazel_greg/8018d2bc8e133e0b44c274b6423215ba/execroot/npm_bazel_karma/bazel-out/darwin-fastbuild/bin/npm_package": - version "0.0.0" - dependencies: - jasmine-core "2.8.0" - karma "^4.0.0" - karma-chrome-launcher "2.2.0" - karma-firefox-launcher "1.1.0" - karma-jasmine "1.1.1" - karma-requirejs "1.1.0" - karma-sauce-launcher "2.0.2" - karma-sourcemap-loader "0.3.7" - requirejs "2.3.5" - semver "5.6.0" - tmp "0.0.33" - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -accepts@~1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" - integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= - dependencies: - mime-types "~2.1.18" - negotiator "0.6.1" - -adm-zip@~0.4.3: - version "0.4.13" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" - integrity sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw== - -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= - -agent-base@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== - dependencies: - es6-promisify "^5.0.0" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - 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" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -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" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-slice@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" - integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -arraybuffer.slice@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" - integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - integrity sha1-GdOGodntxufByF04iu28xW0zYC0= - -async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== - -async@^2.1.2: - version "2.6.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" - integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== - dependencies: - lodash "^4.17.10" - -atob@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= - -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - 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" - -better-assert@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" - integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= - dependencies: - callsite "1.0.0" - -binary-extensions@^1.0.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" - integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== - -blob@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" - integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== - -bluebird@^3.3.0: - version "3.5.3" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" - integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== - -body-parser@^1.16.1: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" - on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^0.1.2: - version "0.1.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" - integrity sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY= - dependencies: - expand-range "^0.1.0" - -braces@^2.3.0, braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - 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" - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - 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" - -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= - -chokidar@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" - integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== - 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" - lodash.debounce "^4.0.8" - normalize-path "^2.1.1" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - upath "^1.0.5" - optionalDependencies: - fsevents "^1.2.2" - -chownr@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== - -circular-json@^0.5.5: - version "0.5.9" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" - integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -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" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -colors@^1.1.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== - -combine-lists@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" - integrity sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y= - dependencies: - lodash "^4.5.0" - -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= - -component-emitter@1.2.1, component-emitter@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= - -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -connect@^3.6.0: - version "3.6.6" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" - integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ= - dependencies: - debug "2.6.9" - finalhandler "1.1.0" - parseurl "~1.3.2" - utils-merge "1.0.1" - -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" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-js@^2.2.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.3.tgz#4b70938bdffdaf64931e66e2db158f0892289c49" - integrity sha512-l00tmFFZOBHtYhN4Cz7k32VM7vTn3rE2ANjQDxdEN6zmXZ/xq1jQuutnmHvMG1ZJ7xd72+TA5YpUK8wz3rWsfQ== - -core-js@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" - integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= - -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" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -custom-event@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" - integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= - -date-format@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" - integrity sha1-YV6CjiM90aubua4JUODOzPpuytg= - -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@=3.1.0, debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -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" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - 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" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - 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" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - -di@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= - -dom-serialize@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" - integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= - dependencies: - custom-event "~1.0.0" - ent "~2.2.0" - extend "^3.0.0" - void-elements "^2.0.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -encodeurl@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -engine.io-client@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" - integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.1.1" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.5" - parseuri "0.0.5" - ws "~3.3.1" - xmlhttprequest-ssl "~1.5.4" - yeast "0.1.2" - -engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6" - integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA== - dependencies: - after "0.8.2" - arraybuffer.slice "~0.0.7" - base64-arraybuffer "0.1.5" - blob "0.0.5" - has-binary2 "~1.0.2" - -engine.io@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" - integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== - dependencies: - accepts "~1.3.4" - base64id "1.0.0" - cookie "0.3.1" - debug "~3.1.0" - engine.io-parser "~2.1.0" - ws "~3.3.1" - -ent@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= - -es6-promise@^4.0.3: - version "4.2.5" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" - integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg== - -es6-promise@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" - integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -eventemitter3@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" - integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== - -expand-braces@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" - integrity sha1-SIsdHSRRyz06axks/AMPRMWFX+o= - dependencies: - array-slice "^0.2.3" - array-unique "^0.2.1" - braces "^0.1.2" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - 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" - -expand-range@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" - integrity sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ= - dependencies: - is-number "^0.1.1" - repeat-string "^0.2.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - 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" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - 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" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -finalhandler@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" - integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U= - dependencies: - debug "2.6.9" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.3.1" - unpipe "~1.0.0" - -flatted@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" - integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== - -follow-redirects@^1.0.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.6.1.tgz#514973c44b5757368bad8bddfe52f81f015c94cb" - integrity sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ== - dependencies: - debug "=3.1.0" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fs-access@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" - integrity sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o= - dependencies: - null-check "^1.0.0" - -fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== - 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" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.2: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" - integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== - dependencies: - nan "^2.9.2" - node-pre-gyp "^0.10.0" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - 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-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" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob@^7.1.1, glob@^7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - 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" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== - -has-binary2@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" - integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== - dependencies: - isarray "2.0.1" - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - 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" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - 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" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -http-errors@1.6.3, http-errors@~1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-proxy@^1.13.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" - integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== - dependencies: - eventemitter3 "^3.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -https-proxy-agent@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" - integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== - dependencies: - agent-base "^4.1.0" - debug "^3.1.0" - -iconv-lite@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== - dependencies: - minimatch "^3.0.4" - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -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" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - 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" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - 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" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - 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" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -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" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - 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" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - 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" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - 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" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - 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" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -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" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - 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" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - 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" - integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= - dependencies: - is-extglob "^2.1.1" - -is-number@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" - integrity sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY= - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -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" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isarray@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" - integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= - -isbinaryfile@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" - integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== - dependencies: - buffer-alloc "^1.2.0" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - 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" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -jasmine-core@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= - -jszip@^3.1.3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" - integrity sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ== - dependencies: - core-js "~2.3.0" - es6-promise "~3.0.2" - lie "~3.1.0" - pako "~1.0.2" - readable-stream "~2.0.6" - -karma-chrome-launcher@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" - integrity sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w== - dependencies: - fs-access "^1.0.0" - which "^1.2.1" - -karma-firefox-launcher@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz#2c47030452f04531eb7d13d4fc7669630bb93339" - integrity sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA== - -karma-jasmine@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.1.tgz#6fe840e75a11600c9d91e84b33c458e1c46a3529" - integrity sha1-b+hA51oRYAydkehLM8RY4cRqNSk= - -karma-requirejs@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/karma-requirejs/-/karma-requirejs-1.1.0.tgz#fddae2cb87d7ebc16fb0222893564d7fee578798" - integrity sha1-/driy4fX68FvsCIok1ZNf+5Xh5g= - -karma-sauce-launcher@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-2.0.2.tgz#dbf98e70d86bf287b03a537cf637eb7aefa975c3" - integrity sha512-jLUFaJhHMcKpxFWUesyWYihzM5FvQiJsDwGcCtKeOy2lsWhkVw0V0Byqb1d+wU6myU1mribBtsIcub23HS4kWA== - dependencies: - sauce-connect-launcher "^1.2.4" - saucelabs "^1.5.0" - selenium-webdriver "^4.0.0-alpha.1" - -karma-sourcemap-loader@0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" - integrity sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg= - dependencies: - graceful-fs "^4.1.2" - -karma@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-3.0.0.tgz#6da83461a8a28d8224575c3b5b874e271b4730c3" - integrity sha512-ZTjyuDXVXhXsvJ1E4CnZzbCjSxD6sEdzEsFYogLuZM0yqvg/mgz+O+R1jb0J7uAQeuzdY8kJgx6hSNXLwFuHIQ== - dependencies: - bluebird "^3.3.0" - body-parser "^1.16.1" - chokidar "^2.0.3" - colors "^1.1.0" - combine-lists "^1.0.0" - connect "^3.6.0" - core-js "^2.2.0" - di "^0.0.1" - dom-serialize "^2.2.0" - expand-braces "^0.1.1" - glob "^7.1.1" - graceful-fs "^4.1.2" - http-proxy "^1.13.0" - isbinaryfile "^3.0.0" - lodash "^4.17.4" - log4js "^3.0.0" - mime "^2.3.1" - minimatch "^3.0.2" - optimist "^0.6.1" - qjobs "^1.1.4" - range-parser "^1.2.0" - rimraf "^2.6.0" - safe-buffer "^5.0.1" - socket.io "2.1.1" - source-map "^0.6.1" - tmp "0.0.33" - useragent "2.2.1" - -karma@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-4.0.0.tgz#f28e38a2b66243fde3f98e12a8dcaa2c6ff8ca9c" - integrity sha512-EFoFs3F6G0BcUGPNOn/YloGOb3h09hzTguyXlg6loHlKY76qbJikkcyPk43m2kfRF65TUGda/mig29QQtyhm1g== - dependencies: - bluebird "^3.3.0" - body-parser "^1.16.1" - chokidar "^2.0.3" - colors "^1.1.0" - combine-lists "^1.0.0" - connect "^3.6.0" - core-js "^2.2.0" - di "^0.0.1" - dom-serialize "^2.2.0" - expand-braces "^0.1.1" - flatted "^2.0.0" - glob "^7.1.1" - graceful-fs "^4.1.2" - http-proxy "^1.13.0" - isbinaryfile "^3.0.0" - lodash "^4.17.5" - log4js "^3.0.0" - mime "^2.3.1" - minimatch "^3.0.2" - optimist "^0.6.1" - qjobs "^1.1.4" - range-parser "^1.2.0" - rimraf "^2.6.0" - safe-buffer "^5.0.1" - socket.io "2.1.1" - source-map "^0.6.1" - tmp "0.0.33" - useragent "2.3.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" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - 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" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - 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" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -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" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== - -lie@~3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" - integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= - dependencies: - immediate "~3.0.5" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.5.0: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== - -log4js@^3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.6.tgz#e6caced94967eeeb9ce399f9f8682a4b2b28c8ff" - integrity sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== - dependencies: - circular-json "^0.5.5" - date-format "^1.2.0" - debug "^3.1.0" - rfdc "^1.1.2" - streamroller "0.7.0" - -lru-cache@2.2.x: - version "2.2.4" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" - integrity sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0= - -lru-cache@4.1.x: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - 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" - -mime-db@~1.37.0: - version "1.37.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" - integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== - -mime-types@~2.1.18: - version "2.1.21" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" - integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== - dependencies: - mime-db "~1.37.0" - -mime@^2.3.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" - integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== - -minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - 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" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - -minipass@^2.2.1, minipass@^2.3.4: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== - 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" - integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.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" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - 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" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -nan@^2.9.2: - version "2.12.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" - integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - 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-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.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" - integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== - dependencies: - debug "^2.1.2" - iconv-lite "^0.4.4" - sax "^1.2.4" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= - -node-pre-gyp@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" - integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.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" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -npm-bundled@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" - integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== - -npm-packlist@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.2.0.tgz#55a60e793e272f00862c7089274439a4cc31fc7f" - integrity sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ== - 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" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -null-check@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" - integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0= - -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" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.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" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - 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" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -pako@~1.0.2: - version "1.0.8" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.8.tgz#6844890aab9c635af868ad5fecc62e8acbba3ea4" - integrity sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA== - -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= - dependencies: - better-assert "~1.0.0" - -parseurl@~1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" - integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -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" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= - -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" - integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -qjobs@^1.1.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" - integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== - -qs@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -range-parser@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= - -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== - dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" - unpipe "1.0.0" - -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - 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.3.0: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== - 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" - -readable-stream@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -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" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.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" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" - integrity sha1-x6jTI2BoNiBZp+RlH8aITosftK4= - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -requirejs@2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0" - integrity sha512-svnO+aNcR/an9Dpi44C7KSAy5fFGLtmPbaaCeQaklUz8BQhS64tWWIIlvEA5jrWICzlO/X9KSzSeXFnZdBu8nw== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -rfdc@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.2.tgz#e6e72d74f5dc39de8f538f65e00c36c18018e349" - integrity sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA== - -rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -safe-buffer@^5.0.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" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - 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" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sauce-connect-launcher@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.2.4.tgz#8d38f85242a9fbede1b2303b559f7e20c5609a1c" - integrity sha512-X2vfwulR6brUGiicXKxPm1GJ7dBEeP1II450Uv4bHGrcGOapZNgzJvn9aioea5IC5BPp/7qjKdE3xbbTBIVXMA== - dependencies: - adm-zip "~0.4.3" - async "^2.1.2" - https-proxy-agent "^2.2.1" - lodash "^4.16.6" - rimraf "^2.5.4" - -saucelabs@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" - integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== - dependencies: - https-proxy-agent "^2.2.1" - -sax@>=0.6.0, sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -selenium-webdriver@^4.0.0-alpha.1: - version "4.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz#cc93415e21d2dc1dfd85dfc5f6b55f3ac53933b1" - integrity sha512-z88rdjHAv3jmTZ7KSGUkTvo4rGzcDGMq0oXWHNIDK96Gs31JKVdu9+FMtT4KBrVoibg8dUicJDok6GnqqttO5Q== - dependencies: - jszip "^3.1.3" - rimraf "^2.5.4" - tmp "0.0.30" - xml2js "^0.4.17" - -semver@5.6.0, semver@^5.3.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= - 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" - integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - 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" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - 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" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - 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" - -socket.io-adapter@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" - integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= - -socket.io-client@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" - integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== - dependencies: - backo2 "1.0.2" - base64-arraybuffer "0.1.5" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "~3.1.0" - engine.io-client "~3.2.0" - has-binary2 "~1.0.2" - has-cors "1.1.0" - indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - socket.io-parser "~3.2.0" - to-array "0.1.4" - -socket.io-parser@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" - integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== - dependencies: - component-emitter "1.2.1" - debug "~3.1.0" - isarray "2.0.1" - -socket.io@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" - integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== - dependencies: - debug "~3.1.0" - engine.io "~3.2.0" - has-binary2 "~1.0.2" - socket.io-adapter "~1.1.0" - socket.io-client "2.1.1" - socket.io-parser "~3.2.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" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== - 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-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -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" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= - -streamroller@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" - integrity sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ== - dependencies: - date-format "^1.2.0" - debug "^3.1.0" - mkdirp "^0.5.1" - readable-stream "^2.3.0" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - 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" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - 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" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - 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" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - 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" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -tar@^4: - version "4.4.8" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.3.4" - minizlib "^1.1.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.2" - -tmp@0.0.30: - version "0.0.30" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" - integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= - dependencies: - os-tmpdir "~1.0.1" - -tmp@0.0.33, tmp@0.0.x: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= - -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" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - 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" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - 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" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -type-is@~1.6.16: - version "1.6.16" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" - integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.18" - -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== - -union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^0.4.3" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.0.5: - version "1.1.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" - integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -useragent@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e" - integrity sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4= - dependencies: - lru-cache "2.2.x" - tmp "0.0.x" - -useragent@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" - integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== - dependencies: - lru-cache "4.1.x" - tmp "0.0.x" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -void-elements@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= - -which@^1.2.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - 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" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -ws@~3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - -xml2js@^0.4.17: - version "0.4.19" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" - integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== - dependencies: - sax ">=0.6.0" - xmlbuilder "~9.0.1" - -xmlbuilder@~9.0.1: - version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= - -xmlhttprequest-ssl@~1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" - integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/.bazelrc deleted file mode 100644 index 178af0a3f9..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/.bazelrc +++ /dev/null @@ -1,6 +0,0 @@ -# Don't create symlinks like bazel-out in the project. -# These cause VSCode to traverse a massive tree, opening file handles and -# eventually a surprising failure with auto-discovery of the C++ toolchain in -# MacOS High Sierra. -# See https://github.com/bazelbuild/bazel/issues/4603 -build --symlink_prefix=/ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/BUILD.bazel deleted file mode 100644 index 63535a46ab..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/BUILD.bazel +++ /dev/null @@ -1,53 +0,0 @@ -# Copyright 2019 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("@npm_bazel_karma//:defs.bzl", "ts_web_test_suite") -load("@npm_bazel_typescript//:defs.bzl", "ts_library") - -package(default_visibility = ["//visibility:public"]) - -exports_files(["tsconfig.json"]) - -ts_library( - name = "test_lib", - testonly = True, - srcs = glob(["*.spec.ts"]), - deps = [ - "@npm//@types/jasmine", - ], -) - -# This is a test with failing test. This test is not directly run by CI. -# The sh_test below invokes this test and checks the source mapped lines in the -# stack trace. -ts_web_test_suite( - name = "karma_test", - browsers = [ - "@io_bazel_rules_webtesting//browsers:chromium-local", - ], - tags = ["manual"], # not run by CI - deps = [ - ":test_lib", - "//test_folder:test_lib", - ], -) - -sh_test( - name = "test_sourcemap", - srcs = ["test_sourcemap.sh"], - data = [ - ":karma_test", - "@bazel_tools//tools/bash/runfiles", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE deleted file mode 100644 index 969276f244..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/WORKSPACE +++ /dev/null @@ -1,53 +0,0 @@ -# Copyright 2019 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -workspace(name = "npm_packages_karma_stack_trace") - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "build_bazel_rules_nodejs", - sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], -) - -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") - -node_repositories() - -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") - -install_bazel_dependencies() - -load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies") - -rules_karma_dependencies() - -load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories") - -web_test_repositories() - -load("@npm_bazel_karma//:browser_repositories.bzl", "browser_repositories") - -browser_repositories() - -load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") - -ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/failing.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/failing.spec.ts deleted file mode 100644 index 5b77ed5be5..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/failing.spec.ts +++ /dev/null @@ -1,9 +0,0 @@ -// This dummy export ensures that this file is compiled as a module instead -// of a script. -export {}; - -describe('stack trace', () => { - it('failing test', () => { - expect(true).toBe(false); - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/package-template.json deleted file mode 100644 index 4e167d87a0..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/package-template.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "dependencies": { - "@bazel/karma": "file:${BAZEL_KARMA_NPM_PACKAGE}", - "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", - "@types/jasmine": "2.8.2", - "typescript": "3.1.x" - }, - "scripts": { - "test": "bazel test ..." - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/BUILD.bazel deleted file mode 100644 index 100ddf298d..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/BUILD.bazel +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright 2019 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("@npm_bazel_typescript//:defs.bzl", "ts_library") - -package(default_visibility = ["//visibility:public"]) - -ts_library( - name = "hello", - srcs = glob( - ["*.ts"], - exclude = ["*.spec.ts"], - ), -) - -ts_library( - name = "test_lib", - testonly = True, - srcs = glob(["*.spec.ts"]), - deps = [ - ":hello", - "@npm//@types/jasmine", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/hello.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/hello.ts deleted file mode 100644 index 72c2d1f95d..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/hello.ts +++ /dev/null @@ -1,7 +0,0 @@ -export function sayHello() { - return 'Hello'; -} - -export function error() { - throw new Error('Error here'); -} \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/test.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/test.spec.ts deleted file mode 100644 index 5ff4034131..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_folder/test.spec.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { sayHello, error } from "./hello"; - -describe('multiple stack frames', () => { - it('failing test', () => { - expect(sayHello()).toBe('World'); - }); - - it('another failing test', () => { - expect(error()).toBe(null); - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_sourcemap.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_sourcemap.sh deleted file mode 100755 index 1f733f8ef1..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/test_sourcemap.sh +++ /dev/null @@ -1,25 +0,0 @@ -# Execute first test. -OUTPUT=$(${RUNFILES_DIR}/npm_packages_karma_stack_trace/karma_test_chromium-local) - -# Test whether the package relative TS path is printed in stack trace. -echo ${OUTPUT} | grep -q "(failing.spec.ts:7:17" -if [[ "$?" != "0" ]]; then - echo "Did not find 'failing.spec.ts:7:17' in Karma stack trace" - exit 1 -fi - -# Test whether the package relative path inside a subdirectory is printed. -echo ${OUTPUT} | grep -q "(test_folder/test.spec.ts:5:23" -if [[ "$?" != "0" ]]; then - echo "Did not find 'test_folder/test.spec.ts:5:23' in Karma stack trace" - exit 1 -fi - -# Test whether stack trace with multiple stack frames mapped get printed. -echo ${OUTPUT} | grep -q "(test_folder/hello.ts:6:8" -if [[ "$?" != "0" ]]; then - echo "Did not find 'test_folder/hello.ts:6:8' in Karma stack trace" - exit 1 -fi - -exit 0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/yarn.lock deleted file mode 100644 index c6588b228c..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_stack_trace/yarn.lock +++ /dev/null @@ -1,2306 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@bazel/karma@file:../../../../../../../../../private/var/tmp/_bazel_greg/8018d2bc8e133e0b44c274b6423215ba/execroot/npm_bazel_karma/bazel-out/darwin-fastbuild/bin/npm_package": - version "0.0.0" - dependencies: - jasmine-core "2.8.0" - karma "^4.0.0" - karma-chrome-launcher "2.2.0" - karma-firefox-launcher "1.1.0" - karma-jasmine "1.1.1" - karma-requirejs "1.1.0" - karma-sauce-launcher "2.0.2" - karma-sourcemap-loader "0.3.7" - requirejs "2.3.5" - semver "5.6.0" - tmp "0.0.33" - -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": - version "0.22.1-41-gc1f5737" - dependencies: - jasmine-core "2.8.0" - protobufjs "5.0.3" - semver "5.6.0" - source-map-support "0.5.9" - tsutils "2.27.2" - -"@types/jasmine@2.8.2": - version "2.8.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" - integrity sha512-RabEJPjYMpjWqW1qYj4k0rlgP5uzyguoc0yxedJdq7t5h19MYvqhjCR1evM3raZ/peHRxp1Qfl24iawvkibSug== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -accepts@~1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" - integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= - dependencies: - mime-types "~2.1.18" - negotiator "0.6.1" - -adm-zip@~0.4.3: - version "0.4.13" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" - integrity sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw== - -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= - -agent-base@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== - dependencies: - es6-promisify "^5.0.0" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - 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" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -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" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-slice@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" - integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -arraybuffer.slice@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" - integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - integrity sha1-GdOGodntxufByF04iu28xW0zYC0= - -async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== - -async@^2.1.2: - version "2.6.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" - integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== - dependencies: - lodash "^4.17.10" - -atob@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= - -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - 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" - -better-assert@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" - integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= - dependencies: - callsite "1.0.0" - -binary-extensions@^1.0.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" - integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== - -blob@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" - integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== - -bluebird@^3.3.0: - version "3.5.3" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" - integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== - -body-parser@^1.16.1: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" - on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^0.1.2: - version "0.1.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" - integrity sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY= - dependencies: - expand-range "^0.1.0" - -braces@^2.3.0, braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - 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" - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= - dependencies: - long "~3" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - 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" - -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -chokidar@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" - integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== - 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" - lodash.debounce "^4.0.8" - normalize-path "^2.1.1" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - upath "^1.0.5" - optionalDependencies: - fsevents "^1.2.2" - -chownr@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== - -circular-json@^0.5.5: - version "0.5.9" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" - integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -colors@^1.1.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= - -combine-lists@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" - integrity sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y= - dependencies: - lodash "^4.5.0" - -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= - -component-emitter@1.2.1, component-emitter@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= - -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -connect@^3.6.0: - version "3.6.6" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" - integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ= - dependencies: - debug "2.6.9" - finalhandler "1.1.0" - parseurl "~1.3.2" - utils-merge "1.0.1" - -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" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-js@^2.2.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.3.tgz#4b70938bdffdaf64931e66e2db158f0892289c49" - integrity sha512-l00tmFFZOBHtYhN4Cz7k32VM7vTn3rE2ANjQDxdEN6zmXZ/xq1jQuutnmHvMG1ZJ7xd72+TA5YpUK8wz3rWsfQ== - -core-js@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" - integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= - -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" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -custom-event@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" - integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= - -date-format@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" - integrity sha1-YV6CjiM90aubua4JUODOzPpuytg= - -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@=3.1.0, debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -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" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - 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" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - 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" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - -di@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= - -dom-serialize@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" - integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= - dependencies: - custom-event "~1.0.0" - ent "~2.2.0" - extend "^3.0.0" - void-elements "^2.0.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -encodeurl@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -engine.io-client@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" - integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.1.1" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.5" - parseuri "0.0.5" - ws "~3.3.1" - xmlhttprequest-ssl "~1.5.4" - yeast "0.1.2" - -engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6" - integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA== - dependencies: - after "0.8.2" - arraybuffer.slice "~0.0.7" - base64-arraybuffer "0.1.5" - blob "0.0.5" - has-binary2 "~1.0.2" - -engine.io@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" - integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== - dependencies: - accepts "~1.3.4" - base64id "1.0.0" - cookie "0.3.1" - debug "~3.1.0" - engine.io-parser "~2.1.0" - ws "~3.3.1" - -ent@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= - -es6-promise@^4.0.3: - version "4.2.5" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" - integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg== - -es6-promise@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" - integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -eventemitter3@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" - integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== - -expand-braces@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" - integrity sha1-SIsdHSRRyz06axks/AMPRMWFX+o= - dependencies: - array-slice "^0.2.3" - array-unique "^0.2.1" - braces "^0.1.2" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - 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" - -expand-range@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" - integrity sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ= - dependencies: - is-number "^0.1.1" - repeat-string "^0.2.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - 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" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - 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" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -finalhandler@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" - integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U= - dependencies: - debug "2.6.9" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.3.1" - unpipe "~1.0.0" - -flatted@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" - integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== - -follow-redirects@^1.0.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.6.1.tgz#514973c44b5757368bad8bddfe52f81f015c94cb" - integrity sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ== - dependencies: - debug "=3.1.0" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fs-access@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" - integrity sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o= - dependencies: - null-check "^1.0.0" - -fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== - 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" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.2: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" - integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== - dependencies: - nan "^2.9.2" - node-pre-gyp "^0.10.0" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - 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-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" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob@^7.0.5, glob@^7.1.1, glob@^7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - 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" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== - -has-binary2@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" - integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== - dependencies: - isarray "2.0.1" - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - 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" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - 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" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -http-errors@1.6.3, http-errors@~1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-proxy@^1.13.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" - integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== - dependencies: - eventemitter3 "^3.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -https-proxy-agent@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" - integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== - dependencies: - agent-base "^4.1.0" - debug "^3.1.0" - -iconv-lite@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== - dependencies: - minimatch "^3.0.4" - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -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" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - 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" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - 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" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - 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" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -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" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - 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" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - 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" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - 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" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - 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" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -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" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - 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" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - 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" - integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= - dependencies: - is-extglob "^2.1.1" - -is-number@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" - integrity sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY= - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -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" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isarray@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" - integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= - -isbinaryfile@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" - integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== - dependencies: - buffer-alloc "^1.2.0" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - 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" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -jasmine-core@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= - -jszip@^3.1.3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" - integrity sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ== - dependencies: - core-js "~2.3.0" - es6-promise "~3.0.2" - lie "~3.1.0" - pako "~1.0.2" - readable-stream "~2.0.6" - -karma-chrome-launcher@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" - integrity sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w== - dependencies: - fs-access "^1.0.0" - which "^1.2.1" - -karma-firefox-launcher@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz#2c47030452f04531eb7d13d4fc7669630bb93339" - integrity sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA== - -karma-jasmine@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.1.tgz#6fe840e75a11600c9d91e84b33c458e1c46a3529" - integrity sha1-b+hA51oRYAydkehLM8RY4cRqNSk= - -karma-requirejs@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/karma-requirejs/-/karma-requirejs-1.1.0.tgz#fddae2cb87d7ebc16fb0222893564d7fee578798" - integrity sha1-/driy4fX68FvsCIok1ZNf+5Xh5g= - -karma-sauce-launcher@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-2.0.2.tgz#dbf98e70d86bf287b03a537cf637eb7aefa975c3" - integrity sha512-jLUFaJhHMcKpxFWUesyWYihzM5FvQiJsDwGcCtKeOy2lsWhkVw0V0Byqb1d+wU6myU1mribBtsIcub23HS4kWA== - dependencies: - sauce-connect-launcher "^1.2.4" - saucelabs "^1.5.0" - selenium-webdriver "^4.0.0-alpha.1" - -karma-sourcemap-loader@0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" - integrity sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg= - dependencies: - graceful-fs "^4.1.2" - -karma@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-4.0.0.tgz#f28e38a2b66243fde3f98e12a8dcaa2c6ff8ca9c" - integrity sha512-EFoFs3F6G0BcUGPNOn/YloGOb3h09hzTguyXlg6loHlKY76qbJikkcyPk43m2kfRF65TUGda/mig29QQtyhm1g== - dependencies: - bluebird "^3.3.0" - body-parser "^1.16.1" - chokidar "^2.0.3" - colors "^1.1.0" - combine-lists "^1.0.0" - connect "^3.6.0" - core-js "^2.2.0" - di "^0.0.1" - dom-serialize "^2.2.0" - expand-braces "^0.1.1" - flatted "^2.0.0" - glob "^7.1.1" - graceful-fs "^4.1.2" - http-proxy "^1.13.0" - isbinaryfile "^3.0.0" - lodash "^4.17.5" - log4js "^3.0.0" - mime "^2.3.1" - minimatch "^3.0.2" - optimist "^0.6.1" - qjobs "^1.1.4" - range-parser "^1.2.0" - rimraf "^2.6.0" - safe-buffer "^5.0.1" - socket.io "2.1.1" - source-map "^0.6.1" - tmp "0.0.33" - useragent "2.3.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" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - 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" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - 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" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -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" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -lie@~3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" - integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= - dependencies: - immediate "~3.0.5" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.5, lodash@^4.5.0: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== - -log4js@^3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.6.tgz#e6caced94967eeeb9ce399f9f8682a4b2b28c8ff" - integrity sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== - dependencies: - circular-json "^0.5.5" - date-format "^1.2.0" - debug "^3.1.0" - rfdc "^1.1.2" - streamroller "0.7.0" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= - -lru-cache@4.1.x: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - 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" - -mime-db@~1.37.0: - version "1.37.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" - integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== - -mime-types@~2.1.18: - version "2.1.21" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" - integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== - dependencies: - mime-db "~1.37.0" - -mime@^2.3.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" - integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== - -minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - 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" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - -minipass@^2.2.1, minipass@^2.3.4: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== - 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" - integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.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" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - 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" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -nan@^2.9.2: - version "2.12.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" - integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - 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-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.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" - integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== - dependencies: - debug "^2.1.2" - iconv-lite "^0.4.4" - sax "^1.2.4" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= - -node-pre-gyp@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" - integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.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" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -npm-bundled@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" - integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== - -npm-packlist@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.2.0.tgz#55a60e793e272f00862c7089274439a4cc31fc7f" - integrity sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ== - 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" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -null-check@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" - integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0= - -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" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.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" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - 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" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -pako@~1.0.2: - version "1.0.8" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.8.tgz#6844890aab9c635af868ad5fecc62e8acbba3ea4" - integrity sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA== - -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= - dependencies: - better-assert "~1.0.0" - -parseurl@~1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" - integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -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" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= - -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" - integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -qjobs@^1.1.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" - integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== - -qs@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -range-parser@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= - -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== - dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" - unpipe "1.0.0" - -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - 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.3.0: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== - 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" - -readable-stream@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -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" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.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" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" - integrity sha1-x6jTI2BoNiBZp+RlH8aITosftK4= - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -requirejs@2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0" - integrity sha512-svnO+aNcR/an9Dpi44C7KSAy5fFGLtmPbaaCeQaklUz8BQhS64tWWIIlvEA5jrWICzlO/X9KSzSeXFnZdBu8nw== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -rfdc@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.2.tgz#e6e72d74f5dc39de8f538f65e00c36c18018e349" - integrity sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA== - -rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -safe-buffer@^5.0.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" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - 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" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sauce-connect-launcher@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.2.4.tgz#8d38f85242a9fbede1b2303b559f7e20c5609a1c" - integrity sha512-X2vfwulR6brUGiicXKxPm1GJ7dBEeP1II450Uv4bHGrcGOapZNgzJvn9aioea5IC5BPp/7qjKdE3xbbTBIVXMA== - dependencies: - adm-zip "~0.4.3" - async "^2.1.2" - https-proxy-agent "^2.2.1" - lodash "^4.16.6" - rimraf "^2.5.4" - -saucelabs@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" - integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== - dependencies: - https-proxy-agent "^2.2.1" - -sax@>=0.6.0, sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -selenium-webdriver@^4.0.0-alpha.1: - version "4.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz#cc93415e21d2dc1dfd85dfc5f6b55f3ac53933b1" - integrity sha512-z88rdjHAv3jmTZ7KSGUkTvo4rGzcDGMq0oXWHNIDK96Gs31JKVdu9+FMtT4KBrVoibg8dUicJDok6GnqqttO5Q== - dependencies: - jszip "^3.1.3" - rimraf "^2.5.4" - tmp "0.0.30" - xml2js "^0.4.17" - -semver@5.6.0, semver@^5.3.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= - 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" - integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - 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" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - 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" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - 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" - -socket.io-adapter@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" - integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= - -socket.io-client@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" - integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== - dependencies: - backo2 "1.0.2" - base64-arraybuffer "0.1.5" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "~3.1.0" - engine.io-client "~3.2.0" - has-binary2 "~1.0.2" - has-cors "1.1.0" - indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - socket.io-parser "~3.2.0" - to-array "0.1.4" - -socket.io-parser@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" - integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== - dependencies: - component-emitter "1.2.1" - debug "~3.1.0" - isarray "2.0.1" - -socket.io@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" - integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== - dependencies: - debug "~3.1.0" - engine.io "~3.2.0" - has-binary2 "~1.0.2" - socket.io-adapter "~1.1.0" - socket.io-client "2.1.1" - socket.io-parser "~3.2.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" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== - 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.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -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" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -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" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= - -streamroller@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" - integrity sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ== - dependencies: - date-format "^1.2.0" - debug "^3.1.0" - mkdirp "^0.5.1" - readable-stream "^2.3.0" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - 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" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - 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" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - 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" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - 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" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -tar@^4: - version "4.4.8" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.3.4" - minizlib "^1.1.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.2" - -tmp@0.0.30: - version "0.0.30" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" - integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= - dependencies: - os-tmpdir "~1.0.1" - -tmp@0.0.33, tmp@0.0.x: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= - -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" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - 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" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - 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" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== - dependencies: - tslib "^1.8.1" - -type-is@~1.6.16: - version "1.6.16" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" - integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.18" - -typescript@3.1.x: - version "3.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" - integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== - -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== - -union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^0.4.3" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.0.5: - version "1.1.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" - integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -useragent@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" - integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== - dependencies: - lru-cache "4.1.x" - tmp "0.0.x" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -void-elements@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= - -which@^1.2.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - 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" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -ws@~3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - -xml2js@^0.4.17: - version "0.4.19" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" - integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== - dependencies: - sax ">=0.6.0" - xmlbuilder "~9.0.1" - -xmlbuilder@~9.0.1: - version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= - -xmlhttprequest-ssl@~1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" - integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== - -yargs@^3.10.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/.bazelrc deleted file mode 100644 index 178af0a3f9..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/.bazelrc +++ /dev/null @@ -1,6 +0,0 @@ -# Don't create symlinks like bazel-out in the project. -# These cause VSCode to traverse a massive tree, opening file handles and -# eventually a surprising failure with auto-discovery of the C++ toolchain in -# MacOS High Sierra. -# See https://github.com/bazelbuild/bazel/issues/4603 -build --symlink_prefix=/ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/BUILD.bazel deleted file mode 100644 index e2311f12c0..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/BUILD.bazel +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("@npm_bazel_karma//:defs.bzl", "ts_web_test_suite") -load("@npm_bazel_typescript//:defs.bzl", "ts_library") - -ts_library( - name = "lib", - srcs = ["decrement.ts"], -) - -ts_library( - name = "tests", - testonly = 1, - srcs = glob(["*.spec.ts"]), - deps = [ - ":lib", - "@npm//@types/jasmine", - ], -) - -ts_web_test_suite( - name = "testing", - browsers = [ - "@io_bazel_rules_webtesting//browsers:chromium-local", - "@io_bazel_rules_webtesting//browsers:firefox-local", - ], - deps = [ - ":tests", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE deleted file mode 100644 index 41fde934d4..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/WORKSPACE +++ /dev/null @@ -1,53 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -workspace(name = "npm_package_karma_typescript_e2e") - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "build_bazel_rules_nodejs", - sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], -) - -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") - -node_repositories() - -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") - -install_bazel_dependencies() - -load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies") - -rules_karma_dependencies() - -load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories") - -web_test_repositories() - -load("@npm_bazel_karma//:browser_repositories.bzl", "browser_repositories") - -browser_repositories() - -load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") - -ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/decrement.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/decrement.spec.ts deleted file mode 100644 index bf1bd91dfb..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/decrement.spec.ts +++ /dev/null @@ -1,7 +0,0 @@ -import {decrement} from './decrement'; - -describe('decrementing', () => { - it('should do that', () => { - expect(decrement(1)).toBe(0); - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/decrement.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/decrement.ts deleted file mode 100644 index 7173ecc4c2..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/decrement.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function decrement(n: number) { - return n - 1; -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/package-template.json deleted file mode 100644 index a2d01b3582..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/package-template.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "dependencies": { - "@bazel/karma": "file:${BAZEL_KARMA_NPM_PACKAGE}", - "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", - "@types/jasmine": "2.8.2", - "typescript": "2.9.2" - }, - "scripts": { - "test": "bazel test ..." - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/yarn.lock deleted file mode 100644 index e72c0ff2a2..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/karma_typescript/yarn.lock +++ /dev/null @@ -1,2020 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@bazel/karma@file:../../../../../../../../../private/var/tmp/_bazel_greg/8018d2bc8e133e0b44c274b6423215ba/execroot/npm_bazel_karma/bazel-out/darwin-fastbuild/bin/npm_package": - version "0.0.0" - dependencies: - jasmine-core "2.8.0" - karma "^4.0.0" - karma-chrome-launcher "2.2.0" - karma-firefox-launcher "1.1.0" - karma-jasmine "1.1.1" - karma-requirejs "1.1.0" - karma-sauce-launcher "2.0.2" - karma-sourcemap-loader "0.3.7" - requirejs "2.3.5" - semver "5.6.0" - tmp "0.0.33" - -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": - version "0.22.1-41-gc1f5737" - dependencies: - jasmine-core "2.8.0" - protobufjs "5.0.3" - semver "5.6.0" - source-map-support "0.5.9" - tsutils "2.27.2" - -"@types/jasmine@2.8.2": - version "2.8.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - -accepts@~1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" - dependencies: - mime-types "~2.1.18" - negotiator "0.6.1" - -adm-zip@~0.4.3: - version "0.4.11" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.11.tgz#2aa54c84c4b01a9d0fb89bb11982a51f13e3d62a" - -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - -agent-base@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - dependencies: - es6-promisify "^5.0.0" - -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" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - 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" - -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-slice@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - -arraybuffer.slice@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -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" - -async@^2.1.2: - version "2.6.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" - dependencies: - lodash "^4.17.10" - -atob@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - -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" - -better-assert@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" - dependencies: - callsite "1.0.0" - -binary-extensions@^1.0.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" - -blob@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" - -bluebird@^3.3.0: - version "3.5.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" - -body-parser@^1.16.1: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" - on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" - -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@^0.1.2: - version "0.1.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" - dependencies: - expand-range "^0.1.0" - -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" - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - dependencies: - long "~3" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - -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" - -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -chokidar@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" - integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== - 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" - lodash.debounce "^4.0.8" - normalize-path "^2.1.1" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - upath "^1.0.5" - optionalDependencies: - fsevents "^1.2.2" - -chownr@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - -circular-json@^0.5.5: - version "0.5.9" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" - integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== - -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" - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - -colors@^1.1.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.2.tgz#2df8ff573dfbf255af562f8ce7181d6b971a359b" - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - -combine-lists@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" - dependencies: - lodash "^4.5.0" - -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - -component-emitter@1.2.1, component-emitter@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -connect@^3.6.0: - version "3.6.6" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" - dependencies: - debug "2.6.9" - finalhandler "1.1.0" - parseurl "~1.3.2" - utils-merge "1.0.1" - -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" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - -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.2.0: - version "2.5.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" - -core-js@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" - integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= - -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" - -custom-event@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" - -date-format@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" - -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" - -debug@=3.1.0, debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - dependencies: - ms "2.0.0" - -debug@^3.1.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.5.tgz#c2418fbfd7a29f4d4f70ff4cea604d4b64c46407" - dependencies: - ms "^2.1.1" - -decamelize@^1.1.1: - 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" - -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" - -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" - -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - -di@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - -dom-serialize@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" - dependencies: - custom-event "~1.0.0" - ent "~2.2.0" - extend "^3.0.0" - void-elements "^2.0.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - -encodeurl@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - -engine.io-client@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" - integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.1.1" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.5" - parseuri "0.0.5" - ws "~3.3.1" - xmlhttprequest-ssl "~1.5.4" - yeast "0.1.2" - -engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" - dependencies: - after "0.8.2" - arraybuffer.slice "~0.0.7" - base64-arraybuffer "0.1.5" - blob "0.0.4" - has-binary2 "~1.0.2" - -engine.io@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" - integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== - dependencies: - accepts "~1.3.4" - base64id "1.0.0" - cookie "0.3.1" - debug "~3.1.0" - engine.io-parser "~2.1.0" - ws "~3.3.1" - -ent@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - -es6-promise@^4.0.3: - version "4.2.5" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" - -es6-promise@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" - integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - dependencies: - es6-promise "^4.0.3" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - -eventemitter3@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" - -expand-braces@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" - dependencies: - array-slice "^0.2.3" - array-unique "^0.2.1" - braces "^0.1.2" - -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" - -expand-range@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" - dependencies: - is-number "^0.1.1" - repeat-string "^0.2.2" - -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" - -extend@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - -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" - -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" - -finalhandler@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" - dependencies: - debug "2.6.9" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.3.1" - unpipe "~1.0.0" - -flatted@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" - integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== - -follow-redirects@^1.0.0: - version "1.5.8" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.8.tgz#1dbfe13e45ad969f813e86c00e5296f525c885a1" - dependencies: - debug "=3.1.0" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -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" - -fs-access@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" - dependencies: - null-check "^1.0.0" - -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.2.2: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" - integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== - dependencies: - nan "^2.9.2" - node-pre-gyp "^0.10.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-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" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob@^7.0.5, glob@^7.1.1: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - 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" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -has-binary2@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" - dependencies: - isarray "2.0.1" - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - -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" - -http-errors@1.6.3, http-errors@~1.6.3: - version "1.6.3" - resolved "http://registry.npmjs.org/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" - -http-proxy@^1.13.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" - dependencies: - eventemitter3 "^3.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -https-proxy-agent@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" - dependencies: - agent-base "^4.1.0" - debug "^3.1.0" - -iconv-lite@0.4.23: - 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" - -iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - dependencies: - safer-buffer ">= 2.1.2 < 3" - -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" - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= - -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.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -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-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-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" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -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" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - 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" - integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= - dependencies: - is-extglob "^2.1.1" - -is-number@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" - -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-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-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isarray@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" - -isbinaryfile@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" - dependencies: - buffer-alloc "^1.2.0" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - -jasmine-core@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - -jszip@^3.1.3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" - integrity sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ== - dependencies: - core-js "~2.3.0" - es6-promise "~3.0.2" - lie "~3.1.0" - pako "~1.0.2" - readable-stream "~2.0.6" - -karma-chrome-launcher@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" - dependencies: - fs-access "^1.0.0" - which "^1.2.1" - -karma-firefox-launcher@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz#2c47030452f04531eb7d13d4fc7669630bb93339" - -karma-jasmine@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.1.tgz#6fe840e75a11600c9d91e84b33c458e1c46a3529" - -karma-requirejs@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/karma-requirejs/-/karma-requirejs-1.1.0.tgz#fddae2cb87d7ebc16fb0222893564d7fee578798" - -karma-sauce-launcher@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-2.0.2.tgz#dbf98e70d86bf287b03a537cf637eb7aefa975c3" - integrity sha512-jLUFaJhHMcKpxFWUesyWYihzM5FvQiJsDwGcCtKeOy2lsWhkVw0V0Byqb1d+wU6myU1mribBtsIcub23HS4kWA== - dependencies: - sauce-connect-launcher "^1.2.4" - saucelabs "^1.5.0" - selenium-webdriver "^4.0.0-alpha.1" - -karma-sourcemap-loader@0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" - dependencies: - graceful-fs "^4.1.2" - -karma@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-4.0.0.tgz#f28e38a2b66243fde3f98e12a8dcaa2c6ff8ca9c" - integrity sha512-EFoFs3F6G0BcUGPNOn/YloGOb3h09hzTguyXlg6loHlKY76qbJikkcyPk43m2kfRF65TUGda/mig29QQtyhm1g== - dependencies: - bluebird "^3.3.0" - body-parser "^1.16.1" - chokidar "^2.0.3" - colors "^1.1.0" - combine-lists "^1.0.0" - connect "^3.6.0" - core-js "^2.2.0" - di "^0.0.1" - dom-serialize "^2.2.0" - expand-braces "^0.1.1" - flatted "^2.0.0" - glob "^7.1.1" - graceful-fs "^4.1.2" - http-proxy "^1.13.0" - isbinaryfile "^3.0.0" - lodash "^4.17.5" - log4js "^3.0.0" - mime "^2.3.1" - minimatch "^3.0.2" - optimist "^0.6.1" - qjobs "^1.1.4" - range-parser "^1.2.0" - rimraf "^2.6.0" - safe-buffer "^5.0.1" - socket.io "2.1.1" - source-map "^0.6.1" - tmp "0.0.33" - useragent "2.3.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" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -lie@~3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" - integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= - dependencies: - immediate "~3.0.5" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.5, lodash@^4.5.0: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - -log4js@^3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.6.tgz#e6caced94967eeeb9ce399f9f8682a4b2b28c8ff" - integrity sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== - dependencies: - circular-json "^0.5.5" - date-format "^1.2.0" - debug "^3.1.0" - rfdc "^1.1.2" - streamroller "0.7.0" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - -lru-cache@4.1.x: - version "4.1.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.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" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - -micromatch@^3.1.10, 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" - -mime-db@~1.36.0: - version "1.36.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" - -mime-types@~2.1.18: - version "2.1.20" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" - dependencies: - mime-db "~1.36.0" - -mime@^2.3.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" - integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== - -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 "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@^1.2.0: - version "1.2.0" - resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -minimist@~0.0.1: - version "0.0.10" - resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - -minipass@^2.2.1, minipass@^2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957" - 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: - version "0.5.1" - resolved "http://registry.npmjs.org/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" - -ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - -nan@^2.9.2: - version "2.11.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099" - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - 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-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.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.3.tgz#c1b04da378cd634d8befe2de965dc2cfb0fd65ca" - dependencies: - debug "^2.1.2" - iconv-lite "^0.4.4" - sax "^1.2.4" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - -node-pre-gyp@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.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" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -npm-bundled@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" - -npm-packlist@^1.1.6: - version "1.1.11" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" - 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" - -null-check@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" - -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.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - -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-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.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" - -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" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-locale@^1.4.0: - version "1.4.0" - resolved "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: - 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@~1.0.2: - version "1.0.8" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.8.tgz#6844890aab9c635af868ad5fecc62e8acbba3ea4" - integrity sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA== - -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - dependencies: - better-assert "~1.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-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -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" - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - -process-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" - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -qjobs@^1.1.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" - -qs@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - -range-parser@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" - unpipe "1.0.0" - -rc@^1.2.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.3.0: - version "2.3.6" - resolved "http://registry.npmjs.org/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" - -readable-stream@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -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" - -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.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - -repeat-string@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -requirejs@2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0" - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - -rfdc@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.2.tgz#e6e72d74f5dc39de8f538f65e00c36c18018e349" - integrity sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA== - -rimraf@^2.5.4, rimraf@^2.6.0, 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" - -safe-buffer@^5.0.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" - -sauce-connect-launcher@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.2.4.tgz#8d38f85242a9fbede1b2303b559f7e20c5609a1c" - integrity sha512-X2vfwulR6brUGiicXKxPm1GJ7dBEeP1II450Uv4bHGrcGOapZNgzJvn9aioea5IC5BPp/7qjKdE3xbbTBIVXMA== - dependencies: - adm-zip "~0.4.3" - async "^2.1.2" - https-proxy-agent "^2.2.1" - lodash "^4.16.6" - rimraf "^2.5.4" - -saucelabs@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" - integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== - dependencies: - https-proxy-agent "^2.2.1" - -sax@>=0.6.0, sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - -selenium-webdriver@^4.0.0-alpha.1: - version "4.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz#cc93415e21d2dc1dfd85dfc5f6b55f3ac53933b1" - integrity sha512-z88rdjHAv3jmTZ7KSGUkTvo4rGzcDGMq0oXWHNIDK96Gs31JKVdu9+FMtT4KBrVoibg8dUicJDok6GnqqttO5Q== - dependencies: - jszip "^3.1.3" - rimraf "^2.5.4" - tmp "0.0.30" - xml2js "^0.4.17" - -semver@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -semver@^5.3.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" - -set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - -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" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -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" - -socket.io-adapter@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" - -socket.io-client@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" - integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== - dependencies: - backo2 "1.0.2" - base64-arraybuffer "0.1.5" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "~3.1.0" - engine.io-client "~3.2.0" - has-binary2 "~1.0.2" - has-cors "1.1.0" - indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - socket.io-parser "~3.2.0" - to-array "0.1.4" - -socket.io-parser@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" - integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== - dependencies: - component-emitter "1.2.1" - debug "~3.1.0" - isarray "2.0.1" - -socket.io@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" - integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== - dependencies: - debug "~3.1.0" - engine.io "~3.2.0" - has-binary2 "~1.0.2" - socket.io-adapter "~1.1.0" - socket.io-client "2.1.1" - socket.io-parser "~3.2.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.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -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.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - -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" - -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" - -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - -statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - -streamroller@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" - dependencies: - date-format "^1.2.0" - debug "^3.1.0" - mkdirp "^0.5.1" - readable-stream "^2.3.0" - -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@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - -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" - -tar@^4: - version "4.4.6" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" - 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" - -tmp@0.0.30: - version "0.0.30" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" - integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= - dependencies: - os-tmpdir "~1.0.1" - -tmp@0.0.33, tmp@0.0.x: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - dependencies: - os-tmpdir "~1.0.2" - -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - -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" - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - dependencies: - tslib "^1.8.1" - -type-is@~1.6.16: - version "1.6.16" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" - dependencies: - media-typer "0.3.0" - mime-types "~2.1.18" - -typescript@2.9.2: - version "2.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" - -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - -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" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - -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.5: - version "1.1.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" - integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - -useragent@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" - integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== - dependencies: - lru-cache "4.1.x" - tmp "0.0.x" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - -void-elements@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - -which@^1.2.1: - 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" - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -ws@~3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - -xml2js@^0.4.17: - version "0.4.19" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" - integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== - dependencies: - sax ">=0.6.0" - xmlbuilder "~9.0.1" - -xmlbuilder@~9.0.1: - version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= - -xmlhttprequest-ssl@~1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" - -yargs@^3.10.0: - version "3.32.0" - resolved "http://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/test.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/test.sh deleted file mode 100755 index 306b2f7e8a..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/test.sh +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env bash - -set -u -e -o pipefail - -TESTS_ROOT_DIR=$(cd $(dirname "$0"); pwd) -TYPESCRIPT_ROOT_DIR=$(cd $TESTS_ROOT_DIR/../../..; pwd) -KARMA_ROOT_DIR=$(cd $TESTS_ROOT_DIR/../../../internal/karma; pwd) - -echo "" -echo "#################################################################################" -echo "Running all npm package e2e tests under $TESTS_ROOT_DIR" -echo "" -echo "To run a specific test run this script with '--test ' where " -echo "is the name of the test folder to run" -echo "" -echo "Run this script with '--update-lock-files' to update yarn.lock files instead of running tests" -echo "" - -# Generate the npm packages @bazel/typescript and @bazel/karma npm packages and -# determine their absolute paths in bazel-bin -cd $TYPESCRIPT_ROOT_DIR -BAZEL=$(pwd)/node_modules/.bin/bazel -if [[ ! -f $BAZEL ]] ; then - echo "Bazel not found under $BAZEL" - exit 1 -fi -$BAZEL build //:npm_package -BAZEL_BIN_TYPESCRIPT=$($BAZEL info bazel-bin) -BAZEL_TYPESCRIPT_NPM_PACKAGE=$BAZEL_BIN_TYPESCRIPT/npm_package -cd $KARMA_ROOT_DIR -$BAZEL build //:npm_package -BAZEL_BIN_KARMA=$($BAZEL info bazel-bin) -BAZEL_KARMA_NPM_PACKAGE=$BAZEL_BIN_KARMA/npm_package -echo "@bazel/typescript: $BAZEL_TYPESCRIPT_NPM_PACKAGE" -echo "@bazel/karma: $BAZEL_KARMA_NPM_PACKAGE" - -# Now run all e2e tests -cd $TESTS_ROOT_DIR -for testDir in $(ls) ; do - [[ -d "$testDir" ]] || continue - ( - cd $testDir - echo "" - echo "#################################################################################" - echo "Running npm package e2e test $(pwd)" - echo "" - if [[ ! -f "package-template.json" ]] ; then - echo "No package-template.json file found in $testDir" - exit 1 - fi - # Generate package.json subsituting variables - # BAZEL_TYPESCRIPT_NPM_PACKAGE and BAZEL_KARMA_NPM_PACKAGE - ESCAPED_TYPESCRIPT=$(echo $BAZEL_TYPESCRIPT_NPM_PACKAGE | sed 's/\//\\\//g') - ESCAPED_KARMA=$(echo $BAZEL_KARMA_NPM_PACKAGE | sed 's/\//\\\//g') - sed -e "s/\${BAZEL_TYPESCRIPT_NPM_PACKAGE}/$ESCAPED_TYPESCRIPT/" -e "s/\${BAZEL_KARMA_NPM_PACKAGE}/$ESCAPED_KARMA/" package-template.json > package.json - if [[ $# -ge 1 && $1 = "--update-lock-files" ]] ; then - # Update yarn.lock files - echo "Running yarn install to update lock file" - yarn install - else - if [[ $# -ge 2 && $1 = "--test" && $2 != $testDir ]] ; then - # Skip this test - echo "Skipping test that was not specified in --test argument" - else - # Some tests like ts_auto_deps depend on node_modules - yarn install - # Run tests - yarn test - fi - fi - ) -done diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/.bazelrc deleted file mode 100644 index 178af0a3f9..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/.bazelrc +++ /dev/null @@ -1,6 +0,0 @@ -# Don't create symlinks like bazel-out in the project. -# These cause VSCode to traverse a massive tree, opening file handles and -# eventually a surprising failure with auto-discovery of the C++ toolchain in -# MacOS High Sierra. -# See https://github.com/bazelbuild/bazel/issues/4603 -build --symlink_prefix=/ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/BUILD.bazel deleted file mode 100644 index abd01150d9..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/BUILD.bazel +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -exports_files(["tsconfig.json"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE deleted file mode 100644 index 3dddfc8b18..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/WORKSPACE +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -workspace(name = "npm_packages_ts_auto_deps_e2e") - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "build_bazel_rules_nodejs", - sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], -) - -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") - -node_repositories() - -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") - -install_bazel_dependencies() - -load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") - -ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/package-template.json deleted file mode 100644 index 44bcfa3ba7..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/package-template.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "dependencies": { - "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", - "typescript": "2.9.2" - }, - "scripts": { - "test": "cd simple && ts_auto_deps && bazel build simple" - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/simple/file.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/simple/file.ts deleted file mode 100644 index bb2056c5f2..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/simple/file.ts +++ /dev/null @@ -1,2 +0,0 @@ -// Test that a BUILD file is generated in this directory -export const a = 1; \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/yarn.lock deleted file mode 100644 index 6a6c9f2ecc..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_auto_deps/yarn.lock +++ /dev/null @@ -1,242 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": - version "0.22.1-41-gc1f5737" - dependencies: - jasmine-core "2.8.0" - protobufjs "5.0.3" - semver "5.6.0" - source-map-support "0.5.9" - tsutils "2.27.2" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -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" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - dependencies: - long "~3" - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -glob@^7.0.5: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - 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" - -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: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -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" - -jasmine-core@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -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" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - -os-locale@^1.4.0: - version "1.4.0" - resolved "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -semver@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - 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" - -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" - -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" - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== - dependencies: - tslib "^1.8.1" - -typescript@2.9.2: - version "2.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -yargs@^3.10.0: - version "3.32.0" - resolved "http://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/BUILD.bazel deleted file mode 100644 index f7e2f11e4f..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/BUILD.bazel +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("@npm_bazel_typescript//:defs.bzl", "ts_devserver", "ts_library") - -exports_files([ - "red-body-style.css", - "tsconfig.json", -]) - -ts_library( - name = "app", - srcs = ["app.ts"], -) - -ts_devserver( - name = "devserver", - port = 8080, - # This is the path we'll request from the browser, see index.html - serving_path = "/bundle.min.js", - # The devserver can serve our static files too - static_files = ["index.html"], - # We'll collect all the devmode JS sources from these TypeScript libraries - deps = [":app"], -) - -ts_library( - name = "e2e", - testonly = 1, - srcs = ["app_e2e_test.ts"], - deps = [ - "@npm//@types/jasmine", - "@npm//@types/node", - "@npm//protractor", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE deleted file mode 100644 index 95df7348fa..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/WORKSPACE +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -workspace(name = "npm_packages_ts_devserver") - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "build_bazel_rules_nodejs", - sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], -) - -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") - -node_repositories() - -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") - -install_bazel_dependencies() - -load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") - -ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/app.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/app.ts deleted file mode 100644 index 6c1c6e9d06..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/app.ts +++ /dev/null @@ -1,4 +0,0 @@ -const el: HTMLDivElement = document.createElement('div'); -el.innerText = 'Hello, TypeScript'; -el.className = 'ts1'; -document.body.appendChild(el); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/app_e2e_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/app_e2e_test.ts deleted file mode 100644 index 1ce56fbcd2..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/app_e2e_test.ts +++ /dev/null @@ -1,25 +0,0 @@ -import {browser, by, element, ExpectedConditions} from 'protractor'; - -// This test uses Protractor without Angular, so disable Angular features -browser.waitForAngularEnabled(false); - -// Since we don't have a protractor bazel rule yet, the test is brought up in -// parallel with building the service under test. So the timeout must include -// compiling the application as well as starting the server. -const timeoutMs = 90 * 1000; - -describe('app', () => { - beforeAll(() => { - browser.get(''); - // Don't run any specs until we see a
                      on the page. - browser.wait( - ExpectedConditions.presenceOf(element(by.css('div.ts1'))), - timeoutMs); - }, timeoutMs); - - it('should display: Hello, TypeScript', (done) => { - const div = element(by.css('div.ts1')); - div.getText().then(t => expect(t).toEqual(`Hello, TypeScript`)); - done(); - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/index.html b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/index.html deleted file mode 100644 index 8af1e7f68b..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/index.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - ts_devserver example - - - - - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/package-template.json deleted file mode 100644 index 5a9c82e081..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/package-template.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "dependencies": { - "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", - "@types/jasmine": "2.8.2", - "@types/node": "7.0.18", - "concurrently": "^3.5.1", - "jasmine": "2.8.0", - "protractor": "^5.2.0", - "typescript": "2.7.x" - }, - "scripts": { - "pretest": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG", - "wait-for-servers": "while [[ ! nc -z 127.0.0.1 8080 ]] || [[ ! nc -z 127.0.0.1 8081 ]]; do sleep 1; done", - "run-e2e-tests": "concurrently \"bazel run //:devserver\" \"yarn wait-for-servers\" --kill-others --success first", - "test": "bazel build ... && yarn run-e2e-tests" - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/protractor.conf.js b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/protractor.conf.js deleted file mode 100644 index 725b81e592..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/protractor.conf.js +++ /dev/null @@ -1,12 +0,0 @@ -exports.config = { - specs: [ - 'bazel-bin/**/*_e2e_test.js', - ], - capabilities: { - browserName: 'chrome', - chromeOptions: {args: ['--no-sandbox']} - }, - directConnect: true, - baseUrl: 'http://localhost:8080/', - framework: 'jasmine', -}; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/red-body-style.css b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/red-body-style.css deleted file mode 100644 index 5c5e887d76..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/red-body-style.css +++ /dev/null @@ -1,3 +0,0 @@ -body { - background: red; -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/BUILD.bazel deleted file mode 100644 index b68ac440a4..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/BUILD.bazel +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("@npm_bazel_typescript//:defs.bzl", "ts_devserver", "ts_library") - -ts_devserver( - name = "devserver", - index_html = "index.html", - port = 8081, - static_files = ["//:red-body-style.css"], -) - -ts_library( - name = "e2e", - testonly = 1, - srcs = ["subpackage_e2e_test.ts"], - deps = [ - "@npm//@types/jasmine", - "@npm//@types/node", - "@npm//protractor", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/index.html b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/index.html deleted file mode 100644 index 4ea2bf3c14..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Subpackage Devserver - - - This is the devserver for a Bazel subpackage. - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/subpackage_e2e_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/subpackage_e2e_test.ts deleted file mode 100644 index 281ea393f1..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/subpackage/subpackage_e2e_test.ts +++ /dev/null @@ -1,17 +0,0 @@ -import {browser, by, element} from 'protractor'; - -describe('subpackage', () => { - - beforeAll(async () => { - await browser.waitForAngularEnabled(false); - await browser.get('http://127.0.0.1:8081/'); - }); - - // Ensures that the "ts_devserver" properly injects and loads static files which - // are in the current workspace, but not part of the current Bazel package. See - // related issue: https://github.com/bazelbuild/rules_typescript/issues/409 - it('should be able to properly load the injected CSS file', async () => { - const bodyElement = element(by.css('body')); - expect(await bodyElement.getCssValue('background')).toContain('rgb(255, 0, 0)'); - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/tsconfig.json.oss deleted file mode 100644 index 40dd22515a..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/tsconfig.json.oss +++ /dev/null @@ -1,5 +0,0 @@ -{ - "compilerOptions": { - "lib": ["es2015", "dom"] - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/yarn.lock deleted file mode 100644 index 64043372ca..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/ts_devserver/yarn.lock +++ /dev/null @@ -1,1261 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": - version "0.22.1-41-gc1f5737" - dependencies: - jasmine-core "2.8.0" - protobufjs "5.0.3" - semver "5.6.0" - source-map-support "0.5.9" - tsutils "2.27.2" - -"@types/jasmine@2.8.2": - version "2.8.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" - integrity sha512-RabEJPjYMpjWqW1qYj4k0rlgP5uzyguoc0yxedJdq7t5h19MYvqhjCR1evM3raZ/peHRxp1Qfl24iawvkibSug== - -"@types/node@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" - integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= - -"@types/q@^0.0.32": - version "0.0.32" - resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" - integrity sha1-vShOV8hPEyXacCur/IKlMoGQwMU= - -"@types/selenium-webdriver@^3.0.0": - version "3.0.14" - resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.14.tgz#0b20a2370e6b1b8322c9c3dfcaa409e6c7c0c0a9" - integrity sha512-4GbNCDs98uHCT/OMv40qQC/OpoPbYn9XdXeTiFwHBBFO6eJhYEPUu2zDKirXSbHlvDV8oZ9l8EQ+HrEx/YS9DQ== - -adm-zip@^0.4.9: - version "0.4.13" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" - integrity sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw== - -agent-base@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== - dependencies: - es6-promisify "^5.0.0" - -ajv@^6.5.5: - version "6.7.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.7.0.tgz#e3ce7bb372d6577bb1839f1dfdfcbf5ad2948d96" - integrity sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -arrify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -blocking-proxy@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/blocking-proxy/-/blocking-proxy-1.0.1.tgz#81d6fd1fe13a4c0d6957df7f91b75e98dac40cb2" - integrity sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA== - dependencies: - minimist "^1.2.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -browserstack@^1.5.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/browserstack/-/browserstack-1.5.2.tgz#17d8bb76127a1cc0ea416424df80d218f803673f" - integrity sha512-+6AFt9HzhKykcPF79W6yjEUJcdvZOV0lIXdkORXMJftGrDl0OKWqRF4GHqpDNkxiceDT/uB7Fb/aDwktvXX7dg== - dependencies: - https-proxy-agent "^2.2.1" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= - dependencies: - long "~3" - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@^1.1.1, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - 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.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" - integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== - dependencies: - delayed-stream "~1.0.0" - -commander@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d" - integrity sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concurrently@^3.5.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-3.6.1.tgz#2f95baec5c4051294dfbb55b57a3b98a3e2b45ec" - integrity sha512-/+ugz+gwFSEfTGUxn0KHkY+19XPRTXR8+7oUK/HxgiN1n7FjeJmkrbSiXAJfyQ0zORgJYPaenmymwon51YXH9Q== - dependencies: - chalk "^2.4.1" - commander "2.6.0" - date-fns "^1.23.0" - lodash "^4.5.1" - read-pkg "^3.0.0" - rx "2.3.24" - spawn-command "^0.0.2-1" - supports-color "^3.2.3" - tree-kill "^1.1.0" - -core-js@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" - integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= - -core-util-is@1.0.2, 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" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -date-fns@^1.23.0: - version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== - -debug@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -del@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" - integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= - dependencies: - globby "^5.0.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - rimraf "^2.2.8" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es6-promise@^4.0.3: - version "4.2.5" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" - integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg== - -es6-promise@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" - integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - -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" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= - -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - 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" - -globby@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" - integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= - dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -graceful-fs@^4.1.2: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.0: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - 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" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -hosted-git-info@^2.1.4: - version "2.7.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" - integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-proxy-agent@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" - integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== - dependencies: - agent-base "^4.1.0" - debug "^3.1.0" - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@~2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= - dependencies: - builtin-modules "^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" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= - -is-path-in-cwd@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" - integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== - dependencies: - is-path-inside "^1.0.0" - -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= - dependencies: - path-is-inside "^1.0.1" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -jasmine-core@2.8.0, jasmine-core@~2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= - -jasmine@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" - integrity sha1-awicChFXax8W3xG4AUbZHU6Lij4= - dependencies: - exit "^0.1.2" - glob "^7.0.6" - jasmine-core "~2.8.0" - -jasminewd2@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" - integrity sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4= - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -jszip@^3.1.3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" - integrity sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ== - dependencies: - core-js "~2.3.0" - es6-promise "~3.0.2" - lie "~3.1.0" - pako "~1.0.2" - readable-stream "~2.0.6" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -lie@~3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" - integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= - dependencies: - immediate "~3.0.5" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -lodash@^4.5.1: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= - -mime-db@~1.37.0: - version "1.37.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" - integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.21" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" - integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== - dependencies: - mime-db "~1.37.0" - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - -ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -normalize-package-data@^2.3.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.2.tgz#6b2abd85774e51f7936f1395e45acb905dc849b2" - integrity sha512-YcMnjqeoUckXTPKZSAsPjUPLxH85XotbpqK3w4RyCwdFQSU5FxxBys8buehkSfg0j9fKvV1hn7O0+8reEgkAiw== - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -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" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optimist@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^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" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -pako@~1.0.2: - version "1.0.8" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.8.tgz#6844890aab9c635af868ad5fecc62e8acbba3ea4" - integrity sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA== - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -protractor@^5.2.0: - version "5.4.2" - resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.4.2.tgz#329efe37f48b2141ab9467799be2d4d12eb48c13" - integrity sha512-zlIj64Cr6IOWP7RwxVeD8O4UskLYPoyIcg0HboWJL9T79F1F0VWtKkGTr/9GN6BKL+/Q/GmM7C9kFVCfDbP5sA== - dependencies: - "@types/q" "^0.0.32" - "@types/selenium-webdriver" "^3.0.0" - blocking-proxy "^1.0.0" - browserstack "^1.5.1" - chalk "^1.1.3" - glob "^7.0.3" - jasmine "2.8.0" - jasminewd2 "^2.1.0" - optimist "~0.6.0" - q "1.4.1" - saucelabs "^1.5.0" - selenium-webdriver "3.6.0" - source-map-support "~0.4.0" - webdriver-js-extender "2.1.0" - webdriver-manager "^12.0.6" - -psl@^1.1.24: - version "1.1.31" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" - integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== - -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -q@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" - integrity sha1-VXBbzZPF82c1MMLCy8DCs63cKG4= - -q@^1.4.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -readable-stream@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -request@^2.87.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.0" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rx@2.3.24: - version "2.3.24" - resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.24.tgz#14f950a4217d7e35daa71bbcbe58eff68ea4b2b7" - integrity sha1-FPlQpCF9fjXapxu8vljv9o6ksrc= - -safe-buffer@^5.0.1, safe-buffer@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -saucelabs@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" - integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== - dependencies: - https-proxy-agent "^2.2.1" - -sax@>=0.6.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz#2ba87a1662c020b8988c981ae62cb2a01298eafc" - integrity sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q== - dependencies: - jszip "^3.1.3" - rimraf "^2.5.4" - tmp "0.0.30" - xml2js "^0.4.17" - -"semver@2 || 3 || 4 || 5", semver@5.6.0, semver@^5.3.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@~0.4.0: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spawn-command@^0.0.2-1: - version "0.0.2-1" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" - integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= - -spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== - -spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e" - integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g== - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - -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" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= - dependencies: - has-flag "^1.0.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -tmp@0.0.30: - version "0.0.30" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" - integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= - dependencies: - os-tmpdir "~1.0.1" - -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - -tree-kill@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.1.tgz#5398f374e2f292b9dcc7b2e71e30a5c3bb6c743a" - integrity sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q== - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== - dependencies: - tslib "^1.8.1" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -typescript@2.7.x: - version "2.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" - integrity sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw== - -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== - dependencies: - punycode "^2.1.0" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -webdriver-js-extender@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz#57d7a93c00db4cc8d556e4d3db4b5db0a80c3bb7" - integrity sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ== - dependencies: - "@types/selenium-webdriver" "^3.0.0" - selenium-webdriver "^3.0.1" - -webdriver-manager@^12.0.6: - version "12.1.1" - resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.1.1.tgz#66c3271f69cefdaa9fdfca617ae95afae41c3c62" - integrity sha512-L9TEQmZs6JbMMRQI1w60mfps265/NCr0toYJl7p/R2OAk6oXAfwI6jqYP7EWae+d7Ad2S2Aj4+rzxoSjqk3ZuA== - dependencies: - adm-zip "^0.4.9" - chalk "^1.1.1" - del "^2.2.0" - glob "^7.0.3" - ini "^1.3.4" - minimist "^1.2.0" - q "^1.4.1" - request "^2.87.0" - rimraf "^2.5.2" - semver "^5.3.0" - xml2js "^0.4.17" - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -xml2js@^0.4.17: - version "0.4.19" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" - integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== - dependencies: - sax ">=0.6.0" - xmlbuilder "~9.0.1" - -xmlbuilder@~9.0.1: - version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - -yargs@^3.10.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/.bazelrc deleted file mode 100644 index 178af0a3f9..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/.bazelrc +++ /dev/null @@ -1,6 +0,0 @@ -# Don't create symlinks like bazel-out in the project. -# These cause VSCode to traverse a massive tree, opening file handles and -# eventually a surprising failure with auto-discovery of the C++ toolchain in -# MacOS High Sierra. -# See https://github.com/bazelbuild/bazel/issues/4603 -build --symlink_prefix=/ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel deleted file mode 100644 index 0f08b301f4..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/BUILD.bazel +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") -load("@npm_bazel_typescript//:defs.bzl", "ts_library") - -ts_library( - name = "main", - srcs = ["main.ts"], -) - -ts_library( - name = "test_lib", - testonly = True, - srcs = glob(["*.spec.ts"]), - deps = [ - ":main", - "@npm//@bazel/typescript", - "@npm//@types/jasmine", - "@npm//@types/node", - ], -) - -jasmine_node_test( - name = "test", - data = [ - # Verify that worker_protocol.proto can be referenced as a target in the generated npm bazel workspace - "@npm_bazel_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", - ], - deps = [ - ":test_lib", - "@npm//jasmine", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE deleted file mode 100644 index edbf762549..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/WORKSPACE +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -workspace(name = "npm_packages_typescript_27_e2e") - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "build_bazel_rules_nodejs", - sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], -) - -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") - -node_repositories() - -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") - -install_bazel_dependencies() - -load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") - -ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/main.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/main.spec.ts deleted file mode 100644 index bef817eaab..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/main.spec.ts +++ /dev/null @@ -1,31 +0,0 @@ -import * as main from './main'; -import * as ts from 'typescript'; - -describe('main', () => { - it('should compile and run with @bazel/typescript npm package', () => { - expect(main.test()).toEqual('test'); - }); - - it('should successfully require @bazel/typescript', () => { - try { - const {debug} = require('@bazel/typescript'); - debug('test'); - } catch (e) { - fail(e.toString()) - } - }); - - it('runtime version of typescript should be correct', () => { - expect(ts.version).toEqual('2.7.2'); - }); - - it('should successfully require built-in node module \'os\'', () => { - try { - const os = require('os'); - console.log('Platform: ' + os.platform()); - console.log('Architecture: ' + os.arch()); - } catch (e) { - fail(e.toString()) - } - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/main.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/main.ts deleted file mode 100644 index 36f3fab5b6..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/main.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function test() { - return 'test'; -} \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/package-template.json deleted file mode 100644 index dd80dfa74a..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/package-template.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "dependencies": { - "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", - "@types/jasmine": "2.8.2", - "@types/node": "7.0.18", - "jasmine": "2.8.0", - "typescript": "2.7.x" - }, - "scripts": { - "test": "bazel test ..." - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock deleted file mode 100644 index 3ccf2bfcd5..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.7/yarn.lock +++ /dev/null @@ -1,300 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": - version "0.22.1-41-gc1f5737" - dependencies: - jasmine-core "2.8.0" - protobufjs "5.0.3" - semver "5.6.0" - source-map-support "0.5.9" - tsutils "2.27.2" - -"@types/jasmine@2.8.2": - version "2.8.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" - integrity sha512-RabEJPjYMpjWqW1qYj4k0rlgP5uzyguoc0yxedJdq7t5h19MYvqhjCR1evM3raZ/peHRxp1Qfl24iawvkibSug== - -"@types/node@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" - integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= - dependencies: - long "~3" - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -glob@^7.0.5, glob@^7.0.6: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - 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" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -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" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -jasmine-core@2.8.0, jasmine-core@~2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= - -jasmine@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" - integrity sha1-awicChFXax8W3xG4AUbZHU6Lij4= - dependencies: - exit "^0.1.2" - glob "^7.0.6" - jasmine-core "~2.8.0" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -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" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -semver@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== - 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" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.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" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== - dependencies: - tslib "^1.8.1" - -typescript@2.7.x: - version "2.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" - integrity sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw== - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - -yargs@^3.10.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/.bazelrc deleted file mode 100644 index 178af0a3f9..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/.bazelrc +++ /dev/null @@ -1,6 +0,0 @@ -# Don't create symlinks like bazel-out in the project. -# These cause VSCode to traverse a massive tree, opening file handles and -# eventually a surprising failure with auto-discovery of the C++ toolchain in -# MacOS High Sierra. -# See https://github.com/bazelbuild/bazel/issues/4603 -build --symlink_prefix=/ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/BUILD.bazel deleted file mode 100644 index 0f08b301f4..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/BUILD.bazel +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") -load("@npm_bazel_typescript//:defs.bzl", "ts_library") - -ts_library( - name = "main", - srcs = ["main.ts"], -) - -ts_library( - name = "test_lib", - testonly = True, - srcs = glob(["*.spec.ts"]), - deps = [ - ":main", - "@npm//@bazel/typescript", - "@npm//@types/jasmine", - "@npm//@types/node", - ], -) - -jasmine_node_test( - name = "test", - data = [ - # Verify that worker_protocol.proto can be referenced as a target in the generated npm bazel workspace - "@npm_bazel_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", - ], - deps = [ - ":test_lib", - "@npm//jasmine", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE deleted file mode 100644 index 55c47cc60e..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/WORKSPACE +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -workspace(name = "npm_packages_typescript_28_e2e") - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "build_bazel_rules_nodejs", - sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], -) - -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") - -node_repositories() - -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") - -install_bazel_dependencies() - -load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") - -ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/main.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/main.spec.ts deleted file mode 100644 index 99e2d47b63..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/main.spec.ts +++ /dev/null @@ -1,31 +0,0 @@ -import * as main from './main'; -import * as ts from 'typescript'; - -describe('main', () => { - it('should compile and run with @bazel/typescript npm package', () => { - expect(main.test()).toEqual('test'); - }); - - it('should successfully require @bazel/typescript', () => { - try { - const {debug} = require('@bazel/typescript'); - debug('test'); - } catch (e) { - fail(e.toString()) - } - }); - - it('runtime version of typescript should be correct', () => { - expect(ts.version).toEqual('2.8.4'); - }); - - it('should successfully require built-in node module \'os\'', () => { - try { - const os = require('os'); - console.log('Platform: ' + os.platform()); - console.log('Architecture: ' + os.arch()); - } catch (e) { - fail(e.toString()) - } - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/main.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/main.ts deleted file mode 100644 index 36f3fab5b6..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/main.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function test() { - return 'test'; -} \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/package-template.json deleted file mode 100644 index b0fb4851c6..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/package-template.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "dependencies": { - "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", - "@types/jasmine": "2.8.2", - "@types/node": "7.0.18", - "jasmine": "2.8.0", - "typescript": "2.8.x" - }, - "scripts": { - "test": "bazel test ..." - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock deleted file mode 100644 index b5348dcf01..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.8/yarn.lock +++ /dev/null @@ -1,300 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": - version "0.22.1-41-gc1f5737" - dependencies: - jasmine-core "2.8.0" - protobufjs "5.0.3" - semver "5.6.0" - source-map-support "0.5.9" - tsutils "2.27.2" - -"@types/jasmine@2.8.2": - version "2.8.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" - integrity sha512-RabEJPjYMpjWqW1qYj4k0rlgP5uzyguoc0yxedJdq7t5h19MYvqhjCR1evM3raZ/peHRxp1Qfl24iawvkibSug== - -"@types/node@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" - integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= - dependencies: - long "~3" - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -glob@^7.0.5, glob@^7.0.6: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - 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" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -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" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -jasmine-core@2.8.0, jasmine-core@~2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= - -jasmine@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" - integrity sha1-awicChFXax8W3xG4AUbZHU6Lij4= - dependencies: - exit "^0.1.2" - glob "^7.0.6" - jasmine-core "~2.8.0" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -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" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -semver@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== - 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" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.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" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== - dependencies: - tslib "^1.8.1" - -typescript@2.8.x: - version "2.8.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.4.tgz#0b1db68e6bdfb0b767fa2ab642136a35b059b199" - integrity sha512-IIU5cN1mR5J3z9jjdESJbnxikTrEz3lzAw/D0Tf45jHpBp55nY31UkUvmVHoffCfKHTqJs3fCLPDxknQTTFegQ== - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - -yargs@^3.10.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/.bazelrc deleted file mode 100644 index 178af0a3f9..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/.bazelrc +++ /dev/null @@ -1,6 +0,0 @@ -# Don't create symlinks like bazel-out in the project. -# These cause VSCode to traverse a massive tree, opening file handles and -# eventually a surprising failure with auto-discovery of the C++ toolchain in -# MacOS High Sierra. -# See https://github.com/bazelbuild/bazel/issues/4603 -build --symlink_prefix=/ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/BUILD.bazel deleted file mode 100644 index 0f08b301f4..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/BUILD.bazel +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") -load("@npm_bazel_typescript//:defs.bzl", "ts_library") - -ts_library( - name = "main", - srcs = ["main.ts"], -) - -ts_library( - name = "test_lib", - testonly = True, - srcs = glob(["*.spec.ts"]), - deps = [ - ":main", - "@npm//@bazel/typescript", - "@npm//@types/jasmine", - "@npm//@types/node", - ], -) - -jasmine_node_test( - name = "test", - data = [ - # Verify that worker_protocol.proto can be referenced as a target in the generated npm bazel workspace - "@npm_bazel_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", - ], - deps = [ - ":test_lib", - "@npm//jasmine", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE deleted file mode 100644 index a01a0f0cfa..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/WORKSPACE +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -workspace(name = "npm_packages_typescript_29_e2e") - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "build_bazel_rules_nodejs", - sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], -) - -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") - -node_repositories() - -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") - -install_bazel_dependencies() - -load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") - -ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/main.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/main.spec.ts deleted file mode 100644 index 1c4a0b2415..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/main.spec.ts +++ /dev/null @@ -1,31 +0,0 @@ -import * as main from './main'; -import * as ts from 'typescript'; - -describe('main', () => { - it('should compile and run with @bazel/typescript npm package', () => { - expect(main.test()).toEqual('test'); - }); - - it('should successfully require @bazel/typescript', () => { - try { - const {debug} = require('@bazel/typescript'); - debug('test'); - } catch (e) { - fail(e.toString()) - } - }); - - it('runtime version of typescript should be correct', () => { - expect(ts.version).toEqual('2.9.2'); - }); - - it('should successfully require built-in node module \'os\'', () => { - try { - const os = require('os'); - console.log('Platform: ' + os.platform()); - console.log('Architecture: ' + os.arch()); - } catch (e) { - fail(e.toString()) - } - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/main.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/main.ts deleted file mode 100644 index 36f3fab5b6..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/main.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function test() { - return 'test'; -} \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/package-template.json deleted file mode 100644 index 31480f03c6..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/package-template.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "dependencies": { - "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", - "@types/jasmine": "2.8.2", - "@types/node": "7.0.18", - "jasmine": "2.8.0", - "typescript": "2.9.x" - }, - "scripts": { - "test": "bazel test ..." - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock deleted file mode 100644 index 8ac413b119..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_2.9/yarn.lock +++ /dev/null @@ -1,300 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": - version "0.22.1-41-gc1f5737" - dependencies: - jasmine-core "2.8.0" - protobufjs "5.0.3" - semver "5.6.0" - source-map-support "0.5.9" - tsutils "2.27.2" - -"@types/jasmine@2.8.2": - version "2.8.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" - integrity sha512-RabEJPjYMpjWqW1qYj4k0rlgP5uzyguoc0yxedJdq7t5h19MYvqhjCR1evM3raZ/peHRxp1Qfl24iawvkibSug== - -"@types/node@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" - integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= - dependencies: - long "~3" - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -glob@^7.0.5, glob@^7.0.6: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - 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" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -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" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -jasmine-core@2.8.0, jasmine-core@~2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= - -jasmine@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" - integrity sha1-awicChFXax8W3xG4AUbZHU6Lij4= - dependencies: - exit "^0.1.2" - glob "^7.0.6" - jasmine-core "~2.8.0" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -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" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -semver@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== - 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" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.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" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== - dependencies: - tslib "^1.8.1" - -typescript@2.9.x: - version "2.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" - integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w== - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - -yargs@^3.10.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/.bazelrc deleted file mode 100644 index 178af0a3f9..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/.bazelrc +++ /dev/null @@ -1,6 +0,0 @@ -# Don't create symlinks like bazel-out in the project. -# These cause VSCode to traverse a massive tree, opening file handles and -# eventually a surprising failure with auto-discovery of the C++ toolchain in -# MacOS High Sierra. -# See https://github.com/bazelbuild/bazel/issues/4603 -build --symlink_prefix=/ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/BUILD.bazel deleted file mode 100644 index 0f08b301f4..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/BUILD.bazel +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") -load("@npm_bazel_typescript//:defs.bzl", "ts_library") - -ts_library( - name = "main", - srcs = ["main.ts"], -) - -ts_library( - name = "test_lib", - testonly = True, - srcs = glob(["*.spec.ts"]), - deps = [ - ":main", - "@npm//@bazel/typescript", - "@npm//@types/jasmine", - "@npm//@types/node", - ], -) - -jasmine_node_test( - name = "test", - data = [ - # Verify that worker_protocol.proto can be referenced as a target in the generated npm bazel workspace - "@npm_bazel_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", - ], - deps = [ - ":test_lib", - "@npm//jasmine", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE deleted file mode 100644 index 55c70816f1..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/WORKSPACE +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -workspace(name = "npm_packages_typescript_30_e2e") - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "build_bazel_rules_nodejs", - sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], -) - -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") - -node_repositories() - -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") - -install_bazel_dependencies() - -load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") - -ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/main.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/main.spec.ts deleted file mode 100644 index 05923c3cd7..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/main.spec.ts +++ /dev/null @@ -1,31 +0,0 @@ -import * as main from './main'; -import * as ts from 'typescript'; - -describe('main', () => { - it('should compile and run with @bazel/typescript npm package', () => { - expect(main.test()).toEqual('test'); - }); - - it('should successfully require @bazel/typescript', () => { - try { - const {debug} = require('@bazel/typescript'); - debug('test'); - } catch (e) { - fail(e.toString()) - } - }); - - it('runtime version of typescript should be correct', () => { - expect(ts.version).toEqual('3.0.3'); - }); - - it('should successfully require built-in node module \'os\'', () => { - try { - const os = require('os'); - console.log('Platform: ' + os.platform()); - console.log('Architecture: ' + os.arch()); - } catch (e) { - fail(e.toString()) - } - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/main.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/main.ts deleted file mode 100644 index 36f3fab5b6..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/main.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function test() { - return 'test'; -} \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/package-template.json deleted file mode 100644 index 23f78b62ca..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/package-template.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "dependencies": { - "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", - "@types/jasmine": "2.8.2", - "@types/node": "7.0.18", - "jasmine": "2.8.0", - "typescript": "3.0.x" - }, - "scripts": { - "test": "bazel test ..." - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock deleted file mode 100644 index 887715e8af..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.0/yarn.lock +++ /dev/null @@ -1,300 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": - version "0.22.1-41-gc1f5737" - dependencies: - jasmine-core "2.8.0" - protobufjs "5.0.3" - semver "5.6.0" - source-map-support "0.5.9" - tsutils "2.27.2" - -"@types/jasmine@2.8.2": - version "2.8.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" - integrity sha512-RabEJPjYMpjWqW1qYj4k0rlgP5uzyguoc0yxedJdq7t5h19MYvqhjCR1evM3raZ/peHRxp1Qfl24iawvkibSug== - -"@types/node@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" - integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= - dependencies: - long "~3" - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -glob@^7.0.5, glob@^7.0.6: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - 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" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -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" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -jasmine-core@2.8.0, jasmine-core@~2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= - -jasmine@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" - integrity sha1-awicChFXax8W3xG4AUbZHU6Lij4= - dependencies: - exit "^0.1.2" - glob "^7.0.6" - jasmine-core "~2.8.0" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -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" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -semver@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== - 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" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.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" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== - dependencies: - tslib "^1.8.1" - -typescript@3.0.x: - version "3.0.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.0.3.tgz#4853b3e275ecdaa27f78fda46dc273a7eb7fc1c8" - integrity sha512-kk80vLW9iGtjMnIv11qyxLqZm20UklzuR2tL0QAnDIygIUIemcZMxlMWudl9OOt76H3ntVzcTiddQ1/pAAJMYg== - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - -yargs@^3.10.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/.bazelrc deleted file mode 100644 index 178af0a3f9..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/.bazelrc +++ /dev/null @@ -1,6 +0,0 @@ -# Don't create symlinks like bazel-out in the project. -# These cause VSCode to traverse a massive tree, opening file handles and -# eventually a surprising failure with auto-discovery of the C++ toolchain in -# MacOS High Sierra. -# See https://github.com/bazelbuild/bazel/issues/4603 -build --symlink_prefix=/ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/BUILD.bazel deleted file mode 100644 index 0f08b301f4..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/BUILD.bazel +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") -load("@npm_bazel_typescript//:defs.bzl", "ts_library") - -ts_library( - name = "main", - srcs = ["main.ts"], -) - -ts_library( - name = "test_lib", - testonly = True, - srcs = glob(["*.spec.ts"]), - deps = [ - ":main", - "@npm//@bazel/typescript", - "@npm//@types/jasmine", - "@npm//@types/node", - ], -) - -jasmine_node_test( - name = "test", - data = [ - # Verify that worker_protocol.proto can be referenced as a target in the generated npm bazel workspace - "@npm_bazel_typescript//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", - ], - deps = [ - ":test_lib", - "@npm//jasmine", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE deleted file mode 100644 index 55c70816f1..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/WORKSPACE +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -workspace(name = "npm_packages_typescript_30_e2e") - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "build_bazel_rules_nodejs", - sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], -) - -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") - -node_repositories() - -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") - -install_bazel_dependencies() - -load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") - -ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/main.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/main.spec.ts deleted file mode 100644 index c164e66ab4..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/main.spec.ts +++ /dev/null @@ -1,31 +0,0 @@ -import * as main from './main'; -import * as ts from 'typescript'; - -describe('main', () => { - it('should compile and run with @bazel/typescript npm package', () => { - expect(main.test()).toEqual('test'); - }); - - it('should successfully require @bazel/typescript', () => { - try { - const {debug} = require('@bazel/typescript'); - debug('test'); - } catch (e) { - fail(e.toString()) - } - }); - - it('runtime version of typescript should be correct', () => { - expect(ts.version).toEqual('3.1.6'); - }); - - it('should successfully require built-in node module \'os\'', () => { - try { - const os = require('os'); - console.log('Platform: ' + os.platform()); - console.log('Architecture: ' + os.arch()); - } catch (e) { - fail(e.toString()) - } - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/main.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/main.ts deleted file mode 100644 index 36f3fab5b6..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/main.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function test() { - return 'test'; -} \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/package-template.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/package-template.json deleted file mode 100644 index b53c57a7f7..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/package-template.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "dependencies": { - "@bazel/typescript": "file:${BAZEL_TYPESCRIPT_NPM_PACKAGE}", - "@types/jasmine": "2.8.2", - "@types/node": "7.0.18", - "jasmine": "2.8.0", - "typescript": "3.1.x" - }, - "scripts": { - "test": "bazel test ..." - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock deleted file mode 100644 index be3dbed117..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/npm_packages/typescript_3.1/yarn.lock +++ /dev/null @@ -1,300 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@bazel/typescript@file:../../../../../../../../../private/var/tmp/_bazel_greg/837d12dda6835e241d9d3083438c6bb6/execroot/npm_bazel_typescript/bazel-out/darwin-fastbuild/bin/npm_package": - version "0.22.1-41-gc1f5737" - dependencies: - jasmine-core "2.8.0" - protobufjs "5.0.3" - semver "5.6.0" - source-map-support "0.5.9" - tsutils "2.27.2" - -"@types/jasmine@2.8.2": - version "2.8.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" - integrity sha512-RabEJPjYMpjWqW1qYj4k0rlgP5uzyguoc0yxedJdq7t5h19MYvqhjCR1evM3raZ/peHRxp1Qfl24iawvkibSug== - -"@types/node@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" - integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= - dependencies: - long "~3" - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -glob@^7.0.5, glob@^7.0.6: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - 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" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -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" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -jasmine-core@2.8.0, jasmine-core@~2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= - -jasmine@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" - integrity sha1-awicChFXax8W3xG4AUbZHU6Lij4= - dependencies: - exit "^0.1.2" - glob "^7.0.6" - jasmine-core "~2.8.0" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -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" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -semver@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== - 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" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.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" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== - dependencies: - tslib "^1.8.1" - -typescript@3.1.x: - version "3.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" - integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - -yargs@^3.10.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/BUILD.bazel deleted file mode 100644 index 44a396e2a4..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/BUILD.bazel +++ /dev/null @@ -1,28 +0,0 @@ -load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") -load("//internal:defaults.bzl", "ts_library") - -ts_library( - name = "tsconfig_types", - srcs = ["tsconfig_types.ts"], - expected_diagnostics = [ - "TS2304: Cannot find name 'Hammer'", - ], - node_modules = "@build_bazel_rules_typescript_internal_reference_types_directive_deps//:node_modules", - tsconfig = ":tsconfig.json", -) - -ts_library( - name = "test_lib", - testonly = True, - srcs = glob(["*.spec.ts"]), - node_modules = "@build_bazel_rules_typescript_internal_reference_types_directive_deps//:node_modules", - tsconfig = ":tsconfig.json", -) - -jasmine_node_test( - name = "test", - deps = [ - ":test_lib", - "@npm//jasmine", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/package.json deleted file mode 100644 index ea93a4fa1c..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "description": "test deps", - "dependencies": { - "zone.js": "0.8.26" - }, - "devDependencies": { - "@types/hammerjs": "2.0.35", - "@types/jasmine": "^2.8.2", - "typescript": "2.7.2" - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/reference_types.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/reference_types.spec.ts deleted file mode 100644 index 8d52416e52..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/reference_types.spec.ts +++ /dev/null @@ -1,21 +0,0 @@ -/// -/// - -// The jasmine types are resolved because the tsconfig.json -// for this compilation includes "types": ["jasmine"]. -// This file will fail to compile if that mechanism of including types -// is broken - -describe('reference types directive resolution', () => { - it('should resolve zone.js types from node_modules/zone.js/dist/zone.js.d.ts', () => { - // The type of Zone should resolve above or this will fail to compile - let zone: Zone; - expect(1).toEqual(1); - }); - - it('should resolve hammerjs types from node_modules/@types/hammerjs/index.d.ts', () => { - // The type of HammerStatic should resolve above or this will fail to compile - let hammer: HammerStatic; - expect(1).toEqual(1); - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/tsconfig.json.oss deleted file mode 100644 index 5b841a7310..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/tsconfig.json.oss +++ /dev/null @@ -1,5 +0,0 @@ -{ - "compilerOptions": { - "types": ["jasmine"] - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/tsconfig_types.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/tsconfig_types.ts deleted file mode 100644 index 657fce4f9b..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/tsconfig_types.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Since "hammerjs" is not included in the types=[] array in -// tsconfig, this should result in a compile error: TS2304: Cannot find name 'Hammer' -console.log(typeof Hammer); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/yarn.lock deleted file mode 100644 index 9a296117b7..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/reference_types_directive/yarn.lock +++ /dev/null @@ -1,19 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@types/hammerjs@2.0.35": - version "2.0.35" - resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.35.tgz#7b7c950c7d54593e23bffc8d2b4feba9866a7277" - -"@types/jasmine@^2.8.2": - version "2.8.8" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.8.tgz#bf53a7d193ea8b03867a38bfdb4fbb0e0bf066c9" - -typescript@2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" - -zone.js@0.8.26: - version "0.8.26" - resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.8.26.tgz#7bdd72f7668c5a7ad6b118148b4ea39c59d08d2d" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/child.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/child.ts deleted file mode 100644 index f7bca1371a..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/child.ts +++ /dev/null @@ -1,4 +0,0 @@ -// The line below is a strict deps violation: -import {Symbol} from './grandparent'; - -console.log(Symbol); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/grandparent.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/grandparent.ts deleted file mode 100644 index d352bd651c..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/grandparent.ts +++ /dev/null @@ -1 +0,0 @@ -export class Symbol {} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/parent.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/parent.ts deleted file mode 100644 index 6df328773d..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/strict_deps/parent.ts +++ /dev/null @@ -1,4 +0,0 @@ -import {Symbol} from './grandparent'; -export const x = 1; - -console.log(Symbol); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/.bazelrc deleted file mode 100644 index 178af0a3f9..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/.bazelrc +++ /dev/null @@ -1,6 +0,0 @@ -# Don't create symlinks like bazel-out in the project. -# These cause VSCode to traverse a massive tree, opening file handles and -# eventually a surprising failure with auto-discovery of the C++ toolchain in -# MacOS High Sierra. -# See https://github.com/bazelbuild/bazel/issues/4603 -build --symlink_prefix=/ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/BUILD.bazel deleted file mode 100644 index 693fc5fa94..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/BUILD.bazel +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") -load("@npm_bazel_typescript//:defs.bzl", "ts_library") - -ts_library( - name = "main", - srcs = ["main.ts"], - compiler = "@npm_bazel_typescript//internal:tsc_wrapped_bin", -) - -ts_library( - name = "test_lib", - testonly = True, - srcs = glob(["*.spec.ts"]), - compiler = "@npm_bazel_typescript//internal:tsc_wrapped_bin", - deps = [ - ":main", - "@npm//@types/jasmine", - "@npm//@types/node", - "@npm//typescript", - ], -) - -jasmine_node_test( - name = "test", - deps = [ - ":test_lib", - "@npm//jasmine", - "@npm//typescript", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/WORKSPACE deleted file mode 100644 index d53e1b5bff..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/WORKSPACE +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -workspace(name = "typescript_31") - -local_repository( - name = "npm_bazel_typescript", - path = "../../..", -) - -load("@npm_bazel_typescript//:package.bzl", "rules_typescript_dev_dependencies") - -rules_typescript_dev_dependencies() - -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") - -node_repositories() - -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") - -ts_setup_workspace() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/main.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/main.spec.ts deleted file mode 100644 index 5ad3f758dd..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/main.spec.ts +++ /dev/null @@ -1,22 +0,0 @@ -import * as main from './main'; -import * as ts from 'typescript'; - -describe('main', () => { - it('should compile and run without npm package', () => { - expect(main.test()).toEqual('test'); - }); - - it('runtime version of typescript should be correct', () => { - expect(ts.version).toEqual('3.1.6'); - }); - - it('should successfully require built-in node module \'os\'', () => { - try { - const os = require('os'); - console.log('Platform: ' + os.platform()); - console.log('Architecture: ' + os.arch()); - } catch (e) { - fail(e.toString()) - } - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/main.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/main.ts deleted file mode 100644 index 36f3fab5b6..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/main.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function test() { - return 'test'; -} \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/package.json deleted file mode 100644 index 37929100ba..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "dependencies": { - "@types/jasmine": "2.8.2", - "@types/node": "7.0.18", - "jasmine": "2.8.0", - "protobufjs": "5.0.3", - "source-map-support": "0.5.9", - "tsickle": "0.33.1", - "tsutils": "2.27.2", - "typescript": "3.1.x" - }, - "scripts": { - "test": "bazel test ..." - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/tsconfig.json.oss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/yarn.lock deleted file mode 100644 index 90e09d9cd3..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/e2e/typescript_3.1/yarn.lock +++ /dev/null @@ -1,301 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@types/jasmine@2.8.2": - version "2.8.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" - -"@types/node@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -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" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= - dependencies: - long "~3" - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -glob@^7.0.5, glob@^7.0.6: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - 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" - -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: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -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" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -jasmine-core@~2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - -jasmine@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" - dependencies: - exit "^0.1.2" - glob "^7.0.6" - jasmine-core "~2.8.0" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= - -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" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -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" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== - 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" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.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" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -tsickle@0.33.1: - version "0.33.1" - resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.33.1.tgz#eee4ebabeda3bcd8afc32cee34c822cbe3e839ec" - integrity sha512-SpW2G3PvDGs4a5sMXPlWnCWHWRviWjSlI3U0734e3fU3U39VAE0NPr8M3W1cuL/OU/YXheYipGeEwtIJ5k0NHQ== - dependencies: - minimist "^1.2.0" - mkdirp "^0.5.1" - source-map "^0.7.3" - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== - dependencies: - tslib "^1.8.1" - -typescript@3.1.x: - version "3.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" - integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - -yargs@^3.10.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index d82e3f201c..5240c5f220 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -59,14 +59,11 @@ }, "scripts": { "pree2e": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG && bazel build //examples/app:e2e //examples/protocol_buffers:e2e", - "e2e": "yarn e2e-bazel-external && yarn e2e-examples-app-devserver && yarn e2e-examples-app-prodserver && yarn e2e-examples-protobuf-devserver && yarn e2e-examples-protobuf-prodserver && yarn e2e-npm_packages && yarn e2e-typescript_3.1", - "e2e-bazel-external": "jasmine internal/e2e/default_tsconfig_test.js", + "e2e": "yarn e2e-examples-app-devserver && yarn e2e-examples-app-prodserver && yarn e2e-examples-protobuf-devserver && yarn e2e-examples-protobuf-prodserver", "e2e-examples-app-devserver": "concurrently \"bazel run //examples/app:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", "e2e-examples-app-prodserver": "concurrently \"bazel run //examples/app:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", "e2e-examples-protobuf-devserver": "concurrently \"bazel run //examples/protocol_buffers:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first", "e2e-examples-protobuf-prodserver": "concurrently \"bazel run //examples/protocol_buffers:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first", - "e2e-npm_packages": "./internal/e2e/npm_packages/test.sh", - "e2e-typescript_3.1": "cd internal/e2e/typescript_3.1; yarn test", "skydoc": "bazel build //docs && unzip -o -d docs/api bazel-bin/docs/docs-skydoc.zip", "bazel:format": "find . -type f \\( -name \"*.bzl\" -or -name WORKSPACE -or -name BUILD -or -name BUILD.bazel \\) ! -path \"*/node_modules/*\" | xargs buildifier -v --warnings=args-order,attr-cfg,attr-license,attr-non-empty,attr-output-default,attr-single-file,constant-glob,ctx-actions,ctx-args,depset-iteration,depset-union,dict-concatenation,duplicated-name,filetype,git-repository,http-archive,integer-division,load,load-on-top,native-build,native-package,out-of-order-load,output-group,package-name,package-on-top,positional-args,redefined-variable,repository-name,same-origin-load,string-iteration,unsorted-dict-items,unused-variable", "bazel:lint": "yarn bazel:format --lint=warn", From 255a570e64221bdf2671f29e5c6eb5fed00cf9e4 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 25 Feb 2019 10:22:33 -0800 Subject: [PATCH 0556/1134] Support recursive extended tsconfigs Closes #265 PiperOrigin-RevId: 235554123 --- .../internal/tsc_wrapped/tsconfig.ts | 96 +++++++++++++------ .../internal/tsc_wrapped/tsconfig_test.ts | 56 +++++++++++ 2 files changed, 121 insertions(+), 31 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index 512b314656..f8460c34f3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -278,12 +278,76 @@ export function parseTsconfig( // TypeScript expects an absolute path for the tsconfig.json file tsconfigFile = resolveNormalizedPath(tsconfigFile); - const {config, error} = ts.readConfigFile(tsconfigFile, host.readFile); + const isUndefined = (value: any): value is undefined => value === undefined; + + // Handle bazel specific options, but make sure not to crash when reading a + // vanilla tsconfig.json. + + const readExtendedConfigFile = + (configFile: string, existingConfig?: any): {config?: any, error?: ts.Diagnostic} => { + const {config, error} = ts.readConfigFile(configFile, host.readFile); + + if (error) { + return {error}; + } + + // Allow Bazel users to control some of the bazel options. + // Since TypeScript's "extends" mechanism applies only to "compilerOptions" + // we have to repeat some of their logic to get the user's bazelOptions. + const mergedConfig = existingConfig || config; + + if (existingConfig) { + const existingBazelOpts: BazelOptions = existingConfig.bazelOptions || {}; + const newBazelBazelOpts: BazelOptions = config.bazelOptions || {}; + + mergedConfig.bazelOptions = { + ...existingBazelOpts, + + disableStrictDeps: isUndefined(existingBazelOpts.disableStrictDeps) + ? newBazelBazelOpts.disableStrictDeps + : existingBazelOpts.disableStrictDeps, + + suppressTsconfigOverrideWarnings: isUndefined(existingBazelOpts.suppressTsconfigOverrideWarnings) + ? newBazelBazelOpts.suppressTsconfigOverrideWarnings + : existingBazelOpts.suppressTsconfigOverrideWarnings, + + tsickle: isUndefined(existingBazelOpts.tsickle) + ? newBazelBazelOpts.tsickle + : existingBazelOpts.tsickle, + + googmodule: isUndefined(existingBazelOpts.googmodule) + ? newBazelBazelOpts.googmodule + : existingBazelOpts.googmodule, + + devmodeTargetOverride: isUndefined(existingBazelOpts.devmodeTargetOverride) + ? newBazelBazelOpts.devmodeTargetOverride + : existingBazelOpts.devmodeTargetOverride, + } + + if (!mergedConfig.bazelOptions.suppressTsconfigOverrideWarnings) { + warnOnOverriddenOptions(config); + } + } + + if (config.extends) { + let extendedConfigPath = resolveNormalizedPath(path.dirname(configFile), config.extends); + if (!extendedConfigPath.endsWith('.json')) extendedConfigPath += '.json'; + + return readExtendedConfigFile(extendedConfigPath, mergedConfig); + } + + return {config: mergedConfig}; + }; + + const {config, error} = readExtendedConfigFile(tsconfigFile); if (error) { // target is in the config file we failed to load... return [null, [error], {target: ''}]; } + const {options, errors, fileNames} = + ts.parseJsonConfigFileContent(config, host, path.dirname(tsconfigFile)); + // Handle bazel specific options, but make sure not to crash when reading a // vanilla tsconfig.json. const bazelOpts: BazelOptions = config.bazelOptions || {}; @@ -292,37 +356,7 @@ export function parseTsconfig( bazelOpts.typeBlackListPaths = bazelOpts.typeBlackListPaths || []; bazelOpts.compilationTargetSrc = bazelOpts.compilationTargetSrc || []; - // Allow Bazel users to control some of the bazel options. - // Since TypeScript's "extends" mechanism applies only to "compilerOptions" - // we have to repeat some of their logic to get the user's bazelOptions. - if (config.extends) { - let userConfigFile = - resolveNormalizedPath(path.dirname(tsconfigFile), config.extends); - if (!userConfigFile.endsWith('.json')) userConfigFile += '.json'; - const {config: userConfig, error} = - ts.readConfigFile(userConfigFile, host.readFile); - if (error) { - return [null, [error], {target}]; - } - if (userConfig.bazelOptions) { - bazelOpts.disableStrictDeps = bazelOpts.disableStrictDeps || - userConfig.bazelOptions.disableStrictDeps; - bazelOpts.suppressTsconfigOverrideWarnings = - bazelOpts.suppressTsconfigOverrideWarnings || - userConfig.bazelOptions.suppressTsconfigOverrideWarnings; - bazelOpts.tsickle = bazelOpts.tsickle || userConfig.bazelOptions.tsickle; - bazelOpts.googmodule = - bazelOpts.googmodule || userConfig.bazelOptions.googmodule; - bazelOpts.devmodeTargetOverride = bazelOpts.devmodeTargetOverride || - userConfig.bazelOptions.devmodeTargetOverride; - } - if (!bazelOpts.suppressTsconfigOverrideWarnings) { - warnOnOverriddenOptions(userConfig); - } - } - const {options, errors, fileNames} = - ts.parseJsonConfigFileContent(config, host, path.dirname(tsconfigFile)); if (errors && errors.length) { return [null, errors, {target}]; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig_test.ts index 63d3e7b5ea..eac3ffe27d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig_test.ts @@ -57,4 +57,60 @@ describe('tsconfig', () => { expect(bazelOpts.disableStrictDeps).toBeTruthy(); } }); + + it('honors bazelOptions in recursive extends', ()=> { + const tsconfigOne = { + extends: './tsconfig-level-b.json', + files: ['a.ts'], + bazelOptions: { + disableStrictDeps: false + } + }; + + const tsconfigTwo = { + extends: './tsconfig-level-c.json', + bazelOptions: { + suppressTsconfigOverrideWarnings: true + } + }; + + const tsconfigThree = { + bazelOptions: { + tsickle: true, + suppressTsconfigOverrideWarnings: false, + disableStrictDeps: true + } + }; + + const files = { + [resolveNormalizedPath('path/to/tsconfig-level-a.json')]: JSON.stringify(tsconfigOne), + [resolveNormalizedPath('path/to/tsconfig-level-b.json')]: JSON.stringify(tsconfigTwo), + [resolveNormalizedPath('path/to/tsconfig-level-c.json')]: JSON.stringify(tsconfigThree), + }; + + const host: ts.ParseConfigHost = { + useCaseSensitiveFileNames: true, + fileExists: (path: string) => !!files[path], + readFile: (path: string) => files[path], + readDirectory( + rootDir: string, extensions: ReadonlyArray, + excludes: ReadonlyArray, includes: ReadonlyArray, + depth: number): string[] { + return []; + }, + }; + + const [parsed, diagnostics] = + parseTsconfig('path/to/tsconfig-level-a.json', host); + expect(diagnostics).toBeNull(); + + if (!parsed) { + fail('Expected parsed'); + } else { + const {bazelOpts} = parsed; + expect(bazelOpts.tsickle).toBeTruthy(); + expect(bazelOpts.suppressTsconfigOverrideWarnings).toBeTruthy(); + expect(bazelOpts.disableStrictDeps).toBeFalsy(); + } + }) }); From 3cc37e13a7ef40138d06f9c2ac13ea1292265ed2 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 25 Feb 2019 14:03:40 -0800 Subject: [PATCH 0557/1134] Remove publishing-related bits from rules_typescript We only publish @bazel/typescript from the rules_nodejs repo now Closes #431 PiperOrigin-RevId: 235598697 --- .../bazelbuild/rules_typescript/.bazelrc | 2 - .../bazelbuild/rules_typescript/BUILD.bazel | 41 ------------------- .../bazelbuild/rules_typescript/DEVELOPING.md | 20 --------- .../rules_typescript/internal/BUILD.bazel | 8 ---- .../bazelbuild/rules_typescript/on-version.js | 39 ------------------ .../bazelbuild/rules_typescript/package.json | 3 +- .../tools/bazel_stamp_vars.sh | 2 - 7 files changed, 1 insertion(+), 114 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/on-version.js delete mode 100755 third_party/github.com/bazelbuild/rules_typescript/tools/bazel_stamp_vars.sh diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/.bazelrc index 41e47faf62..adf60bc7fa 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelrc +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelrc @@ -4,8 +4,6 @@ test --test_output=errors # Enable debugging tests with --config=debug test:debug --test_arg=--node_options=--inspect-brk --test_output=streamed --test_strategy=exclusive --test_timeout=9999 --nocache_test_results -build --workspace_status_command=./tools/bazel_stamp_vars.sh - # Turn off legacy external runfiles run --nolegacy_external_runfiles test --nolegacy_external_runfiles diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index b2b79b65fa..ace9f178ae 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -21,7 +21,6 @@ load("@bazel_gazelle//:def.bzl", "gazelle") load("@build_bazel_rules_nodejs//:defs.bzl", "npm_package") load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") -load("//:version.bzl", "COMPAT_VERSION") # ts_library defaults to this label in the top-level package. # Point to where the file actually lives. @@ -55,46 +54,6 @@ js_library( visibility = ["//visibility:public"], ) -genrule( - name = "generate_BUILD", - srcs = [], - outs = ["BUILD"], - cmd = "echo \"#marker that this is a bazel package\" > $@", -) - -npm_package( - name = "npm_package", - srcs = [ - "LICENSE", - "README.md", - "defs.bzl", - "package.bzl", - "package.json", - "version.bzl", - "//devserver:npm_package_assets", - "//internal:npm_package_assets", - "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:npm_package_assets", - "//ts_auto_deps:npm_package_assets", - ], - replacements = { - "(#|\/\/)\\s+BEGIN-DEV-ONLY[\\w\W]+?(#|\/\/)\\s+END-DEV-ONLY": "", - # Do a simple replacement needed to make the local development differ - # from how our release is used. - "//devserver:devserver_bin": "//devserver", - "0.0.0-COMPAT_VERSION": COMPAT_VERSION, - }, - deps = [ - ":generate_BUILD", - "//devserver:devserver-darwin", - "//devserver:devserver-linux", - "//devserver:devserver-windows", - "//internal:generated_BUILD", - "//internal:tsc_wrapped", - "//ts_auto_deps:ts_auto_deps-darwin", - "//ts_auto_deps:ts_auto_deps-linux", - "//ts_auto_deps:ts_auto_deps-windows", - ], -) # This package is included in the npm_bazel_typescript package in rules_nodejs/packages/typescript npm_package( diff --git a/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md b/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md index c5b36dd088..fcfbee87b6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md +++ b/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md @@ -48,23 +48,3 @@ an `@npm` workspace with npm dependencies. Note, with this workflow the downstream version of `@npm//typescript` will be used to compile the `ts_library` targets in `npm_bazel_typescript`. An example of this can be found under `internal/e2e/typescript_3.1`. - -## Releasing - -Start from a clean checkout at master/HEAD. Check if there are any breaking -changes since the last tag - if so, this will be a minor, if not, it's a patch. -(This may not sound like semver - but since our major version is a zero, the -rule is that minors are breaking changes and patches are new features). - -1. Re-generate the API docs: `yarn skydoc` -1. May be necessary if Go code has changed though probably it was already necessary to run this to keep CI green: `bazel run :gazelle` -1. If we depend on a newer rules_nodejs, update the `check_rules_nodejs_version` in `ts_repositories.bzl` -1. `git commit -a -m 'Update docs for release'` -1. `npm config set tag-version-prefix ''` -1. `npm version minor -m 'rel: %s'` (replace `minor` with `patch` if no breaking changes) -1. Build npm packages and publish them: `TMP=$(mktemp -d -t bazel-release.XXXXXXX); bazel --output_base=$TMP run //:npm_package.publish && ( cd internal/karma && bazel --output_base=$TMP run //:npm_package.publish )` -1. `git push upstream && git push upstream --tags` (assumes you named the bazelbuild fork as "upstream") -1. (Temporary): submit a google3 CL to update the versions in package.bzl and package.json - -[releases]: https://github.com/bazelbuild/rules_typescript/releases - diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index e9baf8eb97..698cef0108 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -128,17 +128,9 @@ genrule( filegroup( name = "npm_package_assets", srcs = [ - "build_defs.bzl", "common/compilation.bzl", "common/json_marshal.bzl", "common/module_mappings.bzl", "common/tsconfig.bzl", - "defaults.bzl", - "ts_config.bzl", - "ts_repositories.bzl", - "tsc_wrapped/package.json", - "tsc_wrapped/yarn.lock", - "//internal/devserver:npm_package_assets", - "//internal/protobufjs:npm_package_assets", ], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/on-version.js b/third_party/github.com/bazelbuild/rules_typescript/on-version.js deleted file mode 100644 index 87e3d8e7db..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/on-version.js +++ /dev/null @@ -1,39 +0,0 @@ -/** - * @license - * Copyright 2017 The Bazel Authors. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @fileoverview This script updates the version in package.bzl to match - * the version in package.json. It is automatically called during the - * `npm version` step of the release process (see Releasing in README.me) - * by the "version" script in package.json. - */ -'use strict'; - -// Called from "version" npm script when running `npm version` -// during release process. This script updates the version -// in package.bzl to match that of package.json. -const shell = require('shelljs'); -const version = require('./package.json').version; -shell.sed('-i', '\"@bazel/typescript\": \"[0-9\.]*\"', `"@bazel/typescript": "${version}"`, 'README.md'); -shell.sed('-i', '\"@bazel/karma\": \"[0-9\.]*\"', `"@bazel/karma": "${version}"`, 'README.md'); -shell.sed('-i', '^VERSION \= \"[0-9\.]*\"', `VERSION = "${version}"`, 'version.bzl'); -shell.sed('-i', 'check_rules_typescript_version\\\(version_string \= \"[0-9\.]*\"', `check_rules_typescript_version(version_string = "${version}"`, 'WORKSPACE'); - -// Following instructions in version.bzl, we should update the minimal compatibility version whenever -// we have new features or breaking changes. So we assume that a patch number of 0 implies this. -if (version.endsWith('.0')) { - shell.sed('-i', 'COMPAT_VERSION \= \"[0-9\.]*\"', `COMPAT_VERSION = "${version}"`, 'version.bzl') -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 5240c5f220..b4834d140c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -67,7 +67,6 @@ "skydoc": "bazel build //docs && unzip -o -d docs/api bazel-bin/docs/docs-skydoc.zip", "bazel:format": "find . -type f \\( -name \"*.bzl\" -or -name WORKSPACE -or -name BUILD -or -name BUILD.bazel \\) ! -path \"*/node_modules/*\" | xargs buildifier -v --warnings=args-order,attr-cfg,attr-license,attr-non-empty,attr-output-default,attr-single-file,constant-glob,ctx-actions,ctx-args,depset-iteration,depset-union,dict-concatenation,duplicated-name,filetype,git-repository,http-archive,integer-division,load,load-on-top,native-build,native-package,out-of-order-load,output-group,package-name,package-on-top,positional-args,redefined-variable,repository-name,same-origin-load,string-iteration,unsorted-dict-items,unused-variable", "bazel:lint": "yarn bazel:format --lint=warn", - "bazel:lint-fix": "yarn bazel:format --lint=fix", - "version": "node ./on-version.js && git stage README.md version.bzl WORKSPACE" + "bazel:lint-fix": "yarn bazel:format --lint=fix" } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/tools/bazel_stamp_vars.sh b/third_party/github.com/bazelbuild/rules_typescript/tools/bazel_stamp_vars.sh deleted file mode 100755 index 1540d2d033..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/tools/bazel_stamp_vars.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -echo BUILD_SCM_VERSION $(git describe --abbrev=7 --tags HEAD) From e07b55d0574a8716f2b448c71df344d4c2aedc9c Mon Sep 17 00:00:00 2001 From: lucassloan Date: Wed, 27 Feb 2019 11:28:20 -0800 Subject: [PATCH 0558/1134] Support herb as a backend for taze. PiperOrigin-RevId: 235958571 --- .../rules_typescript/ts_auto_deps/analyze/loader.go | 5 ++++- .../rules_typescript/ts_auto_deps/updater/updater.go | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go index f70dbcb917..ca5f73f0ca 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go @@ -349,7 +349,10 @@ func (q *QueryBasedTargetLoader) query(args ...string) (*appb.QueryResult, error // queries not returning a result while running with the '--keep_going' // flag. Since one query failing to return a result does not hinder the // other queries from returning a result, ignore these errors. - if err.Error() != "exit status 3" { + // + // Herb prints "printing partial results" to indicate the same as bazel's + // exit status 3 + if err.Error() != "exit status 3" && !strings.Contains(stderr.String(), "printing partial results") { // The error provided as a result is less useful than the contents of // stderr for debugging. return nil, fmt.Errorf(stderr.String()) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index 44e6492964..8c156eda11 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -77,7 +77,7 @@ func attrTruthy(r *build.Rule, attr string) bool { // Matches the warning TypeScriptRuleChecker prints for unused ts_declarations. // TODO(martinprobst): in the long term, this should become the default and TypeScriptRuleChecker should no longer special case ts_declaration. var unusedDeclarationRE = regexp.MustCompile( - `WARNING: [^:]+:\d+:\d+: keeping possibly used ts_declaration '([^']+)'`) + `WARNING: [^:]+:\d+:(?:\d+:)? keeping possibly used ts_declaration '([^']+)'`) // GarbledBazelResponseError signals to callers that the proto returned by bazel // analyze was garbled, and couldn't be unmarshalled. From f6c2685cdbcc5ab5a16680dfdb2a840a9a045f56 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Thu, 28 Feb 2019 11:38:25 -0800 Subject: [PATCH 0559/1134] Modify the query-based analyzer to handle cases where a source file is included in the srcs attribute of more than one rule. Add a heuristic that if more that one rule supplies a source file, favor ts_library rules. PiperOrigin-RevId: 236163673 --- .../ts_auto_deps/analyze/loader.go | 54 +++++++++++++------ 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go index ca5f73f0ca..d522017140 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go @@ -203,32 +203,37 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg } } - filepathToRule := make(map[string]*appb.Rule) + filepathToRules := make(map[string][]*appb.Rule) // load all the rules with file srcs (either literal or generated) - sourceLabelToRule, err := q.loadRulesWithSources(workspaceRoot, fileLabels) + sourceLabelToRules, err := q.loadRulesWithSources(workspaceRoot, fileLabels) if err != nil { return nil, err } - for label, rule := range sourceLabelToRule { - filepathToRule[labelToPath(label)] = rule + for label, rules := range sourceLabelToRules { + for _, rule := range rules { + filepathToRules[labelToPath(label)] = append(filepathToRules[labelToPath(label)], rule) + } } // load all the rules with generator rule srcs - generatorLabelToRule, err := q.loadRulesWithSources(workspaceRoot, generators) + generatorLabelToRules, err := q.loadRulesWithSources(workspaceRoot, generators) if err != nil { return nil, err } - for label, rule := range generatorLabelToRule { - for _, generated := range generatorsToFiles[label] { - filepathToRule[labelToPath(generated.GetName())] = rule + for label, rules := range generatorLabelToRules { + for _, rule := range rules { + for _, generated := range generatorsToFiles[label] { + filepathToRules[labelToPath(generated.GetName())] = append(filepathToRules[labelToPath(generated.GetName())], rule) + } } } for _, path := range paths { // check all the possible file paths for the import path for _, fp := range possibleFilepaths(path) { - if rule, ok := filepathToRule[fp]; ok { + if rules, ok := filepathToRules[fp]; ok { + rule := chooseCanonicalRule(rules) results[path] = rule } } @@ -237,6 +242,23 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg return results, nil } +// chooseCanonicalRule chooses between rules which includes the imported file as +// a source. It applies heuristics, such as prefering ts_library to other rule +// types to narrow down the choices. After narrowing, it chooses the first +// rule. If no rules are left after narrowing, it returns the first rule from +// the original list. +func chooseCanonicalRule(rules []*appb.Rule) *appb.Rule { + // filter down to only ts_library rules + for _, r := range rules { + if r.GetRuleClass() == "ts_library" { + return r + } + } + + // if no rules matched the filter, just return the first rule + return rules[0] +} + // ruleLabel returns the label for a target which is a rule. Returns an error if // target is not a rule. func (q *QueryBasedTargetLoader) ruleLabel(target *appb.Target) (string, error) { @@ -279,10 +301,10 @@ func (q *QueryBasedTargetLoader) targetLabel(target *appb.Target) (string, error } // loadRulesWithSources loads all rules which include the labels in sources as -// srcs attributes. Returns a map from source label to the rule which includes -// it. A source label can be the label of a source file or a generated file or -// a generating rule. -func (q *QueryBasedTargetLoader) loadRulesWithSources(workspaceRoot string, sources []string) (map[string]*appb.Rule, error) { +// srcs attributes. Returns a map from source label to a list of rules which +// include it. A source label can be the label of a source file or a generated +// file or a generating rule. +func (q *QueryBasedTargetLoader) loadRulesWithSources(workspaceRoot string, sources []string) (map[string][]*appb.Rule, error) { pkgToLabels := make(map[string][]string) queries := make([]string, 0, len(sources)) for _, label := range sources { @@ -295,7 +317,7 @@ func (q *QueryBasedTargetLoader) loadRulesWithSources(workspaceRoot string, sour if err != nil { return nil, err } - labelToRule := make(map[string]*appb.Rule) + labelToRules := make(map[string][]*appb.Rule) for _, target := range r.GetTarget() { label, err := q.ruleLabel(target) if err != nil { @@ -307,13 +329,13 @@ func (q *QueryBasedTargetLoader) loadRulesWithSources(workspaceRoot string, sour for _, src := range listAttribute(rule, "srcs") { for _, l := range labels { if src == l { - labelToRule[l] = rule + labelToRules[l] = append(labelToRules[l], rule) break } } } } - return labelToRule, nil + return labelToRules, nil } // batchQuery runs a set of queries with a single call to Bazel query and the From 95e90da8e65dd8c5a3973ce18895b25e714d49fc Mon Sep 17 00:00:00 2001 From: radokirov Date: Thu, 28 Feb 2019 16:24:34 -0800 Subject: [PATCH 0560/1134] Move the tsickle auto-quoting logic into a tsetse check. This check is only useful for code that would be opmitized through a property renaming optimizer (like Closure, and experiemental uglifyJS option, AFAIK). It is intentionally, exposed but not turned on by default for rules_typescript. PiperOrigin-RevId: 236218830 --- .../docs/property-renaming-safe.md | 43 +++++++++++++ .../internal/tsetse/error_code.ts | 8 +++ .../tsetse/rules/property_renaming_safe.ts | 54 ++++++++++++++++ .../tests/property_renaming_safe/errors.ts | 64 +++++++++++++++++++ 4 files changed, 169 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/property-renaming-safe.md create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/property_renaming_safe.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/property_renaming_safe/errors.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/property-renaming-safe.md b/third_party/github.com/bazelbuild/rules_typescript/docs/property-renaming-safe.md new file mode 100644 index 0000000000..716b0d9590 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/property-renaming-safe.md @@ -0,0 +1,43 @@ + + +# Property renaming safe + +This check will reject code patterns that are likely to not be safe for an +optimization known as "property renaming". Closure compiler is currently one of +the main JS optimizer that performs that optimization and anecdotally it results +in 5-10% smaller bundles (see [more +info](http://closuretools.blogspot.com/2011/01/property-by-any-other-name-part-1.html)). + +Property renaming is the optimization where writes and accesses to object +properties like `x.userName` are rewritten to a shorter name like `x.a`. It +works great until other code expects the property to be the specific string +'userName'. This check will help catch bad optimization errors like this earlier +(during TS compilation). + +The check will reject a property access on an object through an index signature +in its type. For example, if you write this: + + interface IdxSig { + [key: string]: string; + } + + function propAccess(x: IdxSig) { + x.prop; // new error + x['prop']; // ok + } + + +the compiler will start erring like this: + + .../errors.ts:6:5 - error TS21227: Property prop is not declared on Type IdxSig. + The type has a string index signature, but it is being accessed using a dotted + property access. + + 6 x.prop; // new error + + +The presence of an index signature in the type most often means that the +properties of the object that carries that type are created outside the static +property renaming scope - for example JSON.parse, or dynamic for-in loop. Thus +accessing them without a quoted index signature will result in an incorrect +optimization. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts index 22da857a28..1e0ea3a1f6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts @@ -1,7 +1,15 @@ +/** + * Error codes for tsetse checks. + * + * Start with 21222 and increase linearly. + * The intent is for these codes to be fixed, so that tsetse users can + * search for them in user forums and other media. + */ export enum ErrorCode { CHECK_RETURN_VALUE = 21222, EQUALS_NAN = 21223, BAN_EXPECT_TRUTHY_PROMISE = 21224, MUST_USE_PROMISES = 21225, BAN_PROMISE_AS_CONDITION = 21226, + PROPERTY_RENAMING_SAFE = 21227, } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/property_renaming_safe.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/property_renaming_safe.ts new file mode 100644 index 0000000000..7b842442b6 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/property_renaming_safe.ts @@ -0,0 +1,54 @@ + +import * as ts from 'typescript'; + +import {Checker} from '../checker'; +import {ErrorCode} from '../error_code'; +import {AbstractRule} from '../rule'; + +/** + * A Tsetse rule that checks for some potential unsafe property renaming + * patterns. + * + * Note: This rule can have false positives. + */ +export class Rule extends AbstractRule { + readonly ruleName = 'property-renaming-safe'; + readonly code = ErrorCode.PROPERTY_RENAMING_SAFE; + + register(checker: Checker) { + checker.on( + ts.SyntaxKind.PropertyAccessExpression, + checkIndexSignAccessedWithPropAccess, this.code); + } +} + +// Copied from tsickle/src/quoting_transformer.ts, with the intention of +// removing it from there and only keeping a tsetse rule about this. +function checkIndexSignAccessedWithPropAccess( + checker: Checker, pae: ts.PropertyAccessExpression) { + // Reject dotted accesses to types that have an index type declared to quoted + // accesses, to avoid Closure renaming one access but not the other. This can + // happen because TS allows dotted access to string index types. + const typeChecker = checker.typeChecker; + const t = typeChecker.getTypeAtLocation(pae.expression); + if (!t.getStringIndexType()) return; + // Types can have string index signatures and declared properties (of the + // matching type). These properties have a symbol, as opposed to pure string + // index types. + const propSym = typeChecker.getSymbolAtLocation(pae.name); + // The decision to return below is a judgement call. Presumably, in most + // situations, dotted access to a property is correct, and should not be + // turned into quoted access even if there is a string index on the type. + // However it is possible to construct programs where this is incorrect, e.g. + // where user code assigns into a property through the index access in another + // location. + if (propSym) return; + + checker.addFailureAtNode( + pae.name, + `Property ${pae.name.text} is not declared on Type ` + + `${typeChecker.typeToString(t)}. The type has a string index ` + + `signature, but it is being accessed using a dotted property ` + + `access. +See http://tsetse.info/property-renaming-safe.`); +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/property_renaming_safe/errors.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/property_renaming_safe/errors.ts new file mode 100644 index 0000000000..b4ed844d6a --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/property_renaming_safe/errors.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +interface IdxSig { + [key: string]: string; +} + +function propAccess(x: IdxSig) { + x.prop; // error + x['prop']; // ok +} + +function descructuring(x: IdxSig) { + const {prop} = x; // ok, but should be an error. +} + +interface MixedIdxSig extends IdxSig { + namedProp: string; +} + +function mixedPropAccess(x: MixedIdxSig) { + x.namedProp; // ok + x['namedProp']; // ok + x.prop; // error + x['prop']; // ok +} + +function genericAccess(x: T) { + x.prop; // error + x['prop']; // ok +} + +interface MixedIndexSigUsedInUnion { + [key: string]: string; + namedProp2: string; +} + +function unionType(x: MixedIdxSig|MixedIndexSigUsedInUnion) { + x.prop; // error + x['prop']; // ok +} + +/** + * Curiously Record is treated like an index signature. + */ +function recordStringType(x: Record) { + x.prop; // error + x['prop']; // ok +} + +/** + * But narrowing the generic parameter to a string literal union exempts it. + */ +function recordNarrowType(x: Record<'prop'|'other', number>) { + x.prop; // ok + x['prop']; // ok +} + +/** + * Similary, to Records mapped types of of 'in string' are threated like a + * string index signature. + */ +function mappedType(x: {[x in string]: boolean}) { + x.prop; // error + x['prop']; // ok +} From 376fd3c44df670e004a15b7f2297eaaddb5abc7f Mon Sep 17 00:00:00 2001 From: alexeagle Date: Wed, 6 Mar 2019 09:30:48 -0800 Subject: [PATCH 0561/1134] Add a bzl_library rule for internal .bzl files This allows them to be referenced by stardoc generation in downstream repositories. PiperOrigin-RevId: 237062318 --- .../bazelbuild/rules_typescript/internal/BUILD.bazel | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 698cef0108..a8c65c2d97 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -15,18 +15,26 @@ # gazelle:exclude worker_protocol.proto load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test", "nodejs_binary") +load("@bazel_skylib//:bzl_library.bzl", "bzl_library") load("//internal:defaults.bzl", "ts_library") package(default_visibility = ["//visibility:public"]) exports_files([ # Exported to be consumed for generating skydoc. + # TODO(alexeagle): remove this after migration to stardoc "build_defs.bzl", "ts_config.bzl", "ts_repositories.bzl", "tsetse/tsconfig.json", ]) +bzl_library( + name = "bzl", + srcs = glob(["common/*.bzl"]), + visibility = ["//visibility:public"], +) + # Vanilla typescript compiler: run the tsc.js binary distributed by TypeScript nodejs_binary( name = "tsc", From 4ed6c6fe3bd8bdbc2ae452d5a0c192b623d12262 Mon Sep 17 00:00:00 2001 From: radokirov Date: Thu, 7 Mar 2019 16:27:37 -0800 Subject: [PATCH 0562/1134] Upgrade to compile with TS 3.3.3333 ts.compilerHost.getDirectories is now an optional field, so wrap access in a nullablity check. PiperOrigin-RevId: 237350326 --- .../rules_typescript/internal/tsc_wrapped/compiler_host.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index 04c35fd081..911b82e3f0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -582,7 +582,8 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { } getDirectories(path: string) { - return this.delegate.getDirectories(path); + return this.delegate.getDirectories ? this.delegate.getDirectories(path) : + []; } readFile(fileName: string): string|undefined { From 9139b935d64301cb9cc313cb6d844668ff6f9c59 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 11 Mar 2019 15:17:25 -0700 Subject: [PATCH 0563/1134] Tear out publishing-related bits These are now in rules_nodejs. We no longer publish releases from rules_typescript repo. Closes #435 PiperOrigin-RevId: 237893800 --- .../bazelbuild/rules_typescript/DEVELOPING.md | 50 --- .../bazelbuild/rules_typescript/README.md | 313 +----------------- .../bazelbuild/rules_typescript/WORKSPACE | 9 - .../bazelbuild/rules_typescript/defs.bzl | 2 - .../rules_typescript/devserver/BUILD.bazel | 52 +-- .../rules_typescript/docs/BUILD.bazel | 18 - .../rules_typescript/internal/BUILD.bazel | 9 +- .../internal/protobufjs/BUILD.bazel | 10 - .../bazelbuild/rules_typescript/package.bzl | 7 - .../bazelbuild/rules_typescript/package.json | 33 +- .../rules_typescript/ts_auto_deps/BUILD.bazel | 8 - .../bazelbuild/rules_typescript/version.bzl | 55 --- 12 files changed, 23 insertions(+), 543 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/BUILD.bazel diff --git a/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md b/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md deleted file mode 100644 index fcfbee87b6..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/DEVELOPING.md +++ /dev/null @@ -1,50 +0,0 @@ -# For Developers - -We strongly encourage you to review the project's scope described in the `README.md` file before working on new features. For large changes, consider writing a design document using [this template](https://goo.gl/YCQttR). - -## Testing changing downstream - -By default, downstream projects use both an `http_archive` of `npm_bazel_typescript` and the released `@bazel/typescript` and `@bazel/karma` npm packages. `postinstall` steps in these npm packages check that the version of the `npm_bazel_typescript` is compatible with the version of the npm package(s). - -For example, if a downstream `WORKSPACE` contain: - -```python -http_archive( - name = "npm_bazel_typescript", - url = "https://github.com/bazelbuild/rules_typescript/archive/0.21.0.zip", - strip_prefix = "rules_typescript-0.21.0", -) -``` - -that that project's `package.json` would contain the matching: - -```json -"@bazel/typescript": "0.21.0", -"@bazel/karma": "0.21.0", -``` - -When authoring changes and testing downstream, depending on the `@bazel/typescript` and `@bazel/karma` npm packages makes the workflow confusing and difficult. -To make authoring and testing changes downstream easier, it is recommended that you override the default `compiler` attribute of `ts_library` if making changes -to `ts_library` and the default `karma` attribute of `ts_web_test_suite`/`ts_web_test` if making changes to those rules. - -For example, in `/internal/build_defs.bzl`, change - -```python -"compiler": attr.label( - default = Label(_DEFAULT_COMPILER), -``` - -to - -```python -"compiler": attr.label( - default = Label("@npm_bazel_typescript//internal:tsc_wrapped_bin"), -``` - -The correct defaults to use so that you are not depending on the npm package downstream are in `/internal/defaults.bzl`. Note, your downstream -workspace will also need the correct `@npm` dependencies available to build these targets (see `internal/e2e/typescript_3.1/package.json`). -In the case of the `angular` workspace, some `@npm` dependencies in this repository will also need to be changed to `@ngdeps` since `angular` does not have -an `@npm` workspace with npm dependencies. - -Note, with this workflow the downstream version of `@npm//typescript` will be used to compile the `ts_library` targets in `npm_bazel_typescript`. -An example of this can be found under `internal/e2e/typescript_3.1`. diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 044cb3890f..8c999b34fd 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -1,307 +1,18 @@ -# TypeScript rules for Bazel +# build_bazel_rules_typescript -Circle CI | Bazel CI -:---: | :---: -[![CircleCI](https://circleci.com/gh/bazelbuild/rules_typescript.svg?style=svg)](https://circleci.com/gh/bazelbuild/rules_typescript) | [![Build status](https://badge.buildkite.com/7f98e137cd86baa5a4040a7e750bef87ef5fd293092fdaf878.svg)](https://buildkite.com/bazel/typescript-rules-typescript-postsubmit) +> Looking for documentation for TypeScript bazel rules that used to be here? +> See https://npmjs.com/package/@bazel/typescript -**WARNING: this is beta-quality software. Breaking changes are likely. Not recommended for production use without expert support.** +This repo contains a mirror of some Google-internal bits that support TypeScript development under Bazel. -The TypeScript rules integrate the TypeScript compiler with Bazel. +It contains these utilities: -This repo used to contain Karma rules `ts_web_test` and `karma_web_test`. -These are now documented in the README at http://npmjs.com/package/@bazel/karma +- `ts_devserver`: a Go library and binary that runs a fast local web server which concatenates JavaScript on-the-fly. It requires inputs in a named module format (module ids must be contained in the file, not inferred from the file's path). +- `ts_auto_deps`: a Go library and binary which generates `BUILD.bazel` files from TypeScript sources. +- `tsc_wrapped`: a TypeScript program which wraps the TypeScript compiler, hosting it under a Bazel worker. +- `tsetse`: a collection of third-party "strictness" checks which we add to the TypeScript compiler. +- `internal/common/*.bzl`: some Starlark utility code for running the `ts_library` rule. -## API Docs +There are no user-facing bits in this repo. These utilities are consumed in https://github.com/bazelbuild/rules_nodejs/tree/master/packages/typescript -Generated documentation for using each rule is at: -http://tsetse.info/api/ - -## Installation - -First, install a current Bazel distribution. - -Add the `@bazel/typescript` npm package to your `package.json` `devDependencies`. - -``` -{ - ... - "devDependencies": { - "@bazel/typescript": "0.25.1", - ... - }, - ... -} -``` - -Create a `BUILD.bazel` file in your project root: - -```python -package(default_visibility = ["//visibility:public"]) -exports_files(["tsconfig.json"]) -``` - -Next create a `WORKSPACE` file in your project root (or edit the existing one) -containing: - -```python -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -# Fetch rules_nodejs -# (you can check https://github.com/bazelbuild/rules_nodejs for a newer release than this) -http_archive( - name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], - sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", -) - -# Setup the NodeJS toolchain -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") -node_repositories() - -# Setup Bazel managed npm dependencies with the `yarn_install` rule. -# The name of this rule should be set to `npm` so that `ts_library` -# can find your npm dependencies by default in the `@npm` workspace. You may -# also use the `npm_install` rule with a `package-lock.json` file if you prefer. -# See https://github.com/bazelbuild/rules_nodejs#dependencies for more info. -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -# Install all Bazel dependencies needed for npm packages that supply Bazel rules -load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") -install_bazel_dependencies() - -# Setup TypeScript toolchain -load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") -ts_setup_workspace() -``` - -# Self-managed npm dependencies - -We recommend you use Bazel managed dependencies but if you would like -Bazel to also install a `node_modules` in your workspace you can also -point the `node_repositories` repository rule in your WORKSPACE file to -your `package.json`. - -```python -node_repositories(package_json = ["//:package.json"]) -``` - -You can then run `yarn` in your workspace with: - -```sh -$ bazel run @nodejs//:yarn -``` - -To use your workspace `node_modules` folder as a dependency in `ts_library` and -other rules, add the following to your root `BUILD.bazel` file: - -```python -filegroup( - name = "node_modules", - srcs = glob( - include = [ - # Must include .proto files since the tsc_wrapped compiler utilizes them - "node_modules/**/*.proto", - "node_modules/**/*.js", - "node_modules/**/*.d.ts", - "node_modules/**/*.json", - "node_modules/.bin/*", - ], - exclude = [ - # Files under test & docs may contain file names that - # are not legal Bazel labels (e.g., - # node_modules/ecstatic/test/public/中文/檔案.html) - "node_modules/**/test/**", - "node_modules/**/docs/**", - # Files with spaces in the name are not legal Bazel labels - "node_modules/**/* */**", - "node_modules/**/* *", - ], - ), -) - -# Create a tsc_wrapped compiler rule to use in the ts_library -# compiler attribute when using self-managed dependencies -nodejs_binary( - name = "@bazel/typescript/tsc_wrapped", - entry_point = "@bazel/typescript/internal/tsc_wrapped/tsc_wrapped.js", - # Point bazel to your node_modules to find the entry point - node_modules = ["//:node_modules"], -) -``` - -See https://github.com/bazelbuild/rules_nodejs#dependencies for more information on -managing npm dependencies with Bazel. - -## Usage - -### Compiling TypeScript: `ts_library` - -The `ts_library` rule invokes the TypeScript compiler on one compilation unit, -or "library" (generally one directory of source files). - -Create a `BUILD` file next to your sources: - -```python -package(default_visibility=["//visibility:public"]) -load("@npm_bazel_typescript//:defs.bzl", "ts_library") - -ts_library( - name = "my_code", - srcs = glob(["*.ts"]), - deps = ["//path/to/other:library"], -) -``` - -If your ts_library target has npm dependencies you can specify these -with fine grained npm dependency targets created by the `yarn_install` or -`npm_install` rules: - -```python -ts_library( - name = "my_code", - srcs = glob(["*.ts"]), - deps = [ - "@npm//@types/node", - "@npm//@types/foo", - "@npm//foo", - "//path/to/other:library", - ], -) -``` - -You can also you the `@npm//@types` target which will include all -packages in the `@types` scope as dependencies. - -If you are using self-managed npm dependencies, you can use the -`node_modules` attribute in `ts_library` and point it to the -`//:node_modules` filegroup defined in your root `BUILD.bazel` file. -You'll also need to override the `compiler` attribute if you do this -as the Bazel-managed deps and self-managed cannot be used together -in the same rule. - -```python -ts_library( - name = "my_code", - srcs = glob(["*.ts"]), - deps = ["//path/to/other:library"], - node_modules = "//:node_modules", - compiler = "//:@bazel/typescript/tsc_wrapped", -) -``` - -To build a `ts_library` target run: - -`bazel build //path/to/package:target` - -The resulting `.d.ts` file paths will be printed. Additionally, the `.js` -outputs from TypeScript will be written to disk, next to the `.d.ts` files 1. - -Note that the `tsconfig.json` file used for compilation should be the same one -your editor references, to keep consistent settings for the TypeScript compiler. -By default, `ts_library` uses the `tsconfig.json` file in the workspace root -directory. See the notes about the `tsconfig` attribute in the [ts_library API docs]. - -> 1 The -> [declarationDir](https://www.typescriptlang.org/docs/handbook/compiler-options.html) -> compiler option will be silently overwritten if present. - -[ts_library API docs]: http://tsetse.info/api/build_defs.html#ts_library - -### Serving TypeScript for development - -There are two choices for development mode: - -1. Use the `ts_devserver` rule to bring up our simple, fast development server. - This is intentionally very simple, to help you get started quickly. However, - since there are many development servers available, we do not want to mirror - their features in yet another server we maintain. -1. Teach your real frontend server to serve files from Bazel's output directory. - This is not yet documented. Choose this option if you have an existing server - used in development mode, or if your requirements exceed what the - `ts_devserver` supports. Be careful that your development round-trip stays - fast (should be under two seconds). - -To use `ts_devserver`, you simply `load` the rule, and call it with `deps` that -point to your `ts_library` target(s): - -```python -load("@npm_bazel_typescript//:defs.bzl", "ts_devserver", "ts_library") - -ts_library( - name = "app", - srcs = ["app.ts"], -) - -ts_devserver( - name = "devserver", - # We'll collect all the devmode JS sources from these TypeScript libraries - deps = [":app"], - # This is the path we'll request from the browser, see index.html - serving_path = "/bundle.js", - # The devserver can serve our static files too - static_files = ["index.html"], -) -``` - -The `index.html` should be the same one you use for production, and it should -load the JavaScript bundle from the path indicated in `serving_path`. - -If you don't have an index.html file, a simple one will be generated by the -`ts_devserver`. - -See `examples/app` in this repository for a working example. To run the -devserver, we recommend you use [ibazel]: - -```sh -$ ibazel run examples/app:devserver -``` - -`ibazel` will keep the devserver program running, and provides a LiveReload -server so the browser refreshes the application automatically when each build -finishes. - -[ibazel]: https://github.com/bazelbuild/bazel-watcher - -## Writing TypeScript code for Bazel - -Bazel's TypeScript compiler has your workspace path mapped, so you can import -from an absolute path starting from your workspace. - -`/WORKSPACE`: -```python -workspace(name = "myworkspace") -``` - -`/some/long/path/to/deeply/nested/subdirectory.ts`: -```javascript -import {thing} from 'myworkspace/place'; -``` - -will import from `/place.ts`. - - -Since this is an extension to the vanillia TypeScript compiler, editors which use the TypeScript language services to provide code completion and inline type checking will not be able to resolve the modules. In the above example, adding -```json -"paths": { - "myworkspace/*": ["*"] -} -``` -to `tsconfig.json` will fix the imports for the common case of using absolute paths. -See https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mapping for more details on the paths syntax. - -Similarly, you can use path mapping to teach the editor how to resolve imports -from `ts_library` rules which set the `module_name` attribute. - -## Notes - -If you'd like a "watch mode", try https://github.com/bazelbuild/bazel-watcher -(note, it's also quite new). - -At some point, we plan to release a tool similar to [gazelle] to generate the -BUILD files from your source code. - -[gazelle]: https://github.com/bazelbuild/rules_go/tree/master/go/tools/gazelle +Please file issues for `ts_library` rule and other Bazel rules in that repo. diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 9ee5c20816..e6fc9e84c5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -67,20 +67,11 @@ load("//internal:ts_repositories.bzl", "ts_setup_dev_workspace") ts_setup_dev_workspace() -# Test that check_rules_typescript_version works as expected -load("//:defs.bzl", "check_rules_typescript_version") - -check_rules_typescript_version(version_string = "0.25.1") - # Dependencies for generating documentation load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") sass_repositories() -load("@io_bazel_skydoc//skylark:skylark.bzl", "skydoc_repositories") - -skydoc_repositories() - # Setup rules_webtesting toolchain load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories") diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl index 7ae01391cd..2e223e82f8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl @@ -17,14 +17,12 @@ Users should not load files under "/internal" """ -load("//:version.bzl", _check_rules_typescript_version = "check_rules_typescript_version") load("//internal/devserver:ts_devserver.bzl", _ts_devserver = "ts_devserver_macro") load("//internal/protobufjs:ts_proto_library.bzl", _ts_proto_library = "ts_proto_library") load("//internal:build_defs.bzl", _ts_library = "ts_library_macro") load("//internal:ts_config.bzl", _ts_config = "ts_config") load("//internal:ts_repositories.bzl", _ts_setup_workspace = "ts_setup_workspace") -check_rules_typescript_version = _check_rules_typescript_version ts_setup_workspace = _ts_setup_workspace ts_library = _ts_library ts_config = _ts_config diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/BUILD.bazel index a04d169bb8..cd02979f96 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/BUILD.bazel @@ -12,9 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -# BEGIN-DEV-ONLY -# Parts of this BUILD file only necessary when building within the bazelbuild/rules_typescript repo. -# The generated `@bazel/typescript` npm package contains a trimmed BUILD file using # DEV-ONLY fences. load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") go_library( @@ -68,47 +65,10 @@ go_binary( visibility = ["//visibility:public"], ) -filegroup( - name = "npm_package_assets", - srcs = [ - "BUILD.bazel", - ], - visibility = ["//visibility:public"], -) - -# END-DEV-ONLY -config_setting( - name = "darwin_x64", - constraint_values = [ - "@bazel_tools//platforms:osx", - "@bazel_tools//platforms:x86_64", - ], -) - -config_setting( - name = "linux_x64", - constraint_values = [ - "@bazel_tools//platforms:linux", - "@bazel_tools//platforms:x86_64", - ], -) - -config_setting( - name = "windows_x64", - constraint_values = [ - "@bazel_tools//platforms:windows", - "@bazel_tools//platforms:x86_64", - ], -) - -filegroup( - name = "devserver", - srcs = select({ - ":darwin_x64": ["devserver-darwin_x64"], - ":linux_x64": ["devserver-linux_x64"], - ":windows_x64": ["devserver-windows_x64.exe"], - }), - # Don't build on CI - tags = ["manual"], - visibility = ["//visibility:public"], +filegroup( + name = "npm_package_assets", + srcs = [ + "BUILD.bazel", + ], + visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/docs/BUILD.bazel deleted file mode 100644 index 019f3dcdd1..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/BUILD.bazel +++ /dev/null @@ -1,18 +0,0 @@ -load("@io_bazel_skydoc//skylark:skylark.bzl", "skylark_doc") - -skylark_doc( - name = "docs", - srcs = [ - "//internal:build_defs.bzl", - "//internal:ts_config.bzl", - "//internal:ts_repositories.bzl", - "//internal/devserver:ts_devserver.bzl", - "//internal/protobufjs:ts_proto_library.bzl", - ], - format = "html", - # The site is served at http://tsetse.info so the URL doesn't include a - # /rules_typescript segment. - # TODO(alexeagle): separate Tsetse docs from the rest of rules_typescript - site_root = "/api", - strip_prefix = "internal/", -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index a8c65c2d97..8b42aa89e1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -20,14 +20,7 @@ load("//internal:defaults.bzl", "ts_library") package(default_visibility = ["//visibility:public"]) -exports_files([ - # Exported to be consumed for generating skydoc. - # TODO(alexeagle): remove this after migration to stardoc - "build_defs.bzl", - "ts_config.bzl", - "ts_repositories.bzl", - "tsetse/tsconfig.json", -]) +exports_files(["tsetse/tsconfig.json"]) bzl_library( name = "bzl", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/BUILD.bazel index b9ce1610fc..ae06e171af 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/BUILD.bazel @@ -67,13 +67,3 @@ nodejs_binary( entry_point = "protobufjs/bin/pbts", install_source_map_support = False, ) - -filegroup( - name = "npm_package_assets", - srcs = [ - "BUILD.bazel", - "package.json", - "ts_proto_library.bzl", - "yarn.lock", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index 900d106ca9..e19ba502f3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -103,13 +103,6 @@ def rules_typescript_dev_dependencies(): sha256 = "894d7928df8da85e263d743c8434d4c10ab0a3f0708fed0d53394e688e3faf70", ) - http_archive( - name = "io_bazel_skydoc", - url = "https://github.com/bazelbuild/skydoc/archive/82fdbfe797c6591d8732df0c0389a2b1c3e50992.zip", # 2018-12-12 - strip_prefix = "skydoc-82fdbfe797c6591d8732df0c0389a2b1c3e50992", - sha256 = "75fd965a71ca1f0d0406d0d0fb0964d24090146a853f58b432761a1a6c6b47b9", - ) - def _maybe(repo_rule, name, **kwargs): if name not in native.existing_rules(): repo_rule(name = name, **kwargs) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index b4834d140c..dd1a0292f5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -1,27 +1,12 @@ { - "name": "@bazel/typescript", - "description": "TypeScript rules for Bazel", + "private": true, "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", - "version": "0.25.1", - "keywords": [ - "typescript", - "bazel" - ], - "main": "./internal/tsc_wrapped/index.js", - "typings": "./internal/tsc_wrapped/index.d.ts", - "bin": { - "ts_auto_deps": "./ts_auto_deps/ts_auto_deps.js", - "tsc_wrapped": "./internal/tsc_wrapped/tsc_wrapped.js" - }, - "dependencies": { + "devDependencies": { "protobufjs": "5.0.3", "semver": "5.6.0", "source-map-support": "0.5.9", "tsutils": "2.27.2", - "jasmine-core": "2.8.0" - }, - "devDependencies": { "@bazel/bazel": "~0.22.0", "@bazel/buildifier": "^0.20.0", "@bazel/ibazel": "^0.2.0", @@ -34,6 +19,7 @@ "clang-format": "1.0.49", "concurrently": "^3.5.1", "http-server": "^0.11.1", + "jasmine-core": "2.8.0", "karma": "^4.0.0", "karma-chrome-launcher": "2.2.0", "karma-firefox-launcher": "1.1.0", @@ -50,23 +36,12 @@ "typescript": "~3.1.6", "which": "~1.0.5" }, - "bazelWorkspaces": { - "npm_bazel_typescript": { - "version": "0.0.0-PLACEHOLDER", - "compatVersion": "0.0.0-COMPAT_VERSION", - "rootPath": "." - } - }, "scripts": { "pree2e": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG && bazel build //examples/app:e2e //examples/protocol_buffers:e2e", "e2e": "yarn e2e-examples-app-devserver && yarn e2e-examples-app-prodserver && yarn e2e-examples-protobuf-devserver && yarn e2e-examples-protobuf-prodserver", "e2e-examples-app-devserver": "concurrently \"bazel run //examples/app:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", "e2e-examples-app-prodserver": "concurrently \"bazel run //examples/app:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", "e2e-examples-protobuf-devserver": "concurrently \"bazel run //examples/protocol_buffers:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first", - "e2e-examples-protobuf-prodserver": "concurrently \"bazel run //examples/protocol_buffers:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first", - "skydoc": "bazel build //docs && unzip -o -d docs/api bazel-bin/docs/docs-skydoc.zip", - "bazel:format": "find . -type f \\( -name \"*.bzl\" -or -name WORKSPACE -or -name BUILD -or -name BUILD.bazel \\) ! -path \"*/node_modules/*\" | xargs buildifier -v --warnings=args-order,attr-cfg,attr-license,attr-non-empty,attr-output-default,attr-single-file,constant-glob,ctx-actions,ctx-args,depset-iteration,depset-union,dict-concatenation,duplicated-name,filetype,git-repository,http-archive,integer-division,load,load-on-top,native-build,native-package,out-of-order-load,output-group,package-name,package-on-top,positional-args,redefined-variable,repository-name,same-origin-load,string-iteration,unsorted-dict-items,unused-variable", - "bazel:lint": "yarn bazel:format --lint=warn", - "bazel:lint-fix": "yarn bazel:format --lint=fix" + "e2e-examples-protobuf-prodserver": "concurrently \"bazel run //examples/protocol_buffers:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first" } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel index a1e0f2dfad..b71e8a142a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel @@ -46,11 +46,3 @@ go_binary( pure = "on", visibility = ["//visibility:public"], ) - -filegroup( - name = "npm_package_assets", - srcs = [ - "ts_auto_deps.js", - ], - visibility = ["//visibility:public"], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/version.bzl b/third_party/github.com/bazelbuild/rules_typescript/version.bzl index f29533254a..35f5df8255 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/version.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/version.bzl @@ -1,56 +1 @@ -# Copyright 2018 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Package file which defines npm_bazel_typescript version in skylark -""" - -load("@build_bazel_rules_nodejs//internal/common:check_version.bzl", "check_version") - -VERSION = "0.25.1" - -# This version is the minimum version that is API compatible with this version -# of rules_typescript. This version should be updated to equal VERSION for -# releases with breaking changes and/or new features. COMPAT_VERSION = "0.25.0" - -def check_rules_typescript_version(version_string): - """ - Verify that a compatible npm_bazel_typescript is loaded a WORKSPACE. - - Where COMPAT_VERSION and VERSION come from the npm_bazel_typescript that - is loaded in a WORKSPACE, this function will check: - - VERSION >= version_string >= COMPAT_VERSION - - This should be called from the `WORKSPACE` file so that the build fails as - early as possible. For example: - - ``` - # in WORKSPACE: - load("@npm_bazel_typescript//:defs.bzl", "check_rules_typescript_version") - check_rules_typescript_version(version_string = "0.22.0") - ``` - - Args: - version_string: A version string to check for compatibility with the loaded version - of npm_bazel_typescript. The version check performed is - `VERSION >= version_string >= COMPAT_VERSION` where VERSION and COMPAT_VERSION - come from the loaded version of npm_bazel_typescript. - """ - if not check_version(VERSION, version_string) or not check_version(version_string, COMPAT_VERSION): - fail("\nLoaded npm_bazel_typescript version {} with mimimum compat version of {} is not compatible with checked version {}!\n\n".format( - VERSION, - COMPAT_VERSION, - version_string, - )) From 1875371a3a802794b4fda42b9ca30f6a12b72292 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Tue, 12 Mar 2019 11:02:07 -0700 Subject: [PATCH 0564/1134] Fix downstream @bazel/typescript package It was picking up a build file containing a rules_go dependency. This was caught by our new Renovate setup which sent a red PR: https://circleci.com/gh/bazelbuild/rules_nodejs/5625#tests/containers/3 Closes #437 PiperOrigin-RevId: 238052911 --- .../github.com/bazelbuild/rules_typescript/BUILD.bazel | 1 - .../bazelbuild/rules_typescript/devserver/BUILD.bazel | 8 -------- 2 files changed, 9 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index ace9f178ae..74d8f24813 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -59,7 +59,6 @@ js_library( npm_package( name = "npm_bazel_typescript_package", srcs = [ - "//devserver:npm_package_assets", "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:npm_package_assets", "//internal:common/compilation.bzl", "//internal:common/json_marshal.bzl", diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/devserver/BUILD.bazel index cd02979f96..b822549ead 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/BUILD.bazel @@ -64,11 +64,3 @@ go_binary( pure = "on", visibility = ["//visibility:public"], ) - -filegroup( - name = "npm_package_assets", - srcs = [ - "BUILD.bazel", - ], - visibility = ["//visibility:public"], -) From 309a8be3fe979c51d67457c6d3f46b2c797bb8cc Mon Sep 17 00:00:00 2001 From: lucassloan Date: Fri, 15 Mar 2019 14:17:06 -0700 Subject: [PATCH 0565/1134] Support aliases and reexporting ts_libraries for ordinary imports. Instead of querying directly for rules with a given source file in their srcs, load all the rules in the package, and check for aliases and reexporting ts_libraries. PiperOrigin-RevId: 238708950 --- .../ts_auto_deps/analyze/analyze.go | 42 +- .../ts_auto_deps/analyze/loader.go | 372 +++++++++++++----- .../ts_auto_deps/analyze/loader_test.go | 62 ++- 3 files changed, 338 insertions(+), 138 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go index 475ab3e3e3..a80a55434b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go @@ -371,26 +371,6 @@ func pathWithExtensions(basename string) []string { var ambientModuleDeclRE = regexp.MustCompile("(?m)^\\s*declare\\s+module\\s+['\"]([^'\"]+)['\"]\\s+\\{") -// pathStartsWith checks if path starts with prefix, checking each path segment, -// so that @angular/core starts with @angular/core, but @angular/core-bananas -// does not -func pathStartsWith(path, prefix string) bool { - pathParts := strings.Split(path, string(os.PathSeparator)) - prefixParts := strings.Split(prefix, string(os.PathSeparator)) - - if len(prefixParts) > len(pathParts) { - return false - } - - for i, prefixPart := range prefixParts { - if prefixPart != pathParts[i] { - return false - } - } - - return true -} - // findExistingDepProvidingImport looks through a map of the existing deps to // see if any of them provide the import in a way that can't be queried // for. E.g. if the build rule has a "module_name" attribute or if one @@ -405,28 +385,10 @@ func (a *Analyzer) findExistingDepProvidingImport(ctx context.Context, root stri // check if any of the existing deps declare a module_name that matches the import for _, r := range rt.dependencies { - moduleName := stringAttribute(r, "module_name") - if moduleName == "" { - continue - } - if !pathStartsWith(i.importPath, moduleName) { + resolvedImportPath := resolveAgainstModuleRoot(r, i.importPath) + if resolvedImportPath == i.importPath { continue } - // fmt.Printf("checking if %s is provided by %s\n", i.importPath, moduleName) - // if module root is a file, remove the file extension, since it'll be added - // by possibleFilepaths below - moduleRoot := stripTSExtension(stringAttribute(r, "module_root")) - _, pkg, _ := edit.ParseLabel(r.GetName()) - - // resolve the import path against the module name and module root, ie if - // the import path is @foo/bar and there's a moduleName of @foo the resolved - // import path is location/of/foo/bar, or if there's also a moduleRoot of - // baz, the resolved import path is location/of/foo/baz/bar - // - // using strings.TrimPrefix for trimming the path is ok, since - // pathStartsWith already checked that moduleName is a proper prefix of - // i.importPath - resolvedImportPath := filepath.Join(pkg, moduleRoot, strings.TrimPrefix(i.importPath, moduleName)) // enumerate all the possible filepaths for the resolved import path, and // compare against all the srcs diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go index d522017140..ff9e9eb1c7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go @@ -158,30 +158,42 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg results := make(map[string]*appb.Rule) addedPaths := make(map[string]bool) - var possiblePaths []string + var possibleFilePaths []string + possiblePathToPath := make(map[string]string) + // for all the normalized typescript import paths, generate all the possible + // corresponding file paths for _, path := range paths { if strings.HasPrefix(path, "goog:") { // 'goog:' imports are resolved using an sstable. results[path] = nil continue } - if !strings.HasPrefix(path, "@") { - if _, ok := addedPaths[path]; !ok { - addedPaths[path] = true + if strings.HasPrefix(path, "@") { + continue + } + + if _, ok := addedPaths[path]; !ok { + addedPaths[path] = true - // there isn't a one to one mapping from ts import paths to file - // paths, so look for all the possible file paths - possiblePaths = append(possiblePaths, possibleFilepaths(path)...) + // there isn't a one to one mapping from ts import paths to file + // paths, so look for all the possible file paths + pfs := possibleFilepaths(path) + possibleFilePaths = append(possibleFilePaths, pfs...) + for _, pf := range pfs { + possiblePathToPath[pf] = path } } } - r, err := q.batchQuery(possiblePaths) + // query for all the possible filepaths, to determine which ones are real + r, err := q.batchQuery(possibleFilePaths) if err != nil { return nil, err } - var fileLabels, generators []string - generatorsToFiles := make(map[string][]*appb.GeneratedFile) + var fileLabels, packages []string + fileToGeneratorLabel := make(map[string]string) + pathToLabels := make(map[string][]string) + // get the labels for all the files which exist for _, target := range r.GetTarget() { label, err := q.fileLabel(target) if err != nil { @@ -191,50 +203,64 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg case appb.Target_GENERATED_FILE: file := target.GetGeneratedFile() generator := file.GetGeneratingRule() + label = file.GetName() + fileLabels = append(fileLabels, label) + _, pkg, _ := edit.ParseLabel(label) + packages = append(packages, pkg) // a generated file can be included as a source by referencing the label // of the generated file, or the label of the generating rule, so check // for both - fileLabels = append(fileLabels, file.GetName()) - generators = append(generators, generator) - generatorsToFiles[generator] = append(generatorsToFiles[generator], file) + fileToGeneratorLabel[labelToPath(label)] = labelToPath(generator) + pathToLabels[possiblePathToPath[labelToPath(label)]] = append(pathToLabels[possiblePathToPath[labelToPath(label)]], label) case appb.Target_SOURCE_FILE: fileLabels = append(fileLabels, label) + _, pkg, _ := edit.ParseLabel(label) + packages = append(packages, pkg) + pathToLabels[possiblePathToPath[labelToPath(label)]] = append(pathToLabels[possiblePathToPath[labelToPath(label)]], label) } } - filepathToRules := make(map[string][]*appb.Rule) - - // load all the rules with file srcs (either literal or generated) - sourceLabelToRules, err := q.loadRulesWithSources(workspaceRoot, fileLabels) + // load all the rules in all the packages files were found in, so we can look + // for aliases and reexporting libraries in the same package + pkgToAllRules, pkgToActualToAlias, err := q.loadAllRulesInPackages("", packages) if err != nil { return nil, err } - for label, rules := range sourceLabelToRules { - for _, rule := range rules { - filepathToRules[labelToPath(label)] = append(filepathToRules[labelToPath(label)], rule) - } - } - - // load all the rules with generator rule srcs - generatorLabelToRules, err := q.loadRulesWithSources(workspaceRoot, generators) - if err != nil { - return nil, err - } - for label, rules := range generatorLabelToRules { - for _, rule := range rules { - for _, generated := range generatorsToFiles[label] { - filepathToRules[labelToPath(generated.GetName())] = append(filepathToRules[labelToPath(generated.GetName())], rule) - } - } - } for _, path := range paths { - // check all the possible file paths for the import path - for _, fp := range possibleFilepaths(path) { - if rules, ok := filepathToRules[fp]; ok { - rule := chooseCanonicalRule(rules) - results[path] = rule + // look up the corresponding file label(s) for the normalized typescript + // import path + for _, label := range pathToLabels[path] { + _, pkg, _ := edit.ParseLabel(label) + // get the file path that corresponds to the normalized typescript import + // path + filePath := labelToPath(label) + var matchingDeps []*appb.Rule + allRules := pkgToAllRules[pkg] + actualToAlias := pkgToActualToAlias[pkg] + for _, candidate := range typeScriptRules(allRules) { + // check if the rule has the file or the generator of the file in its + // srcs + possibleSources := []string{filePath} + if gl, ok := fileToGeneratorLabel[filePath]; ok { + possibleSources = append(possibleSources, gl) + } + provides, err := q.ruleProvidesImports(candidate, srcsContainsAnyFilePath(possibleSources)) + if err != nil { + return nil, err + } + if !provides { + continue + } + + if alias, ok := actualToAlias[candidate.GetName()]; ok { + candidate = alias + } + matchingDeps = append(matchingDeps, candidate) + } + if len(matchingDeps) > 0 { + results[path] = chooseCanonicalRule(matchingDeps) } } } @@ -243,14 +269,12 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg } // chooseCanonicalRule chooses between rules which includes the imported file as -// a source. It applies heuristics, such as prefering ts_library to other rule -// types to narrow down the choices. After narrowing, it chooses the first -// rule. If no rules are left after narrowing, it returns the first rule from -// the original list. +// a source. func chooseCanonicalRule(rules []*appb.Rule) *appb.Rule { - // filter down to only ts_library rules + // if any of the rules is a reexporting lib assume that the reexport was + // created for a reason for _, r := range rules { - if r.GetRuleClass() == "ts_library" { + if isReexportingLib(r) { return r } } @@ -300,44 +324,6 @@ func (q *QueryBasedTargetLoader) targetLabel(target *appb.Target) (string, error } } -// loadRulesWithSources loads all rules which include the labels in sources as -// srcs attributes. Returns a map from source label to a list of rules which -// include it. A source label can be the label of a source file or a generated -// file or a generating rule. -func (q *QueryBasedTargetLoader) loadRulesWithSources(workspaceRoot string, sources []string) (map[string][]*appb.Rule, error) { - pkgToLabels := make(map[string][]string) - queries := make([]string, 0, len(sources)) - for _, label := range sources { - _, pkg, file := edit.ParseLabel(label) - pkgToLabels[pkg] = append(pkgToLabels[pkg], label) - // Query for all targets in the package which use file. - queries = append(queries, fmt.Sprintf("attr('srcs', %s, //%s:*)", file, pkg)) - } - r, err := q.batchQuery(queries) - if err != nil { - return nil, err - } - labelToRules := make(map[string][]*appb.Rule) - for _, target := range r.GetTarget() { - label, err := q.ruleLabel(target) - if err != nil { - return nil, err - } - rule := target.GetRule() - _, pkg, _ := edit.ParseLabel(label) - labels := pkgToLabels[pkg] - for _, src := range listAttribute(rule, "srcs") { - for _, l := range labels { - if src == l { - labelToRules[l] = append(labelToRules[l], rule) - break - } - } - } - } - return labelToRules, nil -} - // batchQuery runs a set of queries with a single call to Bazel query and the // '--keep_going' flag. func (q *QueryBasedTargetLoader) batchQuery(queries []string) (*appb.QueryResult, error) { @@ -388,6 +374,180 @@ func (q *QueryBasedTargetLoader) query(args ...string) (*appb.QueryResult, error return &result, nil } +// ruleProvidesImports checks if the rule directly provides the import, or if +// it's a reexporting lib, if one of its deps does. +func (q *QueryBasedTargetLoader) ruleProvidesImports(rule *appb.Rule, srcMatcher func(rule *appb.Rule) bool) (bool, error) { + if srcMatcher(rule) { + return true, nil + } + + if !isReexportingLib(rule) { + return false, nil + } + + // if the rule is a reexporting library, load all the rules that the rule + // reexports, and check if they provide the imported paths. This only handles + // one level of reexport. + _, pkg, _ := edit.ParseLabel(rule.GetName()) + // TODO(alexeagle): Batch calls to LoadLabels. Batching calls to ruleProvidesImport + // would also be required. + exportedRules, err := q.LoadRules(pkg, exportedLabels(rule)) + if err != nil { + return false, err + } + for _, exportedRule := range exportedRules { + if srcMatcher(exportedRule) { + return true, nil + } + } + + return false, nil +} + +// exportedLabels returns the labels exported by rule. Exported labels are the +// deps of a rule if the rule is an alias. +func exportedLabels(rule *appb.Rule) []string { + var exported []string + if isReexportingLib(rule) { + exported = append(exported, listAttribute(rule, "deps")...) + } + return exported +} + +// isReexportingLib checks if a library has no sources, which the TS rules use a +// way to mark a library as an alias. +func isReexportingLib(rule *appb.Rule) bool { + return len(listAttribute(rule, "srcs")) == 0 +} + +// srcsContainsPath returns a function, which takes a rule, which returns true +// if the rule has a src which matches one of the possible filepaths for the +// provided typescript import path. +func srcsContainsPath(path string) func(rule *appb.Rule) bool { + return func(rule *appb.Rule) bool { + resolvedImportPath := resolveAgainstModuleRoot(rule, path) + + // enumerate all the possible filepaths for the resolved import path, and + // compare against all the srcs + possibleImportPaths := possibleFilepaths(resolvedImportPath) + for _, src := range listAttribute(rule, "srcs") { + for _, mi := range possibleImportPaths { + if mi == labelToPath(src) { + return true + } + } + } + + return false + } +} + +// srcsContainsFilePath returns a function which takes a rule, which returns +// true if the rule has a src which, if pathified, equals one of the filePaths. +func srcsContainsAnyFilePath(filePaths []string) func(rule *appb.Rule) bool { + return func(rule *appb.Rule) bool { + for _, filePath := range filePaths { + for _, src := range listAttribute(rule, "srcs") { + if filePath == labelToPath(src) { + return true + } + } + } + + return false + } +} + +// loadAllRulesInPackages loads all rules in all packages. +// +// If an alias or aliases are present in the package, the rules for each alias' +// 'actual' attribute are loaded and a map from each 'actual' rule to its alias +// rule is constructed. +// +// loadAllRulesInPackages returns two maps. The first map is a map from a package +// label to all of the rules in the package. The second map is a map from a +// package to the map of 'actual' rules to alias rules for that package. +func (q *QueryBasedTargetLoader) loadAllRulesInPackages(currentPkg string, packages []string) (map[string][]*appb.Rule, map[string]map[string]*appb.Rule, error) { + var missingPackages []string + for _, pkg := range packages { + if _, ok := q.pkgCache[pkgCacheKey(currentPkg, pkg)]; !ok { + missingPackages = append(missingPackages, pkg) + } + } + if len(missingPackages) > 0 { + // Load any packages not already available in the cache. + var queries []string + pkgToRules := make(map[string][]*appb.Rule) + pkgToAliasToRule := make(map[string]map[string]*appb.Rule) + for _, pkg := range missingPackages { + if currentPkg != "" { + queries = append(queries, fmt.Sprintf("visible(%s:*, %s:*)", currentPkg, pkg)) + } else { + queries = append(queries, fmt.Sprintf("%s:*", pkg)) + } + pkgToAliasToRule[pkg] = make(map[string]*appb.Rule) + } + r, err := q.batchQuery(queries) + if err != nil { + return nil, nil, err + } + actualToAlias := make(map[string]*appb.Rule) + pkgToActuals := make(map[string][]string) + for _, target := range r.GetTarget() { + if target.GetType() == appb.Target_RULE { + rule := target.GetRule() + _, pkg, _ := edit.ParseLabel(rule.GetName()) + if rule.GetRuleClass() == "alias" { + // if the package contains an alias, derefence it (but only one layer + // of aliases) + actual := stringAttribute(rule, "actual") + if actual == "" { + return nil, nil, fmt.Errorf(`alias %q missing "actual" attribute`, rule.GetName()) + } + actualToAlias[actual] = rule + pkgToActuals[pkg] = append(pkgToActuals[pkg], actual) + } else { + pkgToRules[pkg] = append(pkgToRules[pkg], rule) + } + } + } + for pkg, actuals := range pkgToActuals { + // Load all the aliased rules, checking if they're visible from the + // package where they're aliased from + resolvedActuals, err := q.LoadRules(pkg, actuals) + if err != nil { + return nil, nil, err + } + for actual, rule := range resolvedActuals { + alias := actualToAlias[actual] + _, pkg, _ := edit.ParseLabel(alias.GetName()) + pkgToAliasToRule[pkg][rule.GetName()] = alias + pkgToRules[pkg] = append(pkgToRules[pkg], rule) + } + } + for _, pkg := range missingPackages { + q.pkgCache[pkgCacheKey(currentPkg, pkg)] = &pkgCacheEntry{ + rules: pkgToRules[pkg], + aliases: pkgToAliasToRule[pkg], + } + } + } + + pkgToRules := make(map[string][]*appb.Rule) + pkgToRuleToAlias := make(map[string]map[string]*appb.Rule) + for _, pkg := range packages { + cacheEntry := q.pkgCache[pkgCacheKey(currentPkg, pkg)] + pkgToRules[pkg] = cacheEntry.rules + pkgToRuleToAlias[pkg] = cacheEntry.aliases + } + + return pkgToRules, pkgToRuleToAlias, nil +} + +func pkgCacheKey(currentPkg, pkg string) string { + return currentPkg + "|" + pkg +} + // dedupeLabels returns a new set of labels with no duplicates. func dedupeLabels(labels []string) []string { addedLabels := make(map[string]bool) @@ -420,16 +580,48 @@ func typeScriptRules(rules []*appb.Rule) []*appb.Rule { } // resolveAgainstModuleRoot resolves imported against moduleRoot and moduleName. -func resolveAgainstModuleRoot(label, moduleRoot, moduleName, imported string) string { - if moduleRoot == "" && moduleName == "" { +func resolveAgainstModuleRoot(rule *appb.Rule, imported string) string { + moduleName := stringAttribute(rule, "module_name") + if moduleName == "" { return imported } - trim := strings.TrimPrefix(imported, moduleName) - if trim == imported { + if !pathStartsWith(imported, moduleName) { return imported } - _, pkg, _ := edit.ParseLabel(label) - return platform.Normalize(filepath.Join(pkg, moduleRoot, trim)) + // if module root is a file, remove the file extension, since it'll be added + // by possibleFilepaths below + moduleRoot := stripTSExtension(stringAttribute(rule, "module_root")) + _, pkg, _ := edit.ParseLabel(rule.GetName()) + + // resolve the import path against the module name and module root, ie if + // the import path is @foo/bar and there's a moduleName of @foo the resolved + // import path is location/of/foo/bar, or if there's also a moduleRoot of + // baz, the resolved import path is location/of/foo/baz/bar + // + // using strings.TrimPrefix for trimming the path is ok, since + // pathStartsWith already checked that moduleName is a proper prefix of + // i.importPath + return platform.Normalize(filepath.Join(pkg, moduleRoot, strings.TrimPrefix(imported, moduleName))) +} + +// pathStartsWith checks if path starts with prefix, checking each path segment, +// so that @angular/core starts with @angular/core, but @angular/core-bananas +// does not +func pathStartsWith(path, prefix string) bool { + pathParts := strings.Split(path, "/") + prefixParts := strings.Split(prefix, "/") + + if len(prefixParts) > len(pathParts) { + return false + } + + for i, prefixPart := range prefixParts { + if prefixPart != pathParts[i] { + return false + } + } + + return true } // parsePackageName parses and returns the scope and package of imported. For diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader_test.go index ddb460cb54..57651290ca 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader_test.go @@ -10,17 +10,63 @@ import ( func TestResolveAgainstModuleRoot(t *testing.T) { tests := []struct { - label, moduleRoot, moduleName, imported string - expectedResolution string + ruleLiteral string + imported string + expected string }{ - {"//a", "", "", "foo", "foo"}, - {"//b", "", "foo", "bar", "bar"}, - {"//c", "", "foo", "foo/bar", "c/bar"}, - {"//actual/loc:target", "mod/root", "foo/bar", "foo/bar/baz/bam", "actual/loc/mod/root/baz/bam"}, + { + ruleLiteral: `name: "//a" + rule_class: "ts_library"`, + imported: "foo", + expected: "foo", + }, + { + ruleLiteral: `name: "//b" + rule_class: "ts_library" + attribute: < + type: 4 + name: "module_name" + string_value: "foo" + >`, + imported: "bar", + expected: "bar", + }, + { + ruleLiteral: `name: "//c" + rule_class: "ts_library" + attribute: < + type: 4 + name: "module_name" + string_value: "foo" + >`, + imported: "foo/bar", + expected: "c/bar", + }, + { + ruleLiteral: `name: "//actual/loc:target" + rule_class: "ts_library" + attribute: < + type: 4 + name: "module_name" + string_value: "foo/bar" + > + attribute: < + type: 4 + name: "module_root" + string_value: "mod/root" + >`, + imported: "foo/bar/baz/bam", + expected: "actual/loc/mod/root/baz/bam", + }, } for _, test := range tests { - if resolution := resolveAgainstModuleRoot(test.label, test.moduleRoot, test.moduleName, test.imported); resolution != test.expectedResolution { - t.Errorf("resolveAgainstModuleRoot(%q): got %q, want %q", test.label, resolution, test.expectedResolution) + rule, err := parseRuleLiteral(test.ruleLiteral) + if err != nil { + t.Errorf("isRuleAnAlias(%q): failed to parse literal: %s", test.ruleLiteral, err) + continue + } + if actual := resolveAgainstModuleRoot(rule, test.imported); actual != test.expected { + t.Errorf("resolveAgainstModuleRoot(%q): got %q, want %q", rule.GetName(), actual, test.expected) } } } From d71d6debcd66d0d833498fed3455cb0ebf0712e1 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Tue, 19 Mar 2019 09:36:31 -0700 Subject: [PATCH 0566/1134] Use the canonical name for JS modules in node_modules Closes #438 PiperOrigin-RevId: 239207994 --- .../rules_typescript/internal/tsc_wrapped/compiler_host.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index 911b82e3f0..e0b2d0318a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -340,6 +340,10 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { } } + if (fileName.startsWith('node_modules/')) { + return fileName.substring('node_modules/'.length); + } + // path/to/file -> // myWorkspace/path/to/file return path.posix.join(workspace, fileName); From d747d55f0ebf6384faa277e1db4ba258a47e9c3f Mon Sep 17 00:00:00 2001 From: lucassloan Date: Fri, 22 Mar 2019 11:08:20 -0700 Subject: [PATCH 0567/1134] Check for visibiliy, don't just assume reexports should be used. To save a query, I used a heuristic to choose between rules if more than one provided a given path. Global taze revealed some cases where the heuristic was wrong. PiperOrigin-RevId: 239827591 --- .../ts_auto_deps/analyze/loader.go | 56 ++++++++++++++++--- 1 file changed, 47 insertions(+), 9 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go index ff9e9eb1c7..99a6877eba 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go @@ -260,7 +260,11 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg matchingDeps = append(matchingDeps, candidate) } if len(matchingDeps) > 0 { - results[path] = chooseCanonicalRule(matchingDeps) + canonicalRule, err := q.chooseCanonicalRule(currentPkg, matchingDeps) + if err != nil { + return nil, err + } + results[path] = canonicalRule } } } @@ -268,19 +272,53 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg return results, nil } -// chooseCanonicalRule chooses between rules which includes the imported file as -// a source. -func chooseCanonicalRule(rules []*appb.Rule) *appb.Rule { - // if any of the rules is a reexporting lib assume that the reexport was - // created for a reason +// chooseCanonicalRule chooses between rules which include the imported file as +// a source (ie the rule that includes the file as a src, and any reexporting +// libraries). +// +// It filters the rules in a 2 stage process: +// +// 1. If only one of the rules is visible, choose that one, since the rule +// creator intended it to be imported. +// +// 2. If all or none of the rules are visible, choose the rule that directly +// includes the file as a src, since that reduces the chance of introducing +// circular dependencies. +func (q *QueryBasedTargetLoader) chooseCanonicalRule(currentPkg string, rules []*appb.Rule) (*appb.Rule, error) { + // check for visibility + var labels []string + for _, r := range rules { + labels = append(labels, r.GetName()) + } + visibleRulesMap, err := q.LoadRules(currentPkg, labels) + if err != nil { + return nil, err + } + + var visibleRules []*appb.Rule + for _, r := range visibleRulesMap { + if r != nil { + visibleRules = append(visibleRules, r) + } + } + + if len(visibleRules) == 1 { + return visibleRules[0], nil + } else if len(visibleRules) > 0 { + rules = visibleRules + } + + // if there's a visible reexporting lib and a visible lib with the src, favor + // the lib with the src, to reduce the chance of introducing a circular + // dependency for _, r := range rules { - if isReexportingLib(r) { - return r + if !isReexportingLib(r) { + return r, nil } } // if no rules matched the filter, just return the first rule - return rules[0] + return rules[0], nil } // ruleLabel returns the label for a target which is a rule. Returns an error if From 820e5a983544fb46c17f921053292ca13687c929 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Fri, 22 Mar 2019 11:19:59 -0700 Subject: [PATCH 0568/1134] Fix a bug where taze couldn't handle the import of a file and its ngsummary. PiperOrigin-RevId: 239829941 --- .../ts_auto_deps/analyze/loader.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go index 99a6877eba..2dd6d3a671 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go @@ -159,7 +159,7 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg addedPaths := make(map[string]bool) var possibleFilePaths []string - possiblePathToPath := make(map[string]string) + possiblePathToPaths := make(map[string][]string) // for all the normalized typescript import paths, generate all the possible // corresponding file paths for _, path := range paths { @@ -179,8 +179,10 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg // paths, so look for all the possible file paths pfs := possibleFilepaths(path) possibleFilePaths = append(possibleFilePaths, pfs...) + // map the file paths back to the import paths so we can map the file + // labels back to the import paths for _, pf := range pfs { - possiblePathToPath[pf] = path + possiblePathToPaths[pf] = append(possiblePathToPaths[pf], path) } } } @@ -212,12 +214,20 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg // of the generated file, or the label of the generating rule, so check // for both fileToGeneratorLabel[labelToPath(label)] = labelToPath(generator) - pathToLabels[possiblePathToPath[labelToPath(label)]] = append(pathToLabels[possiblePathToPath[labelToPath(label)]], label) + // map file label back to the import paths so that they can be looked for + // in the srcs of the rules + for _, path := range possiblePathToPaths[labelToPath(label)] { + pathToLabels[path] = append(pathToLabels[path], label) + } case appb.Target_SOURCE_FILE: fileLabels = append(fileLabels, label) _, pkg, _ := edit.ParseLabel(label) packages = append(packages, pkg) - pathToLabels[possiblePathToPath[labelToPath(label)]] = append(pathToLabels[possiblePathToPath[labelToPath(label)]], label) + // map file label back to the import paths so that they can be looked for + // in the srcs of the rules + for _, path := range possiblePathToPaths[labelToPath(label)] { + pathToLabels[path] = append(pathToLabels[path], label) + } } } From 4ce03bf6461d9cf2a99869c6f48a36824566e0d5 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Fri, 22 Mar 2019 13:45:20 -0700 Subject: [PATCH 0569/1134] Fix bug where taze was using LoadRules() on the actuals of alaises. Aliases can alias things other than rules, and LoadRules() errors if asked to load a non-rule. Instead, use LoadTargets() and manually filter down to the rules. PiperOrigin-RevId: 239856549 --- .../ts_auto_deps/analyze/loader.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go index 2dd6d3a671..a7be545fc5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go @@ -75,7 +75,7 @@ func (q *QueryBasedTargetLoader) LoadRules(pkg string, labels []string) (map[str if target.GetType() == appb.Target_RULE { labelToRule[label] = target.GetRule() } else { - return nil, fmt.Errorf("target contains object of type %q instead of type %q", target.GetType(), appb.Target_RULE) + return nil, fmt.Errorf("target %s contains object of type %q instead of type %q", label, target.GetType(), appb.Target_RULE) } } return labelToRule, nil @@ -560,13 +560,20 @@ func (q *QueryBasedTargetLoader) loadAllRulesInPackages(currentPkg string, packa } } for pkg, actuals := range pkgToActuals { - // Load all the aliased rules, checking if they're visible from the + // Load all the aliased targets, checking if they're visible from the // package where they're aliased from - resolvedActuals, err := q.LoadRules(pkg, actuals) + resolvedActuals, err := q.LoadTargets(pkg, actuals) if err != nil { return nil, nil, err } - for actual, rule := range resolvedActuals { + for actual, target := range resolvedActuals { + // aliases can be for anything, but deps can only be rules, so ignore + // other aliased targets + if target.GetType() != appb.Target_RULE { + continue + } + + rule := target.GetRule() alias := actualToAlias[actual] _, pkg, _ := edit.ParseLabel(alias.GetName()) pkgToAliasToRule[pkg][rule.GetName()] = alias From f2711b839494bbc4461aea2463efbf92ad5e999b Mon Sep 17 00:00:00 2001 From: lucassloan Date: Tue, 26 Mar 2019 12:41:50 -0700 Subject: [PATCH 0570/1134] Don't treat aliases with non-string "actual" attributes as errors. The "actual" value could be a select statement, in which case just ignore it, it's probably an alias for a rule in a different language, where blaze invocation flags are a thing. PiperOrigin-RevId: 240406142 --- .../rules_typescript/ts_auto_deps/analyze/loader.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go index a7be545fc5..c42ddb8a2d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go @@ -550,7 +550,10 @@ func (q *QueryBasedTargetLoader) loadAllRulesInPackages(currentPkg string, packa // of aliases) actual := stringAttribute(rule, "actual") if actual == "" { - return nil, nil, fmt.Errorf(`alias %q missing "actual" attribute`, rule.GetName()) + // probably an alias with a select statement as the value for + // 'actual' - just ignore + platform.Infof(`alias %q has non-string "actual" attribute`, rule.GetName()) + continue } actualToAlias[actual] = rule pkgToActuals[pkg] = append(pkgToActuals[pkg], actual) From 10aec5b07197c13e5bd00a0a5c3b2d0fc44506ff Mon Sep 17 00:00:00 2001 From: alexeagle Date: Wed, 27 Mar 2019 10:17:59 -0700 Subject: [PATCH 0571/1134] Print a working hostname when running ts_devserver on crostini Fixes https://github.com/angular/angular-bazel-example/issues/287 PiperOrigin-RevId: 240588105 --- .../bazelbuild/rules_typescript/devserver/main.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/main.go b/third_party/github.com/bazelbuild/rules_typescript/devserver/main.go index 7b0a2a0c8f..a41b89914f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/main.go +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/main.go @@ -16,7 +16,7 @@ import ( ) var ( - port = flag.Int("port", 5432, "server port to listen on") + port = flag.Int("port", 5432, "server port to listen on") // The "base" CLI flag is only kept because within Google3 because removing would be a breaking change due to // ConcatJS and "devserver/devserver.go" still respecting the specified base flag. base = flag.String("base", "", "server base (required, runfiles of the binary)") @@ -113,6 +113,12 @@ func main() { if err != nil { h = "localhost" } + // Detect if we are running in a linux container inside ChromeOS + // If so, we assume you want to use the native browser (outside the container) + // so you'll need to modify the hostname to access the server + if _, err := os.Stat("/etc/apt/sources.list.d/cros.list"); err == nil { + h = h + ".linux.test" + } fmt.Printf("Server listening on http://%s:%d/\n", h, *port) fmt.Fprintln(os.Stderr, http.ListenAndServe(fmt.Sprintf(":%d", *port), nil).Error()) From e7a5e108f918dd206c608ca531e530eb78f5431c Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 1 Apr 2019 14:24:23 -0700 Subject: [PATCH 0572/1134] Point docs to up-to-date copy (#440) --- .../rules_typescript/docs/api/build_defs.html | 381 +--------------- .../docs/api/devserver/ts_devserver.html | 289 +----------- .../rules_typescript/docs/api/index.html | 285 +----------- .../docs/api/karma/ts_web_test.html | 412 +----------------- .../docs/api/karma/ts_web_test_suite.html | 253 +---------- .../rules_typescript/docs/api/main.css | 1 - .../docs/api/protobufjs/ts_proto_library.html | 191 +------- .../rules_typescript/docs/api/ts_config.html | 151 +------ .../docs/api/ts_repositories.html | 134 ------ 9 files changed, 7 insertions(+), 2090 deletions(-) delete mode 100755 third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html index 4e9239a861..304b2ad869 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/build_defs.html @@ -1,385 +1,6 @@ - - - - - - - - TypeScript compilation - - - - - - + - -
                      -
                      -
                      - TypeScript compilation -
                      -
                      - - -
                      -
                      -

                      TypeScript compilation

                      - - -
                      - -

                      tsc_wrapped_tsconfig

                      - -
                      tsc_wrapped_tsconfig(ctx, files, srcs, devmode_manifest, jsx_factory, **kwargs)
                      - -

                      Produce a tsconfig.json that sets options required under Bazel.

                      - - -

                      Attributes

                      - -
                  • - - ts_web_test + + ts_devserver -

                    Runs unit tests in a browser.

                    +

                    ts_devserver is a simple development server intended for a quick "getting started" experience.

                    - - ts_web_test_macro - - -

                    ibazel wrapper for ts_web_test

                    - -
                    - - ts_web_test_suite + + ts_devserver_macro -

                    Defines a test_suite of web_test targets that wrap a ts_web_test target.

                    +

                    Macro for creating a ts_devserver

                    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    ctx -

                    Unknown; Required

                    - -
                    files -

                    Unknown; Required

                    - -
                    srcs -

                    Unknown; Required

                    - -
                    devmode_manifest -

                    Unknown; Optional

                    - -
                    jsx_factory -

                    Unknown; Optional

                    - -
                    **kwargs -

                    Unknown; Optional

                    - -
                    -
                    - -

                    ts_library_macro

                    - -
                    ts_library_macro(tsconfig, **kwargs)
                    - -

                    Wraps ts_library to set the default for the tsconfig attribute.

                    -

                    This must be a macro so that the string is converted to a label in the context of the -workspace that declares the ts_library target, rather than the workspace that defines -ts_library, or the workspace where the build is taking place.

                    -

                    This macro is re-exported as ts_library in the public API.

                    - - -

                    Attributes

                    - - - - - - - - - - - - - - - - -
                    tsconfig -

                    Unknown; Optional

                    -

                    the label pointing to a tsconfig.json file

                    -
                    **kwargs -

                    Unknown; Optional

                    -

                    remaining args to pass to the ts_library rule

                    -
                    -
                    - -

                    ts_library

                    - -
                    ts_library(name, deps, srcs, compile_angular_templates, compiler, internal_testing_type_check_dependencies, node_modules, supports_workers, tsconfig, tsickle_typed)
                    - -

                    ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

                    -

                    It produces declarations files (.d.ts) which are used for compiling downstream -TypeScript targets and JavaScript for the browser and Closure compiler.

                    - - -

                    Attributes

                    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    name -

                    Name; Required

                    -

                    A unique name for this rule.

                    -
                    deps -

                    List of labels; Optional; Default is []

                    - -
                    srcs -

                    List of labels; Required

                    -

                    The TypeScript source files to compile.

                    -
                    compile_angular_templates -

                    Boolean; Optional; Default is False

                    -

                    Run the Angular ngtsc compiler under ts_library

                    -
                    compiler -

                    Label; Optional; Default is @npm//@bazel/typescript/bin:tsc_wrapped

                    -

                    Sets a different TypeScript compiler binary to use for this library. - For example, we use the vanilla TypeScript tsc.js for bootstrapping, - and Angular compilations can replace this with ngc.

                    -
                            The default ts_library compiler depends on the `@npm//@bazel/typescript`
                    -        target which is setup for projects that use bazel managed npm deps that
                    -        fetch the @bazel/typescript npm package. It is recommended that you use
                    -        the workspace name `@npm` for bazel managed deps so the default
                    -        compiler works out of the box. Otherwise, you'll have to override
                    -        the compiler attribute manually.
                    -
                    -
                    internal_testing_type_check_dependencies -

                    Boolean; Optional; Default is False

                    -

                    Testing only, whether to type check inputs that aren't srcs.

                    -
                    node_modules -

                    Label; Optional; Default is @npm//typescript:typescript__typings

                    -

                    The npm packages which should be available during the compile.

                    -
                            The default value is `@npm//typescript:typescript__typings` is setup
                    -        for projects that use bazel managed npm deps that. It is recommended
                    -        that you use the workspace name `@npm` for bazel managed deps so the
                    -        default node_modules works out of the box. Otherwise, you'll have to
                    -        override the node_modules attribute manually. This default is in place
                    -        since ts_library will always depend on at least the typescript
                    -        default libs which are provided by `@npm//typescript:typescript__typings`.
                    -
                    -        This attribute is DEPRECATED. As of version 0.18.0 the recommended
                    -        approach to npm dependencies is to use fine grained npm dependencies
                    -        which are setup with the `yarn_install` or `npm_install` rules.
                    -
                    -        For example, in targets that used a `//:node_modules` filegroup,
                    -
                    -        ```
                    -        ts_library(
                    -          name = "my_lib",
                    -          ...
                    -          node_modules = "//:node_modules",
                    -        )
                    -        ```
                    -
                    -        which specifies all files within the `//:node_modules` filegroup
                    -        to be inputs to the `my_lib`. Using fine grained npm dependencies,
                    -        `my_lib` is defined with only the npm dependencies that are
                    -        needed:
                    -
                    -        ```
                    -        ts_library(
                    -          name = "my_lib",
                    -          ...
                    -          deps = [
                    -              "@npm//@types/foo",
                    -              "@npm//@types/bar",
                    -              "@npm//foo",
                    -              "@npm//bar",
                    -              ...
                    -          ],
                    -        )
                    -        ```
                    -
                    -        In this case, only the listed npm packages and their
                    -        transitive deps are includes as inputs to the `my_lib` target
                    -        which reduces the time required to setup the runfiles for this
                    -        target (see https://github.com/bazelbuild/bazel/issues/5153).
                    -        The default typescript libs are also available via the node_modules
                    -        default in this case.
                    -
                    -        The @npm external repository and the fine grained npm package
                    -        targets are setup using the `yarn_install` or `npm_install` rule
                    -        in your WORKSPACE file:
                    -
                    -        yarn_install(
                    -          name = "npm",
                    -          package_json = "//:package.json",
                    -          yarn_lock = "//:yarn.lock",
                    -        )
                    -
                    -
                    supports_workers -

                    Boolean; Optional; Default is True

                    -

                    Intended for internal use only. - Allows you to disable the Bazel Worker strategy for this library. - Typically used together with the "compiler" setting when using a - non-worker aware compiler binary.

                    -
                    tsconfig -

                    Label; Optional

                    -

                    A tsconfig.json file containing settings for TypeScript compilation. - Note that some properties in the tsconfig are governed by Bazel and will be - overridden, such as target and module.

                    -
                            The default value is set to `//:tsconfig.json` by a macro. This means you must
                    -        either:
                    -
                    -        - Have your `tsconfig.json` file in the workspace root directory
                    -        - Use an alias in the root BUILD.bazel file to point to the location of tsconfig:
                    -          `alias(name="tsconfig.json", actual="//path/to:tsconfig-something.json")`
                    -        - Give an explicit `tsconfig` attribute to all `ts_library` targets
                    -
                    -
                    tsickle_typed -

                    Boolean; Optional; Default is True

                    - -
                    - - -
                  - - - -
- diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html index 22d1d37d7e..f2c41e11d2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/devserver/ts_devserver.html @@ -1,293 +1,6 @@ - - - - - - - - Simple development server - - - - - - + - -
-
-
- Simple development server -
-
- - -
-
-

Simple development server

- - -
- -

ts_devserver_macro

- -
ts_devserver_macro(name, data, args, visibility, tags, testonly, **kwargs)
- -

Macro for creating a ts_devserver

-

This macro re-exposes a sh_binary and ts_devserver target that can run the -actual devserver implementation. -The ts_devserver rule is just responsible for generating a launcher script -that runs the Go devserver implementation. The sh_binary is the primary -target that matches the specified "name" and executes the generated bash -launcher script. -This is re-exported in //:defs.bzl as ts_devserver so if you load the rule -from there, you actually get this macro.

- - -

Attributes

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name -

Name; Required

-

Name of the devserver target

-
data -

List of strings; Optional

-

Runtime dependencies for the devserver

-
args -

List of strings; Optional

-

Command line arguments that will be passed to the devserver Go implementation

-
visibility -

Unknown; Optional

-

Visibility of the devserver targets

-
tags -

List of strings; Optional

-

Standard Bazel tags, this macro adds a couple for ibazel

-
testonly -

Integer; Optional

-

Whether the devserver should only run in bazel test

-
**kwargs -

Unknown; Optional

-

passed through to ts_devserver

-
-
- -

ts_devserver

- -
ts_devserver(name, deps, data, additional_root_paths, bootstrap, entry_module, index_html, port, scripts, serving_path, static_files)
- -

ts_devserver is a simple development server intended for a quick "getting started" experience.

-

Additional documentation at https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel

- - -

Attributes

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name -

Name; Required

-

A unique name for this rule.

-
deps -

List of labels; Optional; Default is []

-

Targets that produce JavaScript, such as ts_library

-
data -

List of labels; Optional; Default is []

-

Dependencies that can be require'd while the server is running

-
additional_root_paths -

List of strings; Optional; Default is []

-

Additional root paths to serve staticfiles from. - Paths should include the workspace name such as ["_main/resources"]

-
bootstrap -

List of labels; Optional; Default is []

-

Scripts to include in the JS bundle before the module loader (require.js)

-
entry_module -

String; Optional; Default is ''

-

The entrymodule should be the AMD module name of the entry module such as `"_main/src/index"ts_devserver concats the following snippet after the bundle to load the application:require(["entry_module"]);`

-
index_html -

Label; Optional

-

An index.html file, we'll inject the script tag for the bundle, - as well as script tags for .js static_files and link tags for .css - static_files

-
port -

Integer; Optional; Default is 5432

-

The port that the devserver will listen on.

-
scripts -

List of labels; Optional; Default is []

-

User scripts to include in the JS bundle before the application sources

-
serving_path -

String; Optional; Default is '/_/ts_scripts.js'

-

The path you can request from the client HTML which serves the JavaScript bundle. - If you don't specify one, the JavaScript can be loaded at /_/ts_scripts.js

-
static_files -

List of labels; Optional; Default is []

-

Arbitrary files which to be served, such as index.html. - They are served relative to the package where this rule is declared.

-
- - -
- - -
-
- diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html index 76bd794161..c01557c40b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/index.html @@ -1,289 +1,6 @@ - - - - - - - - Overview - - - - - - + - -
-
-
- Overview -
-
- - -
-
-

Overview

- - - - -

TypeScript compilation

- -

Rules

- - - - - - - - - - - -
- - ts_library - - -

ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

- -
-

Macros

- - - - - - - - - - - - - - - -
- - tsc_wrapped_tsconfig - - -

Produce a tsconfig.json that sets options required under Bazel.

- -
- - ts_library_macro - - -

Wraps ts_library to set the default for the tsconfig attribute.

- -
-

tsconfig.json files using extends

- -

Rules

- - - - - - - - - - - -
- - ts_config - - -

Allows a tsconfig.json file to extend another file.

- -
-

Install toolchain dependencies

- -

Macros

- - - - - - - - - - - - - - - -
- - ts_setup_workspace - - -

This repository rule should be called from your WORKSPACE file.

- -
- - ts_setup_dev_workspace - - -

Setup the toolchain needed for local development, but not needed by users.

- -
-

Simple development server

- -

Rules

- - - - - - - - - - - -
- - ts_devserver - - -

ts_devserver is a simple development server intended for a quick "getting started" experience.

- -
-

Macros

- - - - - - - - - - - -
- - ts_devserver_macro - - -

Macro for creating a ts_devserver

- -
-

Protocol Buffers

- -

Rules

- - - - - - - - - - - -
- - ts_proto_library - - -

Wraps https://github.com/dcodeIO/protobuf.js for use in Bazel.

- -
- - -
- - -
-
- diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html index b7d597f398..1f8916ad1b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test.html @@ -1,416 +1,6 @@ - - - - - - - - Unit testing with Karma - - - - - - + - -
-
-
- Unit testing with Karma -
-
- - -
-
-

Unit testing with Karma

- - -
- -

ts_web_test_macro

- -
ts_web_test_macro(karma, tags, data, **kwargs)
- -

ibazel wrapper for ts_web_test

-

This macro re-exposes the ts_web_test rule with some extra tags so that -it behaves correctly under ibazel.

-

This is re-exported in //:defs.bzl as ts_web_test so if you load the rule -from there, you actually get this macro.

- - -

Attributes

- - - - - - - - - - - - - - - - - - - - - - - - -
karma -

Unknown; Optional

-

karma binary label

-
tags -

List of strings; Optional

-

standard Bazel tags, this macro adds a couple for ibazel

-
data -

List of strings; Optional

-

runtime dependencies

-
**kwargs -

Unknown; Optional

-

passed through to ts_web_test

-
-
- -

ts_web_test_suite

- -
ts_web_test_suite(name, browsers, karma, args, browser_overrides, config, flaky, local, shard_count, size, tags, test_suite_tags, timeout, visibility, web_test_data, wrapped_test_tags, **remaining_keyword_args)
- -

Defines a test_suite of web_test targets that wrap a ts_web_test target.

- - -

Attributes

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name -

Name; Required

-

The base name of the test.

-
browsers -

List of strings; Optional

-

A sequence of labels specifying the browsers to use.

-
karma -

Unknown; Optional

-

karma binary label

-
args -

Unknown; Optional

-

Args for web_test targets generated by this extension.

-
browser_overrides -

Unknown; Optional

-

Dictionary; optional; default is an empty dictionary. A -dictionary mapping from browser names to browser-specific web_test -attributes, such as shard_count, flakiness, timeout, etc. For example: -{'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1} -'//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}.

-
config -

Unknown; Optional

-

Label; optional; Configuration of web test features.

-
flaky -

Unknown; Optional

-

A boolean specifying that the test is flaky. If set, the test will -be retried up to 3 times (default: 0)

-
local -

Unknown; Optional

-

boolean; optional.

-
shard_count -

Unknown; Optional

-

The number of test shards to use per browser. (default: 1)

-
size -

Unknown; Optional

-

A string specifying the test size. (default: 'large')

-
tags -

List of strings; Optional

-

A list of test tag strings to apply to each generated web_test target. -This macro adds a couple for ibazel.

-
test_suite_tags -

Unknown; Optional

-

A list of tag strings for the generated test_suite.

-
timeout -

Unknown; Optional

-

A string specifying the test timeout (default: computed from size)

-
visibility -

Unknown; Optional

-

List of labels; optional.

-
web_test_data -

List of strings; Optional

-

Data dependencies for the web_test.

-
wrapped_test_tags -

Unknown; Optional

-

A list of test tag strings to use for the wrapped test

-
**remaining_keyword_args -

Unknown; Optional

-

Arguments for the wrapped test target.

-
-
- -

ts_web_test

- -
ts_web_test(name, deps, data, srcs, bootstrap, karma, runtime_deps, static_files)
- -

Runs unit tests in a browser.

-

When executed under bazel test, this uses a headless browser for speed. -This is also because bazel test allows multiple targets to be tested together, -and we don't want to open a Chrome window on your machine for each one. Also, -under bazel test the test will execute and immediately terminate.

-

Running under ibazel test gives you a "watch mode" for your tests. The rule is -optimized for this case - the test runner server will stay running and just -re-serve the up-to-date JavaScript source bundle.

-

To debug a single test target, run it with bazel run instead. This will open a -browser window on your computer. Also you can use any other browser by opening -the URL printed when the test starts up. The test will remain running until you -cancel the bazel run command.

-

Currently this rule uses Karma as the test runner, but this is an implementation -detail. We might switch to another runner like Jest in the future.

- - -

Attributes

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name -

Name; Required

-

A unique name for this rule.

-
deps -

List of labels; Optional; Default is []

-

Other targets which produce JavaScript such as ts_library

-
data -

List of labels; Optional; Default is []

-

Runtime dependencies

-
srcs -

List of labels; Optional; Default is []

-

JavaScript source files

-
bootstrap -

List of labels; Optional; Default is []

-

JavaScript files to include before the module loader (require.js). - For example, you can include Reflect,js for TypeScript decorator metadata reflection, - or UMD bundles for third-party libraries.

-
karma -

Label; Optional; Default is @npm//@bazel/karma/bin:karma

- -
runtime_deps -

List of labels; Optional; Default is []

-

Dependencies which should be loaded after the module loader but before the srcs and deps. - These should be a list of targets which produce JavaScript such as ts_library. - The files will be loaded in the same order they are declared by that rule.

-
static_files -

List of labels; Optional; Default is []

-

Arbitrary files which are available to be served on request. - Files are served at: - /base/<WORKSPACE_NAME>/<path-to-file>, e.g. - /base/build_bazel_rules_typescript/examples/testing/static_script.js

-
- - -
- - -
-
- diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test_suite.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test_suite.html index 2ec11a388d..8415331e9c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test_suite.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/karma/ts_web_test_suite.html @@ -1,257 +1,6 @@ - - - - - - - - Web Test rules for Typescript. - - - - - - + - -
-
-
- Web Test rules for Typescript. -
-
- - -
-
-

Web Test rules for Typescript.

- - -
- -

ts_web_test_suite

- -
ts_web_test_suite(name, browsers, args, browser_overrides, config, flaky, local, shard_count, size, tags, test_suite_tags, timeout, visibility, web_test_data, wrapped_test_tags)
- -

Defines a test_suite of web_test targets that wrap a ts_web_test target.

- - -

Attributes

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name -

Name; Required

-

The base name of the test.

-
browsers -

List of strings; Optional

-

A sequence of labels specifying the browsers to use.

-
args -

Unknown; Optional

-

Args for web_test targets generated by this extension.

-
browser_overrides -

Unknown; Optional

-

Dictionary; optional; default is an empty dictionary. A -dictionary mapping from browser names to browser-specific web_test -attributes, such as shard_count, flakiness, timeout, etc. For example: -{'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1} -'//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}.

-
config -

Unknown; Optional

-

Label; optional; Configuration of web test features.

-
flaky -

Unknown; Optional

-

A boolean specifying that the test is flaky. If set, the test will -be retried up to 3 times (default: 0)

-
local -

Unknown; Optional

-

boolean; optional.

-
shard_count -

Unknown; Optional

-

The number of test shards to use per browser. (default: 1)

-
size -

Unknown; Optional

-

A string specifying the test size. (default: 'large')

-
tags -

List of strings; Optional

-

A list of test tag strings to apply to each generated web_test target. -This macro adds a couple for ibazel.

-
test_suite_tags -

Unknown; Optional

-

A list of tag strings for the generated test_suite.

-
timeout -

Unknown; Optional

-

A string specifying the test timeout (default: computed from size)

-
visibility -

Unknown; Optional

-

List of labels; optional.

-
web_test_data -

List of strings; Optional

-

Data dependencies for the web_test.

-
wrapped_test_tags -

Unknown; Optional

-

A list of test tag strings to use for the wrapped test -**remaining_keyword_args: Arguments for the wrapped test target.

-
- - -
- - -
-
- diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css b/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css deleted file mode 100755 index 89f66fe70b..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/main.css +++ /dev/null @@ -1 +0,0 @@ -body{background-color:#fafafa}pre,code{font-family:"Liberation Mono",Consolas,Monaco,"Andale Mono",monospace}pre{background-color:#eee;padding:20px;overflow-x:auto;word-wrap:normal}pre code{overflow-wrap:normal;white-space:pre}code{display:inline-block;font-size:90%;white-space:pre-wrap}.mdl-layout__drawer{background-color:#fff}.mdl-layout__drawer .mdl-layout-title{border-bottom:1px solid #e0e0e0;padding-left:24px}.drawer-nav ul{list-style:none;padding-left:0}.drawer-nav ul li{display:block;padding:0}.drawer-nav ul li ul li a{padding-left:44px;font-weight:400}.drawer-nav ul li a{display:block;flex-shrink:0;padding:15px 0 15px 22px;margin:0;font-weight:600;color:#757575;line-height:1em;text-decoration:none;cursor:pointer}.drawer-nav ul li a:active,.drawer-nav ul li a:hover{background-color:#f0f0f0}.drawer-nav ul li.active a{color:#4caf50;font-weight:500}h1.page-title{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}p.lead{font-size:20px;line-height:32px}table{border-collapse:collapse;border-spacing:0;background-color:#fff;table-layout:auto}table thead th{background-color:#fafafa;border:1px solid #eee;color:#757575;padding:12px 12px 12px 24px;vertical-align:top}table tbody td{border:1px solid #eee;padding:12px 12px 12px 24px;vertical-align:top}table.params-table{width:100%}table.params-table col.col-param{width:25%}table.params-table col.col-description{width:75%}table.overview-table{width:100%}table.overview-table col.col-name{width:25%}table.overview-table col.col-description{width:75%}table.overview-table td p{margin:0}hr{margin-top:40px;margin-bottom:40px}nav.toc{border-left:5px solid #4caf50;padding-left:20px;margin-bottom:48px}nav.toc h1,nav.toc h2{font-size:15px;line-height:16px;padding-bottom:12px;margin-bottom:0;font-weight:400;color:#757575}nav.toc ul{list-style:none;margin-top:0;padding-left:0}nav.toc ul li{font-size:20px;line-height:40px}nav.toc ul li a{color:#4caf50}.page-content{margin-left:auto;margin-right:auto;padding-top:60px;padding-bottom:60px;width:760px}.page-content a{text-decoration:none}.page-content h1{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}.page-content h2{font-size:24px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}.page-content h3{font-size:20px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}@media(max-width: 768px){.page-content{width:360px}}@media(min-width: 768px){.page-content{width:760px}}@media(min-width: 1476px){.page-content{width:1160px}}.mdl-mini-footer{padding-left:40px}/*# sourceMappingURL=main.css.map */ diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html index c19d9db1e5..3e9228b5ef 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/protobufjs/ts_proto_library.html @@ -1,195 +1,6 @@ - - - - - - - - Protocol Buffers - - - - - - + - -
-
-
- Protocol Buffers -
-
- - -
-
-

Protocol Buffers

- - -
- -

ts_proto_library

- -
ts_proto_library(name, deps, output_name)
- -

Wraps https://github.com/dcodeIO/protobuf.js for use in Bazel.

-

ts_proto_library has identical outputs to ts_library, so it can be used anywhere -a ts_library can appear, such as in the deps[] of another ts_library.

-
load("@npm_bazel_typescript//:defs.bzl", "ts_library", "ts_proto_library")
-
-proto_library(
-    name = "car_proto",
-    srcs = ["car.proto"],
-)
-
-ts_proto_library(
-    name = "car",
-    deps = [":car_proto"],
-)
-
-ts_library(
-    name = "test_lib",
-    testonly = True,
-    srcs = ["car.spec.ts"],
-    deps = [":car"],
-)
-
-

Note in this example we named the ts_proto_library rule car so that the -result will be car.d.ts. This means our TypeScript code can just -import {symbols} from './car'. Use the output_name attribute if you want to -name the rule differently from the output file.

-

The JavaScript produced by protobuf.js has a runtime dependency on a support library. -Under devmode (e.g. ts_devserver, ts_web_test_suite) you'll need to include these scripts -in the bootstrap phase (before Require.js loads). You can use the label -@npm_bazel_typescript//:protobufjs_bootstrap_scripts to reference these scripts -in the bootstrap attribute of ts_web_test_suite or ts_devserver.

-

To complete the example above, you could write a ts_web_test_suite:

-
load("@npm_bazel_karma//:defs.bzl", "ts_web_test_suite")
-
-ts_web_test_suite(
-    name = "test",
-    deps = ["test_lib"],
-    bootstrap = ["@npm_bazel_typescript//:protobufjs_bootstrap_scripts"],
-    browsers = [
-      "@io_bazel_rules_webtesting//browsers:chromium-local",
-      "@io_bazel_rules_webtesting//browsers:firefox-local",
-    ],
-)
-
- - -

Attributes

- - - - - - - - - - - - - - - - - - - - -
name -

Name; Required

-

A unique name for this rule.

-
deps -

List of labels; Optional; Default is []

-

proto_library targets

-
output_name -

String; Optional; Default is ''

-

Name of the resulting module, which you will import from. - If not specified, the name will match the target's name.

-
- - -
- - -
-
- diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html index c5dcbcb98b..795df4b220 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html +++ b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_config.html @@ -1,155 +1,6 @@ - - - - - - - - tsconfig.json files using extends - - - - - - + - -
-
-
- tsconfig.json files using extends -
-
- - -
-
-

tsconfig.json files using extends

- - -
- -

ts_config

- -
ts_config(name, deps, src)
- -

Allows a tsconfig.json file to extend another file.

-

Normally, you just give a single tsconfig.json file as the tsconfig attribute -of a ts_library rule. However, if your tsconfig.json uses the extends -feature from TypeScript, then the Bazel implementation needs to know about that -extended configuration file as well, to pass them both to the TypeScript compiler.

- - -

Attributes

- - - - - - - - - - - - - - - - - - - - -
name -

Name; Required

-

A unique name for this rule.

-
deps -

List of labels; Required

-

Additional tsconfig.json files referenced via extends

-
src -

Label; Required

-

The tsconfig.json file passed to the TypeScript compiler

-
- - -
- - -
-
- diff --git a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html b/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html deleted file mode 100644 index 1b27aaf452..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/docs/api/ts_repositories.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - Install toolchain dependencies - - - - - - - - -
-
-
- Install toolchain dependencies -
-
- - -
-
-

Install toolchain dependencies

- - -
- -

ts_setup_workspace

- -
ts_setup_workspace()
- -

This repository rule should be called from your WORKSPACE file.

-

It creates some additional Bazel external repositories that are used internally -by the TypeScript rules.

- - -
- -

ts_setup_dev_workspace

- -
ts_setup_dev_workspace()
- -

Setup the toolchain needed for local development, but not needed by users.

-

These needs to be in a separate file from ts_setup_workspace() so as not -to leak load statements.

- - - - -
- - -
-
- - From 38553db250b11c1a11510bb7c5dea88b50b5017c Mon Sep 17 00:00:00 2001 From: martinprobst Date: Thu, 28 Mar 2019 08:14:59 -0700 Subject: [PATCH 0573/1134] Move rules_typescript to protobufjs 6.8. protobufjs 6 is a full, API incompatible rewrite. This change updates any proto use, and also rewrite the partial message reading logic. PiperOrigin-RevId: 240776103 --- .../bazelbuild/rules_typescript/defs.bzl | 16 +- .../bazelbuild/rules_typescript/defs.bzl.oss | 33 ++++ .../rules_typescript/internal/BUILD.bazel | 1 + .../{tsconfig.json => tsconfig.json.oss} | 0 .../internal/tsc_wrapped/worker.ts | 174 ++++++++++++------ .../tests/ban_expect_truthy_promise/BUILD | 2 +- .../tests/ban_promise_as_condition/BUILD | 2 +- .../tsetse/tests/check_return_value/BUILD | 2 +- .../internal/tsetse/tests/equals_nan/BUILD | 2 +- .../tsetse/tests/must_use_promises/BUILD | 2 +- .../bazelbuild/rules_typescript/package.json | 2 +- 11 files changed, 161 insertions(+), 75 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/defs.bzl.oss rename third_party/github.com/bazelbuild/rules_typescript/internal/karma/{tsconfig.json => tsconfig.json.oss} (100%) diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl index 2e223e82f8..17c6f7415f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl @@ -17,17 +17,13 @@ Users should not load files under "/internal" """ -load("//internal/devserver:ts_devserver.bzl", _ts_devserver = "ts_devserver_macro") -load("//internal/protobufjs:ts_proto_library.bzl", _ts_proto_library = "ts_proto_library") -load("//internal:build_defs.bzl", _ts_library = "ts_library_macro") -load("//internal:ts_config.bzl", _ts_config = "ts_config") -load("//internal:ts_repositories.bzl", _ts_setup_workspace = "ts_setup_workspace") +load( + "//javascript/typescript:build_defs.bzl", + _ts_config = "ts_config", + _ts_devserver = "ts_devserver", + _ts_library = "ts_library", +) -ts_setup_workspace = _ts_setup_workspace ts_library = _ts_library ts_config = _ts_config ts_devserver = _ts_devserver - -ts_proto_library = _ts_proto_library -# DO NOT ADD MORE rules here unless they appear in the generated docsite. -# Run yarn skydoc to re-generate the docsite. diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl.oss b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl.oss new file mode 100644 index 0000000000..2e223e82f8 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl.oss @@ -0,0 +1,33 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" Public API surface is re-exported here. + +Users should not load files under "/internal" +""" + +load("//internal/devserver:ts_devserver.bzl", _ts_devserver = "ts_devserver_macro") +load("//internal/protobufjs:ts_proto_library.bzl", _ts_proto_library = "ts_proto_library") +load("//internal:build_defs.bzl", _ts_library = "ts_library_macro") +load("//internal:ts_config.bzl", _ts_config = "ts_config") +load("//internal:ts_repositories.bzl", _ts_setup_workspace = "ts_setup_workspace") + +ts_setup_workspace = _ts_setup_workspace +ts_library = _ts_library +ts_config = _ts_config +ts_devserver = _ts_devserver + +ts_proto_library = _ts_proto_library +# DO NOT ADD MORE rules here unless they appear in the generated docsite. +# Run yarn skydoc to re-generate the docsite. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 8b42aa89e1..375a5ce359 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -67,6 +67,7 @@ ts_library( # Workaround for https://github.com/Microsoft/TypeScript/issues/22208 deps = [ "@npm//@types/node", + "@npm//protobufjs", "@npm//tsickle", "@npm//tsutils", "@npm//typescript", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/tsconfig.json.oss similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/karma/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/karma/tsconfig.json.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts index 7e52ba8f74..29983182b2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts @@ -1,20 +1,24 @@ import * as path from 'path'; -/* tslint:disable:no-require-imports */ -const protobufjs = require('protobufjs'); -// tslint:disable-next-line:variable-name: ByteBuffer is instantiatable. -const ByteBuffer = require('bytebuffer'); +import * as protobufjs from 'protobufjs'; // Equivalent of running node with --expose-gc // but easier to write tooling since we don't need to inject that arg to // nodejs_binary if (typeof global.gc !== 'function') { + // tslint:disable-next-line:no-require-imports require('v8').setFlagsFromString('--expose_gc'); + // tslint:disable-next-line:no-require-imports global.gc = require('vm').runInNewContext('gc'); } +/** + * Whether to print debug messages (to console.error) from the debug function + * below. + */ export const DEBUG = false; -export function debug(...args: Array<{}>) { +/** Maybe print a debug message (depending on a flag defaulting to false). */ +export function debug(...args: Array) { if (DEBUG) console.error.apply(console, args); } @@ -26,14 +30,52 @@ export function log(...args: Array<{}>) { console.error.apply(console, args); } +/** + * runAsWorker returns true if the given arguments indicate the process should + * run as a persistent worker. + */ export function runAsWorker(args: string[]) { return args.indexOf('--persistent_worker') !== -1; } -const workerpb = (function loadWorkerPb() { - const protoPath = '../worker_protocol.proto'; +/** + * workerProto declares the static type of the object constructed at runtime by + * protobufjs, based on reading the protocol buffer definition. + */ +declare namespace workerProto { + /** Input represents the blaze.worker.Input message. */ + interface Input extends protobufjs.Message { + path: string; + /** + * In Node, digest is a Buffer. In the browser, it's a replacement + * implementation. We only care about its toString(encoding) method. + */ + digest: {toString(encoding: string): string}; + } + + /** WorkRequest repesents the blaze.worker.WorkRequest message. */ + interface WorkRequest extends protobufjs.Message { + arguments: string[]; + inputs: Input[]; + } + + // tslint:disable:variable-name reflected, constructable types. + const WorkRequest: protobufjs.Type; + const WorkResponse: protobufjs.Type; + // tslint:enable:variable-name +} + +/** + * loadWorkerPb finds and loads the protocol buffer definition for bazel's + * worker protocol using protobufjs. In protobufjs, this means it's a reflection + * object that also contains properties for the individual messages. + */ +function loadWorkerPb() { + const protoPath = + '../worker_protocol.proto'; - // Use node module resolution so we can find the .proto file in any of the root dirs + // Use node module resolution so we can find the .proto file in any of the + // root dirs let protofile; try { // Look for the .proto file relative in its @bazel/typescript npm package @@ -50,35 +92,32 @@ const workerpb = (function loadWorkerPb() { '../../third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto'); } - // Under Bazel, we use the version of TypeScript installed in the user's - // workspace This means we also use their version of protobuf.js. Handle both. - // v5 and v6 by checking which one is present. - if (protobufjs.loadProtoFile) { - // Protobuf.js v5 - const protoNamespace = protobufjs.loadProtoFile(protofile); - if (!protoNamespace) { - throw new Error('Cannot find ' + path.resolve(protoPath)); - } - return protoNamespace.build('blaze.worker'); - } else { - // Protobuf.js v6 - const protoNamespace = protobufjs.loadSync(protofile); - if (!protoNamespace) { - throw new Error('Cannot find ' + path.resolve(protoPath)); - } - return protoNamespace.lookup('blaze.worker'); + const protoNamespace = protobufjs.loadSync(protofile); + if (!protoNamespace) { + throw new Error('Cannot find ' + path.resolve(protoPath)); } -})(); - -interface Input { - getPath(): string; - getDigest(): {toString(encoding: string): string}; // npm:ByteBuffer -} -interface WorkRequest { - getArguments(): string[]; - getInputs(): Input[]; + const workerpb = protoNamespace.lookup('blaze.worker'); + if (!workerpb) { + throw new Error(`Cannot find namespace blaze.worker`); + } + return workerpb as protobufjs.ReflectionObject & typeof workerProto; } +/** + * workerpb contains the runtime representation of the worker protocol buffer, + * including accessor for the defined messages. + */ +const workerpb = loadWorkerPb(); + +/** + * runWorkerLoop handles the interacton between bazel workers and the + * TypeScript compiler. It reads compilation requests from stdin, unmarshals the + * data, and dispatches into `runOneBuild` for the actual compilation to happen. + * + * The compilation handler is parameterized so that this code can be used by + * different compiler entry points (currently TypeScript compilation and Angular + * compilation). + */ export function runWorkerLoop( runOneBuild: (args: string[], inputs?: {[path: string]: string}) => boolean) { @@ -88,39 +127,54 @@ export function runWorkerLoop( // user as expected. let consoleOutput = ''; process.stderr.write = - (chunk: string | Buffer, ...otherArgs: any[]): boolean => { + (chunk: string|Buffer, ...otherArgs: Array): boolean => { consoleOutput += chunk.toString(); return true; }; // Accumulator for asynchronously read input. - // tslint:disable-next-line:no-any protobufjs is untyped - let buf: any; + // protobufjs uses node's Buffer, but has its own reader abstraction on top of + // it (for browser compatiblity). It ignores Buffer's builtin start and + // offset, which means the handling code below cannot use Buffer in a + // meaningful way (such as cycling data through it). The handler below reads + // any data available on stdin, concatenating it into this buffer. It then + // attempts to read a delimited Message from it. If a message is incomplete, + // it exits and waits for more input. If a message has been read, it strips + // its data of this buffer. + let buf: Buffer = Buffer.alloc(0); process.stdin.on('readable', () => { - const chunk = process.stdin.read(); + const chunk = process.stdin.read() as Buffer; if (!chunk) return; - - const wrapped = ByteBuffer.wrap(chunk); - buf = buf ? ByteBuffer.concat([buf, wrapped]) : wrapped; + buf = Buffer.concat([buf, chunk]); try { - let req: WorkRequest; + const reader = new protobufjs.Reader(buf); // Read all requests that have accumulated in the buffer. - while ((req = workerpb.WorkRequest.decodeDelimited(buf)) != null) { + while (reader.len - reader.pos > 0) { + const messageStart = reader.len; + const msgLength: number = reader.uint32(); + // chunk might be an incomplete read from stdin. If there are not enough + // bytes for the next full message, wait for more input. + if ((reader.len - reader.pos) < msgLength) return; + + const req = workerpb.WorkRequest.decode(reader, msgLength) as + workerProto.WorkRequest; + // Once a message has been read, remove it from buf so that if we pause + // to read more input, this message will not be processed again. + buf = buf.slice(messageStart); debug('=== Handling new build request'); // Reset accumulated log output. consoleOutput = ''; - const args = req.getArguments(); + const args = req.arguments; const inputs: {[path: string]: string} = {}; - for (const input of req.getInputs()) { - inputs[input.getPath()] = input.getDigest().toString('hex'); + for (const input of req.inputs) { + inputs[input.path] = input.digest.toString('hex'); } debug('Compiling with:\n\t' + args.join('\n\t')); const exitCode = runOneBuild(args, inputs) ? 0 : 1; - process.stdout.write(new workerpb.WorkResponse() - .setExitCode(exitCode) - .setOutput(consoleOutput) - .encodeDelimited() - .toBuffer()); + process.stdout.write((workerpb.WorkResponse.encodeDelimited({ + exitCode, + output: consoleOutput, + })).finish() as Buffer); // Force a garbage collection pass. This keeps our memory usage // consistent across multiple compilations, and allows the file // cache to use the current memory usage as a guideline for expiring @@ -128,17 +182,19 @@ export function runWorkerLoop( // we want to gc only after all its locals have gone out of scope. global.gc(); } - // Avoid growing the buffer indefinitely. - buf.compact(); + // All messages have been handled, make sure the invariant holds and + // Buffer is empty once all messages have been read. + if (buf.length > 0) { + throw new Error('buffer not empty after reading all messages'); + } } catch (e) { log('Compilation failed', e.stack); - process.stdout.write(new workerpb.WorkResponse() - .setExitCode(1) - .setOutput(consoleOutput) - .encodeDelimited() - .toBuffer()); + process.stdout.write( + workerpb.WorkResponse + .encodeDelimited({exitCode: 1, output: consoleOutput}) + .finish() as Buffer); // Clear buffer so the next build won't read an incomplete request. - buf = null; + buf = Buffer.alloc(0); } }); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD index 46b5590f9a..4946205b50 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//internal:defaults.bzl", "ts_library") +load("//third_party/bazel_rules/rules_typescript:defs.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD index 83817bd776..2108c6bce9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//internal:defaults.bzl", "ts_library") +load("//third_party/bazel_rules/rules_typescript:defs.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD index 502aa274df..4a1c05d34b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//internal:defaults.bzl", "ts_library") +load("//third_party/bazel_rules/rules_typescript:defs.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD index 6fad14701f..6371d070ba 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//internal:defaults.bzl", "ts_library") +load("//third_party/bazel_rules/rules_typescript:defs.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD index 9f88bd518a..917c3ef931 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//internal:defaults.bzl", "ts_library") +load("//third_party/bazel_rules/rules_typescript:defs.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index dd1a0292f5..b0579be186 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,7 +3,7 @@ "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", "devDependencies": { - "protobufjs": "5.0.3", + "protobufjs": "6.8.8", "semver": "5.6.0", "source-map-support": "0.5.9", "tsutils": "2.27.2", From c0ca53c20111f4fcd23cd3992331bb946e3517f0 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 1 Apr 2019 16:20:13 -0700 Subject: [PATCH 0574/1134] Tear out OSS-only parts of rules_typescript These already moved to rules_nodejs Closes #429 PiperOrigin-RevId: 241422158 --- .../rules_typescript/.bazelci/presubmit.yml | 3 - .../bazelbuild/rules_typescript/BUILD.bazel | 33 +- .../bazelbuild/rules_typescript/README.md | 3 - .../bazelbuild/rules_typescript/WORKSPACE | 36 +- .../bazelbuild/rules_typescript/defs.bzl | 29 - .../bazelbuild/rules_typescript/defs.bzl.oss | 33 - .../devserver/devserver/devserver_test.go | 4 +- .../rules_typescript/examples/BUILD.bazel | 60 - .../rules_typescript/examples/app/BUILD.bazel | 45 - .../rules_typescript/examples/app/app.ts | 4 - .../examples/app/app_e2e_test.ts | 25 - .../rules_typescript/examples/app/index.html | 21 - .../rules_typescript/examples/bar.ts | 27 - .../examples/bazel_managed_deps/BUILD.bazel | 8 - .../examples/bazel_managed_deps/README.md | 12 - .../examples/bazel_managed_deps/index.ts | 1 - .../examples/bazel_managed_deps/package.json | 8 - .../examples/bazel_managed_deps/tsconfig.json | 5 - .../examples/bazel_managed_deps/yarn.lock | 21 - .../examples/devmode_consumer/BUILD.bazel | 15 - .../devmode_consumer/devmode_consumer.bzl | 40 - .../devmode_consumer/devmode_consumer_test.sh | 88 - .../examples/devserver/BUILD.bazel | 44 - .../examples/devserver/app.ts | 7 - .../examples/devserver/index.html | 16 - .../examples/es6_output/BUILD.bazel | 31 - .../examples/es6_output/es6_consumer.bzl | 33 - .../examples/es6_output/es6_output_test.sh | 53 - .../rules_typescript/examples/foo.ts | 28 - .../examples/generated_ts/BUILD.bazel | 14 - .../examples/googmodule/BUILD.bazel | 23 - .../rules_typescript/examples/googmodule/a.ts | 1 - .../googmodule/googmodule_output_test.js | 20 - .../examples/googmodule/tsconfig.json | 12 - .../examples/protocol_buffers/BUILD.bazel | 139 - .../examples/protocol_buffers/app.ts | 8 - .../examples/protocol_buffers/app_e2e_test.ts | 25 - .../examples/protocol_buffers/car.proto | 12 - .../examples/protocol_buffers/car.spec.ts | 35 - .../examples/protocol_buffers/index.html | 10 - .../examples/protocol_buffers/tire.proto | 11 - .../examples/some_library/BUILD.bazel | 26 - .../examples/some_library/library.ts | 18 - .../examples/some_module/BUILD.bazel | 52 - .../examples/some_module/index.ts | 3 - .../examples/some_module/main.ts | 4 - .../examples/some_module/module_load_test.sh | 35 - .../examples/testing/BUILD.bazel | 96 - .../examples/testing/decrement.spec.ts | 7 - .../examples/testing/decrement.ts | 3 - .../examples/testing/karma.conf.js | 12 - .../examples/testing/setup_script.spec.ts | 9 - .../examples/testing/setup_script.ts | 6 - .../examples/testing/static_script.js | 2 - .../examples/testing/static_script.spec.ts | 20 - .../examples/testing/tsconfig.json | 7 - .../examples/tsconfig-bar.json | 11 - .../examples/tsconfig-test.json | 7 - .../rules_typescript/examples/tsconfig.json | 15 - .../examples/tsconfig_extends/BUILD.bazel | 36 - .../tsconfig_extends/tsconfig-base.json | 9 - .../examples/tsconfig_extends/tsconfig.json | 4 - .../examples/tsconfig_extends/uses_promise.ts | 3 - .../rules_typescript/examples/types.d.ts | 3 - .../rules_typescript/internal/BUILD.bazel | 5 +- .../rules_typescript/internal/build_defs.bzl | 407 --- .../rules_typescript/internal/defaults.bzl | 28 - .../rules_typescript/internal/devserver/BUILD | 42 - .../internal/devserver/README.md | 9 - .../internal/devserver/launcher_template.sh | 59 - .../internal/devserver/package.json | 6 - .../internal/devserver/ts_devserver.bzl | 264 -- .../internal/devserver/yarn.lock | 7 - .../rules_typescript/internal/karma/.bazelrc | 1 - .../internal/karma/BUILD.bazel | 106 - .../rules_typescript/internal/karma/WORKSPACE | 69 - .../internal/karma/browser_repositories.bzl | 111 - .../internal/karma/defaults.bzl | 37 - .../rules_typescript/internal/karma/defs.bzl | 33 - .../internal/karma/docs/BUILD.bazel | 11 - .../internal/karma/docs/index.md | 89 - .../internal/karma/docs/install.md | 80 - .../internal/karma/docs/karma_web_test.md | 315 --- .../internal/karma/docs/ts_web_test.md | 272 -- .../rules_typescript/internal/karma/index.ts | 101 - .../internal/karma/karma.conf.js | 423 --- .../rules_typescript/internal/karma/karma.js | 3 - .../internal/karma/karma_web_test.bzl | 447 ---- .../internal/karma/package.bzl | 46 - .../internal/karma/package.json | 47 - .../internal/karma/ts_web_test.bzl | 201 -- .../internal/karma/tsconfig.json.oss | 9 - .../internal/karma/web_test.bzl | 40 - .../rules_typescript/internal/karma/yarn.lock | 2320 ----------------- .../internal/protobufjs/BUILD.bazel | 69 - .../internal/protobufjs/package.json | 20 - .../internal/protobufjs/ts_proto_library.bzl | 193 -- .../internal/protobufjs/yarn.lock | 467 ---- .../rules_typescript/internal/ts_config.bzl | 44 - .../internal/ts_repositories.bzl | 21 - .../internal/tsc_wrapped/yarn.lock | 24 +- .../tests/ban_expect_truthy_promise/BUILD | 2 +- .../tests/ban_promise_as_condition/BUILD | 2 +- .../tsetse/tests/check_return_value/BUILD | 2 +- .../internal/tsetse/tests/equals_nan/BUILD | 2 +- .../tsetse/tests/must_use_promises/BUILD | 2 +- .../bazelbuild/rules_typescript/package.bzl | 39 +- .../bazelbuild/rules_typescript/package.json | 2 +- .../rules_typescript/protractor.conf.js | 13 - .../ts_auto_deps/ts_auto_deps.js | 34 - .../bazelbuild/rules_typescript/tsconfig.json | 12 + .../bazelbuild/rules_typescript/version.bzl | 1 - .../bazelbuild/rules_typescript/yarn.lock | 53 +- 113 files changed, 56 insertions(+), 7965 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/defs.bzl delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/defs.bzl.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/app/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/app/app.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/app/app_e2e_test.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/app/index.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/README.md delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/index.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/package.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/tsconfig.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/yarn.lock delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer.bzl delete mode 100755 third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer_test.sh delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/devserver/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/devserver/app.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/devserver/index.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_consumer.bzl delete mode 100755 third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_output_test.sh delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/foo.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/a.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/googmodule_output_test.js delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/tsconfig.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app_e2e_test.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/car.proto delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/car.spec.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/index.html delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/tire.proto delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/some_library/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/some_library/library.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/some_module/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/some_module/index.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/some_module/main.ts delete mode 100755 third_party/github.com/bazelbuild/rules_typescript/examples/some_module/module_load_test.sh delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/testing/decrement.spec.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/testing/decrement.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/testing/karma.conf.js delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/testing/setup_script.spec.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/testing/setup_script.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.js delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.spec.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/testing/tsconfig.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig-bar.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig-test.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/tsconfig-base.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/tsconfig.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/uses_promise.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/examples/types.d.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/defaults.bzl delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/devserver/README.md delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/devserver/launcher_template.sh delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/devserver/package.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/devserver/yarn.lock delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/.bazelrc delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/WORKSPACE delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/browser_repositories.bzl delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/defaults.bzl delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/defs.bzl delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/index.md delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/install.md delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/karma_web_test.md delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/ts_web_test.md delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/index.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.js delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/tsconfig.json.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/web_test.bzl delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/package.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/yarn.lock delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/ts_config.bzl delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/protractor.conf.js delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/ts_auto_deps.js create mode 100644 third_party/github.com/bazelbuild/rules_typescript/tsconfig.json delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/version.bzl diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml index 92b8746fdb..dc31779ccc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml @@ -17,9 +17,6 @@ platforms: - "@nodejs//:yarn" build_targets: - "..." - # Run some targets again, but addressed as an external repo - # TODO(alexeagle): run all of them after fixing https://github.com/bazelbuild/rules_typescript/issues/243 - - "@npm_bazel_typescript//examples/some_library:lib" test_flags: # TODO(gregmagolan): shared libs needed by chrome & firefox not available on ubuntu1604 - "--test_tag_filters=-browser:chromium-local,-browser:firefox-local" diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index 74d8f24813..d5422316ca 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -22,48 +22,19 @@ load("@bazel_gazelle//:def.bzl", "gazelle") load("@build_bazel_rules_nodejs//:defs.bzl", "npm_package") load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") -# ts_library defaults to this label in the top-level package. -# Point to where the file actually lives. -alias( - name = "tsconfig.json", - actual = "//examples:tsconfig.json", - visibility = ["//visibility:public"], -) - -exports_files(["LICENSE"]) +exports_files(["LICENSE", "tsconfig.json"]) gazelle( name = "gazelle", prefix = "github.com/bazelbuild/rules_typescript", ) -# Runtime libraries needed by the protobufjs library. -# Any JS code produced by the ts_proto_library rule has a runtime dependency on these scripts. -js_library( - name = "protobufjs_bootstrap_scripts", - srcs = [ - "@build_bazel_rules_typescript_protobufs_compiletime_deps//node_modules/long:dist/long.js", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//node_modules/protobufjs:dist/minimal/protobuf.min.js", - ], - # Make devmode loading work when it does require("protobufjs/minimal") - # so this is shimmed to define it to equal global.protobuf - amd_names = { - "long": "Long", - "protobufjs/minimal": "protobuf", - }, - visibility = ["//visibility:public"], -) - - # This package is included in the npm_bazel_typescript package in rules_nodejs/packages/typescript npm_package( name = "npm_bazel_typescript_package", srcs = [ "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:npm_package_assets", - "//internal:common/compilation.bzl", - "//internal:common/json_marshal.bzl", - "//internal:common/module_mappings.bzl", - "//internal:common/tsconfig.bzl", + "//internal:npm_package_assets", ], deps = [ "//internal:generated_BUILD", diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 8c999b34fd..41028ada75 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -1,8 +1,5 @@ # build_bazel_rules_typescript -> Looking for documentation for TypeScript bazel rules that used to be here? -> See https://npmjs.com/package/@bazel/typescript - This repo contains a mirror of some Google-internal bits that support TypeScript development under Bazel. It contains these utilities: diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index e6fc9e84c5..7bb6346658 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -12,26 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "npm_bazel_typescript") - -# Load nested npm_bazel_karma repository -local_repository( - name = "npm_bazel_karma", - path = "internal/karma", -) +workspace(name = "build_bazel_rules_typescript") # Load our dependencies load("//:package.bzl", "rules_typescript_dev_dependencies") rules_typescript_dev_dependencies() -# Load rules_karma dependencies -load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies") - -rules_karma_dependencies() - # Setup nodejs toolchain -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") +load("@build_bazel_rules_nodejs//:defs.bzl", "yarn_install") # Use a bazel-managed npm dependency, allowing us to test resolution to these paths yarn_install( @@ -40,9 +29,6 @@ yarn_install( yarn_lock = "//examples/bazel_managed_deps:yarn.lock", ) -# Install a hermetic version of node. -node_repositories() - # Download npm dependencies yarn_install( name = "npm", @@ -50,6 +36,9 @@ yarn_install( yarn_lock = "//:yarn.lock", ) +load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") +install_bazel_dependencies() + # Setup rules_go toolchain load("@io_bazel_rules_go//go:def.bzl", "go_register_toolchains", "go_rules_dependencies") @@ -67,21 +56,6 @@ load("//internal:ts_repositories.bzl", "ts_setup_dev_workspace") ts_setup_dev_workspace() -# Dependencies for generating documentation -load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") - -sass_repositories() - -# Setup rules_webtesting toolchain -load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories") - -web_test_repositories() - -# Setup browser repositories -load("@npm_bazel_karma//:browser_repositories.bzl", "browser_repositories") - -browser_repositories() - local_repository( name = "devserver_test_workspace", path = "devserver/devserver/test/test-workspace", diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl deleted file mode 100644 index 17c6f7415f..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" Public API surface is re-exported here. - -Users should not load files under "/internal" -""" - -load( - "//javascript/typescript:build_defs.bzl", - _ts_config = "ts_config", - _ts_devserver = "ts_devserver", - _ts_library = "ts_library", -) - -ts_library = _ts_library -ts_config = _ts_config -ts_devserver = _ts_devserver diff --git a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl.oss b/third_party/github.com/bazelbuild/rules_typescript/defs.bzl.oss deleted file mode 100644 index 2e223e82f8..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/defs.bzl.oss +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" Public API surface is re-exported here. - -Users should not load files under "/internal" -""" - -load("//internal/devserver:ts_devserver.bzl", _ts_devserver = "ts_devserver_macro") -load("//internal/protobufjs:ts_proto_library.bzl", _ts_proto_library = "ts_proto_library") -load("//internal:build_defs.bzl", _ts_library = "ts_library_macro") -load("//internal:ts_config.bzl", _ts_config = "ts_config") -load("//internal:ts_repositories.bzl", _ts_setup_workspace = "ts_setup_workspace") - -ts_setup_workspace = _ts_setup_workspace -ts_library = _ts_library -ts_config = _ts_config -ts_devserver = _ts_devserver - -ts_proto_library = _ts_proto_library -# DO NOT ADD MORE rules here unless they appear in the generated docsite. -# Run yarn skydoc to re-generate the docsite. diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/devserver_test.go b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/devserver_test.go index 1fa912941d..0c0ba56a40 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/devserver_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/devserver_test.go @@ -47,9 +47,9 @@ func TestDevserverFileHandling(t *testing.T) { handler := CreateFileHandler("/app.js", "manifest.MF", []string{ // This verifies that we can resolve relatively to the current package. Usually the // devserver Bazel rule adds the current package here. - "npm_bazel_typescript/devserver/devserver", + "build_bazel_rules_typescript/devserver/devserver", // Verifies that we can specify subfolders of workspaces - "npm_bazel_typescript/devserver/devserver/test", + "build_bazel_rules_typescript/devserver/devserver/test", // Verifies that we can specify external workspaces as root dirs. "devserver_test_workspace", // Verifies that we can specify subfolders from external workspaces. diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/BUILD.bazel deleted file mode 100644 index a5a30728f1..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/BUILD.bazel +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("//:defs.bzl", "ts_config") -load("//internal:defaults.bzl", "ts_library") - -package(default_visibility = ["//visibility:public"]) - -exports_files(["tsconfig.json"]) - -ts_library( - name = "types", - srcs = ["types.d.ts"], -) - -ts_library( - name = "foo_ts_library", - srcs = ["foo.ts"], - tsconfig = ":tsconfig.json", - deps = [ - ":types", - "//examples/generated_ts", - ], -) - -ts_library( - name = "bar_ts_library", - srcs = ["bar.ts"], - tsconfig = ":tsconfig-bar.json", - deps = [ - ":foo_ts_library", - "//examples/generated_ts", - "//examples/some_library:lib", - "@npm//typescript", - # Example of using the `@npm//@types` target to depend on all - # @types packages and with the types attribute of tsconfig not - # specified. In this case, typescript will automatically discover - # all types under node_modules/@types and included them in the compile. - # See getAutomaticTypeDirectiveNames in - # https://github.com/Microsoft/TypeScript/blob/master/src/compiler/moduleNameResolver.ts. - "@npm//@types", - ], -) - -ts_config( - name = "tsconfig-test", - src = "tsconfig-test.json", - deps = [":tsconfig.json"], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/app/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/app/BUILD.bazel deleted file mode 100644 index 89842d1d4f..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/app/BUILD.bazel +++ /dev/null @@ -1,45 +0,0 @@ -load("@build_bazel_rules_nodejs//:defs.bzl", "http_server", "rollup_bundle") -load("//:defs.bzl", "ts_devserver") -load("//internal:defaults.bzl", "ts_library") - -ts_library( - name = "app", - srcs = ["app.ts"], -) - -ts_devserver( - name = "devserver", - port = 8080, - # This is the path we'll request from the browser, see index.html - serving_path = "/bundle.min.js", - # The devserver can serve our static files too - static_files = ["index.html"], - # We'll collect all the devmode JS sources from these TypeScript libraries - deps = [":app"], -) - -rollup_bundle( - name = "bundle", - entry_point = "examples/app/app", - deps = [":app"], -) - -http_server( - name = "prodserver", - data = [ - "index.html", - ":bundle", - ], -) - -ts_library( - name = "e2e", - testonly = 1, - srcs = ["app_e2e_test.ts"], - tsconfig = "//examples:tsconfig-test", - deps = [ - "@npm//@types/jasmine", - "@npm//@types/node", - "@npm//protractor", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/app/app.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/app/app.ts deleted file mode 100644 index 6c1c6e9d06..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/app/app.ts +++ /dev/null @@ -1,4 +0,0 @@ -const el: HTMLDivElement = document.createElement('div'); -el.innerText = 'Hello, TypeScript'; -el.className = 'ts1'; -document.body.appendChild(el); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/app/app_e2e_test.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/app/app_e2e_test.ts deleted file mode 100644 index 1ce56fbcd2..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/app/app_e2e_test.ts +++ /dev/null @@ -1,25 +0,0 @@ -import {browser, by, element, ExpectedConditions} from 'protractor'; - -// This test uses Protractor without Angular, so disable Angular features -browser.waitForAngularEnabled(false); - -// Since we don't have a protractor bazel rule yet, the test is brought up in -// parallel with building the service under test. So the timeout must include -// compiling the application as well as starting the server. -const timeoutMs = 90 * 1000; - -describe('app', () => { - beforeAll(() => { - browser.get(''); - // Don't run any specs until we see a
on the page. - browser.wait( - ExpectedConditions.presenceOf(element(by.css('div.ts1'))), - timeoutMs); - }, timeoutMs); - - it('should display: Hello, TypeScript', (done) => { - const div = element(by.css('div.ts1')); - div.getText().then(t => expect(t).toEqual(`Hello, TypeScript`)); - done(); - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/app/index.html b/third_party/github.com/bazelbuild/rules_typescript/examples/app/index.html deleted file mode 100644 index 8af1e7f68b..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/app/index.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - ts_devserver example - - - - - - diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts deleted file mode 100644 index d363ae37a6..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/bar.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * Copyright 2017 The Bazel Authors. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import {Greeter} from 'npm_bazel_typescript/examples/foo'; -import {a} from 'npm_bazel_typescript/examples/generated_ts/foo'; -// Repro for #31, should automatically discover @types/node -import * as fs from 'fs'; -import {cool} from 'some-lib'; -import * as ts from 'typescript'; - -import('./foo').then(({greeter}) => { - console.log(Greeter, fs, cool, ts, greeter, a); -}); \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/BUILD.bazel deleted file mode 100644 index 43c5bd6d33..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/BUILD.bazel +++ /dev/null @@ -1,8 +0,0 @@ -load("//internal:defaults.bzl", "ts_library") - -ts_library( - name = "bazel_managed_deps", - srcs = ["index.ts"], - node_modules = "@build_bazel_rules_typescript_internal_bazel_managed_deps//:node_modules", - tsconfig = ":tsconfig.json", -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/README.md b/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/README.md deleted file mode 100644 index c0cff30a1a..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Bazel-managed deps - -The NodeJS rules allow you to skip the install step, and have Bazel run yarn/npm for you. - -See the /WORKSPACE file where we declare a workspace called -build_bazel_rules_typescript_internal_bazel_managed_deps -that will be installed automatically by Bazel. - -We then can build the code in this directory without installing the package.json located here. - -Regression test for -https://github.com/bazelbuild/rules_typescript/issues/179 diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/index.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/index.ts deleted file mode 100644 index 5b3b16a276..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/index.ts +++ /dev/null @@ -1 +0,0 @@ -import * as t from 'three'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/package.json b/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/package.json deleted file mode 100644 index 4a39fc56b9..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "bazel_managed_deps", - "devDependencies": { - "@types/three": "^0.91.10", - "three": "^0.92.0", - "typescript": "^2.8.3" - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/tsconfig.json deleted file mode 100644 index aee0ec940f..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "compilerOptions": { - "strict": true - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/yarn.lock deleted file mode 100644 index 4ba79ac76c..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/bazel_managed_deps/yarn.lock +++ /dev/null @@ -1,21 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@types/three@^0.91.10": - version "0.91.10" - resolved "https://registry.yarnpkg.com/@types/three/-/three-0.91.10.tgz#996b82993902d564daa1c29d0c3d653f2b15243a" - dependencies: - "@types/webvr-api" "*" - -"@types/webvr-api@*": - version "0.0.34" - resolved "https://registry.yarnpkg.com/@types/webvr-api/-/webvr-api-0.0.34.tgz#8fa49028de925c7b8bce3d559d3374ce2c89ee28" - -three@^0.92.0: - version "0.92.0" - resolved "https://registry.yarnpkg.com/three/-/three-0.92.0.tgz#8d3d1f5af890e62da7f4cb45d20c09fa51057dcd" - -typescript@^2.8.3: - version "2.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.3.tgz#5d817f9b6f31bb871835f4edf0089f21abe6c170" diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/BUILD.bazel deleted file mode 100644 index 78d6a463a1..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/BUILD.bazel +++ /dev/null @@ -1,15 +0,0 @@ -load(":devmode_consumer.bzl", "devmode_consumer") - -devmode_consumer( - name = "devmode_consumer", - deps = ["//examples:bar_ts_library"], -) - -sh_test( - name = "devmode_consumer_test", - srcs = ["devmode_consumer_test.sh"], - data = [ - ":devmode_consumer", - "@bazel_tools//tools/bash/runfiles", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer.bzl b/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer.bzl deleted file mode 100644 index b23a4b421d..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer.bzl +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Example of a rule that requires es2015 (devmode) inputs. -""" - -load("@build_bazel_rules_nodejs//internal/common:sources_aspect.bzl", "sources_aspect") - -def _devmode_consumer(ctx): - files = depset() - - # Since we apply the sources_aspect to our deps below, we can iterate through - # the deps and grab the attribute attached by that aspect, which is called - # "node_sources". - # See https://github.com/bazelbuild/rules_nodejs/blob/master/internal/node.bzl - for d in ctx.attr.deps: - files = depset(transitive = [files, d.node_sources]) - - return [DefaultInfo( - files = files, - runfiles = ctx.runfiles(files.to_list()), - )] - -devmode_consumer = rule( - implementation = _devmode_consumer, - attrs = { - "deps": attr.label_list(aspects = [sources_aspect]), - }, -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer_test.sh b/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer_test.sh deleted file mode 100755 index eb51180340..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/devmode_consumer/devmode_consumer_test.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/bin/bash -set -e - -# --- begin runfiles.bash initialization --- -# Source the runfiles library: -# https://github.com/bazelbuild/bazel/blob/master/tools/bash/runfiles/runfiles.bash -# The runfiles library defines rlocation, which is a platform independent function -# used to lookup the runfiles locations. This code snippet is needed at the top -# of scripts that use rlocation to lookup the location of runfiles.bash and source it -if [[ ! -d "${RUNFILES_DIR:-/dev/null}" && ! -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then - if [[ -f "$0.runfiles_manifest" ]]; then - export RUNFILES_MANIFEST_FILE="$0.runfiles_manifest" - elif [[ -f "$0.runfiles/MANIFEST" ]]; then - export RUNFILES_MANIFEST_FILE="$0.runfiles/MANIFEST" - elif [[ -f "$0.runfiles/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then - export RUNFILES_DIR="$0.runfiles" - fi -fi -if [[ -f "${RUNFILES_DIR:-/dev/null}/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then - source "${RUNFILES_DIR}/bazel_tools/tools/bash/runfiles/runfiles.bash" -elif [[ -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then - source "$(grep -m1 "^bazel_tools/tools/bash/runfiles/runfiles.bash " \ - "$RUNFILES_MANIFEST_FILE" | cut -d ' ' -f 2-)" -else - echo >&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash" - exit 1 -fi -# --- end runfiles.bash initialization --- - -readonly LIBRARY_JS=$(cat $(rlocation "npm_bazel_typescript/examples/some_library/library.js")) -readonly BAR_JS=$(cat $(rlocation "npm_bazel_typescript/examples/bar.js")) -readonly FOO_JS=$(cat $(rlocation "npm_bazel_typescript/examples/foo.js")) - -# should produce named UMD modules -if [[ "$LIBRARY_JS" != *"define(\"some-lib\""* ]]; then - echo "Expected library.js to declare module named some-lib, but was" - echo "$LIBRARY_JS" - exit 1 -fi - -# should produce named UMD modules -if [[ "$BAR_JS" != *"define(\"npm_bazel_typescript/examples/bar\""* ]]; then - echo "Expected bar.js to declare named module, but was" - echo "$BAR_JS" - exit 1 -fi - -# should give a name to required modules -if [[ "$BAR_JS" != *"require(\"npm_bazel_typescript/examples/foo\")"* ]]; then - echo "Expected bar.js to require named module foo, but was" - echo "$BAR_JS" - exit 1 -fi - -# should give a name to required modules from other compilation unit -if [[ "$BAR_JS" != *"require(\"some-lib\")"* ]]; then - echo "Expected bar.js to require named module library, but was" - echo "$BAR_JS" - exit 1 -fi - -# should give a name to required generated modules without bazel-bin -if [[ "$BAR_JS" != *"require(\"npm_bazel_typescript/examples/generated_ts/foo\")"* ]]; then - echo "Expected bar.js to require generated named module foo, but was" - echo "$BAR_JS" - exit 1 -fi - -# should not give a module name to external modules -if [[ "$BAR_JS" != *"require(\"typescript\")"* ]]; then - echo "Expected bar.js to require typescript by its original name, but was" - echo "$BAR_JS" - exit 1 -fi - -# should produce named UMD modules -if [[ "$FOO_JS" != *"define(\"npm_bazel_typescript/examples/foo\""* ]]; then - echo "Expected foo.js to declare named module, but was" - echo "$FOO_JS" - exit 1 -fi - -# should produce es2015 classes -if [[ "$FOO_JS" != *"class Greeter"* ]]; then - echo "Expected foo.js produce a es2015, but was" - echo "$FOO_JS" - exit 1 -fi \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/BUILD.bazel deleted file mode 100644 index 249e7282b1..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/BUILD.bazel +++ /dev/null @@ -1,44 +0,0 @@ -load("//:defs.bzl", "ts_devserver") -load("//internal:defaults.bzl", "ts_library") - -ts_library( - name = "app", - srcs = ["app.ts"], - tsconfig = "//examples:tsconfig.json", - deps = [ - "@npm//@types/node", - ], -) - -ts_devserver( - name = "devserver", - additional_root_paths = [ - "npm/node_modules/tslib", - "npm_bazel_typescript/examples/devserver/", - ], - port = 80, - serving_path = "/bundle.js", - static_files = [ - # Files you want to import from the "additional_root_paths", still need to be explicitly specified - # as files that should be served. The root paths just make it more convenient to import those dependencies. - "@npm//tslib", - ":say-hello", - ":print-host", - ":index.html", - ], - # Dependencies that produce JavaScript output will be automatically picked up by ConcatJS and will be - # part of the serving_path bundle. - deps = [":app"], -) - -genrule( - name = "say-hello", - outs = ["say-hello.js"], - cmd = "echo 'console.log(\"Hello!\")' > $@", -) - -genrule( - name = "print-host", - outs = ["test/print-host.js"], - cmd = "echo 'console.log(location.host)' > $@", -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/app.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/app.ts deleted file mode 100644 index a200b403a4..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/app.ts +++ /dev/null @@ -1,7 +0,0 @@ -const body = document.body; -const textElement = document.createElement('span'); - -textElement.innerText = 'Hello from TypeScript'; - -// Append element to the body. -body.appendChild(textElement); \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/index.html b/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/index.html deleted file mode 100644 index 991a2f184c..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/devserver/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - Devserver example - - - - - - - - - - - - - \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/BUILD.bazel deleted file mode 100644 index b5ff91c9fd..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/BUILD.bazel +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load(":es6_consumer.bzl", "es6_consumer") - -package(default_visibility = ["//visibility:public"]) - -es6_consumer( - name = "es6_output", - deps = ["//examples:bar_ts_library"], -) - -sh_test( - name = "es6_output_test", - srcs = ["es6_output_test.sh"], - data = [ - ":es6_output", - "@bazel_tools//tools/bash/runfiles", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_consumer.bzl b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_consumer.bzl deleted file mode 100644 index 16726baf67..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_consumer.bzl +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Example of a rule that requires ES6 inputs. -""" - -load("@build_bazel_rules_nodejs//internal/common:collect_es6_sources.bzl", "collect_es6_sources") - -def _es6_consumer(ctx): - es6_sources = collect_es6_sources(ctx) - - return [DefaultInfo( - files = es6_sources, - runfiles = ctx.runfiles(es6_sources.to_list()), - )] - -es6_consumer = rule( - implementation = _es6_consumer, - attrs = { - "deps": attr.label_list(), - }, -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_output_test.sh b/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_output_test.sh deleted file mode 100755 index c6a0102f06..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/es6_output/es6_output_test.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash -set -e - -# --- begin runfiles.bash initialization --- -# Source the runfiles library: -# https://github.com/bazelbuild/bazel/blob/master/tools/bash/runfiles/runfiles.bash -# The runfiles library defines rlocation, which is a platform independent function -# used to lookup the runfiles locations. This code snippet is needed at the top -# of scripts that use rlocation to lookup the location of runfiles.bash and source it -if [[ ! -d "${RUNFILES_DIR:-/dev/null}" && ! -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then - if [[ -f "$0.runfiles_manifest" ]]; then - export RUNFILES_MANIFEST_FILE="$0.runfiles_manifest" - elif [[ -f "$0.runfiles/MANIFEST" ]]; then - export RUNFILES_MANIFEST_FILE="$0.runfiles/MANIFEST" - elif [[ -f "$0.runfiles/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then - export RUNFILES_DIR="$0.runfiles" - fi -fi -if [[ -f "${RUNFILES_DIR:-/dev/null}/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then - source "${RUNFILES_DIR}/bazel_tools/tools/bash/runfiles/runfiles.bash" -elif [[ -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then - source "$(grep -m1 "^bazel_tools/tools/bash/runfiles/runfiles.bash " \ - "$RUNFILES_MANIFEST_FILE" | cut -d ' ' -f 2-)" -else - echo >&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash" - exit 1 -fi -# --- end runfiles.bash initialization --- - -readonly FOO_JS=$(cat $(rlocation "npm_bazel_typescript/examples/es6_output/es6_output.es6/examples/foo.js")) -readonly BAR_JS=$(cat $(rlocation "npm_bazel_typescript/examples/es6_output/es6_output.es6/examples/bar.js")) -readonly LIBRARY_JS=$(cat $(rlocation "npm_bazel_typescript/examples/es6_output/es6_output.es6/examples/some_library/library.js")) - -# should not down-level ES2015 syntax, eg. `class` -if [[ "$FOO_JS" != *"class Greeter"* ]]; then - echo "Expected foo.js to contain 'class Greeter' but was" - echo "$FOO_JS" - exit 1 -fi - -# should not down-level ES Modules -if [[ "$LIBRARY_JS" != *"export const cool = 1;"* ]]; then - echo "Expected library.js to contain 'export const cool = 1;' but was" - echo "$LIBRARY_JS" - exit 1 -fi - -# should not down-level dynamic import -if [[ "$BAR_JS" != *"import('./foo')"* ]]; then - echo "Expected bar.js to contain 'import('./foo')' but was" - echo "$BAR_JS" - exit 1 -fi diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/foo.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/foo.ts deleted file mode 100644 index b05c8cef25..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/foo.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @license - * Copyright 2017 The Bazel Authors. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import {Polite} from './types'; - -export class Greeter implements Polite { - constructor(public greeting: string) {} - greet(): Promise { - return Promise.resolve('

' + this.greeting + '

'); - } -} - -export const greeter = new Greeter('Hello, world!'); -greeter.greet().then(msg => { document.body.innerHTML = msg; }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/BUILD.bazel deleted file mode 100644 index d78698146b..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/generated_ts/BUILD.bazel +++ /dev/null @@ -1,14 +0,0 @@ -load("//internal:defaults.bzl", "ts_library") - -package(default_visibility = ["//visibility:public"]) - -genrule( - name = "foo_ts", - outs = ["foo.ts"], - cmd = "echo 'export const a = 1;' > $@", -) - -ts_library( - name = "generated_ts", - srcs = [":foo.ts"], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/BUILD.bazel deleted file mode 100644 index efaa52e7db..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/BUILD.bazel +++ /dev/null @@ -1,23 +0,0 @@ -load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test") -load("//examples/devmode_consumer:devmode_consumer.bzl", "devmode_consumer") -load("//internal:defaults.bzl", "ts_library") - -ts_library( - name = "googmodule", - srcs = ["a.ts"], - tsconfig = "tsconfig.json", -) - -devmode_consumer( - name = "devmode_output", - deps = [":googmodule"], -) - -jasmine_node_test( - name = "googmodule_output_test", - srcs = ["googmodule_output_test.js"], - data = [ - ":devmode_output", - "@npm//jasmine", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/a.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/a.ts deleted file mode 100644 index 4f633f63d8..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/a.ts +++ /dev/null @@ -1 +0,0 @@ -const a: number = 1; diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/googmodule_output_test.js b/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/googmodule_output_test.js deleted file mode 100644 index 82d9e209d8..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/googmodule_output_test.js +++ /dev/null @@ -1,20 +0,0 @@ -const fs = require('fs'); - -describe('googmodule', () => { - let output; - beforeAll(() => { - output = require.resolve( - 'npm_bazel_typescript/examples/googmodule/a.js'); - }); - - it('should have goog module syntax in devmode', () => { - expect(fs.readFileSync(output, {encoding: 'utf-8'})) - .toContain( - `goog.module('npm_bazel_typescript.examples.googmodule.a')`); - }); - it('should have tsickle type annotations', () => { - expect(fs.readFileSync(output, { - encoding: 'utf-8' - })).toContain(`@type {number}`); - }); -}); \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/tsconfig.json deleted file mode 100644 index c3c478f793..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/googmodule/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - // Explicitly set types settings so typescript doesn't auto-discover types. - // If all types are discovered then all types need to be included as deps - // or typescript may error out with TS2688: Cannot find type definition file for 'foo'. - "types": [] - }, - "bazelOptions": { - "tsickle": true, - "googmodule": true - } -} \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel deleted file mode 100644 index 4594ffeff8..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/BUILD.bazel +++ /dev/null @@ -1,139 +0,0 @@ -load("@build_bazel_rules_nodejs//:defs.bzl", "http_server", "rollup_bundle") -load("@io_bazel_rules_go//go:def.bzl", "go_library") -load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") -load("@npm_bazel_karma//:defaults.bzl", "ts_web_test_suite") -load( - "//:defs.bzl", - "ts_devserver", - "ts_proto_library", -) -load("//internal:defaults.bzl", "ts_library") - -proto_library( - name = "tire_proto", - srcs = ["tire.proto"], -) - -proto_library( - name = "car_proto", - srcs = ["car.proto"], - deps = [":tire_proto"], -) - -ts_proto_library( - # The result will be "car.d.ts" named after this target. - # We could use the output_name attribute if we want the output named - # differently than the target. - name = "car", - deps = [":car_proto"], -) - -ts_library( - name = "test_lib", - testonly = True, - srcs = ["car.spec.ts"], - tsconfig = "//examples:tsconfig-test", - deps = [ - ":car", - "@npm//@types/jasmine", - "@npm//@types/long", - "@npm//@types/node", - "@npm//long", - ], -) - -ts_web_test_suite( - name = "test", - bootstrap = ["@npm_bazel_typescript//:protobufjs_bootstrap_scripts"], - browsers = [ - "@io_bazel_rules_webtesting//browsers:chromium-local", - "@io_bazel_rules_webtesting//browsers:firefox-local", - ], - deps = ["test_lib"], -) - -ts_library( - name = "app", - srcs = ["app.ts"], - deps = [":car"], -) - -ts_devserver( - name = "devserver", - bootstrap = ["@npm_bazel_typescript//:protobufjs_bootstrap_scripts"], - entry_module = "npm_bazel_typescript/examples/protocol_buffers/app", - port = 8080, - deps = [":bundle"], -) - -# Test for production mode -rollup_bundle( - name = "bundle", - entry_point = "examples/protocol_buffers/app", - # TODO(alexeagle): we should be able to get this from //:protobufjs_bootstrap_scripts - # and automatically plumb it through to Rollup. - globals = { - "long": "Long", - "protobufjs/minimal": "protobuf", - }, - deps = [":app"], -) - -# Needed because the prodserver only loads static files that appear under this -# package. -genrule( - name = "protobufjs", - srcs = [ - "@build_bazel_rules_typescript_protobufs_compiletime_deps//node_modules/protobufjs:dist/minimal/protobuf.min.js", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//node_modules/long:dist/long.js", - ], - outs = [ - "protobuf.min.js", - "long.js", - ], - cmd = "outs=($(OUTS)); d=$$(dirname $${outs[0]}); for s in $(SRCS); do cp $$s $$d; done", -) - -http_server( - name = "prodserver", - data = [ - "index.html", - ":bundle", - ":protobufjs", - ], -) - -ts_library( - name = "e2e", - testonly = 1, - srcs = ["app_e2e_test.ts"], - tsconfig = "//examples:tsconfig-test", - deps = [ - "@npm//@types/jasmine", - "@npm//@types/node", - "@npm//protractor", - ], -) - -proto_library( - name = "rules_typescript_proto", - srcs = [ - "car.proto", - "tire.proto", - ], - visibility = ["//visibility:public"], -) - -go_proto_library( - name = "rules_typescript_go_proto", - importpath = "github.com/bazelbuild/rules_typescript/examples/protocol_buffers", - proto = ":rules_typescript_proto", - visibility = ["//visibility:public"], -) - -go_library( - name = "go_default_library", - embed = [":rules_typescript_go_proto"], - importpath = "github.com/bazelbuild/rules_typescript/examples/protocol_buffers", - visibility = ["//visibility:public"], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app.ts deleted file mode 100644 index 0cf23d9a02..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app.ts +++ /dev/null @@ -1,8 +0,0 @@ -import {Car} from './car'; - -const serverResponse = `{"make": "Porsche"}`; -const car = Car.create(JSON.parse(serverResponse)); -const el: HTMLDivElement = document.createElement('div'); -el.innerText = `Car from server: ${car.make}`; -el.className = 'ts1'; -document.body.appendChild(el); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app_e2e_test.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app_e2e_test.ts deleted file mode 100644 index 639392e105..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/app_e2e_test.ts +++ /dev/null @@ -1,25 +0,0 @@ -import {browser, by, element, ExpectedConditions} from 'protractor'; - -// This test uses Protractor without Angular, so disable Angular features -browser.waitForAngularEnabled(false); - -// Since we don't have a protractor bazel rule yet, the test is brought up in -// parallel with building the service under test. So the timeout must include -// compiling the application as well as starting the server. -const timeoutMs = 90 * 1000; - -describe('protocol_buffers', () => { - beforeAll(() => { - browser.get(''); - // Don't run any specs until we see a
on the page. - browser.wait( - ExpectedConditions.presenceOf(element(by.css('div.ts1'))), - timeoutMs); - }, timeoutMs); - - it('should display: Car from server: Porsche', (done) => { - const div = element(by.css('div.ts1')); - div.getText().then(t => expect(t).toEqual(`Car from server: Porsche`)); - done(); - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/car.proto b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/car.proto deleted file mode 100644 index d8b04d148c..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/car.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -import "examples/protocol_buffers/tire.proto"; - -message Car { - string make = 1; - string model = 2; - int32 year = 3; - Tire front_tires = 4; - Tire rear_tires = 5; - int64 mileage = 6; -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/car.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/car.spec.ts deleted file mode 100644 index 803b9df2dd..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/car.spec.ts +++ /dev/null @@ -1,35 +0,0 @@ -import {Car} from './car'; -import Long = require('long'); - -describe('protocol buffers', () => { - - it('allows creation of an object described by proto', () => { - const pontiac = Car.create({ - make: "pontiac", - frontTires: { - width: 225, - aspectRatio: 65, - construction: 'R', - diameter: 17, - }, - }); - expect(pontiac.make).toEqual('pontiac'); - if (!pontiac.frontTires) { - fail('Should have frontTires set'); - } else { - expect(pontiac.frontTires.width).toEqual(225); - } - }); - - // Asserts that longs are handled correctly. - // This value comes from https://github.com/dcodeIO/long.js#background - it('handles long values correctly', () => { - const pontiac = Car.create({ - make: "pontiac", - // Long.MAX_VALUE - mileage: new Long(0xFFFFFFFF, 0x7FFFFFFF), - }); - const object = Car.toObject(pontiac, {longs: String}); - expect(object["mileage"]).toEqual("9223372036854775807"); - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/index.html b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/index.html deleted file mode 100644 index 6f8690ee3e..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - protocol_buffers example - - - - - - - \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/tire.proto b/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/tire.proto deleted file mode 100644 index a7de133aa3..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/protocol_buffers/tire.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -message Tire { - string type = 1; - int32 width = 2; - int32 aspect_ratio = 3; - string construction = 4; - int32 diameter = 5; - int32 load_index = 6; - string speed_rating = 7; -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/BUILD.bazel deleted file mode 100644 index 2668d2c9c4..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/BUILD.bazel +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("//internal:defaults.bzl", "ts_library") - -package(default_visibility = ["//visibility:public"]) - -ts_library( - name = "lib", - srcs = ["library.ts"], - # Allow this library to be imported from `some-lib` - module_name = "some-lib", - # The imported path should be the library.d.ts file - module_root = "library", -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/library.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/library.ts deleted file mode 100644 index 1cc6cf3008..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/some_library/library.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * Copyright 2017 The Bazel Authors. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export const cool = 1; diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/BUILD.bazel deleted file mode 100644 index ecd8224ac0..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/BUILD.bazel +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary") -load("//internal:defaults.bzl", "ts_library") - -package(default_visibility = ["//visibility:public"]) - -# We compile this library with the module name "sm" to make it possible to -# use `import {} from 'sm';` both at type-check time (we include the mapping in -# the paths map in tsconfig) as well as runtime (we patch the nodejs module -# loader to discover the path in the runfiles). -ts_library( - name = "some_module", - srcs = ["index.ts"], - module_name = "sm", -) - -ts_library( - name = "main", - srcs = ["main.ts"], - deps = [":some_module"], -) - -nodejs_binary( - name = "bin", - data = [ - ":main", - ":some_module", - ], - entry_point = "npm_bazel_typescript/examples/some_module/main.js", -) - -sh_test( - name = "module_load_test", - srcs = ["module_load_test.sh"], - data = [ - ":bin", - "@bazel_tools//tools/bash/runfiles", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/index.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/index.ts deleted file mode 100644 index 0f0c4133f8..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function hello() { - console.log("hello world"); -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/main.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/main.ts deleted file mode 100644 index bb7d4224d0..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/main.ts +++ /dev/null @@ -1,4 +0,0 @@ -import {hello} from 'sm'; - -hello(); - diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/module_load_test.sh b/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/module_load_test.sh deleted file mode 100755 index 752979aea4..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/some_module/module_load_test.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -set -e - -# --- begin runfiles.bash initialization --- -# Source the runfiles library: -# https://github.com/bazelbuild/bazel/blob/master/tools/bash/runfiles/runfiles.bash -# The runfiles library defines rlocation, which is a platform independent function -# used to lookup the runfiles locations. This code snippet is needed at the top -# of scripts that use rlocation to lookup the location of runfiles.bash and source it -if [[ ! -d "${RUNFILES_DIR:-/dev/null}" && ! -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then - if [[ -f "$0.runfiles_manifest" ]]; then - export RUNFILES_MANIFEST_FILE="$0.runfiles_manifest" - elif [[ -f "$0.runfiles/MANIFEST" ]]; then - export RUNFILES_MANIFEST_FILE="$0.runfiles/MANIFEST" - elif [[ -f "$0.runfiles/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then - export RUNFILES_DIR="$0.runfiles" - fi -fi -if [[ -f "${RUNFILES_DIR:-/dev/null}/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then - source "${RUNFILES_DIR}/bazel_tools/tools/bash/runfiles/runfiles.bash" -elif [[ -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then - source "$(grep -m1 "^bazel_tools/tools/bash/runfiles/runfiles.bash " \ - "$RUNFILES_MANIFEST_FILE" | cut -d ' ' -f 2-)" -else - echo >&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash" - exit 1 -fi -# --- end runfiles.bash initialization --- - -readonly OUT=$($(rlocation "npm_bazel_typescript/examples/some_module/bin")) - -if [ "$OUT" != "hello world" ]; then - echo "Expected output 'hello world' but was $OUT" - exit 1 -fi diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel deleted file mode 100644 index 133ee68ecf..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/BUILD.bazel +++ /dev/null @@ -1,96 +0,0 @@ -load("@npm_bazel_karma//:defaults.bzl", "karma_web_test_suite", "ts_web_test_suite") -load("//internal:defaults.bzl", "ts_library") - -ts_library( - name = "lib", - srcs = ["decrement.ts"], -) - -ts_library( - name = "tests", - testonly = 1, - srcs = glob(["*.spec.ts"]), - tsconfig = "//examples:tsconfig-test", - deps = [ - ":lib", - "@npm//@types/jasmine", - "@npm//@types/node", - ], -) - -ts_library( - name = "tests_setup", - testonly = 1, - srcs = ["setup_script.ts"], - tsconfig = "//examples:tsconfig-test", - deps = [ - "@npm//@types/jasmine", - "@npm//@types/node", - ], -) - -karma_web_test_suite( - name = "testing_karma", - browsers = [ - "@io_bazel_rules_webtesting//browsers:chromium-local", - "@io_bazel_rules_webtesting//browsers:firefox-local", - ], - config_file = ":karma.conf.js", - static_files = [ - "static_script.js", - ], - runtime_deps = [ - ":tests_setup", - ], - deps = [ - ":tests", - "@npm//karma-json-result-reporter", - ], -) - -karma_web_test_suite( - name = "testing_karma_sauce", - browsers = [ - "@io_bazel_rules_webtesting//browsers/sauce:chrome-win10", - ], - tags = [ - "sauce", - # TODO(alexeagle): enable on CI once we have set the SAUCE env variables - "manual", - ], - deps = [ - ":tests", - ], -) - -ts_web_test_suite( - name = "testing", - browsers = [ - "@io_bazel_rules_webtesting//browsers:chromium-local", - "@io_bazel_rules_webtesting//browsers:firefox-local", - ], - static_files = [ - "static_script.js", - ], - runtime_deps = [ - ":tests_setup", - ], - deps = [ - ":tests", - ], -) - -ts_web_test_suite( - name = "testing_sauce", - browsers = [ - "@io_bazel_rules_webtesting//browsers/sauce:chrome-win10", - ], - tags = [ - "sauce", - # TODO(alexeagle): enable on CI once we have set the SAUCE env variables - "manual", - ], - deps = [ - ":tests", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/decrement.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/decrement.spec.ts deleted file mode 100644 index bf1bd91dfb..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/decrement.spec.ts +++ /dev/null @@ -1,7 +0,0 @@ -import {decrement} from './decrement'; - -describe('decrementing', () => { - it('should do that', () => { - expect(decrement(1)).toBe(0); - }); -}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/decrement.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/decrement.ts deleted file mode 100644 index 7173ecc4c2..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/decrement.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function decrement(n: number) { - return n - 1; -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/karma.conf.js b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/karma.conf.js deleted file mode 100644 index f96e698bb4..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/karma.conf.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = function(config) { - config.set({ - plugins: ['karma-json-result-reporter'], - reporters: ['dots', 'progress', 'json-result'], - logLevel: config.LOG_DEBUG, - colors: false, - jsonResultReporter: { - outputFile: `${process.env['TEST_UNDECLARED_OUTPUTS_DIR']}/karma-result.json`, - isSynchronous: true, - }, - }); -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/setup_script.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/setup_script.spec.ts deleted file mode 100644 index 1b39eff876..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/setup_script.spec.ts +++ /dev/null @@ -1,9 +0,0 @@ -describe('setup script', () => { - it('should load before the spec', async () => { - expect((window as any).setupGlobal).toBe("setupGlobalValue"); - }); -}); - -// at least one import or export is needed for this file to -// be compiled into an named-UMD module by typescript -export {}; diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/setup_script.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/setup_script.ts deleted file mode 100644 index 7bca6f896b..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/setup_script.ts +++ /dev/null @@ -1,6 +0,0 @@ -// Setup global value that the test expect to be present. -(window as any).setupGlobal = "setupGlobalValue"; - -// at least one import or export is needed for this file to -// be compiled into an named-UMD module by typescript -export { }; diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.js b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.js deleted file mode 100644 index 06fd64ee2d..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.js +++ /dev/null @@ -1,2 +0,0 @@ -// Some test data that is loaded dynamically from the test -window.someGlobal = "someGlobalValue"; diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.spec.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.spec.ts deleted file mode 100644 index 6651308f31..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/static_script.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -const someGlobal = new Promise((resolve, reject) => { - const script = document.createElement('script'); - script.src = `base/npm_bazel_typescript/examples/testing/static_script.js`; - script.onerror = reject; - script.onload = () => { - document.body.removeChild(script); - resolve((window as any).someGlobal); - }; - document.body.appendChild(script); -}); - -describe('static script', () => { - it('should load', async () => { - expect(await someGlobal).toBe("someGlobalValue"); - }); -}); - -// at least one import or export is needed for this file to -// be compiled into an named-UMD module by typescript -export {}; diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/examples/testing/tsconfig.json deleted file mode 100644 index c4faf5a919..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/testing/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "compilerOptions": { - "strict": true, - "lib": ["es2015.promise", "dom", "es5"], - } -} - diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig-bar.json b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig-bar.json deleted file mode 100644 index 0307f474b2..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig-bar.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "strict": true, - "lib": ["es2015.promise", "dom", "es5"], - // Auto-discover all types in this configuration since we don't - // specify `types = []` and the ts_library rule depends on `@npm//@types`. - // Typescript will automatically discover all types under node_modules/@types - // and included them in the build. See getAutomaticTypeDirectiveNames in - // https://github.com/Microsoft/TypeScript/blob/master/src/compiler/moduleNameResolver.ts. - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig-test.json b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig-test.json deleted file mode 100644 index 634f399304..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig-test.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.json", - - "compilerOptions": { - "types": ["jasmine", "node"] - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig.json deleted file mode 100644 index 39b27cb2bb..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compilerOptions": { - "strict": true, - "lib": ["es2015.promise", "dom", "es5"], - // Include the output directory in rootDirs so that generated .d.ts files - // can be used for type-checking in the editor, for example the car.proto - // produces a car.d.ts. - "rootDirs": [".", "../bazel-bin/examples"], - // Explicitly set types settings so typescript doesn't auto-discover types. - // If all types are discovered then all types need to be included as deps - // or typescript may error out with TS2688: Cannot find type definition file for 'foo'. - "types": [] - } -} - diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/BUILD.bazel deleted file mode 100644 index 5125897124..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/BUILD.bazel +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("//:defs.bzl", "ts_config") -load("//internal:defaults.bzl", "ts_library") - -package(default_visibility = ["//visibility:public"]) - -# Because our tsconfig.json has an extends property, we must also tell the -# ts_library to include the extended tsconfig file in compilations. -# The ts_library rule will generate its own tsconfig which extends from the -# src file. -ts_config( - name = "tsconfig", - src = "tsconfig.json", - deps = ["tsconfig-base.json"], -) - -ts_library( - name = "tsconfig_extends", - srcs = [ - "uses_promise.ts", - ], - tsconfig = ":tsconfig", -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/tsconfig-base.json b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/tsconfig-base.json deleted file mode 100644 index 9aa1316ff0..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/tsconfig-base.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "lib": ["es2015.promise", "es5"], - // Explicitly set types settings so typescript doesn't auto-discover types. - // If all types are discovered then all types need to be included as deps - // or typescript may error out with TS2688: Cannot find type definition file for 'foo'. - "types": [] - } -} \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/tsconfig.json deleted file mode 100644 index 712de299b0..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig-base" -} - diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/uses_promise.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/uses_promise.ts deleted file mode 100644 index 4d2e73b457..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/tsconfig_extends/uses_promise.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function hiLater(): Promise { - return Promise.resolve('hi'); -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/examples/types.d.ts b/third_party/github.com/bazelbuild/rules_typescript/examples/types.d.ts deleted file mode 100644 index d23a060361..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/examples/types.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface Polite { - greet(): Promise; -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 375a5ce359..d953a0105a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -16,7 +16,7 @@ load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test", "nodejs_binary") load("@bazel_skylib//:bzl_library.bzl", "bzl_library") -load("//internal:defaults.bzl", "ts_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_library") package(default_visibility = ["//visibility:public"]) @@ -87,7 +87,7 @@ nodejs_binary( "@npm//tsutils", "@npm//typescript", ], - entry_point = "npm_bazel_typescript/internal/tsc_wrapped/tsc_wrapped.js", + entry_point = "build_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js", visibility = ["//visibility:public"], ) @@ -95,6 +95,7 @@ ts_library( name = "test_lib", srcs = glob(["tsc_wrapped/*_test.ts"]) + ["tsc_wrapped/test_support.ts"], tsconfig = "//internal:tsc_wrapped/tsconfig.json", + compiler = "@build_bazel_rules_typescript//internal:tsc_wrapped_bin", deps = [ ":tsc_wrapped", "@npm//@types/jasmine", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl deleted file mode 100644 index 16395468c1..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/build_defs.bzl +++ /dev/null @@ -1,407 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"TypeScript compilation" - -load("@build_bazel_rules_nodejs//internal/common:node_module_info.bzl", "NodeModuleInfo", "collect_node_modules_aspect") - -# pylint: disable=unused-argument -# pylint: disable=missing-docstring -load(":common/compilation.bzl", "COMMON_ATTRIBUTES", "DEPS_ASPECTS", "compile_ts", "ts_providers_dict_to_struct") -load(":common/tsconfig.bzl", "create_tsconfig") -load(":ts_config.bzl", "TsConfigInfo") - -_DEFAULT_COMPILER = "@npm//@bazel/typescript/bin:tsc_wrapped" - -def _trim_package_node_modules(package_name): - # trim a package name down to its path prior to a node_modules - # segment. 'foo/node_modules/bar' would become 'foo' and - # 'node_modules/bar' would become '' - segments = [] - for n in package_name.split("/"): - if n == "node_modules": - break - segments += [n] - return "/".join(segments) - -def _compute_node_modules_root(ctx): - """Computes the node_modules root from the node_modules and deps attributes. - - Args: - ctx: the skylark execution context - - Returns: - The node_modules root as a string - """ - node_modules_root = None - if ctx.files.node_modules: - # ctx.files.node_modules is not an empty list - node_modules_root = "/".join([f for f in [ - ctx.attr.node_modules.label.workspace_root, - _trim_package_node_modules(ctx.attr.node_modules.label.package), - "node_modules", - ] if f]) - for d in ctx.attr.deps: - if NodeModuleInfo in d: - possible_root = "/".join(["external", d[NodeModuleInfo].workspace, "node_modules"]) - if not node_modules_root: - node_modules_root = possible_root - elif node_modules_root != possible_root: - fail("All npm dependencies need to come from a single workspace. Found '%s' and '%s'." % (node_modules_root, possible_root)) - if not node_modules_root: - # there are no fine grained deps and the node_modules attribute is an empty filegroup - # but we still need a node_modules_root even if its empty - node_modules_root = "/".join([f for f in [ - ctx.attr.node_modules.label.workspace_root, - ctx.attr.node_modules.label.package, - "node_modules", - ] if f]) - return node_modules_root - -def _filter_ts_inputs(all_inputs): - return [ - f - for f in all_inputs - if f.path.endswith(".js") or f.path.endswith(".ts") or f.path.endswith(".json") - ] - -def _compile_action(ctx, inputs, outputs, tsconfig_file, node_opts, description = "prodmode"): - externs_files = [] - action_inputs = [] - action_outputs = [] - for output in outputs: - if output.basename.endswith(".externs.js"): - externs_files.append(output) - elif output.basename.endswith(".es5.MF"): - ctx.actions.write(output, content = "") - else: - action_outputs.append(output) - - # TODO(plf): For now we mock creation of files other than {name}.js. - for externs_file in externs_files: - ctx.actions.write(output = externs_file, content = "") - - # A ts_library that has only .d.ts inputs will have no outputs, - # therefore there are no actions to execute - if not action_outputs: - return None - - action_inputs.extend(_filter_ts_inputs(ctx.files.node_modules)) - - # Also include files from npm fine grained deps as action_inputs. - # These deps are identified by the NodeModuleInfo provider. - for d in ctx.attr.deps: - if NodeModuleInfo in d: - action_inputs.extend(_filter_ts_inputs(d.files.to_list())) - - if ctx.file.tsconfig: - action_inputs.append(ctx.file.tsconfig) - if TsConfigInfo in ctx.attr.tsconfig: - action_inputs.extend(ctx.attr.tsconfig[TsConfigInfo].deps) - - # Pass actual options for the node binary in the special "--node_options" argument. - arguments = ["--node_options=%s" % opt for opt in node_opts] - - # One at-sign makes this a params-file, enabling the worker strategy. - # Two at-signs escapes the argument so it's passed through to tsc_wrapped - # rather than the contents getting expanded. - if ctx.attr.supports_workers: - arguments.append("@@" + tsconfig_file.path) - mnemonic = "TypeScriptCompile" - else: - arguments.append("-p") - arguments.append(tsconfig_file.path) - mnemonic = "tsc" - - ctx.actions.run( - progress_message = "Compiling TypeScript (%s) %s" % (description, ctx.label), - mnemonic = mnemonic, - inputs = depset(action_inputs, transitive = [inputs]), - outputs = action_outputs, - # Use the built-in shell environment - # Allow for users who set a custom shell that can locate standard binaries like tr and uname - # See https://github.com/NixOS/nixpkgs/issues/43955#issuecomment-407546331 - use_default_shell_env = True, - arguments = arguments, - executable = ctx.executable.compiler, - execution_requirements = { - "supports-workers": str(int(ctx.attr.supports_workers)), - }, - ) - - # Enable the replay_params in case an aspect needs to re-build this library. - return struct( - label = ctx.label, - tsconfig = tsconfig_file, - inputs = depset(action_inputs, transitive = [inputs]), - outputs = action_outputs, - compiler = ctx.executable.compiler, - ) - -def _devmode_compile_action(ctx, inputs, outputs, tsconfig_file, node_opts): - _compile_action( - ctx, - inputs, - outputs, - tsconfig_file, - node_opts, - description = "devmode", - ) - -def tsc_wrapped_tsconfig( - ctx, - files, - srcs, - devmode_manifest = None, - jsx_factory = None, - **kwargs): - """Produce a tsconfig.json that sets options required under Bazel. - """ - - # The location of tsconfig.json is interpreted as the root of the project - # when it is passed to the TS compiler with the `-p` option: - # https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. - # Our tsconfig.json is in bazel-foo/bazel-out/local-fastbuild/bin/{package_path} - # because it's generated in the execution phase. However, our source files are in - # bazel-foo/ and therefore we need to strip some parent directories for each - # f.path. - - node_modules_root = _compute_node_modules_root(ctx) - config = create_tsconfig( - ctx, - files, - srcs, - devmode_manifest = devmode_manifest, - node_modules_root = node_modules_root, - **kwargs - ) - config["bazelOptions"]["nodeModulesPrefix"] = node_modules_root - - # Override the target so we use es2015 for devmode - # Since g3 isn't ready to do this yet - config["compilerOptions"]["target"] = "es2015" - - # If the user gives a tsconfig attribute, the generated file should extend - # from the user's tsconfig. - # See https://github.com/Microsoft/TypeScript/issues/9876 - # We subtract the ".json" from the end before handing to TypeScript because - # this gives extra error-checking. - if ctx.file.tsconfig: - workspace_path = config["compilerOptions"]["rootDir"] - config["extends"] = "/".join([workspace_path, ctx.file.tsconfig.path[:-len(".json")]]) - - if jsx_factory: - config["compilerOptions"]["jsxFactory"] = jsx_factory - - tsetse_disabled_rules = [] - - # Matches section in javascript/typescript/tsconfig.bzl - # TODO(alexeagle): make them share code - if ctx.label.workspace_root.startswith("external/"): - # Violated by rxjs - tsetse_disabled_rules += ["ban-promise-as-condition"] - - # For local testing - tsetse_disabled_rules += ["check-return-value"] - - config["compilerOptions"]["plugins"] = [{ - "name": "@bazel/tsetse", - "disabledRules": tsetse_disabled_rules, - }] - - return config - -# ************ # -# ts_library # -# ************ # - -def _ts_library_impl(ctx): - """Implementation of ts_library. - - Args: - ctx: the context. - - Returns: - the struct returned by the call to compile_ts. - """ - ts_providers = compile_ts( - ctx, - is_library = True, - # Filter out the node_modules from deps passed to TypeScript compiler - # since they don't have the required providers. - # They were added to the action inputs for tsc_wrapped already. - # strict_deps checking currently skips node_modules. - # TODO(alexeagle): turn on strict deps checking when we have a real - # provider for JS/DTS inputs to ts_library. - deps = [d for d in ctx.attr.deps if not NodeModuleInfo in d], - compile_action = _compile_action, - devmode_compile_action = _devmode_compile_action, - tsc_wrapped_tsconfig = tsc_wrapped_tsconfig, - ) - return ts_providers_dict_to_struct(ts_providers) - -local_deps_aspects = [collect_node_modules_aspect] - -# Workaround skydoc bug which assumes DEPS_ASPECTS is a str type -[local_deps_aspects.append(a) for a in DEPS_ASPECTS] - -ts_library = rule( - _ts_library_impl, - attrs = dict(COMMON_ATTRIBUTES, **{ - "srcs": attr.label_list( - doc = "The TypeScript source files to compile.", - allow_files = [".ts", ".tsx"], - mandatory = True, - ), - "compile_angular_templates": attr.bool( - doc = """Run the Angular ngtsc compiler under ts_library""", - ), - "compiler": attr.label( - doc = """Sets a different TypeScript compiler binary to use for this library. - For example, we use the vanilla TypeScript tsc.js for bootstrapping, - and Angular compilations can replace this with `ngc`. - - The default ts_library compiler depends on the `@npm//@bazel/typescript` - target which is setup for projects that use bazel managed npm deps that - fetch the @bazel/typescript npm package. It is recommended that you use - the workspace name `@npm` for bazel managed deps so the default - compiler works out of the box. Otherwise, you'll have to override - the compiler attribute manually. - """, - default = Label(_DEFAULT_COMPILER), - allow_files = True, - executable = True, - cfg = "host", - ), - "internal_testing_type_check_dependencies": attr.bool(default = False, doc = "Testing only, whether to type check inputs that aren't srcs."), - "node_modules": attr.label( - doc = """The npm packages which should be available during the compile. - - The default value is `@npm//typescript:typescript__typings` is setup - for projects that use bazel managed npm deps that. It is recommended - that you use the workspace name `@npm` for bazel managed deps so the - default node_modules works out of the box. Otherwise, you'll have to - override the node_modules attribute manually. This default is in place - since ts_library will always depend on at least the typescript - default libs which are provided by `@npm//typescript:typescript__typings`. - - This attribute is DEPRECATED. As of version 0.18.0 the recommended - approach to npm dependencies is to use fine grained npm dependencies - which are setup with the `yarn_install` or `npm_install` rules. - - For example, in targets that used a `//:node_modules` filegroup, - - ``` - ts_library( - name = "my_lib", - ... - node_modules = "//:node_modules", - ) - ``` - - which specifies all files within the `//:node_modules` filegroup - to be inputs to the `my_lib`. Using fine grained npm dependencies, - `my_lib` is defined with only the npm dependencies that are - needed: - - ``` - ts_library( - name = "my_lib", - ... - deps = [ - "@npm//@types/foo", - "@npm//@types/bar", - "@npm//foo", - "@npm//bar", - ... - ], - ) - ``` - - In this case, only the listed npm packages and their - transitive deps are includes as inputs to the `my_lib` target - which reduces the time required to setup the runfiles for this - target (see https://github.com/bazelbuild/bazel/issues/5153). - The default typescript libs are also available via the node_modules - default in this case. - - The @npm external repository and the fine grained npm package - targets are setup using the `yarn_install` or `npm_install` rule - in your WORKSPACE file: - - yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", - ) - """, - default = Label("@npm//typescript:typescript__typings"), - ), - "supports_workers": attr.bool( - doc = """Intended for internal use only. - Allows you to disable the Bazel Worker strategy for this library. - Typically used together with the "compiler" setting when using a - non-worker aware compiler binary.""", - default = True, - ), - - # TODO(alexeagle): reconcile with google3: ts_library rules should - # be portable across internal/external, so we need this attribute - # internally as well. - "tsconfig": attr.label( - doc = """A tsconfig.json file containing settings for TypeScript compilation. - Note that some properties in the tsconfig are governed by Bazel and will be - overridden, such as `target` and `module`. - - The default value is set to `//:tsconfig.json` by a macro. This means you must - either: - - - Have your `tsconfig.json` file in the workspace root directory - - Use an alias in the root BUILD.bazel file to point to the location of tsconfig: - `alias(name="tsconfig.json", actual="//path/to:tsconfig-something.json")` - - Give an explicit `tsconfig` attribute to all `ts_library` targets - """, - allow_single_file = True, - ), - "tsickle_typed": attr.bool(default = True), - "deps": attr.label_list(aspects = local_deps_aspects), - }), - outputs = { - "tsconfig": "%{name}_tsconfig.json", - }, -) -""" -`ts_library` type-checks and compiles a set of TypeScript sources to JavaScript. - -It produces declarations files (`.d.ts`) which are used for compiling downstream -TypeScript targets and JavaScript for the browser and Closure compiler. -""" - -def ts_library_macro(tsconfig = None, **kwargs): - """Wraps `ts_library` to set the default for the `tsconfig` attribute. - - This must be a macro so that the string is converted to a label in the context of the - workspace that declares the `ts_library` target, rather than the workspace that defines - `ts_library`, or the workspace where the build is taking place. - - This macro is re-exported as `ts_library` in the public API. - - Args: - tsconfig: the label pointing to a tsconfig.json file - **kwargs: remaining args to pass to the ts_library rule - """ - if not tsconfig: - tsconfig = "//:tsconfig.json" - - ts_library(tsconfig = tsconfig, **kwargs) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/defaults.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/defaults.bzl deleted file mode 100644 index 9ef73e2f93..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/defaults.bzl +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"Defaults for rules_typescript repository not meant to be used downstream" - -load( - "@npm_bazel_typescript//:defs.bzl", - _ts_library = "ts_library", -) - -# We can't use the defaults for ts_library compiler and ts_web_test_suite karma -# internally because the defaults are .js dependencies on the npm packages that are -# published and internally we are building the things themselves to publish to npm -INTERNAL_TS_LIBRARY_COMPILER = "@npm_bazel_typescript//internal:tsc_wrapped_bin" - -def ts_library(compiler = INTERNAL_TS_LIBRARY_COMPILER, **kwargs): - _ts_library(compiler = compiler, **kwargs) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD deleted file mode 100644 index 25b03e1537..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/BUILD +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -licenses(["notice"]) # Apache 2.0 - -package(default_visibility = [ - "//third_party/bazel_rules/rules_typescript/internal:__subpackages__", -]) - -exports_files([ - "launcher_template.sh", - # Exported to be consumed for generating skydoc. - "ts_devserver.bzl", -]) - -filegroup( - name = "source_tree", - srcs = glob(["**/*"]), -) - -filegroup( - name = "npm_package_assets", - srcs = [ - "BUILD", - "launcher_template.sh", - "package.json", - "ts_devserver.bzl", - "yarn.lock", - ], - visibility = ["//internal:__pkg__"], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/README.md b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/README.md deleted file mode 100644 index 7000c25126..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# TypeScript devserver - -This development server is very simple. It's meant to be a convenient step in -the "getting started" workflow. Once you have any real requirements, you should -develop against your real frontend server instead. - -This devserver includes the "concatjs" bundling strategy. If you use a different -frontend server, you should port this library to whatever language you run in. - diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/launcher_template.sh b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/launcher_template.sh deleted file mode 100644 index 13722a99c1..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/launcher_template.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash - -# Copyright 2018 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -e - -# --- begin runfiles.bash initialization --- -# Source the runfiles library: -# https://github.com/bazelbuild/bazel/blob/master/tools/bash/runfiles/runfiles.bash -# The runfiles library defines rlocation, which is a platform independent function -# used to lookup the runfiles locations. This code snippet is needed at the top -# of scripts that use rlocation to lookup the location of runfiles.bash and source it -if [[ ! -d "${RUNFILES_DIR:-/dev/null}" && ! -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then - if [[ -f "$0.runfiles_manifest" ]]; then - export RUNFILES_MANIFEST_FILE="$0.runfiles_manifest" - elif [[ -f "$0.runfiles/MANIFEST" ]]; then - export RUNFILES_MANIFEST_FILE="$0.runfiles/MANIFEST" - elif [[ -f "$0.runfiles/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then - export RUNFILES_DIR="$0.runfiles" - fi -fi -if [[ -f "${RUNFILES_DIR:-/dev/null}/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then - source "${RUNFILES_DIR}/bazel_tools/tools/bash/runfiles/runfiles.bash" -elif [[ -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then - source "$(grep -m1 "^bazel_tools/tools/bash/runfiles/runfiles.bash " \ - "$RUNFILES_MANIFEST_FILE" | cut -d ' ' -f 2-)" -else - echo >&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash" - exit 1 -fi -# --- end runfiles.bash initialization --- - - -readonly main=$(rlocation "TEMPLATED_main") -readonly manifest=$(rlocation "TEMPLATED_manifest") -readonly scripts_manifest=$(rlocation "TEMPLATED_scripts_manifest") - -# Workaround for https://github.com/bazelbuild/bazel/issues/6764 -# If this issue is incorporated into Bazel, the workaround here should be removed. -MSYS2_ARG_CONV_EXCL="*" "${main}" \ - -packages=TEMPLATED_packages \ - -serving_path=TEMPLATED_serving_path \ - -entry_module=TEMPLATED_entry_module \ - -port=TEMPLATED_port \ - -manifest="${manifest}" \ - -scripts_manifest="${scripts_manifest}" \ - "$@" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/package.json deleted file mode 100644 index 5391d982e5..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "description": "runtime dependencies for devserver", - "devDependencies": { - "requirejs": "2.3.5" - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl deleted file mode 100644 index 399bd4e356..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/ts_devserver.bzl +++ /dev/null @@ -1,264 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"Simple development server" - -load("@build_bazel_rules_nodejs//internal/common:sources_aspect.bzl", "sources_aspect") -load( - "@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", - "write_amd_names_shim", -) -load( - "@build_bazel_rules_nodejs//internal/web_package:web_package.bzl", - "html_asset_inject", -) - -# Helper function to convert a short path to a path that is -# found in the MANIFEST file. -def _short_path_to_manifest_path(ctx, short_path): - if short_path.startswith("../"): - return short_path[3:] - else: - return ctx.workspace_name + "/" + short_path - -def _ts_devserver(ctx): - files = depset() - for d in ctx.attr.deps: - if hasattr(d, "node_sources"): - files = depset(transitive = [files, d.node_sources]) - elif hasattr(d, "files"): - files = depset(transitive = [files, d.files]) - - if ctx.label.workspace_root: - # We need the workspace_name for the target being visited. - # Skylark doesn't have this - instead they have a workspace_root - # which looks like "external/repo_name" - so grab the second path segment. - # TODO(alexeagle): investigate a better way to get the workspace name - workspace_name = ctx.label.workspace_root.split("/")[1] - else: - workspace_name = ctx.workspace_name - - # Create a manifest file with the sources in arbitrary order, and without - # bazel-bin prefixes ("root-relative paths"). - # TODO(alexeagle): we should experiment with keeping the files toposorted, to - # see if we can get performance gains out of the module loader. - ctx.actions.write(ctx.outputs.manifest, "".join([ - workspace_name + "/" + f.short_path + "\n" - for f in files.to_list() - ])) - - amd_names_shim = ctx.actions.declare_file( - "_%s.amd_names_shim.js" % ctx.label.name, - sibling = ctx.outputs.script, - ) - write_amd_names_shim(ctx.actions, amd_names_shim, ctx.attr.bootstrap) - - # Requirejs is always needed so its included as the first script - # in script_files before any user specified scripts for the devserver - # to concat in order. - script_files = [] - script_files.extend(ctx.files.bootstrap) - script_files.append(ctx.file._requirejs_script) - script_files.append(amd_names_shim) - script_files.extend(ctx.files.scripts) - ctx.actions.write(ctx.outputs.scripts_manifest, "".join([ - workspace_name + "/" + f.short_path + "\n" - for f in script_files - ])) - - devserver_runfiles = [ - ctx.executable._devserver, - ctx.outputs.manifest, - ctx.outputs.scripts_manifest, - ] - devserver_runfiles += ctx.files.static_files - devserver_runfiles += script_files - devserver_runfiles += ctx.files._bash_runfile_helpers - - if ctx.file.index_html: - injected_index = ctx.actions.declare_file("index.html") - bundle_script = ctx.attr.serving_path - if bundle_script.startswith("/"): - bundle_script = bundle_script[1:] - html_asset_inject( - ctx.file.index_html, - ctx.actions, - ctx.executable._injector, - ctx.attr.additional_root_paths + [ - ctx.label.package, - "/".join([ctx.bin_dir.path, ctx.label.package]), - "/".join([ctx.genfiles_dir.path, ctx.label.package]), - ], - [_short_path_to_manifest_path(ctx, f.short_path) for f in ctx.files.static_files] + [bundle_script], - injected_index, - ) - devserver_runfiles += [injected_index] - - packages = depset(["/".join([workspace_name, ctx.label.package])] + ctx.attr.additional_root_paths) - - ctx.actions.expand_template( - template = ctx.file._launcher_template, - output = ctx.outputs.script, - substitutions = { - "TEMPLATED_entry_module": ctx.attr.entry_module, - "TEMPLATED_main": _short_path_to_manifest_path(ctx, ctx.executable._devserver.short_path), - "TEMPLATED_manifest": _short_path_to_manifest_path(ctx, ctx.outputs.manifest.short_path), - "TEMPLATED_packages": ",".join(packages.to_list()), - "TEMPLATED_port": str(ctx.attr.port), - "TEMPLATED_scripts_manifest": _short_path_to_manifest_path(ctx, ctx.outputs.scripts_manifest.short_path), - "TEMPLATED_serving_path": ctx.attr.serving_path if ctx.attr.serving_path else "", - "TEMPLATED_workspace": workspace_name, - }, - is_executable = True, - ) - - return [DefaultInfo( - runfiles = ctx.runfiles( - files = devserver_runfiles, - # We don't expect executable targets to depend on the devserver, but if they do, - # they can see the JavaScript code. - transitive_files = depset(ctx.files.data, transitive = [files]), - collect_data = True, - collect_default = True, - ), - )] - -ts_devserver = rule( - implementation = _ts_devserver, - attrs = { - "additional_root_paths": attr.string_list( - doc = """Additional root paths to serve static_files from. - Paths should include the workspace name such as [\"__main__/resources\"] - """, - ), - "bootstrap": attr.label_list( - doc = "Scripts to include in the JS bundle before the module loader (require.js)", - allow_files = [".js"], - ), - "data": attr.label_list( - doc = "Dependencies that can be require'd while the server is running", - allow_files = True, - ), - "entry_module": attr.string( - doc = """The entry_module should be the AMD module name of the entry module such as `"__main__/src/index"` - ts_devserver concats the following snippet after the bundle to load the application: - `require(["entry_module"]);` - """, - ), - "index_html": attr.label( - allow_single_file = True, - doc = """An index.html file, we'll inject the script tag for the bundle, - as well as script tags for .js static_files and link tags for .css - static_files""", - ), - "port": attr.int( - doc = """The port that the devserver will listen on.""", - default = 5432, - ), - "scripts": attr.label_list( - doc = "User scripts to include in the JS bundle before the application sources", - allow_files = [".js"], - ), - "serving_path": attr.string( - # This default repeats the one in the go program. We make it explicit here so we can read it - # when injecting scripts into the index file. - default = "/_/ts_scripts.js", - doc = """The path you can request from the client HTML which serves the JavaScript bundle. - If you don't specify one, the JavaScript can be loaded at /_/ts_scripts.js""", - ), - "static_files": attr.label_list( - doc = """Arbitrary files which to be served, such as index.html. - They are served relative to the package where this rule is declared.""", - allow_files = True, - ), - "deps": attr.label_list( - doc = "Targets that produce JavaScript, such as `ts_library`", - allow_files = True, - aspects = [sources_aspect], - ), - "_bash_runfile_helpers": attr.label(default = Label("@bazel_tools//tools/bash/runfiles")), - "_devserver": attr.label( - # For local development in rules_typescript, we build the devserver from sources. - # This requires that we have the go toolchain available. - # NB: this value is replaced by "//devserver:server" in the packaged distro - # //devserver:server is the pre-compiled binary. - # That means that our users don't need the go toolchain. - default = Label("//devserver:devserver_bin"), - executable = True, - cfg = "host", - ), - "_injector": attr.label( - default = "@build_bazel_rules_nodejs//internal/web_package:injector", - executable = True, - cfg = "host", - ), - "_launcher_template": attr.label(allow_single_file = True, default = Label("//internal/devserver:launcher_template.sh")), - "_requirejs_script": attr.label(allow_single_file = True, default = Label("@build_bazel_rules_typescript_devserver_deps//node_modules/requirejs:require.js")), - }, - outputs = { - "manifest": "%{name}.MF", - "script": "%{name}.sh", - "scripts_manifest": "scripts_%{name}.MF", - }, -) -"""ts_devserver is a simple development server intended for a quick "getting started" experience. - -Additional documentation at https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel -""" - -def ts_devserver_macro(name, data = [], args = [], visibility = None, tags = [], testonly = 0, **kwargs): - """Macro for creating a `ts_devserver` - - This macro re-exposes a `sh_binary` and `ts_devserver` target that can run the - actual devserver implementation. - The `ts_devserver` rule is just responsible for generating a launcher script - that runs the Go devserver implementation. The `sh_binary` is the primary - target that matches the specified "name" and executes the generated bash - launcher script. - This is re-exported in `//:defs.bzl` as `ts_devserver` so if you load the rule - from there, you actually get this macro. - Args: - name: Name of the devserver target - data: Runtime dependencies for the devserver - args: Command line arguments that will be passed to the devserver Go implementation - visibility: Visibility of the devserver targets - tags: Standard Bazel tags, this macro adds a couple for ibazel - testonly: Whether the devserver should only run in `bazel test` - **kwargs: passed through to `ts_devserver` - """ - ts_devserver( - name = "%s_launcher" % name, - data = data + ["@bazel_tools//tools/bash/runfiles"], - testonly = testonly, - visibility = ["//visibility:private"], - tags = tags, - **kwargs - ) - - native.sh_binary( - name = name, - args = args, - # Users don't need to know that these tags are required to run under ibazel - tags = tags + [ - # Tell ibazel not to restart the devserver when its deps change. - "ibazel_notify_changes", - # Tell ibazel to serve the live reload script, since we expect a browser will connect to - # this program. - "ibazel_live_reload", - ], - srcs = ["%s_launcher.sh" % name], - data = [":%s_launcher" % name], - testonly = testonly, - visibility = visibility, - ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/yarn.lock deleted file mode 100644 index 95ae199a6c..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/devserver/yarn.lock +++ /dev/null @@ -1,7 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -requirejs@2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/.bazelrc deleted file mode 100644 index ad69514f6d..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/.bazelrc +++ /dev/null @@ -1 +0,0 @@ -build --workspace_status_command=../../tools/bazel_stamp_vars.sh diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel deleted file mode 100644 index 54f69edf4f..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/BUILD.bazel +++ /dev/null @@ -1,106 +0,0 @@ -# Copyright 2018 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# BEGIN-DEV-ONLY -# Parts of this BUILD file only necessary when building within the bazelbuild/rules_typescript repo. -# The generated `@bazel/karma` npm package contains a trimmed BUILD file using # DEV-ONLY fences. -load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary", "npm_package") -load("@npm_bazel_typescript//:version.bzl", "COMPAT_VERSION") -load("@npm_bazel_typescript//internal:defaults.bzl", "ts_library") - -package(default_visibility = ["//visibility:public"]) - -# Exports to be consumed for generating skydoc. -exports_files([ - "karma_web_test.bzl", - "ts_web_test.bzl", - "web_test.bzl", -]) - -ts_library( - name = "bazel_karma", - srcs = glob(["*.ts"]), - module_name = "@bazel/karma", - tsconfig = ":tsconfig.json", - deps = [ - "@npm//@types/node", - "@npm//tmp", - ], -) - -nodejs_binary( - name = "karma_bin", - data = [ - ":bazel_karma", - "@npm//jasmine-core", - "@npm//karma", - "@npm//karma-chrome-launcher", - "@npm//karma-firefox-launcher", - "@npm//karma-jasmine", - "@npm//karma-requirejs", - "@npm//karma-sauce-launcher", - "@npm//karma-sourcemap-loader", - "@npm//requirejs", - "@npm//tmp", - ], - entry_point = "karma/bin/karma", - install_source_map_support = False, -) - -genrule( - name = "license_copy", - srcs = ["@npm_bazel_typescript//:LICENSE"], - outs = ["LICENSE"], - cmd = "cp $< $@", -) - -# Ugly genrule depending on local linux environment to build the README out of skylark doc generation. -# Only referenced when we do a release. -# TODO: This ought to be possible with stardoc alone. Need to coordinate with Chris Parsons. -genrule( - name = "generate_README", - srcs = ["//docs", "//docs:install.md"], - outs = ["README.md"], - cmd = "unzip -o -d docs $(location //docs:docs) && cat docs/install.md docs/*_web_test.md | sed 's/^##/\\\n##/' > $@", -) - -npm_package( - name = "npm_package", - srcs = [ - "BUILD.bazel", - "WORKSPACE", - "browser_repositories.bzl", - "defaults.bzl", - "defs.bzl", - "karma.conf.js", - "karma.js", - "karma_web_test.bzl", - "package.bzl", - "package.json", - "ts_web_test.bzl", - "web_test.bzl", - ], - replacements = { - "(#|\/\/)\\s+BEGIN-DEV-ONLY[\\w\W]+?(#|\/\/)\\s+END-DEV-ONLY": "", - "0.0.0-COMPAT_VERSION": COMPAT_VERSION, - }, - deps = [ - ":bazel_karma", - ":license_copy", - ":generate_README" - ], -) - -# END-DEV-ONLY -exports_files(["karma.conf.js"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/WORKSPACE deleted file mode 100644 index f584c27397..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/WORKSPACE +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -workspace(name = "npm_bazel_karma") - -# Load nested npm_bazel_typescript repository -local_repository( - name = "npm_bazel_typescript", - path = "../..", -) - -# Load our dependencies -load("@npm_bazel_typescript//:package.bzl", "rules_typescript_dev_dependencies") - -rules_typescript_dev_dependencies() - -# Load rules_karma dependencies -load("//:package.bzl", "rules_karma_dependencies") - -rules_karma_dependencies() - -# Setup nodejs toolchain -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") - -# Install a hermetic version of node. -node_repositories() - -# Download npm dependencies -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -# Setup typescript toolchain -load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace") - -ts_setup_workspace() - -# Dependencies for generating documentation -load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") - -sass_repositories() - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "com_google_protobuf", - strip_prefix = "protobuf-3.6.1.3", - sha256 = "9510dd2afc29e7245e9e884336f848c8a6600a14ae726adb6befdb4f786f0be2", - # v3.6.1.3 as of 2019-01-15 - urls = ["https://github.com/protocolbuffers/protobuf/archive/v3.6.1.3.zip"], - type = "zip", -) - -load("@io_bazel_skydoc//skylark:skylark.bzl", "skydoc_repositories") - -skydoc_repositories() diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/browser_repositories.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/browser_repositories.bzl deleted file mode 100644 index cc58e5c638..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/browser_repositories.bzl +++ /dev/null @@ -1,111 +0,0 @@ -# Copyright 2018 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Pinned browser versions tested against in https://github.com/bazelbuild/rules_typescript CI. -""" - -load("@io_bazel_rules_webtesting//web/internal:platform_http_file.bzl", "platform_http_file") - -def browser_repositories(): - """Load pinned rules_webtesting browser versions.""" - - platform_http_file( - name = "org_chromium_chromium", - amd64_sha256 = - "941de83d78b27d43db07f427136ba159d661bb111db8d9ffe12499b863a003e1", - amd64_urls = [ - # Chromium 69.0.3497.0 (2018-07-19 snaphot 576668) - # https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/576668/ - "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux_x64/576668/chrome-linux.zip", - ], - licenses = ["notice"], # BSD 3-clause (maybe more?) - macos_sha256 = - "bd01783e7d179e9f85d4b6f0c9df53118d13977cc7d365a1caa9d198c6afcfd8", - macos_urls = [ - # Chromium 69.0.3497.0 (2018-07-19 snaphot 576668) - # https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Mac/576668/ - # NOTE: There is an issue with ChromeHeadless on OSX chromium 70+ - "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/576668/chrome-mac.zip", - ], - windows_sha256 = - "d1bb728118c12ea436d8ea07dba980789e7d860aa664dd1fad78bc20e8d9391c", - windows_urls = [ - # Chromium 66.0.3359.0 (2018-03-01 snaphot 540270) - # https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Win_x64/612439/ - # NOTE: There is an issue with chromium 68-71 with Windows: https://bugs.chromium.org/p/chromium/issues/detail?id=540270 - # and pinning to 72 is not possible as the archive name has changed to chrome-win.zip which breaks - # as the executable path the hard-coded in rules_webtesting and includes the archive name. - "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Win_x64/540270/chrome-win32.zip", - ], - ) - - platform_http_file( - name = "org_chromium_chromedriver", - amd64_sha256 = - "687d2e15c42908e2911344c08a949461b3f20a83017a7a682ef4d002e05b5d46", - amd64_urls = [ - # ChromeDriver 2.44 supports Chrome v69-71 - # http://chromedriver.chromium.org/downloads - "https://chromedriver.storage.googleapis.com/2.44/chromedriver_linux64.zip", - ], - licenses = ["reciprocal"], # BSD 3-clause, ICU, MPL 1.1, libpng (BSD/MIT-like), Academic Free License v. 2.0, BSD 2-clause, MIT - macos_sha256 = - "3fd49c2782a5f93cb48ff2dee021004d9a7fb393798e4c4807b391cedcd30ed9", - macos_urls = [ - # ChromeDriver 2.44 supports Chrome v69-71 - # http://chromedriver.chromium.org/downloads - "https://chromedriver.storage.googleapis.com/2.44/chromedriver_mac64.zip", - ], - windows_sha256 = - "a8fa028acebef7b931ef9cb093f02865f9f7495e49351f556e919f7be77f072e", - windows_urls = [ - # ChromeDriver 2.38 supports Chrome v65-67 - # http://chromedriver.chromium.org/downloads - "https://chromedriver.storage.googleapis.com/2.38/chromedriver_win32.zip", - ], - ) - - platform_http_file( - name = "org_mozilla_firefox", - amd64_sha256 = - "3a729ddcb1e0f5d63933177a35177ac6172f12edbf9fbbbf45305f49333608de", - amd64_urls = [ - "https://mirror.bazel.build/ftp.mozilla.org/pub/firefox/releases/61.0.2/linux-x86_64/en-US/firefox-61.0.2.tar.bz2", - "https://ftp.mozilla.org/pub/firefox/releases/61.0.2/linux-x86_64/en-US/firefox-61.0.2.tar.bz2", - ], - licenses = ["reciprocal"], # MPL 2.0 - macos_sha256 = - "bf23f659ae34832605dd0576affcca060d1077b7bf7395bc9874f62b84936dc5", - macos_urls = [ - "https://mirror.bazel.build/ftp.mozilla.org/pub/firefox/releases/61.0.2/mac/en-US/Firefox%2061.0.2.dmg", - "https://ftp.mozilla.org/pub/firefox/releases/61.0.2/mac/en-US/Firefox%2061.0.2.dmg", - ], - ) - - platform_http_file( - name = "org_mozilla_geckodriver", - amd64_sha256 = - "c9ae92348cf00aa719be6337a608fae8304691a95668e8e338d92623ba9e0ec6", - amd64_urls = [ - "https://mirror.bazel.build/github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz", - "https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz", - ], - licenses = ["reciprocal"], # MPL 2.0 - macos_sha256 = - "ce4a3e9d706db94e8760988de1ad562630412fa8cf898819572522be584f01ce", - macos_urls = [ - "https://mirror.bazel.build/github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-macos.tar.gz", - "https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-macos.tar.gz", - ], - ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/defaults.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/defaults.bzl deleted file mode 100644 index 954a99152a..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/defaults.bzl +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"Defaults for rules_karma repository not meant to be used downstream" - -load( - "@npm_bazel_karma//:defs.bzl", - _karma_web_test = "karma_web_test", - _karma_web_test_suite = "karma_web_test_suite", - _ts_web_test = "ts_web_test", - _ts_web_test_suite = "ts_web_test_suite", -) - -INTERNAL_KARMA_BIN = "@npm_bazel_karma//:karma_bin" - -def karma_web_test(karma = INTERNAL_KARMA_BIN, **kwargs): - _karma_web_test(karma = karma, **kwargs) - -def karma_web_test_suite(karma = INTERNAL_KARMA_BIN, **kwargs): - _karma_web_test_suite(karma = karma, **kwargs) - -def ts_web_test(karma = INTERNAL_KARMA_BIN, **kwargs): - _ts_web_test(karma = karma, **kwargs) - -def ts_web_test_suite(karma = INTERNAL_KARMA_BIN, **kwargs): - _ts_web_test_suite(karma = karma, **kwargs) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/defs.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/defs.bzl deleted file mode 100644 index b8053b97cd..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/defs.bzl +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" Public API surface is re-exported here. -""" - -load( - ":karma_web_test.bzl", - _karma_web_test = "karma_web_test", - _karma_web_test_suite = "karma_web_test_suite", -) -load( - ":ts_web_test.bzl", - _ts_web_test = "ts_web_test", - _ts_web_test_suite = "ts_web_test_suite", -) - -# TODO(alexeagle): make ts_web_test && ts_web_test_suite work in google3 -ts_web_test = _ts_web_test -ts_web_test_suite = _ts_web_test_suite -karma_web_test = _karma_web_test -karma_web_test_suite = _karma_web_test_suite diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/BUILD.bazel deleted file mode 100644 index ff0476c295..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/BUILD.bazel +++ /dev/null @@ -1,11 +0,0 @@ -load("@io_bazel_skydoc//skylark:skylark.bzl", "skylark_doc") -exports_files(["install.md"]) -skylark_doc( - name = "docs", - srcs = [ - "//:karma_web_test.bzl", - "//:ts_web_test.bzl", - ], - format = "markdown", - visibility = ["//:__subpackages__"], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/index.md b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/index.md deleted file mode 100644 index 697f82ff73..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/index.md +++ /dev/null @@ -1,89 +0,0 @@ - -# Overview - - - - -

Unit testing with Karma

- -

Macros

- - - - - - - - - - - - - - - - - - - -
- - run_karma_web_test - - -

Creates an action that can run karma.

- -
- - karma_web_test - - -

Runs unit tests in a browser with Karma.

- -
- - karma_web_test_suite - - -

Defines a test_suite of web_test targets that wrap a karma_web_test target.

- -
-

Unit testing in a browser

- -

Macros

- - - - - - - - - - - - - - - -
- - ts_web_test - - -

Runs unit tests in a browser.

- -
- - ts_web_test_suite - - -

Defines a test_suite of web_test targets that wrap a ts_web_test target.

- -
diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/install.md b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/install.md deleted file mode 100644 index e04b558419..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/install.md +++ /dev/null @@ -1,80 +0,0 @@ -# Karma rules for Bazel - -**WARNING: this is beta-quality software. Breaking changes are likely. Not recommended for production use without expert support.** - -The Karma rules run karma tests with Bazel. - -## Installation - -Add the `@bazel/karma` npm package to your `devDependencies` in `package.json`. - -Your `WORKSPACE` should declare a `yarn_install` or `npm_install` rule named `npm`. -It should then install the rules found in the npm packages. - -This is copied from the README for rules_nodejs: - -```python -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -# Fetch rules_nodejs -# (you can check https://github.com/bazelbuild/rules_nodejs/releases for a newer release than this) -http_archive( - name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], - sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", -) - -# Setup the NodeJS toolchain -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") -node_repositories() - -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -# Install all Bazel dependencies needed for npm packages that supply Bazel rules -load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") -install_bazel_dependencies() -``` - -This causes the `@bazel/karma` package to be installed as a Bazel workspace named `npm_bazel_karma`. - -Now add this to your `WORKSPACE` to install the Karma dependencies: - -```python -# Fetch transitive Bazel dependencies of npm_bazel_karma -load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies") -rules_karma_dependencies() -``` - -This installs the `io_bazel_rules_webtesting` repository, if you haven't installed it earlier. - -Finally, configure the rules_webtesting: - -```python -# Setup web testing, choose browsers we can test on -load("@io_bazel_rules_webtesting//web:repositories.bzl", "browser_repositories", "web_test_repositories") - -web_test_repositories() -browser_repositories( - chromium = True, -) -``` - -## Installing with self-managed dependencies - -If you didn't use the `yarn_install` or `npm_install` rule to create an `npm` workspace, you'll have to declare a rule in your root `BUILD.bazel` file to execute karma: - -```python -# Create a karma rule to use in ts_web_test_suite karma -# attribute when using self-managed dependencies -nodejs_binary( - name = "karma/karma", - entry_point = "karma/bin/karma", - # Point bazel to your node_modules to find the entry point - node_modules = ["//:node_modules"], -) -``` - diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/karma_web_test.md b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/karma_web_test.md deleted file mode 100644 index 39c6543450..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/karma_web_test.md +++ /dev/null @@ -1,315 +0,0 @@ - - -

Unit testing with Karma

- - - - -## run_karma_web_test - -
-run_karma_web_test(ctx)
-
- -Creates an action that can run karma. - -This is also used by ts_web_test_rule. - -Returns: - The runfiles for the generated action. - - - -### Attributes - - - - - - - - - - - - - -
ctx -

Unknown; Required

-

Bazel rule execution context

-
- -## karma_web_test - -
-karma_web_test(srcs, deps, data, configuration_env_vars, bootstrap, runtime_deps, static_files, config_file, tags, **kwargs)
-
- -Runs unit tests in a browser with Karma. - -When executed under `bazel test`, this uses a headless browser for speed. -This is also because `bazel test` allows multiple targets to be tested together, -and we don't want to open a Chrome window on your machine for each one. Also, -under `bazel test` the test will execute and immediately terminate. - -Running under `ibazel test` gives you a "watch mode" for your tests. The rule is -optimized for this case - the test runner server will stay running and just -re-serve the up-to-date JavaScript source bundle. - -To debug a single test target, run it with `bazel run` instead. This will open a -browser window on your computer. Also you can use any other browser by opening -the URL printed when the test starts up. The test will remain running until you -cancel the `bazel run` command. - -This rule will use your system Chrome by default. In the default case, your -environment must specify CHROME_BIN so that the rule will know which Chrome binary to run. -Other `browsers` and `customLaunchers` may be set using the a base Karma configuration -specified in the `config_file` attribute. - - - -### Attributes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
srcs -

List of strings; Optional

-

A list of JavaScript test files

-
deps -

List of strings; Optional

-

Other targets which produce JavaScript such as ts_library

-
data -

List of strings; Optional

-

Runtime dependencies

-
configuration_env_vars -

List of strings; Optional

-

Pass these configuration environment variables to the resulting binary. -Chooses a subset of the configuration environment variables (taken from ctx.var), which also -includes anything specified via the --define flag. -Note, this can lead to different outputs produced by this rule.

-
bootstrap -

List of strings; Optional

-

JavaScript files to include before the module loader (require.js). -For example, you can include Reflect,js for TypeScript decorator metadata reflection, -or UMD bundles for third-party libraries.

-
runtime_deps -

List of strings; Optional

-

Dependencies which should be loaded after the module loader but before the srcs and deps. -These should be a list of targets which produce JavaScript such as ts_library. -The files will be loaded in the same order they are declared by that rule.

-
static_files -

List of strings; Optional

-

Arbitrary files which are available to be served on request. -Files are served at: -/base/&lt;WORKSPACE_NAME&gt;/&lt;path-to-file&gt;, e.g. -/base/npm_bazel_typescript/examples/testing/static_script.js

-
config_file -

Unknown; Optional

-

User supplied Karma configuration file. Bazel will override -certain attributes of this configuration file. Attributes that are -overridden will be outputted to the test log.

-
tags -

List of strings; Optional

-

Standard Bazel tags, this macro adds tags for ibazel support

-
**kwargs -

Unknown; Optional

-

Passed through to karma_web_test

-
- -## karma_web_test_suite - -
-karma_web_test_suite(name, browsers, args, browser_overrides, config, flaky, local, shard_count, size, tags, test_suite_tags, timeout, visibility, web_test_data, wrapped_test_tags, **remaining_keyword_args)
-
- -Defines a test_suite of web_test targets that wrap a karma_web_test target. - -This macro also accepts all parameters in karma_web_test. See karma_web_test docs -for details. - - - -### Attributes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name -

Name; Required

-

The base name of the test

-
browsers -

List of strings; Optional

-

A sequence of labels specifying the browsers to use.

-
args -

Unknown; Optional

-

Args for web_test targets generated by this extension.

-
browser_overrides -

Unknown; Optional

-

Dictionary; optional; default is an empty dictionary. A -dictionary mapping from browser names to browser-specific web_test -attributes, such as shard_count, flakiness, timeout, etc. For example: -{'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1} -'//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}.

-
config -

Unknown; Optional

-

Label; optional; Configuration of web test features.

-
flaky -

Unknown; Optional

-

A boolean specifying that the test is flaky. If set, the test will -be retried up to 3 times (default: 0)

-
local -

Unknown; Optional

-

boolean; optional.

-
shard_count -

Unknown; Optional

-

The number of test shards to use per browser. (default: 1)

-
size -

Unknown; Optional

-

A string specifying the test size. (default: 'large')

-
tags -

List of strings; Optional

-

A list of test tag strings to apply to each generated web_test target. -This macro adds a couple for ibazel.

-
test_suite_tags -

Unknown; Optional

-

A list of tag strings for the generated test_suite.

-
timeout -

Unknown; Optional

-

A string specifying the test timeout (default: computed from size)

-
visibility -

Unknown; Optional

-

List of labels; optional.

-
web_test_data -

List of strings; Optional

-

Data dependencies for the web_test.

-
wrapped_test_tags -

Unknown; Optional

-

A list of test tag strings to use for the wrapped test

-
**remaining_keyword_args -

Unknown; Optional

-

Arguments for the wrapped test target.

-
diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/ts_web_test.md b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/ts_web_test.md deleted file mode 100644 index eca853558f..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/docs/ts_web_test.md +++ /dev/null @@ -1,272 +0,0 @@ - - -

Unit testing in a browser

- - - - -## ts_web_test - -
-ts_web_test(srcs, deps, data, configuration_env_vars, bootstrap, runtime_deps, static_files, tags, **kwargs)
-
- -Runs unit tests in a browser. - -When executed under `bazel test`, this uses a headless browser for speed. -This is also because `bazel test` allows multiple targets to be tested together, -and we don't want to open a Chrome window on your machine for each one. Also, -under `bazel test` the test will execute and immediately terminate. - -Running under `ibazel test` gives you a "watch mode" for your tests. The rule is -optimized for this case - the test runner server will stay running and just -re-serve the up-to-date JavaScript source bundle. - -To debug a single test target, run it with `bazel run` instead. This will open a -browser window on your computer. Also you can use any other browser by opening -the URL printed when the test starts up. The test will remain running until you -cancel the `bazel run` command. - -This rule will use your system Chrome. Your environment must specify CHROME_BIN -so that the rule will know which Chrome binary to run. - -Currently this rule uses Karma as the test runner under the hood, but this is -an implementation detail. We might switch to another runner like Jest in the future. - - - -### Attributes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
srcs -

List of strings; Optional

-

A list of JavaScript test files

-
deps -

List of strings; Optional

-

Other targets which produce JavaScript such as ts_library

-
data -

List of strings; Optional

-

Runtime dependencies

-
configuration_env_vars -

List of strings; Optional

-

Pass these configuration environment variables to the resulting binary. -Chooses a subset of the configuration environment variables (taken from ctx.var), which also -includes anything specified via the --define flag. -Note, this can lead to different outputs produced by this rule.

-
bootstrap -

List of strings; Optional

-

JavaScript files to include before the module loader (require.js). -For example, you can include Reflect,js for TypeScript decorator metadata reflection, -or UMD bundles for third-party libraries.

-
runtime_deps -

List of strings; Optional

-

Dependencies which should be loaded after the module loader but before the srcs and deps. -These should be a list of targets which produce JavaScript such as ts_library. -The files will be loaded in the same order they are declared by that rule.

-
static_files -

List of strings; Optional

-

Arbitrary files which are available to be served on request. -Files are served at: -/base/&lt;WORKSPACE_NAME&gt;/&lt;path-to-file&gt;, e.g. -/base/npm_bazel_typescript/examples/testing/static_script.js

-
tags -

List of strings; Optional

-

Standard Bazel tags, this macro adds tags for ibazel support as well as

-
**kwargs -

Unknown; Optional

-

Passed through to ts_web_test

-
- -## ts_web_test_suite - -
-ts_web_test_suite(name, browsers, args, browser_overrides, config, flaky, local, shard_count, size, tags, test_suite_tags, timeout, visibility, web_test_data, wrapped_test_tags, **remaining_keyword_args)
-
- -Defines a test_suite of web_test targets that wrap a ts_web_test target. - -This macro also accepts all parameters in ts_web_test. See ts_web_test docs for -details. - - - -### Attributes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name -

Name; Required

-

The base name of the test.

-
browsers -

List of strings; Optional

-

A sequence of labels specifying the browsers to use.

-
args -

Unknown; Optional

-

Args for web_test targets generated by this extension.

-
browser_overrides -

Unknown; Optional

-

Dictionary; optional; default is an empty dictionary. A -dictionary mapping from browser names to browser-specific web_test -attributes, such as shard_count, flakiness, timeout, etc. For example: -{'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1} -'//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}.

-
config -

Unknown; Optional

-

Label; optional; Configuration of web test features.

-
flaky -

Unknown; Optional

-

A boolean specifying that the test is flaky. If set, the test will -be retried up to 3 times (default: 0)

-
local -

Unknown; Optional

-

boolean; optional.

-
shard_count -

Unknown; Optional

-

The number of test shards to use per browser. (default: 1)

-
size -

Unknown; Optional

-

A string specifying the test size. (default: 'large')

-
tags -

List of strings; Optional

-

A list of test tag strings to apply to each generated web_test_suite target. -This macro adds a couple for ibazel.

-
test_suite_tags -

Unknown; Optional

-

A list of tag strings for the generated test_suite.

-
timeout -

Unknown; Optional

-

A string specifying the test timeout (default: computed from size)

-
visibility -

Unknown; Optional

-

List of labels; optional.

-
web_test_data -

List of strings; Optional

-

Data dependencies for the web_test_suite.

-
wrapped_test_tags -

Unknown; Optional

-

A list of test tag strings to use for the wrapped test

-
**remaining_keyword_args -

Unknown; Optional

-

Arguments for the wrapped test target.

-
diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/index.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/index.ts deleted file mode 100644 index 511a6fbbf9..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Concat all JS files before serving. - */ -import * as crypto from 'crypto'; -import * as fs from 'fs'; -import * as path from 'path'; -import * as process from 'process'; -import * as tmp from 'tmp'; -import {createInterface} from 'readline'; -/// - -/** - * Return SHA1 of data buffer. - */ -function sha1(data) { - const hash = crypto.createHash('sha1'); - hash.update(data); - return hash.digest('hex'); -} - -/** - * Entry-point for the Karma plugin. - */ -function initConcatJs(logger, emitter, basePath, hostname, port) { - const log = logger.create('framework.concat_js'); - - // Create a tmp file for the concat bundle that is automatically cleaned up on - // exit. - const tmpFile = tmp.fileSync({keep: false, dir: process.env['TEST_TMPDIR']}); - - emitter.on('file_list_modified', files => { - const bundleFile = { - path: '/concatjs_bundle.js', - contentPath: tmpFile.name, - isUrl: false, - content: '', - encodings: {}, - } as any; - const included = []; - - files.included.forEach(file => { - if (path.extname(file.originalPath) !== '.js') { - // Preserve all non-JS that were there in the included list. - included.push(file); - } else { - const relativePath = - path.relative(basePath, file.originalPath).replace(/\\/g, '/'); - - // Remove 'use strict'. - let content = file.content.replace(/('use strict'|"use strict");?/, - ''); - content = JSON.stringify( - `${content}\n//# sourceURL=http://${hostname}:${port}/base/` + - `${relativePath}\n`); - content = `//${relativePath}\neval(${content});\n`; - bundleFile.content += content; - } - }); - - bundleFile.sha = sha1(Buffer.from(bundleFile.content)); - bundleFile.mtime = new Date(); - included.unshift(bundleFile); - - files.included = included; - files.served.push(bundleFile); - - log.debug('Writing concatjs bundle to tmp file %s', - bundleFile.contentPath); - fs.writeFileSync(bundleFile.contentPath, bundleFile.content); - }); -} - -(initConcatJs as any).$inject = ['logger', 'emitter', 'config.basePath', 'config.hostname', 'config.port']; - -function watcher(fileList: {refresh: () => void}) { - // ibazel will write this string after a successful build - // We don't want to re-trigger tests if the compilation fails, so - // we should only listen for this event. - const IBAZEL_NOTIFY_BUILD_SUCCESS = 'IBAZEL_BUILD_COMPLETED SUCCESS'; - // ibazel communicates with us via stdin - const rl = createInterface({input: process.stdin, terminal: false}); - rl.on('line', (chunk: string) => { - if (chunk === IBAZEL_NOTIFY_BUILD_SUCCESS) { - fileList.refresh(); - } - }); - rl.on('close', () => { - // Give ibazel 5s to kill our process, otherwise do it ourselves - setTimeout(() => { - console.error('ibazel failed to stop karma after 5s; probably a bug'); - process.exit(1); - }, 5000); - }); -} - -(watcher as any).$inject = ['fileList']; - -module.exports = { - 'framework:concat_js': ['factory', initConcatJs], - 'watcher': ['value', watcher], -}; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js deleted file mode 100644 index 1d82ff1f8c..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.conf.js +++ /dev/null @@ -1,423 +0,0 @@ -// Karma configuration -// GENERATED BY Bazel -try -{ - const fs = require('fs'); - const path = require('path'); - const tmp = require('tmp'); - const child_process = require('child_process'); - - const DEBUG = false; - - TMPL_env_vars - - const configPath = 'TMPL_config_file'; - - if (DEBUG) - console.info(`Karma test starting with: - cwd: ${process.cwd()} - configPath: ${configPath}`); - - /** - * Helper function to find a particular namedFile - * within the webTestMetadata webTestFiles - */ - function findNamedFile(webTestMetadata, key) { - let result; - webTestMetadata['webTestFiles'].forEach(entry => { - const webTestNamedFiles = entry['namedFiles']; - if (webTestNamedFiles && webTestNamedFiles[key]) { - result = webTestNamedFiles[key]; - } - }); - return result; - } - - /** - * Helper function to extract a browser archive - * and return the path to extract executable - */ - function extractWebArchive(extractExe, archiveFile, executablePath) { - try { - // Paths are relative to the root runfiles folder - extractExe = extractExe ? path.join('..', extractExe) : extractExe; - archiveFile = path.join('..', archiveFile); - const extractedExecutablePath = path.join(process.cwd(), executablePath); - if (!extractExe) { - throw new Error('No EXTRACT_EXE found'); - } - child_process.execFileSync( - extractExe, [archiveFile, '.'], - {stdio: [process.stdin, process.stdout, process.stderr]}); - if (DEBUG) console.info(`Extracting web archive ${archiveFile} with ${extractExe} to ${extractedExecutablePath}`); - return extractedExecutablePath; - } catch (e) { - console.error(`Failed to extract ${archiveFile}`); - throw e; - } - } - - /** - * Chrome on Linux uses sandboxing, which needs user namespaces to be enabled. - * This is not available on all kernels and it might be turned off even if it is available. - * Notable examples where user namespaces are not available include: - * - In Debian it is compiled-in but disabled by default. - * - The Docker daemon for Windows or OSX does not support user namespaces. - * We can detect if user namespaces are supported via /proc/sys/kernel/unprivileged_userns_clone. - * For more information see: - * https://github.com/Googlechrome/puppeteer/issues/290 - * https://superuser.com/questions/1094597/enable-user-namespaces-in-debian-kernel#1122977 - * https://github.com/karma-runner/karma-chrome-launcher/issues/158 - * https://github.com/angular/angular/pull/24906 - */ - function supportsSandboxing() { - if (process.platform !== 'linux') { - return true; - } - try { - const res = child_process - .execSync('cat /proc/sys/kernel/unprivileged_userns_clone').toString().trim(); - return res === '1'; - } catch (error) { } - - return false; - } - - /** - * Helper function to override base karma config values. - */ - function overrideConfigValue(conf, name, value) { - if (conf.hasOwnProperty(name)) { - console.warn( - `Your karma configuration specifies '${name}' which will be overwritten by Bazel`); - } - conf[name] = value; - } - - /** - * Helper function to merge base karma config values that are arrays. - */ - function mergeConfigArray(conf, name, values) { - if (!conf[name]) { - conf[name] = []; - } - values.forEach(v => { - if (!conf[name].includes(v)) { - conf[name].push(v); - } - }) - } - - /** - * Configuration settings for karma under Bazel common to karma_web_test - * and karma_web_test_suite. - */ - function configureBazelConfig(config, conf) { - // list of karma plugins - mergeConfigArray(conf, 'plugins', [ - 'karma-*', - '@bazel/karma', - 'karma-sourcemap-loader', - 'karma-chrome-launcher', - 'karma-firefox-launcher', - 'karma-sauce-launcher', - ]); - - // list of karma preprocessors - if (!conf.preprocessors) { - conf.preprocessors = {} - } - conf.preprocessors['**/*.js'] = ['sourcemap']; - - // list of test frameworks to use - overrideConfigValue(conf, 'frameworks', ['jasmine', 'concat_js']); - - // test results reporter to use - // possible values: 'dots', 'progress' - // available reporters: https://npmjs.org/browse/keyword/karma-reporter - mergeConfigArray(conf, 'reporters', ['progress']); - - // enable / disable colors in the output (reporters and logs) - if (!conf.colors) { - conf.colors = true; - } - - // level of logging - // possible values: config.LOG_DISABLE || config.LOG_ERROR || - // config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - if (!conf.logLevel) { - conf.logLevel = config.LOG_INFO; - } - - // enable / disable watching file and executing tests whenever - // any file changes - overrideConfigValue(conf, 'autoWatch', process.env['IBAZEL_NOTIFY_CHANGES'] === 'y'); - - // Continuous Integration mode - // if true, Karma captures browsers, runs the tests and exits - // note: run_karma.sh may override this as a command-line option. - overrideConfigValue(conf, 'singleRun', false); - - // Concurrency level - // how many browser should be started simultaneous - overrideConfigValue(conf, 'concurrency', Infinity); - - // base path that will be used to resolve all patterns - // (eg. files, exclude) - overrideConfigValue(conf, 'basePath', 'TMPL_runfiles_path'); - - // Do not show "no timestamp" errors from "karma-requirejs" for proxied file - // requests. Files which are passed as "static_files" are proxied by default and - // therefore should not cause such an exception when loaded as expected. - // See: https://github.com/karma-runner/karma-requirejs/issues/6 - const requireJsShowNoTimestampsError = '^(?!/base/).*$'; - - if (conf.client) { - overrideConfigValue(conf.client, 'requireJsShowNoTimestampsError', - requireJsShowNoTimestampsError); - } else { - conf.client = {requireJsShowNoTimestampsError}; - } - } - - /** - * Configure the 'files' and 'proxies' configuration attributes. - * These are concatenated into a single file by karma-concat-js. - */ - function configureFiles(conf) { - overrideConfigValue(conf, 'files', [ - TMPL_bootstrap_files - TMPL_user_files - ].map(f => { - if (f.startsWith('NODE_MODULES/')) { - try { - // attempt to resolve in @bazel/typescript nested node_modules first - return require.resolve(f.replace(/^NODE_MODULES\//, '@bazel/karma/node_modules/')); - } catch (e) { - // if that failed then attempt to resolve in root node_modules - return require.resolve(f.replace(/^NODE_MODULES\//, '')); - } - } else { - return require.resolve(f); - } - })); - overrideConfigValue(conf, 'exclude', []); - overrideConfigValue(conf, 'proxies', {}); - - // static files are added to the files array but - // configured to not be included so karma-concat-js does - // not included them in the bundle - [TMPL_static_files].forEach((f) => { - // In Windows, the runfile will probably not be symlinked. Se we need to - // serve the real file through karma, and proxy calls to the expected file - // location in the runfiles to the real file. - const resolvedFile = require.resolve(f); - conf.files.push({pattern: resolvedFile, included: false}); - // Prefixing the proxy path with '/absolute' allows karma to load local - // files. This doesn't see to be an official API. - // https://github.com/karma-runner/karma/issues/2703 - conf.proxies['/base/' + f] = '/absolute' + resolvedFile; - }); - - var requireConfigContent = ` -// A simplified version of Karma's requirejs.config.tpl.js for use with Karma under Bazel. -// This does an explicit \`require\` on each test script in the files, otherwise nothing will be loaded. -(function(){ - var runtimeFiles = [TMPL_runtime_files].map(function(file) { return file.replace(/\\.js$/, ''); }); - var allFiles = [TMPL_user_files]; - var allTestFiles = []; - allFiles.forEach(function (file) { - if (/[^a-zA-Z0-9](spec|test)\\.js$/i.test(file) && !/\\/node_modules\\//.test(file)) { - allTestFiles.push(file.replace(/\\.js$/, '')) - } - }); - require(runtimeFiles, function() { return require(allTestFiles, window.__karma__.start); }); -})(); -`; - - const requireConfigFile = tmp.fileSync( - {keep: false, postfix: '.js', dir: process.env['TEST_TMPDIR']}); - fs.writeFileSync(requireConfigFile.name, requireConfigContent); - conf.files.push(requireConfigFile.name); - } - - /** - * Configure karma under karma_web_test_suite. - * `browsers` and `customLaunchers` are setup by Bazel. - */ - function configureTsWebTestSuiteConfig(conf) { - // WEB_TEST_METADATA is configured in rules_webtesting based on value - // of the browsers attribute passed to karms_web_test_suite - // We setup the karma configuration based on the values in this object - if (!process.env['WEB_TEST_METADATA']) { - // This is a karma_web_test rule since there is no WEB_TEST_METADATA - return; - } - - overrideConfigValue(conf, 'browsers', []); - overrideConfigValue(conf, 'customLaunchers', null); - - const webTestMetadata = require(process.env['WEB_TEST_METADATA']); - if (DEBUG) console.info(`WEB_TEST_METADATA: ${JSON.stringify(webTestMetadata, null, 2)}`); - if (webTestMetadata['environment'] === 'sauce') { - // If a sauce labs browser is chosen for the test such as - // "@io_bazel_rules_webtesting//browsers/sauce:chrome-win10" - // than the 'environment' will equal 'sauce'. - // We expect that a SAUCE_USERNAME and SAUCE_ACCESS_KEY is available - // from the environment for this test to run - if (!process.env.SAUCE_USERNAME || !process.env.SAUCE_ACCESS_KEY) { - console.error('Make sure the SAUCE_USERNAME and SAUCE_ACCESS_KEY environment variables are set.'); - process.exit(1); - } - // 'capabilities' will specify the sauce labs configuration to use - const capabilities = webTestMetadata['capabilities']; - conf.customLaunchers = { - 'sauce': { - base: 'SauceLabs', - browserName: capabilities['browserName'], - platform: capabilities['platform'], - version: capabilities['version'], - } - }; - conf.browsers.push('sauce'); - } else if (webTestMetadata['environment'] === 'local') { - // When a local chrome or firefox browser is chosen such as - // "@io_bazel_rules_webtesting//browsers:chromium-local" or - // "@io_bazel_rules_webtesting//browsers:firefox-local" - // then the 'environment' will equal 'local' and - // 'webTestFiles' will contain the path to the binary to use - const extractExe = findNamedFile(webTestMetadata, 'EXTRACT_EXE'); - webTestMetadata['webTestFiles'].forEach(webTestFiles => { - const webTestNamedFiles = webTestFiles['namedFiles']; - const archiveFile = webTestFiles['archiveFile']; - if (webTestNamedFiles['CHROMIUM']) { - // When karma is configured to use Chrome it will look for a CHROME_BIN - // environment variable. - if (archiveFile) { - process.env.CHROME_BIN = extractWebArchive(extractExe, archiveFile, webTestNamedFiles['CHROMIUM']); - } else { - process.env.CHROME_BIN = require.resolve(webTestNamedFiles['CHROMIUM']); - } - const browser = process.env['DISPLAY'] ? 'Chrome' : 'ChromeHeadless'; - if (!supportsSandboxing()) { - const launcher = 'CustomChromeWithoutSandbox'; - conf.customLaunchers = { - [launcher]: { - base: browser, - flags: ['--no-sandbox'] - } - }; - conf.browsers.push(launcher); - } else { - conf.browsers.push(browser); - } - } - if (webTestNamedFiles['FIREFOX']) { - // When karma is configured to use Firefox it will look for a - // FIREFOX_BIN environment variable. - if (archiveFile) { - process.env.FIREFOX_BIN = extractWebArchive(extractExe, archiveFile, webTestNamedFiles['FIREFOX']); - } else { - process.env.FIREFOX_BIN = require.resolve(webTestNamedFiles['FIREFOX']); - } - conf.browsers.push(process.env['DISPLAY'] ? 'Firefox' : 'FirefoxHeadless'); - } - }); - } else { - throw new Error(`Unknown WEB_TEST_METADATA environment '${webTestMetadata['environment']}'`); - } - - if (!conf.browsers.length) { - throw new Error('No browsers configured in web test suite'); - } - - // Extra configuration is needed for saucelabs - // See: https://github.com/karma-runner/karma-sauce-launcher - if (conf.customLaunchers) { - // set the test name for sauce labs to use - // TEST_BINARY is set by Bazel and contains the name of the test - // target postfixed with the browser name such as - // 'examples/testing/testing_sauce_chrome-win10' for the - // test target examples/testing:testing - if (!conf.sauceLabs) { - conf.sauceLabs = {} - } - conf.sauceLabs.testName = process.env['TEST_BINARY'] || 'karma'; - - // Try "websocket" for a faster transmission first. Fallback to "polling" if necessary. - overrideConfigValue(conf, 'transports', ['websocket', 'polling']); - - // add the saucelabs reporter - mergeConfigArray(conf, 'reporters', ['saucelabs']); - } - } - - function configureTsWebTestConfig(conf) { - if (process.env['WEB_TEST_METADATA']) { - // This is a karma_web_test_suite rule since there is a WEB_TEST_METADATA - return; - } - - // Fallback to using the system local chrome if no valid browsers have been - // configured above - if (!conf.browsers || !conf.browsers.length) { - console.warn('No browsers configured. Configuring Karma to use system Chrome.'); - conf.browsers = [process.env['DISPLAY'] ? 'Chrome': 'ChromeHeadless']; - } - } - - function configureFormatError(conf) { - conf.formatError = (msg) => { - // This is a bazel specific formatError that removes the workspace - // name from stack traces. - // Look for filenames of the format "(::" - const FILENAME_REGEX = /\(([^:]+)(:\d+:\d+)/gm; - msg = msg.replace(FILENAME_REGEX, (_, p1, p2) => { - if (p1. startsWith('../')) { - // Remove all leading "../" - while (p1.startsWith('../')) { - p1 = p1.substr(3); - } - } else { - // Remove workspace name(angular, ngdeps etc.) from the beginning. - const index = p1.indexOf('/'); - if (index >= 0) { - p1 = p1.substr(index + 1); - } - } - return '(' + p1 + p2; - }); - return msg + '\n\n'; - }; - } - - module.exports = function(config) { - let conf = {}; - - // Import the user's base karma configuration if specified - if (configPath) { - const baseConf = require(configPath); - if (typeof baseConf !== 'function') { - throw new Error('Invalid base karma configuration. Expected config function to be exported.'); - } - const originalSetConfig = config.set; - config.set = function(c) { conf = c; }; - baseConf(config); - config.set = originalSetConfig; - if (DEBUG) console.info(`Base karma configuration: ${JSON.stringify(conf, null, 2)}`); - } - - configureBazelConfig(config, conf); - configureFiles(conf); - configureTsWebTestSuiteConfig(conf); - configureTsWebTestConfig(conf); - configureFormatError(conf); - - if (DEBUG) console.info(`Karma configuration: ${JSON.stringify(conf, null, 2)}`); - - config.set(conf); - } -} catch (e) { - console.error('Error in karma configuration', e.toString()); - throw e; -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.js b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.js deleted file mode 100644 index 2653ede140..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma.js +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node - -require('karma/lib/cli').run(); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl deleted file mode 100644 index 2002fd22b2..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/karma_web_test.bzl +++ /dev/null @@ -1,447 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"Unit testing with Karma" - -load("@build_bazel_rules_nodejs//internal/common:expand_into_runfiles.bzl", "expand_path_into_runfiles") -load("@build_bazel_rules_nodejs//internal/common:sources_aspect.bzl", "sources_aspect") -load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "write_amd_names_shim") -load("@io_bazel_rules_webtesting//web/internal:constants.bzl", "DEFAULT_WRAPPED_TEST_TAGS") -load("@io_bazel_rules_webtesting//web:web.bzl", "web_test_suite") -load(":web_test.bzl", "COMMON_WEB_TEST_ATTRS") - -_CONF_TMPL = "//:karma.conf.js" -_DEFAULT_KARMA_BIN = "@npm//@bazel/karma/bin:karma" - -# Attributes for karma_web_test that are shared with ts_web_test which -# uses Karma under the hood -KARMA_GENERIC_WEB_TEST_ATTRS = dict(COMMON_WEB_TEST_ATTRS, **{ - "bootstrap": attr.label_list( - doc = """JavaScript files to include *before* the module loader (require.js). - For example, you can include Reflect,js for TypeScript decorator metadata reflection, - or UMD bundles for third-party libraries.""", - allow_files = [".js"], - ), - "karma": attr.label( - doc = "karma binary label", - default = Label(_DEFAULT_KARMA_BIN), - executable = True, - cfg = "target", - allow_files = True, - ), - "static_files": attr.label_list( - doc = """Arbitrary files which are available to be served on request. - Files are served at: - `/base//`, e.g. - `/base/npm_bazel_typescript/examples/testing/static_script.js`""", - allow_files = True, - ), - "runtime_deps": attr.label_list( - doc = """Dependencies which should be loaded after the module loader but before the srcs and deps. - These should be a list of targets which produce JavaScript such as `ts_library`. - The files will be loaded in the same order they are declared by that rule.""", - allow_files = True, - aspects = [sources_aspect], - ), - "_conf_tmpl": attr.label( - default = Label(_CONF_TMPL), - allow_single_file = True, - ), -}) - -# Attributes for karma_web_test that are specific to karma_web_test -KARMA_WEB_TEST_ATTRS = dict(KARMA_GENERIC_WEB_TEST_ATTRS, **{ - "config_file": attr.label( - doc = """User supplied Karma configuration file. Bazel will override - certain attributes of this configuration file. Attributes that are - overridden will be outputted to the test log.""", - allow_single_file = True, - aspects = [sources_aspect], - ), -}) - -# Helper function to convert a short path to a path that is -# found in the MANIFEST file. -def _short_path_to_manifest_path(ctx, short_path): - if short_path.startswith("../"): - return short_path[3:] - else: - return ctx.workspace_name + "/" + short_path - -# Write the AMD names shim bootstrap file -def _write_amd_names_shim(ctx): - amd_names_shim = ctx.actions.declare_file( - "_%s.amd_names_shim.js" % ctx.label.name, - sibling = ctx.outputs.executable, - ) - write_amd_names_shim(ctx.actions, amd_names_shim, ctx.attr.bootstrap) - return amd_names_shim - -# Generates the karma configuration file for the rule -def _write_karma_config(ctx, files, amd_names_shim): - configuration = ctx.actions.declare_file( - "%s.conf.js" % ctx.label.name, - sibling = ctx.outputs.executable, - ) - - config_file = "" - if hasattr(ctx.file, "config_file"): - config_file = ctx.file.config_file - if hasattr(ctx.attr.config_file, "typescript"): - config_file = ctx.attr.config_file.typescript.es5_sources.to_list()[0] - - # The files in the bootstrap attribute come before the require.js support. - # Note that due to frameworks = ['jasmine'], a few scripts will come before - # the bootstrap entries: - # jasmine-core/lib/jasmine-core/jasmine.js - # karma-jasmine/lib/boot.js - # karma-jasmine/lib/adapter.js - # This is desired so that the bootstrap entries can patch jasmine, as zone.js does. - bootstrap_entries = [ - expand_path_into_runfiles(ctx, f.short_path) - for f in ctx.files.bootstrap - ] - - # Explicitly list the requirejs library files here, rather than use - # `frameworks: ['requirejs']` - # so that we control the script order, and the bootstrap files come before - # require.js. - # That allows bootstrap files to have anonymous AMD modules, or to do some - # polyfilling before test libraries load. - # See https://github.com/karma-runner/karma/issues/699 - # `NODE_MODULES/` is a prefix recogized by karma.conf.js to allow - # for a priority require of nested `@bazel/typescript/node_modules` before - # looking in root node_modules. - bootstrap_entries += [ - "NODE_MODULES/requirejs/require.js", - "NODE_MODULES/karma-requirejs/lib/adapter.js", - "/".join([ctx.workspace_name, amd_names_shim.short_path]), - ] - - # Next we load the "runtime_deps" which we expect to contain named AMD modules - # Thus they should come after the require.js script, but before any srcs or deps - runtime_files = [] - for d in ctx.attr.runtime_deps: - if not hasattr(d, "typescript"): - # Workaround https://github.com/bazelbuild/rules_nodejs/issues/57 - # We should allow any JS source as long as it yields something that - # can be loaded by require.js - fail("labels in runtime_deps must be created by ts_library") - for src in d.typescript.es5_sources.to_list(): - runtime_files.append(expand_path_into_runfiles(ctx, src.short_path)) - - # Finally we load the user's srcs and deps - user_entries = [ - expand_path_into_runfiles(ctx, f.short_path) - for f in files.to_list() - ] - - # Expand static_files paths to runfiles for config - static_files = [ - expand_path_into_runfiles(ctx, f.short_path) - for f in ctx.files.static_files - ] - - # root-relative (runfiles) path to the directory containing karma.conf - config_segments = len(configuration.short_path.split("/")) - - # configuration_env_vars are set using process.env() - env_vars = "" - for k in ctx.attr.configuration_env_vars: - if k in ctx.var.keys(): - env_vars += "process.env[\"%s\"]=\"%s\";\n" % (k, ctx.var[k]) - - ctx.actions.expand_template( - output = configuration, - template = ctx.file._conf_tmpl, - substitutions = { - "TMPL_bootstrap_files": "\n".join([" '%s'," % e for e in bootstrap_entries]), - "TMPL_config_file": expand_path_into_runfiles(ctx, config_file.short_path) if config_file else "", - "TMPL_env_vars": env_vars, - "TMPL_runfiles_path": "/".join([".."] * config_segments), - "TMPL_runtime_files": "\n".join([" '%s'," % e for e in runtime_files]), - "TMPL_static_files": "\n".join([" '%s'," % e for e in static_files]), - "TMPL_user_files": "\n".join([" '%s'," % e for e in user_entries]), - }, - ) - - return configuration - -def run_karma_web_test(ctx): - """Creates an action that can run karma. - - This is also used by ts_web_test_rule. - - Args: - ctx: Bazel rule execution context - - Returns: - The runfiles for the generated action. - """ - files = depset(ctx.files.srcs) - for d in ctx.attr.deps + ctx.attr.runtime_deps: - if hasattr(d, "node_sources"): - files = depset(transitive = [files, d.node_sources]) - elif hasattr(d, "files"): - files = depset(transitive = [files, d.files]) - - amd_names_shim = _write_amd_names_shim(ctx) - - configuration = _write_karma_config(ctx, files, amd_names_shim) - - ctx.actions.write( - output = ctx.outputs.executable, - is_executable = True, - content = """#!/usr/bin/env bash -# Immediately exit if any command fails. -set -e - -if [ -e "$RUNFILES_MANIFEST_FILE" ]; then - while read line; do - declare -a PARTS=($line) - if [ "${{PARTS[0]}}" == "{TMPL_karma}" ]; then - readonly KARMA=${{PARTS[1]}} - elif [ "${{PARTS[0]}}" == "{TMPL_conf}" ]; then - readonly CONF=${{PARTS[1]}} - fi - done < $RUNFILES_MANIFEST_FILE -else - readonly KARMA=../{TMPL_karma} - readonly CONF=../{TMPL_conf} -fi - -export HOME=$(mktemp -d) - -# Print the karma version in the test log -echo $($KARMA --version) - -ARGV=( "start" $CONF ) - -# Detect that we are running as a test, by using well-known environment -# variables. See go/test-encyclopedia -# Note: in Bazel 0.14 and later, TEST_TMPDIR is set for both bazel test and bazel run -# so we also check for the BUILD_WORKSPACE_DIRECTORY which is set only for bazel run -if [[ ! -z "${{TEST_TMPDIR}}" && ! -n "${{BUILD_WORKSPACE_DIRECTORY}}" ]]; then - ARGV+=( "--single-run" ) -fi - -$KARMA ${{ARGV[@]}} -""".format( - TMPL_workspace = ctx.workspace_name, - TMPL_karma = _short_path_to_manifest_path(ctx, ctx.executable.karma.short_path), - TMPL_conf = _short_path_to_manifest_path(ctx, configuration.short_path), - ), - ) - - config_sources = [] - if hasattr(ctx.file, "config_file"): - if ctx.file.config_file: - config_sources = [ctx.file.config_file] - if hasattr(ctx.attr.config_file, "node_sources"): - config_sources = ctx.attr.config_file.node_sources.to_list() - - runfiles = [ - configuration, - amd_names_shim, - ] - runfiles += config_sources - runfiles += ctx.files.srcs - runfiles += ctx.files.deps - runfiles += ctx.files.runtime_deps - runfiles += ctx.files.bootstrap - runfiles += ctx.files.static_files - runfiles += ctx.files.data - - return ctx.runfiles( - files = runfiles, - transitive_files = files, - ).merge(ctx.attr.karma[DefaultInfo].data_runfiles) - -def _karma_web_test_impl(ctx): - runfiles = run_karma_web_test(ctx) - - return [DefaultInfo( - files = depset([ctx.outputs.executable]), - runfiles = runfiles, - executable = ctx.outputs.executable, - )] - -_karma_web_test = rule( - implementation = _karma_web_test_impl, - test = True, - executable = True, - attrs = KARMA_WEB_TEST_ATTRS, -) - -def karma_web_test( - srcs = [], - deps = [], - data = [], - configuration_env_vars = [], - bootstrap = [], - runtime_deps = [], - static_files = [], - config_file = None, - tags = [], - **kwargs): - """Runs unit tests in a browser with Karma. - - When executed under `bazel test`, this uses a headless browser for speed. - This is also because `bazel test` allows multiple targets to be tested together, - and we don't want to open a Chrome window on your machine for each one. Also, - under `bazel test` the test will execute and immediately terminate. - - Running under `ibazel test` gives you a "watch mode" for your tests. The rule is - optimized for this case - the test runner server will stay running and just - re-serve the up-to-date JavaScript source bundle. - - To debug a single test target, run it with `bazel run` instead. This will open a - browser window on your computer. Also you can use any other browser by opening - the URL printed when the test starts up. The test will remain running until you - cancel the `bazel run` command. - - This rule will use your system Chrome by default. In the default case, your - environment must specify CHROME_BIN so that the rule will know which Chrome binary to run. - Other `browsers` and `customLaunchers` may be set using the a base Karma configuration - specified in the `config_file` attribute. - - Args: - srcs: A list of JavaScript test files - deps: Other targets which produce JavaScript such as `ts_library` - data: Runtime dependencies - configuration_env_vars: Pass these configuration environment variables to the resulting binary. - Chooses a subset of the configuration environment variables (taken from ctx.var), which also - includes anything specified via the --define flag. - Note, this can lead to different outputs produced by this rule. - bootstrap: JavaScript files to include *before* the module loader (require.js). - For example, you can include Reflect,js for TypeScript decorator metadata reflection, - or UMD bundles for third-party libraries. - runtime_deps: Dependencies which should be loaded after the module loader but before the srcs and deps. - These should be a list of targets which produce JavaScript such as `ts_library`. - The files will be loaded in the same order they are declared by that rule. - static_files: Arbitrary files which are available to be served on request. - Files are served at: - `/base//`, e.g. - `/base/npm_bazel_typescript/examples/testing/static_script.js` - config_file: User supplied Karma configuration file. Bazel will override - certain attributes of this configuration file. Attributes that are - overridden will be outputted to the test log. - tags: Standard Bazel tags, this macro adds tags for ibazel support - **kwargs: Passed through to `karma_web_test` - """ - - _karma_web_test( - srcs = srcs, - deps = deps, - data = data, - configuration_env_vars = configuration_env_vars, - bootstrap = bootstrap, - runtime_deps = runtime_deps, - static_files = static_files, - config_file = config_file, - tags = tags + [ - # Users don't need to know that this tag is required to run under ibazel - "ibazel_notify_changes", - ], - **kwargs - ) - -def karma_web_test_suite( - name, - browsers = ["@io_bazel_rules_webtesting//browsers:chromium-local"], - args = None, - browser_overrides = None, - config = None, - flaky = None, - local = None, - shard_count = None, - size = None, - tags = [], - test_suite_tags = None, - timeout = None, - visibility = None, - web_test_data = [], - wrapped_test_tags = None, - **remaining_keyword_args): - """Defines a test_suite of web_test targets that wrap a karma_web_test target. - - This macro also accepts all parameters in karma_web_test. See karma_web_test docs - for details. - - Args: - name: The base name of the test - browsers: A sequence of labels specifying the browsers to use. - args: Args for web_test targets generated by this extension. - browser_overrides: Dictionary; optional; default is an empty dictionary. A - dictionary mapping from browser names to browser-specific web_test - attributes, such as shard_count, flakiness, timeout, etc. For example: - {'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1} - '//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}. - config: Label; optional; Configuration of web test features. - flaky: A boolean specifying that the test is flaky. If set, the test will - be retried up to 3 times (default: 0) - local: boolean; optional. - shard_count: The number of test shards to use per browser. (default: 1) - size: A string specifying the test size. (default: 'large') - tags: A list of test tag strings to apply to each generated web_test target. - This macro adds a couple for ibazel. - test_suite_tags: A list of tag strings for the generated test_suite. - timeout: A string specifying the test timeout (default: computed from size) - visibility: List of labels; optional. - web_test_data: Data dependencies for the web_test. - wrapped_test_tags: A list of test tag strings to use for the wrapped test - **remaining_keyword_args: Arguments for the wrapped test target. - """ - - # Check explicitly for None so that users can set this to the empty list - if wrapped_test_tags == None: - wrapped_test_tags = DEFAULT_WRAPPED_TEST_TAGS - - size = size or "large" - - wrapped_test_name = name + "_wrapped_test" - - _karma_web_test( - name = wrapped_test_name, - args = args, - flaky = flaky, - local = local, - shard_count = shard_count, - size = size, - tags = wrapped_test_tags, - timeout = timeout, - visibility = ["//visibility:private"], - **remaining_keyword_args - ) - - web_test_suite( - name = name, - launcher = ":" + wrapped_test_name, - args = args, - browsers = browsers, - browser_overrides = browser_overrides, - config = config, - data = web_test_data, - flaky = flaky, - local = local, - shard_count = shard_count, - size = size, - tags = tags + [ - # Users don't need to know that this tag is required to run under ibazel - "ibazel_notify_changes", - ], - test = wrapped_test_name, - test_suite_tags = test_suite_tags, - timeout = timeout, - visibility = visibility, - ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl deleted file mode 100644 index ed31fee881..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.bzl +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright 2018 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Package file which defines npm_bazel_karma dependencies -""" - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -def rules_karma_dependencies(): - """ - Fetch our transitive dependencies. - - If the user wants to get a different version of these, they can just fetch it - from their WORKSPACE before calling this function, or not call this function at all. - """ - - # TypeScript compiler runs on node.js runtime - _maybe( - http_archive, - name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], - sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", - ) - - # ts_web_test depends on the web testing rules to provision browsers. - _maybe( - http_archive, - name = "io_bazel_rules_webtesting", - urls = ["https://github.com/bazelbuild/rules_webtesting/releases/download/0.3.0/rules_webtesting.tar.gz"], - sha256 = "1c0900547bdbe33d22aa258637dc560ce6042230e41e9ea9dad5d7d2fca8bc42", - ) - -def _maybe(repo_rule, name, **kwargs): - if name not in native.existing_rules(): - repo_rule(name = name, **kwargs) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json deleted file mode 100644 index 5f71978dcd..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "@bazel/karma", - "description": "Karma rules for Bazel", - "homepage": "https://github.com/bazelbuild/rules_typescript", - "license": "Apache-2.0", - "version": "0.0.0-PLACEHOLDER", - "keywords": [ - "karma", - "bazel" - ], - "main": "./index.js", - "typings": "./index.d.ts", - "bin": { - "karma": "./karma.js" - }, - "dependencies": { - "jasmine-core": "2.8.0", - "karma": "^4.0.0", - "karma-chrome-launcher": "2.2.0", - "karma-firefox-launcher": "1.1.0", - "karma-jasmine": "1.1.1", - "karma-requirejs": "1.1.0", - "karma-sauce-launcher": "2.0.2", - "karma-sourcemap-loader": "0.3.7", - "requirejs": "2.3.5", - "semver": "5.6.0", - "tmp": "0.0.33" - }, - "devDependencies": { - "@bazel/bazel": "~0.22.0", - "@types/node": "7.0.18", - "protobufjs": "5.0.3", - "semver": "5.6.0", - "source-map-support": "0.5.9", - "tsickle": "0.33.1", - "tsutils": "2.27.2", - "typescript": "~3.1.6", - "jasmine-core": "2.8.0" - }, - "bazelWorkspaces": { - "npm_bazel_karma": { - "version": "0.0.0-PLACEHOLDER", - "compatVersion": "0.0.0-COMPAT_VERSION", - "rootPath": "." - } - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl deleted file mode 100644 index ab5329b29a..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/ts_web_test.bzl +++ /dev/null @@ -1,201 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"Unit testing in a browser" - -load("@io_bazel_rules_webtesting//web/internal:constants.bzl", "DEFAULT_WRAPPED_TEST_TAGS") -load("@io_bazel_rules_webtesting//web:web.bzl", "web_test_suite") -load(":karma_web_test.bzl", "KARMA_GENERIC_WEB_TEST_ATTRS", "run_karma_web_test") - -# Using generic karma_web_test attributes under the hood -TS_WEB_TEST_ATTRS = dict(KARMA_GENERIC_WEB_TEST_ATTRS, **{}) - -def _ts_web_test_impl(ctx): - # Using karma_web_test under the hood - runfiles = run_karma_web_test(ctx) - - return [DefaultInfo( - files = depset([ctx.outputs.executable]), - runfiles = runfiles, - executable = ctx.outputs.executable, - )] - -_ts_web_test = rule( - implementation = _ts_web_test_impl, - test = True, - executable = True, - attrs = TS_WEB_TEST_ATTRS, -) - -def ts_web_test( - srcs = [], - deps = [], - data = [], - configuration_env_vars = [], - bootstrap = [], - runtime_deps = [], - static_files = [], - tags = [], - **kwargs): - """Runs unit tests in a browser. - - When executed under `bazel test`, this uses a headless browser for speed. - This is also because `bazel test` allows multiple targets to be tested together, - and we don't want to open a Chrome window on your machine for each one. Also, - under `bazel test` the test will execute and immediately terminate. - - Running under `ibazel test` gives you a "watch mode" for your tests. The rule is - optimized for this case - the test runner server will stay running and just - re-serve the up-to-date JavaScript source bundle. - - To debug a single test target, run it with `bazel run` instead. This will open a - browser window on your computer. Also you can use any other browser by opening - the URL printed when the test starts up. The test will remain running until you - cancel the `bazel run` command. - - This rule will use your system Chrome. Your environment must specify CHROME_BIN - so that the rule will know which Chrome binary to run. - - Currently this rule uses Karma as the test runner under the hood, but this is - an implementation detail. We might switch to another runner like Jest in the future. - - Args: - srcs: A list of JavaScript test files - deps: Other targets which produce JavaScript such as `ts_library` - data: Runtime dependencies - configuration_env_vars: Pass these configuration environment variables to the resulting binary. - Chooses a subset of the configuration environment variables (taken from ctx.var), which also - includes anything specified via the --define flag. - Note, this can lead to different outputs produced by this rule. - bootstrap: JavaScript files to include *before* the module loader (require.js). - For example, you can include Reflect,js for TypeScript decorator metadata reflection, - or UMD bundles for third-party libraries. - runtime_deps: Dependencies which should be loaded after the module loader but before the srcs and deps. - These should be a list of targets which produce JavaScript such as `ts_library`. - The files will be loaded in the same order they are declared by that rule. - static_files: Arbitrary files which are available to be served on request. - Files are served at: - `/base//`, e.g. - `/base/npm_bazel_typescript/examples/testing/static_script.js` - tags: Standard Bazel tags, this macro adds tags for ibazel support as well as - `browser:chromium-system` to allow for filtering on systems with no - system Chrome. - **kwargs: Passed through to `ts_web_test` - """ - - _ts_web_test( - srcs = srcs, - deps = deps, - data = data, - configuration_env_vars = configuration_env_vars, - bootstrap = bootstrap, - runtime_deps = runtime_deps, - static_files = static_files, - tags = tags + [ - # Users don't need to know that this tag is required to run under ibazel - "ibazel_notify_changes", - # Always attach this label to allow filtering, eg. envs w/ no browser - "browser:chromium-system", - ], - **kwargs - ) - -def ts_web_test_suite( - name, - browsers = ["@io_bazel_rules_webtesting//browsers:chromium-local"], - args = None, - browser_overrides = None, - config = None, - flaky = None, - local = None, - shard_count = None, - size = None, - tags = [], - test_suite_tags = None, - timeout = None, - visibility = None, - web_test_data = [], - wrapped_test_tags = None, - **remaining_keyword_args): - """Defines a test_suite of web_test targets that wrap a ts_web_test target. - - This macro also accepts all parameters in ts_web_test. See ts_web_test docs for - details. - - Args: - name: The base name of the test. - browsers: A sequence of labels specifying the browsers to use. - args: Args for web_test targets generated by this extension. - browser_overrides: Dictionary; optional; default is an empty dictionary. A - dictionary mapping from browser names to browser-specific web_test - attributes, such as shard_count, flakiness, timeout, etc. For example: - {'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1} - '//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}. - config: Label; optional; Configuration of web test features. - flaky: A boolean specifying that the test is flaky. If set, the test will - be retried up to 3 times (default: 0) - local: boolean; optional. - shard_count: The number of test shards to use per browser. (default: 1) - size: A string specifying the test size. (default: 'large') - tags: A list of test tag strings to apply to each generated web_test_suite target. - This macro adds a couple for ibazel. - test_suite_tags: A list of tag strings for the generated test_suite. - timeout: A string specifying the test timeout (default: computed from size) - visibility: List of labels; optional. - web_test_data: Data dependencies for the web_test_suite. - wrapped_test_tags: A list of test tag strings to use for the wrapped test - **remaining_keyword_args: Arguments for the wrapped test target. - """ - - # Check explicitly for None so that users can set this to the empty list - if wrapped_test_tags == None: - wrapped_test_tags = DEFAULT_WRAPPED_TEST_TAGS - - size = size or "large" - - wrapped_test_name = name + "_wrapped_test" - - _ts_web_test( - name = wrapped_test_name, - args = args, - flaky = flaky, - local = local, - shard_count = shard_count, - size = size, - tags = wrapped_test_tags, - timeout = timeout, - visibility = ["//visibility:private"], - **remaining_keyword_args - ) - - web_test_suite( - name = name, - launcher = ":" + wrapped_test_name, - args = args, - browsers = browsers, - browser_overrides = browser_overrides, - config = config, - data = web_test_data, - flaky = flaky, - local = local, - shard_count = shard_count, - size = size, - tags = tags + [ - # Users don't need to know that this tag is required to run under ibazel - "ibazel_notify_changes", - ], - test = wrapped_test_name, - test_suite_tags = test_suite_tags, - timeout = timeout, - visibility = visibility, - ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/tsconfig.json.oss b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/tsconfig.json.oss deleted file mode 100644 index bce2c5c476..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/tsconfig.json.oss +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - // Explicitly set types settings so typescript doesn't auto-discover types. - // If all types are discovered then all types need to be included as deps - // or typescript may error out with TS2688: Cannot find type definition file for 'foo'. - "types": ["node"] - } -} - diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/web_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/web_test.bzl deleted file mode 100644 index 7ebb58b259..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/web_test.bzl +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"Common web_test attributes" - -load("@build_bazel_rules_nodejs//internal/common:sources_aspect.bzl", "sources_aspect") - -# Attributes shared by any web_test rule (ts_web_test, karma_web_test, protractor_web_test) -COMMON_WEB_TEST_ATTRS = { - "srcs": attr.label_list( - doc = "A list of JavaScript test files", - allow_files = [".js"], - ), - "configuration_env_vars": attr.string_list( - doc = """Pass these configuration environment variables to the resulting binary. - Chooses a subset of the configuration environment variables (taken from ctx.var), which also - includes anything specified via the --define flag. - Note, this can lead to different outputs produced by this rule.""", - default = [], - ), - "data": attr.label_list( - doc = "Runtime dependencies", - allow_files = True, - ), - "deps": attr.label_list( - doc = "Other targets which produce JavaScript such as `ts_library`", - allow_files = True, - aspects = [sources_aspect], - ), -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock deleted file mode 100644 index 1d21df6884..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/karma/yarn.lock +++ /dev/null @@ -1,2320 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@bazel/bazel-darwin_x64@0.22.0": - version "0.22.0" - resolved "https://registry.yarnpkg.com/@bazel/bazel-darwin_x64/-/bazel-darwin_x64-0.22.0.tgz#a2bea5922dba9a32554a218ba4849a200115b248" - integrity sha512-LFxkyQgPATeB64z/1IvOWZhK+lc3JVHejbmdo96qB4lsoD8zselvOlgHvVXxlAjRxVZ9mlmXDvDRDyaXyyRdwA== - -"@bazel/bazel-linux_x64@0.22.0": - version "0.22.0" - resolved "https://registry.yarnpkg.com/@bazel/bazel-linux_x64/-/bazel-linux_x64-0.22.0.tgz#12e5884f2a7b7f3b62afbef9f8da4de0976f3bc8" - integrity sha512-xDs8cb2bbGZ9uvzYZOzCVrMBywzRhLj0J/t+py+FYZj+VO5B3wVg9eUf6nWWR0oJ2mzvToI9h31t2tNdqwy2kQ== - -"@bazel/bazel-win32_x64@0.22.0": - version "0.22.0" - resolved "https://registry.yarnpkg.com/@bazel/bazel-win32_x64/-/bazel-win32_x64-0.22.0.tgz#a8a65986639583a8cc7b018e001aedfdafe41b50" - integrity sha512-FbJaXVDoCLnpIFLnPHFkQdfriYPXfnfQNuf9EXMliERdRuoeBVbwEZfwcuArxZWNFus7bD8QiTj0XzKVWO+Wbw== - -"@bazel/bazel@~0.22.0": - version "0.22.0" - resolved "https://registry.yarnpkg.com/@bazel/bazel/-/bazel-0.22.0.tgz#feb0f2d82f9d169cb47951d95d55e512eda72bc9" - integrity sha512-uaXZsfCXOASBXzmge56akRIhJnKYdShn1X3AdEBzq2NNCf2llkc1H25gKGm4BfuWDBXRbXDMmcXup+fw39h+WQ== - optionalDependencies: - "@bazel/bazel-darwin_x64" "0.22.0" - "@bazel/bazel-linux_x64" "0.22.0" - "@bazel/bazel-win32_x64" "0.22.0" - -"@types/node@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" - integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -accepts@~1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" - integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= - dependencies: - mime-types "~2.1.18" - negotiator "0.6.1" - -adm-zip@~0.4.3: - version "0.4.13" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" - integrity sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw== - -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= - -agent-base@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== - dependencies: - es6-promisify "^5.0.0" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - 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" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -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" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-slice@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" - integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -arraybuffer.slice@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" - integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - integrity sha1-GdOGodntxufByF04iu28xW0zYC0= - -async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== - -async@^2.1.2: - version "2.6.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" - integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== - dependencies: - lodash "^4.17.10" - -atob@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= - -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - 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" - -better-assert@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" - integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= - dependencies: - callsite "1.0.0" - -binary-extensions@^1.0.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" - integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== - -blob@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" - integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== - -bluebird@^3.3.0: - version "3.5.3" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" - integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== - -body-parser@^1.16.1: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" - on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^0.1.2: - version "0.1.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" - integrity sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY= - dependencies: - expand-range "^0.1.0" - -braces@^2.3.0, braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - 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" - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= - dependencies: - long "~3" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - 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" - -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -chokidar@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" - integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== - 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" - lodash.debounce "^4.0.8" - normalize-path "^2.1.1" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - upath "^1.0.5" - optionalDependencies: - fsevents "^1.2.2" - -chownr@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== - -circular-json@^0.5.5: - version "0.5.9" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" - integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -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" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -colors@^1.1.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= - -combine-lists@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" - integrity sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y= - dependencies: - lodash "^4.5.0" - -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= - -component-emitter@1.2.1, component-emitter@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= - -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -connect@^3.6.0: - version "3.6.6" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" - integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ= - dependencies: - debug "2.6.9" - finalhandler "1.1.0" - parseurl "~1.3.2" - utils-merge "1.0.1" - -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" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-js@^2.2.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.3.tgz#4b70938bdffdaf64931e66e2db158f0892289c49" - integrity sha512-l00tmFFZOBHtYhN4Cz7k32VM7vTn3rE2ANjQDxdEN6zmXZ/xq1jQuutnmHvMG1ZJ7xd72+TA5YpUK8wz3rWsfQ== - -core-js@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" - integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= - -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" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -custom-event@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" - integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= - -date-format@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" - integrity sha1-YV6CjiM90aubua4JUODOzPpuytg= - -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@=3.1.0, debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -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" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - 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" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - 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" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - -di@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= - -dom-serialize@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" - integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= - dependencies: - custom-event "~1.0.0" - ent "~2.2.0" - extend "^3.0.0" - void-elements "^2.0.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -encodeurl@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -engine.io-client@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" - integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.1.1" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.5" - parseuri "0.0.5" - ws "~3.3.1" - xmlhttprequest-ssl "~1.5.4" - yeast "0.1.2" - -engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6" - integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA== - dependencies: - after "0.8.2" - arraybuffer.slice "~0.0.7" - base64-arraybuffer "0.1.5" - blob "0.0.5" - has-binary2 "~1.0.2" - -engine.io@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" - integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== - dependencies: - accepts "~1.3.4" - base64id "1.0.0" - cookie "0.3.1" - debug "~3.1.0" - engine.io-parser "~2.1.0" - ws "~3.3.1" - -ent@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= - -es6-promise@^4.0.3: - version "4.2.5" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" - integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg== - -es6-promise@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" - integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -eventemitter3@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" - integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== - -expand-braces@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" - integrity sha1-SIsdHSRRyz06axks/AMPRMWFX+o= - dependencies: - array-slice "^0.2.3" - array-unique "^0.2.1" - braces "^0.1.2" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - 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" - -expand-range@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" - integrity sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ= - dependencies: - is-number "^0.1.1" - repeat-string "^0.2.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - 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" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - 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" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -finalhandler@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" - integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U= - dependencies: - debug "2.6.9" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.3.1" - unpipe "~1.0.0" - -flatted@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" - integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== - -follow-redirects@^1.0.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.6.1.tgz#514973c44b5757368bad8bddfe52f81f015c94cb" - integrity sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ== - dependencies: - debug "=3.1.0" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fs-access@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" - integrity sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o= - dependencies: - null-check "^1.0.0" - -fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== - 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" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.2: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" - integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== - dependencies: - nan "^2.9.2" - node-pre-gyp "^0.10.0" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - 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-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" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob@^7.0.5, glob@^7.1.1, glob@^7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - 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" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== - -has-binary2@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" - integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== - dependencies: - isarray "2.0.1" - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - 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" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - 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" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -http-errors@1.6.3, http-errors@~1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-proxy@^1.13.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" - integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== - dependencies: - eventemitter3 "^3.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -https-proxy-agent@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" - integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== - dependencies: - agent-base "^4.1.0" - debug "^3.1.0" - -iconv-lite@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== - dependencies: - minimatch "^3.0.4" - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -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" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - 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" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - 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" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - 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" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -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" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - 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" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - 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" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - 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" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - 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" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -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" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - 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" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - 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" - integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= - dependencies: - is-extglob "^2.1.1" - -is-number@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" - integrity sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY= - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -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" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isarray@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" - integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= - -isbinaryfile@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" - integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== - dependencies: - buffer-alloc "^1.2.0" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - 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" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -jasmine-core@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= - -jszip@^3.1.3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" - integrity sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ== - dependencies: - core-js "~2.3.0" - es6-promise "~3.0.2" - lie "~3.1.0" - pako "~1.0.2" - readable-stream "~2.0.6" - -karma-chrome-launcher@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" - integrity sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w== - dependencies: - fs-access "^1.0.0" - which "^1.2.1" - -karma-firefox-launcher@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz#2c47030452f04531eb7d13d4fc7669630bb93339" - integrity sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA== - -karma-jasmine@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.1.tgz#6fe840e75a11600c9d91e84b33c458e1c46a3529" - integrity sha1-b+hA51oRYAydkehLM8RY4cRqNSk= - -karma-requirejs@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/karma-requirejs/-/karma-requirejs-1.1.0.tgz#fddae2cb87d7ebc16fb0222893564d7fee578798" - integrity sha1-/driy4fX68FvsCIok1ZNf+5Xh5g= - -karma-sauce-launcher@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-2.0.2.tgz#dbf98e70d86bf287b03a537cf637eb7aefa975c3" - integrity sha512-jLUFaJhHMcKpxFWUesyWYihzM5FvQiJsDwGcCtKeOy2lsWhkVw0V0Byqb1d+wU6myU1mribBtsIcub23HS4kWA== - dependencies: - sauce-connect-launcher "^1.2.4" - saucelabs "^1.5.0" - selenium-webdriver "^4.0.0-alpha.1" - -karma-sourcemap-loader@0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" - integrity sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg= - dependencies: - graceful-fs "^4.1.2" - -karma@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-4.0.0.tgz#f28e38a2b66243fde3f98e12a8dcaa2c6ff8ca9c" - integrity sha512-EFoFs3F6G0BcUGPNOn/YloGOb3h09hzTguyXlg6loHlKY76qbJikkcyPk43m2kfRF65TUGda/mig29QQtyhm1g== - dependencies: - bluebird "^3.3.0" - body-parser "^1.16.1" - chokidar "^2.0.3" - colors "^1.1.0" - combine-lists "^1.0.0" - connect "^3.6.0" - core-js "^2.2.0" - di "^0.0.1" - dom-serialize "^2.2.0" - expand-braces "^0.1.1" - flatted "^2.0.0" - glob "^7.1.1" - graceful-fs "^4.1.2" - http-proxy "^1.13.0" - isbinaryfile "^3.0.0" - lodash "^4.17.5" - log4js "^3.0.0" - mime "^2.3.1" - minimatch "^3.0.2" - optimist "^0.6.1" - qjobs "^1.1.4" - range-parser "^1.2.0" - rimraf "^2.6.0" - safe-buffer "^5.0.1" - socket.io "2.1.1" - source-map "^0.6.1" - tmp "0.0.33" - useragent "2.3.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" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - 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" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - 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" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -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" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -lie@~3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" - integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= - dependencies: - immediate "~3.0.5" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.5, lodash@^4.5.0: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== - -log4js@^3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.6.tgz#e6caced94967eeeb9ce399f9f8682a4b2b28c8ff" - integrity sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== - dependencies: - circular-json "^0.5.5" - date-format "^1.2.0" - debug "^3.1.0" - rfdc "^1.1.2" - streamroller "0.7.0" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= - -lru-cache@4.1.x: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - 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" - -mime-db@~1.37.0: - version "1.37.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" - integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== - -mime-types@~2.1.18: - version "2.1.21" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" - integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== - dependencies: - mime-db "~1.37.0" - -mime@^2.3.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" - integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== - -minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - 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" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - -minipass@^2.2.1, minipass@^2.3.4: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== - 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" - integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.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" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - 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" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -nan@^2.9.2: - version "2.12.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" - integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - 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-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.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" - integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== - dependencies: - debug "^2.1.2" - iconv-lite "^0.4.4" - sax "^1.2.4" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= - -node-pre-gyp@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" - integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.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" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -npm-bundled@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" - integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== - -npm-packlist@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.2.0.tgz#55a60e793e272f00862c7089274439a4cc31fc7f" - integrity sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ== - 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" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -null-check@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" - integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0= - -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" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.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" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - 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" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -pako@~1.0.2: - version "1.0.8" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.8.tgz#6844890aab9c635af868ad5fecc62e8acbba3ea4" - integrity sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA== - -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= - dependencies: - better-assert "~1.0.0" - -parseurl@~1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" - integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -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" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= - -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" - integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== - -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -qjobs@^1.1.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" - integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== - -qs@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -range-parser@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= - -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== - dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" - unpipe "1.0.0" - -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - 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.3.0: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== - 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" - -readable-stream@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -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" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.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" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" - integrity sha1-x6jTI2BoNiBZp+RlH8aITosftK4= - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -requirejs@2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0" - integrity sha512-svnO+aNcR/an9Dpi44C7KSAy5fFGLtmPbaaCeQaklUz8BQhS64tWWIIlvEA5jrWICzlO/X9KSzSeXFnZdBu8nw== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -rfdc@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.2.tgz#e6e72d74f5dc39de8f538f65e00c36c18018e349" - integrity sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA== - -rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -safe-buffer@^5.0.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" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - 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" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sauce-connect-launcher@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.2.4.tgz#8d38f85242a9fbede1b2303b559f7e20c5609a1c" - integrity sha512-X2vfwulR6brUGiicXKxPm1GJ7dBEeP1II450Uv4bHGrcGOapZNgzJvn9aioea5IC5BPp/7qjKdE3xbbTBIVXMA== - dependencies: - adm-zip "~0.4.3" - async "^2.1.2" - https-proxy-agent "^2.2.1" - lodash "^4.16.6" - rimraf "^2.5.4" - -saucelabs@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" - integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== - dependencies: - https-proxy-agent "^2.2.1" - -sax@>=0.6.0, sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -selenium-webdriver@^4.0.0-alpha.1: - version "4.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz#cc93415e21d2dc1dfd85dfc5f6b55f3ac53933b1" - integrity sha512-z88rdjHAv3jmTZ7KSGUkTvo4rGzcDGMq0oXWHNIDK96Gs31JKVdu9+FMtT4KBrVoibg8dUicJDok6GnqqttO5Q== - dependencies: - jszip "^3.1.3" - rimraf "^2.5.4" - tmp "0.0.30" - xml2js "^0.4.17" - -semver@5.6.0, semver@^5.3.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= - 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" - integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - 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" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - 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" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - 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" - -socket.io-adapter@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" - integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= - -socket.io-client@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" - integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== - dependencies: - backo2 "1.0.2" - base64-arraybuffer "0.1.5" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "~3.1.0" - engine.io-client "~3.2.0" - has-binary2 "~1.0.2" - has-cors "1.1.0" - indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - socket.io-parser "~3.2.0" - to-array "0.1.4" - -socket.io-parser@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" - integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== - dependencies: - component-emitter "1.2.1" - debug "~3.1.0" - isarray "2.0.1" - -socket.io@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" - integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== - dependencies: - debug "~3.1.0" - engine.io "~3.2.0" - has-binary2 "~1.0.2" - socket.io-adapter "~1.1.0" - socket.io-client "2.1.1" - socket.io-parser "~3.2.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" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== - 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.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -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" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -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" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= - -streamroller@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" - integrity sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ== - dependencies: - date-format "^1.2.0" - debug "^3.1.0" - mkdirp "^0.5.1" - readable-stream "^2.3.0" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - 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" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - 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" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - 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" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - 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" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -tar@^4: - version "4.4.8" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.3.4" - minizlib "^1.1.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.2" - -tmp@0.0.30: - version "0.0.30" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" - integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= - dependencies: - os-tmpdir "~1.0.1" - -tmp@0.0.33, tmp@0.0.x: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= - -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" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - 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" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - 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" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -tsickle@0.33.1: - version "0.33.1" - resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.33.1.tgz#eee4ebabeda3bcd8afc32cee34c822cbe3e839ec" - integrity sha512-SpW2G3PvDGs4a5sMXPlWnCWHWRviWjSlI3U0734e3fU3U39VAE0NPr8M3W1cuL/OU/YXheYipGeEwtIJ5k0NHQ== - dependencies: - minimist "^1.2.0" - mkdirp "^0.5.1" - source-map "^0.7.3" - -tslib@^1.8.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== - dependencies: - tslib "^1.8.1" - -type-is@~1.6.16: - version "1.6.16" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" - integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.18" - -typescript@~3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" - integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== - -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== - -union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^0.4.3" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.0.5: - version "1.1.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" - integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -useragent@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" - integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== - dependencies: - lru-cache "4.1.x" - tmp "0.0.x" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -void-elements@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= - -which@^1.2.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - 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" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -ws@~3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - -xml2js@^0.4.17: - version "0.4.19" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" - integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== - dependencies: - sax ">=0.6.0" - xmlbuilder "~9.0.1" - -xmlbuilder@~9.0.1: - version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= - -xmlhttprequest-ssl@~1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" - integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= - -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== - -yargs@^3.10.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/BUILD.bazel deleted file mode 100644 index ae06e171af..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/BUILD.bazel +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright 2018 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary") - -package(default_visibility = ["//visibility:public"]) - -exports_files([ - "node_modules/protobufjs/dist/minimal/protobuf.min.js", - # Exported to be consumed for generating skydoc. - "ts_proto_library.bzl", -]) - -nodejs_binary( - name = "pbjs", - data = [ - "@build_bazel_rules_typescript_protobufs_compiletime_deps//protobufjs", - # these deps are needed even tho they are not automatic transitive deps of - # protobufjs since if they are not in the runfiles then protobufjs attempts to - # run `npm install` at runtime to get thhem which fails as it tries to access - # the npm cache outside of the sandbox - "@build_bazel_rules_typescript_protobufs_compiletime_deps//semver", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//chalk", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//glob", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//jsdoc", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//minimist", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//tmp", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//uglify-js", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//espree", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//escodegen", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//estraverse", - ], - entry_point = "protobufjs/bin/pbjs", - install_source_map_support = False, -) - -nodejs_binary( - name = "pbts", - data = [ - "@build_bazel_rules_typescript_protobufs_compiletime_deps//protobufjs", - # these deps are needed even tho they are not automatic transitive deps of - # protobufjs since if they are not in the runfiles then protobufjs attempts to - # run `npm install` at runtime to get thhem which fails as it tries to access - # the npm cache outside of the sandbox - "@build_bazel_rules_typescript_protobufs_compiletime_deps//semver", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//chalk", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//glob", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//jsdoc", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//minimist", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//tmp", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//uglify-js", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//espree", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//escodegen", - "@build_bazel_rules_typescript_protobufs_compiletime_deps//estraverse", - ], - entry_point = "protobufjs/bin/pbts", - install_source_map_support = False, -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/package.json deleted file mode 100644 index 7d669f6cbf..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "protobufjs", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "devDependencies": { - "chalk": "^1.1.3", - "escodegen": "^1.9.0", - "espree": "^3.5.3", - "estraverse": "^4.2.0", - "glob": "^7.1.2", - "jsdoc": "^3.5.5", - "minimist": "^1.2.0", - "protobufjs": "Use HEAD to pick up fix for https://github.com/dcodeIO/protobuf.js/pull/1018", - "protobufjs": "github:dcodeIO/protobuf.js#65d113b0079fa2570837f3cf95268ce24714a248", - "semver": "^5.5.0", - "tmp": "0.0.33", - "uglify-js": "^2.8.29" - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl deleted file mode 100644 index 807dea0fd8..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/ts_proto_library.bzl +++ /dev/null @@ -1,193 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"Protocol Buffers" - -def _run_pbjs(actions, executable, output_name, proto_files, suffix = ".js", wrap = "amd", amd_name = ""): - js_file = actions.declare_file(output_name + suffix) - - # Create an intermediate file so that we can do some manipulation of the - # generated .js output that makes it compatible with our named AMD loading. - js_tmpl_file = actions.declare_file(output_name + suffix + ".tmpl") - - # Reference of arguments: - # https://github.com/dcodeIO/ProtoBuf.js/#pbjs-for-javascript - args = actions.args() - args.add_all(["--target", "static-module"]) - args.add_all(["--wrap", wrap]) - args.add("--strict-long") # Force usage of Long type with int64 fields - args.add_all(["--out", js_file.path + ".tmpl"]) - args.add_all(proto_files) - - actions.run( - executable = executable._pbjs, - inputs = proto_files, - outputs = [js_tmpl_file], - arguments = [args], - ) - - actions.expand_template( - template = js_tmpl_file, - output = js_file, - substitutions = { - # convert anonymous AMD module - # define(["protobufjs/minimal"], function($protobuf) { - # to named - # define("wksp/path/to/module", ["protobufjs/minimal"], ... - "define([": "define('%s/%s', [" % (amd_name, output_name), - }, - ) - return js_file - -def _run_pbts(actions, executable, js_file): - ts_file = actions.declare_file(js_file.basename[:-len(".closure.js")] + ".d.ts") - - # Reference of arguments: - # https://github.com/dcodeIO/ProtoBuf.js/#pbts-for-typescript - args = actions.args() - args.add_all(["--out", ts_file.path]) - args.add(js_file.path) - - actions.run( - executable = executable._pbts, - progress_message = "Generating typings from %s" % js_file.short_path, - inputs = [js_file], - outputs = [ts_file], - arguments = [args], - ) - return ts_file - -def _ts_proto_library(ctx): - sources = depset() - for dep in ctx.attr.deps: - if not hasattr(dep, "proto"): - fail("ts_proto_library dep %s must be a proto_library rule" % dep.label) - - # TODO(alexeagle): go/new-proto-library suggests - # > should not parse .proto files. Instead, they should use the descriptor - # > set output from proto_library - # but protobuf.js doesn't seem to accept that bin format - sources = depset(transitive = [sources, dep.proto.transitive_sources]) - - output_name = ctx.attr.output_name or ctx.label.name - - js_es5 = _run_pbjs( - ctx.actions, - ctx.executable, - output_name, - sources, - amd_name = "/".join([p for p in [ - ctx.workspace_name, - ctx.label.package, - ] if p]), - ) - js_es6 = _run_pbjs( - ctx.actions, - ctx.executable, - output_name, - sources, - suffix = ".closure.js", - wrap = "es6", - ) - dts = _run_pbts(ctx.actions, ctx.executable, js_es6) - - # Return a structure that is compatible with the deps[] of a ts_library. - return struct( - files = depset([dts]), - typescript = struct( - declarations = depset([dts]), - transitive_declarations = depset([dts]), - type_blacklisted_declarations = depset(), - es5_sources = depset([js_es5]), - es6_sources = depset([js_es6]), - transitive_es5_sources = depset(), - transitive_es6_sources = depset([js_es6]), - ), - ) - -ts_proto_library = rule( - implementation = _ts_proto_library, - attrs = { - "output_name": attr.string( - doc = """Name of the resulting module, which you will import from. - If not specified, the name will match the target's name.""", - ), - "deps": attr.label_list(doc = "proto_library targets"), - "_pbjs": attr.label( - default = Label("//internal/protobufjs:pbjs"), - executable = True, - cfg = "host", - ), - "_pbts": attr.label( - default = Label("//internal/protobufjs:pbts"), - executable = True, - cfg = "host", - ), - }, -) -""" -Wraps https://github.com/dcodeIO/protobuf.js for use in Bazel. - -`ts_proto_library` has identical outputs to `ts_library`, so it can be used anywhere -a `ts_library` can appear, such as in the `deps[]` of another `ts_library`. - -Example: - -``` -load("@npm_bazel_typescript//:defs.bzl", "ts_library", "ts_proto_library") - -proto_library( - name = "car_proto", - srcs = ["car.proto"], -) - -ts_proto_library( - name = "car", - deps = [":car_proto"], -) - -ts_library( - name = "test_lib", - testonly = True, - srcs = ["car.spec.ts"], - deps = [":car"], -) -``` - -Note in this example we named the `ts_proto_library` rule `car` so that the -result will be `car.d.ts`. This means our TypeScript code can just -`import {symbols} from './car'`. Use the `output_name` attribute if you want to -name the rule differently from the output file. - -The JavaScript produced by protobuf.js has a runtime dependency on a support library. -Under devmode (e.g. `ts_devserver`, `ts_web_test_suite`) you'll need to include these scripts -in the `bootstrap` phase (before Require.js loads). You can use the label -`@npm_bazel_typescript//:protobufjs_bootstrap_scripts` to reference these scripts -in the `bootstrap` attribute of `ts_web_test_suite` or `ts_devserver`. - -To complete the example above, you could write a `ts_web_test_suite`: - -``` -load("@npm_bazel_karma//:defs.bzl", "ts_web_test_suite") - -ts_web_test_suite( - name = "test", - deps = ["test_lib"], - bootstrap = ["@npm_bazel_typescript//:protobufjs_bootstrap_scripts"], - browsers = [ - "@io_bazel_rules_webtesting//browsers:chromium-local", - "@io_bazel_rules_webtesting//browsers:firefox-local", - ], -) -``` -""" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/yarn.lock deleted file mode 100644 index caa710097e..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/protobufjs/yarn.lock +++ /dev/null @@ -1,467 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@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" - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - -"@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" - -"@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.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.10.tgz#fec07bc2ad549d9e6d2f7aa0fb0be3491b83163a" - -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" - dependencies: - acorn "^3.0.4" - -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - -acorn@^5.5.0: - version "5.5.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" - -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -babylon@7.0.0-beta.19: - version "7.0.0-beta.19" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.19.tgz#e928c7e807e970e0536b078ab3e0c48f9e052503" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -bluebird@~3.5.0: - version "3.5.1" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" - -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" - -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - -catharsis@~0.8.9: - version "0.8.9" - resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.9.tgz#98cc890ca652dd2ef0e70b37925310ff9e90fc8b" - dependencies: - underscore-contrib "~0.3.0" - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -chalk@^1.1.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" - -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -decamelize@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - -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.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" - -espree@^3.5.3: - version "3.5.4" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" - dependencies: - acorn "^5.5.0" - acorn-jsx "^3.0.0" - -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - -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" - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -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" - -graceful-fs@^4.1.9: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -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" - -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: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - -js2xmlparser@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-3.0.0.tgz#3fb60eaa089c5440f9319f51760ccd07e2499733" - dependencies: - xmlcreate "^1.0.1" - -jsdoc@^3.5.5: - version "3.5.5" - resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.5.5.tgz#484521b126e81904d632ff83ec9aaa096708fa4d" - dependencies: - babylon "7.0.0-beta.19" - bluebird "~3.5.0" - catharsis "~0.8.9" - escape-string-regexp "~1.0.5" - js2xmlparser "~3.0.0" - klaw "~2.0.0" - marked "~0.3.6" - mkdirp "~0.5.1" - requizzle "~0.2.1" - strip-json-comments "~2.0.1" - taffydb "2.6.2" - underscore "~1.8.3" - -kind-of@^3.0.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - dependencies: - is-buffer "^1.1.5" - -klaw@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-2.0.0.tgz#59c128e0dc5ce410201151194eeb9cbf858650f6" - dependencies: - graceful-fs "^4.1.9" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - -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" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - -marked@~0.3.6: - version "0.3.19" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" - -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.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -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" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -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-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - -"protobufjs@github:dcodeIO/protobuf.js#65d113b0079fa2570837f3cf95268ce24714a248": - version "6.8.7" - resolved "https://codeload.github.com/dcodeIO/protobuf.js/tar.gz/65d113b0079fa2570837f3cf95268ce24714a248" - 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" - -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -requizzle@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.1.tgz#6943c3530c4d9a7e46f1cddd51c158fc670cdbde" - dependencies: - underscore "~1.6.0" - -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - dependencies: - align-text "^0.1.1" - -semver@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - -source-map@~0.5.1: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - -source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - -strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.0.0" - -strip-json-comments@~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" - -taffydb@2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" - -tmp@0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - dependencies: - os-tmpdir "~1.0.2" - -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" - -uglify-js@^2.8.29: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - -underscore-contrib@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/underscore-contrib/-/underscore-contrib-0.3.0.tgz#665b66c24783f8fa2b18c9f8cbb0e2c7d48c26c7" - dependencies: - underscore "1.6.0" - -underscore@1.6.0, underscore@~1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" - -underscore@~1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - -wordwrap@~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" - -xmlcreate@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-1.0.2.tgz#fa6bf762a60a413fb3dd8f4b03c5b269238d308f" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_config.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_config.bzl deleted file mode 100644 index db56b3975e..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_config.bzl +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"tsconfig.json files using extends" - -TsConfigInfo = provider() - -def _ts_config_impl(ctx): - files = depset([ctx.file.src]) - return [DefaultInfo(files = files), TsConfigInfo(deps = ctx.files.deps)] - -ts_config = rule( - implementation = _ts_config_impl, - attrs = { - "src": attr.label( - doc = """The tsconfig.json file passed to the TypeScript compiler""", - allow_single_file = True, - mandatory = True, - ), - "deps": attr.label_list( - doc = """Additional tsconfig.json files referenced via extends""", - allow_files = True, - mandatory = True, - ), - }, -) -"""Allows a tsconfig.json file to extend another file. - -Normally, you just give a single `tsconfig.json` file as the tsconfig attribute -of a `ts_library` rule. However, if your `tsconfig.json` uses the `extends` -feature from TypeScript, then the Bazel implementation needs to know about that -extended configuration file as well, to pass them both to the TypeScript compiler. -""" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl index 16c3e40cd3..e37ca2f77c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl @@ -35,27 +35,6 @@ def ts_setup_workspace(): # 0.16.8: ng_package fix for packaging binary files check_rules_nodejs_version("0.16.8") - # Included here for backward compatability for downstream repositories - # that use @build_bazel_rules_typescript_tsc_wrapped_deps such as rxjs. - # @build_bazel_rules_typescript_tsc_wrapped_deps is not used locally. - yarn_install( - name = "build_bazel_rules_typescript_tsc_wrapped_deps", - package_json = "@npm_bazel_typescript//internal:tsc_wrapped/package.json", - yarn_lock = "@npm_bazel_typescript//internal:tsc_wrapped/yarn.lock", - ) - - yarn_install( - name = "build_bazel_rules_typescript_devserver_deps", - package_json = "@npm_bazel_typescript//internal/devserver:package.json", - yarn_lock = "@npm_bazel_typescript//internal/devserver:yarn.lock", - ) - - yarn_install( - name = "build_bazel_rules_typescript_protobufs_compiletime_deps", - package_json = "@npm_bazel_typescript//internal/protobufjs:package.json", - yarn_lock = "@npm_bazel_typescript//internal/protobufjs:yarn.lock", - ) - # BEGIN-DEV-ONLY def ts_setup_dev_workspace(): """ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/yarn.lock index af6b06ff64..de1c0b0cec 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/yarn.lock @@ -36,13 +36,18 @@ balanced-match@^1.0.0: integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= brace-expansion@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" - integrity sha1-wHshHHyVLsH479Uad+8NHTmQopI= + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + bytebuffer@~5: version "5.0.1" resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" @@ -207,10 +212,11 @@ protobufjs@5.0.3: yargs "^3.10.0" source-map-support@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.3.tgz#2b3d5fff298cfa4d1afd7d4352d569e9a0158e76" - integrity sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w== + version "0.5.10" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c" + integrity sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ== dependencies: + buffer-from "^1.0.0" source-map "^0.6.0" source-map@^0.6.0: @@ -252,9 +258,9 @@ tsickle@0.28.0: source-map-support "^0.5.0" tslib@^1.8.1: - version "1.9.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" - integrity sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ== + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== tsutils@2.27.2: version "2.27.2" diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD index 4946205b50..2e59f91b71 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//third_party/bazel_rules/rules_typescript:defs.bzl", "ts_library") +load("//javascript/typescript:build_defs.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD index 2108c6bce9..47e09ec73b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//third_party/bazel_rules/rules_typescript:defs.bzl", "ts_library") +load("//javascript/typescript:build_defs.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD index 4a1c05d34b..c09ea5f881 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//third_party/bazel_rules/rules_typescript:defs.bzl", "ts_library") +load("//javascript/typescript:build_defs.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD index 6371d070ba..7dc59596fa 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//third_party/bazel_rules/rules_typescript:defs.bzl", "ts_library") +load("//javascript/typescript:build_defs.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD index 917c3ef931..bc8c34b314 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//third_party/bazel_rules/rules_typescript:defs.bzl", "ts_library") +load("//javascript/typescript:build_defs.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index e19ba502f3..ae42990d73 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -12,19 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Package file which defines npm_bazel_typescript dependencies +"""Package file which defines build dependencies """ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -def rules_typescript_dependencies(): - print("""DEPRECATION WARNING: - rules_typescript_dependencies is no longer needed, and will be removed in a future release. - We assume you will fetch rules_nodejs in your WORKSPACE file, and no other dependencies remain here. - Simply remove any calls to this function and the corresponding call to - load("@npm_bazel_typescript//:package.bzl", "rules_typescript_dependencies") - """) - def rules_typescript_dev_dependencies(): """ Fetch dependencies needed for local development. @@ -38,11 +30,11 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"], - sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b", + sha256 = "213dcf7e72f3acd4d1e369b7a356f3e5d9560f380bd655b13b7c0ea425d7c419", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.27.9/rules_nodejs-0.27.9.tar.gz"], ) - # For running skylint + # For protocol buffers _maybe( http_archive, name = "io_bazel", @@ -80,29 +72,6 @@ def rules_typescript_dev_dependencies(): sha256 = "9176a7df34dbed2cf5171eb56271868824560364e60644348219f852f593ae79", ) - # io_bazel_rules_webtesting depends on bazel_skylib. It is installed by - # web_test_repositories() but we depend on it here in case users don't call - # web_test_repositories(). This will get cleaned up by https://github.com/bazelbuild/rules_typescript/pull/374 - # which introduces npm_bazel_karma with its own defs.bzl file - # that will allow this dep to be removed from rules_typescript_dependencies() - _maybe( - http_archive, - name = "bazel_skylib", - url = "https://github.com/bazelbuild/bazel-skylib/archive/d7c5518fa061ae18a20d00b14082705d3d2d885d.zip", - strip_prefix = "bazel-skylib-d7c5518fa061ae18a20d00b14082705d3d2d885d", - ) - - ############################################# - # Dependencies for generating documentation # - ############################################# - - http_archive( - name = "io_bazel_rules_sass", - urls = ["https://github.com/bazelbuild/rules_sass/archive/8ccf4f1c351928b55d5dddf3672e3667f6978d60.zip"], # 2018-11-23 - strip_prefix = "rules_sass-8ccf4f1c351928b55d5dddf3672e3667f6978d60", - sha256 = "894d7928df8da85e263d743c8434d4c10ab0a3f0708fed0d53394e688e3faf70", - ) - def _maybe(repo_rule, name, **kwargs): if name not in native.existing_rules(): repo_rule(name = name, **kwargs) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index b0579be186..3d4a646d49 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -10,7 +10,7 @@ "@bazel/bazel": "~0.22.0", "@bazel/buildifier": "^0.20.0", "@bazel/ibazel": "^0.2.0", - "@bazel/typescript": "0.19.1", + "@bazel/typescript": "0.27.9", "@types/jasmine": "^2.8.2", "@types/long": "^4.0.0", "@types/node": "7.0.18", diff --git a/third_party/github.com/bazelbuild/rules_typescript/protractor.conf.js b/third_party/github.com/bazelbuild/rules_typescript/protractor.conf.js deleted file mode 100644 index ae5555b546..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/protractor.conf.js +++ /dev/null @@ -1,13 +0,0 @@ -exports.config = { - suites: { - app: 'bazel-bin/examples/app/*_e2e_test.js', - protocol_buffers: 'bazel-bin/examples/protocol_buffers/*_e2e_test.js', - }, - capabilities: { - browserName: 'chrome', - chromeOptions: {args: ['--no-sandbox']} - }, - directConnect: true, - baseUrl: 'http://localhost:8080/', - framework: 'jasmine', -}; diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/ts_auto_deps.js b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/ts_auto_deps.js deleted file mode 100644 index 68f4f7e875..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/ts_auto_deps.js +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env node - -// This file is a shim to execute the ts_auto_deps binary from the right platform-specific package. -const os = require('os'); -const fs = require('fs'); -const path = require('path'); -const spawnSync = require('child_process').spawnSync; - -/** - * @return '.exe' for Windows and '' for all other platforms - */ -function getNativeBinaryExt() { - return os.platform() === 'win32' ? '.exe' : ''; -} - -/** - * @return the native `ts_auto_deps` binary for the current platform - * @throws when the `ts_auto_deps` executable can not be found - */ -function getNativeBinary() { - try { - return require.resolve(`./ts_auto_deps-${os.platform()}_${os.arch()}${getNativeBinaryExt()}`); - } catch (e) { - const message = 'ts_auto_deps executable not found for your platform: ' + - `(${os.platform()}_${os.arch()})\n`; - throw new Error(message); - } -} - -/** Starts a new synchronous child process that runs with the specified arguments. */ -const spawnedProcess = spawnSync(getNativeBinary(), process.argv.slice(2), {stdio: 'inherit'}); - -// Ensure that this wrapper script exits with the same exit code as the child process. -process.exit(spawnedProcess.status); diff --git a/third_party/github.com/bazelbuild/rules_typescript/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/tsconfig.json new file mode 100644 index 0000000000..51648625d6 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "strict": true, + "lib": ["es2015.promise", "dom", "es5"], + // Explicitly set types settings so typescript doesn't auto-discover types. + // If all types are discovered then all types need to be included as deps + // or typescript may error out with TS2688: Cannot find type definition file for 'foo'. + "types": [] + } + } + + \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/version.bzl b/third_party/github.com/bazelbuild/rules_typescript/version.bzl deleted file mode 100644 index 35f5df8255..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/version.bzl +++ /dev/null @@ -1 +0,0 @@ -COMPAT_VERSION = "0.25.0" diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index eb756630ed..6d1c5390f8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -49,14 +49,14 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.2.0.tgz#c119aef4344a789cef5e792caaee52264123e71c" integrity sha1-wRmu9DRKeJzvXnksqu5SJkEj5xw= -"@bazel/typescript@0.19.1": - version "0.19.1" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.19.1.tgz#61dd57c0ab8a6c9930d2463d44e9522ec007fe3a" - integrity sha512-rNpNNRAQmtb+AdX5CvLzDGOADO2PRbZWoQfd7I2NXTuWk8BaJEb0D5W+WxQGcNim6qTUD1JLAknfOVYICf3OaQ== +"@bazel/typescript@0.27.9": + version "0.27.9" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.27.9.tgz#6cd6a7162167bec67cfae3a3b973a6bfe8c65f3e" + integrity sha512-o/MDGV2YNHMrsxJMpjWHQwezR7jlh7LJ+7FEmzG/LrepRtyYdaDev5bRhVn2XxnD7cPDx8zvyer35NJTnK0hnw== dependencies: - protobufjs "5.0.0" + protobufjs "5.0.3" + semver "5.6.0" source-map-support "0.5.9" - tsickle "0.28.0" tsutils "2.27.2" "@types/jasmine@^2.8.2": @@ -1179,17 +1179,6 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob@^5.0.10: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -1924,7 +1913,7 @@ mime@^2.3.1: resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== -"minimatch@2 || 3", minimatch@^3.0.2, 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" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -2271,16 +2260,6 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== -protobufjs@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.0.tgz#4223063233ea96ac063ca2b554035204db524fa1" - integrity sha1-QiMGMjPqlqwGPKK1VANSBNtST6E= - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^5.0.10" - yargs "^3.10.0" - protobufjs@5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" @@ -2762,14 +2741,6 @@ source-map-support@0.5.9: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.0: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" - integrity sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-support@~0.4.0: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" @@ -3003,16 +2974,6 @@ tree-kill@^1.1.0: resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" integrity sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg== -tsickle@0.28.0: - version "0.28.0" - resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.28.0.tgz#6cd6fa004766c6ad9261b599c83866ee97cc7875" - integrity sha512-cb/Z4NlKMPGiIIbgmklfBJIxDl4EQoYqC+0/BnPxZWzWcUvikeOHFkkkEmabJVqKh47jUqOwU/uMAu6UvhicZg== - dependencies: - minimist "^1.2.0" - mkdirp "^0.5.1" - source-map "^0.6.0" - source-map-support "^0.5.0" - tsickle@0.33.1: version "0.33.1" resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.33.1.tgz#eee4ebabeda3bcd8afc32cee34c822cbe3e839ec" From 8801fa1ae0d713f19122388e954363f06d05fc15 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Mon, 1 Apr 2019 17:16:52 -0700 Subject: [PATCH 0575/1134] Restore missing copybara transform. BuildKite didn't catch it because the build succeeds there even if some packages don't load. I emailed bazel-engprod to get to the bottom of it. PiperOrigin-RevId: 241432310 --- .../internal/tsetse/tests/ban_expect_truthy_promise/BUILD | 2 +- .../internal/tsetse/tests/ban_promise_as_condition/BUILD | 2 +- .../internal/tsetse/tests/check_return_value/BUILD | 2 +- .../rules_typescript/internal/tsetse/tests/equals_nan/BUILD | 2 +- .../internal/tsetse/tests/must_use_promises/BUILD | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD index 2e59f91b71..c8a7fa36ab 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//javascript/typescript:build_defs.bzl", "ts_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD index 47e09ec73b..0e7e07d584 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//javascript/typescript:build_defs.bzl", "ts_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD index c09ea5f881..c319f132ea 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//javascript/typescript:build_defs.bzl", "ts_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD index 7dc59596fa..7706253624 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//javascript/typescript:build_defs.bzl", "ts_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD index bc8c34b314..eb9dcde9b8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//javascript/typescript:build_defs.bzl", "ts_library") +load("@npm_bazel_typescript//:defs.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 From c13a270f33e8d4c4ca918cd62c18693677994814 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Wed, 3 Apr 2019 04:37:45 -0700 Subject: [PATCH 0576/1134] Add an optional Fix to the Failure type in Tsetse. Nothing consumes this for now. PiperOrigin-RevId: 241706383 --- .../internal/tsetse/failure.ts | 29 +++++++++++++++++-- .../tsetse/language_service_plugin.ts | 16 +++++----- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts index 2f055e371f..56355adcdb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts @@ -6,22 +6,45 @@ import * as ts from 'typescript'; * (1) The error code is defined by each individual Tsetse rule. * (2) The optional `source` property is set to `Tsetse` so the host (VS Code * for instance) would use that to indicate where the error comes from. + * (3) There's an optional suggestedFix field. */ export class Failure { constructor( - private sourceFile: ts.SourceFile, private start: number, - private end: number, private failureText: string, private code: number) {} + private readonly sourceFile: ts.SourceFile, + private readonly start: number, private readonly end: number, + private readonly failureText: string, private readonly code: number, + private readonly suggestedFix?: Fix) {} - toDiagnostic(): ts.Diagnostic { + /** + * This returns a structure compatible with ts.Diagnostic, but with added + * fields, for convenience and to support suggested fixes. + */ + toDiagnostic(): ts.Diagnostic&{end: number, fix?: Fix} { return { file: this.sourceFile, start: this.start, + end: this.end, // Not in ts.Diagnostic, but always useful for + // start-end-using systems. length: this.end - this.start, messageText: this.failureText, category: ts.DiagnosticCategory.Error, code: this.code, // source is the name of the plugin. source: 'Tsetse', + fix: this.suggestedFix }; } } + +/** + * A Fix is a potential repair to the associated Failure. + */ +export interface Fix { + /** + * The individual text replacements composing that fix. + */ + changes: IndividualChange[], +} +export interface IndividualChange { + sourceFile: ts.SourceFile, start: number, end: number, replacement: string +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/language_service_plugin.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/language_service_plugin.ts index d20343a1cb..4969f4dbc5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/language_service_plugin.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/language_service_plugin.ts @@ -1,7 +1,5 @@ import * as ts from 'typescript/lib/tsserverlibrary'; - import * as pluginApi from '../tsc_wrapped/plugin_api'; - import {Checker} from './checker'; import {registerRules} from './runner'; @@ -14,10 +12,12 @@ function init() { const oldService = info.languageService; const program = oldService.getProgram(); - // Signature of `getProgram` is `getProgram(): Program | undefined;` in ts 3.1 - // so we must check if the return value is valid to compile with ts 3.1. + // Signature of `getProgram` is `getProgram(): Program | undefined;` in + // ts 3.1 so we must check if the return value is valid to compile with + // ts 3.1. if (!program) { - throw new Error('Failed to initialize tsetse language_service_plugin: program is undefined'); + throw new Error( + 'Failed to initialize tsetse language_service_plugin: program is undefined'); } const checker = new Checker(program); @@ -31,9 +31,9 @@ function init() { const proxy = pluginApi.createProxy(oldService); proxy.getSemanticDiagnostics = (fileName: string) => { const result = [...oldService.getSemanticDiagnostics(fileName)]; - result.push( - ...checker.execute(program.getSourceFile(fileName)!) - .map(failure => failure.toDiagnostic())); + // Note that this ignores suggested fixes. + result.push(...checker.execute(program.getSourceFile(fileName)!) + .map(failure => failure.toDiagnostic())); return result; }; return proxy; From 9509503587be2e57e4bf6becd0b1c8107426cec0 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Wed, 3 Apr 2019 14:39:20 -0700 Subject: [PATCH 0577/1134] When choosing the canonical dep for an import, favor the dep that is already on the rule. PiperOrigin-RevId: 241808406 --- .../ts_auto_deps/analyze/analyze.go | 30 +++--- .../ts_auto_deps/analyze/analyze_test.go | 2 +- .../ts_auto_deps/analyze/loader.go | 94 +++++++++++++------ 3 files changed, 83 insertions(+), 43 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go index a80a55434b..b81c4b0107 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go @@ -82,7 +82,7 @@ type TargetLoader interface { // // Only returns rules visible to currentPkg. If currentPkg is an empty string // returns all targets regardless of visibility. - LoadImportPaths(ctx context.Context, currentPkg, root string, paths []string) (map[string]*appb.Rule, error) + LoadImportPaths(ctx context.Context, targetToAnalyze *appb.Rule, currentPkg, root string, paths []string) (map[string]*appb.Rule, error) } // Analyzer uses a BuildLoader to generate dependency reports. @@ -315,9 +315,9 @@ func (a *Analyzer) resolveImportsForTargets(ctx context.Context, currentPkg, roo // resolveImports finds targets which provide the imported file or library // for imports without known targets. func (a *Analyzer) resolveImports(ctx context.Context, currentPkg, root string, targets map[string]*resolvedTarget) error { - var paths []string - needingResolution := make(map[string][]*ts_auto_depsImport) for _, target := range targets { + var paths []string + needingResolution := make(map[string][]*ts_auto_depsImport) for _, imports := range target.imports { handlingImports: for _, imp := range imports { @@ -343,18 +343,18 @@ func (a *Analyzer) resolveImports(ctx context.Context, currentPkg, root string, imp.knownTarget = d } } - } - if len(needingResolution) == 0 { - return nil - } - res, err := a.loader.LoadImportPaths(ctx, currentPkg, root, paths) - if err != nil { - return err - } - for path, imports := range needingResolution { - if target, ok := res[path]; ok { - for _, imp := range imports { - imp.knownTarget = redirectedLabel(target) + if len(needingResolution) == 0 { + continue + } + res, err := a.loader.LoadImportPaths(ctx, target.rule, currentPkg, root, paths) + if err != nil { + return err + } + for path, imports := range needingResolution { + if target, ok := res[path]; ok { + for _, imp := range imports { + imp.knownTarget = redirectedLabel(target) + } } } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go index 9e97220a3d..140e02598c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go @@ -67,7 +67,7 @@ func (bl *fakeTargetLoader) byLabel(label, value string) { bl.targetsByLabels[label] = value } -func (bl *fakeTargetLoader) LoadImportPaths(_ context.Context, _, _ string, paths []string) (map[string]*appb.Rule, error) { +func (bl *fakeTargetLoader) LoadImportPaths(_ context.Context, _ *appb.Rule, _, _ string, paths []string) (map[string]*appb.Rule, error) { return bl.loadRules(bl.targetsByImportPaths, paths) } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go index c42ddb8a2d..90b61fa339 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go @@ -153,7 +153,7 @@ func possibleFilepaths(importPath string) []string { // LoadImportPaths uses Bazel Query to load targets associated with import // paths from BUILD files. -func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg, workspaceRoot string, paths []string) (map[string]*appb.Rule, error) { +func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, targetToAnalyze *appb.Rule, currentPkg, workspaceRoot string, paths []string) (map[string]*appb.Rule, error) { debugf("loading imports visible to %q relative to %q: %q", currentPkg, workspaceRoot, paths) results := make(map[string]*appb.Rule) @@ -270,7 +270,7 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg matchingDeps = append(matchingDeps, candidate) } if len(matchingDeps) > 0 { - canonicalRule, err := q.chooseCanonicalRule(currentPkg, matchingDeps) + canonicalRule, err := q.chooseCanonicalDep(currentPkg, targetToAnalyze, matchingDeps) if err != nil { return nil, err } @@ -282,11 +282,11 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg return results, nil } -// chooseCanonicalRule chooses between rules which include the imported file as +// chooseCanonicalDep chooses between rules which include the imported file as // a source (ie the rule that includes the file as a src, and any reexporting // libraries). // -// It filters the rules in a 2 stage process: +// It filters the rules in a 3 stage process: // // 1. If only one of the rules is visible, choose that one, since the rule // creator intended it to be imported. @@ -294,41 +294,81 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, currentPkg // 2. If all or none of the rules are visible, choose the rule that directly // includes the file as a src, since that reduces the chance of introducing // circular dependencies. -func (q *QueryBasedTargetLoader) chooseCanonicalRule(currentPkg string, rules []*appb.Rule) (*appb.Rule, error) { +// +// 3. Choose the rule that is already included as a dep. +func (q *QueryBasedTargetLoader) chooseCanonicalDep(currentPkg string, targetToAnalyze *appb.Rule, deps []*appb.Rule) (*appb.Rule, error) { // check for visibility - var labels []string - for _, r := range rules { - labels = append(labels, r.GetName()) - } - visibleRulesMap, err := q.LoadRules(currentPkg, labels) - if err != nil { - return nil, err - } + filterForVisibility := func(deps []*appb.Rule) ([]*appb.Rule, error) { + var labels []string + for _, d := range deps { + labels = append(labels, d.GetName()) + } + visibleDepsMap, err := q.LoadRules(currentPkg, labels) + if err != nil { + return nil, err + } - var visibleRules []*appb.Rule - for _, r := range visibleRulesMap { - if r != nil { - visibleRules = append(visibleRules, r) + var visibleDeps []*appb.Rule + for _, d := range visibleDepsMap { + if d != nil { + visibleDeps = append(visibleDeps, d) + } } - } - if len(visibleRules) == 1 { - return visibleRules[0], nil - } else if len(visibleRules) > 0 { - rules = visibleRules + return visibleDeps, nil } // if there's a visible reexporting lib and a visible lib with the src, favor // the lib with the src, to reduce the chance of introducing a circular // dependency - for _, r := range rules { - if !isReexportingLib(r) { - return r, nil + filterForBaseLibs := func(deps []*appb.Rule) ([]*appb.Rule, error) { + var baseDeps []*appb.Rule + for _, d := range deps { + if !isReexportingLib(d) { + baseDeps = append(baseDeps, d) + } + } + + return baseDeps, nil + } + + // favor the dep that's already on the rule + filterForExistingDeps := func(deps []*appb.Rule) ([]*appb.Rule, error) { + var existingDeps []*appb.Rule + for _, d := range deps { + for _, existing := range listAttribute(targetToAnalyze, "deps") { + if d.GetName() == existing { + existingDeps = append(existingDeps, d) + } + } + } + + return existingDeps, nil + } + + filters := []func(deps []*appb.Rule) ([]*appb.Rule, error){ + filterForVisibility, + filterForBaseLibs, + filterForExistingDeps, + } + + // for each filter, return if it returned a single rule, narrow the set of deps if + // it discarded some, but not all, and try the full set with the next filter if it + // discarded them all + for _, filter := range filters { + filteredDeps, err := filter(deps) + if err != nil { + return nil, err + } + if len(filteredDeps) == 1 { + return filteredDeps[0], nil + } else if len(filteredDeps) > 0 { + deps = filteredDeps } } - // if no rules matched the filter, just return the first rule - return rules[0], nil + // no filter got down to a single rule, just return the first + return deps[0], nil } // ruleLabel returns the label for a target which is a rule. Returns an error if From 317c364e12a4647cca3772fd5957da2d1e01a4cf Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Thu, 4 Apr 2019 07:26:47 -0700 Subject: [PATCH 0578/1134] Add a fix to the error reporting mechanism in Tsetse. I forgot that Rules don't generate their own Failures... Now there's a way to get a Fix in, though it's still not consumed. PiperOrigin-RevId: 241926568 --- .../rules_typescript/internal/tsetse/checker.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts index 72fdbaa4e2..9fba3b70b5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts @@ -5,8 +5,8 @@ import * as ts from 'typescript'; +import {Failure, Fix} from './failure'; -import {Failure} from './failure'; /** * A Handler contains a handler function and its corresponding error code so @@ -28,7 +28,7 @@ export class Checker { */ private nodeHandlersMap = new Map(); private failures: Failure[] = []; - private currentSourceFile: ts.SourceFile | undefined; + private currentSourceFile: ts.SourceFile|undefined; // currentCode will be set before invoking any handler functions so the value // initialized here is never used. private currentCode = 0; @@ -48,8 +48,8 @@ export class Checker { * handlers, the source file AST will be traversed. */ on( - nodeKind: T['kind'], - handlerFunction: (checker: Checker, node: T) => void, code: number) { + nodeKind: T['kind'], handlerFunction: (checker: Checker, node: T) => void, + code: number) { const newHandler: Handler = {handlerFunction, code}; const registeredHandlers: Handler[]|undefined = this.nodeHandlersMap.get(nodeKind); @@ -64,7 +64,8 @@ export class Checker { * Add a failure with a span. addFailure() is currently private because * `addFailureAtNode` is preferred. */ - private addFailure(start: number, end: number, failureText: string) { + private addFailure( + start: number, end: number, failureText: string, fix?: Fix) { if (!this.currentSourceFile) { throw new Error('Source file not defined'); } @@ -76,15 +77,15 @@ export class Checker { } const failure = new Failure( - this.currentSourceFile, start, end, failureText, this.currentCode); + this.currentSourceFile, start, end, failureText, this.currentCode, fix); this.failures.push(failure); } - addFailureAtNode(node: ts.Node, failureText: string) { + addFailureAtNode(node: ts.Node, failureText: string, fix?: Fix) { // node.getStart() takes a sourceFile as argument whereas node.getEnd() // doesn't need it. this.addFailure( - node.getStart(this.currentSourceFile), node.getEnd(), failureText); + node.getStart(this.currentSourceFile), node.getEnd(), failureText, fix); } /** From 711df06d1b82e7823a6d7bfb4516f9e11dfb5c9d Mon Sep 17 00:00:00 2001 From: lucassloan Date: Thu, 4 Apr 2019 10:18:59 -0700 Subject: [PATCH 0579/1134] Register all ts_libraries with ts_development_sources/ts_config, not just the last one in a file. PiperOrigin-RevId: 241953581 --- .../ts_auto_deps/updater/test_register.go | 2 +- .../ts_auto_deps/updater/updater.go | 30 +++++++++++++------ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go index b5f9e67b7c..130e3d1a5e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go @@ -56,7 +56,7 @@ func (upd *Updater) RegisterTestRules(ctx context.Context, paths ...string) (boo if err != nil { return false, err } - if tr := getRule(bld, "ts_library", ruleTypeTest); tr != nil { + for _, tr := range getRules(bld, "ts_library", ruleTypeTest) { // don't register all_test libraries themselves if isAllTestLibrary(bld, tr) { continue diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index 8c156eda11..828d46f197 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -995,10 +995,10 @@ func updateWebAssets(ctx context.Context, buildFilePath string, bld *build.File) } // Add to the last rule, to match behaviour with *.ts sources. - lastModule := getRule(bld, "ng_module", ruleTypeRegular) + lastModule := getLastRule(bld, "ng_module", ruleTypeRegular) if lastModule == nil { // Fall back to using any ng_module - lastModule = getRule(bld, "ng_module", ruleTypeAny) + lastModule = getLastRule(bld, "ng_module", ruleTypeAny) } if lastModule == nil { // Should not happen by preconditions of this function. @@ -1016,7 +1016,7 @@ func updateWebAssets(ctx context.Context, buildFilePath string, bld *build.File) // rt. If there's no such rule, it creates a new rule with the given ruleName. // If there is more than one rule matching, it returns the *last* rule. func getOrCreateRule(bld *build.File, ruleName, ruleKind string, rt ruleType) *build.Rule { - if r := getRule(bld, ruleKind, rt); r != nil { + if r := getLastRule(bld, ruleKind, rt); r != nil { return r } @@ -1086,15 +1086,27 @@ func targetRegisteredInRule(bld *build.File, ruleKind string, rt ruleType, targe // getRule returns the last rule in bld that has the given ruleKind and matches // the specified rt value. -func getRule(bld *build.File, ruleKind string, rt ruleType) *build.Rule { - rs := bld.Rules("") - for i := len(rs) - 1; i >= 0; i-- { - r := rs[i] +func getLastRule(bld *build.File, ruleKind string, rt ruleType) *build.Rule { + rules := getRules(bld, ruleKind, rt) + + if len(rules) == 0 { + return nil + } + + return rules[len(rules)-1] +} + +// getRules returns all the rules in bld that have the given ruleKind and +// matches the specified rt value. +func getRules(bld *build.File, ruleKind string, rt ruleType) []*build.Rule { + var rules []*build.Rule + for _, r := range bld.Rules("") { if ruleMatches(bld, r, ruleKind, rt) { - return r + rules = append(rules, r) } } - return nil + + return rules } // FilterPaths filters the given paths, returning the deduplicated set of From 6864f811074f2a47da57e5bf4d275025dfeffdb4 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Thu, 4 Apr 2019 10:25:00 -0700 Subject: [PATCH 0580/1134] internal change PiperOrigin-RevId: 241954724 --- third_party/github.com/bazelbuild/rules_typescript/package.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index ae42990d73..6ec6afe2eb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -73,5 +73,5 @@ def rules_typescript_dev_dependencies(): ) def _maybe(repo_rule, name, **kwargs): - if name not in native.existing_rules(): + if not native.existing_rule(name): repo_rule(name = name, **kwargs) From dac637f94b1f1bb82f897fa1fd0a562ec7185318 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Fri, 5 Apr 2019 14:55:20 -0700 Subject: [PATCH 0581/1134] Use chooseCanonicalDep to choose the dep when finding a module by name, instead of randomly selecting the first matching dep. PiperOrigin-RevId: 242199615 --- .../bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go index 90b61fa339..4a98600fe9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go @@ -246,9 +246,9 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, targetToAn // get the file path that corresponds to the normalized typescript import // path filePath := labelToPath(label) - var matchingDeps []*appb.Rule allRules := pkgToAllRules[pkg] actualToAlias := pkgToActualToAlias[pkg] + var matchingDeps []*appb.Rule for _, candidate := range typeScriptRules(allRules) { // check if the rule has the file or the generator of the file in its // srcs From 96f2c41de8e6a4140a32422f47d6996e29e63f66 Mon Sep 17 00:00:00 2001 From: martinprobst Date: Fri, 5 Apr 2019 15:46:48 -0700 Subject: [PATCH 0582/1134] Internal change. PiperOrigin-RevId: 242208600 --- .../internal/tsc_wrapped/compiler_host.ts | 32 ++++++++++++--- .../internal/tsc_wrapped/tsc_wrapped.ts | 36 +++++++++++++++-- .../internal/tsc_wrapped/tsc_wrapped_test.ts | 40 ++++++++++++++----- .../internal/tsc_wrapped/tsconfig.ts | 24 +++++++++-- .../internal/tsc_wrapped/worker.ts | 2 +- 5 files changed, 110 insertions(+), 24 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index e0b2d0318a..9008a087e8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -42,13 +42,23 @@ function validateBazelOptions(bazelOpts: BazelOptions) { if (bazelOpts.compilationTargetSrc && bazelOpts.compilationTargetSrc.length > 1) { - throw new Error("In JS transpilation mode, only one file can appear in " + - "bazelOptions.compilationTargetSrc."); + throw new Error( + 'In JS transpilation mode, only one file can appear in ' + + 'bazelOptions.compilationTargetSrc.'); } - if (!bazelOpts.transpiledJsOutputFileName) { - throw new Error("In JS transpilation mode, transpiledJsOutputFileName " + - "must be specified in tsconfig."); + if (!bazelOpts.transpiledJsOutputFileName && + !bazelOpts.transpiledJsOutputDirectory) { + throw new Error( + 'In JS transpilation mode, either transpiledJsOutputFileName or ' + + 'transpiledJsOutputDirectory must be specified in tsconfig.'); + } + + if (bazelOpts.transpiledJsOutputFileName && + bazelOpts.transpiledJsOutputDirectory) { + throw new Error( + 'In JS transpilation mode, cannot set both ' + + 'transpiledJsOutputFileName and transpiledJsOutputDirectory.'); } } @@ -483,7 +493,17 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { fileName = this.flattenOutDir(fileName); if (this.bazelOpts.isJsTranspilation) { - fileName = this.bazelOpts.transpiledJsOutputFileName!; + if (this.bazelOpts.transpiledJsOutputFileName) { + fileName = this.bazelOpts.transpiledJsOutputFileName!; + } else { + // Strip the input directory path off of fileName to get the logical + // path within the input directory. + fileName = + path.relative(this.bazelOpts.transpiledJsInputDirectory!, fileName); + // Then prepend the output directory name. + fileName = + path.join(this.bazelOpts.transpiledJsOutputDirectory!, fileName); + } } else if (!this.bazelOpts.es5Mode) { // Write ES6 transpiled files to *.closure.js. if (this.bazelOpts.locale) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 2062b73575..9113ede7b8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -47,6 +47,12 @@ const cache = new ProgramAndFileCache(debug); function isCompilationTarget( bazelOpts: BazelOptions, sf: ts.SourceFile): boolean { + if (bazelOpts.isJsTranspilation && bazelOpts.transpiledJsInputDirectory) { + // transpiledJsInputDirectory is a relative logical path, so we cannot + // compare it to the resolved, absolute path of sf here. + // compilationTargetSrc is resolved, so use that for the comparison. + return sf.fileName.startsWith(bazelOpts.compilationTargetSrc[0]); + } return (bazelOpts.compilationTargetSrc.indexOf(sf.fileName) !== -1); } @@ -114,6 +120,24 @@ export function gatherDiagnostics( return diagnostics; } +/** + * expandSourcesFromDirectories finds any directories under filePath and expands + * them to their .js or .ts contents. + */ +function expandSourcesFromDirectories(fileList: string[], filePath: string) { + if (!fs.statSync(filePath).isDirectory()) { + if (filePath.endsWith('.ts') || filePath.endsWith('.tsx') || + filePath.endsWith('.js')) { + fileList.push(filePath); + } + return; + } + const entries = fs.readdirSync(filePath); + for (const entry of entries) { + expandSourcesFromDirectories(fileList, path.join(filePath, entry)); + } +} + /** * Runs a single build, returning false on failure. This is potentially called * multiple times (once per bazel request) when running as a bazel worker. @@ -147,6 +171,12 @@ function runOneBuild( angularCompilerOptions } = parsed; + const sourceFiles: string[] = []; + for (let i = 0; i < files.length; i++) { + const filePath = files[i]; + expandSourcesFromDirectories(sourceFiles, filePath); + } + if (bazelOpts.maxCacheSizeMb !== undefined) { const maxCacheSizeBytes = bazelOpts.maxCacheSizeMb * (1 << 20); cache.setMaxCacheSize(maxCacheSizeBytes); @@ -170,7 +200,7 @@ function runOneBuild( const perfTracePath = bazelOpts.perfTracePath; if (!perfTracePath) { return runFromOptions( - fileLoader, options, bazelOpts, files, disabledTsetseRules, + fileLoader, options, bazelOpts, sourceFiles, disabledTsetseRules, angularCompilerOptions); } @@ -178,7 +208,7 @@ function runOneBuild( const success = perfTrace.wrap( 'runOneBuild', () => runFromOptions( - fileLoader, options, bazelOpts, files, disabledTsetseRules, + fileLoader, options, bazelOpts, sourceFiles, disabledTsetseRules, angularCompilerOptions)); if (!success) return false; // Force a garbage collection pass. This keeps our memory usage @@ -212,7 +242,7 @@ function runFromOptions( const moduleResolver = bazelOpts.isJsTranspilation ? makeJsModuleResolver(bazelOpts.workspaceName) : ts.resolveModuleName; - const tsickleCompilerHost: CompilerHost = new CompilerHost( + const tsickleCompilerHost = new CompilerHost( files, options, bazelOpts, compilerHostDelegate, fileLoader, moduleResolver); let compilerHost: PluginCompilerHost = tsickleCompilerHost; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts index cc5af0af3b..3f77c07f64 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts @@ -149,12 +149,16 @@ describe('compiler host', () => { moduleRoots = {} as {[moduleName: string]: string}, isJsTranspilation = false, transpiledJsOutputFileName = undefined as string | undefined, + transpiledJsInputDirectory = undefined as string | undefined, + transpiledJsOutputDirectory = undefined as string | undefined, } = {}) { const bazelOpts = { ...defaultBazelOpts, es5Mode: es5, isJsTranspilation, transpiledJsOutputFileName, + transpiledJsInputDirectory, + transpiledJsOutputDirectory, } as BazelOptions; return new CompilerHost( [], COMPILER_OPTIONS, bazelOpts, delegateHost, testFileLoader, @@ -272,16 +276,32 @@ describe('compiler host', () => { ]); }); - it('writes to closureOptions.transpiledJsOutputFileName in JS transpilation mode', - () => { - createFakeGoogle3Host({ - isJsTranspilation: true, - transpiledJsOutputFileName: 'foo/bar/a/b.dev_es5.js', - }).writeFile('a/b.js', 'some.code();', false, undefined, []); - expect(Object.keys(writtenFiles)).toEqual([ - '/root/google3/blaze-out/k8-fastbuild/bin/foo/bar/a/b.dev_es5.js' - ]); - }); + describe('transpiled JS', () => { + it('writes to transpiledJsOutputFileName', () => { + const host = createFakeGoogle3Host({ + isJsTranspilation: true, + transpiledJsOutputFileName: 'foo/bar/a/b.dev_es5.js', + }); + host.writeFile('a/b.js', 'some.code();', false, undefined, []); + expect(Object.keys(writtenFiles)).toEqual([ + '/root/google3/blaze-out/k8-fastbuild/bin/foo/bar/a/b.dev_es5.js' + ]); + }); + + it('writes to transpiledJsOutputDirectory', () => { + const host = createFakeGoogle3Host({ + isJsTranspilation: true, + transpiledJsInputDirectory: 'foo/bar/jsinputdir', + transpiledJsOutputDirectory: 'foo/bar/jsoutputdir', + }); + host.writeFile( + 'foo/bar/jsinputdir/a/b.js', 'some.code();', false, undefined, + []); + expect(Object.keys(writtenFiles)).toEqual([ + '/root/google3/blaze-out/k8-fastbuild/bin/foo/bar/jsoutputdir/a/b.js' + ]); + }); + }); }); }); }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index f8460c34f3..c147d3b0f0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -143,17 +143,33 @@ export interface BazelOptions { /** * If true, indicates that this job is transpiling JS sources. If true, only - * one file can appear in compilationTargetSrc, and transpiledJsOutputFileName - * must be set. + * one file can appear in compilationTargetSrc, and either + * transpiledJsOutputFileName or the transpiledJs*Directory options must be + * set. */ isJsTranspilation?: boolean; /** - * The path where the file containing the JS transpiled output should - * be written. Ignored if isJsTranspilation is false. + * The path where the file containing the JS transpiled output should be + * written. Ignored if isJsTranspilation is false. transpiledJsOutputFileName + * */ transpiledJsOutputFileName?: string; + /** + * The path where transpiled JS output should be written. Ignored if + * isJsTranspilation is false. Must not be set together with + * transpiledJsOutputFileName. + */ + transpiledJsInputDirectory?: string; + + /** + * The path where transpiled JS output should be written. Ignored if + * isJsTranspilation is false. Must not be set together with + * transpiledJsOutputFileName. + */ + transpiledJsOutputDirectory?: string; + /** * Whether the user provided an implementation shim for .d.ts files in the * compilation unit. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts index 29983182b2..2f9828e7db 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts @@ -26,7 +26,7 @@ export function debug(...args: Array) { * Write a message to stderr, which appears in the bazel log and is visible to * the end user. */ -export function log(...args: Array<{}>) { +export function log(...args: Array) { console.error.apply(console, args); } From ceb29d9a3a2dd07ce980920f65f49505020e2572 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Mon, 8 Apr 2019 14:16:47 -0700 Subject: [PATCH 0583/1134] Replicate blaze analyze's behavior with generated files. 1. If a library has all generated files, error. 2. If a library has a mix of literal and generated files, retain any unused deps, since they might have been manually added for the generated file. There were also some major changes to the tests, since work that was previously done in a separate method was moved into setSources(). PiperOrigin-RevId: 242537197 --- .../ts_auto_deps/analyze/analyze.go | 56 +++--- .../ts_auto_deps/analyze/analyze_test.go | 187 ++++++------------ 2 files changed, 79 insertions(+), 164 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go index b81c4b0107..9e005cce5a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go @@ -139,11 +139,16 @@ type resolvedTarget struct { missingSources []string // A map from the labels in the target's srcs to the Targets those // labels refer. - sources map[string]*appb.Target + sources map[string]*appb.Target + literalSourcePaths []string + generatedSourcePaths []string } // setSources sets the sources on t. It returns an error if one of the srcs of -// t's rule isn't in loadedSrcs. +// t's rule isn't in loadedSrcs. It also sorts the sources into literal and +// generated sources, setting literalSourcePaths and generatedSourcePaths. +// Returns an error if all the sources are generated - ts_auto_deps can't read the +// import statements to determine deps. func (t *resolvedTarget) setSources(loadedSrcs map[string]*appb.Target) error { for _, label := range listAttribute(t.rule, "srcs") { src := loadedSrcs[label] @@ -151,6 +156,14 @@ func (t *resolvedTarget) setSources(loadedSrcs map[string]*appb.Target) error { return fmt.Errorf("no source found for label %s", label) } t.sources[label] = src + if src.GetType() == appb.Target_SOURCE_FILE { + t.literalSourcePaths = append(t.literalSourcePaths, labelToPath(label)) + } else { + t.generatedSourcePaths = append(t.generatedSourcePaths, labelToPath(label)) + } + } + if len(t.literalSourcePaths) == 0 && len(t.generatedSourcePaths) > 0 { + return fmt.Errorf("rule has generated sources - cannot determine dependencies") } return nil } @@ -165,37 +178,12 @@ func (t *resolvedTarget) srcs() ([]string, error) { return srcs, nil } -// literalSrcPaths returns the file paths of the non-generated sources of t. -func (t *resolvedTarget) literalSrcPaths() ([]string, error) { - srcs := listAttribute(t.rule, "srcs") - if srcs == nil { - return nil, fmt.Errorf("target %q missing \"srcs\" attribute", t.label) - } - var literalFilePaths []string - for _, label := range listAttribute(t.rule, "srcs") { - src := t.sources[label] - if src == nil { - return nil, fmt.Errorf("src %q has no associated target", label) - } - // There's no syntactic way to determine if a label is a source file - // so check against the type of the relevant target - if src.GetType() == appb.Target_SOURCE_FILE { - literalFilePaths = append(literalFilePaths, labelToPath(label)) - } - } - return literalFilePaths, nil -} - // getAllLiteralSrcPaths returns the file paths of all the non-generated sources // of the targets. func getAllLiteralSrcPaths(targets map[string]*resolvedTarget) ([]string, error) { var allLiteralSrcPaths []string for _, t := range targets { - literalSrcPaths, err := t.literalSrcPaths() - if err != nil { - return nil, err - } - allLiteralSrcPaths = append(allLiteralSrcPaths, literalSrcPaths...) + allLiteralSrcPaths = append(allLiteralSrcPaths, t.literalSourcePaths...) } return allLiteralSrcPaths, nil @@ -292,10 +280,7 @@ func (a *Analyzer) resolveImportsForTargets(ctx context.Context, currentPkg, roo } } for _, t := range targets { - srcs, err := t.literalSrcPaths() - if err != nil { - return nil, err - } + srcs := t.literalSourcePaths for _, src := range srcs { v, ok := imports[src] if ok { @@ -570,7 +555,12 @@ func (a *Analyzer) generateReport(target *resolvedTarget) (*arpb.DependencyRepor // annotations. Unlike ts_declaration, there's no flag to remove them, so // there's no need to report a warning. default: - report.UnnecessaryDependency = append(report.UnnecessaryDependency, label) + // The contents of generated files aren't visible, so ts_auto_deps can't discover + // the import statements/deps that they contain. To be safe, don't remove + // any unused deps, since they might be used by the generated file(s). + if len(target.generatedSourcePaths) == 0 { + report.UnnecessaryDependency = append(report.UnnecessaryDependency, label) + } } } return report, nil diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go index 140e02598c..ff529b8d79 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go @@ -7,8 +7,6 @@ import ( "os" "path/filepath" "reflect" - "sort" - "strconv" "strings" "testing" @@ -493,164 +491,84 @@ func TestStringAttribute(t *testing.T) { } } -func createResolvedTarget(srcs []string) *resolvedTarget { - return &resolvedTarget{ - rule: &appb.Rule{ - Attribute: []*appb.Attribute{ - &appb.Attribute{ - Name: proto.String("srcs"), - Type: appb.Attribute_STRING_LIST.Enum(), - StringListValue: srcs, - }, - }, - }, - sources: map[string]*appb.Target{ - "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, - "//b:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, - "//b:generator": &appb.Target{Type: appb.Target_RULE.Enum()}, - "//b:wiz": &appb.Target{Type: appb.Target_RULE.Enum()}, - }, - } -} - -func TestLiteralSrcPaths(t *testing.T) { +func TestSetSources(t *testing.T) { tests := []struct { - name string - srcs []string - err error - expected []string + name string + srcs []string + loadedSrcs map[string]*appb.Target + err error + expected map[string]*appb.Target + expectedLiteralPaths []string + expectedGeneratedPaths []string }{ { - "OneLiteralSource", - []string{"//a:file.ts"}, + "NoSources", nil, - []string{"a/file.ts"}, - }, - { - "MultipleLiteralSources", - []string{"//a:file.ts", "//b:file.ts"}, nil, - []string{"a/file.ts", "b/file.ts"}, - }, - { - "MultipleGeneratedSources", - []string{"//b:generator", "//b:wiz"}, nil, nil, - }, - { - "MixedSources", - []string{"//a:file.ts", "//b:file.ts", "//b:generator", "//b:wiz"}, nil, - []string{"a/file.ts", "b/file.ts"}, - }, - { - "MissingSource", - []string{"//not/in/the/set/of/resolved:sources"}, - fmt.Errorf("src %q has no associated target", "//not/in/the/set/of/resolved:sources"), nil, }, - } - - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - rt := createResolvedTarget(test.srcs) - literalSrcPaths, err := rt.literalSrcPaths() - if !reflect.DeepEqual(err, test.err) { - t.Errorf("got err %q, expected %q", err, test.err) - } - - if diff := pretty.Compare(literalSrcPaths, test.expected); diff != "" { - t.Errorf("failed to get correct literal source paths: (-got, +want)\n%s", diff) - } - }) - } -} - -func TestGetAllLiteralSrcPaths(t *testing.T) { - tests := []struct { - name string - srcsLists [][]string - err error - expected []string - }{ { - "OneTarget", - [][]string{ - []string{"//a:file.ts", "//b:file.ts"}, + "OneSource", + []string{"//a:file.ts"}, + map[string]*appb.Target{ + "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, }, nil, - []string{"a/file.ts", "b/file.ts"}, - }, - { - "MultipleTargets", - [][]string{ - []string{"//a:file.ts"}, - []string{"//b:file.ts"}, + map[string]*appb.Target{ + "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, }, + []string{"a/file.ts"}, nil, - []string{"a/file.ts", "b/file.ts"}, }, { - "MissingSource", - [][]string{ - []string{"//not/in/the/set/of/resolved:sources"}, + "ExtraSources", + []string{"//a:file.ts"}, + map[string]*appb.Target{ + "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, + "//b:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, + "//b:generator": &appb.Target{Type: appb.Target_RULE.Enum()}, + "//b:wiz": &appb.Target{Type: appb.Target_RULE.Enum()}, }, - fmt.Errorf("src %q has no associated target", "//not/in/the/set/of/resolved:sources"), - nil, - }, - } - - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - rts := make(map[string]*resolvedTarget) - for i, srcs := range test.srcsLists { - rts[strconv.Itoa(i)] = createResolvedTarget(srcs) - } - literalSrcPaths, err := getAllLiteralSrcPaths(rts) - if !reflect.DeepEqual(err, test.err) { - t.Errorf("got err %q, expected %q", err, test.err) - } - - // getAllLiteralSrcPaths takes a map, so its output ordering isn't - // deterministic - sort.Strings(literalSrcPaths) - if diff := pretty.Compare(literalSrcPaths, test.expected); diff != "" { - t.Errorf("failed to get correct literal source paths: (-got, +want)\n%s", diff) - } - }) - } -} - -func TestSetSources(t *testing.T) { - tests := []struct { - name string - srcs []string - loadedSrcs map[string]*appb.Target - err error - expected map[string]*appb.Target - }{ - { - "NoSources", - nil, - nil, nil, + map[string]*appb.Target{ + "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, + }, + []string{"a/file.ts"}, nil, }, { - "OneSource", - []string{"//a:file.ts"}, + "MultipleLiteralSources", + []string{"//a:file.ts", "//b:file.ts"}, map[string]*appb.Target{ "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, + "//b:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, }, nil, map[string]*appb.Target{ "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, + "//b:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, }, + []string{"a/file.ts", "b/file.ts"}, + nil, }, { - "ExtraSources", - []string{"//a:file.ts"}, + "MultipleGeneratedSources", + []string{"//b:generator", "//b:wiz"}, + map[string]*appb.Target{ + "//b:generator": &appb.Target{Type: appb.Target_RULE.Enum()}, + "//b:wiz": &appb.Target{Type: appb.Target_RULE.Enum()}, + }, + fmt.Errorf("rule has generated sources - cannot determine dependencies"), + nil, + nil, + nil, + }, + { + "MixedSources", + []string{"//a:file.ts", "//b:file.ts", "//b:generator", "//b:wiz"}, map[string]*appb.Target{ "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, "//b:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, @@ -659,8 +577,13 @@ func TestSetSources(t *testing.T) { }, nil, map[string]*appb.Target{ - "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, + "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, + "//b:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, + "//b:generator": &appb.Target{Type: appb.Target_RULE.Enum()}, + "//b:wiz": &appb.Target{Type: appb.Target_RULE.Enum()}, }, + []string{"a/file.ts", "b/file.ts"}, + []string{"//b:generator", "//b:wiz"}, }, { "MissingSources", @@ -668,6 +591,8 @@ func TestSetSources(t *testing.T) { nil, fmt.Errorf("no source found for label %s", "//a:file.ts"), nil, + nil, + nil, }, } @@ -691,7 +616,7 @@ func TestSetSources(t *testing.T) { t.Errorf("got err %q, expected %q", err, test.err) } - if diff := pretty.Compare(rt.sources, test.expected); diff != "" { + if diff := pretty.Compare(rt.sources, test.expected); err == nil && diff != "" { t.Errorf("failed to set correct sources: (-got, +want)\n%s", diff) } }) From 0bbd6b491cd2c4582ade0bfe6b37a2e280c71e35 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 8 Apr 2019 15:48:50 -0700 Subject: [PATCH 0584/1134] script names are prepended to scripts that are eval'ed but the names are missing for prescripts. PiperOrigin-RevId: 242554372 --- .../github.com/bazelbuild/rules_typescript/devserver/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/main.go b/third_party/github.com/bazelbuild/rules_typescript/devserver/main.go index a41b89914f..466a63de6c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/main.go +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/main.go @@ -130,7 +130,7 @@ func loadScript(path string) (string, error) { if err != nil { return "", err } - return string(buf), nil + return fmt.Sprintf("// %s\n%s", path, buf), nil } // manifestFiles parses a manifest, returning a list of the files in the manifest. From d606c9226a337ed8261a4bf419457a2ba3bf9c1b Mon Sep 17 00:00:00 2001 From: Laszlo Csomor Date: Tue, 30 Apr 2019 14:43:44 +0200 Subject: [PATCH 0585/1134] Update rules_nodejs to 0.28.0 This allows testing //internal:tests on Windows with Bazel 0.25.0 rc8 and --incompatible_windows_native_test_wrapper (see https://github.com/bazelbuild/bazel/issues/6622). --- .../github.com/bazelbuild/rules_typescript/package.bzl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index 6ec6afe2eb..bf14bed12c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -30,8 +30,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - sha256 = "213dcf7e72f3acd4d1e369b7a356f3e5d9560f380bd655b13b7c0ea425d7c419", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.27.9/rules_nodejs-0.27.9.tar.gz"], + sha256 = "4c702ffeeab2d24dd4101601b6d27cf582d2e0d4cdc3abefddd4834664669b6b", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.28.0/rules_nodejs-0.28.0.tar.gz"], ) # For protocol buffers From 382c1439242ecbbaa5914733a9ed6e19e32f0304 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Fri, 3 May 2019 14:06:55 -0700 Subject: [PATCH 0586/1134] Test and make use of the new blaze analyze flag which allows it to handle module name imports of .ngsummary files. PiperOrigin-RevId: 246569952 --- .../github.com/bazelbuild/rules_typescript/package.bzl | 4 ++-- .../rules_typescript/ts_auto_deps/updater/updater.go | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index bf14bed12c..6ec6afe2eb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -30,8 +30,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - sha256 = "4c702ffeeab2d24dd4101601b6d27cf582d2e0d4cdc3abefddd4834664669b6b", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.28.0/rules_nodejs-0.28.0.tar.gz"], + sha256 = "213dcf7e72f3acd4d1e369b7a356f3e5d9560f380bd655b13b7c0ea425d7c419", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.27.9/rules_nodejs-0.27.9.tar.gz"], ) # For protocol buffers diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index 828d46f197..b5b7720c47 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -99,7 +99,7 @@ func (g *GarbledBazelResponseError) Error() string { // exchanging it for a different implementation in the ts_auto_deps presubmit service. func (upd *Updater) runBazelAnalyze(buildFilePath string, bld *build.File, rules []*build.Rule) ([]*arpb.DependencyReport, error) { args := []string{} - args = append(args, "--analysis_output=PROTO") + args = append(args, "--analysis_output=PROTO", "--static_analysis_option=checkdeps=--ng_summary") var targets []string for _, r := range rules { fullTarget := AbsoluteBazelTarget(bld, r.Name()) @@ -754,9 +754,10 @@ func buildHasDisableTaze(bld *build.File) bool { // QueryBasedBazelAnalyze uses bazel query to analyze targets. It is available under a flag or // an environment variable on engineer's workstations. func QueryBasedBazelAnalyze(buildFilePath string, args []string) ([]byte, []byte, error) { - // The first member of args is the '--analysis_output=PROTO' flag. Remove - // this flag to get only the targets. - targets := args[1:] + // The first 2 args are '--analysis_output=PROTO' and + // '--static_analysis_option=checkdeps=--ng_summary', which are needed for + // bazel. Remove them to get only the targets. + targets := args[2:] root, err := workspace.Root(buildFilePath) if err != nil { return nil, nil, err From d7641b06ecfc63a3803e994be65712ec7c76581e Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Thu, 9 May 2019 10:37:48 -0700 Subject: [PATCH 0587/1134] Enable strict deps for npm dependencies under Bazel now that npm deps provide a typescript provider with their declaration files The change in rules_nodejs that supplies the provider was here https://github.com/bazelbuild/rules_nodejs/pull/726 Update to latest @bazel/typescript 0.28.0 and add temporary post-install patch to allow from strict deps in ts_library from published @bazel/typescript package Closes #445 PiperOrigin-RevId: 247453547 --- .../bazelbuild/rules_typescript/WORKSPACE | 1 + .../rules_typescript/internal/BUILD.bazel | 1 - .../internal/tsc_wrapped/strict_deps.ts | 10 +- .../internal/tsc_wrapped/strict_deps_test.ts | 11 - .../internal/tsc_wrapped/tsc_wrapped.ts | 14 -- .../bazelbuild/rules_typescript/package.bzl | 5 +- .../bazelbuild/rules_typescript/package.json | 3 +- .../rules_typescript/postinstall-patches.js | 45 ++++ .../bazelbuild/rules_typescript/yarn.lock | 197 ++++++++---------- 9 files changed, 138 insertions(+), 149 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/postinstall-patches.js diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 7bb6346658..d83690a763 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -34,6 +34,7 @@ yarn_install( name = "npm", package_json = "//:package.json", yarn_lock = "//:yarn.lock", + data = ["//:postinstall-patches.js"], ) load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index d953a0105a..9cb5167ea7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -110,7 +110,6 @@ jasmine_node_test( srcs = [], deps = [ ":test_lib", - "@npm//bytebuffer", "@npm//jasmine", "@npm//protobufjs", "@npm//source-map", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts index 3c3dc1e8d4..7afa4d99dc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts @@ -25,11 +25,6 @@ export interface StrictDepsPluginConfig { compilationTargetSrc: string[]; allowedStrictDeps: string[]; rootDir: string; - /** - * Paths where users may freely import without declared dependencies. - * This is used in Bazel where dependencies on node_modules may be undeclared. - */ - ignoredFilesPrefixes?: string[]; } /** The TypeScript diagnostic code for "Cannot find module ...". */ @@ -60,7 +55,7 @@ export const PLUGIN: pluginApi.Plugin = { perfTrace.wrap('checkModuleDeps', () => { result.push(...checkModuleDeps( sourceFile, program.getTypeChecker(), config.allowedStrictDeps, - config.rootDir, config.ignoredFilesPrefixes)); + config.rootDir)); }); return result; }; @@ -71,7 +66,7 @@ export const PLUGIN: pluginApi.Plugin = { // Exported for testing export function checkModuleDeps( sf: ts.SourceFile, tc: ts.TypeChecker, allowedDeps: string[], - rootDir: string, ignoredFilesPrefixes: string[] = []): ts.Diagnostic[] { + rootDir: string): ts.Diagnostic[] { function stripExt(fn: string) { return fn.replace(/(\.d)?\.tsx?$/, ''); } @@ -95,7 +90,6 @@ export function checkModuleDeps( // Module imports can only have one declaration location. const declFileName = sym.declarations[0].getSourceFile().fileName; if (allowedMap[stripExt(declFileName)]) continue; - if (ignoredFilesPrefixes.some(p => declFileName.startsWith(p))) continue; const importName = path.posix.relative(rootDir, declFileName); result.push({ file: sf, diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts index 891dbf8a5c..2b555172b7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts @@ -67,17 +67,6 @@ describe('strict deps', () => { return p; } - it('permits dependencies on ignored files', () => { - const p = createProgram({ - '/src/node_modules/somepkg/index.d.ts': 'export const a = 1;', - '/src/p/sd1.ts': 'import {a} from "somepkg";', - }); - const diags = checkModuleDeps( - p.getSourceFile('p/sd1.ts')!, p.getTypeChecker(), [], '/src', - ['/src/node_modules']); - expect(diags.length).toBe(0, diags); - }); - it('reports errors for transitive dependencies', () => { const p = createProgram({ '/src/p/sd1.ts': 'export let x = 1;', diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 9113ede7b8..02d5040caa 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -65,23 +65,9 @@ export function gatherDiagnostics( disabledTsetseRules: string[], angularPlugin?: TscPlugin): ts.Diagnostic[] { // Install extra diagnostic plugins if (!bazelOpts.disableStrictDeps) { - const ignoredFilesPrefixes: string[] = []; - if (bazelOpts.nodeModulesPrefix) { - // Under Bazel, we exempt external files fetched from npm from strict - // deps. This is because we allow users to implicitly depend on all the - // node_modules. - // TODO(alexeagle): if users opt-in to fine-grained npm dependencies, we - // should be able to enforce strict deps for them. - ignoredFilesPrefixes.push(bazelOpts.nodeModulesPrefix); - if (options.rootDir) { - ignoredFilesPrefixes.push( - path.resolve(options.rootDir!, 'node_modules')); - } - } program = strictDepsPlugin.wrap(program, { ...bazelOpts, rootDir: options.rootDir, - ignoredFilesPrefixes, }); } if (!bazelOpts.isJsTranspilation) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index 6ec6afe2eb..feabcbedbd 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -30,8 +30,9 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - sha256 = "213dcf7e72f3acd4d1e369b7a356f3e5d9560f380bd655b13b7c0ea425d7c419", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.27.9/rules_nodejs-0.27.9.tar.gz"], + urls = ["https://github.com/bazelbuild/rules_nodejs/archive/39c941ddf4ba2c730cd69505dd190770e60d6315.zip"], + strip_prefix = "rules_nodejs-39c941ddf4ba2c730cd69505dd190770e60d6315", + sha256 = "94aa159e95359d828edd878f5748cba22a515b9a6f7626892fb9fdf2e6676bb8", ) # For protocol buffers diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 3d4a646d49..765534afc1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -10,7 +10,7 @@ "@bazel/bazel": "~0.22.0", "@bazel/buildifier": "^0.20.0", "@bazel/ibazel": "^0.2.0", - "@bazel/typescript": "0.27.9", + "@bazel/typescript": "0.28.0", "@types/jasmine": "^2.8.2", "@types/long": "^4.0.0", "@types/node": "7.0.18", @@ -37,6 +37,7 @@ "which": "~1.0.5" }, "scripts": { + "postinstall": "node --preserve-symlinks --preserve-symlinks-main ./postinstall-patches.js", "pree2e": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG && bazel build //examples/app:e2e //examples/protocol_buffers:e2e", "e2e": "yarn e2e-examples-app-devserver && yarn e2e-examples-app-prodserver && yarn e2e-examples-protobuf-devserver && yarn e2e-examples-protobuf-prodserver", "e2e-examples-app-devserver": "concurrently \"bazel run //examples/app:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", diff --git a/third_party/github.com/bazelbuild/rules_typescript/postinstall-patches.js b/third_party/github.com/bazelbuild/rules_typescript/postinstall-patches.js new file mode 100644 index 0000000000..8a8623bf56 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/postinstall-patches.js @@ -0,0 +1,45 @@ +/** + * @license + * Copyright 2017 The Bazel Authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +try { + require.resolve('shelljs'); +} catch (e) { + // We are in an bazel managed external node_modules repository + // and the resolve has failed because node did not preserve the symlink + // when loading the script. + // This can be fixed using the --preserve-symlinks-main flag which + // is introduced in node 10.2.0 + throw new Error( + `Running postinstall-patches.js script in an external repository requires --preserve-symlinks-main node flag introduced in node 10.2.0. ` + + `Current node version is ${process.version}. Node called with '${process.argv.join(' ')}'.`); +} + +const {set, cd, sed, rm} = require('shelljs'); +const path = require('path'); + +// fail on first error +set('-e'); +// print commands as being executed +set('-v'); +// jump to project root +cd(__dirname); + +// Temporary patch to land strict npm deps +console.log( + '\n# patching ts_library in @bazel/typescript to support strict deps'); +sed('-i', 'deps \\= \\[d for d in ctx\\.attr\\.deps if not NodeModuleInfo in d\\],', 'deps = ctx.attr.deps,', + 'node_modules/@bazel/typescript/internal/build_defs.bzl'); diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index 6d1c5390f8..5ebc1f4fd4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -49,16 +49,69 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.2.0.tgz#c119aef4344a789cef5e792caaee52264123e71c" integrity sha1-wRmu9DRKeJzvXnksqu5SJkEj5xw= -"@bazel/typescript@0.27.9": - version "0.27.9" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.27.9.tgz#6cd6a7162167bec67cfae3a3b973a6bfe8c65f3e" - integrity sha512-o/MDGV2YNHMrsxJMpjWHQwezR7jlh7LJ+7FEmzG/LrepRtyYdaDev5bRhVn2XxnD7cPDx8zvyer35NJTnK0hnw== +"@bazel/typescript@0.28.0": + version "0.28.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.28.0.tgz#fdc9ca63c097c8de6aa8c3e81b3dd870b5605791" + integrity sha512-sGi8+pRuPDe7bmK1cUmHfN/3uxHHpJTX9S3edq75pr6MytORIQZBxjSu9aRCgposIe1dPFTGt4B7TOZT8Ln+zw== dependencies: - protobufjs "5.0.3" + protobufjs "6.8.8" semver "5.6.0" source-map-support "0.5.9" tsutils "2.27.2" +"@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" + integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78= + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A= + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E= + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= + "@types/jasmine@^2.8.2": version "2.8.2" resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.2.tgz#6ae4d8740c0da5d5a627df725b4eed71b8e36668" @@ -74,6 +127,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= +"@types/node@^10.1.0": + version "10.14.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.6.tgz#9cbfcb62c50947217f4d88d4d274cc40c22625a9" + integrity sha512-Fvm24+u85lGmV4hT5G++aht2C5I4Z4dYlWZIh62FAfFO/TfzXtPpoLI6I7AuBWkIFqZCnhFOoTT7RjjaIL5Fjg== + "@types/node@^6.0.46": version "6.0.92" resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.92.tgz#e7f721ae282772e12ba2579968c00d9cce422c5d" @@ -255,14 +313,6 @@ arrify@^1.0.0: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" @@ -473,13 +523,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= - dependencies: - long "~3" - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -505,11 +548,6 @@ callsite@1.0.0: resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -586,15 +624,6 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -cliui@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -623,11 +652,6 @@ colors@^1.1.0: resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.2.tgz#2df8ff573dfbf255af562f8ce7181d6b971a359b" integrity sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ== -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= - combine-lists@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" @@ -774,11 +798,6 @@ debug@^3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - 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" @@ -1433,11 +1452,6 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - 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" @@ -1790,13 +1804,6 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - lie@~3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" @@ -1830,10 +1837,10 @@ log4js@^3.0.0: rfdc "^1.1.2" streamroller "0.7.0" -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== lru-cache@4.1.x: version "4.1.3" @@ -2135,23 +2142,11 @@ options@>=0.0.5: resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" integrity sha1-7CLTEoBrtT5zF3Pnza788cZDEo8= -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= - os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -2260,15 +2255,24 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== -protobufjs@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" - integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" +protobufjs@6.8.8: + version "6.8.8" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.8.tgz#c8b4f1282fd7a90e6f5b109ed11c84af82908e7c" + integrity sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw== + 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" "^4.0.0" + "@types/node" "^10.1.0" + long "^4.0.0" protractor@^5.2.0: version "5.2.0" @@ -3161,24 +3165,11 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= - wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -3227,11 +3218,6 @@ xmlhttprequest-ssl@~1.5.4: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= -y18n@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" @@ -3242,19 +3228,6 @@ yallist@^3.0.0, yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= -yargs@^3.10.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" - yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" From 7592c24304881faa4ae14d2d8bc98ede5bb3a169 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Thu, 9 May 2019 15:45:49 -0700 Subject: [PATCH 0588/1134] Update to nodejs rules 0.29.0 and @bazel/bazel 0.25.1 Can now remove temporary postinstall patch Closes #446 PiperOrigin-RevId: 247510682 --- .../bazelbuild/rules_typescript/WORKSPACE | 1 - .../bazelbuild/rules_typescript/package.bzl | 5 +- .../bazelbuild/rules_typescript/package.json | 5 +- .../rules_typescript/postinstall-patches.js | 45 ---------------- .../bazelbuild/rules_typescript/yarn.lock | 52 +++++++++---------- 5 files changed, 30 insertions(+), 78 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/postinstall-patches.js diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index d83690a763..7bb6346658 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -34,7 +34,6 @@ yarn_install( name = "npm", package_json = "//:package.json", yarn_lock = "//:yarn.lock", - data = ["//:postinstall-patches.js"], ) load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index feabcbedbd..f4511ea01f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -30,9 +30,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/archive/39c941ddf4ba2c730cd69505dd190770e60d6315.zip"], - strip_prefix = "rules_nodejs-39c941ddf4ba2c730cd69505dd190770e60d6315", - sha256 = "94aa159e95359d828edd878f5748cba22a515b9a6f7626892fb9fdf2e6676bb8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.29.0/rules_nodejs-0.29.0.tar.gz"], + sha256 = "1db950bbd27fb2581866e307c0130983471d4c3cd49c46063a2503ca7b6770a4", ) # For protocol buffers diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 765534afc1..5d98dad90a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -7,10 +7,10 @@ "semver": "5.6.0", "source-map-support": "0.5.9", "tsutils": "2.27.2", - "@bazel/bazel": "~0.22.0", + "@bazel/bazel": "0.25.1", "@bazel/buildifier": "^0.20.0", "@bazel/ibazel": "^0.2.0", - "@bazel/typescript": "0.28.0", + "@bazel/typescript": "0.29.0", "@types/jasmine": "^2.8.2", "@types/long": "^4.0.0", "@types/node": "7.0.18", @@ -37,7 +37,6 @@ "which": "~1.0.5" }, "scripts": { - "postinstall": "node --preserve-symlinks --preserve-symlinks-main ./postinstall-patches.js", "pree2e": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG && bazel build //examples/app:e2e //examples/protocol_buffers:e2e", "e2e": "yarn e2e-examples-app-devserver && yarn e2e-examples-app-prodserver && yarn e2e-examples-protobuf-devserver && yarn e2e-examples-protobuf-prodserver", "e2e-examples-app-devserver": "concurrently \"bazel run //examples/app:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", diff --git a/third_party/github.com/bazelbuild/rules_typescript/postinstall-patches.js b/third_party/github.com/bazelbuild/rules_typescript/postinstall-patches.js deleted file mode 100644 index 8a8623bf56..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/postinstall-patches.js +++ /dev/null @@ -1,45 +0,0 @@ -/** - * @license - * Copyright 2017 The Bazel Authors. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -try { - require.resolve('shelljs'); -} catch (e) { - // We are in an bazel managed external node_modules repository - // and the resolve has failed because node did not preserve the symlink - // when loading the script. - // This can be fixed using the --preserve-symlinks-main flag which - // is introduced in node 10.2.0 - throw new Error( - `Running postinstall-patches.js script in an external repository requires --preserve-symlinks-main node flag introduced in node 10.2.0. ` + - `Current node version is ${process.version}. Node called with '${process.argv.join(' ')}'.`); -} - -const {set, cd, sed, rm} = require('shelljs'); -const path = require('path'); - -// fail on first error -set('-e'); -// print commands as being executed -set('-v'); -// jump to project root -cd(__dirname); - -// Temporary patch to land strict npm deps -console.log( - '\n# patching ts_library in @bazel/typescript to support strict deps'); -sed('-i', 'deps \\= \\[d for d in ctx\\.attr\\.deps if not NodeModuleInfo in d\\],', 'deps = ctx.attr.deps,', - 'node_modules/@bazel/typescript/internal/build_defs.bzl'); diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index 5ebc1f4fd4..7e860269cd 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -2,29 +2,29 @@ # yarn lockfile v1 -"@bazel/bazel-darwin_x64@0.22.0": - version "0.22.0" - resolved "https://registry.yarnpkg.com/@bazel/bazel-darwin_x64/-/bazel-darwin_x64-0.22.0.tgz#a2bea5922dba9a32554a218ba4849a200115b248" - integrity sha512-LFxkyQgPATeB64z/1IvOWZhK+lc3JVHejbmdo96qB4lsoD8zselvOlgHvVXxlAjRxVZ9mlmXDvDRDyaXyyRdwA== - -"@bazel/bazel-linux_x64@0.22.0": - version "0.22.0" - resolved "https://registry.yarnpkg.com/@bazel/bazel-linux_x64/-/bazel-linux_x64-0.22.0.tgz#12e5884f2a7b7f3b62afbef9f8da4de0976f3bc8" - integrity sha512-xDs8cb2bbGZ9uvzYZOzCVrMBywzRhLj0J/t+py+FYZj+VO5B3wVg9eUf6nWWR0oJ2mzvToI9h31t2tNdqwy2kQ== - -"@bazel/bazel-win32_x64@0.22.0": - version "0.22.0" - resolved "https://registry.yarnpkg.com/@bazel/bazel-win32_x64/-/bazel-win32_x64-0.22.0.tgz#a8a65986639583a8cc7b018e001aedfdafe41b50" - integrity sha512-FbJaXVDoCLnpIFLnPHFkQdfriYPXfnfQNuf9EXMliERdRuoeBVbwEZfwcuArxZWNFus7bD8QiTj0XzKVWO+Wbw== - -"@bazel/bazel@~0.22.0": - version "0.22.0" - resolved "https://registry.yarnpkg.com/@bazel/bazel/-/bazel-0.22.0.tgz#feb0f2d82f9d169cb47951d95d55e512eda72bc9" - integrity sha512-uaXZsfCXOASBXzmge56akRIhJnKYdShn1X3AdEBzq2NNCf2llkc1H25gKGm4BfuWDBXRbXDMmcXup+fw39h+WQ== +"@bazel/bazel-darwin_x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@bazel/bazel-darwin_x64/-/bazel-darwin_x64-0.25.1.tgz#6526aba1cd912830595c3903ad29dfcb338114a3" + integrity sha512-VYPHaXZFlyl/1MOnUdByusox0RataI+dvQ37FiuuK9byFlcgCoIvhAx20nLK56tEhi/obXXaG2AO4w6rfOcgWg== + +"@bazel/bazel-linux_x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@bazel/bazel-linux_x64/-/bazel-linux_x64-0.25.1.tgz#7f0d098725f0bde4f0904b72b64ea2f22fdbf2bc" + integrity sha512-i+b6RSWn5qGZlrcct+lpWVHd3sen7UaBqQyi/0Rn+J72XCIbY2AFoi+j6SlCXb3EFltxJBCHKJHZqEtkP79bDQ== + +"@bazel/bazel-win32_x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@bazel/bazel-win32_x64/-/bazel-win32_x64-0.25.1.tgz#43bdec698fbb7babfd02470a1dcab384f01f9d6b" + integrity sha512-LM/rY8cxioCFe0m6WxdfvZ6pbD9eKzp69C1BhIkoESyp0IDLDvnLJ6uvs722e3hl8Zj1sIEIbiCwrYk33lPkTg== + +"@bazel/bazel@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@bazel/bazel/-/bazel-0.25.1.tgz#fc76ad9c07371e9ce0bf5bde6ff61cf8abbeaefd" + integrity sha512-HM2IsX9M4siW8b2AHZP4ixtT1NH9H74M0/DJfh0hr15NlivTapvkVQSfEfW57CCMfkuMcDjvfJQK+KzfuVyMgw== optionalDependencies: - "@bazel/bazel-darwin_x64" "0.22.0" - "@bazel/bazel-linux_x64" "0.22.0" - "@bazel/bazel-win32_x64" "0.22.0" + "@bazel/bazel-darwin_x64" "0.25.1" + "@bazel/bazel-linux_x64" "0.25.1" + "@bazel/bazel-win32_x64" "0.25.1" "@bazel/buildifier-darwin_x64@0.20.0": version "0.20.0" @@ -49,10 +49,10 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.2.0.tgz#c119aef4344a789cef5e792caaee52264123e71c" integrity sha1-wRmu9DRKeJzvXnksqu5SJkEj5xw= -"@bazel/typescript@0.28.0": - version "0.28.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.28.0.tgz#fdc9ca63c097c8de6aa8c3e81b3dd870b5605791" - integrity sha512-sGi8+pRuPDe7bmK1cUmHfN/3uxHHpJTX9S3edq75pr6MytORIQZBxjSu9aRCgposIe1dPFTGt4B7TOZT8Ln+zw== +"@bazel/typescript@0.29.0": + version "0.29.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.29.0.tgz#d276afe034f37b5f35ee1369c99dc33c637fc9f6" + integrity sha512-Dp5ucrE1vXTORGiwEi6Ur4dlICpLsmZ1dscsEQT4ywF7xTT0/NmIG0ecBghiCFPFQTxt1D05TR3SH06rPtTAew== dependencies: protobufjs "6.8.8" semver "5.6.0" From 8ec8ce070f6b218efde97e796f9294dbc2e5e278 Mon Sep 17 00:00:00 2001 From: Laurent Le Brun Date: Fri, 17 May 2019 20:10:00 +0200 Subject: [PATCH 0589/1134] Update Bazel dependency With this change, the code works with Bazel flag `--incompatible_disable_deprecated_attr_params`, which will be enabled soon. --- .../github.com/bazelbuild/rules_typescript/package.bzl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index f4511ea01f..63e0714dcb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -38,8 +38,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "io_bazel", - urls = ["https://github.com/bazelbuild/bazel/releases/download/0.21.0/bazel-0.21.0-dist.zip"], - sha256 = "6ccb831e683179e0cfb351cb11ea297b4db48f9eab987601c038aa0f83037db4", + urls = ["https://github.com/bazelbuild/bazel/releases/download/0.25.0/bazel-0.25.0-dist.zip"], + sha256 = "f624fe9ca8d51de192655369ac538c420afb7cde16e1ad052554b582fff09287", ) # For building ts_devserver and ts_auto_deps binaries From 74cf4d8647fe2b864232e0f01b2bbdd3be03ec85 Mon Sep 17 00:00:00 2001 From: rjamet Date: Fri, 10 May 2019 05:10:24 -0700 Subject: [PATCH 0590/1134] Add utilities to Tsetse in prevision of the future rule to ban conformance patterns. PiperOrigin-RevId: 247593544 --- .../rules_typescript/internal/BUILD.bazel | 13 +- .../internal/tsetse/util/ast_tools.ts | 169 ++++++++++++++++ .../internal/tsetse/util/fixer.ts | 191 ++++++++++++++++++ .../internal/tsetse/util/is_literal.ts | 94 +++++++++ .../internal/tsetse/util/match_symbol.ts | 146 +++++++++++++ .../tsetse/util/testing/test_support.ts | 110 ++++++++++ .../bazelbuild/rules_typescript/package.bzl | 4 +- 7 files changed, 721 insertions(+), 6 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/is_literal.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 9cb5167ea7..8b24d69de2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -45,8 +45,7 @@ ts_library( srcs = glob( [ "tsc_wrapped/*.ts", - "tsetse/*.ts", - "tsetse/rules/*.ts", + "tsetse/**/*.ts", ], exclude = [ "**/test_support.ts", @@ -93,9 +92,15 @@ nodejs_binary( ts_library( name = "test_lib", - srcs = glob(["tsc_wrapped/*_test.ts"]) + ["tsc_wrapped/test_support.ts"], - tsconfig = "//internal:tsc_wrapped/tsconfig.json", + srcs = glob([ + "tsc_wrapped/*_test.ts", + "tsetse/**/*_test.ts", + ]) + [ + "tsc_wrapped/test_support.ts", + "tsetse/util/testing/test_support.ts", + ], compiler = "@build_bazel_rules_typescript//internal:tsc_wrapped_bin", + tsconfig = "//internal:tsc_wrapped/tsconfig.json", deps = [ ":tsc_wrapped", "@npm//@types/jasmine", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts new file mode 100644 index 0000000000..44d26ee264 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts @@ -0,0 +1,169 @@ +/** + * @fileoverview This is a collection of smaller utility functions to operate on + * a TypeScript AST, used by JSConformance rules and elsewhere. + */ + +import * as ts from 'typescript'; + +/** + * Returns `n`'s parents in order. + */ +export function parents(n: ts.Node): ts.Node[] { + const p = []; + while (n.parent) { + n = n.parent; + p.push(n); + } + return p; +} + +/** + * Searches for something satisfying the given test in `n` or its children. + */ +export function findInChildren( + n: ts.Node, test: (n: ts.Node) => boolean): boolean { + let toExplore: ts.Node[] = [n]; + let cur: ts.Node|undefined; + while (cur = toExplore.pop()) { + if (test(cur)) { + return true; + } + // Recurse + toExplore = toExplore.concat(cur.getChildren()); + } + return false; +} + +/** + * Returns true if the pattern-based Rule should look at that node and consider + * warning there. The goal is to make it easy to exclude on source files, + * blocks, module declarations, JSDoc, lib.d.ts nodes, that kind of things. + */ +export function shouldExamineNode(n: ts.Node) { + return !( + ts.isBlock(n) || ts.isModuleBlock(n) || ts.isModuleDeclaration(n) || + ts.isSourceFile(n) || (n.parent && ts.isTypeNode(n.parent)) || + ts.isJSDoc(n) || isInStockLibraries(n)); +} + +/** + * Return whether the given declaration is ambient. + */ +export function isAmbientDeclaration(d: ts.Declaration): boolean { + return Boolean( + d.modifiers && + d.modifiers.some(m => m.kind === ts.SyntaxKind.DeclareKeyword)); +} + +/** + * Return whether the given Node is (or is in) a library included as default. + * We currently look for a node_modules/typescript/ prefix, but this could + * be expanded if needed. + */ +export function isInStockLibraries(n: ts.Node|ts.SourceFile): boolean { + const sourceFile = ts.isSourceFile(n) ? n : n.getSourceFile(); + if (sourceFile) { + return sourceFile.fileName.indexOf('node_modules/typescript/') !== -1; + } else { + // the node is nowhere? Consider it as part of the core libs: we can't do + // anything with it anyways, and it was likely included as default. + return true; + } +} + +/** + * Turns the given Symbol into its non-aliased version (which could be itself). + * Returns undefined if given an undefined Symbol (so you can call + * `dealias(typeChecker.getSymbolAtLocation(node))`). + */ +export function dealias( + symbol: ts.Symbol|undefined, tc: ts.TypeChecker): ts.Symbol|undefined { + if (!symbol) { + return undefined; + } + if (symbol.getFlags() & (ts.SymbolFlags.Alias | ts.SymbolFlags.TypeAlias)) { + return dealias(tc.getAliasedSymbol(symbol), tc); + } + return symbol; +} + +/** + * Returns whether `n`'s parents are something indicating a type. + */ +export function isPartOfTypeDeclaration(n: ts.Node) { + return [n, ...parents(n)].some( + p => p.kind === ts.SyntaxKind.TypeReference || + p.kind === ts.SyntaxKind.TypeLiteral); +} + +/** + * Returns whether `n` is under an import statement. + */ +export function isPartOfImportStatement(n: ts.Node) { + return [n, ...parents(n)].some( + p => p.kind === ts.SyntaxKind.ImportDeclaration); +} + +/** + * Returns whether `n` is a declaration. + */ +export function isDeclaration(n: ts.Node): n is ts.VariableDeclaration| + ts.ClassDeclaration|ts.FunctionDeclaration|ts.MethodDeclaration| + ts.PropertyDeclaration|ts.VariableDeclarationList|ts.InterfaceDeclaration| + ts.TypeAliasDeclaration|ts.EnumDeclaration|ts.ModuleDeclaration| + ts.ImportDeclaration|ts.ImportEqualsDeclaration|ts.ExportDeclaration| + ts.MissingDeclaration { + return ts.isVariableDeclaration(n) || ts.isClassDeclaration(n) || + ts.isFunctionDeclaration(n) || ts.isMethodDeclaration(n) || + ts.isPropertyDeclaration(n) || ts.isVariableDeclarationList(n) || + ts.isInterfaceDeclaration(n) || ts.isTypeAliasDeclaration(n) || + ts.isEnumDeclaration(n) || ts.isModuleDeclaration(n) || + ts.isImportDeclaration(n) || ts.isImportEqualsDeclaration(n) || + ts.isExportDeclaration(n) || ts.isMissingDeclaration(n); +} + +/** Type guard for expressions that looks like property writes. */ +export function isPropertyWriteExpression(node: ts.Node): + node is(ts.BinaryExpression & { + left: ts.PropertyAccessExpression; + }) { + if (!ts.isBinaryExpression(node)) { + return false; + } + if (node.operatorToken.getText().trim() !== '=') { + return false; + } + if (!ts.isPropertyAccessExpression(node.left) || + node.left.expression.getFullText().trim() === '') { + return false; + } + + // TODO: Destructuring assigments aren't covered. This would be a potential + // bypass, but I doubt we'd catch bugs, so fixing it seems low priority + // overall. + + return true; +} + +/** + * Debug helper. + */ +export function debugLog(verbose: boolean|undefined, msg: string) { + if (verbose) console.info(msg); +} + +/** + * If verbose, logs the given error that happened while walking n, with a + * stacktrace. + */ +export function logASTWalkError(verbose: boolean, n: ts.Node, e: Error) { + let nodeText = `[error getting name for ${JSON.stringify(n)}]`; + try { + nodeText = '"' + n.getFullText().trim() + '"'; + } catch { + } + debugLog( + verbose, + `Walking node ${nodeText} failed with error ${e}.\n` + + `Stacktrace:\n${e.stack}`); +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts new file mode 100644 index 0000000000..19de12a213 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts @@ -0,0 +1,191 @@ +import * as ts from 'typescript'; +import {Fix, IndividualChange} from '../failure'; +import {debugLog} from './ast_tools'; + +/** + * A Fixer turns Nodes (that are supposed to have been matched before) into a + * Fix. This is meant to be implemented by Rule implementers (or + * ban-preset-pattern users). See also `buildReplacementFixer` for a simpler way + * of implementing a Fixer. + */ +export interface Fixer { + getFixForFlaggedNode(node: NodeType, v?: boolean): Fix|undefined; +} + +/** + * A simple Fixer builder based on a function that looks at a node, and + * output either nothing, or a replacement. If this is too limiting, implement + * Fixer instead. + */ +export function buildReplacementFixer( + potentialReplacementGenerator: (node: ts.Node, v?: boolean) => + ({replaceWith: string} | undefined)): Fixer { + return { + getFixForFlaggedNode: (n: ts.Node, v?: boolean): Fix | undefined => { + const partialFix = potentialReplacementGenerator(n, v); + if (!partialFix) { + return; + } + return { + changes: [{ + sourceFile: n.getSourceFile(), + start: n.getStart(), + end: n.getEnd(), + replacement: partialFix.replaceWith, + }], + }; + } + }; +} + +// TODO(rjamet): Both maybeAddNamedImport and maybeAddNamespacedImport are too +// hard to read to my taste. This could probably be improved upon by being more +// functionnal, to show the filter passes and get rid of the continues and +// returns (which are confusing). + +/** + * Builds an IndividualChange that imports the required symbol from the given + * file under the given name. This might reimport the same thing twice in some + * cases, but it will always make it available under the right name (though + * its name might collide with other imports, as we don't currently check for + * that). + */ +export function maybeAddNamedImport( + source: ts.SourceFile, importWhat: string, fromFile: string, + importAs?: string, tazeComment?: string, v?: boolean): IndividualChange| + undefined { + const importStatements = source.statements.filter(ts.isImportDeclaration); + const importSpecifier = + importAs ? `${importWhat} as ${importAs}` : importWhat; + + for (const iDecl of importStatements) { + const parsedDecl = maybeParseImportNode(iDecl, v); + if (!parsedDecl || parsedDecl.fromFile !== fromFile) { + // Not an import from the right file, or couldn't understand the import. + continue; // Jump to the next import. + } + if (ts.isNamespaceImport(parsedDecl.namedBindings)) { + debugLog(v, `... but it's a wildcard import`); + continue; // Jump to the next import. + } + + // Else, bindings is a NamedImports. We can now search whether the right + // symbol is there under the right name. + const foundRightImport = parsedDecl.namedBindings.elements.some( + iSpec => iSpec.propertyName ? + iSpec.name.getText() === importAs && // import {foo as bar} + iSpec.propertyName.getText() === importWhat : + iSpec.name.getText() === importWhat); // import {foo} + + if (foundRightImport) { + debugLog(v, `"${iDecl.getFullText()}" imports ${importWhat} as we want.`); + return; // Our request is already imported under the right name. + } + + // Else, insert our symbol in the list of imports from that file. + debugLog(v, `No named imports from that file, generating new fix`); + return { + start: parsedDecl.namedBindings.elements[0].getStart(), + end: parsedDecl.namedBindings.elements[0].getStart(), + sourceFile: source, + replacement: `${importSpecifier}, `, + }; + } + + // If we get here, we didn't find anything imported from the wanted file, so + // we'll need the full import string. Add it after the last import, + // and let clang-format handle the rest. + const newImportStatement = `import {${importSpecifier}} from '${fromFile}';` + + (tazeComment ? ` ${tazeComment}\n` : `\n`); + const insertionPosition = importStatements.length ? + importStatements[importStatements.length - 1].getEnd() + 1 : + 0; + return { + start: insertionPosition, + end: insertionPosition, + sourceFile: source, + replacement: newImportStatement, + }; +} + +/** + * Builds an IndividualChange that imports the required namespace from the given + * file under the given name. This might reimport the same thing twice in some + * cases, but it will always make it available under the right name (though + * its name might collide with other imports, as we don't currently check for + * that). + */ +export function maybeAddNamespaceImport( + source: ts.SourceFile, fromFile: string, importAs: string, + tazeComment?: string, v?: boolean): IndividualChange|undefined { + const importStatements = source.statements.filter(ts.isImportDeclaration); + + const hasTheRightImport = importStatements.some(iDecl => { + const parsedDecl = maybeParseImportNode(iDecl, v); + if (!parsedDecl || parsedDecl.fromFile !== fromFile) { + // Not an import from the right file, or couldn't understand the import. + return false; + } + debugLog(v, `"${iDecl.getFullText()}" is an import from the right file`); + + if (ts.isNamedImports(parsedDecl.namedBindings)) { + debugLog(v, `... but it's a named import`); + return false; // irrelevant to our namespace imports + } + // Else, bindings is a NamespaceImport. + if (parsedDecl.namedBindings.name.getText() !== importAs) { + debugLog(v, `... but not the right name, we need to reimport`); + return false; + } + debugLog(v, `... and the right name, no need to reimport`); + return true; + }); + + if (!hasTheRightImport) { + const insertionPosition = importStatements.length ? + importStatements[importStatements.length - 1].getEnd() + 1 : + 0; + return { + start: insertionPosition, + end: insertionPosition, + sourceFile: source, + replacement: tazeComment ? + `import * as ${importAs} from '${fromFile}'; ${tazeComment}\n` : + `import * as ${importAs} from '${fromFile}';\n`, + }; + } + return; +} + +/** + * This tries to make sense of an ImportDeclaration, and returns the interesting + * parts, undefined if the import declaration is valid but not understandable by + * the checker. + */ +function maybeParseImportNode(iDecl: ts.ImportDeclaration, v?: boolean): { + namedBindings: ts.NamedImportBindings|ts.NamespaceImport, + fromFile: string +}|undefined { + if (!iDecl.importClause) { + // something like import "./file"; + debugLog( + v, `Ignoring import without imported symbol: ${iDecl.getFullText()}`); + return; + } + if (iDecl.importClause.name || !iDecl.importClause.namedBindings) { + // Seems to happen in defaults imports like import Foo from 'Bar'. + // Not much we can do with that when trying to get a hold of some symbols, + // so just ignore that line (worst case, we'll suggest another import + // style). + debugLog(v, `Ignoring import: ${iDecl.getFullText()}`); + return; + } + if (!ts.isStringLiteral(iDecl.moduleSpecifier)) { + debugLog(v, `Ignoring import whose module specifier is not literal`); + return; + } + return { + namedBindings: iDecl.importClause.namedBindings, + fromFile: iDecl.moduleSpecifier.text + }; +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/is_literal.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/is_literal.ts new file mode 100644 index 0000000000..8b7209c3b5 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/is_literal.ts @@ -0,0 +1,94 @@ +import * as ts from 'typescript'; +import {findInChildren} from './ast_tools'; + +/** + * Determines if the given ts.Node is literal enough for security purposes. + */ +export function isLiteral(typeChecker: ts.TypeChecker, node: ts.Node): boolean { + if (ts.isBinaryExpression(node) && + node.operatorToken.kind === ts.SyntaxKind.PlusToken) { + // Concatenation is fine, if the parts are literals. + return ( + isLiteral(typeChecker, node.left) && + isLiteral(typeChecker, node.right)); + } else if (ts.isTemplateExpression(node)) { + // Same for template expressions. + return node.templateSpans.every(span => { + return isLiteral(typeChecker, span.expression); + }); + } else if (ts.isTemplateLiteral(node)) { + // and literals (in that order). + return true; + } else if (ts.isConditionalExpression(node)) { + return isLiteral(typeChecker, node.whenTrue) && + isLiteral(typeChecker, node.whenFalse); + } else if (ts.isIdentifier(node)) { + return isUnderlyingValueAStringLiteral(node, typeChecker); + } + + const hasCasts = findInChildren(node, ts.isAsExpression); + + return !hasCasts && isLiteralAccordingToItsType(typeChecker, node); +} + +/** + * Given an identifier, this function goes around the AST to determine + * whether we should consider it a string literal, on a best-effort basis. It + * is an approximation, but should never have false positives. + */ +function isUnderlyingValueAStringLiteral( + identifier: ts.Identifier, tc: ts.TypeChecker) { + // The identifier references a value, and we try to follow the trail: if we + // find a variable declaration for the identifier, and it was declared as a + // const (so we know it wasn't altered along the way), then the value used + // in the declaration is the value our identifier references. That means we + // should look at the value used in its initialization (by applying the same + // rules as before). + // Since we're best-effort, if a part of that operation failed due to lack + // of support (for instance, the identifier was imported), then we fail + // closed and don't consider the value a literal. + + // TODO(rjamet): This doesn't follow imports, which is a feature that we need + // in a fair amount of cases. + return getVariableDeclarationsInSameFile(identifier, tc) + .filter(isConst) + .some(d => d.initializer !== undefined && isLiteral(tc, d.initializer)); +} + +/** + * Returns whether this thing is a literal based on TS's understanding. This is + * only looking at the local type, so there's no magic in that function. + */ +function isLiteralAccordingToItsType( + typeChecker: ts.TypeChecker, node: ts.Node): boolean { + const nodeType = typeChecker.getTypeAtLocation(node); + return (nodeType.flags & + (ts.TypeFlags.StringLiteral | ts.TypeFlags.NumberLiteral | + ts.TypeFlags.BooleanLiteral | ts.TypeFlags.EnumLiteral)) !== 0; +} + +/** + * Follows the symbol behind the given identifier, assuming it is a variable, + * and return all the variable declarations we can find that match it in the + * same file. + */ +function getVariableDeclarationsInSameFile( + node: ts.Identifier, tc: ts.TypeChecker): ts.VariableDeclaration[] { + const symbol = tc.getSymbolAtLocation(node); + if (!symbol) { + return []; + } + const decls = symbol.getDeclarations(); + if (!decls) { + return []; + } + return decls.filter(ts.isVariableDeclaration); +} + +// Tests whether the given variable declaration is Const. +function isConst(varDecl: ts.VariableDeclaration): boolean { + return Boolean( + varDecl && varDecl.parent && + ts.isVariableDeclarationList(varDecl.parent) && + varDecl.parent.flags & ts.NodeFlags.Const); +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts new file mode 100644 index 0000000000..1a05c72baa --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts @@ -0,0 +1,146 @@ + + +import * as ts from 'typescript'; +import {dealias, debugLog, isAmbientDeclaration, isDeclaration, isInStockLibraries, isPartOfImportStatement} from './ast_tools'; + +const JS_IDENTIFIER_FORMAT = '[\\w\\d_-]+'; +const FQN_FORMAT = `(${JS_IDENTIFIER_FORMAT}\.)*${JS_IDENTIFIER_FORMAT}`; +// A fqn made out of a dot-separated chain of JS identifiers. +const ABSOLUTE_RE = new RegExp(`^${FQN_FORMAT}$`); + +/** + * This class matches symbols given a "foo.bar.baz" name, where none of the + * steps are instances of classes. + */ +export class AbsoluteMatcher { + /** + * From a "path/to/file.ts:foo.bar.baz" or "foo.bar.baz" matcher + * specification, builds a Matcher. + */ + constructor(readonly bannedName: string) { + if (!bannedName.match(ABSOLUTE_RE)) { + throw new Error('Malformed matcher selector.'); + } + + // JSConformance used to use a Foo.prototype.bar syntax for bar on + // instances of Foo. TS doesn't surface the prototype part in the FQN, and + // so you can't tell static `bar` on `foo` from the `bar` property/method + // on `foo`. To avoid any confusion, throw there if we see `prototype` in + // the spec: that way, it's obvious that you're not trying to match + // properties. + if (this.bannedName.includes('.prototype')) { + throw new Error( + 'Your pattern includes a .prototype, but the AbsoluteMatcher is ' + + 'meant for non-object matches. Use the PropertyMatcher instead.'); + } + } + + matches(n: ts.Node, tc: ts.TypeChecker, verbose?: boolean): boolean { + // Get the symbol (or the one at the other end of this alias) that we're + // looking at. + const s = dealias(tc.getSymbolAtLocation(n), tc); + if (!s) { + debugLog(verbose, `cannot get symbol`); + return false; + } + + // The TS-provided FQN tells us the full identifier, and the origin file + // in some circumstances. + const fqn = tc.getFullyQualifiedName(s); + debugLog(verbose, `got FQN ${fqn}`); + + // Name-based check + if (!(fqn.endsWith('.' + this.bannedName) || fqn === this.bannedName)) { + debugLog(verbose, `FQN ${fqn} doesn't match name ${this.bannedName}`); + return false; // not a use of the symbols we want + } + + // Check if it's part of a declaration or import. The check is cheap. If + // we're looking for the uses of a symbol, we don't alert on the imports, to + // avoid flooding users with warnings (as the actual use will be alerted) + // and bad fixes. + const p = n.parent; + if (p && (isDeclaration(p) || isPartOfImportStatement(p))) { + debugLog(verbose, `We don't flag symbol declarations`); + return false; + } + + // No file info in the FQN means it's not explicitly imported. + // That must therefore be a local variable, or an ambient symbol + // (and we only care about ambients here). Those could come from + // either a declare somewhere, or one of the core libraries that + // are loaded by default. + if (!fqn.startsWith('"')) { + // We need to trace things back, so get declarations of the symbol. + const declarations = s.getDeclarations(); + if (!declarations) { + debugLog(verbose, `Symbol never declared?`); + return false; + } + if (!declarations.some(isAmbientDeclaration) && + !declarations.some(isInStockLibraries)) { + debugLog( + verbose, `Symbol neither ambient nor from the stock libraries`); + return false; + } + } + + debugLog(verbose, `all clear, report finding`); + return true; + } +} + +// TODO: Export the matched node kinds here. +/** + * This class matches a property access node, based on a property holder type + * (through its name), i.e. a class, and a property name. + * + * The logic is voluntarily simple: if a matcher for `a.b` tests a `x.y` node, + * it will return true if: + * - `x` is of type `a` either directly (name-based) or through inheritance + * (ditto), + * - and, textually, `y` === `b`. + * + * Note that the logic is different from TS's type system: this matcher doesn't + * have any knowledge of structural typing. + */ +export class PropertyMatcher { + static fromSpec(spec: string): PropertyMatcher { + if (spec.indexOf('.prototype.') === -1) { + throw new Error(`BANNED_PROPERTY expects a .prototype in your query.`); + } + const requestParser = /^([\w\d_.-]+)\.prototype\.([\w\d_.-]+)$/; + const matches = requestParser.exec(spec); + if (!matches) { + throw new Error('Cannot understand the BannedProperty spec' + spec); + } + const [bannedType, bannedProperty] = matches.slice(1); + return new PropertyMatcher(bannedType, bannedProperty); + } + + constructor(readonly bannedType: string, readonly bannedProperty: string) {} + + /** + * @param n The PropertyAccessExpression we're looking at. + */ + matches( + n: ts.PropertyAccessExpression, tc: ts.TypeChecker, verbose?: boolean) { + return n.name.text === this.bannedProperty && + this.typeMatches(tc.getTypeAtLocation(n.expression)); + } + + private exactTypeMatches(inspectedType: ts.Type): boolean { + const typeSymbol = inspectedType.getSymbol() || false; + return typeSymbol && typeSymbol.getName() === this.bannedType; + } + + // TODO: Account for unknown types/ '?', and 'loose type matches', i.e. if the + // actual type is a supertype of the prohibited type. + private typeMatches(inspectedType: ts.Type): boolean { + if (this.exactTypeMatches(inspectedType)) { + return true; + } + const baseTypes = inspectedType.getBaseTypes() || []; + return baseTypes.some(base => this.exactTypeMatches(base)); + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts new file mode 100644 index 0000000000..010ad8ca3c --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts @@ -0,0 +1,110 @@ +import 'jasmine'; + +import * as crypto from 'crypto'; +import * as fs from 'fs'; +import * as os from 'os'; +import * as ts from 'typescript'; + +import {Checker} from '../../checker'; +import {Failure, Fix} from '../../failure'; +import {AbstractRule} from '../../rule'; + + +function compile(...sourceCode: string[]): ts.Program { + const temporaryFolder = os.tmpdir() + + `/tslint_test_input_${crypto.randomBytes(16).toString('hex')}`; + const fullPaths: string[] = []; + sourceCode.forEach((s, i) => { + fullPaths.push(`${temporaryFolder}/file_${i}.ts`); + }); + + let error: Error|undefined = undefined; + let program: ts.Program|undefined = undefined; + try { // Wrap it all in a try/finally to clean up the temp files afterwards + fs.mkdirSync(temporaryFolder); + sourceCode.forEach((s, i) => { + fs.writeFileSync(fullPaths[i], s); + }); + program = ts.createProgram(fullPaths, {}); + if (ts.getPreEmitDiagnostics(program).length !== 0) { + throw new Error( + 'Your program does not compile cleanly. Diagnostics:\n' + + ts.formatDiagnostics( + ts.getPreEmitDiagnostics(program), ts.createCompilerHost({}))); + } + } catch (e) { + error = e; + } finally { + fullPaths.forEach(p => fs.unlinkSync(p)); + fs.rmdirSync(temporaryFolder); + } + if (program && !error) { + return program; + } else { + throw error; + } +} + +function check(rule: AbstractRule, program: ts.Program): Failure[] { + const checker = new Checker(program); + rule.register(checker); + return program.getSourceFiles() + .map(s => checker.execute(s)) + .reduce((prev, cur) => prev.concat(cur)); +} + +/** Builds and run the given Rule upon the source files that were provided. */ +export function compileAndCheck( + rule: AbstractRule, ...sourceCode: string[]): Failure[] { + const program = compile(...sourceCode); + return check(rule, program); +} + +// Custom matcher for Jasmine, for a better experience matching fixes. +export const customMatchers: jasmine.CustomMatcherFactories = { + toBeFailureMatching(): jasmine.CustomMatcher { + return { + compare: (actual: ts.Diagnostic&{end: number, fix?: Fix}, exp: { + fileName?: string, start: number, end: number, + }) => { + let regrets = ''; + if (exp === undefined) { + regrets += 'The rule requires two arguments. '; + } + if (exp.fileName) { + if (!actual.file) { + regrets += 'Expected diagnostic to have a source file. '; + } else if (!actual.file.fileName.endsWith(exp.fileName)) { + regrets += `Expected ${actual.file.fileName} to end with ${ + exp.fileName}. `; + } + } + if (exp.start && actual.start !== exp.start) { + regrets += expectation('start', exp.start, actual.start); + } + if (exp.end && actual.end !== exp.end) { + regrets += expectation('end', exp.end, actual.end); + } + return {pass: regrets === '', message: regrets}; + } + }; + } +}; + +function expectation(fieldname: string, expectation: any, actual: any) { + return `Expected .${fieldname} to be ${expectation}, was ${actual}. `; +} + +// And the matching type +declare global { + namespace jasmine { + interface Matchers { + toBeFailureMatching(expected: { + fileName?: string, + start: number, + end: number, + [i: string]: any // the rest + }): void; + } + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index 63e0714dcb..f4511ea01f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -38,8 +38,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "io_bazel", - urls = ["https://github.com/bazelbuild/bazel/releases/download/0.25.0/bazel-0.25.0-dist.zip"], - sha256 = "f624fe9ca8d51de192655369ac538c420afb7cde16e1ad052554b582fff09287", + urls = ["https://github.com/bazelbuild/bazel/releases/download/0.21.0/bazel-0.21.0-dist.zip"], + sha256 = "6ccb831e683179e0cfb351cb11ea297b4db48f9eab987601c038aa0f83037db4", ) # For building ts_devserver and ts_auto_deps binaries From 8e0c10294b2aee8431e36ad02d5418ecf208752a Mon Sep 17 00:00:00 2001 From: rjamet Date: Mon, 20 May 2019 05:17:27 -0700 Subject: [PATCH 0591/1134] Add a ConformancePattern rule to Tsetse, a configurable pattern-based rule. PiperOrigin-RevId: 249029529 --- .../internal/tsetse/error_code.ts | 1 + .../tsetse/rules/conformance_pattern_rule.ts | 52 +++++++++++ .../property_write_test.ts | 86 +++++++++++++++++++ .../internal/tsetse/util/pattern_config.ts | 33 +++++++ .../util/pattern_engines/pattern_engine.ts | 15 ++++ .../pattern_engines/property_write_engine.ts | 49 +++++++++++ 6 files changed, 236 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts index 1e0ea3a1f6..71ca712af3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts @@ -12,4 +12,5 @@ export enum ErrorCode { MUST_USE_PROMISES = 21225, BAN_PROMISE_AS_CONDITION = 21226, PROPERTY_RENAMING_SAFE = 21227, + CONFORMANCE_PATTERN = 21228, } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts new file mode 100644 index 0000000000..ec3c8bfe51 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts @@ -0,0 +1,52 @@ +import {Checker} from '../checker'; +import {ErrorCode} from '../error_code'; +import {AbstractRule} from '../rule'; +import {Fixer} from '../util/fixer'; +import {Config, MatchedNodeTypes, PatternKind} from '../util/pattern_config'; +import {PatternEngine} from '../util/pattern_engines/pattern_engine'; +import {PropertyWriteEngine} from '../util/pattern_engines/property_write_engine'; + +/** + * Builds a Rule that matches a certain pattern, given as parameter, and + * that can additionally run a suggested fix generator on the matches. + * + * This is templated, mostly to ensure the nodes that have been matched + * correspond to what the Fixer expects. + */ +export class ConformancePatternRule

implements + AbstractRule { + readonly ruleName: string; + readonly code = ErrorCode.CONFORMANCE_PATTERN; + + private readonly engine: PatternEngine

; + + constructor( + config: Config

, fixer?: Fixer, + verbose?: boolean) { + // TODO(rjamet): This cheats a bit with the typing, as TS doesn't realize + // that P is Config.kind. + // tslint:disable-next-line:no-any See above. + let engine: PatternEngine; + switch (config.kind) { + case PatternKind.BANNED_PROPERTY_WRITE: + engine = new PropertyWriteEngine(config, fixer, verbose); + break; + default: + throw new Error('Config type not recognized, or not implemented yet.'); + } + this.ruleName = `conformance-pattern-${config.kind}`; + this.engine = engine as PatternEngine

; + } + + register(checker: Checker) { + this.engine.register(checker); + } +} + +// Re-exported for convenience when instantiating rules. +/** + * The list of supported patterns useable in ConformancePatternRule. The + * patterns whose name match JSConformance patterns should behave similarly (see + * https://github.com/google/closure-compiler/wiki/JS-Conformance-Framework). + */ +export {PatternKind}; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts new file mode 100644 index 0000000000..45f0c3a9d3 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts @@ -0,0 +1,86 @@ +import 'jasmine'; +import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; +import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; + +describe('BANNED_PROPERTY_WRITE', () => { + it('matches simple examples', () => { + const source = `const q = document.createElement('q');\n` + + `q.cite = 'some example string';\n`; + const rule = new ConformancePatternRule({ + errorMessage: 'do not cite', + kind: PatternKind.BANNED_PROPERTY_WRITE, + values: ['HTMLQuoteElement.prototype.cite'] + }); + const results = compileAndCheck(rule, source); + + expect(results.length).toBe(1); + expect(results[0]) + .toBeFailureMatching({start: 39, end: 69, errorMessage: 'do not cite'}); + }); + + it('understands imported symbols', () => { + const sources = [ + `const q = document.createElement('q'); export {q};`, + `import {q} from './file_0'; q.cite = window.name;` + ]; + const rule = new ConformancePatternRule({ + errorMessage: 'do not cite', + kind: PatternKind.BANNED_PROPERTY_WRITE, + values: ['HTMLQuoteElement.prototype.cite'] + }); + const results = compileAndCheck(rule, ...sources); + + expect(results.length).toBe(1); + expect(results[0]).toBeFailureMatching({ + start: 28, + end: 48, + errorMessage: 'do not cite', + // fileName: 'file_0.ts' + // TODO(rjamet): why is there no source file in the finding? + }); + }); + + + describe('with inheritance', () => { + const source = [ + `class Parent {x:number}`, + `class Child extends Parent {}`, + `const c:Child = new Child();`, + `c.x = 1;`, + ].join('\n'); + + // Both of these should have the same results: in `c.x`, `x` matches, + // and `c` is both a Parent and a Child. + const expectedFailure = { + start: 83, + end: 90, + errorMessage: 'found write to x', + }; + + it('banning Parent.x matches (instance of Child).x', () => { + const ruleOnParent = new ConformancePatternRule({ + errorMessage: 'found write to x', + kind: PatternKind.BANNED_PROPERTY_WRITE, + values: ['Parent.prototype.x'] + }); + const r = compileAndCheck(ruleOnParent, source); + expect(r.length).toBe(1); + expect(r[0]).toBeFailureMatching(expectedFailure); + }); + + it('banning Child.x matches x defined on Parent', () => { + const ruleOnChild = new ConformancePatternRule({ + errorMessage: 'found write to x', + kind: PatternKind.BANNED_PROPERTY_WRITE, + values: ['Child.prototype.x'] + }); + const r = compileAndCheck(ruleOnChild, source); + expect(r.length).toBe(1); + expect(r[0]).toBeFailureMatching(expectedFailure); + }); + }); +}); + +beforeEach(() => { + jasmine.addMatchers(customMatchers); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts new file mode 100644 index 0000000000..c2748d9a97 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -0,0 +1,33 @@ +import * as ts from 'typescript'; + +/** + * The list of supported patterns useable in ConformancePatternRule. The + * patterns whose name match JSConformance patterns should behave similarly (see + * https://github.com/google/closure-compiler/wiki/JS-Conformance-Framework) + */ +export enum PatternKind { + BANNED_PROPERTY_WRITE = 'banned-property-write', +} + +/** + * A config for ConformancePatternRule. + */ +export interface Config

{ + kind: P; + /** + * Values have a pattern-specific syntax. + * + * TODO(rjamet): We'll document them, but for now see each patternKind's tests + * for examples. + */ + values: string[]; + /** The error message this pattern will create. */ + errorMessage: string; +} + +/** Maps the type of nodes that each `PatternType` produces. */ +export interface MatchedNodeTypes { + [PatternKind.BANNED_PROPERTY_WRITE]: ts.BinaryExpression&{ + left: ts.PropertyAccessExpression; + }; +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts new file mode 100644 index 0000000000..4d315b52ce --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts @@ -0,0 +1,15 @@ +import {Checker} from '../../checker'; +import {Fixer} from '../../util/fixer'; +import {Config, MatchedNodeTypes, PatternKind} from '../../util/pattern_config'; + +/** + * A patternEngine is the logic that handles a specific PatternKind. + */ +export abstract class PatternEngine

{ + constructor( + protected readonly config: Config

, + protected readonly fixer?: Fixer, + protected readonly verbose?: boolean) {} + + abstract register(checker: Checker): void; +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts new file mode 100644 index 0000000000..ea8fe35a9a --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts @@ -0,0 +1,49 @@ +import * as ts from 'typescript'; +import {Checker} from '../../checker'; +import {ErrorCode} from '../../error_code'; +import {Fix} from '../../failure'; +import {debugLog, isPropertyWriteExpression, shouldExamineNode} from '../ast_tools'; +import {Fixer} from '../fixer'; +import {PropertyMatcher} from '../match_symbol'; +import {Config, MatchedNodeTypes, PatternKind} from '../pattern_config'; +import {PatternEngine} from '../pattern_engines/pattern_engine'; + +/** + * The engine for BANNED_PROPERTY_WRITE. + */ +export class PropertyWriteEngine extends + PatternEngine { + private readonly matcher: PropertyMatcher; + constructor( + config: Config, + fixer?: Fixer, + verbose?: boolean) { + super(config, fixer, verbose); + // TODO: Support more than one single value here, or even build a + // multi-pattern engine. This would help for performance. + if (this.config.values.length !== 1) { + throw new Error(`BANNED_PROPERTY_WRITE expects one value, got(${ + this.config.values.join(',')})`); + } + this.matcher = PropertyMatcher.fromSpec(this.config.values[0]); + } + + register(checker: Checker) { + checker.on( + ts.SyntaxKind.BinaryExpression, this.check.bind(this), + ErrorCode.CONFORMANCE_PATTERN); + } + + check(c: Checker, n: ts.BinaryExpression) { + if (!shouldExamineNode(n) || n.getSourceFile().isDeclarationFile || + !isPropertyWriteExpression(n)) { + return; + } + debugLog(this.verbose, `inspecting ${n.getFullText().trim()}`); + if (this.matcher.matches(n.left, c.typeChecker, this.verbose)) { + const fix: Fix|undefined = + this.fixer ? this.fixer.getFixForFlaggedNode(n) : undefined; + c.addFailureAtNode(n, this.config.errorMessage, fix); + } + } +} From 468e50ab4f4f4809040155525284c797c04e1505 Mon Sep 17 00:00:00 2001 From: Philipp Wollermann Date: Tue, 21 May 2019 08:27:59 -0700 Subject: [PATCH 0592/1134] -- Don't test on Ubuntu 14.04 Ubuntu 14.04 is about to be end-of-life and Bazel CI will stop supporting it shortly afterwards. Context: https://groups.google.com/d/msg/bazel-dev/_D6XzfNkQQE/8TNKiNmsCAAJ Closes #442 PiperOrigin-RevId: 249254890 --- .../bazelbuild/rules_typescript/.bazelci/presubmit.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml index dc31779ccc..86727d1915 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml @@ -1,24 +1,24 @@ --- platforms: - ubuntu1404: + ubuntu1604: run_targets: - "//:gazelle" - "@nodejs//:yarn" build_targets: - "..." test_flags: - # TODO(gregmagolan): shared libs needed by chrome & firefox not available on ubuntu1404 + # TODO(gregmagolan): shared libs needed by chrome & firefox not available on ubuntu1604 - "--test_tag_filters=-browser:chromium-local,-browser:firefox-local" test_targets: - "..." - ubuntu1604: + ubuntu1804: run_targets: - "//:gazelle" - "@nodejs//:yarn" build_targets: - "..." test_flags: - # TODO(gregmagolan): shared libs needed by chrome & firefox not available on ubuntu1604 + # TODO(gregmagolan): shared libs needed by chrome & firefox not available on ubuntu1404 - "--test_tag_filters=-browser:chromium-local,-browser:firefox-local" test_targets: - "..." From 8dc9cbfb6209399a996f892c0a53cd4ab11808bb Mon Sep 17 00:00:00 2001 From: Marcel Hlopko Date: Tue, 21 May 2019 08:37:02 -0700 Subject: [PATCH 0593/1134] Update rules_go to 0.18.5 This version contains forward fixes for Bazel 0.27. Closes #447 PiperOrigin-RevId: 249256466 --- .../bazelbuild/rules_typescript/WORKSPACE | 2 +- .../bazelbuild/rules_typescript/package.bzl | 22 ++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 7bb6346658..4fd6286f3b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -40,7 +40,7 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() # Setup rules_go toolchain -load("@io_bazel_rules_go//go:def.bzl", "go_register_toolchains", "go_rules_dependencies") +load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") go_rules_dependencies() diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index f4511ea01f..b5b9e0120f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -38,8 +38,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "io_bazel", - urls = ["https://github.com/bazelbuild/bazel/releases/download/0.21.0/bazel-0.21.0-dist.zip"], - sha256 = "6ccb831e683179e0cfb351cb11ea297b4db48f9eab987601c038aa0f83037db4", + urls = ["https://github.com/bazelbuild/bazel/releases/download/0.25.0/bazel-0.25.0-dist.zip"], + sha256 = "f624fe9ca8d51de192655369ac538c420afb7cde16e1ad052554b582fff09287", ) # For building ts_devserver and ts_auto_deps binaries @@ -47,20 +47,22 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "io_bazel_rules_go", - # We need https://github.com/bazelbuild/rules_go/commit/109c520465fcb418f2c4be967f3744d959ad66d3 which - # is not part of any 0.16.x release yet. This commit provides runfile resolve support for Windows. - urls = ["https://github.com/bazelbuild/rules_go/archive/12a52e9845a5b06a28ffda06d7f2b07ff2320b97.zip"], - strip_prefix = "rules_go-12a52e9845a5b06a28ffda06d7f2b07ff2320b97", - sha256 = "5c0a059afe51c744c90ae2b33ac70b9b4f4c514715737e2ec0b5fd297400c10d", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/0.18.5/rules_go-0.18.5.tar.gz", + "https://github.com/bazelbuild/rules_go/releases/download/0.18.5/rules_go-0.18.5.tar.gz", + ], + sha256 = "a82a352bffae6bee4e95f68a8d80a70e87f42c4741e6a448bec11998fcc82329", ) # go_repository is defined in bazel_gazelle _maybe( http_archive, name = "bazel_gazelle", - urls = ["https://github.com/bazelbuild/bazel-gazelle/archive/c0880f7f9d7048b45be5d36115ec2bf444e723c4.zip"], # 2018-12-05 - strip_prefix = "bazel-gazelle-c0880f7f9d7048b45be5d36115ec2bf444e723c4", - sha256 = "d9980ae0c91d90aaf9131170adfec4e87464d53e58ce2eb01b350a53e93a87c7", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/0.17.0/bazel-gazelle-0.17.0.tar.gz", + "https://github.com/bazelbuild/bazel-gazelle/releases/download/0.17.0/bazel-gazelle-0.17.0.tar.gz", + ], + sha256 = "3c681998538231a2d24d0c07ed5a7658cb72bfb5fd4bf9911157c0e9ac6a2687", ) # ts_auto_deps depends on com_github_bazelbuild_buildtools From 5f7bc5345348216f2baf4cf6abd0e29b0b44ea17 Mon Sep 17 00:00:00 2001 From: rjamet Date: Wed, 22 May 2019 04:48:00 -0700 Subject: [PATCH 0594/1134] Swap the verbosity mechanism for ConformancePatternRule from an argument to a global switch. PiperOrigin-RevId: 249425522 --- .../tsetse/rules/conformance_pattern_rule.ts | 6 +-- .../ban_conformance_pattern/util_test.ts | 37 +++++++++++++++++++ .../internal/tsetse/util/ast_tools.ts | 29 ++++++++++----- .../internal/tsetse/util/fixer.ts | 32 ++++++++-------- .../internal/tsetse/util/match_symbol.ts | 20 +++++----- .../util/pattern_engines/pattern_engine.ts | 3 +- .../pattern_engines/property_write_engine.ts | 9 ++--- 7 files changed, 88 insertions(+), 48 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts index ec3c8bfe51..c78f90cbd9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts @@ -20,16 +20,14 @@ export class ConformancePatternRule

implements private readonly engine: PatternEngine

; - constructor( - config: Config

, fixer?: Fixer, - verbose?: boolean) { + constructor(config: Config

, fixer?: Fixer) { // TODO(rjamet): This cheats a bit with the typing, as TS doesn't realize // that P is Config.kind. // tslint:disable-next-line:no-any See above. let engine: PatternEngine; switch (config.kind) { case PatternKind.BANNED_PROPERTY_WRITE: - engine = new PropertyWriteEngine(config, fixer, verbose); + engine = new PropertyWriteEngine(config, fixer); break; default: throw new Error('Config type not recognized, or not implemented yet.'); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts new file mode 100644 index 0000000000..0588b47403 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts @@ -0,0 +1,37 @@ +/** + * @fileoverview Tests for the various utilities that are not tied to a single + * rule. + */ + +import 'jasmine'; +import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; +import {setDebug} from '../../util/ast_tools'; +import {compileAndCheck} from '../../util/testing/test_support'; + +describe('Debug output', () => { + it('turns on and off', () => { + const source = `const obj = {prop:'val'}; obj.prop = 'foo';`; + const rule = new ConformancePatternRule({ + errorMessage: 'does not matter', + kind: PatternKind.BANNED_PROPERTY_WRITE, + values: ['HTMLQuoteElement.prototype.cite'] + }); + + const logs: string[] = []; + const realConsoleLog = console.log; + spyOn(console, 'log').and.callFake((s: string) => { + logs.push(s); + realConsoleLog(s); + }); + setDebug(true); + compileAndCheck(rule, source); + + expect(logs).toEqual([`inspecting obj.prop = 'foo'`]); + + setDebug(false); + compileAndCheck(rule, source); + + // Nothing more appended: debug was false + expect(logs).toEqual([`inspecting obj.prop = 'foo'`]); + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts index 44d26ee264..cb0f0cb9bf 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts @@ -5,6 +5,25 @@ import * as ts from 'typescript'; +/** + * Triggers increased verbosity in the rules. + */ +let DEBUG = false; + +/** + * Turns on or off logging for ConformancePatternRules. + */ +export function setDebug(state: boolean) { + DEBUG = state; +} + +/** + * Debug helper. + */ +export function debugLog(msg: string) { + if (DEBUG) console.log(msg); +} + /** * Returns `n`'s parents in order. */ @@ -145,13 +164,6 @@ export function isPropertyWriteExpression(node: ts.Node): return true; } -/** - * Debug helper. - */ -export function debugLog(verbose: boolean|undefined, msg: string) { - if (verbose) console.info(msg); -} - /** * If verbose, logs the given error that happened while walking n, with a * stacktrace. @@ -163,7 +175,6 @@ export function logASTWalkError(verbose: boolean, n: ts.Node, e: Error) { } catch { } debugLog( - verbose, `Walking node ${nodeText} failed with error ${e}.\n` + - `Stacktrace:\n${e.stack}`); + `Stacktrace:\n${e.stack}`); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts index 19de12a213..f9b784e1d9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts @@ -52,20 +52,19 @@ export function buildReplacementFixer( */ export function maybeAddNamedImport( source: ts.SourceFile, importWhat: string, fromFile: string, - importAs?: string, tazeComment?: string, v?: boolean): IndividualChange| - undefined { + importAs?: string, tazeComment?: string): IndividualChange|undefined { const importStatements = source.statements.filter(ts.isImportDeclaration); const importSpecifier = importAs ? `${importWhat} as ${importAs}` : importWhat; for (const iDecl of importStatements) { - const parsedDecl = maybeParseImportNode(iDecl, v); + const parsedDecl = maybeParseImportNode(iDecl); if (!parsedDecl || parsedDecl.fromFile !== fromFile) { // Not an import from the right file, or couldn't understand the import. continue; // Jump to the next import. } if (ts.isNamespaceImport(parsedDecl.namedBindings)) { - debugLog(v, `... but it's a wildcard import`); + debugLog(`... but it's a wildcard import`); continue; // Jump to the next import. } @@ -78,12 +77,12 @@ export function maybeAddNamedImport( iSpec.name.getText() === importWhat); // import {foo} if (foundRightImport) { - debugLog(v, `"${iDecl.getFullText()}" imports ${importWhat} as we want.`); + debugLog(`"${iDecl.getFullText()}" imports ${importWhat} as we want.`); return; // Our request is already imported under the right name. } // Else, insert our symbol in the list of imports from that file. - debugLog(v, `No named imports from that file, generating new fix`); + debugLog(`No named imports from that file, generating new fix`); return { start: parsedDecl.namedBindings.elements[0].getStart(), end: parsedDecl.namedBindings.elements[0].getStart(), @@ -117,27 +116,27 @@ export function maybeAddNamedImport( */ export function maybeAddNamespaceImport( source: ts.SourceFile, fromFile: string, importAs: string, - tazeComment?: string, v?: boolean): IndividualChange|undefined { + tazeComment?: string): IndividualChange|undefined { const importStatements = source.statements.filter(ts.isImportDeclaration); const hasTheRightImport = importStatements.some(iDecl => { - const parsedDecl = maybeParseImportNode(iDecl, v); + const parsedDecl = maybeParseImportNode(iDecl); if (!parsedDecl || parsedDecl.fromFile !== fromFile) { // Not an import from the right file, or couldn't understand the import. return false; } - debugLog(v, `"${iDecl.getFullText()}" is an import from the right file`); + debugLog(`"${iDecl.getFullText()}" is an import from the right file`); if (ts.isNamedImports(parsedDecl.namedBindings)) { - debugLog(v, `... but it's a named import`); + debugLog(`... but it's a named import`); return false; // irrelevant to our namespace imports } // Else, bindings is a NamespaceImport. if (parsedDecl.namedBindings.name.getText() !== importAs) { - debugLog(v, `... but not the right name, we need to reimport`); + debugLog(`... but not the right name, we need to reimport`); return false; } - debugLog(v, `... and the right name, no need to reimport`); + debugLog(`... and the right name, no need to reimport`); return true; }); @@ -162,14 +161,13 @@ export function maybeAddNamespaceImport( * parts, undefined if the import declaration is valid but not understandable by * the checker. */ -function maybeParseImportNode(iDecl: ts.ImportDeclaration, v?: boolean): { +function maybeParseImportNode(iDecl: ts.ImportDeclaration): { namedBindings: ts.NamedImportBindings|ts.NamespaceImport, fromFile: string }|undefined { if (!iDecl.importClause) { // something like import "./file"; - debugLog( - v, `Ignoring import without imported symbol: ${iDecl.getFullText()}`); + debugLog(`Ignoring import without imported symbol: ${iDecl.getFullText()}`); return; } if (iDecl.importClause.name || !iDecl.importClause.namedBindings) { @@ -177,11 +175,11 @@ function maybeParseImportNode(iDecl: ts.ImportDeclaration, v?: boolean): { // Not much we can do with that when trying to get a hold of some symbols, // so just ignore that line (worst case, we'll suggest another import // style). - debugLog(v, `Ignoring import: ${iDecl.getFullText()}`); + debugLog(`Ignoring import: ${iDecl.getFullText()}`); return; } if (!ts.isStringLiteral(iDecl.moduleSpecifier)) { - debugLog(v, `Ignoring import whose module specifier is not literal`); + debugLog(`Ignoring import whose module specifier is not literal`); return; } return { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts index 1a05c72baa..5df53b1009 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts @@ -35,23 +35,23 @@ export class AbsoluteMatcher { } } - matches(n: ts.Node, tc: ts.TypeChecker, verbose?: boolean): boolean { + matches(n: ts.Node, tc: ts.TypeChecker): boolean { // Get the symbol (or the one at the other end of this alias) that we're // looking at. const s = dealias(tc.getSymbolAtLocation(n), tc); if (!s) { - debugLog(verbose, `cannot get symbol`); + debugLog(`cannot get symbol`); return false; } // The TS-provided FQN tells us the full identifier, and the origin file // in some circumstances. const fqn = tc.getFullyQualifiedName(s); - debugLog(verbose, `got FQN ${fqn}`); + debugLog(`got FQN ${fqn}`); // Name-based check if (!(fqn.endsWith('.' + this.bannedName) || fqn === this.bannedName)) { - debugLog(verbose, `FQN ${fqn} doesn't match name ${this.bannedName}`); + debugLog(`FQN ${fqn} doesn't match name ${this.bannedName}`); return false; // not a use of the symbols we want } @@ -61,7 +61,7 @@ export class AbsoluteMatcher { // and bad fixes. const p = n.parent; if (p && (isDeclaration(p) || isPartOfImportStatement(p))) { - debugLog(verbose, `We don't flag symbol declarations`); + debugLog(`We don't flag symbol declarations`); return false; } @@ -74,18 +74,17 @@ export class AbsoluteMatcher { // We need to trace things back, so get declarations of the symbol. const declarations = s.getDeclarations(); if (!declarations) { - debugLog(verbose, `Symbol never declared?`); + debugLog(`Symbol never declared?`); return false; } if (!declarations.some(isAmbientDeclaration) && !declarations.some(isInStockLibraries)) { - debugLog( - verbose, `Symbol neither ambient nor from the stock libraries`); + debugLog(`Symbol neither ambient nor from the stock libraries`); return false; } } - debugLog(verbose, `all clear, report finding`); + debugLog(`all clear, report finding`); return true; } } @@ -123,8 +122,7 @@ export class PropertyMatcher { /** * @param n The PropertyAccessExpression we're looking at. */ - matches( - n: ts.PropertyAccessExpression, tc: ts.TypeChecker, verbose?: boolean) { + matches(n: ts.PropertyAccessExpression, tc: ts.TypeChecker) { return n.name.text === this.bannedProperty && this.typeMatches(tc.getTypeAtLocation(n.expression)); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts index 4d315b52ce..5dbbddc18e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts @@ -8,8 +8,7 @@ import {Config, MatchedNodeTypes, PatternKind} from '../../util/pattern_config'; export abstract class PatternEngine

{ constructor( protected readonly config: Config

, - protected readonly fixer?: Fixer, - protected readonly verbose?: boolean) {} + protected readonly fixer?: Fixer) {} abstract register(checker: Checker): void; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts index ea8fe35a9a..7af7ccf0f1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts @@ -16,9 +16,8 @@ export class PropertyWriteEngine extends private readonly matcher: PropertyMatcher; constructor( config: Config, - fixer?: Fixer, - verbose?: boolean) { - super(config, fixer, verbose); + fixer?: Fixer) { + super(config, fixer); // TODO: Support more than one single value here, or even build a // multi-pattern engine. This would help for performance. if (this.config.values.length !== 1) { @@ -39,8 +38,8 @@ export class PropertyWriteEngine extends !isPropertyWriteExpression(n)) { return; } - debugLog(this.verbose, `inspecting ${n.getFullText().trim()}`); - if (this.matcher.matches(n.left, c.typeChecker, this.verbose)) { + debugLog(`inspecting ${n.getFullText().trim()}`); + if (this.matcher.matches(n.left, c.typeChecker)) { const fix: Fix|undefined = this.fixer ? this.fixer.getFixForFlaggedNode(n) : undefined; c.addFailureAtNode(n, this.config.errorMessage, fix); From 8e6dfa11aadb777d74a5e2ab7f494c2af933a688 Mon Sep 17 00:00:00 2001 From: rjamet Date: Thu, 23 May 2019 06:52:22 -0700 Subject: [PATCH 0595/1134] Add a property_write_non_constant engine to Tsetse's ConformancePattern. Same as property_write, but only triggers on writing non-constant values. PiperOrigin-RevId: 249633880 --- .../tsetse/rules/conformance_pattern_rule.ts | 9 ++- .../property_non_constant_write_test.ts | 27 ++++++++ .../ban_conformance_pattern/util_test.ts | 64 ++++++++++++++++++- .../internal/tsetse/util/pattern_config.ts | 4 ++ .../property_non_constant_write_engine.ts | 58 +++++++++++++++++ .../tsetse/util/testing/test_support.ts | 8 ++- 6 files changed, 166 insertions(+), 4 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts index c78f90cbd9..b683355d17 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts @@ -4,6 +4,7 @@ import {AbstractRule} from '../rule'; import {Fixer} from '../util/fixer'; import {Config, MatchedNodeTypes, PatternKind} from '../util/pattern_config'; import {PatternEngine} from '../util/pattern_engines/pattern_engine'; +import {PropertyNonConstantWriteEngine} from '../util/pattern_engines/property_non_constant_write_engine'; import {PropertyWriteEngine} from '../util/pattern_engines/property_write_engine'; /** @@ -27,7 +28,13 @@ export class ConformancePatternRule

implements let engine: PatternEngine; switch (config.kind) { case PatternKind.BANNED_PROPERTY_WRITE: - engine = new PropertyWriteEngine(config, fixer); + engine = new PropertyWriteEngine( + config as Config, fixer); + break; + case PatternKind.BANNED_PROPERTY_NON_CONSTANT_WRITE: + engine = new PropertyNonConstantWriteEngine( + config as Config, + fixer); break; default: throw new Error('Config type not recognized, or not implemented yet.'); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts new file mode 100644 index 0000000000..8b5179621d --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts @@ -0,0 +1,27 @@ +import 'jasmine'; +import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; +import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; + +describe('BANNED_PROPERTY_NON_CONSTANT_WRITE', () => { + it('matches a trivial example', () => { + const source = `const q = document.createElement('q');\n` + + `q.cite = 'some example string';\n` + // literal + `q.cite = window.name;\n`; // non-literal + const rule = new ConformancePatternRule({ + errorMessage: 'do not cite dynamically', + kind: PatternKind.BANNED_PROPERTY_NON_CONSTANT_WRITE, + values: ['HTMLQuoteElement.prototype.cite'] + }); + const results = compileAndCheck(rule, source); + + expect(results.length).toBe(1); + expect(results[0]) + .toBeFailureMatching( + {start: 71, end: 91, errorMessage: 'do not cite dynamically'}); + }); +}); + + +beforeEach(() => { + jasmine.addMatchers(customMatchers); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts index 0588b47403..94ab234695 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts @@ -5,8 +5,9 @@ import 'jasmine'; import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; -import {setDebug} from '../../util/ast_tools'; -import {compileAndCheck} from '../../util/testing/test_support'; +import {isInStockLibraries, setDebug} from '../../util/ast_tools'; +import {isLiteral} from '../../util/is_literal'; +import {compile, compileAndCheck} from '../../util/testing/test_support'; describe('Debug output', () => { it('turns on and off', () => { @@ -35,3 +36,62 @@ describe('Debug output', () => { expect(logs).toEqual([`inspecting obj.prop = 'foo'`]); }); }); + +describe('The constant-ness logic', () => { + it('understands constants', () => { + // Keep these to single-expression programs. + const constantExpressionsSources = [ + `'hello'`, + `'hello' + 'hi'`, + `1`, + `1 + 1`, + '`abcdef`', + '`abcd${"ef"}`', + '`abcd${1+1}`+`hi`', + `1 ? 'hi' : 'hello'`, + `window.name ? 'hi' : 'hello'`, + ]; + + // We don't bother with a rule for this one. + const constantProgram = compile(...constantExpressionsSources); + const constantCompiledSources = constantProgram.getSourceFiles(); + const constantTc = constantProgram.getTypeChecker(); + const constantExpressions = + constantCompiledSources.filter(s => !isInStockLibraries(s)) + .map(s => s.statements[0].getChildren()[0]); + + for (const expr of constantExpressions) { + expect(isLiteral(constantTc, expr)) + .toBe( + true, + `Expected "${expr.getFullText()}" to be considered constant.`); + } + }); + + + it('understands non-constants', () => { + const nonconstantExpressionsSources = [ + `window.name`, + `'hello' + window.name`, + `window.name + 'hello'`, + '`abcd${window.name}`', + `1 ? window.name : 'hello'`, + `1 ? 'hello' : window.name`, + ]; + + const nonconstantProgram = compile(...nonconstantExpressionsSources); + const nonconstantCompiledSources = nonconstantProgram.getSourceFiles(); + const nonconstantTc = nonconstantProgram.getTypeChecker(); + const nonconstantExpressions = + nonconstantCompiledSources.filter(s => !isInStockLibraries(s)) + .map(s => s.statements[0].getChildren()[0]); + + for (const expr of nonconstantExpressions) { + expect(isLiteral(nonconstantTc, expr)) + .toBe( + false, + `Expected "${ + expr.getFullText()}" not to be considered constant.`); + } + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index c2748d9a97..76e2d713ab 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -7,6 +7,7 @@ import * as ts from 'typescript'; */ export enum PatternKind { BANNED_PROPERTY_WRITE = 'banned-property-write', + BANNED_PROPERTY_NON_CONSTANT_WRITE = 'banned-property-non-constant-write' } /** @@ -30,4 +31,7 @@ export interface MatchedNodeTypes { [PatternKind.BANNED_PROPERTY_WRITE]: ts.BinaryExpression&{ left: ts.PropertyAccessExpression; }; + [PatternKind.BANNED_PROPERTY_NON_CONSTANT_WRITE]: ts.BinaryExpression&{ + left: ts.PropertyAccessExpression; + }; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts new file mode 100644 index 0000000000..9e26cd77e1 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts @@ -0,0 +1,58 @@ +import * as ts from 'typescript'; +import {Checker} from '../../checker'; +import {ErrorCode} from '../../error_code'; +import {Fix} from '../../failure'; +import {debugLog, isPropertyWriteExpression, shouldExamineNode} from '../ast_tools'; +import {Fixer} from '../fixer'; +import {isLiteral} from '../is_literal'; +import {PropertyMatcher} from '../match_symbol'; +import {Config, MatchedNodeTypes, PatternKind} from '../pattern_config'; +import {PatternEngine} from './pattern_engine'; + +// Just for conciseness. +type BanKind = PatternKind.BANNED_PROPERTY_NON_CONSTANT_WRITE; + +/** + * The engine for BANNED_PROPERTY_NON_CONSTANT_WRITE. + */ +export class PropertyNonConstantWriteEngine extends PatternEngine { + private readonly matcher: PropertyMatcher; + constructor( + config: Config, fixer?: Fixer) { + super(config, fixer); + // TODO: Support more than one single value here, or even build a + // multi-pattern engine. This would help for performance. + if (this.config.values.length !== 1) { + throw new Error( + `BANNED_PROPERTY_NON_CONSTANT_WRITE expects one value, got(${ + this.config.values.join(',')})`); + } + this.matcher = PropertyMatcher.fromSpec(this.config.values[0]); + } + + register(checker: Checker) { + checker.on( + ts.SyntaxKind.BinaryExpression, this.check.bind(this), + ErrorCode.CONFORMANCE_PATTERN); + } + + check(c: Checker, n: ts.BinaryExpression) { + if (!shouldExamineNode(n) || n.getSourceFile().isDeclarationFile || + !isPropertyWriteExpression(n)) { + return; + } + debugLog(`inspecting ${n.getFullText().trim()}`); + if (!this.matcher.matches(n.left, c.typeChecker)) { + debugLog('Not an assignment to the right property'); + return; + } + if (isLiteral(c.typeChecker, n.right)) { + debugLog(`Assigned value (${ + n.right.getFullText()}) is a compile-time constant.`); + return; + } + const fix: Fix|undefined = + this.fixer ? this.fixer.getFixForFlaggedNode(n) : undefined; + c.addFailureAtNode(n, this.config.errorMessage, fix); + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts index 010ad8ca3c..8adb90a01a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts @@ -10,7 +10,13 @@ import {Failure, Fix} from '../../failure'; import {AbstractRule} from '../../rule'; -function compile(...sourceCode: string[]): ts.Program { + +/** + * Turns the provided source (as strings) into a ts.Program. The source files + * will be named `.../file_${n}.ts`, with n the index of the source file in + * the `sourceCode` array. + */ +export function compile(...sourceCode: string[]): ts.Program { const temporaryFolder = os.tmpdir() + `/tslint_test_input_${crypto.randomBytes(16).toString('hex')}`; const fullPaths: string[] = []; From 52d9dc9617aa1916495dd8b6bb112fa4e2b8caaa Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 23 May 2019 19:02:22 -0700 Subject: [PATCH 0596/1134] Fix for --incompatible_depset_is_not_iterable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We used a depset for a collection which is only used within the context of a single target: the files[] block in the generated tsconfig. As documented on https://docs.bazel.build/versions/master/skylark/depsets.html: "If you don’t need the merge operation, consider using another type, such as list or dict." The problem is exposed by --incompatible_depset_is_not_iterable which fails at the spot where we iterated the depset of files, showing that it should have been a list. Also clean up a warning about the deprecated load of jasmine_node_test See #443 Closes #451 PiperOrigin-RevId: 249758830 --- .../rules_typescript/internal/BUILD.bazel | 3 +- .../internal/common/compilation.bzl | 7 +- .../internal/common/tsconfig.bzl | 3 + .../bazelbuild/rules_typescript/package.bzl | 4 +- .../bazelbuild/rules_typescript/package.json | 9 +- .../bazelbuild/rules_typescript/yarn.lock | 570 +++++++++++++++++- 6 files changed, 578 insertions(+), 18 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 8b24d69de2..26dc0fba87 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -14,8 +14,9 @@ # gazelle:exclude worker_protocol.proto -load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test", "nodejs_binary") +load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary") load("@bazel_skylib//:bzl_library.bzl", "bzl_library") +load("@npm_bazel_jasmine//:index.bzl", "jasmine_node_test") load("@npm_bazel_typescript//:defs.bzl", "ts_library") package(default_visibility = ["//visibility:public"]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 8bb4732dd2..9cc2b88bc6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -288,7 +288,7 @@ def compile_ts( if "TYPESCRIPT_PERF_TRACE_TARGET" in ctx.var: perf_trace = str(ctx.label) == ctx.var["TYPESCRIPT_PERF_TRACE_TARGET"] - compilation_inputs = depset(srcs_files, transitive = [input_declarations]) + compilation_inputs = dep_declarations.transitive.to_list() + srcs_files tsickle_externs_path = tsickle_externs[0] if tsickle_externs else None # Calculate allowed dependencies for strict deps enforcement. @@ -344,7 +344,7 @@ def compile_ts( replay_params = None if has_sources: - inputs = depset([ctx.outputs.tsconfig], transitive = [compilation_inputs]) + inputs = compilation_inputs + [ctx.outputs.tsconfig] replay_params = compile_action( ctx, inputs, @@ -388,10 +388,9 @@ def compile_ts( ctx.actions.write(output = tsconfig_json_es5, content = json_marshal( tsconfig_es5, )) - inputs = depset([tsconfig_json_es5], transitive = [compilation_inputs]) devmode_compile_action( ctx, - inputs, + compilation_inputs + [tsconfig_json_es5], outputs, tsconfig_json_es5, node_profile_args, diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 349dc6f94c..0fe82547d7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -54,6 +54,9 @@ def create_tsconfig( Returns: A nested dict that corresponds to a tsconfig.json structure """ + if (type(files) != type([])): + fail("expected files argument to be a list, got " + type(files)) + outdir_path = out_dir if out_dir != None else ctx.configuration.bin_dir.path # Callers can choose the filename for the tsconfig, but it must always live diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index b5b9e0120f..5e07daa516 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -30,8 +30,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.29.0/rules_nodejs-0.29.0.tar.gz"], - sha256 = "1db950bbd27fb2581866e307c0130983471d4c3cd49c46063a2503ca7b6770a4", + sha256 = "73325a155c16bfbde29fb2ffcaf59d9d5a1c13b06ada386d3edd5a9d82bda702", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.29.1/rules_nodejs-0.29.1.tar.gz"], ) # For protocol buffers diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 5d98dad90a..6699458909 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,13 +3,10 @@ "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", "devDependencies": { - "protobufjs": "6.8.8", - "semver": "5.6.0", - "source-map-support": "0.5.9", - "tsutils": "2.27.2", "@bazel/bazel": "0.25.1", "@bazel/buildifier": "^0.20.0", "@bazel/ibazel": "^0.2.0", + "@bazel/jasmine": "^0.29.0", "@bazel/typescript": "0.29.0", "@types/jasmine": "^2.8.2", "@types/long": "^4.0.0", @@ -28,11 +25,15 @@ "karma-requirejs": "1.1.0", "karma-sauce-launcher": "2.0.2", "karma-sourcemap-loader": "0.3.7", + "protobufjs": "6.8.8", "protractor": "^5.2.0", "requirejs": "2.3.5", + "semver": "5.6.0", "shelljs": "^0.8.2", + "source-map-support": "0.5.9", "tmp": "0.0.33", "tsickle": "0.33.1", + "tsutils": "2.27.2", "typescript": "~3.1.6", "which": "~1.0.5" }, diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index 7e860269cd..68a5dbe362 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -49,6 +49,15 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.2.0.tgz#c119aef4344a789cef5e792caaee52264123e71c" integrity sha1-wRmu9DRKeJzvXnksqu5SJkEj5xw= +"@bazel/jasmine@^0.29.0": + version "0.29.0" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-0.29.0.tgz#347d9c512daf8576dcdaa9bb168733fa444c2263" + integrity sha512-QH/mLAH4e7gcJrfOT0BmJ4wk+5Ly3RU+RPLaCyacnCjmJCICukZJa/rrjbVtwd8u7ZM+Hf6tRaLLydSeKXGBug== + dependencies: + jasmine "~3.3.1" + jasmine-core "~3.3.0" + v8-coverage "1.0.9" + "@bazel/typescript@0.29.0": version "0.29.0" resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.29.0.tgz#d276afe034f37b5f35ee1369c99dc33c637fc9f6" @@ -548,6 +557,11 @@ callsite@1.0.0: resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -624,6 +638,15 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -671,6 +694,11 @@ commander@2.6.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d" integrity sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0= +commander@~2.20.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -755,6 +783,23 @@ corser@~2.0.0: resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" integrity sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c= +cross-spawn@^4: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + cryptiles@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" @@ -798,6 +843,11 @@ debug@^3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + 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" @@ -950,6 +1000,13 @@ ent@~2.2.0: resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + es6-promise@^4.0.3: version "4.2.5" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" @@ -982,6 +1039,19 @@ eventemitter3@^3.0.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -1094,6 +1164,20 @@ finalhandler@1.1.0: statuses "~1.3.1" unpipe "~1.0.0" +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + flatted@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" @@ -1111,6 +1195,14 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +foreground-child@^1.5.6: + version "1.5.6" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" + integrity sha1-T9ca0t/elnibmApcCilZN8svXOk= + dependencies: + cross-spawn "^4" + signal-exit "^3.0.0" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -1178,6 +1270,16 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + 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" @@ -1222,6 +1324,18 @@ glob@^7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.3: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + 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" + globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" @@ -1239,6 +1353,17 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= +handlebars@^4.0.3: + version "4.1.2" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" + integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== + dependencies: + neo-async "^2.6.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -1339,6 +1464,11 @@ hoek@4.x.x: resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" integrity sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ== +hosted-git-info@^2.1.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + http-errors@1.6.3, http-errors@~1.6.3: version "1.6.3" resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" @@ -1452,6 +1582,11 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + 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" @@ -1466,6 +1601,11 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + 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" @@ -1591,6 +1731,11 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -1640,11 +1785,38 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= +istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" + integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== + +istanbul-lib-report@^1.1.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" + integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw== + dependencies: + istanbul-lib-coverage "^1.2.1" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + +istanbul-reports@^1.3.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" + integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw== + dependencies: + handlebars "^4.0.3" + jasmine-core@2.8.0, jasmine-core@~2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= +jasmine-core@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.3.0.tgz#dea1cdc634bc93c7e0d4ad27185df30fa971b10e" + integrity sha512-3/xSmG/d35hf80BEN66Y6g9Ca5l/Isdeg/j6zvbTYlTzeKinzmaTM4p9am5kYqOmE05D7s1t8FGjzdSnbUbceA== + jasmine@^2.5.3: version "2.8.0" resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" @@ -1654,6 +1826,14 @@ jasmine@^2.5.3: glob "^7.0.6" jasmine-core "~2.8.0" +jasmine@~3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.3.1.tgz#d61bb1dd8888859bd11ea83074a78ee13d949905" + integrity sha512-/vU3/H7U56XsxIXHwgEuWpCgQ0bRi2iiZeUpx7Nqo8n1TpoDHfZhkPIc7CO8I4pnMzYsi3XaSZEiy8cnTfujng== + dependencies: + glob "^7.0.6" + jasmine-core "~3.3.0" + jasminewd2@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" @@ -1664,6 +1844,11 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" @@ -1804,6 +1989,13 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + lie@~3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" @@ -1811,6 +2003,32 @@ lie@~3.1.0: dependencies: immediate "~3.0.5" +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -1850,6 +2068,14 @@ lru-cache@4.1.x: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -1867,6 +2093,13 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= + dependencies: + mimic-fn "^1.0.0" + micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -1920,6 +2153,11 @@ mime@^2.3.1: resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -2008,6 +2246,11 @@ negotiator@0.6.1: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= +neo-async@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + node-pre-gyp@^0.10.0: version "0.10.3" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" @@ -2032,6 +2275,16 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -2052,6 +2305,13 @@ npm-packlist@^1.1.6: ignore-walk "^3.0.1" npm-bundled "^1.0.1" +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -2142,11 +2402,20 @@ options@>=0.0.5: resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" integrity sha1-7CLTEoBrtT5zF3Pnza788cZDEo8= -os-homedir@^1.0.0: +os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -2160,11 +2429,62 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" + integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + pako@~1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + parseqs@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" @@ -2194,6 +2514,11 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -2204,11 +2529,28 @@ path-is-inside@^1.0.1: resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" integrity sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME= +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -2219,6 +2561,11 @@ pify@^2.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -2355,6 +2702,23 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.0: version "2.3.6" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -2452,6 +2816,21 @@ request@^2.78.0: tunnel-agent "^0.6.0" uuid "^3.1.0" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + requirejs@2.3.5: version "2.3.5" resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0" @@ -2474,6 +2853,13 @@ resolve@^1.1.6: dependencies: path-parse "^1.0.5" +resolve@^1.10.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" + integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw== + dependencies: + path-parse "^1.0.6" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -2491,6 +2877,13 @@ rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: dependencies: glob "^7.0.5" +rimraf@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + rx@2.3.24: version "2.3.24" resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.24.tgz#14f950a4217d7e35daa71bbcbe58eff68ea4b2b7" @@ -2584,6 +2977,11 @@ selenium-webdriver@^4.0.0-alpha.1: tmp "0.0.30" xml2js "^0.4.17" +"semver@2 || 3 || 4 || 5": + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + semver@5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" @@ -2599,7 +2997,7 @@ semver@~5.0.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" integrity sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no= -set-blocking@~2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -2629,6 +3027,18 @@ setprototypeof@1.1.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + 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" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + shelljs@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.2.tgz#345b7df7763f4c2340d584abb532c5f752ca9e35" @@ -2638,7 +3048,7 @@ shelljs@^0.8.2: interpret "^1.0.0" rechoir "^0.6.2" -signal-exit@^3.0.0: +signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= @@ -2762,7 +3172,7 @@ source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.0, source-map@^0.6.1: +source-map@^0.6.0, 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" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -2777,6 +3187,44 @@ spawn-command@^0.0.2-1: resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" integrity sha1-lUThpDygRfhTGqwaSMspva5iM44= +spawn-wrap@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.2.tgz#cff58e73a8224617b6561abdc32586ea0c82248c" + integrity sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg== + dependencies: + foreground-child "^1.5.6" + mkdirp "^0.5.0" + os-homedir "^1.0.1" + rimraf "^2.6.2" + signal-exit "^3.0.2" + which "^1.3.0" + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" + integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== + 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" @@ -2836,7 +3284,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2": +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -2882,6 +3330,16 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + 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" @@ -2897,7 +3355,7 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^3.2.3: +supports-color@^3.1.2, supports-color@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= @@ -2917,6 +3375,16 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" +test-exclude@^5.2.2: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + tmp@0.0.24: version "0.0.24" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12" @@ -3024,6 +3492,14 @@ typescript@~3.1.6: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== +uglify-js@^3.1.4: + version "3.5.15" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.5.15.tgz#fe2b5378fd0b09e116864041437bff889105ce24" + integrity sha512-fe7aYFotptIddkwcm6YuA0HmknBZ52ZzOsUxZEdhhkSsz7RfjHDX2QDxwKTiv4JQ5t5NhfmpgAK+J7LiDhKSqg== + dependencies: + commander "~2.20.0" + source-map "~0.6.1" + ultron@1.0.x: version "1.0.2" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" @@ -3107,6 +3583,43 @@ uuid@^3.1.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" integrity sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g== +uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +v8-coverage@1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/v8-coverage/-/v8-coverage-1.0.9.tgz#780889680c0fea0f587adf22e2b5f443b9434745" + integrity sha512-JolsCH1JDI2QULrxkAGZaovJPvg/Q0p20Uj0F5N8fPtYDtz38gNBRPQ/WVXlLLd3d8WHvKN96AfE4XFk4u0g2g== + dependencies: + debug "^3.1.0" + foreground-child "^1.5.6" + istanbul-lib-coverage "^1.2.0" + istanbul-lib-report "^1.1.3" + istanbul-reports "^1.3.0" + mkdirp "^0.5.1" + rimraf "^2.6.2" + signal-exit "^3.0.2" + spawn-wrap "^1.4.2" + test-exclude "^5.2.2" + uuid "^3.3.2" + v8-to-istanbul "1.2.0" + yargs "^11.0.0" + +v8-to-istanbul@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-1.2.0.tgz#f6a22ffb08b2202aaba8c2be497d1d41fe8fb4b6" + integrity sha512-rVSmjdEfJmOHN8GYCbg+XUhbzXZr7DzdaXIslB9DdcopGZEMsW5x5qIdxr/8DcW7msULHNnvs/xUY1TszvhKRw== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -3146,7 +3659,12 @@ webdriver-manager@^12.0.6: semver "^5.3.0" xml2js "^0.4.17" -which@^1.2.1: +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.1, which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -3170,6 +3688,14 @@ wordwrap@~0.0.2: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -3218,6 +3744,11 @@ xmlhttprequest-ssl@~1.5.4: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" @@ -3228,6 +3759,31 @@ yallist@^3.0.0, yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= +yargs-parser@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= + dependencies: + camelcase "^4.1.0" + +yargs@^11.0.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" + integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^9.0.2" + yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" From e08432bbca55d2816f0232031b44b3f7ad6a1934 Mon Sep 17 00:00:00 2001 From: rjamet Date: Fri, 24 May 2019 04:23:18 -0700 Subject: [PATCH 0597/1134] Replace ranges with text matched in Tsetse matchers, and fix a type confusion Both check that their expectations match the actual item. The filenames thing was due to me testing the expected value as an extended ts.Diagnostic, while never converting it. Jasmine isn't typed that way. PiperOrigin-RevId: 249810909 --- .../internal/tsetse/failure.ts | 6 +++ .../property_write_test.ts | 9 ++-- .../tsetse/util/testing/test_support.ts | 49 +++++++++++++------ 3 files changed, 43 insertions(+), 21 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts index 56355adcdb..20126acfc7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts @@ -34,6 +34,12 @@ export class Failure { fix: this.suggestedFix }; } + + toString(): string { + return `Failure{sourceFile:${ + this.sourceFile ? this.sourceFile.fileName : + 'unknown'}, start:${this.start}, end:${this.end}}`; + } } /** diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts index 45f0c3a9d3..997577e41e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts @@ -32,11 +32,9 @@ describe('BANNED_PROPERTY_WRITE', () => { expect(results.length).toBe(1); expect(results[0]).toBeFailureMatching({ - start: 28, - end: 48, + matchedCode: 'q.cite = window.name;', + fileName: 'file_1.ts', errorMessage: 'do not cite', - // fileName: 'file_0.ts' - // TODO(rjamet): why is there no source file in the finding? }); }); @@ -52,8 +50,7 @@ describe('BANNED_PROPERTY_WRITE', () => { // Both of these should have the same results: in `c.x`, `x` matches, // and `c` is both a Parent and a Child. const expectedFailure = { - start: 83, - end: 90, + matchedCode: 'c.x = 1;', errorMessage: 'found write to x', }; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts index 8adb90a01a..f79192cec1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts @@ -6,7 +6,7 @@ import * as os from 'os'; import * as ts from 'typescript'; import {Checker} from '../../checker'; -import {Failure, Fix} from '../../failure'; +import {Failure} from '../../failure'; import {AbstractRule} from '../../rule'; @@ -70,26 +70,44 @@ export function compileAndCheck( export const customMatchers: jasmine.CustomMatcherFactories = { toBeFailureMatching(): jasmine.CustomMatcher { return { - compare: (actual: ts.Diagnostic&{end: number, fix?: Fix}, exp: { - fileName?: string, start: number, end: number, + compare: (actualFailure: Failure, exp: { + fileName?: string, + start?: number, + end?: number, + matchedCode?: string }) => { + const actualDiagnostic = actualFailure.toDiagnostic(); let regrets = ''; if (exp === undefined) { regrets += 'The rule requires two arguments. '; } if (exp.fileName) { - if (!actual.file) { - regrets += 'Expected diagnostic to have a source file. '; - } else if (!actual.file.fileName.endsWith(exp.fileName)) { - regrets += `Expected ${actual.file.fileName} to end with ${ - exp.fileName}. `; + if (!actualDiagnostic.file) { + regrets += `Expected diagnostic to have a source file, but it had ${ + actualDiagnostic.file}. `; + } else if (!actualDiagnostic.file.fileName.endsWith(exp.fileName)) { + regrets += `Expected ${ + actualDiagnostic.file.fileName} to end with ${exp.fileName}. `; } } - if (exp.start && actual.start !== exp.start) { - regrets += expectation('start', exp.start, actual.start); + if (exp.start && actualDiagnostic.start !== exp.start) { + regrets += expectation('start', exp.start, actualDiagnostic.start); + } + if (exp.end && actualDiagnostic.end !== exp.end) { + regrets += expectation('end', exp.end, actualDiagnostic.end); } - if (exp.end && actual.end !== exp.end) { - regrets += expectation('end', exp.end, actual.end); + if (exp.matchedCode) { + if (!actualDiagnostic.file) { + regrets += `Expected diagnostic to have a source file, but it had ${ + actualDiagnostic.file}. `; + } else { + const foundMatchedCode = actualDiagnostic.file.getFullText().substr( + Number(actualDiagnostic.start), actualDiagnostic.end); + if (foundMatchedCode != exp.matchedCode) { + regrets += `Expected diagnostic to match ${ + exp.matchedCode}, but was ${foundMatchedCode}`; + } + } } return {pass: regrets === '', message: regrets}; } @@ -106,10 +124,11 @@ declare global { namespace jasmine { interface Matchers { toBeFailureMatching(expected: { + [i: string]: any, // the rest fileName?: string, - start: number, - end: number, - [i: string]: any // the rest + start?: number, + end?: number, + matchedCode?: string, }): void; } } From e1a62fda955418f7f7e7e75fab2ef13b7b7ecb3b Mon Sep 17 00:00:00 2001 From: rjamet Date: Mon, 27 May 2019 04:34:31 -0700 Subject: [PATCH 0598/1134] More tests for the ConformancePatterns, and fix substr-based confusion Adding a bunch more tests around various more complex cases (shadowing, function parameters, and whitespace) revealed a bug where I mixed start/end and start/length patterns. So I'm taking the opportunity to switch to String.prototype.slice for the matcher, which is slightly less surprising in its behavior. PiperOrigin-RevId: 250134904 --- .../property_write_test.ts | 90 +++++++++++++++---- .../pattern_engines/property_write_engine.ts | 4 +- .../tsetse/util/testing/test_support.ts | 11 ++- 3 files changed, 84 insertions(+), 21 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts index 997577e41e..42290f2b56 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts @@ -3,19 +3,63 @@ import {ConformancePatternRule, PatternKind} from '../../rules/conformance_patte import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; describe('BANNED_PROPERTY_WRITE', () => { + const rule = new ConformancePatternRule({ + errorMessage: 'do not cite', + kind: PatternKind.BANNED_PROPERTY_WRITE, + values: ['HTMLQuoteElement.prototype.cite'] + }); + it('matches simple examples', () => { - const source = `const q = document.createElement('q');\n` + - `q.cite = 'some example string';\n`; - const rule = new ConformancePatternRule({ - errorMessage: 'do not cite', - kind: PatternKind.BANNED_PROPERTY_WRITE, - values: ['HTMLQuoteElement.prototype.cite'] + const source = [ + `const q = document.createElement('q');`, + `q.cite = 'some example string';`, + ].join('\n'); + const results = compileAndCheck(rule, source); + + expect(results.length).toBe(1); + expect(results[0]).toBeFailureMatching({ + matchedCode: `q.cite = 'some example string'`, + errorMessage: 'do not cite' + }); + }); + + it('matches precisely, even with whitespace or comments', () => { + const source = [ + `const q = document.createElement('q');`, + ` q.cite = 'exampleA';`, + `q.cite = 'exampleB' ;`, + `/* test1 */ q.cite = /* test2 */ 'exampleC' /* test3 */;`, + ].join('\n'); + const results = compileAndCheck(rule, source); + + expect(results.length).toBe(3); + expect(results[0]).toBeFailureMatching({ + matchedCode: `q.cite = 'exampleA'`, + errorMessage: 'do not cite' + }); + expect(results[1]).toBeFailureMatching({ + matchedCode: `q.cite = 'exampleB'`, + errorMessage: 'do not cite' }); + expect(results[2]).toBeFailureMatching({ + matchedCode: `q.cite = /* test2 */ 'exampleC'`, + errorMessage: 'do not cite' + }); + }) + + it('understands function prototypes', () => { + const source = [ + `function foo(q:HTMLQuoteElement) {`, + ` q.cite = 'some example string';`, + `}`, + ].join('\n'); const results = compileAndCheck(rule, source); expect(results.length).toBe(1); - expect(results[0]) - .toBeFailureMatching({start: 39, end: 69, errorMessage: 'do not cite'}); + expect(results[0]).toBeFailureMatching({ + matchedCode: `q.cite = 'some example string'`, + errorMessage: 'do not cite' + }); }); it('understands imported symbols', () => { @@ -23,16 +67,11 @@ describe('BANNED_PROPERTY_WRITE', () => { `const q = document.createElement('q'); export {q};`, `import {q} from './file_0'; q.cite = window.name;` ]; - const rule = new ConformancePatternRule({ - errorMessage: 'do not cite', - kind: PatternKind.BANNED_PROPERTY_WRITE, - values: ['HTMLQuoteElement.prototype.cite'] - }); const results = compileAndCheck(rule, ...sources); expect(results.length).toBe(1); expect(results[0]).toBeFailureMatching({ - matchedCode: 'q.cite = window.name;', + matchedCode: 'q.cite = window.name', fileName: 'file_1.ts', errorMessage: 'do not cite', }); @@ -41,16 +80,16 @@ describe('BANNED_PROPERTY_WRITE', () => { describe('with inheritance', () => { const source = [ - `class Parent {x:number}`, + `class Parent { x: number }`, `class Child extends Parent {}`, - `const c:Child = new Child();`, + `const c: Child = new Child();`, `c.x = 1;`, ].join('\n'); // Both of these should have the same results: in `c.x`, `x` matches, // and `c` is both a Parent and a Child. const expectedFailure = { - matchedCode: 'c.x = 1;', + matchedCode: 'c.x = 1', errorMessage: 'found write to x', }; @@ -76,6 +115,23 @@ describe('BANNED_PROPERTY_WRITE', () => { expect(r[0]).toBeFailureMatching(expectedFailure); }); }); + + describe('with shadowing', () => { + it('does not over-match', () => { + const source = [ + `const q = document.createElement('q');`, + `const f1 = (q: {cite: string}) => { q.cite = 'example 1'; };`, + ].join('\n'); + const rule = new ConformancePatternRule({ + errorMessage: 'do not cite', + kind: PatternKind.BANNED_PROPERTY_WRITE, + values: ['HTMLQuoteElement.prototype.cite'] + }); + const results = compileAndCheck(rule, source); + + expect(results.length).toBe(0); + }); + }); }); beforeEach(() => { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts index 7af7ccf0f1..ea90e60290 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts @@ -38,10 +38,12 @@ export class PropertyWriteEngine extends !isPropertyWriteExpression(n)) { return; } - debugLog(`inspecting ${n.getFullText().trim()}`); + debugLog(`inspecting ${n.getText().trim()}`); if (this.matcher.matches(n.left, c.typeChecker)) { const fix: Fix|undefined = this.fixer ? this.fixer.getFixForFlaggedNode(n) : undefined; + debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ + n.getEnd()}] on node [${n.getText()}]`); c.addFailureAtNode(n, this.config.errorMessage, fix); } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts index f79192cec1..617771031a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts @@ -79,7 +79,7 @@ export const customMatchers: jasmine.CustomMatcherFactories = { const actualDiagnostic = actualFailure.toDiagnostic(); let regrets = ''; if (exp === undefined) { - regrets += 'The rule requires two arguments. '; + regrets += 'The matcher requires two arguments. '; } if (exp.fileName) { if (!actualDiagnostic.file) { @@ -100,12 +100,17 @@ export const customMatchers: jasmine.CustomMatcherFactories = { if (!actualDiagnostic.file) { regrets += `Expected diagnostic to have a source file, but it had ${ actualDiagnostic.file}. `; + } else if (!actualDiagnostic.start) { + // I don't know how this could happen, but typings say so. + regrets += `Expected diagnostic to have a starting position. `; } else { - const foundMatchedCode = actualDiagnostic.file.getFullText().substr( + const foundMatchedCode = actualDiagnostic.file.getFullText().slice( Number(actualDiagnostic.start), actualDiagnostic.end); if (foundMatchedCode != exp.matchedCode) { regrets += `Expected diagnostic to match ${ - exp.matchedCode}, but was ${foundMatchedCode}`; + exp.matchedCode}, but was ${foundMatchedCode} (from ${ + Number( + actualDiagnostic.start)} to ${actualDiagnostic.end}). `; } } } From 83f97b8cda9d29dd027552ab79a58052c53eab21 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Tue, 28 May 2019 11:23:23 -0700 Subject: [PATCH 0599/1134] Remove the tsconfig override warning feature. It is mostly unavoidable: users need pathMapping to make their editor happy with multiple named libs in a monorepo, some language features require specifying target, etc. Also it's reporting to every user on every compile, this is not usually the right time to fix it. If we want to rollforward a feature, it should be based more precisely on things that confused users, and should also take care to only warn if the users setting conflicts with Bazel's in a breaking way. Alternative to https://github.com/angular/angular/pull/30104 PiperOrigin-RevId: 250324968 --- .../internal/tsc_wrapped/tsconfig.ts | 68 +------------------ 1 file changed, 1 insertion(+), 67 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index c147d3b0f0..9c2980f6c9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -126,6 +126,7 @@ export interface BazelOptions { /** * Suppress warnings about tsconfig.json properties that are overridden. + * Currently unused, remains here for backwards compat for users who set it. */ suppressTsconfigOverrideWarnings: boolean; @@ -207,69 +208,6 @@ interface PluginImportWithConfig extends ts.PluginImport { [optionName: string]: string|{}; } -/** - * Prints messages to stderr if the given config object contains certain known - * properties that Bazel will override in the generated tsconfig.json. - * Note that this is not an exhaustive list of such properties; just the ones - * thought to commonly cause problems. - * Note that we can't error out, because users might have a legitimate reason: - * - during a transition to Bazel they can use the same tsconfig with other - * tools - * - if they have multiple packages in their repo, they might need to use path - * mapping so the editor knows where to resolve some absolute imports - * - * @param userConfig the parsed json for the full tsconfig.json file - */ -function warnOnOverriddenOptions(userConfig: any) { - const overrideWarnings: string[] = []; - if (userConfig.files) { - overrideWarnings.push( - 'files is ignored because it is controlled by the srcs[] attribute'); - } - const options: ts.CompilerOptions = userConfig.compilerOptions; - if (options) { - if (options.target || options.module) { - overrideWarnings.push( - 'compilerOptions.target and compilerOptions.module are controlled by downstream dependencies, such as ts_devserver'); - } - if (options.declaration) { - overrideWarnings.push( - `compilerOptions.declaration is always true, as it's needed for dependent libraries to type-check`); - } - if (options.paths) { - overrideWarnings.push( - 'compilerOptions.paths is determined by the module_name attribute in transitive deps[]'); - } - if (options.typeRoots) { - overrideWarnings.push( - 'compilerOptions.typeRoots is always set to the @types subdirectory of the node_modules attribute'); - } - if (options.traceResolution || (options as any).diagnostics) { - overrideWarnings.push( - 'compilerOptions.traceResolution and compilerOptions.diagnostics are set by the DEBUG flag in tsconfig.bzl under rules_typescript'); - } - if (options.rootDir || options.baseUrl) { - overrideWarnings.push( - 'compilerOptions.rootDir and compilerOptions.baseUrl are always the workspace root directory'); - } - if (options.preserveConstEnums) { - overrideWarnings.push( - 'compilerOptions.preserveConstEnums is always false under Bazel'); - } - if (options.noEmitOnError) { - // TODO(alexeagle): why?? - overrideWarnings.push( - 'compilerOptions.noEmitOnError is always false under Bazel'); - } - } - if (overrideWarnings.length) { - console.error( - '\nWARNING: your tsconfig.json file specifies options which are overridden by Bazel:'); - for (const w of overrideWarnings) console.error(` - ${w}`); - console.error('\n'); - } -} - /** * The same as Node's path.resolve, however it returns a path with forward * slashes rather than joining the resolved path with the platform's path @@ -339,10 +277,6 @@ export function parseTsconfig( ? newBazelBazelOpts.devmodeTargetOverride : existingBazelOpts.devmodeTargetOverride, } - - if (!mergedConfig.bazelOptions.suppressTsconfigOverrideWarnings) { - warnOnOverriddenOptions(config); - } } if (config.extends) { From ba91ff7d701b8dfd25360c65346c0a8cb014bd40 Mon Sep 17 00:00:00 2001 From: rjamet Date: Wed, 29 May 2019 14:52:19 -0700 Subject: [PATCH 0600/1134] Fix a small type confusion bug in the test matcher for Failures PiperOrigin-RevId: 250572014 --- .../internal/tsetse/util/testing/test_support.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts index 617771031a..8e3d6d08b7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts @@ -90,17 +90,17 @@ export const customMatchers: jasmine.CustomMatcherFactories = { actualDiagnostic.file.fileName} to end with ${exp.fileName}. `; } } - if (exp.start && actualDiagnostic.start !== exp.start) { + if (exp.start !== undefined && actualDiagnostic.start !== exp.start) { regrets += expectation('start', exp.start, actualDiagnostic.start); } - if (exp.end && actualDiagnostic.end !== exp.end) { + if (exp.end !== undefined && actualDiagnostic.end !== exp.end) { regrets += expectation('end', exp.end, actualDiagnostic.end); } if (exp.matchedCode) { if (!actualDiagnostic.file) { regrets += `Expected diagnostic to have a source file, but it had ${ actualDiagnostic.file}. `; - } else if (!actualDiagnostic.start) { + } else if (actualDiagnostic.start === undefined) { // I don't know how this could happen, but typings say so. regrets += `Expected diagnostic to have a starting position. `; } else { From 7a413e2d2bf1c70ae25baba2bd3de6f9d2f49cad Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Fri, 31 May 2019 13:20:45 -0700 Subject: [PATCH 0601/1134] Opt-in to --incompatible_depset_is_not_iterable Closes #454 PiperOrigin-RevId: 250943883 --- .../bazelbuild/rules_typescript/.bazelrc | 6 ++ .../bazelbuild/rules_typescript/WORKSPACE | 12 ++-- .../rules_typescript/internal/BUILD.bazel | 1 + .../internal/tsc_wrapped/worker.ts | 2 +- .../bazelbuild/rules_typescript/package.bzl | 4 +- .../bazelbuild/rules_typescript/package.json | 6 +- .../bazelbuild/rules_typescript/yarn.lock | 60 +++++++++---------- 7 files changed, 47 insertions(+), 44 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/.bazelrc index adf60bc7fa..01852fef7e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelrc +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelrc @@ -7,3 +7,9 @@ test:debug --test_arg=--node_options=--inspect-brk --test_output=streamed --test # Turn off legacy external runfiles run --nolegacy_external_runfiles test --nolegacy_external_runfiles + +# Enable the "Managed Directories" feature +build --experimental_allow_incremental_repository_updates + +# Opt-in to upcoming breaking change +build --incompatible_depset_is_not_iterable diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 4fd6286f3b..00fe5027da 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -12,7 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "build_bazel_rules_typescript") +workspace( + name = "build_bazel_rules_typescript", + managed_directories = {"@npm": ["node_modules"]}, +) # Load our dependencies load("//:package.bzl", "rules_typescript_dev_dependencies") @@ -22,13 +25,6 @@ rules_typescript_dev_dependencies() # Setup nodejs toolchain load("@build_bazel_rules_nodejs//:defs.bzl", "yarn_install") -# Use a bazel-managed npm dependency, allowing us to test resolution to these paths -yarn_install( - name = "build_bazel_rules_typescript_internal_bazel_managed_deps", - package_json = "//examples/bazel_managed_deps:package.json", - yarn_lock = "//examples/bazel_managed_deps:yarn.lock", -) - # Download npm dependencies yarn_install( name = "npm", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 26dc0fba87..a66f109c67 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -86,6 +86,7 @@ nodejs_binary( "@npm//tsickle", "@npm//tsutils", "@npm//typescript", + "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", ], entry_point = "build_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js", visibility = ["//visibility:public"], diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts index 2f9828e7db..6362aa1552 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts @@ -89,7 +89,7 @@ function loadWorkerPb() { // This extra lookup should never happen in google3. It's only needed for // local development in the rules_typescript repo. protofile = require.resolve( - '../../third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto'); + 'build_bazel_rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto'); } const protoNamespace = protobufjs.loadSync(protofile); diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index 5e07daa516..3b13286c0d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -30,8 +30,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - sha256 = "73325a155c16bfbde29fb2ffcaf59d9d5a1c13b06ada386d3edd5a9d82bda702", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.29.1/rules_nodejs-0.29.1.tar.gz"], + sha256 = "bc180118b9e1c7f2b74dc76a8f798d706fe9fc53470ef9296728267b4cd29441", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.30.2/rules_nodejs-0.30.2.tar.gz"], ) # For protocol buffers diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 6699458909..5b85c2e0b9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,11 +3,11 @@ "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", "devDependencies": { - "@bazel/bazel": "0.25.1", + "@bazel/bazel": "^0.26.0", "@bazel/buildifier": "^0.20.0", "@bazel/ibazel": "^0.2.0", - "@bazel/jasmine": "^0.29.0", - "@bazel/typescript": "0.29.0", + "@bazel/jasmine": "^0.30.0", + "@bazel/typescript": "^0.30.0", "@types/jasmine": "^2.8.2", "@types/long": "^4.0.0", "@types/node": "7.0.18", diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index 68a5dbe362..789b5f2a02 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -2,29 +2,29 @@ # yarn lockfile v1 -"@bazel/bazel-darwin_x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@bazel/bazel-darwin_x64/-/bazel-darwin_x64-0.25.1.tgz#6526aba1cd912830595c3903ad29dfcb338114a3" - integrity sha512-VYPHaXZFlyl/1MOnUdByusox0RataI+dvQ37FiuuK9byFlcgCoIvhAx20nLK56tEhi/obXXaG2AO4w6rfOcgWg== - -"@bazel/bazel-linux_x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@bazel/bazel-linux_x64/-/bazel-linux_x64-0.25.1.tgz#7f0d098725f0bde4f0904b72b64ea2f22fdbf2bc" - integrity sha512-i+b6RSWn5qGZlrcct+lpWVHd3sen7UaBqQyi/0Rn+J72XCIbY2AFoi+j6SlCXb3EFltxJBCHKJHZqEtkP79bDQ== - -"@bazel/bazel-win32_x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@bazel/bazel-win32_x64/-/bazel-win32_x64-0.25.1.tgz#43bdec698fbb7babfd02470a1dcab384f01f9d6b" - integrity sha512-LM/rY8cxioCFe0m6WxdfvZ6pbD9eKzp69C1BhIkoESyp0IDLDvnLJ6uvs722e3hl8Zj1sIEIbiCwrYk33lPkTg== - -"@bazel/bazel@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@bazel/bazel/-/bazel-0.25.1.tgz#fc76ad9c07371e9ce0bf5bde6ff61cf8abbeaefd" - integrity sha512-HM2IsX9M4siW8b2AHZP4ixtT1NH9H74M0/DJfh0hr15NlivTapvkVQSfEfW57CCMfkuMcDjvfJQK+KzfuVyMgw== +"@bazel/bazel-darwin_x64@0.26.0": + version "0.26.0" + resolved "https://registry.yarnpkg.com/@bazel/bazel-darwin_x64/-/bazel-darwin_x64-0.26.0.tgz#24660853a01e286359636025618a1fda1aa978e1" + integrity sha512-9qcRlTW9g8TPJ1PWYIkNDUMsEjdhN4sJz5fDjva3GM7mnIST0sgJiRRW5Y9L3Ksv9+jNWmIOlj5wsibAUYyb5w== + +"@bazel/bazel-linux_x64@0.26.0": + version "0.26.0" + resolved "https://registry.yarnpkg.com/@bazel/bazel-linux_x64/-/bazel-linux_x64-0.26.0.tgz#9302b6df4363b5c492f2755174988935b84fb076" + integrity sha512-v9RTFIZb/A8Ej0Q1uCc/uTCRFZIRGqQpBVLO9Vqkbg4kScND9FxAI2RO0bv3Zhz7YTXBvJ8+kSfd/DY+0azwsA== + +"@bazel/bazel-win32_x64@0.26.0": + version "0.26.0" + resolved "https://registry.yarnpkg.com/@bazel/bazel-win32_x64/-/bazel-win32_x64-0.26.0.tgz#ae878cf2aae0ad9799141e554c47417f426c1aa7" + integrity sha512-hmhuWQUzTmVLDusSt701LFzkWoRdEsakDtEGKgIuQuAJ7zqwH8QUn3PpWIg5BA0qF0gxJBKMfTHGvNhMft3pmg== + +"@bazel/bazel@^0.26.0": + version "0.26.0" + resolved "https://registry.yarnpkg.com/@bazel/bazel/-/bazel-0.26.0.tgz#651513d5e11198f4c911024fdd57e76e0742fe9d" + integrity sha512-vxm3nuvYu97NRVkcRBfuLHqDytykCazZaTX13j+Ssqg0XIuuIiewTXGNKq2lcxeydJnscArMyYEv+gyXpexHDA== optionalDependencies: - "@bazel/bazel-darwin_x64" "0.25.1" - "@bazel/bazel-linux_x64" "0.25.1" - "@bazel/bazel-win32_x64" "0.25.1" + "@bazel/bazel-darwin_x64" "0.26.0" + "@bazel/bazel-linux_x64" "0.26.0" + "@bazel/bazel-win32_x64" "0.26.0" "@bazel/buildifier-darwin_x64@0.20.0": version "0.20.0" @@ -49,19 +49,19 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.2.0.tgz#c119aef4344a789cef5e792caaee52264123e71c" integrity sha1-wRmu9DRKeJzvXnksqu5SJkEj5xw= -"@bazel/jasmine@^0.29.0": - version "0.29.0" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-0.29.0.tgz#347d9c512daf8576dcdaa9bb168733fa444c2263" - integrity sha512-QH/mLAH4e7gcJrfOT0BmJ4wk+5Ly3RU+RPLaCyacnCjmJCICukZJa/rrjbVtwd8u7ZM+Hf6tRaLLydSeKXGBug== +"@bazel/jasmine@^0.30.0": + version "0.30.2" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-0.30.2.tgz#113325e2f30b9dbdf7cf8cd422a22f01259705cc" + integrity sha512-cDyrKrfsga8jRsr8iOE4xCMiJSr/iDyLDS8GeZZPB9nIjBAVrcgnPyflMhvtIERJCOX1WBZ0NKQOo659dZhmig== dependencies: jasmine "~3.3.1" jasmine-core "~3.3.0" v8-coverage "1.0.9" -"@bazel/typescript@0.29.0": - version "0.29.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.29.0.tgz#d276afe034f37b5f35ee1369c99dc33c637fc9f6" - integrity sha512-Dp5ucrE1vXTORGiwEi6Ur4dlICpLsmZ1dscsEQT4ywF7xTT0/NmIG0ecBghiCFPFQTxt1D05TR3SH06rPtTAew== +"@bazel/typescript@^0.30.0": + version "0.30.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.30.2.tgz#962eb122b80d3ef4805cf0520fc0a50d069ecb21" + integrity sha512-SIYHbg05Zyh7lrB8msnRjJ9hQSAHMOOWEV8seCKmCOx0noGP1Q00zXc4VRfi3uQCyCLZSFJvI4BXxnnKDwl61g== dependencies: protobufjs "6.8.8" semver "5.6.0" From 775f039c4ff7ddb0ee76d6b72047493ee45b0ce3 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Tue, 4 Jun 2019 14:14:43 -0700 Subject: [PATCH 0602/1134] Remove some overloads of "updateCache" to unblock TS 3.4. PiperOrigin-RevId: 251513165 --- .../rules_typescript/internal/tsc_wrapped/cache.ts | 12 ++---------- .../rules_typescript/internal/tsc_wrapped/worker.ts | 2 +- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/cache.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/cache.ts index 9b3b61b984..486bf4ee3f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/cache.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/cache.ts @@ -186,15 +186,7 @@ export class FileCache { * updateCache must be called before loading files - only files that were * updated (with a digest) previously can be loaded. */ - updateCache(digests: {[k: string]: string}): void; - updateCache(digests: Map): void; - updateCache(digests: Map|{[k: string]: string}) { - // TODO(martinprobst): drop the Object based version, it's just here for - // backwards compatibility. - if (!(digests instanceof Map)) { - digests = new Map(Object.keys(digests).map( - (k): [string, string] => [k, (digests as {[k: string]: string})[k]])); - } + updateCache(digests: Map): void { this.debug('updating digests:', digests); this.lastDigests = digests; this.cannotEvict = false; @@ -309,7 +301,7 @@ export class ProgramAndFileCache extends FileCache { } resetStats() { - super.resetStats() + super.resetStats(); this.programCache.resetStats(); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts index 6362aa1552..dc50055eb8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts @@ -72,7 +72,7 @@ declare namespace workerProto { */ function loadWorkerPb() { const protoPath = - '../worker_protocol.proto'; + '../../third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto'; // Use node module resolution so we can find the .proto file in any of the // root dirs From 9d0278bfeb1004a9f5b69a7e9c9ab449360547e4 Mon Sep 17 00:00:00 2001 From: rjamet Date: Fri, 7 Jun 2019 03:33:59 -0700 Subject: [PATCH 0603/1134] Add an in-config ConformanceRule whitelist. This whitelist is file-granular, based on the jscompiler Conformance configs. PiperOrigin-RevId: 252021771 --- .../internal/tsetse/failure.ts | 4 +- .../ban_conformance_pattern/whitelist_test.ts | 122 ++++++++++++++++++ .../internal/tsetse/util/pattern_config.ts | 53 ++++++++ .../util/pattern_engines/pattern_engine.ts | 73 ++++++++++- .../property_non_constant_write_engine.ts | 19 ++- .../pattern_engines/property_write_engine.ts | 31 +++-- .../tsetse/util/testing/test_support.ts | 45 ++++++- 7 files changed, 314 insertions(+), 33 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/whitelist_test.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts index 20126acfc7..7db67ef67b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts @@ -36,9 +36,9 @@ export class Failure { } toString(): string { - return `Failure{sourceFile:${ + return `{ sourceFile:${ this.sourceFile ? this.sourceFile.fileName : - 'unknown'}, start:${this.start}, end:${this.end}}`; + 'unknown'}, start:${this.start}, end:${this.end} }`; } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/whitelist_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/whitelist_test.ts new file mode 100644 index 0000000000..a1c7342c5a --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/whitelist_test.ts @@ -0,0 +1,122 @@ +import 'jasmine'; +import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; +import {WhitelistReason} from '../../util/pattern_config'; +import {compileAndCheck, customMatchers, getTempDirForWhitelist} from '../../util/testing/test_support'; + +const tmpPrefixForWhitelist = getTempDirForWhitelist(); +const tmpRegexpForWhitelist = + `^(?:${getTempDirForWhitelist().replace(/\\/g, '\\\\')})`; + + +describe('ConformancePatternRule', () => { + describe('whitelist handling', () => { + const source = `export {};\n` + + `const q = document.createElement('q');\n` + + `q.cite = 'some example string';\n`; + + // The initial config off which we run those checks. + const baseConfig = { + errorMessage: 'do not cite', + kind: PatternKind.BANNED_PROPERTY_WRITE, + values: ['HTMLQuoteElement.prototype.cite'], + }; + + it('matches if no whitelist (sanity check)', () => { + const config = {...baseConfig, whitelistEntries: []}; + const rule = new ConformancePatternRule(config); + const results = compileAndCheck(rule, source); + + expect(results).toHaveNFailures(1, config); + }); + + it('matches if there is an empty whitelist group', () => { + const config = { + ...baseConfig, + whitelistEntries: [{ + reason: WhitelistReason.UNSPECIFIED, + }] + }; + const rule = new ConformancePatternRule(config); + const results = compileAndCheck(rule, source); + + expect(results).toHaveNFailures(1, config); + }); + + it('respects prefix-based whitelists (matching test)', () => { + const config = { + ...baseConfig, + whitelistEntries: [{ + reason: WhitelistReason.UNSPECIFIED, + prefix: [tmpPrefixForWhitelist], + }] + }; + const rule = new ConformancePatternRule(config); + const results = compileAndCheck(rule, source); + + expect(results).toHaveNFailures(0, config); + }); + + it('respects prefix-based whitelists (non-matching test)', () => { + const config = { + ...baseConfig, + whitelistEntries: [{ + reason: WhitelistReason.UNSPECIFIED, + prefix: ['/nowhere in particular/'], + }] + }; + const rule = new ConformancePatternRule(config); + const results = compileAndCheck(rule, source); + + expect(results).toHaveNFailures(1, config); + }); + + it('respects regex-based whitelists', () => { + const config = { + ...baseConfig, + whitelistEntries: [{ + reason: WhitelistReason.UNSPECIFIED, + regexp: [`${tmpRegexpForWhitelist}.+/file_0\\.ts`] + }] + }; + const rule = new ConformancePatternRule(config); + const results = compileAndCheck(rule, source); + + expect(results).toHaveNFailures(0, config); + }); + + it('accepts several regex-based whitelists', () => { + const config = { + ...baseConfig, + whitelistEntries: [{ + reason: WhitelistReason.UNSPECIFIED, + regexp: [ + `${tmpRegexpForWhitelist}.+/file_0\\.ts`, + `${tmpRegexpForWhitelist}.+/file_1\\.ts` + ] + }] + }; + const rule = new ConformancePatternRule(config); + // Testing two times the same file so that both regexps match. + const results = compileAndCheck(rule, source, source); + + expect(results).toHaveNFailures(0, config); + }); + + it('throws on creation of invalid regexps', () => { + const config = { + ...baseConfig, + whitelistEntries: [{ + reason: WhitelistReason.UNSPECIFIED, + regexp: ['(', '/tmp/', 'foo'], + }] + }; + expect(() => { + new ConformancePatternRule(config); + }).toThrowError(/Invalid regular expression/); + }); + }); +}); + +beforeEach(() => { + jasmine.addMatchers(customMatchers); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index 76e2d713ab..c8c0927245 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -15,6 +15,7 @@ export enum PatternKind { */ export interface Config

{ kind: P; + /** * Values have a pattern-specific syntax. * @@ -22,8 +23,60 @@ export interface Config

{ * for examples. */ values: string[]; + /** The error message this pattern will create. */ errorMessage: string; + + /** A list of whitelist blocks. */ + whitelistEntries?: WhitelistEntry[]; +} + +/** + * A whitelist entry, corresponding to a logical whitelisting rule. Use these to + * distinguish between various logical reasons for whitelisting something: for + * instance, tie these to particular bugs that needed whitelisting, per legacy + * project, manually reviewed entries, and so on. + * + * Whitelists are based on the file paths provided by the TS compiler, with both + * regexp-based checks and prefix-based checks. + * + * + * Follows the logic in + * https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/conformance.proto. + */ +export interface WhitelistEntry { + /** The category corresponding to this entry. */ + reason: WhitelistReason; + /** Why is this okay to whitelist. */ + explanation?: string; + + /** + * Regexps for the paths of files that will be ignored by the + * ConformancePattern. Beware, escaping can be tricky. + */ + regexp?: string[]; + /** + * Prefixes for the paths of files that will be ignored by the + * ConformancePattern. + */ + prefix?: string[]; +} + +/** + * The categories of whitelist entries. + */ +export enum WhitelistReason { + /** No reason. */ + UNSPECIFIED, + /** Code that has to be grandfathered in (no guarantees). */ + LEGACY, + /** + * Code that does not enter the scope of this particular check (no + * guarantees). + */ + OUT_OF_SCOPE, + /** Manually reviewed exceptions (supposedly okay). */ + MANUALLY_REVIEWED } /** Maps the type of nodes that each `PatternType` produces. */ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts index 5dbbddc18e..6e014205d3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts @@ -1,14 +1,85 @@ +import * as ts from 'typescript'; import {Checker} from '../../checker'; +import {Fix} from '../../failure'; import {Fixer} from '../../util/fixer'; import {Config, MatchedNodeTypes, PatternKind} from '../../util/pattern_config'; +import {shouldExamineNode} from '../ast_tools'; /** * A patternEngine is the logic that handles a specific PatternKind. */ export abstract class PatternEngine

{ + private readonly whitelistedPrefixes: string[] = []; + private readonly whitelistedRegExps: RegExp[] = []; + private readonly whitelistMemoizer: Map = new Map(); + constructor( protected readonly config: Config

, - protected readonly fixer?: Fixer) {} + protected readonly fixer?: Fixer) { + if (config.whitelistEntries) { + for (const e of config.whitelistEntries) { + if (e.prefix) { + this.whitelistedPrefixes = + this.whitelistedPrefixes.concat(...e.prefix); + } + if (e.regexp) { + this.whitelistedRegExps = this.whitelistedRegExps.concat( + ...e.regexp.map(r => new RegExp(r))); + } + } + } + } + /** + * `register` will be called by the ConformanceRule to tell Tsetse the + * PatternEngine will handle matching. Implementations should use + *`checkAndFilterResults` as a wrapper for `check`. + **/ abstract register(checker: Checker): void; + + /** + * `check` is the PatternEngine subclass-specific matching logic. Overwrite + * with what the engine looks for, i.e., AST matching. The whitelisting logic + * and fix generation are handled in `checkAndFilterResults`. + */ + abstract check(tc: ts.TypeChecker, n: MatchedNodeTypes[P]): + MatchedNodeTypes[P]|undefined; + + /** + * A wrapper for `check` that handles aspects of the analysis that are not + * engine-specific, and which defers to the subclass-specific logic + * afterwards. + */ + checkAndFilterResults(c: Checker, n: MatchedNodeTypes[P]) { + if (!shouldExamineNode(n) || n.getSourceFile().isDeclarationFile) { + return; + } + const matchedNode = this.check(c.typeChecker, n); + if (matchedNode && !this.isWhitelisted(matchedNode)) { + const fix: Fix|undefined = + this.fixer ? this.fixer.getFixForFlaggedNode(matchedNode) : undefined; + c.addFailureAtNode(matchedNode, this.config.errorMessage, fix); + } + } + + isWhitelisted(n: ts.Node): boolean { + const name: string = n.getSourceFile().fileName; + if (this.whitelistMemoizer.has(name)) { + return this.whitelistMemoizer.get(name)!; + } + for (const p of this.whitelistedPrefixes) { + if (name.indexOf(p) == 0) { + this.whitelistMemoizer.set(name, true); + return true; + } + } + for (const re of this.whitelistedRegExps) { + if (re.test(name)) { + this.whitelistMemoizer.set(name, true); + return true; + } + } + this.whitelistMemoizer.set(name, false); + return false; + } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts index 9e26cd77e1..d9d3a97f3a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts @@ -1,8 +1,7 @@ import * as ts from 'typescript'; import {Checker} from '../../checker'; import {ErrorCode} from '../../error_code'; -import {Fix} from '../../failure'; -import {debugLog, isPropertyWriteExpression, shouldExamineNode} from '../ast_tools'; +import {debugLog, isPropertyWriteExpression} from '../ast_tools'; import {Fixer} from '../fixer'; import {isLiteral} from '../is_literal'; import {PropertyMatcher} from '../match_symbol'; @@ -32,27 +31,25 @@ export class PropertyNonConstantWriteEngine extends PatternEngine { register(checker: Checker) { checker.on( - ts.SyntaxKind.BinaryExpression, this.check.bind(this), + ts.SyntaxKind.BinaryExpression, this.checkAndFilterResults.bind(this), ErrorCode.CONFORMANCE_PATTERN); } - check(c: Checker, n: ts.BinaryExpression) { - if (!shouldExamineNode(n) || n.getSourceFile().isDeclarationFile || - !isPropertyWriteExpression(n)) { + check(tc: ts.TypeChecker, n: MatchedNodeTypes[BanKind]): + MatchedNodeTypes[BanKind]|undefined { + if (!isPropertyWriteExpression(n)) { return; } debugLog(`inspecting ${n.getFullText().trim()}`); - if (!this.matcher.matches(n.left, c.typeChecker)) { + if (!this.matcher.matches(n.left, tc)) { debugLog('Not an assignment to the right property'); return; } - if (isLiteral(c.typeChecker, n.right)) { + if (isLiteral(tc, n.right)) { debugLog(`Assigned value (${ n.right.getFullText()}) is a compile-time constant.`); return; } - const fix: Fix|undefined = - this.fixer ? this.fixer.getFixForFlaggedNode(n) : undefined; - c.addFailureAtNode(n, this.config.errorMessage, fix); + return n; } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts index ea90e60290..3b92f2d302 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts @@ -1,22 +1,22 @@ import * as ts from 'typescript'; import {Checker} from '../../checker'; import {ErrorCode} from '../../error_code'; -import {Fix} from '../../failure'; -import {debugLog, isPropertyWriteExpression, shouldExamineNode} from '../ast_tools'; +import {debugLog, isPropertyWriteExpression} from '../ast_tools'; import {Fixer} from '../fixer'; import {PropertyMatcher} from '../match_symbol'; import {Config, MatchedNodeTypes, PatternKind} from '../pattern_config'; import {PatternEngine} from '../pattern_engines/pattern_engine'; +// Just for conciseness. +type BanKind = PatternKind.BANNED_PROPERTY_WRITE; + /** * The engine for BANNED_PROPERTY_WRITE. */ -export class PropertyWriteEngine extends - PatternEngine { +export class PropertyWriteEngine extends PatternEngine { private readonly matcher: PropertyMatcher; constructor( - config: Config, - fixer?: Fixer) { + config: Config, fixer?: Fixer) { super(config, fixer); // TODO: Support more than one single value here, or even build a // multi-pattern engine. This would help for performance. @@ -29,22 +29,21 @@ export class PropertyWriteEngine extends register(checker: Checker) { checker.on( - ts.SyntaxKind.BinaryExpression, this.check.bind(this), + ts.SyntaxKind.BinaryExpression, this.checkAndFilterResults.bind(this), ErrorCode.CONFORMANCE_PATTERN); } - check(c: Checker, n: ts.BinaryExpression) { - if (!shouldExamineNode(n) || n.getSourceFile().isDeclarationFile || - !isPropertyWriteExpression(n)) { + check(tc: ts.TypeChecker, n: MatchedNodeTypes[BanKind]): + MatchedNodeTypes[BanKind]|undefined { + if (!isPropertyWriteExpression(n)) { return; } debugLog(`inspecting ${n.getText().trim()}`); - if (this.matcher.matches(n.left, c.typeChecker)) { - const fix: Fix|undefined = - this.fixer ? this.fixer.getFixForFlaggedNode(n) : undefined; - debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ - n.getEnd()}] on node [${n.getText()}]`); - c.addFailureAtNode(n, this.config.errorMessage, fix); + if (!this.matcher.matches(n.left, tc)) { + return; } + debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ + n.getEnd()}] on node [${n.getText()}]`); + return n; } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts index 8e3d6d08b7..7b93b7fa10 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts @@ -3,11 +3,13 @@ import 'jasmine'; import * as crypto from 'crypto'; import * as fs from 'fs'; import * as os from 'os'; +import * as path from 'path'; import * as ts from 'typescript'; import {Checker} from '../../checker'; import {Failure} from '../../failure'; import {AbstractRule} from '../../rule'; +import {Config} from '../pattern_config'; @@ -17,11 +19,11 @@ import {AbstractRule} from '../../rule'; * the `sourceCode` array. */ export function compile(...sourceCode: string[]): ts.Program { - const temporaryFolder = os.tmpdir() + - `/tslint_test_input_${crypto.randomBytes(16).toString('hex')}`; + const temporaryFolder = os.tmpdir() + path.sep + + `tslint_test_input_${crypto.randomBytes(16).toString('hex')}`; const fullPaths: string[] = []; sourceCode.forEach((s, i) => { - fullPaths.push(`${temporaryFolder}/file_${i}.ts`); + fullPaths.push(`${temporaryFolder}${path.sep}file_${i}.ts`); }); let error: Error|undefined = undefined; @@ -66,8 +68,43 @@ export function compileAndCheck( return check(rule, program); } +/** Turns a Failure to a fileName. */ +export function toFileName(f: Failure) { + const file = f.toDiagnostic().file; + return file ? file.fileName : 'unknown'; +} + +export function getTempDirForWhitelist() { + // TS uses forward slashes on Windows ¯\_(ツ)_/¯ + return os.platform() == 'win32' ? os.tmpdir().replace(/\\/g, '/') : + os.tmpdir(); +} + // Custom matcher for Jasmine, for a better experience matching fixes. export const customMatchers: jasmine.CustomMatcherFactories = { + + toHaveNFailures(): jasmine.CustomMatcher { + return { + compare: (actual: Failure[], expected: Number, config?: Config) => { + if (actual.length === expected) { + return {pass: true}; + } else { + let message = + `Expected ${expected} Failures, but found ${actual.length}.`; + if (actual.length) { + message += '\n' + actual.map(f => f.toString()).join('\n'); + } + if (config) { + message += `\nConfig: {kind:${config.kind}, values:${ + JSON.stringify(config.values)}, whitelist:${ + JSON.stringify(config.whitelistEntries)} }`; + } + return {pass: false, message}; + } + } + }; + }, + toBeFailureMatching(): jasmine.CustomMatcher { return { compare: (actualFailure: Failure, exp: { @@ -135,6 +172,8 @@ declare global { end?: number, matchedCode?: string, }): void; + + toHaveNFailures(expected: Number, config?: Config): void; } } } From f49e75ce8ec3eaa5225d097bcc19737906c2467a Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Fri, 7 Jun 2019 10:50:13 -0700 Subject: [PATCH 0604/1134] Update to nodejs rules 0.31.1 nodejs_binary entry_point is now a label Closes #453 PiperOrigin-RevId: 252078645 --- .../bazelbuild/rules_typescript/.bazelrc | 2 +- .../rules_typescript/internal/BUILD.bazel | 4 ++-- .../bazelbuild/rules_typescript/package.bzl | 4 ++-- .../bazelbuild/rules_typescript/package.json | 4 ++-- .../bazelbuild/rules_typescript/yarn.lock | 16 ++++++++-------- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/.bazelrc index 01852fef7e..6005eaac95 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelrc +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelrc @@ -9,7 +9,7 @@ run --nolegacy_external_runfiles test --nolegacy_external_runfiles # Enable the "Managed Directories" feature -build --experimental_allow_incremental_repository_updates +common --experimental_allow_incremental_repository_updates # Opt-in to upcoming breaking change build --incompatible_depset_is_not_iterable diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index a66f109c67..973561dda7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -36,7 +36,7 @@ nodejs_binary( "@npm//source-map-support", "@npm//typescript", ], - entry_point = "typescript/lib/tsc.js", + entry_point = "@npm//node_modules/typescript:lib/tsc.js", visibility = ["//internal:__subpackages__"], ) @@ -88,7 +88,7 @@ nodejs_binary( "@npm//typescript", "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", ], - entry_point = "build_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js", + entry_point = ":tsc_wrapped/tsc_wrapped.ts", visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index 3b13286c0d..f31ab0c871 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -30,8 +30,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - sha256 = "bc180118b9e1c7f2b74dc76a8f798d706fe9fc53470ef9296728267b4cd29441", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.30.2/rules_nodejs-0.30.2.tar.gz"], + sha256 = "e04a82a72146bfbca2d0575947daa60fda1878c8d3a3afe868a8ec39a6b968bb", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.31.1/rules_nodejs-0.31.1.tar.gz"], ) # For protocol buffers diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 5b85c2e0b9..c176455756 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -6,8 +6,8 @@ "@bazel/bazel": "^0.26.0", "@bazel/buildifier": "^0.20.0", "@bazel/ibazel": "^0.2.0", - "@bazel/jasmine": "^0.30.0", - "@bazel/typescript": "^0.30.0", + "@bazel/jasmine": "^0.31.1", + "@bazel/typescript": "^0.31.1", "@types/jasmine": "^2.8.2", "@types/long": "^4.0.0", "@types/node": "7.0.18", diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index 789b5f2a02..b98709265c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -49,19 +49,19 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.2.0.tgz#c119aef4344a789cef5e792caaee52264123e71c" integrity sha1-wRmu9DRKeJzvXnksqu5SJkEj5xw= -"@bazel/jasmine@^0.30.0": - version "0.30.2" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-0.30.2.tgz#113325e2f30b9dbdf7cf8cd422a22f01259705cc" - integrity sha512-cDyrKrfsga8jRsr8iOE4xCMiJSr/iDyLDS8GeZZPB9nIjBAVrcgnPyflMhvtIERJCOX1WBZ0NKQOo659dZhmig== +"@bazel/jasmine@^0.31.1": + version "0.31.1" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-0.31.1.tgz#da3de10760fe1e29e9fc748fabc4fcf604f4356a" + integrity sha512-heKo8qzm6DTm8eOlfL69RJJi1GLI9vJDSmBGYgol18K7oXz6JrspGWUL9/TlCYbRUUCt22kqX7f3R+QlD0KrCg== dependencies: jasmine "~3.3.1" jasmine-core "~3.3.0" v8-coverage "1.0.9" -"@bazel/typescript@^0.30.0": - version "0.30.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.30.2.tgz#962eb122b80d3ef4805cf0520fc0a50d069ecb21" - integrity sha512-SIYHbg05Zyh7lrB8msnRjJ9hQSAHMOOWEV8seCKmCOx0noGP1Q00zXc4VRfi3uQCyCLZSFJvI4BXxnnKDwl61g== +"@bazel/typescript@^0.31.1": + version "0.31.1" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.31.1.tgz#2ccf9997d97903c51e73f82e29433fe444b8d672" + integrity sha512-jUTJjwdc4JSDMt4kIj74gGtctu8xe0YZPJuPxOIS4TdrWcn+dG9Fy7Z8bJLXhePheig1JLY7NBP6BGwrtggzPQ== dependencies: protobufjs "6.8.8" semver "5.6.0" From 758de263246f3ea557ac0948bc0083d1f983dd9b Mon Sep 17 00:00:00 2001 From: rjamet Date: Tue, 11 Jun 2019 03:56:36 -0700 Subject: [PATCH 0605/1134] Test the suggested fix generation. PiperOrigin-RevId: 252588645 --- .../internal/tsetse/failure.ts | 21 +++- .../ban_conformance_pattern/fixer_test.ts | 96 +++++++++++++++++++ .../internal/tsetse/util/fixer.ts | 8 +- .../tsetse/util/testing/test_support.ts | 63 +++++++++++- 4 files changed, 179 insertions(+), 9 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts index 7db67ef67b..61680acfde 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts @@ -37,8 +37,8 @@ export class Failure { toString(): string { return `{ sourceFile:${ - this.sourceFile ? this.sourceFile.fileName : - 'unknown'}, start:${this.start}, end:${this.end} }`; + this.sourceFile ? this.sourceFile.fileName : 'unknown'}, start:${ + this.start}, end:${this.end}, fix:${fixToString(this.suggestedFix)} }`; } } @@ -51,6 +51,23 @@ export interface Fix { */ changes: IndividualChange[], } + export interface IndividualChange { sourceFile: ts.SourceFile, start: number, end: number, replacement: string } + +/** + * Stringifies a Fix, replacing the ts.SourceFile with the matching filename. + */ +export function fixToString(f?: Fix) { + if (!f) return 'undefined'; + return '{' + JSON.stringify(f.changes.map(ic => { + return { + start: ic.start, + end: ic.end, + replacement: ic.replacement, + fileName: ic.sourceFile.fileName + }; + })) + + '}' +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts new file mode 100644 index 0000000000..1bf13dd82d --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts @@ -0,0 +1,96 @@ +import 'jasmine'; +import * as ts from 'typescript'; +import {Fix} from '../../failure'; +import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; +import {buildReplacementFixer, Fixer} from '../../util/fixer'; +import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; + +const uppercaseFixer: Fixer = { + getFixForFlaggedNode(node: ts.Node): Fix { + return { + changes: [{ + start: node.getStart(), + end: node.getEnd(), + replacement: node.getText().toUpperCase(), + sourceFile: node.getSourceFile(), + }] + }; + } +}; + +const uppercaseFixerBuilt: Fixer = buildReplacementFixer((node: ts.Node) => { + return {replaceWith: node.getText().toUpperCase()}; +}) + +describe('ConformancePatternRule\'s fixer', () => { + describe('Generates basic fixes', () => { + const source = `export {};\n` + + `const q = document.createElement('q');\n` + + `q.cite = 'some example string';\n`; + + // The initial config off which we run those checks. + const baseConfig = { + errorMessage: 'found citation', + kind: PatternKind.BANNED_PROPERTY_WRITE, + values: ['HTMLQuoteElement.prototype.cite'], + }; + + it('for a single match', () => { + const rule = new ConformancePatternRule(baseConfig, uppercaseFixer); + const results = compileAndCheck(rule, source); + + expect(results).toHaveNFailures(1, baseConfig); + expect(results[0]).toBeFailureMatching({ + matchedCode: `q.cite = 'some example string'`, + errorMessage: 'found citationz' + }); + expect(results[0]).toHaveFixMatching([ + {start: 50, end: 80, replacement: `Q.CITE = 'SOME EXAMPLE STRING'`} + ]); + }); + + + it('for a single match (alternate fixer)', () => { + const rule = new ConformancePatternRule(baseConfig, uppercaseFixerBuilt); + const results = compileAndCheck(rule, source); + + expect(results).toHaveNFailures(1, baseConfig); + expect(results[0]).toBeFailureMatching({ + matchedCode: `q.cite = 'some example string'`, + errorMessage: 'found citationz' + }); + expect(results[0]).toHaveFixMatching([ + {start: 50, end: 80, replacement: `Q.CITE = 'SOME EXAMPLE STRING'`} + ]); + }); + + it('for several matches', () => { + const rule = new ConformancePatternRule(baseConfig, uppercaseFixer); + const sourceTwoMatches = + source + `q.cite = 'some other example string';\n`; + const results = compileAndCheck(rule, sourceTwoMatches); + + expect(results).toHaveNFailures(2, baseConfig); + expect(results[0]).toBeFailureMatching({ + matchedCode: `q.cite = 'some example string'`, + errorMessage: 'found citationz' + }); + expect(results[1]).toBeFailureMatching({ + matchedCode: `q.cite = 'some other example string'`, + errorMessage: 'found citationz' + }); + expect(results[0]).toHaveFixMatching([ + {start: 50, end: 80, replacement: `Q.CITE = 'SOME EXAMPLE STRING'`} + ]); + expect(results[1]).toHaveFixMatching([{ + start: 82, + end: 118, + replacement: `Q.CITE = 'SOME OTHER EXAMPLE STRING'` + }]); + }); + }); +}); + +beforeEach(() => { + jasmine.addMatchers(customMatchers); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts index f9b784e1d9..77fa9f84f6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts @@ -9,7 +9,7 @@ import {debugLog} from './ast_tools'; * of implementing a Fixer. */ export interface Fixer { - getFixForFlaggedNode(node: NodeType, v?: boolean): Fix|undefined; + getFixForFlaggedNode(node: NodeType): Fix|undefined; } /** @@ -18,11 +18,11 @@ export interface Fixer { * Fixer instead. */ export function buildReplacementFixer( - potentialReplacementGenerator: (node: ts.Node, v?: boolean) => + potentialReplacementGenerator: (node: ts.Node) => ({replaceWith: string} | undefined)): Fixer { return { - getFixForFlaggedNode: (n: ts.Node, v?: boolean): Fix | undefined => { - const partialFix = potentialReplacementGenerator(n, v); + getFixForFlaggedNode: (n: ts.Node): Fix | undefined => { + const partialFix = potentialReplacementGenerator(n); if (!partialFix) { return; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts index 7b93b7fa10..b6ca582a0f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts @@ -7,7 +7,7 @@ import * as path from 'path'; import * as ts from 'typescript'; import {Checker} from '../../checker'; -import {Failure} from '../../failure'; +import {Failure, fixToString} from '../../failure'; import {AbstractRule} from '../../rule'; import {Config} from '../pattern_config'; @@ -111,7 +111,7 @@ export const customMatchers: jasmine.CustomMatcherFactories = { fileName?: string, start?: number, end?: number, - matchedCode?: string + matchedCode?: string, }) => { const actualDiagnostic = actualFailure.toDiagnostic(); let regrets = ''; @@ -151,6 +151,59 @@ export const customMatchers: jasmine.CustomMatcherFactories = { } } } + return {pass: regrets === '', message: regrets}; + } + }; + }, + + /** Checks that a Failure has the expected Fix field. */ + toHaveFixMatching(): jasmine.CustomMatcher { + return { + compare: (actualFailure: Failure, exp: [{ + fileName?: string, + start?: number, + end?: number, + replacement?: string + }]) => { + let regrets = ''; + const actualFix = actualFailure.toDiagnostic().fix; + if (!actualFix) { + regrets += `Expected ${actualFailure.toString()} to have fix ${ + JSON.stringify(exp)}. `; + } else if (actualFix.changes.length != exp.length) { + regrets += `Expected ${exp.length} individual changes, got ${ + actualFix.changes.length}. `; + if (actualFix.changes.length) { + regrets += '\n' + fixToString(actualFix); + } + } else { + for (let i = 0; i < exp.length; i++) { + const e = exp[i]; + const a = actualFix.changes[i]; + if (e.start !== undefined && e.start !== a.start) { + regrets += expectation( + `${i}th individualChange's start`, e.start, a.start); + } + if (e.end !== undefined && e.end !== a.end) { + regrets += + expectation(`${i}th individualChange's end`, e.end, a.end); + } + if (e.replacement !== undefined && + e.replacement !== a.replacement) { + regrets += expectation( + `${i}th individualChange's replacement`, e.replacement, + a.replacement); + } + if (e.fileName !== undefined && + e.fileName !== a.sourceFile.fileName) { + regrets += expectation( + `${i}th individualChange's fileName`, e.fileName, + a.sourceFile.fileName); + } + // TODO: Consider adding matchedCode as for the failure matcher. + } + } + return {pass: regrets === '', message: regrets}; } }; @@ -170,9 +223,13 @@ declare global { fileName?: string, start?: number, end?: number, - matchedCode?: string, + matchedCode?: string }): void; + toHaveFixMatching(expected: [ + {fileName?: string, start?: number, end?: number, replacement?: string} + ]): void; + toHaveNFailures(expected: Number, config?: Config): void; } } From bab3f1ce8154910bc396da45a1655d188d547496 Mon Sep 17 00:00:00 2001 From: rjamet Date: Tue, 11 Jun 2019 06:58:19 -0700 Subject: [PATCH 0606/1134] Add a BANNED_NAME engine to Tsetse's ConformancePatternRule. PiperOrigin-RevId: 252610371 --- .../tsetse/rules/conformance_pattern_rule.ts | 5 +++ .../ban_conformance_pattern/name_test.ts | 45 +++++++++++++++++++ .../internal/tsetse/util/match_symbol.ts | 4 ++ .../internal/tsetse/util/pattern_config.ts | 2 + .../util/pattern_engines/name_engine.ts | 43 ++++++++++++++++++ 5 files changed, 99 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts index b683355d17..add5286ec5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts @@ -3,6 +3,7 @@ import {ErrorCode} from '../error_code'; import {AbstractRule} from '../rule'; import {Fixer} from '../util/fixer'; import {Config, MatchedNodeTypes, PatternKind} from '../util/pattern_config'; +import {NameEngine} from '../util/pattern_engines/name_engine'; import {PatternEngine} from '../util/pattern_engines/pattern_engine'; import {PropertyNonConstantWriteEngine} from '../util/pattern_engines/property_non_constant_write_engine'; import {PropertyWriteEngine} from '../util/pattern_engines/property_write_engine'; @@ -36,6 +37,10 @@ export class ConformancePatternRule

implements config as Config, fixer); break; + case PatternKind.BANNED_NAME: + engine = + new NameEngine(config as Config, fixer); + break; default: throw new Error('Config type not recognized, or not implemented yet.'); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts new file mode 100644 index 0000000000..3165d38072 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts @@ -0,0 +1,45 @@ +import 'jasmine'; +import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; +import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; + +describe('BANNED_NAME', () => { + it('matches simple example of globals', () => { + const rule = new ConformancePatternRule({ + errorMessage: 'no Infinity', + kind: PatternKind.BANNED_NAME, + values: ['Infinity'] + }); + const source = [ + `Infinity; 1+1;`, + ].join('\n'); + const results = compileAndCheck(rule, source); + + expect(results.length).toBe(1); + expect(results[0]).toBeFailureMatching({ + matchedCode: `Infinity`, + errorMessage: 'no Infinity' + }); + }); + + it('matches namespaced globals', () => { + const rule = new ConformancePatternRule({ + errorMessage: 'no blob url', + kind: PatternKind.BANNED_NAME, + values: ['URL.createObjectURL'] + }); + const source = [ + `URL.createObjectURL({});`, + ].join('\n'); + const results = compileAndCheck(rule, source); + + expect(results.length).toBe(1); + expect(results[0]).toBeFailureMatching({ + matchedCode: `createObjectURL`, + errorMessage: 'no blob url' + }); + }); +}); + +beforeEach(() => { + jasmine.addMatchers(customMatchers); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts index 5df53b1009..c60195b205 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts @@ -11,6 +11,10 @@ const ABSOLUTE_RE = new RegExp(`^${FQN_FORMAT}$`); /** * This class matches symbols given a "foo.bar.baz" name, where none of the * steps are instances of classes. + * + * Note that this isn't smart about subclasses and types: to write a check, we + * strongly suggest finding the expected symbol in externs to find the object + * name on which the symbol was initially defined. */ export class AbsoluteMatcher { /** diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index c8c0927245..9ec75f7803 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -6,6 +6,7 @@ import * as ts from 'typescript'; * https://github.com/google/closure-compiler/wiki/JS-Conformance-Framework) */ export enum PatternKind { + BANNED_NAME = 'banned-name', BANNED_PROPERTY_WRITE = 'banned-property-write', BANNED_PROPERTY_NON_CONSTANT_WRITE = 'banned-property-non-constant-write' } @@ -87,4 +88,5 @@ export interface MatchedNodeTypes { [PatternKind.BANNED_PROPERTY_NON_CONSTANT_WRITE]: ts.BinaryExpression&{ left: ts.PropertyAccessExpression; }; + [PatternKind.BANNED_NAME]: ts.Identifier; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts new file mode 100644 index 0000000000..332c6c6edf --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts @@ -0,0 +1,43 @@ +import * as ts from 'typescript'; +import {Checker} from '../../checker'; +import {ErrorCode} from '../../error_code'; +import {debugLog, shouldExamineNode} from '../ast_tools'; +import {Fixer} from '../fixer'; +import {AbsoluteMatcher} from '../match_symbol'; +import {Config, MatchedNodeTypes, PatternKind} from '../pattern_config'; +import {PatternEngine} from './pattern_engine'; + +export class NameEngine extends PatternEngine { + private readonly matcher: AbsoluteMatcher; + constructor( + config: Config, + fixer?: Fixer) { + super(config, fixer); + // TODO: Support more than one single value here, or even build a + // multi-pattern engine. This would help for performance. + if (this.config.values.length !== 1) { + throw new Error(`BANNED_NAME expects one value, got(${ + this.config.values.join(',')})`); + } + this.matcher = new AbsoluteMatcher(this.config.values[0]); + } + + register(checker: Checker) { + checker.on( + ts.SyntaxKind.Identifier, this.checkAndFilterResults.bind(this), + ErrorCode.CONFORMANCE_PATTERN); + } + + check(tc: ts.TypeChecker, n: MatchedNodeTypes[PatternKind.BANNED_NAME]): + MatchedNodeTypes[PatternKind.BANNED_NAME]|undefined { + if (!shouldExamineNode(n) || n.getSourceFile().isDeclarationFile) { + return; + } + debugLog(`inspecting ${n.getText().trim()}`); + if (!this.matcher.matches(n, tc)) { + debugLog('Not the right global name.'); + return; + } + return n; + } +} From 6d7fb9336254e22c46a354190155262cc8ea822e Mon Sep 17 00:00:00 2001 From: rjamet Date: Thu, 13 Jun 2019 10:30:59 -0700 Subject: [PATCH 0607/1134] Fix a bug where the failure matcher didn't look at error messages. PiperOrigin-RevId: 253057737 --- .../tests/ban_conformance_pattern/fixer_test.ts | 8 ++++---- .../tests/ban_conformance_pattern/name_test.ts | 4 ++-- .../property_non_constant_write_test.ts | 2 +- .../ban_conformance_pattern/property_write_test.ts | 14 +++++++------- .../internal/tsetse/util/testing/test_support.ts | 10 ++++++++-- 5 files changed, 22 insertions(+), 16 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts index 1bf13dd82d..3b7c85ff1d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts @@ -42,7 +42,7 @@ describe('ConformancePatternRule\'s fixer', () => { expect(results).toHaveNFailures(1, baseConfig); expect(results[0]).toBeFailureMatching({ matchedCode: `q.cite = 'some example string'`, - errorMessage: 'found citationz' + messageText: 'found citation' }); expect(results[0]).toHaveFixMatching([ {start: 50, end: 80, replacement: `Q.CITE = 'SOME EXAMPLE STRING'`} @@ -57,7 +57,7 @@ describe('ConformancePatternRule\'s fixer', () => { expect(results).toHaveNFailures(1, baseConfig); expect(results[0]).toBeFailureMatching({ matchedCode: `q.cite = 'some example string'`, - errorMessage: 'found citationz' + messageText: 'found citation' }); expect(results[0]).toHaveFixMatching([ {start: 50, end: 80, replacement: `Q.CITE = 'SOME EXAMPLE STRING'`} @@ -73,11 +73,11 @@ describe('ConformancePatternRule\'s fixer', () => { expect(results).toHaveNFailures(2, baseConfig); expect(results[0]).toBeFailureMatching({ matchedCode: `q.cite = 'some example string'`, - errorMessage: 'found citationz' + messageText: 'found citation' }); expect(results[1]).toBeFailureMatching({ matchedCode: `q.cite = 'some other example string'`, - errorMessage: 'found citationz' + messageText: 'found citation' }); expect(results[0]).toHaveFixMatching([ {start: 50, end: 80, replacement: `Q.CITE = 'SOME EXAMPLE STRING'`} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts index 3165d38072..6bb06ecc90 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts @@ -17,7 +17,7 @@ describe('BANNED_NAME', () => { expect(results.length).toBe(1); expect(results[0]).toBeFailureMatching({ matchedCode: `Infinity`, - errorMessage: 'no Infinity' + messageText: 'no Infinity' }); }); @@ -35,7 +35,7 @@ describe('BANNED_NAME', () => { expect(results.length).toBe(1); expect(results[0]).toBeFailureMatching({ matchedCode: `createObjectURL`, - errorMessage: 'no blob url' + messageText: 'no blob url' }); }); }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts index 8b5179621d..b545571a11 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts @@ -17,7 +17,7 @@ describe('BANNED_PROPERTY_NON_CONSTANT_WRITE', () => { expect(results.length).toBe(1); expect(results[0]) .toBeFailureMatching( - {start: 71, end: 91, errorMessage: 'do not cite dynamically'}); + {start: 71, end: 91, messageText: 'do not cite dynamically'}); }); }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts index 42290f2b56..e0f32540dc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts @@ -19,7 +19,7 @@ describe('BANNED_PROPERTY_WRITE', () => { expect(results.length).toBe(1); expect(results[0]).toBeFailureMatching({ matchedCode: `q.cite = 'some example string'`, - errorMessage: 'do not cite' + messageText: 'do not cite' }); }); @@ -35,15 +35,15 @@ describe('BANNED_PROPERTY_WRITE', () => { expect(results.length).toBe(3); expect(results[0]).toBeFailureMatching({ matchedCode: `q.cite = 'exampleA'`, - errorMessage: 'do not cite' + messageText: 'do not cite' }); expect(results[1]).toBeFailureMatching({ matchedCode: `q.cite = 'exampleB'`, - errorMessage: 'do not cite' + messageText: 'do not cite' }); expect(results[2]).toBeFailureMatching({ matchedCode: `q.cite = /* test2 */ 'exampleC'`, - errorMessage: 'do not cite' + messageText: 'do not cite' }); }) @@ -58,7 +58,7 @@ describe('BANNED_PROPERTY_WRITE', () => { expect(results.length).toBe(1); expect(results[0]).toBeFailureMatching({ matchedCode: `q.cite = 'some example string'`, - errorMessage: 'do not cite' + messageText: 'do not cite' }); }); @@ -73,7 +73,7 @@ describe('BANNED_PROPERTY_WRITE', () => { expect(results[0]).toBeFailureMatching({ matchedCode: 'q.cite = window.name', fileName: 'file_1.ts', - errorMessage: 'do not cite', + messageText: 'do not cite', }); }); @@ -90,7 +90,7 @@ describe('BANNED_PROPERTY_WRITE', () => { // and `c` is both a Parent and a Child. const expectedFailure = { matchedCode: 'c.x = 1', - errorMessage: 'found write to x', + messageText: 'found write to x', }; it('banning Parent.x matches (instance of Child).x', () => { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts index b6ca582a0f..febf37a2fc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts @@ -112,6 +112,7 @@ export const customMatchers: jasmine.CustomMatcherFactories = { start?: number, end?: number, matchedCode?: string, + messageText?: string, }) => { const actualDiagnostic = actualFailure.toDiagnostic(); let regrets = ''; @@ -127,6 +128,11 @@ export const customMatchers: jasmine.CustomMatcherFactories = { actualDiagnostic.file.fileName} to end with ${exp.fileName}. `; } } + if (exp.messageText !== undefined && + exp.messageText != actualDiagnostic.messageText) { + regrets += expectation( + 'errorMessage', exp.messageText, actualDiagnostic.messageText); + } if (exp.start !== undefined && actualDiagnostic.start !== exp.start) { regrets += expectation('start', exp.start, actualDiagnostic.start); } @@ -219,11 +225,11 @@ declare global { namespace jasmine { interface Matchers { toBeFailureMatching(expected: { - [i: string]: any, // the rest fileName?: string, start?: number, end?: number, - matchedCode?: string + matchedCode?: string, + messageText?: string, }): void; toHaveFixMatching(expected: [ From b214b2b8067d717564d6bb40f413c4345eca21db Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Fri, 14 Jun 2019 09:40:48 -0700 Subject: [PATCH 0608/1134] Remove types[node] from compilation of tsc_wrapped This is needed for compatibility with new ts_library rule impl which includes typings found in deps[] as files in the program Closes #456 PiperOrigin-RevId: 253243590 --- .../internal/tsc_wrapped/tsconfig.json | 8 ++++- .../bazelbuild/rules_typescript/package.bzl | 4 +++ .../rules_typescript/rules_nodejs_pr756.patch | 30 +++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/rules_nodejs_pr756.patch diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json index d3f2772dcb..830ed1862c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json @@ -2,7 +2,13 @@ "compilerOptions": { "strict": true, "types": [ - "node", + // Normally "node" should be listed here since we depend on it. + // However this library is built with vanilla tsc. + // Since the deps[] are passed into the ts.Program as files + // (starting with https://github.com/bazelbuild/rules_nodejs/pull/756) + // we cannot also list node as a types[] since vanilla tsc will load + // both into the program and get a conflict. + // Under tsc_wrapped this isn't a problem since we control the resolution. ], "lib": [ "dom", diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index f31ab0c871..e75064b523 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -30,6 +30,10 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", + # This file just copy-pasted from output of `git diff` + patches = ["//:rules_nodejs_pr756.patch"], + # According to docs, this is needed for patches generated by git + patch_args = ["-p1"], sha256 = "e04a82a72146bfbca2d0575947daa60fda1878c8d3a3afe868a8ec39a6b968bb", urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.31.1/rules_nodejs-0.31.1.tar.gz"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/rules_nodejs_pr756.patch b/third_party/github.com/bazelbuild/rules_typescript/rules_nodejs_pr756.patch new file mode 100644 index 0000000000..9db35b3d40 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/rules_nodejs_pr756.patch @@ -0,0 +1,30 @@ +--- a/internal/npm_install/node_module_library.bzl ++++ b/internal/npm_install/node_module_library.bzl +@@ -29,14 +29,20 @@ def _node_module_library_impl(ctx): + # use in rules such as ts_devserver + scripts = depset(ctx.files.scripts) + +- # declarations are a subset of sources that are decleration files +- declarations = depset([f for f in ctx.files.srcs if f.path.endswith(".d.ts")]) ++ # declarations are a subset of sources that are declaration files ++ ++ declarations = depset([ ++ f ++ for f in ctx.files.srcs ++ if f.path.endswith(".d.ts") and ++ # exclude eg. external/npm/node_modules/protobufjs/node_modules/@types/node/index.d.ts ++ # these would be duplicates of the typings provided directly in another dependency ++ len(f.path.split("/node_modules/")) < 3 ++ ]) ++ ++ # transitive_declarations are all .d.ts files in srcs plus those in direct & transitive dependencies ++ transitive_declarations = depset(transitive = [declarations]) + +- # transitive_declarations are all direct & transitive decleration files +- transitive_declarations = depset() +- for src in ctx.attr.srcs: +- if hasattr(src, "typescript"): +- transitive_declarations = depset(transitive = [transitive_declarations, src.typescript.transitive_declarations]) + for dep in ctx.attr.deps: + if hasattr(dep, "typescript"): + transitive_declarations = depset(transitive = [transitive_declarations, dep.typescript.transitive_declarations]) From fe64a1ffaeae36fff5de51a199ed1e2c897a7f10 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Mon, 17 Jun 2019 09:47:39 -0700 Subject: [PATCH 0609/1134] Fix bug where .d.ts are not added to tsconfig when them come from coarse grained `node_modules = @npm//:node_modules` style deps Closes #457 PiperOrigin-RevId: 253599639 --- .../rules_typescript/internal/common/compilation.bzl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 9cc2b88bc6..d173ce70c8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -123,6 +123,10 @@ def _collect_dep_declarations(ctx, deps): for dep in deps_and_helpers ] + # all reachable .d.ts files from node_modules attribute (if it has a typescript provider) + if hasattr(ctx.attr, "node_modules") and hasattr(ctx.attr.node_modules, "typescript"): + transitive_deps_declarations += [ctx.attr.node_modules.typescript.transitive_declarations] + # .d.ts files whose types tsickle will not emit (used for ts_declaration(generate_externs=False). type_blacklisted_declarations = [ dep.typescript.type_blacklisted_declarations From 1798a3d371b24f3999c9da9b8b494c3afc58e109 Mon Sep 17 00:00:00 2001 From: rjamet Date: Wed, 19 Jun 2019 06:49:52 -0700 Subject: [PATCH 0610/1134] Be more explicit about types in the conformancePatternRule. This caused typing issues in TypeScript 3.5, due to increased scrutiny in unsound writes to indexed access types. PiperOrigin-RevId: 253987179 --- .../tsetse/rules/conformance_pattern_rule.ts | 15 ++++++++++----- .../internal/tsetse/util/pattern_config.ts | 10 +++------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts index add5286ec5..707fffccee 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts @@ -15,7 +15,7 @@ import {PropertyWriteEngine} from '../util/pattern_engines/property_write_engine * This is templated, mostly to ensure the nodes that have been matched * correspond to what the Fixer expects. */ -export class ConformancePatternRule

implements +export class ConformancePatternRule

implements AbstractRule { readonly ruleName: string; readonly code = ErrorCode.CONFORMANCE_PATTERN; @@ -27,23 +27,28 @@ export class ConformancePatternRule

implements // that P is Config.kind. // tslint:disable-next-line:no-any See above. let engine: PatternEngine; + // Formatter breaks the types, b/135552145 + // clang-format off switch (config.kind) { case PatternKind.BANNED_PROPERTY_WRITE: engine = new PropertyWriteEngine( - config as Config, fixer); + config as Config, + fixer as Fixer); break; case PatternKind.BANNED_PROPERTY_NON_CONSTANT_WRITE: engine = new PropertyNonConstantWriteEngine( config as Config, - fixer); + fixer as Fixer); break; case PatternKind.BANNED_NAME: - engine = - new NameEngine(config as Config, fixer); + engine = new NameEngine( + config as Config, + fixer as Fixer); break; default: throw new Error('Config type not recognized, or not implemented yet.'); } + // clang-format on this.ruleName = `conformance-pattern-${config.kind}`; this.engine = engine as PatternEngine

; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index 9ec75f7803..e4dcc0de22 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -80,13 +80,9 @@ export enum WhitelistReason { MANUALLY_REVIEWED } -/** Maps the type of nodes that each `PatternType` produces. */ +/** Maps the type of nodes that each `PatternType` consumes. */ export interface MatchedNodeTypes { - [PatternKind.BANNED_PROPERTY_WRITE]: ts.BinaryExpression&{ - left: ts.PropertyAccessExpression; - }; - [PatternKind.BANNED_PROPERTY_NON_CONSTANT_WRITE]: ts.BinaryExpression&{ - left: ts.PropertyAccessExpression; - }; + [PatternKind.BANNED_PROPERTY_WRITE]: ts.BinaryExpression; + [PatternKind.BANNED_PROPERTY_NON_CONSTANT_WRITE]: ts.BinaryExpression; [PatternKind.BANNED_NAME]: ts.Identifier; } From 58477c4bd9f4dda82f9d3af9f44ac7b66b250f81 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Wed, 19 Jun 2019 12:23:05 -0700 Subject: [PATCH 0611/1134] Update to rules_nodejs 0.32.0 @npm//node_modules/foobar:foobar.js labels changed to @npm//:node_modules/foobar/foobar.js with fix for bazelbuild/rules_nodejs#802 See #458 PiperOrigin-RevId: 254046674 --- .../rules_typescript/internal/BUILD.bazel | 2 +- .../bazelbuild/rules_typescript/package.bzl | 8 ++--- .../bazelbuild/rules_typescript/package.json | 4 +-- .../rules_typescript/rules_nodejs_pr756.patch | 30 ------------------- .../bazelbuild/rules_typescript/yarn.lock | 16 +++++----- 5 files changed, 13 insertions(+), 47 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/rules_nodejs_pr756.patch diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 973561dda7..6e10a60519 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -36,7 +36,7 @@ nodejs_binary( "@npm//source-map-support", "@npm//typescript", ], - entry_point = "@npm//node_modules/typescript:lib/tsc.js", + entry_point = "@npm//:node_modules/typescript/lib/tsc.js", visibility = ["//internal:__subpackages__"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index e75064b523..be23e71c48 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -30,12 +30,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - # This file just copy-pasted from output of `git diff` - patches = ["//:rules_nodejs_pr756.patch"], - # According to docs, this is needed for patches generated by git - patch_args = ["-p1"], - sha256 = "e04a82a72146bfbca2d0575947daa60fda1878c8d3a3afe868a8ec39a6b968bb", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.31.1/rules_nodejs-0.31.1.tar.gz"], + sha256 = "06cb04f4f745e37d542ec6883a2896029715a591c0e44c5d250a268d3752f865", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.32.0/rules_nodejs-0.32.0.tar.gz"], ) # For protocol buffers diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index c176455756..42bdbd7c94 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -6,8 +6,8 @@ "@bazel/bazel": "^0.26.0", "@bazel/buildifier": "^0.20.0", "@bazel/ibazel": "^0.2.0", - "@bazel/jasmine": "^0.31.1", - "@bazel/typescript": "^0.31.1", + "@bazel/jasmine": "^0.32.0", + "@bazel/typescript": "^0.32.0", "@types/jasmine": "^2.8.2", "@types/long": "^4.0.0", "@types/node": "7.0.18", diff --git a/third_party/github.com/bazelbuild/rules_typescript/rules_nodejs_pr756.patch b/third_party/github.com/bazelbuild/rules_typescript/rules_nodejs_pr756.patch deleted file mode 100644 index 9db35b3d40..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/rules_nodejs_pr756.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- a/internal/npm_install/node_module_library.bzl -+++ b/internal/npm_install/node_module_library.bzl -@@ -29,14 +29,20 @@ def _node_module_library_impl(ctx): - # use in rules such as ts_devserver - scripts = depset(ctx.files.scripts) - -- # declarations are a subset of sources that are decleration files -- declarations = depset([f for f in ctx.files.srcs if f.path.endswith(".d.ts")]) -+ # declarations are a subset of sources that are declaration files -+ -+ declarations = depset([ -+ f -+ for f in ctx.files.srcs -+ if f.path.endswith(".d.ts") and -+ # exclude eg. external/npm/node_modules/protobufjs/node_modules/@types/node/index.d.ts -+ # these would be duplicates of the typings provided directly in another dependency -+ len(f.path.split("/node_modules/")) < 3 -+ ]) -+ -+ # transitive_declarations are all .d.ts files in srcs plus those in direct & transitive dependencies -+ transitive_declarations = depset(transitive = [declarations]) - -- # transitive_declarations are all direct & transitive decleration files -- transitive_declarations = depset() -- for src in ctx.attr.srcs: -- if hasattr(src, "typescript"): -- transitive_declarations = depset(transitive = [transitive_declarations, src.typescript.transitive_declarations]) - for dep in ctx.attr.deps: - if hasattr(dep, "typescript"): - transitive_declarations = depset(transitive = [transitive_declarations, dep.typescript.transitive_declarations]) diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index b98709265c..f14d230caa 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -49,19 +49,19 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.2.0.tgz#c119aef4344a789cef5e792caaee52264123e71c" integrity sha1-wRmu9DRKeJzvXnksqu5SJkEj5xw= -"@bazel/jasmine@^0.31.1": - version "0.31.1" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-0.31.1.tgz#da3de10760fe1e29e9fc748fabc4fcf604f4356a" - integrity sha512-heKo8qzm6DTm8eOlfL69RJJi1GLI9vJDSmBGYgol18K7oXz6JrspGWUL9/TlCYbRUUCt22kqX7f3R+QlD0KrCg== +"@bazel/jasmine@^0.32.0": + version "0.32.0" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-0.32.0.tgz#afbb3b7cb3aeabd55324962dec3253841ed617ee" + integrity sha512-yzXqa9lP+su6lqqFJbhcdvHOCgfgIm6zMt8i1doZU8O/RkefAWj2nv+8gY8dPGMMByB6herV/5QAowB88d6ZAA== dependencies: jasmine "~3.3.1" jasmine-core "~3.3.0" v8-coverage "1.0.9" -"@bazel/typescript@^0.31.1": - version "0.31.1" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.31.1.tgz#2ccf9997d97903c51e73f82e29433fe444b8d672" - integrity sha512-jUTJjwdc4JSDMt4kIj74gGtctu8xe0YZPJuPxOIS4TdrWcn+dG9Fy7Z8bJLXhePheig1JLY7NBP6BGwrtggzPQ== +"@bazel/typescript@^0.32.0": + version "0.32.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.32.0.tgz#648be4c63302cac95552c74d17c708adbcc4c366" + integrity sha512-D2wlWanIDiagj50GetmbIeXN73XSG3E5eIhlDNL1atHe4ZPo7rODJGfI1Yme9xD71nbDL7WjwH15wYOfeoWNhA== dependencies: protobufjs "6.8.8" semver "5.6.0" From ee22577acb2419579f33069b69e586023211d800 Mon Sep 17 00:00:00 2001 From: Yun Peng Date: Thu, 27 Jun 2019 11:38:35 -0700 Subject: [PATCH 0612/1134] -- Change 1 of 1 by Yun Peng : Upgrade to rules_nodejs 0.32.2 Closes #460 PiperOrigin-RevId: 255444994 --- .../github.com/bazelbuild/rules_typescript/package.bzl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index be23e71c48..80522390c4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -30,8 +30,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - sha256 = "06cb04f4f745e37d542ec6883a2896029715a591c0e44c5d250a268d3752f865", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.32.0/rules_nodejs-0.32.0.tar.gz"], + sha256 = "6d4edbf28ff6720aedf5f97f9b9a7679401bf7fca9d14a0fff80f644a99992b4", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.32.2/rules_nodejs-0.32.2.tar.gz"], ) # For protocol buffers From a5b15c92ef06bb4f8cc5bd4471c6bbcda36cbdfa Mon Sep 17 00:00:00 2001 From: lucassloan Date: Mon, 1 Jul 2019 13:19:57 -0700 Subject: [PATCH 0613/1134] Disambiguate expected and unexpected errors for the presubmit service. PiperOrigin-RevId: 256018619 --- .../ts_auto_deps/analyze/analyze.go | 2 +- .../ts_auto_deps/analyze/analyze_test.go | 2 +- .../ts_auto_deps/updater/updater.go | 44 +++++++++++++------ .../ts_auto_deps/updater/updater_test.go | 11 +++-- 4 files changed, 38 insertions(+), 21 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go index 9e005cce5a..d6f1b24eb9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go @@ -16,7 +16,7 @@ import ( "github.com/golang/protobuf/proto" appb "github.com/bazelbuild/buildtools/build_proto" - arpb "github.com/bazelbuild/rules_typescript/ts_auto_deps/proto" + arpb "google3/devtools/bazel/proto/analyze_result_go_proto" ) var ( diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go index ff529b8d79..0360d4e742 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go @@ -15,7 +15,7 @@ import ( "github.com/kylelemons/godebug/pretty" appb "github.com/bazelbuild/buildtools/build_proto" - arpb "github.com/bazelbuild/rules_typescript/ts_auto_deps/proto" + arpb "google3/devtools/bazel/proto/analyze_result_go_proto" ) var ( diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index b5b7720c47..0b339c6bc6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -26,7 +26,7 @@ import ( "github.com/golang/protobuf/proto" "github.com/mattn/go-isatty" - arpb "github.com/bazelbuild/rules_typescript/ts_auto_deps/proto" + arpb "google3/devtools/bazel/proto/analyze_result_go_proto" ) var bazelErrorRE = regexp.MustCompile(`ERROR: ([^:]+):(\d+):\d+:`) @@ -108,14 +108,7 @@ func (upd *Updater) runBazelAnalyze(buildFilePath string, bld *build.File, rules args = append(args, targets...) out, stderr, err := upd.bazelAnalyze(buildFilePath, args) if err != nil { - return nil, &AnalysisFailedError{ - []AnalysisFailureCause{ - AnalysisFailureCause{ - Message: fmt.Sprintf("running bazel analyze %s failed: %v", args, err), - Path: bld.Path, - }, - }, - } + return nil, err } var res arpb.AnalyzeResult @@ -217,7 +210,25 @@ func readBUILD(ctx context.Context, workspaceRoot, buildFilePath string) (*build } return nil, fmt.Errorf("reading %q: %s", buildFilePath, err) } - return build.ParseBuild(normalizedG3Path, data) + bld, err := build.ParseBuild(normalizedG3Path, data) + if err != nil { + if parseErr, ok := err.(build.ParseError); ok { + return nil, &AnalysisFailedError{ + []AnalysisFailureCause{ + AnalysisFailureCause{ + Message: parseErr.Error(), + Path: parseErr.Filename, + Line: parseErr.Pos.Line, + }, + }, + } + + } + + // wasn't an error we know how to parse + return nil, err + } + return bld, nil } type srcSet map[string]bool @@ -433,9 +444,16 @@ func updateDeps(bld *build.File, reports []*arpb.DependencyReport) error { } hadUnresolved := len(report.UnresolvedImport) > 0 if hadUnresolved { - return fmt.Errorf("ERROR in %s: unresolved imports %s.\nMaybe you are missing a "+ - "'// from ...'' comment, or the target BUILD files are incorrect?\n%s\n", - fullTarget, report.UnresolvedImport, strings.Join(report.GetFeedback(), "\n")) + return &AnalysisFailedError{ + []AnalysisFailureCause{ + AnalysisFailureCause{ + Message: fmt.Sprintf("ERROR in %s: unresolved imports %s.\nMaybe you are missing a "+ + "'// from ...'' comment, or the target BUILD files are incorrect?\n%s\n", + fullTarget, report.UnresolvedImport, strings.Join(report.GetFeedback(), "\n")), + Path: bld.Path, + }, + }, + } } for _, d := range report.UnnecessaryDependency { platform.Infof("Removing dependency on %s from %s\n", d, fullTarget) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go index 65dd3bb738..26c9382950 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go @@ -2,17 +2,17 @@ package updater import ( "context" - "fmt" "io/ioutil" "os" "path/filepath" "reflect" + "strings" "testing" "github.com/bazelbuild/buildtools/build" "github.com/golang/protobuf/proto" - arpb "github.com/bazelbuild/rules_typescript/ts_auto_deps/proto" + arpb "google3/devtools/bazel/proto/analyze_result_go_proto" ) var ( @@ -238,12 +238,11 @@ func TestUnresolvedImportError(t *testing.T) { t.Fatal(err) } - expectedErr := fmt.Errorf("ERROR in %s: unresolved imports %s.\nMaybe you are missing a "+ - "'// from ...'' comment, or the target BUILD files are incorrect?\n\n", "//foo:bar", []string{"unresolved/import"}) + expectedErr := "'// from ...'' comment, or the target BUILD files are incorrect?" err = updateDeps(bld, []*arpb.DependencyReport{report}) - if !reflect.DeepEqual(err, expectedErr) { - t.Errorf("returned error %s: expected %s", err, expectedErr) + if !strings.Contains(err.Error(), expectedErr) { + t.Errorf("returned error %s: expected it to contain %s", err, expectedErr) } } From c42140331274ad2bb66b819ba0b39bd10f689c08 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 1 Jul 2019 17:43:42 -0700 Subject: [PATCH 0614/1134] Make ts_compile_actions callable from aspects. This adds fallbacks for cases where a certain attribute isn't present on ctx: - ctx.attr.compiler falls back to ctx.attr._compiler - ctx.attr.generate_externs defaults to True - ctx.attr.runtime defaults to "browser" - ctx.attr.module_name defaults to None It also defines an attribute dict for aspects that define a lot of the necessary attributes for compilation (similar to TS_LIB_DECL_ATTRIBUTES). Finally, it allows callers of compile_ts or ts_compile_actions to define their own tsconfig output instead o getting it from ctx.outputs (since aspects cannot have outputs). PiperOrigin-RevId: 256070225 --- .../internal/common/compilation.bzl | 43 ++++++++++++++----- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index d173ce70c8..511fcc0745 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -24,6 +24,10 @@ DEPS_ASPECTS = [ module_mappings_aspect, ] +_ADDITIONAL_D_TS = attr.label_list( + allow_files = True, +) + # Attributes shared by any typescript-compatible rule (ts_library, ng_module) COMMON_ATTRIBUTES = { "data": attr.label_list( @@ -48,9 +52,12 @@ COMMON_ATTRIBUTES = { providers = ["js"], ), "deps": attr.label_list(aspects = DEPS_ASPECTS), - "_additional_d_ts": attr.label_list( - allow_files = True, - ), + "_additional_d_ts": _ADDITIONAL_D_TS, +} + +# Attributes shared by any typescript-compatible aspect. +ASPECT_ATTRIBUTES = { + "_additional_d_ts": _ADDITIONAL_D_TS, } COMMON_OUTPUTS = { @@ -145,6 +152,19 @@ def _collect_dep_declarations(ctx, deps): type_blacklisted = depset(transitive = type_blacklisted_declarations), ) +def _should_generate_externs(ctx): + """Whether externs should be generated. + + If ctx has a generate_externs attribute, the value of that is returned. + Otherwise, this is true.""" + return getattr(ctx.attr, "generate_externs", True) + +def _get_runtime(ctx): + """Gets the runtime for the rule. + + Defaults to "browser" if the runtime attr isn't present.""" + return getattr(ctx.attr, "runtime", "browser") + def _outputs(ctx, label, srcs_files = []): """Returns closure js, devmode js, and .d.ts output files. @@ -205,6 +225,7 @@ def compile_ts( devmode_compile_action = None, jsx_factory = None, tsc_wrapped_tsconfig = None, + tsconfig = None, outputs = _outputs): """Creates actions to compile TypeScript code. @@ -220,6 +241,7 @@ def compile_ts( for devmode. jsx_factory: optional string. Enables overriding jsx pragma. tsc_wrapped_tsconfig: function that produces a tsconfig object. + tsconfig: The tsconfig file to output, if other than ctx.outputs.tsconfig. outputs: function from a ctx to the expected compilation outputs. Returns: @@ -229,6 +251,7 @@ def compile_ts( ### Collect srcs and outputs. srcs = srcs if srcs != None else ctx.attr.srcs deps = deps if deps != None else ctx.attr.deps + tsconfig = tsconfig if tsconfig != None else ctx.outputs.tsconfig srcs_files = [f for t in srcs for f in t.files.to_list()] src_declarations = [] # d.ts found in inputs. tsickle_externs = [] # externs.js generated by tsickle, if any. @@ -267,14 +290,14 @@ def compile_ts( transpiled_devmode_js = outs.devmode_js gen_declarations = outs.declarations - if has_sources and ctx.attr.runtime != "nodejs": + if has_sources and _get_runtime(ctx) != "nodejs": # Note: setting this variable controls whether tsickle is run at all. tsickle_externs = [ctx.actions.declare_file(ctx.label.name + ".externs.js")] dep_declarations = _collect_dep_declarations(ctx, deps) input_declarations = depset(src_declarations, transitive = [dep_declarations.transitive]) type_blacklisted_declarations = dep_declarations.type_blacklisted - if not is_library and not ctx.attr.generate_externs: + if not is_library and not _should_generate_externs(ctx): type_blacklisted_declarations += srcs_files # The depsets of output files. These are the files that are always built @@ -339,7 +362,7 @@ def compile_ts( files_depsets.append(depset([perf_trace_file, profile_file])) ctx.actions.write( - output = ctx.outputs.tsconfig, + output = tsconfig, content = json_marshal(tsconfig_es6), ) @@ -348,12 +371,12 @@ def compile_ts( replay_params = None if has_sources: - inputs = compilation_inputs + [ctx.outputs.tsconfig] + inputs = compilation_inputs + [tsconfig] replay_params = compile_action( ctx, inputs, outputs, - ctx.outputs.tsconfig, + tsconfig, node_profile_args, ) @@ -460,7 +483,7 @@ def compile_ts( # Expose the module_name so that packaging rules can access it. # e.g. rollup_bundle under Bazel needs to convert this into a UMD global # name in the Rollup configuration. - "module_name": ctx.attr.module_name, + "module_name": getattr(ctx.attr, "module_name", None), "output_groups": { "es5_sources": es5_sources, "es6_sources": es6_sources, @@ -473,7 +496,7 @@ def compile_ts( collect_data = True, ), # Expose the tags so that a Skylark aspect can access them. - "tags": ctx.attr.tags, + "tags": ctx.attr.tags if hasattr(ctx.attr, "tags") else ctx.rule.attr.tags, # TODO(martinprobst): Prune transitive deps, only re-export what's needed. "typescript": { "declarations": depset(transitive = declarations_depsets), From c4c261184510ee66242fe673b208039a7b359f87 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Mon, 8 Jul 2019 18:05:38 -0700 Subject: [PATCH 0615/1134] Print a shorter error in tsc_wrapped FileCache When the TypeScript compiler tries to read a file from the cache, but the file wasn't declared as an input, this indicates a bug in the compiler. However the result is a massive data dump to the terminal, observed in e.g. https://circleci.com/gh/angular/angular/382012 To make the output less huge, only print the first 100 keys in the cache. Note that this might make it harder to debug a failure by reasoning about all the entries that *are* present in the cache, though. PiperOrigin-RevId: 257096480 --- .../rules_typescript/internal/tsc_wrapped/cache.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/cache.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/cache.ts index 486bf4ee3f..7fa5f3e727 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/cache.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/cache.ts @@ -204,9 +204,15 @@ export class FileCache { getLastDigest(filePath: string): string { const digest = this.lastDigests.get(filePath); if (!digest) { - throw new Error( - `missing input digest for ${filePath}.` + - `(only have ${Array.from(this.lastDigests.keys())})`); + const errorMsg = `missing input digest for ${filePath}. `; + let entriesToPrint = Array.from(this.lastDigests.keys()); + if (entriesToPrint.length > 100) { + throw new Error( + errorMsg + + `(only have ${entriesToPrint.slice(0, 100)} and ${ + entriesToPrint.length - 100} more)`); + } + throw new Error(errorMsg + `(only have ${entriesToPrint})`); } return digest; } From f0540f3c199579c0866e48ef08754d1f45e03d73 Mon Sep 17 00:00:00 2001 From: rjamet Date: Tue, 9 Jul 2019 05:11:58 -0700 Subject: [PATCH 0616/1134] Remove the templating layer for pattern engines. This was a misguided attempt to provide more type safety that tried to bridge templating and enums, which rarely ends well. For simplicity's sake, there's no specificity in Fixer or PatternEngine types anymore: they now use ts.Node. PiperOrigin-RevId: 257170333 --- .../tsetse/rules/conformance_pattern_rule.ts | 29 +++++-------------- .../internal/tsetse/util/fixer.ts | 4 +-- .../internal/tsetse/util/pattern_config.ts | 14 ++------- .../util/pattern_engines/name_engine.ts | 13 ++++----- .../util/pattern_engines/pattern_engine.ts | 12 ++++---- .../property_non_constant_write_engine.ts | 13 +++------ .../pattern_engines/property_write_engine.ts | 13 +++------ .../tsetse/util/testing/test_support.ts | 4 +-- 8 files changed, 32 insertions(+), 70 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts index 707fffccee..677490de77 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts @@ -2,7 +2,7 @@ import {Checker} from '../checker'; import {ErrorCode} from '../error_code'; import {AbstractRule} from '../rule'; import {Fixer} from '../util/fixer'; -import {Config, MatchedNodeTypes, PatternKind} from '../util/pattern_config'; +import {Config, PatternKind} from '../util/pattern_config'; import {NameEngine} from '../util/pattern_engines/name_engine'; import {PatternEngine} from '../util/pattern_engines/pattern_engine'; import {PropertyNonConstantWriteEngine} from '../util/pattern_engines/property_non_constant_write_engine'; @@ -15,42 +15,27 @@ import {PropertyWriteEngine} from '../util/pattern_engines/property_write_engine * This is templated, mostly to ensure the nodes that have been matched * correspond to what the Fixer expects. */ -export class ConformancePatternRule

implements - AbstractRule { +export class ConformancePatternRule implements AbstractRule { readonly ruleName: string; readonly code = ErrorCode.CONFORMANCE_PATTERN; - private readonly engine: PatternEngine

; + private readonly engine: PatternEngine; - constructor(config: Config

, fixer?: Fixer) { - // TODO(rjamet): This cheats a bit with the typing, as TS doesn't realize - // that P is Config.kind. - // tslint:disable-next-line:no-any See above. - let engine: PatternEngine; - // Formatter breaks the types, b/135552145 - // clang-format off + constructor(config: Config, fixer?: Fixer) { switch (config.kind) { case PatternKind.BANNED_PROPERTY_WRITE: - engine = new PropertyWriteEngine( - config as Config, - fixer as Fixer); + this.engine = new PropertyWriteEngine(config, fixer); break; case PatternKind.BANNED_PROPERTY_NON_CONSTANT_WRITE: - engine = new PropertyNonConstantWriteEngine( - config as Config, - fixer as Fixer); + this.engine = new PropertyNonConstantWriteEngine(config, fixer); break; case PatternKind.BANNED_NAME: - engine = new NameEngine( - config as Config, - fixer as Fixer); + this.engine = new NameEngine(config, fixer); break; default: throw new Error('Config type not recognized, or not implemented yet.'); } - // clang-format on this.ruleName = `conformance-pattern-${config.kind}`; - this.engine = engine as PatternEngine

; } register(checker: Checker) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts index 77fa9f84f6..2b76983224 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts @@ -8,8 +8,8 @@ import {debugLog} from './ast_tools'; * ban-preset-pattern users). See also `buildReplacementFixer` for a simpler way * of implementing a Fixer. */ -export interface Fixer { - getFixForFlaggedNode(node: NodeType): Fix|undefined; +export interface Fixer { + getFixForFlaggedNode(node: ts.Node): Fix|undefined; } /** diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index e4dcc0de22..21e9c2563b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -1,11 +1,10 @@ -import * as ts from 'typescript'; /** * The list of supported patterns useable in ConformancePatternRule. The * patterns whose name match JSConformance patterns should behave similarly (see * https://github.com/google/closure-compiler/wiki/JS-Conformance-Framework) */ -export enum PatternKind { +export const enum PatternKind { BANNED_NAME = 'banned-name', BANNED_PROPERTY_WRITE = 'banned-property-write', BANNED_PROPERTY_NON_CONSTANT_WRITE = 'banned-property-non-constant-write' @@ -14,8 +13,8 @@ export enum PatternKind { /** * A config for ConformancePatternRule. */ -export interface Config

{ - kind: P; +export interface Config { + kind: PatternKind; /** * Values have a pattern-specific syntax. @@ -79,10 +78,3 @@ export enum WhitelistReason { /** Manually reviewed exceptions (supposedly okay). */ MANUALLY_REVIEWED } - -/** Maps the type of nodes that each `PatternType` consumes. */ -export interface MatchedNodeTypes { - [PatternKind.BANNED_PROPERTY_WRITE]: ts.BinaryExpression; - [PatternKind.BANNED_PROPERTY_NON_CONSTANT_WRITE]: ts.BinaryExpression; - [PatternKind.BANNED_NAME]: ts.Identifier; -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts index 332c6c6edf..3312619041 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts @@ -4,14 +4,12 @@ import {ErrorCode} from '../../error_code'; import {debugLog, shouldExamineNode} from '../ast_tools'; import {Fixer} from '../fixer'; import {AbsoluteMatcher} from '../match_symbol'; -import {Config, MatchedNodeTypes, PatternKind} from '../pattern_config'; +import {Config} from '../pattern_config'; import {PatternEngine} from './pattern_engine'; -export class NameEngine extends PatternEngine { +export class NameEngine extends PatternEngine { private readonly matcher: AbsoluteMatcher; - constructor( - config: Config, - fixer?: Fixer) { + constructor(config: Config, fixer?: Fixer) { super(config, fixer); // TODO: Support more than one single value here, or even build a // multi-pattern engine. This would help for performance. @@ -27,9 +25,8 @@ export class NameEngine extends PatternEngine { ts.SyntaxKind.Identifier, this.checkAndFilterResults.bind(this), ErrorCode.CONFORMANCE_PATTERN); } - - check(tc: ts.TypeChecker, n: MatchedNodeTypes[PatternKind.BANNED_NAME]): - MatchedNodeTypes[PatternKind.BANNED_NAME]|undefined { + + check(tc: ts.TypeChecker, n: ts.Node): ts.Node|undefined { if (!shouldExamineNode(n) || n.getSourceFile().isDeclarationFile) { return; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts index 6e014205d3..d6b60ce8d5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts @@ -2,20 +2,19 @@ import * as ts from 'typescript'; import {Checker} from '../../checker'; import {Fix} from '../../failure'; import {Fixer} from '../../util/fixer'; -import {Config, MatchedNodeTypes, PatternKind} from '../../util/pattern_config'; +import {Config} from '../../util/pattern_config'; import {shouldExamineNode} from '../ast_tools'; /** * A patternEngine is the logic that handles a specific PatternKind. */ -export abstract class PatternEngine

{ +export abstract class PatternEngine { private readonly whitelistedPrefixes: string[] = []; private readonly whitelistedRegExps: RegExp[] = []; private readonly whitelistMemoizer: Map = new Map(); constructor( - protected readonly config: Config

, - protected readonly fixer?: Fixer) { + protected readonly config: Config, protected readonly fixer?: Fixer) { if (config.whitelistEntries) { for (const e of config.whitelistEntries) { if (e.prefix) { @@ -42,15 +41,14 @@ export abstract class PatternEngine

{ * with what the engine looks for, i.e., AST matching. The whitelisting logic * and fix generation are handled in `checkAndFilterResults`. */ - abstract check(tc: ts.TypeChecker, n: MatchedNodeTypes[P]): - MatchedNodeTypes[P]|undefined; + abstract check(tc: ts.TypeChecker, n: ts.Node): ts.Node|undefined; /** * A wrapper for `check` that handles aspects of the analysis that are not * engine-specific, and which defers to the subclass-specific logic * afterwards. */ - checkAndFilterResults(c: Checker, n: MatchedNodeTypes[P]) { + checkAndFilterResults(c: Checker, n: ts.Node) { if (!shouldExamineNode(n) || n.getSourceFile().isDeclarationFile) { return; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts index d9d3a97f3a..08b67813de 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts @@ -5,19 +5,15 @@ import {debugLog, isPropertyWriteExpression} from '../ast_tools'; import {Fixer} from '../fixer'; import {isLiteral} from '../is_literal'; import {PropertyMatcher} from '../match_symbol'; -import {Config, MatchedNodeTypes, PatternKind} from '../pattern_config'; +import {Config} from '../pattern_config'; import {PatternEngine} from './pattern_engine'; -// Just for conciseness. -type BanKind = PatternKind.BANNED_PROPERTY_NON_CONSTANT_WRITE; - /** * The engine for BANNED_PROPERTY_NON_CONSTANT_WRITE. */ -export class PropertyNonConstantWriteEngine extends PatternEngine { +export class PropertyNonConstantWriteEngine extends PatternEngine { private readonly matcher: PropertyMatcher; - constructor( - config: Config, fixer?: Fixer) { + constructor(config: Config, fixer?: Fixer) { super(config, fixer); // TODO: Support more than one single value here, or even build a // multi-pattern engine. This would help for performance. @@ -35,8 +31,7 @@ export class PropertyNonConstantWriteEngine extends PatternEngine { ErrorCode.CONFORMANCE_PATTERN); } - check(tc: ts.TypeChecker, n: MatchedNodeTypes[BanKind]): - MatchedNodeTypes[BanKind]|undefined { + check(tc: ts.TypeChecker, n: ts.Node): ts.Node|undefined { if (!isPropertyWriteExpression(n)) { return; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts index 3b92f2d302..640ff64634 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts @@ -4,19 +4,15 @@ import {ErrorCode} from '../../error_code'; import {debugLog, isPropertyWriteExpression} from '../ast_tools'; import {Fixer} from '../fixer'; import {PropertyMatcher} from '../match_symbol'; -import {Config, MatchedNodeTypes, PatternKind} from '../pattern_config'; +import {Config} from '../pattern_config'; import {PatternEngine} from '../pattern_engines/pattern_engine'; -// Just for conciseness. -type BanKind = PatternKind.BANNED_PROPERTY_WRITE; - /** * The engine for BANNED_PROPERTY_WRITE. */ -export class PropertyWriteEngine extends PatternEngine { +export class PropertyWriteEngine extends PatternEngine { private readonly matcher: PropertyMatcher; - constructor( - config: Config, fixer?: Fixer) { + constructor(config: Config, fixer?: Fixer) { super(config, fixer); // TODO: Support more than one single value here, or even build a // multi-pattern engine. This would help for performance. @@ -33,8 +29,7 @@ export class PropertyWriteEngine extends PatternEngine { ErrorCode.CONFORMANCE_PATTERN); } - check(tc: ts.TypeChecker, n: MatchedNodeTypes[BanKind]): - MatchedNodeTypes[BanKind]|undefined { + check(tc: ts.TypeChecker, n: ts.Node): ts.Node|undefined { if (!isPropertyWriteExpression(n)) { return; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts index febf37a2fc..c12e28a09d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts @@ -85,7 +85,7 @@ export const customMatchers: jasmine.CustomMatcherFactories = { toHaveNFailures(): jasmine.CustomMatcher { return { - compare: (actual: Failure[], expected: Number, config?: Config) => { + compare: (actual: Failure[], expected: Number, config?: Config) => { if (actual.length === expected) { return {pass: true}; } else { @@ -236,7 +236,7 @@ declare global { {fileName?: string, start?: number, end?: number, replacement?: string} ]): void; - toHaveNFailures(expected: Number, config?: Config): void; + toHaveNFailures(expected: Number, config?: Config): void; } } } From a27370aa791aa7d8b811f6af8d351cde251a4841 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Wed, 10 Jul 2019 13:12:54 -0700 Subject: [PATCH 0617/1134] Make libraries that depend on //javascript/angular2/testing/catalyst into ng_modules. Currently you need a dep on something in //third_party/javascript/angular2, so people are forced to insert dummy taze comments. PiperOrigin-RevId: 257466752 --- .../rules_typescript/ts_auto_deps/updater/updater.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index 0b339c6bc6..b3f491f014 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -968,7 +968,13 @@ func hasAngularDependency(r *build.Rule) bool { for _, li := range edit.AllLists(e) { for _, elem := range li.List { str, ok := elem.(*build.StringExpr) - if ok && strings.HasPrefix(str.Value, "//third_party/javascript/angular2") { + if !ok { + continue + } + if strings.HasPrefix(str.Value, "//third_party/javascript/angular2") { + return true + } + if str.Value == "//javascript/angular2/testing/catalyst" { return true } } From 51ad8fe153a276b5aba4cd734d8fc3a32bcae3a2 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Wed, 10 Jul 2019 14:26:12 -0700 Subject: [PATCH 0618/1134] Remove code supporting blaze analyze. PiperOrigin-RevId: 257481182 --- .../ts_auto_deps/updater/updater.go | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index b3f491f014..49ca61e2e4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -64,11 +64,6 @@ type Updater struct { updateFile UpdateFile } -func bazelBinary() string { - - return "bazel" -} - func attrTruthy(r *build.Rule, attr string) bool { attrVal := r.AttrLiteral(attr) return attrVal == "True" || attrVal == "1" @@ -98,15 +93,12 @@ func (g *GarbledBazelResponseError) Error() string { // function to actually run the `bazel analyze` operation, which allows // exchanging it for a different implementation in the ts_auto_deps presubmit service. func (upd *Updater) runBazelAnalyze(buildFilePath string, bld *build.File, rules []*build.Rule) ([]*arpb.DependencyReport, error) { - args := []string{} - args = append(args, "--analysis_output=PROTO", "--static_analysis_option=checkdeps=--ng_summary") var targets []string for _, r := range rules { fullTarget := AbsoluteBazelTarget(bld, r.Name()) targets = append(targets, fullTarget) } - args = append(args, targets...) - out, stderr, err := upd.bazelAnalyze(buildFilePath, args) + out, stderr, err := upd.bazelAnalyze(buildFilePath, targets) if err != nil { return nil, err } @@ -771,16 +763,12 @@ func buildHasDisableTaze(bld *build.File) bool { // QueryBasedBazelAnalyze uses bazel query to analyze targets. It is available under a flag or // an environment variable on engineer's workstations. -func QueryBasedBazelAnalyze(buildFilePath string, args []string) ([]byte, []byte, error) { - // The first 2 args are '--analysis_output=PROTO' and - // '--static_analysis_option=checkdeps=--ng_summary', which are needed for - // bazel. Remove them to get only the targets. - targets := args[2:] +func QueryBasedBazelAnalyze(buildFilePath string, targets []string) ([]byte, []byte, error) { root, err := workspace.Root(buildFilePath) if err != nil { return nil, nil, err } - reports, err := analyze.New(analyze.NewQueryBasedTargetLoader(root, bazelBinary())).Analyze(context.Background(), buildFilePath, targets) + reports, err := analyze.New(analyze.NewQueryBasedTargetLoader(root, "bazel")).Analyze(context.Background(), buildFilePath, targets) if err != nil { return nil, nil, err } From 878382b248a4ab070d98f92b9b92df73386a1059 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 15 Jul 2019 00:10:17 -0700 Subject: [PATCH 0619/1134] internal change PiperOrigin-RevId: 258103394 --- .../rules_typescript/ts_auto_deps/analyze/analyze.go | 2 +- .../rules_typescript/ts_auto_deps/analyze/analyze_test.go | 2 +- .../ts_auto_deps/proto/analyze_result.proto | 6 +++--- .../rules_typescript/ts_auto_deps/updater/updater.go | 2 +- .../rules_typescript/ts_auto_deps/updater/updater_test.go | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go index d6f1b24eb9..9e005cce5a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go @@ -16,7 +16,7 @@ import ( "github.com/golang/protobuf/proto" appb "github.com/bazelbuild/buildtools/build_proto" - arpb "google3/devtools/bazel/proto/analyze_result_go_proto" + arpb "github.com/bazelbuild/rules_typescript/ts_auto_deps/proto" ) var ( diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go index 0360d4e742..ff529b8d79 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go @@ -15,7 +15,7 @@ import ( "github.com/kylelemons/godebug/pretty" appb "github.com/bazelbuild/buildtools/build_proto" - arpb "google3/devtools/bazel/proto/analyze_result_go_proto" + arpb "github.com/bazelbuild/rules_typescript/ts_auto_deps/proto" ) var ( diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/proto/analyze_result.proto b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/proto/analyze_result.proto index e81d51bc8c..49ee5000e9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/proto/analyze_result.proto +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/proto/analyze_result.proto @@ -27,7 +27,7 @@ message DependencyGroup { // dependencies is populated in dependency field, and both import_path's are // listed here. repeated string import_path = 3; -}; +} // Represents information about arbitrary non-deps attributes. message AttributeReport { @@ -88,8 +88,8 @@ message DependencyReport { repeated string feedback = 6; // Indicates whether the dependency analysis completed without errors. - optional bool successful = 10 [default=true]; -}; + optional bool successful = 10 [default = true]; +} // Aggregate DependencyReports for multiple analysis // targets - used to support bazel analyze --analysis_output=proto diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index 49ca61e2e4..6f2eba538a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -26,7 +26,7 @@ import ( "github.com/golang/protobuf/proto" "github.com/mattn/go-isatty" - arpb "google3/devtools/bazel/proto/analyze_result_go_proto" + arpb "github.com/bazelbuild/rules_typescript/ts_auto_deps/proto" ) var bazelErrorRE = regexp.MustCompile(`ERROR: ([^:]+):(\d+):\d+:`) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go index 26c9382950..b62ef20aef 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go @@ -12,7 +12,7 @@ import ( "github.com/bazelbuild/buildtools/build" "github.com/golang/protobuf/proto" - arpb "google3/devtools/bazel/proto/analyze_result_go_proto" + arpb "github.com/bazelbuild/rules_typescript/ts_auto_deps/proto" ) var ( From dd725b86f9b16bf770e80db7cf86adc1faf5f93e Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Thu, 25 Jul 2019 11:20:52 -0700 Subject: [PATCH 0620/1134] Define an interface for a TypeScript compiler plugin that may only contribute diagnostics. Switch the strict deps and tsetse plugins to use this API. The only user-visible change is that diagnostics from those plugins are now tagged with [tsetse] / [strictDeps]. The string ids for tracking the performance of these plugins have also changed, and have become more granular, tracking both file by file and the total time contributed by each plugin as a whole. PiperOrigin-RevId: 259985050 --- .../internal/tsc_wrapped/plugin_api.ts | 31 ++++++ .../internal/tsc_wrapped/strict_deps.ts | 26 +++-- .../internal/tsc_wrapped/tsc_wrapped.ts | 97 ++++++++++++++++--- .../internal/tsetse/runner.ts | 29 +++--- 4 files changed, 138 insertions(+), 45 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts index f778c0f842..e09954d3e4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts @@ -96,3 +96,34 @@ export function createProxy(delegate: T): T { } return proxy; } + +/** + * A plugin that contributes additional diagnostics during compilation. + * + * This is a more limited API than Plugin, which can overwrite any features of + * the Program. A DiagnosticPlugin can't affect the output, and can only reject + * otherwise valid programs. + * + * This means that disabling a DiagnosticPlugin is always safe. It will not + * break any downstream projects, either at build time or in production. + * + * It also lets us instrument the plugin to track performance, and tag the + * diagnostics it emits with the plugin name. + */ +export interface DiagnosticPlugin { + /** + * A brief descriptive name for the plugin. + * + * Should not include 'ts', 'typescript', or 'plugin'. + */ + readonly name: string; + + /** + * Return diagnostics for the given file. + * + * Should only include new diagnostics that your plugin is contributing. + * Should not include diagnostics from program. + */ + getDiagnostics(sourceFile: ts.SourceFile): + ReadonlyArray>; +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts index 7afa4d99dc..c2cb7238b9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts @@ -47,21 +47,19 @@ export const TS_ERR_CANNOT_FIND_MODULE = 2307; * * strict_deps currently does not check ambient/global definitions. */ -export const PLUGIN: pluginApi.Plugin = { - wrap: (program: ts.Program, config: StrictDepsPluginConfig): ts.Program => { - const proxy = pluginApi.createProxy(program); - proxy.getSemanticDiagnostics = function(sourceFile: ts.SourceFile) { - const result = [...program.getSemanticDiagnostics(sourceFile)]; - perfTrace.wrap('checkModuleDeps', () => { - result.push(...checkModuleDeps( - sourceFile, program.getTypeChecker(), config.allowedStrictDeps, - config.rootDir)); - }); - return result; - }; - return proxy; +export class Plugin implements pluginApi.DiagnosticPlugin { + constructor( + private readonly program: ts.Program, + private readonly config: StrictDepsPluginConfig) {} + + readonly name = 'strictDeps'; + + getDiagnostics(sourceFile: ts.SourceFile) { + return checkModuleDeps( + sourceFile, this.program.getTypeChecker(), + this.config.allowedStrictDeps, this.config.rootDir); } -}; +} // Exported for testing export function checkModuleDeps( diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 02d5040caa..ad7c379456 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -3,15 +3,15 @@ import * as path from 'path'; import * as tsickle from 'tsickle'; import * as ts from 'typescript'; -import {PLUGIN as bazelConformancePlugin} from '../tsetse/runner'; +import {Plugin as BazelConformancePlugin} from '../tsetse/runner'; import {CachedFileLoader, FileLoader, ProgramAndFileCache, UncachedFileLoader} from './cache'; import {CompilerHost} from './compiler_host'; import * as bazelDiagnostics from './diagnostics'; import {constructManifest} from './manifest'; import * as perfTrace from './perf_trace'; -import {PluginCompilerHost, TscPlugin} from './plugin_api'; -import {PLUGIN as strictDepsPlugin} from './strict_deps'; +import {DiagnosticPlugin, PluginCompilerHost, TscPlugin} from './plugin_api'; +import {Plugin as StrictDepsPlugin} from './strict_deps'; import {BazelOptions, parseTsconfig, resolveNormalizedPath} from './tsconfig'; import {debug, log, runAsWorker, runWorkerLoop} from './worker'; @@ -62,18 +62,11 @@ function isCompilationTarget( */ export function gatherDiagnostics( options: ts.CompilerOptions, bazelOpts: BazelOptions, program: ts.Program, - disabledTsetseRules: string[], angularPlugin?: TscPlugin): ts.Diagnostic[] { + disabledTsetseRules: string[], angularPlugin?: TscPlugin, + plugins: DiagnosticPlugin[] = []): ts.Diagnostic[] { // Install extra diagnostic plugins - if (!bazelOpts.disableStrictDeps) { - program = strictDepsPlugin.wrap(program, { - ...bazelOpts, - rootDir: options.rootDir, - }); - } - if (!bazelOpts.isJsTranspilation) { - let selectedTsetsePlugin = bazelConformancePlugin; - program = selectedTsetsePlugin.wrap(program, disabledTsetseRules); - } + plugins.push( + ...getCommonPlugins(options, bazelOpts, program, disabledTsetseRules)); if (angularPlugin) { program = angularPlugin.wrap(program); } @@ -101,11 +94,83 @@ export function gatherDiagnostics( }); perfTrace.snapshotMemoryUsage(); } + for (const plugin of plugins) { + perfTrace.wrap(`${plugin.name} diagnostics`, () => { + for (const sf of sourceFilesToCheck) { + perfTrace.wrap(`${plugin.name} checking ${sf.fileName}`, () => { + const pluginDiagnostics = plugin.getDiagnostics(sf).map((d) => { + return tagDiagnosticWithPlugin(plugin.name, d); + }); + diagnostics.push(...pluginDiagnostics); + }); + perfTrace.snapshotMemoryUsage(); + } + }); + } }); return diagnostics; } +/** + * Construct diagnostic plugins that we always want included. + * + * TODO: Call sites of getDiagnostics should initialize plugins themselves, + * including these, and the arguments to getDiagnostics should be simplified. + */ +export function* + getCommonPlugins( + options: ts.CompilerOptions, bazelOpts: BazelOptions, + program: ts.Program, + disabledTsetseRules: string[]): Iterable { + if (!bazelOpts.disableStrictDeps) { + if (options.rootDir == null) { + throw new Error(`StrictDepsPlugin requires that rootDir be specified`); + } + yield new StrictDepsPlugin(program, { + ...bazelOpts, + rootDir: options.rootDir, + }); + } + if (!bazelOpts.isJsTranspilation) { + let tsetsePluginConstructor: + {new (program: ts.Program, disabledRules: string[]): DiagnosticPlugin} = + BazelConformancePlugin; + yield new tsetsePluginConstructor(program, disabledTsetseRules); + } +} + +/** + * Returns a copy of diagnostic with one whose text has been prepended with + * an indication of what plugin contributed that diagnostic. + * + * This is slightly complicated because a diagnostic's message text can be + * split up into a chain of diagnostics, e.g. when there's supplementary info + * about a diagnostic. + */ +function tagDiagnosticWithPlugin( + pluginName: string, diagnostic: Readonly): ts.Diagnostic { + const tagMessageWithPluginName = (text: string) => `[${pluginName}] ${text}`; + + let messageText; + if (typeof diagnostic.messageText === 'string') { + // The simple case, where a diagnostic's message is just a string. + messageText = tagMessageWithPluginName(diagnostic.messageText); + } else { + // In the case of a chain of messages we only want to tag the head of the + // chain, as that's the first line of message on the CLI. + const chain: ts.DiagnosticMessageChain = diagnostic.messageText; + messageText = { + ...chain, + messageText: tagMessageWithPluginName(chain.messageText) + }; + } + return { + ...diagnostic, + messageText, + }; +} + /** * expandSourcesFromDirectories finds any directories under filePath and expands * them to their .js or .ts contents. @@ -232,6 +297,7 @@ function runFromOptions( files, options, bazelOpts, compilerHostDelegate, fileLoader, moduleResolver); let compilerHost: PluginCompilerHost = tsickleCompilerHost; + const diagnosticPlugins: DiagnosticPlugin[] = []; let angularPlugin: TscPlugin|undefined; if (bazelOpts.compileAngularTemplates) { @@ -271,7 +337,8 @@ function runFromOptions( // messages refer to the original source. After any subsequent passes // (decorator downleveling or tsickle) we do not type check. let diagnostics = gatherDiagnostics( - options, bazelOpts, program, disabledTsetseRules, angularPlugin); + options, bazelOpts, program, disabledTsetseRules, angularPlugin, + diagnosticPlugins); if (!expectDiagnosticsWhitelist.length || expectDiagnosticsWhitelist.some(p => bazelOpts.target.startsWith(p))) { diagnostics = bazelDiagnostics.filterExpected( diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts index d61a7076aa..826131e1b5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts @@ -31,22 +31,19 @@ const ENABLED_RULES: AbstractRule[] = [ * The Tsetse check plugin performs compile-time static analysis for TypeScript * code. */ -export const PLUGIN: pluginApi.Plugin = { - wrap(program: ts.Program, disabledTsetseRules: string[] = []): ts.Program { - const checker = new Checker(program); - registerRules(checker, disabledTsetseRules); - const proxy = pluginApi.createProxy(program); - proxy.getSemanticDiagnostics = (sourceFile: ts.SourceFile) => { - const result = [...program.getSemanticDiagnostics(sourceFile)]; - perfTrace.wrap('checkConformance', () => { - result.push(...checker.execute(sourceFile) - .map(failure => failure.toDiagnostic())); - }); - return result; - }; - return proxy; - }, -}; +export class Plugin implements pluginApi.DiagnosticPlugin { + readonly name = 'tsetse'; + private readonly checker: Checker; + constructor(program: ts.Program, disabledTsetseRules: string[] = []) { + this.checker = new Checker(program); + registerRules(this.checker, disabledTsetseRules); + } + + getDiagnostics(sourceFile: ts.SourceFile) { + return this.checker.execute(sourceFile) + .map(failure => failure.toDiagnostic()); + } +} export function registerRules(checker: Checker, disabledTsetseRules: string[]) { for (const rule of ENABLED_RULES) { From fea801d8c90a1aac8428b35915142566572a73e8 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Fri, 26 Jul 2019 15:47:08 -0700 Subject: [PATCH 0621/1134] Report whether there was no TS in the package, don't just return early. PiperOrigin-RevId: 260228506 --- .../ts_auto_deps/updater/updater.go | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index 6f2eba538a..ff3d986821 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -688,38 +688,40 @@ type UpdateBUILDOptions struct { // UpdateBUILD drives the main process of creating/updating the BUILD file // underneath path based on the available sources. Returns true if it modified -// the BUILD file, false if the BUILD file was up to date already. -// bazelAnalyze is used to run the underlying `bazel analyze` process. -func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options UpdateBUILDOptions) (bool, error) { +// the BUILD file, false if the BUILD file was up to date already. bazelAnalyze +// is used to run the underlying `bazel analyze` process. Returns another +// boolean that's true iff the package doesn't contain any TypeScript (source +// files or BUILD rules). +func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options UpdateBUILDOptions) (bool, bool, error) { g3root, buildFilePath, bld, err := getBUILDPathAndBUILDFile(ctx, path) if err != nil { - return false, err + return false, false, err } if isTazeDisabledInPackage(ctx, g3root, buildFilePath, bld) { - return false, nil + return false, false, nil } hasSubdirSrcs, err := directoryOrAncestorHasSubdirectorySources(ctx, g3root, buildFilePath, bld) if err != nil { - return false, err + return false, false, err } if hasSubdirSrcs { - return false, &SubdirectorySourcesError{} + return false, false, &SubdirectorySourcesError{} } changed, err := upd.addSourcesToBUILD(ctx, path, buildFilePath, bld) if err != nil { - return false, err + return false, false, err } if options.InNonWritableEnvironment && changed { - return true, &CantProgressAfterWriteError{} + return true, false, &CantProgressAfterWriteError{} } rules := allTSRules(bld) if len(rules) == 0 && !options.IsRoot { // No TypeScript rules, no need to query for dependencies etc, so just exit early. - return changed, nil + return changed, true, nil } rulesWithSrcs := []*build.Rule{} for _, r := range rules { @@ -733,19 +735,19 @@ func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options Update platform.Infof("analyzing...") reports, err := upd.runBazelAnalyze(buildFilePath, bld, rulesWithSrcs) if err != nil { - return false, err + return false, false, err } changedAfterBazelAnalyze, err := upd.updateBUILDAfterBazelAnalyze(ctx, options.IsRoot, g3root, buildFilePath, bld, reports) if err != nil { - return false, err + return false, false, err } changed = changed || changedAfterBazelAnalyze if options.InNonWritableEnvironment && changed { - return true, &CantProgressAfterWriteError{} + return true, false, &CantProgressAfterWriteError{} } - return changed, nil + return changed, false, nil } // buildHasDisableTaze checks if the BUILD file should be managed using ts_auto_deps. @@ -1250,7 +1252,7 @@ func Execute(host *Updater, paths []string, isRoot, recursive bool) error { ctx := context.Background() for i, p := range paths { isLastAndRoot := isRoot && i == len(paths)-1 - changed, err := host.UpdateBUILD(ctx, p, UpdateBUILDOptions{InNonWritableEnvironment: false, IsRoot: isLastAndRoot}) + changed, _, err := host.UpdateBUILD(ctx, p, UpdateBUILDOptions{InNonWritableEnvironment: false, IsRoot: isLastAndRoot}) if err != nil { if recursive { return fmt.Errorf("ts_auto_deps failed on %s/BUILD: %s", p, err) From 102e976027cc08cab8d59cb9cb485376bb57fc64 Mon Sep 17 00:00:00 2001 From: rjamet Date: Fri, 2 Aug 2019 05:55:10 -0700 Subject: [PATCH 0622/1134] Add a new matcher (nth argument of a call to foo is literal) to Tsetse. This literalness constraint is useful as a proxy for "no user data should be in that argument", for instance for security purposes. PiperOrigin-RevId: 261307072 --- .../tsetse/rules/conformance_pattern_rule.ts | 5 + .../name_call_non_constant_argument_test.ts | 116 ++++++++++++++++++ .../internal/tsetse/util/match_symbol.ts | 10 +- .../internal/tsetse/util/pattern_config.ts | 20 +-- .../name_call_non_constant_argument.ts | 86 +++++++++++++ 5 files changed, 226 insertions(+), 11 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_call_non_constant_argument_test.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts index 677490de77..0cbfe7111c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts @@ -3,11 +3,13 @@ import {ErrorCode} from '../error_code'; import {AbstractRule} from '../rule'; import {Fixer} from '../util/fixer'; import {Config, PatternKind} from '../util/pattern_config'; +import {CallNonConstantArgumentEngine} from '../util/pattern_engines/name_call_non_constant_argument'; import {NameEngine} from '../util/pattern_engines/name_engine'; import {PatternEngine} from '../util/pattern_engines/pattern_engine'; import {PropertyNonConstantWriteEngine} from '../util/pattern_engines/property_non_constant_write_engine'; import {PropertyWriteEngine} from '../util/pattern_engines/property_write_engine'; + /** * Builds a Rule that matches a certain pattern, given as parameter, and * that can additionally run a suggested fix generator on the matches. @@ -32,6 +34,9 @@ export class ConformancePatternRule implements AbstractRule { case PatternKind.BANNED_NAME: this.engine = new NameEngine(config, fixer); break; + case PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT: + this.engine = new CallNonConstantArgumentEngine(config, fixer); + break; default: throw new Error('Config type not recognized, or not implemented yet.'); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_call_non_constant_argument_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_call_non_constant_argument_test.ts new file mode 100644 index 0000000000..44c9a31952 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_call_non_constant_argument_test.ts @@ -0,0 +1,116 @@ +import 'jasmine'; +import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; +import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; + +describe('BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT', () => { + const rule = new ConformancePatternRule({ + errorMessage: 'do not call bar.foo with non-literal 1st arg', + kind: PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT, + values: ['bar:0'] + }); + + it('matches simple examples', () => { + const sources = [ + `export function bar(x:any, y:any) {}`, + `import * as foo from './file_0'; ` + + `foo.bar(1, 1); foo.bar(window.name, 1);`, + ]; + const results = compileAndCheck(rule, ...sources); + + expect(results.length).toBe(1); + expect(results[0]).toBeFailureMatching({ + matchedCode: `foo.bar(window.name, 1)`, + messageText: 'do not call bar.foo with non-literal 1st arg' + }); + }); + + it('looks at the right position', () => { + const sources = [ + `export function bar(x:any, y:any) {}`, + `import * as foo from './file_0'; foo.bar(1, window.name);`, + ]; + const results = compileAndCheck(rule, ...sources); + + expect(results.length).toBe(0); + }); + + it('looks at the right position', () => { + const rule = new ConformancePatternRule({ + errorMessage: 'non-literal arg', + kind: PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT, + values: ['aaa:1', 'bbb:0'] + }); + + const sources = [ + `export function aaa(x:any, y:any) {}; export function bbb(x:any) {}`, + `import * as foo from './file_0'; ` + + `foo.aaa(1, window.name); foo.bbb(window.name);`, + ]; + const results = compileAndCheck(rule, ...sources); + + expect(results.length).toBe(2); + expect(results[0]).toBeFailureMatching({ + matchedCode: `foo.aaa(1, window.name)`, + }); + expect(results[1]).toBeFailureMatching({ + matchedCode: `foo.bbb(window.name)`, + }); + }); + + it('supports static methods', () => { + const rule = new ConformancePatternRule({ + errorMessage: 'non-literal arg', + kind: PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT, + values: ['Car.buildFromParts:0'] + }); + + const sources = [ + `export class Car { static buildFromParts(name:string):void {}; }`, + `import {Car} from './file_0';\n` + + `Car.buildFromParts(window.name);\n` + + `Car.buildFromParts('hello');`, + ]; + const results = compileAndCheck(rule, ...sources); + + expect(results.length).toBe(1); + expect(results[0]).toBeFailureMatching({ + matchedCode: `Car.buildFromParts(window.name)`, + }); + }); + + it('supports ambient global methods', () => { + const rule = new ConformancePatternRule({ + errorMessage: 'non-literal arg', + kind: PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT, + values: ['URL.createObjectURL:0'] + }); + + const sources = [`URL.createObjectURL(window.name);\n`]; + const results = compileAndCheck(rule, ...sources); + + expect(results.length).toBe(1); + expect(results[0]).toBeFailureMatching({ + matchedCode: `URL.createObjectURL(window.name)`, + }); + }); + + it('supports ambient global methods', () => { + const rule = new ConformancePatternRule({ + errorMessage: 'non-literal arg', + kind: PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT, + values: ['eval:0'] + }); + + const sources = [`eval(window.name);\n`]; + const results = compileAndCheck(rule, ...sources); + + expect(results.length).toBe(1); + expect(results[0]).toBeFailureMatching({ + matchedCode: `eval(window.name)`, + }); + }); +}); + +beforeEach(() => { + jasmine.addMatchers(customMatchers); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts index c60195b205..eb588e8f96 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts @@ -15,6 +15,11 @@ const ABSOLUTE_RE = new RegExp(`^${FQN_FORMAT}$`); * Note that this isn't smart about subclasses and types: to write a check, we * strongly suggest finding the expected symbol in externs to find the object * name on which the symbol was initially defined. + * + * TODO(rjamet): add a file-based optional filter, since FQNs tell you where + * your imported symbols were initially defined. That would let us be more + * specific in matches (say, you want to ban the fromLiteral in foo.ts but not + * the one from bar.ts). */ export class AbsoluteMatcher { /** @@ -32,10 +37,11 @@ export class AbsoluteMatcher { // on `foo`. To avoid any confusion, throw there if we see `prototype` in // the spec: that way, it's obvious that you're not trying to match // properties. - if (this.bannedName.includes('.prototype')) { + if (this.bannedName.match('.prototype.')) { throw new Error( 'Your pattern includes a .prototype, but the AbsoluteMatcher is ' + - 'meant for non-object matches. Use the PropertyMatcher instead.'); + 'meant for non-object matches. Use the PropertyMatcher instead, or ' + + 'the Property-based PatternKinds.'); } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index 21e9c2563b..bc907b1440 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -7,7 +7,9 @@ export const enum PatternKind { BANNED_NAME = 'banned-name', BANNED_PROPERTY_WRITE = 'banned-property-write', - BANNED_PROPERTY_NON_CONSTANT_WRITE = 'banned-property-non-constant-write' + BANNED_PROPERTY_NON_CONSTANT_WRITE = 'banned-property-non-constant-write', + // Not from JSConformance. + BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT = 'banned-call-non-constant-argument' } /** @@ -19,8 +21,8 @@ export interface Config { /** * Values have a pattern-specific syntax. * - * TODO(rjamet): We'll document them, but for now see each patternKind's tests - * for examples. + * TODO(rjamet): We'll document them, but for now see each patternKind's + * tests for examples. */ values: string[]; @@ -32,13 +34,13 @@ export interface Config { } /** - * A whitelist entry, corresponding to a logical whitelisting rule. Use these to - * distinguish between various logical reasons for whitelisting something: for - * instance, tie these to particular bugs that needed whitelisting, per legacy - * project, manually reviewed entries, and so on. + * A whitelist entry, corresponding to a logical whitelisting rule. Use these + * to distinguish between various logical reasons for whitelisting something: + * for instance, tie these to particular bugs that needed whitelisting, per + * legacy project, manually reviewed entries, and so on. * - * Whitelists are based on the file paths provided by the TS compiler, with both - * regexp-based checks and prefix-based checks. + * Whitelists are based on the file paths provided by the TS compiler, with + * both regexp-based checks and prefix-based checks. * * * Follows the logic in diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts new file mode 100644 index 0000000000..1af786db58 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts @@ -0,0 +1,86 @@ +import * as ts from 'typescript'; +import {Checker} from '../../checker'; +import {ErrorCode} from '../../error_code'; +import {debugLog} from '../ast_tools'; +import {Fixer} from '../fixer'; +import {isLiteral} from '../is_literal'; +import {AbsoluteMatcher} from '../match_symbol'; +import {Config} from '../pattern_config'; +import {PatternEngine} from './pattern_engine'; + +/** + * The engine for BANNED_CALL_NON_CONSTANT_ARGUMENT. + * + * This takes any amount of (functionName, argument) position pairs, separated + * by a colon. The first part matches symbols that were defined on the global + * scope, and their fields, without going through a prototype chain. + * + * For instance, "URL.createObjectURL:0" will target any createObjectURL-named + * call on a URL-named object (like the ambient URL declared in lib.dom.d.ts), + * or "Car.buildFromParts:1" will match any buildFromParts reached from a + * Car-named symbol, including a hypothetical class with a static member + * function "buildFromParts" that lives in its own module. + */ +export class CallNonConstantArgumentEngine extends PatternEngine { + private readonly matchers: Array<[AbsoluteMatcher, number]> = []; + + constructor(config: Config, fixer?: Fixer) { + super(config, fixer); + for (const v of config.values) { + const [matcherSpec, strPosition] = v.split(':', 2); + if (!matcherSpec || !strPosition.match('^\\d+$')) { + throw new Error('Couldn\'t parse values'); + } + const position = Number(strPosition); + this.matchers.push([new AbsoluteMatcher(matcherSpec), position]); + } + } + + register(checker: Checker) { + checker.on( + ts.SyntaxKind.CallExpression, this.checkAndFilterResults.bind(this), + ErrorCode.CONFORMANCE_PATTERN); + } + + check(tc: ts.TypeChecker, n: ts.Node): ts.Node|undefined { + if (!ts.isCallExpression(n)) { + debugLog(`Should not happen: node is not a CallExpression`); + return; + } + debugLog(`inspecting ${n.getText().trim()}`); + + /** + * Inspects a particular CallExpression to see if it calls the target + * function with a non-literal parameter in the target position. Returns + * that CallExpression if `n` matches the search, undefined otherwise. + */ + function checkIndividual( + n: ts.CallExpression, m: [AbsoluteMatcher, number]): ts.CallExpression| + undefined { + if (!m[0].matches(n.expression, tc)) { + debugLog(`Wrong symbol, not ${m[0].bannedName}`); + return; + } + if (n.arguments.length < m[1]) { + debugLog(`Good symbol, not enough arguments to match (got ${ + n.arguments.length}, want ${m[1]})`); + return; + } + if (isLiteral(tc, n.arguments[m[1]])) { + debugLog(`Good symbol, argument literal`); + return; + } + debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ + n.getEnd()}] on node [${n.getText()}]`); + return n; + } + + for (const m of this.matchers) { + // The first matching matcher will be used. + const r = checkIndividual(n, m); + if (r) return r; + } + // No match. + return; + } +} From 80f94c8055ea8737a001fb5da6028fa9b887633c Mon Sep 17 00:00:00 2001 From: rjamet Date: Fri, 2 Aug 2019 15:54:30 -0700 Subject: [PATCH 0623/1134] Clarify tsetse's isLiteral documentation. PiperOrigin-RevId: 261407997 --- .../internal/tsetse/util/is_literal.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/is_literal.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/is_literal.ts index 8b7209c3b5..2f44ce276c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/is_literal.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/is_literal.ts @@ -2,7 +2,21 @@ import * as ts from 'typescript'; import {findInChildren} from './ast_tools'; /** - * Determines if the given ts.Node is literal enough for security purposes. + * Determines if the given ts.Node is literal enough for security purposes. This + * is true when the value is built from compile-time constants, with a certain + * tolerance for indirection in order to make this more user-friendly. + * + * This considers a few different things. We accept + * - What TS deems literal (literal strings, literal numbers, literal booleans, + * enum literals), + * - Binary operations of two expressions that we accept (including + * concatenation), + * - Template interpolations of what we accept, + * - `x?y:z` constructions, if we accept `y` and `z` + * - Variables that are const, and initialized with an expression we accept + * + * And to prevent bypasses, expressions that include casts are not accepted, and + * this checker does not follow imports. */ export function isLiteral(typeChecker: ts.TypeChecker, node: ts.Node): boolean { if (ts.isBinaryExpression(node) && From e512c90d921d82d33fad54d9aeb1da3220044b7b Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 5 Aug 2019 11:00:27 -0700 Subject: [PATCH 0624/1134] Internal change. PiperOrigin-RevId: 261722053 --- .../bazelbuild/rules_typescript/internal/common/tsconfig.bzl | 2 ++ .../rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts | 1 + .../rules_typescript/internal/tsc_wrapped/tsconfig.ts | 2 ++ 3 files changed, 5 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 0fe82547d7..4c4427dc52 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -17,6 +17,7 @@ load(":common/module_mappings.bzl", "get_module_mappings") + _DEBUG = False def create_tsconfig( @@ -161,6 +162,7 @@ def create_tsconfig( if hasattr(ctx.attr, "compile_angular_templates") and ctx.attr.compile_angular_templates: bazel_options["compileAngularTemplates"] = True + if disable_strict_deps: bazel_options["disableStrictDeps"] = disable_strict_deps bazel_options["allowedStrictDeps"] = [] diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index ad7c379456..280d73398a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -332,6 +332,7 @@ function runFromOptions( compilerHost.inputFiles, options, compilerHost, oldProgram)); cache.putProgram(bazelOpts.target, program); + if (!bazelOpts.isJsTranspilation) { // If there are any TypeScript type errors abort now, so the error // messages refer to the original source. After any subsequent passes diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index 9c2980f6c9..9bc0a33b6c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -18,6 +18,7 @@ import * as path from 'path'; import * as ts from 'typescript'; + /** * The configuration block provided by the tsconfig "bazelOptions". * Note that all paths here are relative to the rootDir, not absolute nor @@ -182,6 +183,7 @@ export interface BazelOptions { */ compileAngularTemplates?: boolean; + /** * Override for ECMAScript target language level to use for devmode. * From 238134005fed87a6f4808d3b1471cfe0a24ef55f Mon Sep 17 00:00:00 2001 From: alexeagle Date: Fri, 9 Aug 2019 17:09:30 -0700 Subject: [PATCH 0625/1134] Name AMD module `foo` rather than `foo/module_root/index` We already had logic to name it foo rather than foo/index, introduced in https://github.com/bazelbuild/rules_typescript/commit/875978adf5f83af0d4e612eb17905a713d7cd0a1 If the module_root is specified as a directory on the ts_library, it means that the index file is in that subdirectory of the package. We already handled this case correctly in type-checking, but at runtime the module identifiers don't match so the require('foo/module_root/index') fails. Fixes bazelbuild/rules_nodejs#973 PiperOrigin-RevId: 262663195 --- .../internal/tsc_wrapped/compiler_host.ts | 11 ++-- .../tsc_wrapped/compiler_host_test.ts | 62 +++++++++++++++++++ 2 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host_test.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index 9008a087e8..9cae018243 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -333,11 +333,14 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { if (this.bazelOpts.moduleName) { const relativeFileName = path.posix.relative(this.bazelOpts.package, fileName); + // check that the fileName was actually underneath the package directory if (!relativeFileName.startsWith('..')) { - if (this.bazelOpts.moduleRoot && - this.bazelOpts.moduleRoot.replace(SOURCE_EXT, '') === - relativeFileName) { - return this.bazelOpts.moduleName; + if (this.bazelOpts.moduleRoot) { + const root = this.bazelOpts.moduleRoot.replace(SOURCE_EXT, ''); + if (root === relativeFileName || + path.posix.join(root, 'index') === relativeFileName) { + return this.bazelOpts.moduleName; + } } // Support the common case of commonjs convention that index is the // default module in a directory. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host_test.ts new file mode 100644 index 0000000000..eaa0ac4a27 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host_test.ts @@ -0,0 +1,62 @@ +import 'jasmine'; + +import * as ts from 'typescript'; + +import {CompilerHost} from './compiler_host'; +import {BazelOptions} from './tsconfig'; + +describe('compiler host', () => { + describe('computes the amd module name of a .ts source file', () => { + const options: ts.CompilerOptions = { + rootDirs: [], + rootDir: 'base', + outDir: 'out', + }; + const bazelOptions: BazelOptions = { + package: 'path/to/package', + compilationTargetSrc: [ + 'path/to/package/index.ts', + 'path/to/package/root_dir/index.ts', + 'test.ts', + ], + workspaceName: 'my_wksp', + } as any; + + const defaultHost = + new CompilerHost([], options, bazelOptions, null as any, null as any); + // A module is a file with at least an import or export statement. + function createTsModule(filename: string) { + return ts.createSourceFile(filename, 'export {}', ts.ScriptTarget.ES2015); + } + + it('should name a module after the workspace and filename', () => { + expect(defaultHost.amdModuleName(createTsModule('test.ts'))) + .toBe('my_wksp/test'); + }); + + it('should not provide a name for files that are not in the compilation unit', + () => { + expect( + defaultHost.amdModuleName(createTsModule('some_other_file.d.ts'))) + .toBeUndefined(); + }); + + it('should name the index file with a short name', () => { + const host = new CompilerHost( + [], options, {...bazelOptions, moduleName: 'my_lib'}, null as any, + null as any); + expect(host.amdModuleName(createTsModule('path/to/package/index.ts'))) + .toBe('my_lib'); + }); + it('should name an index file under a module_root with a short name', + () => { + const host = new CompilerHost( + [], options, + {...bazelOptions, moduleName: 'my_lib', moduleRoot: 'root_dir'}, + null as any, null as any); + expect(host.amdModuleName( + createTsModule('path/to/package/root_dir/index.ts'))) + .toBe('my_lib'); + }); + }); +}); From f0331dedbe4f810067c1bf90744bcfb2055227e0 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Mon, 12 Aug 2019 15:50:28 -0700 Subject: [PATCH 0626/1134] Make libraries that depend on //javascript/angular2/testing/catalyst into ng_modules. Currently you need a dep on something in //third_party/javascript/angular2, so people are forced to insert dummy taze comments. PiperOrigin-RevId: 263022649 --- .../rules_typescript/ts_auto_deps/updater/updater.go | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index ff3d986821..b77acbad70 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -958,13 +958,7 @@ func hasAngularDependency(r *build.Rule) bool { for _, li := range edit.AllLists(e) { for _, elem := range li.List { str, ok := elem.(*build.StringExpr) - if !ok { - continue - } - if strings.HasPrefix(str.Value, "//third_party/javascript/angular2") { - return true - } - if str.Value == "//javascript/angular2/testing/catalyst" { + if ok && strings.HasPrefix(str.Value, "//third_party/javascript/angular2") { return true } } From c141586660f9c871ed64306be6e95df4b074be9d Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Tue, 13 Aug 2019 14:31:16 -0700 Subject: [PATCH 0627/1134] Update to latest rules_go Closes #465 PiperOrigin-RevId: 263216442 --- .../bazelbuild/rules_typescript/WORKSPACE | 4 + .../bazelbuild/rules_typescript/package.bzl | 18 +- ...d82a001f378d0605cbbca3fb529979a1c3a6.patch | 1365 +++++++++++++++++ 3 files changed, 1384 insertions(+), 3 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/revert_rules_go_commit_4442d82a001f378d0605cbbca3fb529979a1c3a6.patch diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index 00fe5027da..f4157f2928 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -35,6 +35,10 @@ yarn_install( load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies() +load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps") + +protobuf_deps() + # Setup rules_go toolchain load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index 80522390c4..0f4ad482c4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -47,11 +47,23 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "io_bazel_rules_go", + patch_args = ["-p1"], + # Patch out a breaking change to runfiles support library + # See discussion on https://github.com/bazelbuild/rules_go/pull/2076 + patches = ["@build_bazel_rules_typescript//:revert_rules_go_commit_4442d82a001f378d0605cbbca3fb529979a1c3a6.patch"], + sha256 = "8df59f11fb697743cbb3f26cfb8750395f30471e9eabde0d174c3aebc7a1cd39", urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/0.18.5/rules_go-0.18.5.tar.gz", - "https://github.com/bazelbuild/rules_go/releases/download/0.18.5/rules_go-0.18.5.tar.gz", + "https://storage.googleapis.com/bazel-mirror/github.com/bazelbuild/rules_go/releases/download/0.19.1/rules_go-0.19.1.tar.gz", + "https://github.com/bazelbuild/rules_go/releases/download/0.19.1/rules_go-0.19.1.tar.gz", ], - sha256 = "a82a352bffae6bee4e95f68a8d80a70e87f42c4741e6a448bec11998fcc82329", + ) + + _maybe( + http_archive, + name = "com_google_protobuf", + sha256 = "98e615d592d237f94db8bf033fba78cd404d979b0b70351a9e5aaff725398357", + strip_prefix = "protobuf-3.9.1", + urls = ["https://github.com/protocolbuffers/protobuf/archive/v3.9.1.tar.gz"], ) # go_repository is defined in bazel_gazelle diff --git a/third_party/github.com/bazelbuild/rules_typescript/revert_rules_go_commit_4442d82a001f378d0605cbbca3fb529979a1c3a6.patch b/third_party/github.com/bazelbuild/rules_typescript/revert_rules_go_commit_4442d82a001f378d0605cbbca3fb529979a1c3a6.patch new file mode 100644 index 0000000000..e923592052 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/revert_rules_go_commit_4442d82a001f378d0605cbbca3fb529979a1c3a6.patch @@ -0,0 +1,1365 @@ +diff --git a/go/tools/bazel/BUILD.bazel b/go/tools/bazel/BUILD.bazel +index 6fbd4086..66656084 100644 +--- a/go/tools/bazel/BUILD.bazel ++++ b/go/tools/bazel/BUILD.bazel +@@ -4,6 +4,8 @@ go_library( + name = "go_default_library", + srcs = [ + "bazel.go", ++ "runfiledir.go", ++ "runfilemanifest.go", + "runfiles.go", + ], + importpath = "github.com/bazelbuild/rules_go/go/tools/bazel", +@@ -13,8 +15,13 @@ go_library( + go_test( + name = "go_default_test", + size = "small", +- srcs = ["bazel_test.go"], +- data = ["README.md"], ++ srcs = [ ++ "bazel_test.go", ++ "runfiles_test.go", ++ ], ++ data = [ ++ "README.md", ++ ], + embed = [":go_default_library"], + ) + +diff --git a/go/tools/bazel/bazel.go b/go/tools/bazel/bazel.go +index 08bf3496..37f1b8d1 100644 +--- a/go/tools/bazel/bazel.go ++++ b/go/tools/bazel/bazel.go +@@ -16,14 +16,76 @@ + package bazel + + import ( ++ "fmt" + "io/ioutil" + "os" ++ "path/filepath" ++ "sync" + ) + + const TEST_SRCDIR = "TEST_SRCDIR" + const TEST_TMPDIR = "TEST_TMPDIR" + const TEST_WORKSPACE = "TEST_WORKSPACE" + ++var ( ++ defaultTestWorkspace = "" ++ ++ runfileResolver runfilesResolver ++ runfileResolverErr error ++ runfileResolverOnce sync.Once ++) ++ ++func getRunfilesResolver() (runfilesResolver, error) { ++ runfileResolverOnce.Do(func() { ++ runfileResolver, runfileResolverErr = newRunfilesResolver() ++ }) ++ return runfileResolver, runfileResolverErr ++} ++ ++// Runfile returns an absolute path to the specified file in the runfiles directory of the running target. ++// It searches the current working directory, the runfiles path, and the workspace subdirectory of runfiles. ++// If a runfiles manifest is present, it will be used to resolve files not present in the working directory. ++// Returns an error if the file could not be found, or if an error occurs trying to find the runfiles env. ++func Runfile(path string) (string, error) { ++ // Search in working directory ++ if _, err := os.Stat(path); err == nil { ++ return path, nil ++ } ++ ++ resolver, err := getRunfilesResolver() ++ if err != nil { ++ return "", err ++ } ++ ++ // Search in runfiles. ++ searchPath := []string{path} ++ if workspace, err := TestWorkspace(); err == nil { ++ searchPath = append(searchPath, filepath.Join(workspace, path)) ++ } ++ ++ for _, path := range searchPath { ++ filename, ok := resolver.Resolve(path) ++ if !ok { ++ continue ++ } ++ ++ if _, err := os.Stat(filename); err == nil { ++ return filename, nil ++ } ++ } ++ ++ return "", fmt.Errorf("unable to find file %q", path) ++} ++ ++// RunfilesPath return the path to the run files tree for this test. ++// It returns an error if TEST_SRCDIR does not exist. ++func RunfilesPath() (string, error) { ++ if src, ok := os.LookupEnv(TEST_SRCDIR); ok { ++ return src, nil ++ } ++ return "", fmt.Errorf("environment variable %q is not defined, are you running with bazel test", TEST_SRCDIR) ++} ++ + // NewTmpDir creates a new temporary directory in TestTmpDir(). + func NewTmpDir(prefix string) (string, error) { + return ioutil.TempDir(TestTmpDir(), prefix) +@@ -37,3 +99,90 @@ func TestTmpDir() string { + } + return os.TempDir() + } ++ ++// TestWorkspace returns the name of the Bazel workspace for this test. ++// If TEST_WORKSPACE is not defined, it returns an error. ++func TestWorkspace() (string, error) { ++ if ws, ok := os.LookupEnv(TEST_WORKSPACE); ok { ++ return ws, nil ++ } ++ if defaultTestWorkspace != "" { ++ return defaultTestWorkspace, nil ++ } ++ return "", fmt.Errorf("Unable to find environment variable TEST_WORKSPACE") ++} ++ ++// SetDefaultTestWorkspace allows you to set a fake value for the ++// environment variable TEST_WORKSPACE if it is not defined. This is useful ++// when running tests on the command line and not through Bazel. ++func SetDefaultTestWorkspace(w string) { ++ defaultTestWorkspace = w ++} ++ ++// getCandidates returns the list of all possible "prefix/suffix" paths where there might be an ++// optional component in-between the two pieces. ++// ++// This function exists to cope with issues #1239 because we cannot tell where the built Go ++// binaries are located upfront. ++func getCandidates(prefix string, suffix string) []string { ++ candidates := []string{filepath.Join(prefix, suffix)} ++ if entries, err := ioutil.ReadDir(prefix); err == nil { ++ for _, entry := range entries { ++ candidate := filepath.Join(prefix, entry.Name(), suffix) ++ candidates = append(candidates, candidate) ++ } ++ } ++ return candidates ++} ++ ++// FindBinary locates the given executable within bazel-bin or the current directory. ++// ++// "pkg" indicates the relative path to the build package that contains the binary target, and ++// "binary" indicates the basename of the binary searched for. ++func FindBinary(pkg string, binary string) (string, bool) { ++ candidates := getCandidates(filepath.Join("bazel-bin", pkg), binary) ++ candidates = append(candidates, getCandidates(pkg, binary)...) ++ ++ for _, candidate := range candidates { ++ // Following symlinks here is intentional because Bazel generates symlinks in ++ // general and we don't care about that. ++ if fileInfo, err := os.Stat(candidate); err == nil { ++ if fileInfo.Mode()&os.ModeType == 0 && fileInfo.Mode()&0100 != 0 { ++ return candidate, true ++ } ++ } ++ } ++ return "", false ++} ++ ++// findRunfiles locates the directory under which a built binary can find its data dependencies ++// using relative paths. ++func findRunfiles(workspace string, pkg string, binary string, cookie string) (string, bool) { ++ candidates := getCandidates(filepath.Join("bazel-bin", pkg), filepath.Join(binary+".runfiles", workspace)) ++ candidates = append(candidates, ".") ++ ++ for _, candidate := range candidates { ++ if _, err := os.Stat(filepath.Join(candidate, cookie)); err == nil { ++ return candidate, true ++ } ++ } ++ return "", false ++} ++ ++// EnterRunfiles locates the directory under which a built binary can find its data dependencies ++// using relative paths, and enters that directory. ++// ++// "workspace" indicates the name of the current project, "pkg" indicates the relative path to the ++// build package that contains the binary target, "binary" indicates the basename of the binary ++// searched for, and "cookie" indicates an arbitrary data file that we expect to find within the ++// runfiles tree. ++func EnterRunfiles(workspace string, pkg string, binary string, cookie string) error { ++ runfiles, ok := findRunfiles(workspace, pkg, binary, cookie) ++ if !ok { ++ return fmt.Errorf("cannot find runfiles tree") ++ } ++ if err := os.Chdir(runfiles); err != nil { ++ return fmt.Errorf("cannot enter runfiles tree: %v", err) ++ } ++ return nil ++} +diff --git a/go/tools/bazel/bazel_test.go b/go/tools/bazel/bazel_test.go +index 66aa5876..41c9eed2 100644 +--- a/go/tools/bazel/bazel_test.go ++++ b/go/tools/bazel/bazel_test.go +@@ -126,6 +126,137 @@ func TestTestWorkspace(t *testing.T) { + } + } + ++func TestTestWorkspaceWithoutDefaultSet(t *testing.T) { ++ if oldVal, ok := os.LookupEnv(TEST_WORKSPACE); ok { ++ defer os.Setenv(TEST_WORKSPACE, oldVal) ++ } else { ++ t.Errorf("Terrible things are happening. You can't read env variables") ++ } ++ os.Unsetenv(TEST_WORKSPACE) ++ ++ workspace, err := TestWorkspace() ++ ++ if workspace != "" { ++ t.Errorf("Workspace should be left empty but was: %s", workspace) ++ } ++ ++ if err == nil { ++ t.Errorf("Expected error but instead passed") ++ } ++} ++ ++func TestTestWorkspaceWithDefaultSet(t *testing.T) { ++ if oldVal, ok := os.LookupEnv(TEST_WORKSPACE); ok { ++ defer os.Setenv(TEST_WORKSPACE, oldVal) ++ } else { ++ t.Errorf("Terrible things are happening. You can't read env variables") ++ } ++ os.Unsetenv(TEST_WORKSPACE) ++ ++ SetDefaultTestWorkspace("default_value") ++ workspace, err := TestWorkspace() ++ ++ if workspace == "" { ++ t.Errorf("Workspace is left empty") ++ } ++ ++ if err != nil { ++ t.Errorf("Unable to get workspace with error %s", err) ++ } ++} ++ ++func TestFindBinary(t *testing.T) { ++ testData := []struct { ++ name string ++ ++ pathsToCreate []string ++ wantBinary string ++ wantOk bool ++ }{ ++ { ++ "NoFiles", ++ []string{}, ++ "", ++ false, ++ }, ++ { ++ "CurrentDirectoryNoConfigurationInPath", ++ []string{ ++ "some/package/", ++ "some/package/bin*", ++ }, ++ "some/package/bin", ++ true, ++ }, ++ { ++ "CurrentDirectoryConfigurationInPath", ++ []string{ ++ "some/package/amd64/", ++ "some/package/arm64/", ++ "some/package/arm64/bin*", ++ "some/package/powerpc/", ++ }, ++ "some/package/arm64/bin", ++ true, ++ }, ++ { ++ "BazelBinNoConfigurationInPath", ++ []string{ ++ "bazel-bin/some/package/", ++ "bazel-bin/some/package/bin*", ++ "bin", // bazel-bin should be preferred. ++ }, ++ "bazel-bin/some/package/bin", ++ true, ++ }, ++ { ++ "BazelBinConfigurationInPath", ++ []string{ ++ "bazel-bin/some/package/amd64/", ++ "bazel-bin/some/package/arm64/", ++ "bazel-bin/some/package/arm64/bin*", ++ "bazel-bin/some/package/powerpc/", ++ "bin", // bazel-bin should be preferred. ++ "some/package/amd64/", ++ "some/package/amd64/bin", // bazel-bin should be preferred. ++ }, ++ "bazel-bin/some/package/arm64/bin", ++ true, ++ }, ++ { ++ "IgnoreNonExecutable", ++ []string{ ++ "bazel-bin/some/package/amd64/", ++ "bazel-bin/some/package/amd64/bin", ++ "bazel-bin/some/package/arm64/", ++ "bazel-bin/some/package/arm64/bin*", ++ "bazel-bin/some/package/powerpc/", ++ "bazel-bin/some/package/powerpc/bin", ++ }, ++ "bazel-bin/some/package/arm64/bin", ++ true, ++ }, ++ } ++ for _, d := range testData { ++ t.Run(d.name, func(t *testing.T) { ++ cleanup, err := makeAndEnterTempdir() ++ if err != nil { ++ t.Fatal(err) ++ } ++ defer cleanup() ++ ++ if err := createPaths(d.pathsToCreate); err != nil { ++ t.Fatal(err) ++ } ++ ++ binary, ok := FindBinary("some/package", "bin") ++ if binary != d.wantBinary || ok != d.wantOk { ++ t.Errorf("Got %s, %v; want %s, %v", binary, ok, d.wantBinary, d.wantOk) ++ } ++ }) ++ } ++} ++ + func TestFindRunfiles(t *testing.T) { + testData := []struct { + name string +diff --git a/go/tools/bazel/runfiledir.go b/go/tools/bazel/runfiledir.go +new file mode 100644 +index 00000000..255d1452 +--- /dev/null ++++ b/go/tools/bazel/runfiledir.go +@@ -0,0 +1,32 @@ ++// Copyright 2018 The Bazel Authors. ++// ++// Licensed under the Apache License, Version 2.0 (the "License"); ++// you may not use this file except in compliance with the License. ++// You may obtain a copy of the License at ++// ++// http://www.apache.org/licenses/LICENSE-2.0 ++// ++// Unless required by applicable law or agreed to in writing, software ++// distributed under the License is distributed on an "AS IS" BASIS, ++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++// See the License for the specific language governing permissions and ++// limitations under the License. ++ ++package bazel ++ ++import ( ++ "path/filepath" ++) ++ ++type directoryResolver string ++ ++// newDirectoryRunfilesResolver creates a new runfiles resolver that uses a runfiles directory to derive ++// filenames. ++func newDirectoryRunfilesResolver(directory string) (runfilesResolver, error) { ++ return directoryResolver(directory), nil ++} ++ ++// Resolve implements the Resolver interface. ++func (r directoryResolver) Resolve(n string) (string, bool) { ++ return filepath.Join(string(r), n), true ++} +diff --git a/go/tools/bazel/runfilemanifest.go b/go/tools/bazel/runfilemanifest.go +new file mode 100644 +index 00000000..8392a4b0 +--- /dev/null ++++ b/go/tools/bazel/runfilemanifest.go +@@ -0,0 +1,53 @@ ++// Copyright 2018 The Bazel Authors. ++// ++// Licensed under the Apache License, Version 2.0 (the "License"); ++// you may not use this file except in compliance with the License. ++// You may obtain a copy of the License at ++// ++// http://www.apache.org/licenses/LICENSE-2.0 ++// ++// Unless required by applicable law or agreed to in writing, software ++// distributed under the License is distributed on an "AS IS" BASIS, ++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++// See the License for the specific language governing permissions and ++// limitations under the License. ++ ++package bazel ++ ++import ( ++ "bufio" ++ "errors" ++ "io" ++ "path/filepath" ++ "strings" ++) ++ ++var errManifestInvalid = errors.New("runfiles manifest syntax error") ++ ++type manifestResolver map[string]string ++ ++// newManifestRunfilesResolver creates a new runfiles resolver that uses a manifest file to resolve ++// filenames. ++func newManifestRunfilesResolver(manifest io.Reader) (runfilesResolver, error) { ++ resolver := manifestResolver{} ++ scanner := bufio.NewScanner(manifest) ++ ++ for scanner.Scan() { ++ a := strings.SplitN(scanner.Text(), " ", 2) ++ if len(a) != 2 { ++ return nil, errManifestInvalid ++ } ++ resolver[filepath.Clean(a[0])] = a[1] ++ } ++ ++ return resolver, nil ++} ++ ++// Resolve implements the Resolver interface. ++func (r manifestResolver) Resolve(n string) (string, bool) { ++ if fn, ok := r[filepath.Clean(n)]; ok { ++ return fn, true ++ } ++ ++ return "", false ++} +diff --git a/go/tools/bazel/runfiles.go b/go/tools/bazel/runfiles.go +index ed053e90..16ca3e16 100644 +--- a/go/tools/bazel/runfiles.go ++++ b/go/tools/bazel/runfiles.go +@@ -15,17 +15,8 @@ + package bazel + + import ( +- "bytes" + "errors" +- "fmt" +- "io/ioutil" + "os" +- "path" +- "path/filepath" +- "runtime" +- "sort" +- "strings" +- "sync" + ) + + const ( +@@ -33,393 +24,31 @@ const ( + RUNFILES_DIR = "RUNFILES_DIR" + ) + +-// Runfile returns an absolute path to the file named by "path", which +-// should be a relative path from the workspace root to the file within +-// the bazel workspace. +-// +-// Runfile may be called from tests invoked with 'bazel test' and +-// binaries invoked with 'bazel run'. On Windows, +-// only tests invoked with 'bazel test' are supported. +-func Runfile(path string) (string, error) { +- // Search in working directory +- if _, err := os.Stat(path); err == nil { +- return filepath.Abs(path) +- } +- +- if err := ensureRunfiles(); err != nil { +- return "", err +- } +- +- // Search manifest if we have one. +- if entry, ok := runfiles.index[path]; ok { +- return entry.Path, nil +- } +- +- // Search the main workspace. +- if runfiles.workspace != "" { +- mainPath := filepath.Join(runfiles.dir, runfiles.workspace, path) +- if _, err := os.Stat(mainPath); err == nil { +- return mainPath, nil +- } +- } +- +- // Search other workspaces. +- for _, w := range runfiles.workspaces { +- workPath := filepath.Join(runfiles.dir, w, path) +- if _, err := os.Stat(workPath); err == nil { +- return workPath, nil +- } +- } +- +- return "", fmt.Errorf("Runfile %s: could not locate file", path) +-} +- +-// FindBinary returns an absolute path to the binary built from a go_binary +-// rule in the given package with the given name. FindBinary is similar to +-// Runfile, but it accounts for varying configurations and file extensions, +-// which may cause the binary to have different paths on different platforms. +-// +-// FindBinary may be called from tests invoked with 'bazel test' and +-// binaries invoked with 'bazel run'. On Windows, +-// only tests invoked with 'bazel test' are supported. +-func FindBinary(pkg, name string) (string, bool) { +- if err := ensureRunfiles(); err != nil { +- return "", false +- } +- +- // If we've gathered a list of runfiles, either by calling ListRunfiles or +- // parsing the manifest on Windows, just use that instead of searching +- // directories. Return the first match. The manifest on Windows may contain +- // multiple entries for the same file. +- if runfiles.list != nil { +- if runtime.GOOS == "windows" { +- name += ".exe" +- } +- for _, entry := range runfiles.list { +- if path.Base(entry.ShortPath) != name { +- continue +- } +- pkgDir := path.Dir(path.Dir(entry.ShortPath)) +- if pkgDir == "." { +- pkgDir = "" +- } +- if pkgDir != pkg { +- continue +- } +- return entry.Path, true +- } +- return "", false +- } +- +- dir, err := Runfile(pkg) +- if err != nil { +- return "", false +- } +- var found string +- stopErr := errors.New("stop") +- err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { +- if err != nil { +- return err +- } +- base := filepath.Base(path) +- stem := strings.TrimSuffix(base, ".exe") +- if stem != name { +- return nil +- } +- if runtime.GOOS != "windows" { +- if st, err := os.Stat(path); err != nil { +- return err +- } else if st.Mode()&0111 == 0 { +- return nil +- } +- } +- if stem == name { +- found = path +- return stopErr +- } +- return nil +- }) +- if err == stopErr { +- return found, true +- } else { +- return "", false +- } +-} +- +-// A RunfileEntry describes a runfile. +-type RunfileEntry struct { +- // Workspace is the bazel workspace the file came from. For example, +- // this would be "io_bazel_rules_go" for a file in rules_go. +- Workspace string +- +- // ShortPath is a relative, slash-separated path from the workspace root +- // to the file. For non-binary files, this may be passed to Runfile +- // to locate a file. +- ShortPath string +- +- // Path is an absolute path to the file. +- Path string +-} +- +-// ListRunfiles returns a list of available runfiles. +-func ListRunfiles() ([]RunfileEntry, error) { +- if err := ensureRunfiles(); err != nil { +- return nil, err +- } +- +- if runfiles.list == nil && runfiles.dir != "" { +- runfiles.listOnce.Do(func() { +- var list []RunfileEntry +- haveWorkspaces := strings.HasSuffix(runfiles.dir, ".runfiles") && runfiles.workspace != "" +- +- err := filepath.Walk(runfiles.dir, func(path string, info os.FileInfo, err error) error { +- if err != nil { +- return err +- } +- rel, _ := filepath.Rel(runfiles.dir, path) +- rel = filepath.ToSlash(rel) +- if rel == "." { +- return nil +- } +- +- var workspace, shortPath string +- if haveWorkspaces { +- if i := strings.IndexByte(rel, '/'); i < 0 { +- return nil +- } else { +- workspace, shortPath = rel[:i], rel[i+1:] +- } +- } else { +- workspace, shortPath = "", rel +- } +- +- list = append(list, RunfileEntry{Workspace: workspace, ShortPath: shortPath, Path: path}) +- return nil +- }) +- if err != nil { +- runfiles.err = err +- return +- } +- runfiles.list = list +- }) +- } +- return runfiles.list, runfiles.err +-} +- +-// TestWorkspace returns the name of the Bazel workspace for this test. +-// TestWorkspace returns an error if the TEST_WORKSPACE environment variable +-// was not set or SetDefaultTestWorkspace was not called. +-func TestWorkspace() (string, error) { +- if err := ensureRunfiles(); err != nil { +- return "", err +- } +- if runfiles.workspace != "" { +- return runfiles.workspace, nil +- } +- return "", errors.New("TEST_WORKSPACE not set and SetDefaultTestWorkspace not called") +-} ++var errNoRunfilesEnv = errors.New("runfiles environment missing") + +-// SetDefaultTestWorkspace allows you to set a fake value for the +-// environment variable TEST_WORKSPACE if it is not defined. This is useful +-// when running tests on the command line and not through Bazel. +-func SetDefaultTestWorkspace(w string) { +- ensureRunfiles() +- runfiles.workspace = w ++// runfilesResolver is an interface for a resolver that can take a runfiles path and resolve it to a path on ++// disk. ++type runfilesResolver interface { ++ Resolve(string) (string, bool) + } + +-// RunfilesPath return the path to the runfiles tree. +-// It will return an error if there is no runfiles tree, for example because +-// the executable is run on Windows or was not invoked with 'bazel test' +-// or 'bazel run'. +-func RunfilesPath() (string, error) { +- if err := ensureRunfiles(); err != nil { +- return "", err +- } +- if runfiles.dir == "" { +- if runtime.GOOS == "windows" { +- return "", errors.New("RunfilesPath: no runfiles directory on windows") +- } else { +- return "", errors.New("could not locate runfiles directory") +- } +- } +- if runfiles.workspace == "" { +- return "", errors.New("could not locate runfiles workspace") +- } +- return filepath.Join(runfiles.dir, runfiles.workspace), nil +-} +- +-// EnterRunfiles locates the directory under which a built binary can find its data dependencies +-// using relative paths, and enters that directory. +-// +-// "workspace" indicates the name of the current project, "pkg" indicates the relative path to the +-// build package that contains the binary target, "binary" indicates the basename of the binary +-// searched for, and "cookie" indicates an arbitrary data file that we expect to find within the +-// runfiles tree. +-// +-// DEPRECATED: use RunfilesPath instead. +-func EnterRunfiles(workspace string, pkg string, binary string, cookie string) error { +- runfiles, ok := findRunfiles(workspace, pkg, binary, cookie) +- if !ok { +- return fmt.Errorf("cannot find runfiles tree") +- } +- if err := os.Chdir(runfiles); err != nil { +- return fmt.Errorf("cannot enter runfiles tree: %v", err) +- } +- return nil +-} +- +-var runfiles = struct { +- once, listOnce sync.Once +- +- // list is a list of known runfiles, either loaded from the manifest +- // or discovered by walking the runfile directory. +- list []RunfileEntry +- +- // index maps runfile short paths to absolute paths. +- index map[string]RunfileEntry +- +- // dir is a path to the runfile directory. Typically this is a directory +- // named .runfiles, with a subdirectory for each workspace. +- dir string +- +- // workspace is workspace where the binary or test was built. +- workspace string +- +- // workspaces is a list of other workspace names. +- workspaces []string +- +- // err is set when there is an error loading runfiles, for example, +- // parsing the manifest. +- err error +-}{} +- +-func ensureRunfiles() error { +- runfiles.once.Do(initRunfiles) +- return runfiles.err +-} +- +-func initRunfiles() { +- manifest := os.Getenv("RUNFILES_MANIFEST_FILE") ++// newRunfilesResolver creates a new runfiles resolver. The type of resolver and its parameters are derived ++// from the environment. ++func newRunfilesResolver() (runfilesResolver, error) { ++ manifest := os.Getenv(RUNFILES_MANIFEST_FILE) + if manifest != "" { +- // On Windows, Bazel doesn't create a symlink tree of runfiles because +- // Windows doesn't support symbolic links by default. Instead, runfile +- // locations are written to a manifest file. +- runfiles.index = make(map[string]RunfileEntry) +- data, err := ioutil.ReadFile(manifest) ++ f, err := os.Open(manifest) + if err != nil { +- runfiles.err = err +- return ++ return nil, err + } +- lineno := 0 +- for len(data) > 0 { +- i := bytes.IndexByte(data, '\n') +- var line []byte +- if i < 0 { +- line = data +- data = nil +- } else { +- line = data[:i] +- data = data[i+1:] +- } +- lineno++ +- line = bytes.TrimSpace(line) +- if len(line) == 0 { +- continue +- } +- e := bytes.SplitN(line, []byte(" "), 2) +- if len(e) < 2 { +- runfiles.err = fmt.Errorf("error parsing runfiles manifest: %s:%d: no space", manifest, lineno) +- return +- } +- +- entry := RunfileEntry{ShortPath: string(e[0]), Path: string(e[1])} +- if i := strings.IndexByte(entry.ShortPath, '/'); i >= 0 { +- entry.Workspace = entry.ShortPath[:i] +- entry.ShortPath = entry.ShortPath[i+1:] +- } +- if strings.HasPrefix(entry.ShortPath, "external/") { +- entry.ShortPath = entry.ShortPath[len("external/"):] +- if i := strings.IndexByte(entry.ShortPath, '/'); i >= 0 { +- entry.Workspace = entry.ShortPath[:i] +- entry.ShortPath = entry.ShortPath[i+1:] +- } +- } +- +- runfiles.list = append(runfiles.list, entry) +- runfiles.index[entry.ShortPath] = entry +- } +- } +- +- runfiles.workspace = os.Getenv("TEST_WORKSPACE") +- +- if dir := os.Getenv("RUNFILES_DIR"); dir != "" { +- runfiles.dir = dir +- } else if dir = os.Getenv("TEST_SRCDIR"); dir != "" { +- runfiles.dir = dir +- } else if runtime.GOOS != "windows" { +- dir, err := os.Getwd() +- if err != nil { +- runfiles.err = fmt.Errorf("error localting runfiles dir: %v", err) +- return +- } +- +- parent := filepath.Dir(dir) +- if strings.HasSuffix(parent, ".runfiles") { +- runfiles.dir = parent +- if runfiles.workspace == "" { +- runfiles.workspace = filepath.Base(dir) +- } +- } else { +- runfiles.err = errors.New("could not locate runfiles directory") +- return +- } +- } +- +- if runfiles.dir != "" { +- fis, err := ioutil.ReadDir(runfiles.dir) +- if err != nil { +- runfiles.err = fmt.Errorf("could not open runfiles directory: %v", err) +- return +- } +- for _, fi := range fis { +- if fi.IsDir() { +- runfiles.workspaces = append(runfiles.workspaces, fi.Name()) +- } +- } +- sort.Strings(runfiles.workspaces) ++ defer f.Close() ++ return newManifestRunfilesResolver(f) + } +-} + +-// getCandidates returns the list of all possible "prefix/suffix" paths where there might be an +-// optional component in-between the two pieces. +-// +-// This function exists to cope with issues #1239 because we cannot tell where the built Go +-// binaries are located upfront. +-// +-// DEPRECATED: only used by EnterRunfiles. +-func getCandidates(prefix string, suffix string) []string { +- candidates := []string{filepath.Join(prefix, suffix)} +- if entries, err := ioutil.ReadDir(prefix); err == nil { +- for _, entry := range entries { +- candidate := filepath.Join(prefix, entry.Name(), suffix) +- candidates = append(candidates, candidate) +- } ++ directory := os.Getenv(RUNFILES_DIR) ++ if directory != "" { ++ return newDirectoryRunfilesResolver(directory) + } +- return candidates +-} +- +-// findRunfiles locates the directory under which a built binary can find its data dependencies +-// using relative paths. +-// +-// DEPRECATED: only used by EnterRunfiles. +-func findRunfiles(workspace string, pkg string, binary string, cookie string) (string, bool) { +- candidates := getCandidates(filepath.Join("bazel-bin", pkg), filepath.Join(binary+".runfiles", workspace)) +- candidates = append(candidates, ".") + +- for _, candidate := range candidates { +- if _, err := os.Stat(filepath.Join(candidate, cookie)); err == nil { +- return candidate, true +- } +- } +- return "", false ++ return nil, errNoRunfilesEnv + } +diff --git a/go/tools/bazel/runfiles_test.go b/go/tools/bazel/runfiles_test.go +new file mode 100644 +index 00000000..b7bd44f0 +--- /dev/null ++++ b/go/tools/bazel/runfiles_test.go +@@ -0,0 +1,125 @@ ++// Copyright 2018 The Bazel Authors. ++// ++// Licensed under the Apache License, Version 2.0 (the "License"); ++// you may not use this file except in compliance with the License. ++// You may obtain a copy of the License at ++// ++// http://www.apache.org/licenses/LICENSE-2.0 ++// ++// Unless required by applicable law or agreed to in writing, software ++// distributed under the License is distributed on an "AS IS" BASIS, ++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++// See the License for the specific language governing permissions and ++// limitations under the License. ++ ++package bazel ++ ++import ( ++ "io/ioutil" ++ "os" ++ "path/filepath" ++ "testing" ++) ++ ++func setenvForTest(key, value string) (cleanup func()) { ++ if old, ok := os.LookupEnv(key); ok { ++ cleanup = func() { os.Setenv(key, old) } ++ } else { ++ cleanup = func() { os.Unsetenv(key) } ++ } ++ os.Setenv(key, value) ++ return cleanup ++} ++ ++func setupResolverForTest() { ++ // Prevent initialization code from running. ++ runfileResolverOnce.Do(func() {}) ++ runfileResolver, runfileResolverErr = newRunfilesResolver() ++} ++ ++func TestManifestRunfiles(t *testing.T) { ++ dir, err := NewTmpDir("test") ++ if err != nil { ++ t.Fatal(err) ++ } ++ defer os.RemoveAll(dir) ++ ++ testStr := "This is a test" ++ mappedFilename := filepath.Join(dir, "mapped_file.txt") ++ if err := ioutil.WriteFile(mappedFilename, []byte(testStr), 0600); err != nil { ++ t.Fatal(err) ++ } ++ ++ manifestFilename := filepath.Join(dir, "MANIFEST") ++ if err := ioutil.WriteFile(manifestFilename, []byte("runfiles/test.txt "+mappedFilename), 0600); err != nil { ++ t.Fatal(err) ++ } ++ ++ cleanupManifestEnv := setenvForTest(RUNFILES_MANIFEST_FILE, manifestFilename) ++ defer cleanupManifestEnv() ++ cleanupDirEnv := setenvForTest(RUNFILES_DIR, "") ++ defer cleanupDirEnv() ++ ++ setupResolverForTest() ++ if runfileResolverErr != nil { ++ t.Fatal(runfileResolverErr) ++ } ++ if _, ok := runfileResolver.(manifestResolver); !ok { ++ t.Error("resolver should be manifest resolver") ++ } ++ ++ filename, err := Runfile("runfiles/test.txt") ++ if err != nil { ++ t.Fatal(err) ++ } ++ ++ d, err := ioutil.ReadFile(filename) ++ if err != nil { ++ t.Fatal(err) ++ } ++ ++ if string(d) != testStr { ++ t.Errorf("expected %s, got %s", testStr, string(d)) ++ } ++} ++ ++func TestDirectoryRunfiles(t *testing.T) { ++ dir, err := NewTmpDir("test") ++ if err != nil { ++ t.Fatal(err) ++ } ++ defer os.RemoveAll(dir) ++ ++ testStr := "This is a test" ++ mappedfn := filepath.Join(dir, "runfile.txt") ++ if err := ioutil.WriteFile(mappedfn, []byte(testStr), 0600); err != nil { ++ t.Fatal(err) ++ } ++ ++ cleanupManifestEnv := setenvForTest(RUNFILES_MANIFEST_FILE, "") ++ defer cleanupManifestEnv() ++ cleanupDirEnv := setenvForTest(RUNFILES_DIR, dir) ++ defer cleanupDirEnv() ++ ++ setupResolverForTest() ++ if runfileResolverErr != nil { ++ t.Fatal(runfileResolverErr) ++ } ++ if _, ok := runfileResolver.(directoryResolver); !ok { ++ t.Error("resolver should be directory resolver") ++ } ++ ++ filename, err := Runfile("runfile.txt") ++ if err != nil { ++ t.Fatal(err) ++ } ++ ++ d, err := ioutil.ReadFile(filename) ++ if err != nil { ++ t.Fatal(err) ++ } ++ ++ if string(d) != testStr { ++ t.Errorf("expected %s, got %s", testStr, string(d)) ++ } ++} +diff --git a/tests/core/runfiles/BUILD.bazel b/tests/core/runfiles/BUILD.bazel +deleted file mode 100644 +index c7db6d3d..00000000 +--- a/tests/core/runfiles/BUILD.bazel ++++ /dev/null +@@ -1,48 +0,0 @@ +-load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_test") +- +-package(default_visibility = ["//visibility:public"]) +- +-test_suite( +- name = "runfiles_tests", +- tests = [ +- ":local_test", +- "@runfiles_remote_test//:remote_test", +- ], +-) +- +-go_test( +- name = "local_test", +- srcs = ["runfiles_test.go"], +- deps = [":check_runfiles"], +-) +- +-go_binary( +- name = "local_cmd", +- srcs = ["runfiles_cmd.go"], +- deps = [":check_runfiles"], +-) +- +-go_binary( +- name = "local_bin", +- srcs = ["empty_bin.go"], +-) +- +-go_library( +- name = "check_runfiles", +- srcs = ["check_runfiles.go"], +- data = [ +- "local_file.txt", +- ":local_bin", +- ":local_group", +- "@runfiles_remote_test//:remote_bin", +- "@runfiles_remote_test//:remote_file.txt", +- "@runfiles_remote_test//:remote_group", +- ], +- importpath = "github.com/bazelbuild/rules_go/tests/core/runfiles/check", +- deps = ["//go/tools/bazel:go_default_library"], +-) +- +-filegroup( +- name = "local_group", +- srcs = ["local_group.txt"], +-) +diff --git a/tests/core/runfiles/README.rst b/tests/core/runfiles/README.rst +deleted file mode 100644 +index ec357826..00000000 +--- a/tests/core/runfiles/README.rst ++++ /dev/null +@@ -1,23 +0,0 @@ +-Runfiles functionality +-===================== +- +-runfiles_tests +--------------- +- +-Checks that functions in ``//go/tools/bazel:go_default_library`` that +-provide access to runfiles behave correctly. In particular, this checks: +- +-* ``Runfile`` works for regular files. +-* ``FindBinary`` works for binaries. +-* ``ListRunfiles`` lists all expected files. +-* These functions work for runfiles in the local workspace and for files in +- external repositories (``@runfiles_remote_test`` is a ``local_repository`` +- that points to a subdirectory here). +-* These functions work in tests invoked with ``bazel test`` and +- binaries invoked with ``bazel run``. +-* These functions work on Windows and other platforms. Bazel doesn't +- create a symlink tree for runfiles on Windows since symbolic links +- can't be created without administrative privilege by default. +- +-TODO: Verify binary behavior in CI. The ``local_bin`` and ``remote_bin`` +-targets verify behavior for binaries, but they are not tests. +diff --git a/tests/core/runfiles/bin.go b/tests/core/runfiles/bin.go +deleted file mode 100644 +index 0ced7a9e..00000000 +--- a/tests/core/runfiles/bin.go ++++ /dev/null +@@ -1,17 +0,0 @@ +-// Copyright 2019 The Bazel Authors. All rights reserved. +-// +-// Licensed under the Apache License, Version 2.0 (the "License"); +-// you may not use this file except in compliance with the License. +-// You may obtain a copy of the License at +-// +-// http://www.apache.org/licenses/LICENSE-2.0 +-// +-// Unless required by applicable law or agreed to in writing, software +-// distributed under the License is distributed on an "AS IS" BASIS, +-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-// See the License for the specific language governing permissions and +-// limitations under the License. +- +-package main +- +-func main() {} +diff --git a/tests/core/runfiles/check_runfiles.go b/tests/core/runfiles/check_runfiles.go +deleted file mode 100644 +index 8858a573..00000000 +--- a/tests/core/runfiles/check_runfiles.go ++++ /dev/null +@@ -1,121 +0,0 @@ +-// Copyright 2019 The Bazel Authors. All rights reserved. +-// +-// Licensed under the Apache License, Version 2.0 (the "License"); +-// you may not use this file except in compliance with the License. +-// You may obtain a copy of the License at +-// +-// http://www.apache.org/licenses/LICENSE-2.0 +-// +-// Unless required by applicable law or agreed to in writing, software +-// distributed under the License is distributed on an "AS IS" BASIS, +-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-// See the License for the specific language governing permissions and +-// limitations under the License. +- +-package check +- +-import ( +- "fmt" +- "os" +- "path/filepath" +- "runtime" +- "sort" +- "strings" +- +- "github.com/bazelbuild/rules_go/go/tools/bazel" +-) +- +-type TestFile struct { +- Workspace, ShortPath, Path string +- Binary bool +-} +- +-var DefaultTestFiles = []TestFile{ +- {Workspace: "io_bazel_rules_go", Path: "tests/core/runfiles/local_file.txt"}, +- {Workspace: "io_bazel_rules_go", Path: "tests/core/runfiles/local_group.txt"}, +- {Workspace: "io_bazel_rules_go", Path: "tests/core/runfiles/local_bin", Binary: true}, +- {Workspace: "runfiles_remote_test", Path: "remote_file.txt"}, +- {Workspace: "runfiles_remote_test", Path: "remote_group.txt"}, +- {Workspace: "runfiles_remote_test", Path: "remote_bin", Binary: true}, +-} +- +-func CheckRunfiles(files []TestFile) error { +- // Check that the runfiles directory matches the current workspace. +- // There is no runfiles directory on Windows. +- if runtime.GOOS != "windows" { +- dir, err := bazel.RunfilesPath() +- if err != nil { +- return err +- } +- root, base := filepath.Dir(dir), filepath.Base(dir) +- if !strings.HasSuffix(root, ".runfiles") { +- return fmt.Errorf("RunfilesPath: %q is not a .runfiles directory", dir) +- } +- workspace := os.Getenv("TEST_WORKSPACE") +- if workspace != "" && workspace != base { +- return fmt.Errorf("RunfilesPath: %q does not match test workspace %s", dir, workspace) +- } +- if srcDir := os.Getenv("TEST_SRCDIR"); srcDir != "" && filepath.Join(srcDir, workspace) != dir { +- return fmt.Errorf("RunfilesPath: %q does not match TEST_SRCDIR %q", dir, srcDir) +- } +- } +- +- // Check that files can be found with Runfile or FindBinary. +- // Make sure the paths returned are absolute paths to actual files. +- seen := make(map[string]string) +- for _, f := range files { +- var got string +- var err error +- if !f.Binary { +- if got, err = bazel.Runfile(f.Path); err != nil { +- return err +- } +- if !filepath.IsAbs(got) { +- return fmt.Errorf("Runfile %s: got a relative path %q; want absolute", f.Path, got) +- } +- seen[f.Path] = got +- } else { +- var pkg, name string +- if i := strings.LastIndex(f.Path, "/"); i < 0 { +- name = f.Path +- } else { +- pkg = f.Path[:i] +- name = f.Path[i+1:] +- } +- var ok bool +- if got, ok = bazel.FindBinary(pkg, name); !ok { +- return fmt.Errorf("FindBinary %s %s: could not find binary", pkg, name) +- } +- if !filepath.IsAbs(got) { +- return fmt.Errorf("FindBinary %s %s: got a relative path %q; want absolute", pkg, name, got) +- } +- } +- +- if _, err := os.Stat(got); err != nil { +- return fmt.Errorf("%s: could not stat: %v", f.Path, err) +- } +- } +- +- // Check that the files can be listed. +- entries, err := bazel.ListRunfiles() +- if err != nil { +- return err +- } +- for _, e := range entries { +- if want, ok := seen[e.ShortPath]; ok && want != e.Path { +- return err +- } +- delete(seen, e.ShortPath) +- } +- +- if len(seen) > 0 { +- unseen := make([]string, 0, len(seen)) +- for short := range seen { +- unseen = append(unseen, short) +- } +- sort.Strings(unseen) +- return fmt.Errorf("ListRunfiles did not include files:\n\t%s", strings.Join(unseen, "\n\t")) +- } +- +- return nil +-} +diff --git a/tests/core/runfiles/empty_bin.go b/tests/core/runfiles/empty_bin.go +deleted file mode 100644 +index 38dd16da..00000000 +--- a/tests/core/runfiles/empty_bin.go ++++ /dev/null +@@ -1,3 +0,0 @@ +-package main +- +-func main() {} +diff --git a/tests/core/runfiles/local_file.txt b/tests/core/runfiles/local_file.txt +deleted file mode 100644 +index e69de29b..00000000 +diff --git a/tests/core/runfiles/local_group.txt b/tests/core/runfiles/local_group.txt +deleted file mode 100644 +index e69de29b..00000000 +diff --git a/tests/core/runfiles/runfiles_cmd.go b/tests/core/runfiles/runfiles_cmd.go +deleted file mode 100644 +index 0ab124b5..00000000 +--- a/tests/core/runfiles/runfiles_cmd.go ++++ /dev/null +@@ -1,28 +0,0 @@ +-// Copyright 2019 The Bazel Authors. All rights reserved. +-// +-// Licensed under the Apache License, Version 2.0 (the "License"); +-// you may not use this file except in compliance with the License. +-// You may obtain a copy of the License at +-// +-// http://www.apache.org/licenses/LICENSE-2.0 +-// +-// Unless required by applicable law or agreed to in writing, software +-// distributed under the License is distributed on an "AS IS" BASIS, +-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-// See the License for the specific language governing permissions and +-// limitations under the License. +- +-package main +- +-import ( +- "fmt" +- "os" +- +- "github.com/bazelbuild/rules_go/tests/core/runfiles/check" +-) +- +-func main() { +- if err := check.CheckRunfiles(check.DefaultTestFiles); err != nil { +- fmt.Fprintln(os.Stderr, err.Error()) +- } +-} +diff --git a/tests/core/runfiles/runfiles_remote_test/BUILD.bazel b/tests/core/runfiles/runfiles_remote_test/BUILD.bazel +deleted file mode 100644 +index 112dcd35..00000000 +--- a/tests/core/runfiles/runfiles_remote_test/BUILD.bazel ++++ /dev/null +@@ -1,27 +0,0 @@ +-load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_test") +- +-package(default_visibility = ["//visibility:public"]) +- +-go_test( +- name = "remote_test", +- srcs = ["@io_bazel_rules_go//tests/core/runfiles:runfiles_test.go"], +- deps = ["@io_bazel_rules_go//tests/core/runfiles:check_runfiles"], +-) +- +-go_binary( +- name = "remote_cmd", +- srcs = ["@io_bazel_rules_go//tests/core/runfiles:runfiles_cmd.go"], +- deps = ["@io_bazel_rules_go//tests/core/runfiles:check_runfiles"], +-) +- +-go_binary( +- name = "remote_bin", +- srcs = ["@io_bazel_rules_go//tests/core/runfiles:empty_bin.go"], +-) +- +-filegroup( +- name = "remote_group", +- srcs = ["remote_group.txt"], +-) +- +-exports_files(["remote_file.txt"]) +diff --git a/tests/core/runfiles/runfiles_remote_test/WORKSPACE b/tests/core/runfiles/runfiles_remote_test/WORKSPACE +deleted file mode 100644 +index c9af3f85..00000000 +--- a/tests/core/runfiles/runfiles_remote_test/WORKSPACE ++++ /dev/null +@@ -1 +0,0 @@ +-workspace(name = "runfiles_remote_test") +diff --git a/tests/core/runfiles/runfiles_remote_test/remote_file.txt b/tests/core/runfiles/runfiles_remote_test/remote_file.txt +deleted file mode 100644 +index e69de29b..00000000 +diff --git a/tests/core/runfiles/runfiles_remote_test/remote_group.txt b/tests/core/runfiles/runfiles_remote_test/remote_group.txt +deleted file mode 100644 +index e69de29b..00000000 +diff --git a/tests/core/runfiles/runfiles_test.go b/tests/core/runfiles/runfiles_test.go +deleted file mode 100644 +index 62aab3af..00000000 +--- a/tests/core/runfiles/runfiles_test.go ++++ /dev/null +@@ -1,27 +0,0 @@ +-// Copyright 2019 The Bazel Authors. All rights reserved. +-// +-// Licensed under the Apache License, Version 2.0 (the "License"); +-// you may not use this file except in compliance with the License. +-// You may obtain a copy of the License at +-// +-// http://www.apache.org/licenses/LICENSE-2.0 +-// +-// Unless required by applicable law or agreed to in writing, software +-// distributed under the License is distributed on an "AS IS" BASIS, +-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-// See the License for the specific language governing permissions and +-// limitations under the License. +- +-package main +- +-import ( +- "testing" +- +- "github.com/bazelbuild/rules_go/tests/core/runfiles/check" +-) +- +-func Test(t *testing.T) { +- if err := check.CheckRunfiles(check.DefaultTestFiles); err != nil { +- t.Fatal(err) +- } +-} From 6d57230e9b717a2751ef6de08d6fc4d955d98819 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Fri, 16 Aug 2019 15:35:33 -0700 Subject: [PATCH 0628/1134] Remove unused transitive_es5_sources This is a prefactoring to simplify the "typescript" provider before migrating it to a modern Provider() PiperOrigin-RevId: 263860301 --- .../rules_typescript/internal/common/compilation.bzl | 7 ------- 1 file changed, 7 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 511fcc0745..7e08587338 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -458,19 +458,13 @@ def compile_ts( if not is_library: files_depsets.append(depset(tsickle_externs)) - transitive_es5_sources = depset() transitive_es6_sources = depset() for dep in deps: if hasattr(dep, "typescript"): - transitive_es5_sources = depset(transitive = [ - transitive_es5_sources, - dep.typescript.transitive_es5_sources, - ]) transitive_es6_sources = depset(transitive = [ transitive_es6_sources, dep.typescript.transitive_es6_sources, ]) - transitive_es5_sources = depset(transitive = [transitive_es5_sources, es5_sources]) transitive_es6_sources = depset(transitive = [transitive_es6_sources, es6_sources]) return { @@ -505,7 +499,6 @@ def compile_ts( "es6_sources": es6_sources, "replay_params": replay_params, "transitive_declarations": transitive_decls, - "transitive_es5_sources": transitive_es5_sources, "transitive_es6_sources": transitive_es6_sources, "tsickle_externs": tsickle_externs, "type_blacklisted_declarations": type_blacklisted_declarations, From 121279c854dcdc479dae357804ed2ad1163f34fa Mon Sep 17 00:00:00 2001 From: rjamet Date: Mon, 19 Aug 2019 08:27:47 -0700 Subject: [PATCH 0629/1134] Fix dealiaser throwing on TypeAlias nodes. getAliasedSymbol only accepts Alias, not TypeAlias, so filter on that only. PiperOrigin-RevId: 264161077 --- .../ban_conformance_pattern/name_test.ts | 24 +++++++++++++++++++ .../internal/tsetse/util/ast_tools.ts | 3 ++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts index 6bb06ecc90..d3ffdd0433 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts @@ -38,6 +38,30 @@ describe('BANNED_NAME', () => { messageText: 'no blob url' }); }); + + it('does not choke on type aliases', () => { + // This test case checks that we do not regress on the AbsoluteMatcher's + // handling of type aliases. In dealias, from utils/ast_tools.ts, the + // typechecker's getAliasedSymbol function should only be called with + // Symbols that verify ts.SymbolFlags.Alias, and ts.SymbolFlags.TypeAlias is + // not acceptable (the typechecker will throw). + + const sources = [ + `export type Foo = {bar: number, baz: (x:string)=>void}`, + `import {Foo} from './file_0'; + export const c: Foo["baz"] = (x:string)=>{};`, + `import {c} from './file_1'; c(window.name);` + ]; + const results = compileAndCheck( + new ConformancePatternRule({ + errorMessage: 'should not trigger', + kind: PatternKind.BANNED_NAME, + values: ['whatever'] + }), + ...sources); + + expect(results.length).toBe(0); + }); }); beforeEach(() => { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts index cb0f0cb9bf..024c008794 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts @@ -100,7 +100,8 @@ export function dealias( if (!symbol) { return undefined; } - if (symbol.getFlags() & (ts.SymbolFlags.Alias | ts.SymbolFlags.TypeAlias)) { + if (symbol.getFlags() & ts.SymbolFlags.Alias) { + // Note: something that has only TypeAlias is not acceptable here. return dealias(tc.getAliasedSymbol(symbol), tc); } return symbol; From 7894d5afd90ac2542ad1a6a50cbbc2f84ae334a5 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 19 Aug 2019 18:29:05 -0700 Subject: [PATCH 0630/1134] Fix module name mangling to avoid double escaping. PiperOrigin-RevId: 264290453 --- .../internal/tsc_wrapped/compiler_host.ts | 3 +-- .../tsc_wrapped/compiler_host_test.ts | 19 +++++++++++++++++++ .../internal/tsc_wrapped/tsc_wrapped_test.ts | 1 + 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index 9cae018243..4aac68580b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -292,8 +292,7 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { const escape = (c: string) => { return '$' + c.charCodeAt(0).toString(16); }; - const moduleName = importPath.replace(/^[^a-zA-Z_/]/, escape) - .replace(/[^a-zA-Z_0-9_/]/g, escape) + const moduleName = importPath.replace(/^[0-9]|[^a-zA-Z_0-9_/]/g, escape) .replace(/\//g, '.'); return moduleName; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host_test.ts index eaa0ac4a27..6eab46edef 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host_test.ts @@ -58,5 +58,24 @@ describe('compiler host', () => { createTsModule('path/to/package/root_dir/index.ts'))) .toBe('my_lib'); }); + + describe('#pathToModuleName', () => { + it('should escape non-identifier characters', () => { + expect(defaultHost.pathToModuleName('context', '$-!@')) + .toBe('$24$2d$21$40'); + }); + + it('should escape leading numbers', () => { + expect(defaultHost.pathToModuleName('context', '1234')).toBe('$31234'); + }); + + it('should transform slashes to dots', () => { + expect(defaultHost.pathToModuleName('context', 'a/b')).toBe('a.b'); + }); + + it('should not escape valid identifers', () => { + expect(defaultHost.pathToModuleName('context', 'a1/b2')).toBe('a1.b2'); + }); + }); }); }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts index 3f77c07f64..59d725b23e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts @@ -190,6 +190,7 @@ describe('compiler host', () => { expectPath('', 'some|123').toBe('google3.some$7c123'); expectPath('', '1some|').toBe('google3.1some$7c'); expectPath('', 'bar/foo.bam.ts').toBe('google3.bar.foo$2ebam'); + expectPath('', '-foo-').toBe('google3.$2dfoo$2d'); // Underscore is unmodified, because it is common in google3 paths. expectPath('', 'foo_bar').toBe('google3.foo_bar'); }); From 23e03f8e79046e7a8d8f1cdfd12f503d91dbec4c Mon Sep 17 00:00:00 2001 From: lucassloan Date: Wed, 21 Aug 2019 14:00:15 -0700 Subject: [PATCH 0631/1134] Return a set of packages changed by RegisterTestRules PiperOrigin-RevId: 264686314 --- .../ts_auto_deps/updater/test_register.go | 46 +++++++++++-------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go index 130e3d1a5e..19529c979f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go @@ -38,11 +38,13 @@ func getAllTestLibraries(bld *build.File) []*build.Rule { // RegisterTestRules registers ts_library test targets with the project's // ts_config and ts_development_sources rules. It may also register the tests // with a testonly ts_library named "all_tests", which allows users to set up -// their own BUILD layout. It's separated from UpdateBUILD since it's non-local, -// multiple packages may all need to make writes to the same ts_config. -func (upd *Updater) RegisterTestRules(ctx context.Context, paths ...string) (bool, error) { +// their own BUILD layout. It's separated from UpdateBUILD since it's +// non-local, multiple packages may all need to make writes to the same +// ts_config. It returns a set of the paths for the packages that were updated. +func (upd *Updater) RegisterTestRules(ctx context.Context, paths ...string) (bool, map[string]bool, error) { reg := &buildRegistry{make(map[string]*build.File), make(map[*build.File]bool)} var g3root string + updatedAncestorPackages := make(map[string]bool) for _, path := range paths { // declare variables manually so that g3root doesn't get overwritten by a := // declaration @@ -50,11 +52,11 @@ func (upd *Updater) RegisterTestRules(ctx context.Context, paths ...string) (boo var buildPath string g3root, buildPath, err = getBUILDPath(ctx, path) if err != nil { - return false, err + return false, nil, err } bld, err := reg.readBUILD(ctx, g3root, buildPath) if err != nil { - return false, err + return false, nil, err } for _, tr := range getRules(bld, "ts_library", ruleTypeTest) { // don't register all_test libraries themselves @@ -63,14 +65,22 @@ func (upd *Updater) RegisterTestRules(ctx context.Context, paths ...string) (boo } platform.Infof("Registering test rule in closest ts_config & ts_development_sources") target := AbsoluteBazelTarget(bld, tr.Name()) - if err := reg.registerTestRule(ctx, bld, tsConfig, g3root, target); err != nil { - return false, err + ancestorBuild, err := reg.registerTestRule(ctx, bld, tsConfig, g3root, target) + if err != nil { + return false, nil, err + } + if ancestorBuild != "" { + updatedAncestorPackages[ancestorBuild] = true } // NodeJS rules should not be added to ts_development_sources automatically, because // they typically do not run in the browser. if tr.AttrString("runtime") != "nodejs" { - if err := reg.registerTestRule(ctx, bld, tsDevSrcs, g3root, target); err != nil { - return false, err + ancestorBuild, err := reg.registerTestRule(ctx, bld, tsDevSrcs, g3root, target) + if err != nil { + return false, nil, err + } + if ancestorBuild != "" { + updatedAncestorPackages[ancestorBuild] = true } } } @@ -81,12 +91,12 @@ func (upd *Updater) RegisterTestRules(ctx context.Context, paths ...string) (boo fmt.Printf("Registered test(s) in %s\n", b.Path) fileChanged, err := upd.maybeWriteBUILD(ctx, filepath.Join(g3root, b.Path), b) if err != nil { - return false, err + return false, nil, err } updated = updated || fileChanged } - return updated, nil + return updated, updatedAncestorPackages, nil } // buildRegistry buffers reads and writes done while registering ts_libraries @@ -149,16 +159,16 @@ func (rt registerTarget) ruleType() ruleType { // rule is registered with it, instead of specified register target. Prints a // warning if no rule is found, but only returns an error if adding the // dependency fails. -func (reg *buildRegistry) registerTestRule(ctx context.Context, bld *build.File, rt registerTarget, g3root, target string) error { +func (reg *buildRegistry) registerTestRule(ctx context.Context, bld *build.File, rt registerTarget, g3root, target string) (string, error) { if buildHasDisableTaze(bld) { - return nil + return "", nil } var ruleToRegister *build.Rule for _, r := range bld.Rules("") { if isAllTestLibrary(bld, r) { if hasDependency(bld, r, target) { - return nil + return "", nil } // an all_tests library takes presidence over a registerTarget, and there @@ -169,7 +179,7 @@ func (reg *buildRegistry) registerTestRule(ctx context.Context, bld *build.File, } if ruleMatches(bld, r, rt.kind(), rt.ruleType()) { if hasDependency(bld, r, target) { - return nil + return "", nil } // keep overwriting ruleToRegister so the last match in the BUILD gets @@ -181,7 +191,7 @@ func (reg *buildRegistry) registerTestRule(ctx context.Context, bld *build.File, if ruleToRegister != nil { addDep(bld, ruleToRegister, target) reg.registerForPossibleUpdate(bld) - return nil + return filepath.Dir(bld.Path), nil } parentDir := filepath.Dir(filepath.Dir(bld.Path)) @@ -190,7 +200,7 @@ func (reg *buildRegistry) registerTestRule(ctx context.Context, bld *build.File, if _, err := platform.Stat(ctx, buildFile); err == nil { parent, err := reg.readBUILD(ctx, g3root, buildFile) if err != nil { - return err + return "", err } return reg.registerTestRule(ctx, parent, rt, g3root, target) } @@ -198,5 +208,5 @@ func (reg *buildRegistry) registerTestRule(ctx context.Context, bld *build.File, } fmt.Printf("WARNING: no %s rule in parent packages of %s to register with.\n", rt.kind(), target) - return nil + return "", nil } From ac318d65114e76085de67c7ac7a06f3b2e86aa7e Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Thu, 22 Aug 2019 10:02:23 -0700 Subject: [PATCH 0632/1134] fix: ts_auto_deps workaround for https://github.com/bazelbuild/bazel/issues/3325 no longer needed Closes #467 PiperOrigin-RevId: 264859144 --- .../bazelbuild/rules_typescript/ts_auto_deps/main.go | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go index 81542dc2f6..553afbc37f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go @@ -39,16 +39,6 @@ Flags: } func main() { - // When executed under `bazel run`, we want to run in the users workspace, not - // the runfiles directory of the go_binary. - // See https://github.com/bazelbuild/bazel/issues/3325 - if wd := os.Getenv("BUILD_WORKING_DIRECTORY"); len(wd) > 0 { - err := os.Chdir(wd) - if err != nil { - platform.Error(err) - } - } - flag.Usage = usage flag.Parse() From 8613150b308a2acf11533b17d00e5eb5bc9fa133 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Thu, 22 Aug 2019 16:11:03 -0700 Subject: [PATCH 0633/1134] Refactor the files and runfiles fields from strings to the DefaultInfo() provider. This is the beginning of removing the legacy providers, per https://github.com/bazelbuild/bazel/issues/7347 See https://docs.bazel.build/versions/master/skylark/rules.html#migrating-from-legacy-providers: " The fields files, runfiles, data_runfiles, default_runfiles, and executable correspond to the same-named fields of DefaultInfo. It is not allowed to specify any of these fields while also returning a DefaultInfo modern provider. " PiperOrigin-RevId: 264941716 --- .../internal/common/compilation.bzl | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 7e08587338..6af26b59f7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -468,7 +468,18 @@ def compile_ts( transitive_es6_sources = depset(transitive = [transitive_es6_sources, es6_sources]) return { - "files": depset(transitive = files_depsets), + "providers": [ + DefaultInfo( + runfiles = ctx.runfiles( + # Note: don't include files=... here, or they will *always* be built + # by any dependent rule, regardless of whether it needs them. + # But these attributes are needed to pass along any input runfiles: + collect_default = True, + collect_data = True, + ), + files = depset(transitive = files_depsets), + ), + ], "instrumented_files": { "dependency_attributes": ["deps", "runtime_deps"], "extensions": ["ts"], @@ -482,13 +493,6 @@ def compile_ts( "es5_sources": es5_sources, "es6_sources": es6_sources, }, - "runfiles": ctx.runfiles( - # Note: don't include files=... here, or they will *always* be built - # by any dependent rule, regardless of whether it needs them. - # But these attributes are needed to pass along any input runfiles: - collect_default = True, - collect_data = True, - ), # Expose the tags so that a Skylark aspect can access them. "tags": ctx.attr.tags if hasattr(ctx.attr, "tags") else ctx.rule.attr.tags, # TODO(martinprobst): Prune transitive deps, only re-export what's needed. From 47e615e00736ef02aa275d4df869051433c08f80 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 22 Aug 2019 17:10:52 -0700 Subject: [PATCH 0634/1134] discourage filing issues on rules_typescript --- .../.github/ISSUE_TEMPLATE/bug_report.md | 75 ------------------- .../.github/ISSUE_TEMPLATE/feature_request.md | 47 ------------ .../.github/ISSUE_TEMPLATE/no_issues_here.md | 8 ++ 3 files changed, 8 insertions(+), 122 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/.github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/.github/ISSUE_TEMPLATE/feature_request.md create mode 100644 third_party/github.com/bazelbuild/rules_typescript/.github/ISSUE_TEMPLATE/no_issues_here.md diff --git a/third_party/github.com/bazelbuild/rules_typescript/.github/ISSUE_TEMPLATE/bug_report.md b/third_party/github.com/bazelbuild/rules_typescript/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index b7c861b9e1..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -name: "\U0001F41EBug report" -about: Report a bug in rules_typescript ---- - - - -# 🐞 bug report - -### Affected Rule - - - The issue is caused by the rule: - - -### Is this a regression? - - - Yes, the previous version in which this bug was not present was: .... - - -### Description - - A clear and concise description of the problem... - - -## 🔬 Minimal Reproduction - - - -## 🔥 Exception or Error - -


-
-
-
-
- - -## 🌍 Your Environment - -**Operating System:** - -
-  
-
-  
-
- -**Output of `bazel version`:** - -
-  
-
-  
-
- -**Rules version (SHA):** - -
-  
-
-  
-
- -**Anything else relevant?** diff --git a/third_party/github.com/bazelbuild/rules_typescript/.github/ISSUE_TEMPLATE/feature_request.md b/third_party/github.com/bazelbuild/rules_typescript/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index be9fa49cd6..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -name: "\U0001F680Feature request" -about: Suggest a feature for rules_typescript - ---- - - - -# 🚀 feature request - -### Relevant Rules - - - - - -### Description - - A clear and concise description of the problem or missing capability... - - -### Describe the solution you'd like - - If you have a solution in mind, please describe it. - - -### Describe alternatives you've considered - - Have you considered any alternative solutions or workarounds? diff --git a/third_party/github.com/bazelbuild/rules_typescript/.github/ISSUE_TEMPLATE/no_issues_here.md b/third_party/github.com/bazelbuild/rules_typescript/.github/ISSUE_TEMPLATE/no_issues_here.md new file mode 100644 index 0000000000..f0bc244a95 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/.github/ISSUE_TEMPLATE/no_issues_here.md @@ -0,0 +1,8 @@ +--- +name: "Please don't file issues here" +about: All issues should be reported to rules_nodejs + +--- + +All issues are managed in rules_nodejs with the "package: typescript" label. +This issue tracker is only enabled so that history from earlier discussions is still visible. \ No newline at end of file From 9ad96522aaf2443763a5c53a5b33862b2c6fe88a Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 22 Aug 2019 17:13:04 -0700 Subject: [PATCH 0635/1134] point to rules_nodejs to file issues --- .../rules_typescript/.github/ISSUE_TEMPLATE/no_issues_here.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/.github/ISSUE_TEMPLATE/no_issues_here.md b/third_party/github.com/bazelbuild/rules_typescript/.github/ISSUE_TEMPLATE/no_issues_here.md index f0bc244a95..34cbdf649c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.github/ISSUE_TEMPLATE/no_issues_here.md +++ b/third_party/github.com/bazelbuild/rules_typescript/.github/ISSUE_TEMPLATE/no_issues_here.md @@ -4,5 +4,9 @@ about: All issues should be reported to rules_nodejs --- +# Please don't file issues in rules_typescript + +Go here instead: https://github.com/bazelbuild/rules_nodejs/issues/new/choose + All issues are managed in rules_nodejs with the "package: typescript" label. This issue tracker is only enabled so that history from earlier discussions is still visible. \ No newline at end of file From 85ce035e7ea4b16fd93319b2f510404a3fbc0006 Mon Sep 17 00:00:00 2001 From: radokirov Date: Thu, 22 Aug 2019 18:16:51 -0700 Subject: [PATCH 0636/1134] No public change. PiperOrigin-RevId: 264963127 --- .../rules_typescript/internal/tsc_wrapped/compiler_host.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index 4aac68580b..c05b3c32ec 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -97,7 +97,6 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { host: ts.ModuleResolutionHost = this; private allowActionInputReads = true; - constructor( public inputFiles: string[], options: ts.CompilerOptions, readonly bazelOpts: BazelOptions, private delegate: ts.CompilerHost, From cd7c305d4262ef2e37a617074e3086769bea965a Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Fri, 23 Aug 2019 13:18:15 -0700 Subject: [PATCH 0637/1134] Support async worker functions in the tsc_wrapped/worker.ts helper library. PiperOrigin-RevId: 265120467 --- .../internal/tsc_wrapped/package.json | 2 +- .../internal/tsc_wrapped/tsconfig.json | 5 +++- .../internal/tsc_wrapped/worker.ts | 23 ++++++++++--------- .../bazelbuild/rules_typescript/package.json | 2 +- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/package.json b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/package.json index 64940e1c83..1f78bd4af2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/package.json @@ -2,7 +2,7 @@ "description": "legacy build-time dependencies to compile and run tsc_wrapped", "devDependencies": { "@types/jasmine": "2.8.2", - "@types/node": "7.0.18", + "@types/node": "10.12.20", "@types/tmp": "0.0.33", "protobufjs": "5.0.3", "tmp": "0.0.33", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json index 830ed1862c..8c2229042f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json @@ -16,7 +16,10 @@ "es2015.core", "es2015.collection", "es2015.iterable", - "es2015.promise" + "es2015.promise", + // This will need to become es2018.asynciterable when + // bumping the version of TypeScript in rules_typescript/package.json + "esnext.asynciterable" ] } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts index dc50055eb8..0bdb04cef5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts @@ -115,12 +115,15 @@ const workerpb = loadWorkerPb(); * data, and dispatches into `runOneBuild` for the actual compilation to happen. * * The compilation handler is parameterized so that this code can be used by - * different compiler entry points (currently TypeScript compilation and Angular - * compilation). + * different compiler entry points (currently TypeScript compilation, Angular + * compilation, and the contrib vulcanize worker). + * + * It's also exposed publicly as an npm package: + * https://www.npmjs.com/package/@bazel/worker */ -export function runWorkerLoop( +export async function runWorkerLoop( runOneBuild: (args: string[], inputs?: {[path: string]: string}) => - boolean) { + boolean | Promise) { // Hook all output to stderr and write it to a buffer, then include // that buffer's in the worker protcol proto's textual output. This // means you can log via console.error() and it will appear to the @@ -142,10 +145,8 @@ export function runWorkerLoop( // it exits and waits for more input. If a message has been read, it strips // its data of this buffer. let buf: Buffer = Buffer.alloc(0); - process.stdin.on('readable', () => { - const chunk = process.stdin.read() as Buffer; - if (!chunk) return; - buf = Buffer.concat([buf, chunk]); + stdinLoop: for await (const chunk of process.stdin) { + buf = Buffer.concat([buf, chunk as Buffer]); try { const reader = new protobufjs.Reader(buf); // Read all requests that have accumulated in the buffer. @@ -154,7 +155,7 @@ export function runWorkerLoop( const msgLength: number = reader.uint32(); // chunk might be an incomplete read from stdin. If there are not enough // bytes for the next full message, wait for more input. - if ((reader.len - reader.pos) < msgLength) return; + if ((reader.len - reader.pos) < msgLength) continue stdinLoop; const req = workerpb.WorkRequest.decode(reader, msgLength) as workerProto.WorkRequest; @@ -170,7 +171,7 @@ export function runWorkerLoop( inputs[input.path] = input.digest.toString('hex'); } debug('Compiling with:\n\t' + args.join('\n\t')); - const exitCode = runOneBuild(args, inputs) ? 0 : 1; + const exitCode = (await runOneBuild(args, inputs)) ? 0 : 1; process.stdout.write((workerpb.WorkResponse.encodeDelimited({ exitCode, output: consoleOutput, @@ -196,5 +197,5 @@ export function runWorkerLoop( // Clear buffer so the next build won't read an incomplete request. buf = Buffer.alloc(0); } - }); + } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 42bdbd7c94..9a86e2653a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -10,7 +10,7 @@ "@bazel/typescript": "^0.32.0", "@types/jasmine": "^2.8.2", "@types/long": "^4.0.0", - "@types/node": "7.0.18", + "@types/node": "10.12.20", "@types/source-map": "^0.5.1", "@types/tmp": "^0.0.33", "clang-format": "1.0.49", From ed2272ec9afcb6140d67809c184ae5907bc756c5 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Fri, 23 Aug 2019 16:44:22 -0700 Subject: [PATCH 0638/1134] Refactor the "output_groups" string to the OutputGroupInfo() provider. This is the beginning of removing the legacy providers, per https://github.com/bazelbuild/bazel/issues/7347 See https://docs.bazel.build/versions/master/skylark/rules.html#migrating-from-legacy-providers: "The field output_groups takes a struct value and corresponds to an OutputGroupInfo." PiperOrigin-RevId: 265162279 --- .../rules_typescript/internal/common/compilation.bzl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 6af26b59f7..70a66d7270 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -479,6 +479,10 @@ def compile_ts( ), files = depset(transitive = files_depsets), ), + OutputGroupInfo( + es5_sources = es5_sources, + es6_sources = es6_sources, + ), ], "instrumented_files": { "dependency_attributes": ["deps", "runtime_deps"], @@ -489,10 +493,6 @@ def compile_ts( # e.g. rollup_bundle under Bazel needs to convert this into a UMD global # name in the Rollup configuration. "module_name": getattr(ctx.attr, "module_name", None), - "output_groups": { - "es5_sources": es5_sources, - "es6_sources": es6_sources, - }, # Expose the tags so that a Skylark aspect can access them. "tags": ctx.attr.tags if hasattr(ctx.attr, "tags") else ctx.rule.attr.tags, # TODO(martinprobst): Prune transitive deps, only re-export what's needed. From db4895ba57ab309cc853f867e606f24bdf5b9425 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Fri, 23 Aug 2019 17:17:23 -0700 Subject: [PATCH 0639/1134] Provide DeclarationInfo that replaces two fields from "typescript" legacy provider This is the part of removing the legacy providers, per https://github.com/bazelbuild/bazel/issues/7347 Depends on https://github.com/bazelbuild/rules_nodejs/pull/1052 PiperOrigin-RevId: 265167694 --- .../internal/common/compilation.bzl | 9 ++++- .../bazelbuild/rules_typescript/package.bzl | 4 +++ .../rules_nodejs_pr1052.patch | 34 +++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/rules_nodejs_pr1052.patch diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 70a66d7270..3155f0c2b6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -17,6 +17,7 @@ load(":common/json_marshal.bzl", "json_marshal") load(":common/module_mappings.bzl", "module_mappings_aspect") +load("@build_bazel_rules_nodejs//:declaration_provider.bzl", "DeclarationInfo") _DEBUG = False @@ -483,6 +484,11 @@ def compile_ts( es5_sources = es5_sources, es6_sources = es6_sources, ), + # TODO(martinprobst): Prune transitive deps, see go/dtspruning + DeclarationInfo( + declarations = depset(transitive = declarations_depsets), + transitive_declarations = transitive_decls, + ), ], "instrumented_files": { "dependency_attributes": ["deps", "runtime_deps"], @@ -495,13 +501,14 @@ def compile_ts( "module_name": getattr(ctx.attr, "module_name", None), # Expose the tags so that a Skylark aspect can access them. "tags": ctx.attr.tags if hasattr(ctx.attr, "tags") else ctx.rule.attr.tags, - # TODO(martinprobst): Prune transitive deps, only re-export what's needed. "typescript": { + # TODO(b/139705078): remove when consumers migrated to DeclarationInfo "declarations": depset(transitive = declarations_depsets), "devmode_manifest": devmode_manifest, "es5_sources": es5_sources, "es6_sources": es6_sources, "replay_params": replay_params, + # TODO(b/139705078): remove when consumers migrated to DeclarationInfo "transitive_declarations": transitive_decls, "transitive_es6_sources": transitive_es6_sources, "tsickle_externs": tsickle_externs, diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index 0f4ad482c4..b751dcbc57 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -30,6 +30,10 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", + patch_args = ["-p1"], + # Patch in this PR to get the DeclarationInfo provider. + # Can remove this once it's released + patches = ["@build_bazel_rules_typescript//:rules_nodejs_pr1052.patch"], sha256 = "6d4edbf28ff6720aedf5f97f9b9a7679401bf7fca9d14a0fff80f644a99992b4", urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.32.2/rules_nodejs-0.32.2.tar.gz"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/rules_nodejs_pr1052.patch b/third_party/github.com/bazelbuild/rules_typescript/rules_nodejs_pr1052.patch new file mode 100644 index 0000000000..e50541e20a --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/rules_nodejs_pr1052.patch @@ -0,0 +1,34 @@ +diff --git a/declaration_provider.bzl b/declaration_provider.bzl +new file mode 100644 +index 0000000..b2f89af +--- /dev/null ++++ b/declaration_provider.bzl +@@ -0,0 +1,28 @@ ++"""This module contains a provider for TypeScript typings files (.d.ts)""" ++ ++def provide_declarations(**kwargs): ++ """Factory function for creating checked declarations with externs. ++ ++ Do not directly construct DeclarationInfo() ++ """ ++ ++ # TODO: add some checking actions to ensure the declarations are well-formed ++ return DeclarationInfo(**kwargs) ++ ++DeclarationInfo = provider( ++ doc = """The DeclarationInfo provider allows JS rules to communicate typing information. ++TypeScript's .d.ts files are used as the interop format for describing types. ++ ++Do not create DeclarationInfo instances directly, instead use the provide_declarations factory function. ++ ++TODO(alexeagle): The ts_library#deps attribute should require that this provider is attached. ++ ++Note: historically this was a subset of the string-typed "typescript" provider. ++""", ++ # TODO: if we ever enable --declarationMap we will have .d.ts.map files too ++ fields = { ++ "declarations": "A depset of .d.ts files produced by this rule", ++ "transitive_declarations": """A depset of .d.ts files produced by this rule and all its transitive dependencies. ++This prevents needing an aspect in rules that consume the typings, which improves performance.""", ++ }, ++) From e63209c302b2b930e29ca89091c43ccd432d862b Mon Sep 17 00:00:00 2001 From: lucassloan Date: Fri, 30 Aug 2019 17:54:16 -0700 Subject: [PATCH 0640/1134] Add more detailed logging of latency for requests with no TypeScript. PiperOrigin-RevId: 266489330 --- .../ts_auto_deps/updater/updater.go | 44 +++++++++++++------ 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index b77acbad70..e6585d2023 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -686,42 +686,60 @@ type UpdateBUILDOptions struct { IsRoot bool } +// LatencyReport contains timing measurements of the functions that are called +// when running the presubmit on a package without any TypeScript (since we +// return early to avoid the latency of RAS analyze). +type LatencyReport struct { + GetBUILD, TazeDisabled, SubdirSrcs, AddSrcs time.Duration +} + // UpdateBUILD drives the main process of creating/updating the BUILD file // underneath path based on the available sources. Returns true if it modified // the BUILD file, false if the BUILD file was up to date already. bazelAnalyze // is used to run the underlying `bazel analyze` process. Returns another // boolean that's true iff the package doesn't contain any TypeScript (source // files or BUILD rules). -func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options UpdateBUILDOptions) (bool, bool, error) { +func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options UpdateBUILDOptions) (bool, *LatencyReport, error) { + latencyReport := &LatencyReport{} + + start := time.Now() g3root, buildFilePath, bld, err := getBUILDPathAndBUILDFile(ctx, path) + latencyReport.GetBUILD = time.Since(start) if err != nil { - return false, false, err + return false, nil, err } - if isTazeDisabledInPackage(ctx, g3root, buildFilePath, bld) { - return false, false, nil + start = time.Now() + ts_auto_depsDisabled := isTazeDisabledInPackage(ctx, g3root, buildFilePath, bld) + latencyReport.TazeDisabled = time.Since(start) + if ts_auto_depsDisabled { + return false, nil, nil } + start = time.Now() hasSubdirSrcs, err := directoryOrAncestorHasSubdirectorySources(ctx, g3root, buildFilePath, bld) + latencyReport.SubdirSrcs = time.Since(start) if err != nil { - return false, false, err + return false, nil, err } if hasSubdirSrcs { - return false, false, &SubdirectorySourcesError{} + return false, nil, &SubdirectorySourcesError{} } + start = time.Now() changed, err := upd.addSourcesToBUILD(ctx, path, buildFilePath, bld) + latencyReport.AddSrcs = time.Since(start) if err != nil { - return false, false, err + return false, nil, err } if options.InNonWritableEnvironment && changed { - return true, false, &CantProgressAfterWriteError{} + return true, nil, &CantProgressAfterWriteError{} } rules := allTSRules(bld) if len(rules) == 0 && !options.IsRoot { // No TypeScript rules, no need to query for dependencies etc, so just exit early. - return changed, true, nil + return changed, latencyReport, nil } rulesWithSrcs := []*build.Rule{} for _, r := range rules { @@ -735,19 +753,19 @@ func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options Update platform.Infof("analyzing...") reports, err := upd.runBazelAnalyze(buildFilePath, bld, rulesWithSrcs) if err != nil { - return false, false, err + return false, nil, err } changedAfterBazelAnalyze, err := upd.updateBUILDAfterBazelAnalyze(ctx, options.IsRoot, g3root, buildFilePath, bld, reports) if err != nil { - return false, false, err + return false, nil, err } changed = changed || changedAfterBazelAnalyze if options.InNonWritableEnvironment && changed { - return true, false, &CantProgressAfterWriteError{} + return true, nil, &CantProgressAfterWriteError{} } - return changed, false, nil + return changed, nil, nil } // buildHasDisableTaze checks if the BUILD file should be managed using ts_auto_deps. From a3e03fdba45a68b59b218476e9d0893885846792 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Thu, 5 Sep 2019 06:34:11 -0700 Subject: [PATCH 0641/1134] Upgrade rules_nodejs to 0.36.2 Closes https://github.com/bazelbuild/rules_typescript/pull/469 PiperOrigin-RevId: 267359612 --- .../rules_typescript/.bazelci/presubmit.yml | 1 + .../bazelbuild/rules_typescript/package.bzl | 8 ++--- .../rules_nodejs_pr1052.patch | 34 ------------------- 3 files changed, 3 insertions(+), 40 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/rules_nodejs_pr1052.patch diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml index 86727d1915..adf1614206 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml @@ -44,5 +44,6 @@ platforms: test_flags: - "--action_env=PATH" - "--test_env=PATH" + - "--incompatible_windows_native_test_wrapper" test_targets: - "..." diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index b751dcbc57..792940d06b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -30,12 +30,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - patch_args = ["-p1"], - # Patch in this PR to get the DeclarationInfo provider. - # Can remove this once it's released - patches = ["@build_bazel_rules_typescript//:rules_nodejs_pr1052.patch"], - sha256 = "6d4edbf28ff6720aedf5f97f9b9a7679401bf7fca9d14a0fff80f644a99992b4", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.32.2/rules_nodejs-0.32.2.tar.gz"], + sha256 = "da72ea53fa1cb8ab5ef7781ba06b97259b7d579a431ce480476266bc81bdf21d", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.36.2/rules_nodejs-0.36.2.tar.gz"], ) # For protocol buffers diff --git a/third_party/github.com/bazelbuild/rules_typescript/rules_nodejs_pr1052.patch b/third_party/github.com/bazelbuild/rules_typescript/rules_nodejs_pr1052.patch deleted file mode 100644 index e50541e20a..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/rules_nodejs_pr1052.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/declaration_provider.bzl b/declaration_provider.bzl -new file mode 100644 -index 0000000..b2f89af ---- /dev/null -+++ b/declaration_provider.bzl -@@ -0,0 +1,28 @@ -+"""This module contains a provider for TypeScript typings files (.d.ts)""" -+ -+def provide_declarations(**kwargs): -+ """Factory function for creating checked declarations with externs. -+ -+ Do not directly construct DeclarationInfo() -+ """ -+ -+ # TODO: add some checking actions to ensure the declarations are well-formed -+ return DeclarationInfo(**kwargs) -+ -+DeclarationInfo = provider( -+ doc = """The DeclarationInfo provider allows JS rules to communicate typing information. -+TypeScript's .d.ts files are used as the interop format for describing types. -+ -+Do not create DeclarationInfo instances directly, instead use the provide_declarations factory function. -+ -+TODO(alexeagle): The ts_library#deps attribute should require that this provider is attached. -+ -+Note: historically this was a subset of the string-typed "typescript" provider. -+""", -+ # TODO: if we ever enable --declarationMap we will have .d.ts.map files too -+ fields = { -+ "declarations": "A depset of .d.ts files produced by this rule", -+ "transitive_declarations": """A depset of .d.ts files produced by this rule and all its transitive dependencies. -+This prevents needing an aspect in rules that consume the typings, which improves performance.""", -+ }, -+) From 634db6a63fcc71de0cfc331ca6f14e9d4b4aa2a5 Mon Sep 17 00:00:00 2001 From: evanm Date: Thu, 5 Sep 2019 16:19:59 -0700 Subject: [PATCH 0642/1134] Internal change. PiperOrigin-RevId: 267480203 --- .../rules_typescript/internal/common/compilation.bzl | 8 ++++---- .../internal/tsc_wrapped/compiler_host.ts | 6 +++--- .../internal/tsc_wrapped/tsc_wrapped_test.ts | 4 ++-- .../rules_typescript/internal/tsc_wrapped/tsconfig.ts | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 3155f0c2b6..1bcf2bc4e0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -194,13 +194,13 @@ def _outputs(ctx, label, srcs_files = []): if basename.endswith(ext): basename = basename[:-len(ext)] break - closure_js_files += [ctx.actions.declare_file(basename + ".closure.js")] + closure_js_files += [ctx.actions.declare_file(basename + ".mjs")] # Temporary until all imports of ngfactory/ngsummary files are removed # TODO(alexeagle): clean up after Ivy launch if getattr(ctx, "compile_angular_templates", False): - closure_js_files += [ctx.actions.declare_file(basename + ".ngfactory.closure.js")] - closure_js_files += [ctx.actions.declare_file(basename + ".ngsummary.closure.js")] + closure_js_files += [ctx.actions.declare_file(basename + ".ngfactory.mjs")] + closure_js_files += [ctx.actions.declare_file(basename + ".ngsummary.mjs")] if not is_dts: devmode_js_files += [ctx.actions.declare_file(basename + ".js")] @@ -428,7 +428,7 @@ def compile_ts( # deps (do not re-export transitive types from the transitive closure). transitive_decls = depset(src_declarations + gen_declarations, transitive = [dep_declarations.transitive]) - # both ts_library and ts_declarations generate .closure.js files: + # both ts_library and ts_declarations generate .mjs files: # - for libraries, this is the ES6/production code # - for declarations, these are generated shims es6_sources = depset(transpiled_closure_js + tsickle_externs) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts index c05b3c32ec..2b7113b153 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/compiler_host.ts @@ -142,7 +142,7 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { * For the given potentially absolute input file path (typically .ts), returns * the relative output path. For example, for * /path/to/root/blaze-out/k8-fastbuild/genfiles/my/file.ts, will return - * my/file.js or my/file.closure.js (depending on ES5 mode). + * my/file.js or my/file.mjs (depending on ES5 mode). */ relativeOutputPath(fileName: string) { let result = this.rootDirsRelative(fileName); @@ -506,13 +506,13 @@ export class CompilerHost implements ts.CompilerHost, tsickle.TsickleHost { path.join(this.bazelOpts.transpiledJsOutputDirectory!, fileName); } } else if (!this.bazelOpts.es5Mode) { - // Write ES6 transpiled files to *.closure.js. + // Write ES6 transpiled files to *.mjs. if (this.bazelOpts.locale) { // i18n paths are required to end with __locale.js so we put // the .closure segment before the __locale fileName = fileName.replace(/(__[^\.]+)?\.js$/, '.closure$1.js'); } else { - fileName = fileName.replace(/\.js$/, '.closure.js'); + fileName = fileName.replace(/\.js$/, '.mjs'); } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts index 59d725b23e..2351cd87f2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts @@ -259,12 +259,12 @@ describe('compiler host', () => { }); describe('output files', () => { - it('writes to .closure.js in ES6 mode', () => { + it('writes to .mjs in ES6 mode', () => { createFakeGoogle3Host({ es5: false, }).writeFile('a.js', 'some.code();', false, undefined, []); expect(Object.keys(writtenFiles)).toEqual([ - '/root/google3/blaze-out/k8-fastbuild/bin/a.closure.js' + '/root/google3/blaze-out/k8-fastbuild/bin/a.mjs' ]); }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index 9bc0a33b6c..a50ac1ccc0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -39,7 +39,7 @@ export interface BazelOptions { /** * If true, emit devmode output into filename.js. - * If false, emit prodmode output into filename.closure.js. + * If false, emit prodmode output into filename.mjs. */ es5Mode: boolean; From ebb696960dd04331fbf1b37c49af200463978ccd Mon Sep 17 00:00:00 2001 From: rjamet Date: Thu, 12 Sep 2019 04:14:08 -0700 Subject: [PATCH 0643/1134] Add a way to call Tsetse with fixes in the diagnostic text. This adds a way to turn diagnostics into text with an inlined fix, and the related tests. Also sneak in a few tests for imports that I seemed to have forgot about. PiperOrigin-RevId: 268656099 --- .../internal/tsetse/failure.ts | 92 +++++++++++- .../ban_conformance_pattern/fixer_test.ts | 131 ++++++++++++++++-- .../tsetse/util/testing/test_support.ts | 19 +++ 3 files changed, 224 insertions(+), 18 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts index 61680acfde..317faf40fc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts @@ -19,7 +19,7 @@ export class Failure { * This returns a structure compatible with ts.Diagnostic, but with added * fields, for convenience and to support suggested fixes. */ - toDiagnostic(): ts.Diagnostic&{end: number, fix?: Fix} { + toDiagnostic(): DiagnosticWithFix { return { file: this.sourceFile, start: this.start, @@ -35,15 +35,87 @@ export class Failure { }; } + /** + * Same as toDiagnostic, but include the fix in the message, so that systems + * that don't support displaying suggested fixes can still surface that + * information. This assumes the diagnostic message is going to be presented + * within the context of the problematic code + */ + toDiagnosticWithStringifiedFix(): DiagnosticWithFix { + const diagnostic = this.toDiagnostic(); + if (this.suggestedFix) { + diagnostic.messageText += ' ' + this.fixToReadableStringInContext(); + } + return diagnostic; + } + toString(): string { return `{ sourceFile:${ this.sourceFile ? this.sourceFile.fileName : 'unknown'}, start:${ this.start}, end:${this.end}, fix:${fixToString(this.suggestedFix)} }`; } + + + /** + * Stringifies a `Fix`, in a way that makes sense when presented alongside the + * finding. This is a heuristic, obviously. + */ + fixToReadableStringInContext() { + if (!this.suggestedFix) return ''; // no changes, nothing to state. + const f: Fix = this.suggestedFix; + let fixText = ''; + + for (const c of f.changes) { + // Insertion. + if (c.start === c.end) { + // Try to see if that's an import. + if (c.replacement.indexOf('import') !== -1) { + fixText += `- Add new import: ${c.replacement}\n`; + } else { + // Insertion that's not a full import. This should rarely happen in + // our context, and we don't have a great message for these. + // For instance, this could be the addition of a new symbol in an + // existing import (`import {foo}` becoming `import {foo, bar}`). + fixText += `- Insert ${this.readableRange(c.start, c.end)}: ${ + c.replacement}\n`; + } + } else if (c.start === this.start && c.end === this.end) { + // We assume the replacement is the main part of the fix, so put that + // individual change first in `fixText`. + fixText = `- Replace the full match with: ${c.replacement}\n` + fixText; + } else { + // Fallback case: Use a numerical range to specify a replacement. In + // general, falling through in this case should be avoided, as it's not + // really readable without an IDE (the range can be outside of the + // matched code). + fixText = `- Replace ${this.readableRange(c.start, c.end)} with: ` + + `${c.replacement}\n${fixText}`; + } + } + + return 'Suggested fix:\n' + fixText.trim(); + } + + // TS indexes from 0 both ways, but tooling generally indexes from 1 for both + // lines and columns. The translation is done here. + readableRange(from: number, to: number) { + const lcf = this.sourceFile.getLineAndCharacterOfPosition(from); + const lct = this.sourceFile.getLineAndCharacterOfPosition(to); + if (lcf.line === lct.line) { + if (lcf.character === lct.character) { + return `at line ${lcf.line + 1}, char ${lcf.character + 1}`; + } + return `line ${lcf.line + 1}, from char ${lcf.character + 1} to ${ + lct.character + 1}`; + } else { + return `from line ${lcf.line + 1}, char ${lcf.character + 1} to line ${ + lct.line + 1}, char ${lct.character + 1}`; + } + } } /** - * A Fix is a potential repair to the associated Failure. + * A `Fix` is a potential repair to the associated `Failure`. */ export interface Fix { /** @@ -52,12 +124,26 @@ export interface Fix { changes: IndividualChange[], } +/** + * An individual text replacement/insertion in a source file. Used as part of a + * `Fix`. + */ export interface IndividualChange { sourceFile: ts.SourceFile, start: number, end: number, replacement: string } /** - * Stringifies a Fix, replacing the ts.SourceFile with the matching filename. + * A ts.Diagnostic that might include a `Fix`, and with an added `end` field for + * convenience. + */ +export interface DiagnosticWithFix extends ts.Diagnostic { + end: number; + fix?: Fix; +} + +/** + * Stringifies a `Fix`, replacing the `ts.SourceFile` with the matching + * filename. */ export function fixToString(f?: Fix) { if (!f) return 'undefined'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts index 3b7c85ff1d..24e53adb55 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts @@ -1,9 +1,9 @@ import 'jasmine'; import * as ts from 'typescript'; -import {Fix} from '../../failure'; +import {Failure, Fix} from '../../failure'; import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; -import {buildReplacementFixer, Fixer} from '../../util/fixer'; -import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; +import {buildReplacementFixer, Fixer, maybeAddNamedImport, maybeAddNamespaceImport} from '../../util/fixer'; +import {compile, compileAndCheck, customMatchers} from '../../util/testing/test_support'; const uppercaseFixer: Fixer = { getFixForFlaggedNode(node: ts.Node): Fix { @@ -22,19 +22,19 @@ const uppercaseFixerBuilt: Fixer = buildReplacementFixer((node: ts.Node) => { return {replaceWith: node.getText().toUpperCase()}; }) +// The initial config and source off which we run those checks. +const baseConfig = { + errorMessage: 'found citation', + kind: PatternKind.BANNED_PROPERTY_WRITE, + values: ['HTMLQuoteElement.prototype.cite'], +}; + +const source = `export {};\n` + + `const q = document.createElement('q');\n` + + `q.cite = 'some example string';\n`; + describe('ConformancePatternRule\'s fixer', () => { describe('Generates basic fixes', () => { - const source = `export {};\n` + - `const q = document.createElement('q');\n` + - `q.cite = 'some example string';\n`; - - // The initial config off which we run those checks. - const baseConfig = { - errorMessage: 'found citation', - kind: PatternKind.BANNED_PROPERTY_WRITE, - values: ['HTMLQuoteElement.prototype.cite'], - }; - it('for a single match', () => { const rule = new ConformancePatternRule(baseConfig, uppercaseFixer); const results = compileAndCheck(rule, source); @@ -49,7 +49,6 @@ describe('ConformancePatternRule\'s fixer', () => { ]); }); - it('for a single match (alternate fixer)', () => { const rule = new ConformancePatternRule(baseConfig, uppercaseFixerBuilt); const results = compileAndCheck(rule, source); @@ -82,15 +81,117 @@ describe('ConformancePatternRule\'s fixer', () => { expect(results[0]).toHaveFixMatching([ {start: 50, end: 80, replacement: `Q.CITE = 'SOME EXAMPLE STRING'`} ]); + expect(results[0].fixToReadableStringInContext()) + .toBe( + `Suggested fix:\n` + + `- Replace the full match with: Q.CITE = 'SOME EXAMPLE STRING'`); expect(results[1]).toHaveFixMatching([{ start: 82, end: 118, replacement: `Q.CITE = 'SOME OTHER EXAMPLE STRING'` }]); + expect(results[1].fixToReadableStringInContext()) + .toBe( + `Suggested fix:\n` + + `- Replace the full match with: Q.CITE = 'SOME OTHER EXAMPLE STRING'`); + }); + }); + + describe('adds imports', () => { + const addNamedImportFixer: Fixer = { + getFixForFlaggedNode(n: ts.Node) { + const ic = + maybeAddNamedImport(n.getSourceFile(), 'foo', './file_1', 'bar'); + if (ic) return {changes: [ic]}; + return; + } + }; + + it('maybeAddNamedImport additions', () => { + const results = compileAndCheck( + new ConformancePatternRule(baseConfig, addNamedImportFixer), source); + + expect(results[0]).toHaveFixMatching([{ + start: 0, + end: 0, + replacement: `import {foo as bar} from './file_1';\n` + }]); + expect(results[0].fixToReadableStringInContext()) + .toBe( + `Suggested fix:\n` + + `- Add new import: import {foo as bar} from './file_1';`); + }); + + it('maybeAddNamedImport already there', () => { + const results = compileAndCheck( + new ConformancePatternRule(baseConfig, addNamedImportFixer), + 'import {foo as bar} from \'./file_1\';\n' + source, + 'export const foo = 1;'); + + expect(results[0]).toHaveNoFix(); + expect(results[0].fixToReadableStringInContext()).toBe(''); + }); + + it('maybeAddNamedImport different name', () => { + const results = compileAndCheck( + new ConformancePatternRule(baseConfig, addNamedImportFixer), + 'import {foo as baz} from \'./file_1\';\n' + source, + 'export const foo = 1;'); + + expect(results[0]).toHaveFixMatching([ + {start: 8, end: 8, replacement: `foo as bar, `} + ]); + expect(results[0].fixToReadableStringInContext()) + .toBe( + `Suggested fix:\n` + + `- Insert at line 1, char 9: foo as bar,`); + }); + + it('maybeAddNamespacedImport', () => { + const addNamespacedImportFixer: Fixer = { + getFixForFlaggedNode(n: ts.Node): Fix | + undefined { + const ic = + maybeAddNamespaceImport(n.getSourceFile(), './file_1', 'foo'); + if (ic) return {changes: [ic]}; + return; + } + }; + const results = compileAndCheck( + new ConformancePatternRule(baseConfig, addNamespacedImportFixer), + source); + + expect(results[0]).toHaveFixMatching([ + {start: 0, end: 0, replacement: `import * as foo from './file_1';\n`} + ]); + }); + }); + + describe('the logic for location->text transforms', () => { + const sourceFile = compile(`let a;\nlet b;\n`) + .getSourceFiles() + .filter(f => f.fileName.indexOf('file_0') !== -1)[0]; + // let a;\nlet b;\n + // 0123456 7890123 Positions + // 1234567 1234567 Expected result in characters + + it('stringifies as expected', () => { + // Only the sourceFile matters here. + const failure = new Failure(sourceFile, NaN, NaN, 'whatever', NaN); + + expect(failure.readableRange(0, 0)).toBe('at line 1, char 1'); + expect(failure.readableRange(1, 1)).toBe('at line 1, char 2'); + expect(failure.readableRange(0, 1)).toBe('line 1, from char 1 to 2'); + expect(failure.readableRange(0, 1)).toBe('line 1, from char 1 to 2'); + expect(failure.readableRange(7, 7)).toBe('at line 2, char 1'); + expect(failure.readableRange(0, 7)) + .toBe('from line 1, char 1 to line 2, char 1'); }); }); }); + + beforeEach(() => { jasmine.addMatchers(customMatchers); }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts index c12e28a09d..fb2460e387 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts @@ -213,7 +213,22 @@ export const customMatchers: jasmine.CustomMatcherFactories = { return {pass: regrets === '', message: regrets}; } }; + }, + + /** + * Asserts that a Failure has no fix. + */ + toHaveNoFix(): jasmine.CustomMatcher { + return { + compare: (actualFailure: Failure) => { + return { + pass: actualFailure.toDiagnostic().fix === undefined, + message: 'This failure should not have a fix.' + }; + } + }; } + }; function expectation(fieldname: string, expectation: any, actual: any) { @@ -232,11 +247,15 @@ declare global { messageText?: string, }): void; + /** Checks that a Failure has the expected Fix field. */ toHaveFixMatching(expected: [ {fileName?: string, start?: number, end?: number, replacement?: string} ]): void; toHaveNFailures(expected: Number, config?: Config): void; + + /** Asserts that a Failure has no fix. */ + toHaveNoFix(): void; } } } From 36dd0b16192f79e0598c94aea12aba1bcae13a54 Mon Sep 17 00:00:00 2001 From: rjamet Date: Mon, 16 Sep 2019 02:16:12 -0700 Subject: [PATCH 0644/1134] Swap the Tsetse runner diagnostic generation to use toDiagnosticWithStringifiedFix. This should be a noop, as no ConformancePatternRule is enabled, and they're the only ones with fixes. PiperOrigin-RevId: 269284571 --- .../bazelbuild/rules_typescript/internal/tsetse/runner.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts index 826131e1b5..a2b76d4077 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts @@ -40,8 +40,12 @@ export class Plugin implements pluginApi.DiagnosticPlugin { } getDiagnostics(sourceFile: ts.SourceFile) { + // Tsetse, in its plugin form, outputs ts.Diagnostic that don't make use + // of the potential suggested fixes Tsetse generates. These diagnostics are + // however displayed in context: we can therefore stringify any potential + // suggested fixes in the error message, so they don't go to waste. return this.checker.execute(sourceFile) - .map(failure => failure.toDiagnostic()); + .map(failure => failure.toDiagnosticWithStringifiedFix()); } } From dbcb6792fd7222646d81ba6abd0bf11803d83f27 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Mon, 16 Sep 2019 10:07:36 -0700 Subject: [PATCH 0645/1134] Inline getBUILDPathAndBUILDFile. Also move responsibility for determining the workspace-relative BUILD path from readBUILD to getBUILDPath. PiperOrigin-RevId: 269361049 --- .../ts_auto_deps/updater/test_register.go | 6 +- .../ts_auto_deps/updater/updater.go | 90 ++++++++++--------- .../ts_auto_deps/updater/updater_test.go | 2 +- 3 files changed, 52 insertions(+), 46 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go index 19529c979f..291e564d9e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go @@ -50,7 +50,7 @@ func (upd *Updater) RegisterTestRules(ctx context.Context, paths ...string) (boo // declaration var err error var buildPath string - g3root, buildPath, err = getBUILDPath(ctx, path) + g3root, buildPath, _, err = getBUILDPath(ctx, path) if err != nil { return false, nil, err } @@ -108,7 +108,7 @@ type buildRegistry struct { } func (reg *buildRegistry) readBUILD(ctx context.Context, workspaceRoot, buildFilePath string) (*build.File, error) { - normalizedG3Path, err := getAbsoluteBUILDPath(workspaceRoot, buildFilePath) + normalizedG3Path, err := getWorkspaceRelativePath(workspaceRoot, buildFilePath) if err != nil { return nil, err } @@ -117,7 +117,7 @@ func (reg *buildRegistry) readBUILD(ctx context.Context, workspaceRoot, buildFil return bld, nil } - bld, err := readBUILD(ctx, workspaceRoot, buildFilePath) + bld, err := readBUILD(ctx, buildFilePath, normalizedG3Path) if err != nil { return nil, err } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index e6585d2023..f121c44264 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -173,36 +173,18 @@ func spin(prefix string) chan<- struct{} { return done } -// getAbsoluteBUILDPath relativizes the absolute build path so that buildFilePath -// is definitely below workspaceRoot. -func getAbsoluteBUILDPath(workspaceRoot, buildFilePath string) (string, error) { - absPath, err := filepath.Abs(buildFilePath) - if err != nil { - return "", err - } - g3Path, err := filepath.Rel(workspaceRoot, absPath) - if err != nil { - return "", err - } - return platform.Normalize(g3Path), nil -} - // readBUILD loads the BUILD file, if present, or returns a new empty one. -// workspaceRoot must be an absolute path and buildFilePath is interpreted as -// relative to CWD, and must be underneath workspaceRoot. -func readBUILD(ctx context.Context, workspaceRoot, buildFilePath string) (*build.File, error) { - normalizedG3Path, err := getAbsoluteBUILDPath(workspaceRoot, buildFilePath) - if err != nil { - return nil, fmt.Errorf("failed to resolve workspace relative path: %s", err) - } +// buildFilePath is relative to CWD, and workspaceRelativePath is relative to +// the workspace root (the directory containing the WORKSPACE file). +func readBUILD(ctx context.Context, buildFilePath, workspaceRelativePath string) (*build.File, error) { data, err := platform.ReadFile(ctx, buildFilePath) if err != nil { if os.IsNotExist(err) { - return &build.File{Path: normalizedG3Path, Type: build.TypeBuild}, nil + return &build.File{Path: workspaceRelativePath, Type: build.TypeBuild}, nil } return nil, fmt.Errorf("reading %q: %s", buildFilePath, err) } - bld, err := build.ParseBuild(normalizedG3Path, data) + bld, err := build.ParseBuild(workspaceRelativePath, data) if err != nil { if parseErr, ok := err.(build.ParseError); ok { return nil, &AnalysisFailedError{ @@ -487,33 +469,45 @@ func (upd *Updater) maybeWriteBUILD(ctx context.Context, path string, bld *build return true, nil } -func getBUILDPath(ctx context.Context, path string) (string, string, error) { - path = strings.TrimSuffix(path, "/BUILD") // Support both package paths and BUILD files - if _, err := platform.Stat(ctx, path); os.IsNotExist(err) { - return "", "", err +// getWorkspaceRelativePath takes a buildFilePath that's relative to the working +// directory, and returns a path to the BUILD file that's relative to the +// workspaceRoot (the absolute path of the directory containing the WORKSPACE +// file). +func getWorkspaceRelativePath(workspaceRoot, buildFilePath string) (string, error) { + absPath, err := filepath.Abs(buildFilePath) + if err != nil { + return "", err } - buildFilePath := filepath.Join(path, "BUILD") - g3root, err := workspace.Root(buildFilePath) + workspaceRelativePath, err := filepath.Rel(workspaceRoot, absPath) if err != nil { - return "", "", err + return "", err } + platform.Normalize(workspaceRelativePath) - return g3root, buildFilePath, nil + return workspaceRelativePath, nil } -func getBUILDPathAndBUILDFile(ctx context.Context, path string) (string, string, *build.File, error) { - g3root, buildFilePath, err := getBUILDPath(ctx, path) +// getBUILDPath takes in a package or BUILD file path, and returns the path of +// the workspace root (the absolute path of the directory containing the +// WORKSPACE file), the BUILD file path relative to the working directory, and +// the BUILD file path relative to the workspace root. +func getBUILDPath(ctx context.Context, path string) (string, string, string, error) { + path = strings.TrimSuffix(path, "/BUILD") // Support both package paths and BUILD files + if _, err := platform.Stat(ctx, path); os.IsNotExist(err) { + return "", "", "", err + } + buildFilePath := filepath.Join(path, "BUILD") + workspaceRoot, err := workspace.Root(buildFilePath) if err != nil { - return "", "", nil, err + return "", "", "", err } - bld, err := readBUILD(ctx, g3root, buildFilePath) + workspaceRelativePath, err := getWorkspaceRelativePath(workspaceRoot, buildFilePath) if err != nil { - platform.Infof("Error reading building file!") - return "", "", nil, err + return "", "", "", err } - return g3root, buildFilePath, bld, nil + return workspaceRoot, buildFilePath, workspaceRelativePath, nil } // isTazeDisabledInPackage checks the BUILD file, or if the BUILD doesn't exist, @@ -652,11 +646,17 @@ func (upd *Updater) updateBUILDAfterBazelAnalyze(ctx context.Context, isRoot boo // IsTazeDisabledForDir checks if ts_auto_deps is disabled in the BUILD file in the dir, // or if no BUILD file exists, in the closest ancestor BUILD func IsTazeDisabledForDir(ctx context.Context, dir string) (bool, error) { - g3root, buildFilePath, bld, err := getBUILDPathAndBUILDFile(ctx, dir) + g3root, buildFilePath, workspaceRelativePath, err := getBUILDPath(ctx, dir) if err != nil { return false, err } + bld, err := readBUILD(ctx, buildFilePath, workspaceRelativePath) + if err != nil { + platform.Infof("Error reading building file!") + return false, err + } + return isTazeDisabledInPackage(ctx, g3root, buildFilePath, bld), nil } @@ -703,11 +703,17 @@ func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options Update latencyReport := &LatencyReport{} start := time.Now() - g3root, buildFilePath, bld, err := getBUILDPathAndBUILDFile(ctx, path) - latencyReport.GetBUILD = time.Since(start) + g3root, buildFilePath, workspaceRelativePath, err := getBUILDPath(ctx, path) + if err != nil { + return false, nil, err + } + + bld, err := readBUILD(ctx, buildFilePath, workspaceRelativePath) if err != nil { + platform.Infof("Error reading building file!") return false, nil, err } + latencyReport.GetBUILD = time.Since(start) start = time.Now() ts_auto_depsDisabled := isTazeDisabledInPackage(ctx, g3root, buildFilePath, bld) @@ -1194,7 +1200,7 @@ func FindBUILDFile(ctx context.Context, pkgToBUILD map[string]*build.File, _, err := platform.Stat(ctx, buildPath) var bld *build.File if err == nil { - bld, err = readBUILD(ctx, workspaceRoot, buildPath) + bld, err = readBUILD(ctx, buildPath, filepath.Join(packagePath, "BUILD")) } else if os.IsNotExist(err) { // Recursively search parent package and cache its location below if found. bld, err = FindBUILDFile(ctx, pkgToBUILD, workspaceRoot, filepath.Dir(packagePath)) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go index b62ef20aef..613b99f46f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go @@ -37,7 +37,7 @@ ts_library(name = 'a', srcs = ['b.ts']) if err != nil { t.Fatal(err) } - bld, err := readBUILD(context.Background(), filepath.Join(testTmpDir, "google3"), p) + bld, err := readBUILD(context.Background(), p, "foo/bar/BUILD") if err != nil { t.Fatal(err) } From 52dbfd1f051d9f9d848eaaf5fe0a98c4511c5df2 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Mon, 16 Sep 2019 15:28:37 -0700 Subject: [PATCH 0646/1134] Don't re-stat the BUILD file. Previously readBUILD returned a newly created *build.File struct if it didn't find an existing BUILD file. This meant that other functions that needed to know if there was an existing BUILD file had to stat the BUILD file to check if it existed. Now, readBUILD returns a nil pointer if there isn't an existing BUILD, so the other functions can just check if the bld they're passed is nil. PiperOrigin-RevId: 269434939 --- .../ts_auto_deps/updater/test_register.go | 4 ++ .../ts_auto_deps/updater/updater.go | 56 +++++++++++-------- 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go index 291e564d9e..ac6c1fba9f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go @@ -121,6 +121,10 @@ func (reg *buildRegistry) readBUILD(ctx context.Context, workspaceRoot, buildFil if err != nil { return nil, err } + if bld == nil { + // The BUILD file didn't exist, so create a new, empty one. + bld = &build.File{Path: normalizedG3Path, Type: build.TypeBuild} + } reg.bldFiles[normalizedG3Path] = bld diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index f121c44264..2e8dc495ce 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -173,14 +173,14 @@ func spin(prefix string) chan<- struct{} { return done } -// readBUILD loads the BUILD file, if present, or returns a new empty one. +// readBUILD loads the BUILD file, if present, or returns a nil pointer, if not. // buildFilePath is relative to CWD, and workspaceRelativePath is relative to // the workspace root (the directory containing the WORKSPACE file). func readBUILD(ctx context.Context, buildFilePath, workspaceRelativePath string) (*build.File, error) { data, err := platform.ReadFile(ctx, buildFilePath) if err != nil { if os.IsNotExist(err) { - return &build.File{Path: workspaceRelativePath, Type: build.TypeBuild}, nil + return nil, nil } return nil, fmt.Errorf("reading %q: %s", buildFilePath, err) } @@ -512,28 +512,32 @@ func getBUILDPath(ctx context.Context, path string) (string, string, string, err // isTazeDisabledInPackage checks the BUILD file, or if the BUILD doesn't exist, // the nearest ancestor BUILD file for a disable_ts_auto_deps() rule. -func isTazeDisabledInPackage(ctx context.Context, g3root string, buildFilePath string, bld *build.File) bool { - if _, err := platform.Stat(ctx, buildFilePath); err != nil && os.IsNotExist(err) { +func isTazeDisabledInPackage(ctx context.Context, g3root, buildFilePath, workspaceRelativePath string, bld *build.File) (bool, error) { + if bld == nil { // Make sure ts_auto_deps hasn't been disabled in the next closest ancestor package. - ancestor, err := FindBUILDFile(ctx, make(map[string]*build.File), g3root, filepath.Dir(bld.Path)) - if err != nil { + ancestor, err := FindBUILDFile(ctx, make(map[string]*build.File), g3root, filepath.Dir(workspaceRelativePath)) + if _, ok := err.(*noAncestorBUILDError); ok { platform.Infof("Could not find any ancestor BUILD for %q, continuing with a new BUILD file", buildFilePath) + return false, nil + } else if err != nil { + return false, err } else if buildHasDisableTaze(ancestor) { fmt.Printf("ts_auto_deps disabled below %q\n", ancestor.Path) - return true + return true, nil } else { platform.Infof("BUILD file missing and ts_auto_deps is enabled below %q. Creating new BUILD file.", ancestor.Path) + return false, nil } } if buildHasDisableTaze(bld) { fmt.Printf("ts_auto_deps disabled on %q\n", buildFilePath) - return true + return true, nil } - return false + return false, nil } // SubdirectorySourcesError is returned when ts_auto_deps detects a BUILD file @@ -589,10 +593,10 @@ func hasSubdirectorySources(bld *build.File) bool { // directoryOrAncestorHasSubdirectorySources checks for ts_libraries referencing sources in subdirectories. // It checks the current directory's BUILD if it exists, otherwise it checks the nearest // ancestor package. -func directoryOrAncestorHasSubdirectorySources(ctx context.Context, g3root string, buildFilePath string, bld *build.File) (bool, error) { - if _, err := platform.Stat(ctx, buildFilePath); err != nil && os.IsNotExist(err) { +func directoryOrAncestorHasSubdirectorySources(ctx context.Context, g3root, workspaceRelativePath string, bld *build.File) (bool, error) { + if bld == nil { // Make sure the next closest ancestor package doesn't reference sources in a subdirectory. - ancestor, err := FindBUILDFile(ctx, make(map[string]*build.File), g3root, filepath.Dir(bld.Path)) + ancestor, err := FindBUILDFile(ctx, make(map[string]*build.File), g3root, filepath.Dir(workspaceRelativePath)) if _, ok := err.(*noAncestorBUILDError); ok { // couldn't find an ancestor BUILD, so there aren't an subdirectory sources return false, nil @@ -600,6 +604,9 @@ func directoryOrAncestorHasSubdirectorySources(ctx context.Context, g3root strin return false, err } else if hasSubdirectorySources(ancestor) { return true, nil + } else { + // there was an ancestor BUILD, but it didn't reference subdirectory sources + return false, nil } } @@ -657,7 +664,7 @@ func IsTazeDisabledForDir(ctx context.Context, dir string) (bool, error) { return false, err } - return isTazeDisabledInPackage(ctx, g3root, buildFilePath, bld), nil + return isTazeDisabledInPackage(ctx, g3root, buildFilePath, workspaceRelativePath, bld) } // CantProgressAfterWriteError reports that ts_auto_deps was run in an environment @@ -716,14 +723,17 @@ func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options Update latencyReport.GetBUILD = time.Since(start) start = time.Now() - ts_auto_depsDisabled := isTazeDisabledInPackage(ctx, g3root, buildFilePath, bld) + ts_auto_depsDisabled, err := isTazeDisabledInPackage(ctx, g3root, buildFilePath, workspaceRelativePath, bld) + if err != nil { + return false, nil, err + } latencyReport.TazeDisabled = time.Since(start) if ts_auto_depsDisabled { return false, nil, nil } start = time.Now() - hasSubdirSrcs, err := directoryOrAncestorHasSubdirectorySources(ctx, g3root, buildFilePath, bld) + hasSubdirSrcs, err := directoryOrAncestorHasSubdirectorySources(ctx, g3root, workspaceRelativePath, bld) latencyReport.SubdirSrcs = time.Since(start) if err != nil { return false, nil, err @@ -732,6 +742,11 @@ func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options Update return false, nil, &SubdirectorySourcesError{} } + if bld == nil { + // The BUILD file didn't exist, so create a new, empty one. + bld = &build.File{Path: workspaceRelativePath, Type: build.TypeBuild} + } + start = time.Now() changed, err := upd.addSourcesToBUILD(ctx, path, buildFilePath, bld) latencyReport.AddSrcs = time.Since(start) @@ -1197,15 +1212,12 @@ func FindBUILDFile(ctx context.Context, pkgToBUILD map[string]*build.File, return bld, nil } buildPath := filepath.Join(workspaceRoot, packagePath, "BUILD") - _, err := platform.Stat(ctx, buildPath) - var bld *build.File - if err == nil { - bld, err = readBUILD(ctx, buildPath, filepath.Join(packagePath, "BUILD")) - } else if os.IsNotExist(err) { + bld, err := readBUILD(ctx, buildPath, filepath.Join(packagePath, "BUILD")) + if err != nil { + return nil, err + } else if bld == nil { // Recursively search parent package and cache its location below if found. bld, err = FindBUILDFile(ctx, pkgToBUILD, workspaceRoot, filepath.Dir(packagePath)) - } else { - return nil, err } if err == nil { // NB: The cache key is packagePath ('foo/bar/baz'), even if build file was From ec4405576424ae00a736765e25667d90b3070091 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Tue, 17 Sep 2019 06:08:50 -0700 Subject: [PATCH 0647/1134] Remove unused load statements from .bzl files After transitive loads have been disabled in Blaze, unused load statements have no effect (besides not useful memory consumption). The CL has been created automatically by calling `buildifier --lint=fix --warnings=load` on all .bzl files. The following additional command were run on all affected files to clean them up: * buildifier -a -v --lint=fix --warnings=load-on-top Moves all load statements to the top of a file * buildifier -a -v --lint=fix --warnings=same-origin-load Compresses all load statements from the same .bzl file to one load statement PiperOrigin-RevId: 269552258 --- .../bazelbuild/rules_typescript/internal/ts_repositories.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl index e37ca2f77c..929db7d1a1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl @@ -20,7 +20,7 @@ load("@bazel_gazelle//:deps.bzl", "go_repository") # END-DEV-ONLY -load("@build_bazel_rules_nodejs//:defs.bzl", "check_bazel_version", "check_rules_nodejs_version", "yarn_install") +load("@build_bazel_rules_nodejs//:defs.bzl", "check_bazel_version", "check_rules_nodejs_version") def ts_setup_workspace(): """This repository rule should be called from your WORKSPACE file. From 769e1f4cf75eec4cbb1b51db65c821f0b4ae8ef6 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Tue, 17 Sep 2019 09:25:59 -0700 Subject: [PATCH 0648/1134] Fix ts_library to produce files that rollup knows how to find. Currently we produce .closure.js files with ESModules, this naming convention was chosen arbitrarily to indicate we expected these to be inputs to closure compiler. However other bundlers don't understand this convention and cannot find their inputs. Today we work around this by copying a bunch of files around before running rollup, but this is a performance issue we can avoid just by naming our outputs in the standard way for esmodules. PiperOrigin-RevId: 269585536 --- .../bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index 2e8dc495ce..6594d73a5d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -915,7 +915,7 @@ func removeSourcesUsed(bld *build.File, ruleKind, attrName string, srcs srcSet) } const ( - tsSkylarkLabel = "@npm_bazel_typescript//:defs.bzl" + tsSkylarkLabel = "@npm_bazel_typescript//:index.bzl" ngSkylarkLabel = "@angular//:index.bzl" ) From 1ac81fd602e737b1aa53c5188273df1eb609f66d Mon Sep 17 00:00:00 2001 From: lucassloan Date: Tue, 17 Sep 2019 12:54:48 -0700 Subject: [PATCH 0649/1134] Asynchronously glob for TypeScript sources in the package. PiperOrigin-RevId: 269634230 --- .../ts_auto_deps/updater/updater.go | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index 6594d73a5d..40f3056c80 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -207,6 +207,11 @@ func readBUILD(ctx context.Context, buildFilePath, workspaceRelativePath string) type srcSet map[string]bool +type globResult struct { + srcs srcSet + err error +} + // globSources finds sources in path with any of the given extensions. // It also filters out temporary files, dangling symlinks, and symlinks into bazel-bin specifically. // It returns file names relative to path. @@ -617,12 +622,7 @@ func directoryOrAncestorHasSubdirectorySources(ctx context.Context, g3root, work return false, nil } -func (upd *Updater) addSourcesToBUILD(ctx context.Context, path string, buildFilePath string, bld *build.File) (bool, error) { - platform.Infof("Globbing TS sources in %s", path) - srcs, err := globSources(ctx, path, []string{"ts", "tsx"}) - if err != nil { - return false, err - } +func (upd *Updater) addSourcesToBUILD(ctx context.Context, path string, buildFilePath string, bld *build.File, srcs srcSet) (bool, error) { platform.Infof("Updating sources") if len(srcs) == 0 && len(allTSRules(bld)) == 0 { @@ -709,6 +709,15 @@ type LatencyReport struct { func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options UpdateBUILDOptions) (bool, *LatencyReport, error) { latencyReport := &LatencyReport{} + // asynchronously glob for TS sources in the package, since it can be slow on + // a network file system. + globChan := make(chan globResult) + go func() { + platform.Infof("Globbing TS sources in %s", path) + srcs, err := globSources(ctx, path, []string{"ts", "tsx"}) + globChan <- globResult{srcs, err} + }() + start := time.Now() g3root, buildFilePath, workspaceRelativePath, err := getBUILDPath(ctx, path) if err != nil { @@ -748,7 +757,11 @@ func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options Update } start = time.Now() - changed, err := upd.addSourcesToBUILD(ctx, path, buildFilePath, bld) + globRes := <-globChan + if globRes.err != nil { + return false, nil, globRes.err + } + changed, err := upd.addSourcesToBUILD(ctx, path, buildFilePath, bld, globRes.srcs) latencyReport.AddSrcs = time.Since(start) if err != nil { return false, nil, err From 75014c7711fece6e7894c227358f8605f6cb1d33 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Fri, 20 Sep 2019 14:19:43 -0700 Subject: [PATCH 0650/1134] Switch to npm_bazel_typescript index.bzl. defs.bzl is deprecated and being removed soon. PiperOrigin-RevId: 270348923 --- .../github.com/bazelbuild/rules_typescript/internal/BUILD.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 6e10a60519..5eb31904f0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -17,7 +17,7 @@ load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary") load("@bazel_skylib//:bzl_library.bzl", "bzl_library") load("@npm_bazel_jasmine//:index.bzl", "jasmine_node_test") -load("@npm_bazel_typescript//:defs.bzl", "ts_library") +load("@npm_bazel_typescript//:index.bzl", "ts_library") package(default_visibility = ["//visibility:public"]) From 187fe9c1e2aef34400c9e2d2897ed2a47ce4f452 Mon Sep 17 00:00:00 2001 From: martinprobst Date: Mon, 23 Sep 2019 09:03:04 -0700 Subject: [PATCH 0651/1134] Turn PatternKind into a non-const enum. PatternKind is later re-exported. const enums cannot be re-exported, as they are removed at compile time and don't exist at runtime. This fixes a compilation error in TS3.6: conformance_pattern_rule.ts:57:9 - error TS2475: 'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment or type query. PiperOrigin-RevId: 270688010 --- .../rules_typescript/internal/tsetse/util/pattern_config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index bc907b1440..216ce139ac 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -4,7 +4,7 @@ * patterns whose name match JSConformance patterns should behave similarly (see * https://github.com/google/closure-compiler/wiki/JS-Conformance-Framework) */ -export const enum PatternKind { +export enum PatternKind { BANNED_NAME = 'banned-name', BANNED_PROPERTY_WRITE = 'banned-property-write', BANNED_PROPERTY_NON_CONSTANT_WRITE = 'banned-property-non-constant-write', From 75a411d00cb6702c8d5810a5e9da47263041985b Mon Sep 17 00:00:00 2001 From: lucassloan Date: Thu, 26 Sep 2019 16:14:11 -0700 Subject: [PATCH 0652/1134] Don't wrap filesystem errors. PiperOrigin-RevId: 271455249 --- .../bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index 40f3056c80..f606e5bbe5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -182,7 +182,7 @@ func readBUILD(ctx context.Context, buildFilePath, workspaceRelativePath string) if os.IsNotExist(err) { return nil, nil } - return nil, fmt.Errorf("reading %q: %s", buildFilePath, err) + return nil, err } bld, err := build.ParseBuild(workspaceRelativePath, data) if err != nil { From 42979534316d6e8aacb8d2e185deec38c0a1a6e6 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Fri, 27 Sep 2019 12:47:06 -0700 Subject: [PATCH 0653/1134] Ensure the fake filesystem used in concatjs_test.go is thread-safe. PiperOrigin-RevId: 271627870 --- .../devserver/concatjs/concatjs_test.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/concatjs_test.go b/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/concatjs_test.go index 00793bec00..ddd1a4701b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/concatjs_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/concatjs/concatjs_test.go @@ -8,6 +8,7 @@ import ( "path/filepath" "reflect" "strings" + "sync" "testing" "time" ) @@ -42,20 +43,27 @@ func TestWriteJSEscaped(t *testing.T) { } type fakeFileSystem struct { + mux sync.Mutex fakeReadFile func(filename string) ([]byte, error) fakeStatMtime func(filename string) (time.Time, error) fakeResolvePath func(root string, filename string) (string, error) } func (fs *fakeFileSystem) ReadFile(filename string) ([]byte, error) { + fs.mux.Lock() + defer fs.mux.Unlock() return fs.fakeReadFile(filename) } func (fs *fakeFileSystem) StatMtime(filename string) (time.Time, error) { + fs.mux.Lock() + defer fs.mux.Unlock() return fs.fakeStatMtime(filename) } -func (fs *fakeFileSystem) ResolvePath(root string, filename string) (string, error) { +func (fs *fakeFileSystem) ResolvePath(root string, filename string) (string, error) { + fs.mux.Lock() + defer fs.mux.Unlock() return fs.fakeResolvePath(root, filename) } @@ -167,7 +175,7 @@ func TestCustomFileResolving(t *testing.T) { } }, fakeStatMtime: func(filename string) (time.Time, error) { - return time.Now(), nil + return time.Now(), nil }, fakeResolvePath: func(root string, filename string) (string, error) { // For this test, we use an absolute root. This is similar to how From 509497d9db7a643b052913cc4798bb0bdf41b4b1 Mon Sep 17 00:00:00 2001 From: rjamet Date: Tue, 1 Oct 2019 07:39:01 -0700 Subject: [PATCH 0654/1134] Add the possibility to set a rule name in a conformanceRule's config. Tsetse's error whitelisting scheme, when used with Bazel, relies on the rule name as the key to the whitelist object, but our current autogenerated rule names for ConformancePattern rules won't cut it: there could be two different BANNED_NAME rules enabled in the same codebase, who'd have colliding names with the current naming rules. With this change, the configuration of a rule lets you specify its rule name to avoid that collision. PiperOrigin-RevId: 272206672 --- .../rules_typescript/internal/tsetse/rule.ts | 5 ++++ .../tsetse/rules/conformance_pattern_rule.ts | 2 +- .../rule_creation_test.ts | 28 +++++++++++++++++++ .../internal/tsetse/util/pattern_config.ts | 6 ++++ 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/rule_creation_test.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rule.ts index 96d888a687..7cc07a8bdc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rule.ts @@ -6,6 +6,11 @@ import {Checker} from './checker'; * files. */ export abstract class AbstractRule { + /** + * A lower-dashed-case name for that rule. This is not used by Tsetse itself, + * but the integrators might (such as the TypeScript Bazel rules, for + * instance). + */ abstract readonly ruleName: string; abstract readonly code: number; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts index 0cbfe7111c..feb72c2621 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts @@ -40,7 +40,7 @@ export class ConformancePatternRule implements AbstractRule { default: throw new Error('Config type not recognized, or not implemented yet.'); } - this.ruleName = `conformance-pattern-${config.kind}`; + this.ruleName = config.name || `conformance-pattern-${config.kind}`; } register(checker: Checker) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/rule_creation_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/rule_creation_test.ts new file mode 100644 index 0000000000..46cc15634f --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/rule_creation_test.ts @@ -0,0 +1,28 @@ +import 'jasmine'; +import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; +import {customMatchers} from '../../util/testing/test_support'; + +describe('ConformancePatternRule creation', () => { + describe('naming', () => { + const baseConfig = { + errorMessage: 'do not cite', + kind: PatternKind.BANNED_PROPERTY_WRITE, + values: ['HTMLQuoteElement.prototype.cite'], + }; + + it('generates a name by default', () => { + const rule = new ConformancePatternRule(baseConfig); + expect(rule.ruleName).toBe('conformance-pattern-banned-property-write'); + }); + + it('accepts given names', () => { + const namedConfig = {name: 'myRuleName', ...baseConfig}; + const rule = new ConformancePatternRule(namedConfig); + expect(rule.ruleName).toBe('myRuleName'); + }); + }); +}); + +beforeEach(() => { + jasmine.addMatchers(customMatchers); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index 216ce139ac..cb35d41cf3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -31,6 +31,12 @@ export interface Config { /** A list of whitelist blocks. */ whitelistEntries?: WhitelistEntry[]; + + /** + * An optional name for that rule, which will be the rule's `ruleName`. + * Should be lower-dashed-case. + */ + name?: string; } /** From 4adeea1f72f5ee00feb704c2030a788a03025521 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Tue, 1 Oct 2019 17:01:26 -0700 Subject: [PATCH 0655/1134] Change the --update_comments flag to only update taze comments when blaze can't find the dep. PiperOrigin-RevId: 272327174 --- .../bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go | 1 - 1 file changed, 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index f606e5bbe5..d3ecc683cc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -623,7 +623,6 @@ func directoryOrAncestorHasSubdirectorySources(ctx context.Context, g3root, work } func (upd *Updater) addSourcesToBUILD(ctx context.Context, path string, buildFilePath string, bld *build.File, srcs srcSet) (bool, error) { - platform.Infof("Updating sources") if len(srcs) == 0 && len(allTSRules(bld)) == 0 { // No TypeScript rules/sources, no need to update anything From b4f9c8bdc05234f88a6202dfebdbf2710d08ec89 Mon Sep 17 00:00:00 2001 From: rjamet Date: Thu, 10 Oct 2019 06:42:54 -0700 Subject: [PATCH 0656/1134] Cleanup pass on the conformance_pattern tests. This change reorders some tests, and uniformizes them in the use of "toHaveFailures", which is far more descriptive when failing than just "1 expected to be 2". PiperOrigin-RevId: 273949911 --- .../ban_conformance_pattern/fixer_test.ts | 61 ++-- .../name_call_non_constant_argument_test.ts | 33 +- .../ban_conformance_pattern/name_test.ts | 50 ++- .../property_non_constant_write_test.ts | 12 +- .../property_write_test.ts | 163 +++++----- .../ban_conformance_pattern/whitelist_test.ts | 13 +- .../tsetse/util/testing/test_support.ts | 297 ++++++++++-------- 7 files changed, 326 insertions(+), 303 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts index 24e53adb55..59843a635e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts @@ -20,7 +20,7 @@ const uppercaseFixer: Fixer = { const uppercaseFixerBuilt: Fixer = buildReplacementFixer((node: ts.Node) => { return {replaceWith: node.getText().toUpperCase()}; -}) +}); // The initial config and source off which we run those checks. const baseConfig = { @@ -39,28 +39,26 @@ describe('ConformancePatternRule\'s fixer', () => { const rule = new ConformancePatternRule(baseConfig, uppercaseFixer); const results = compileAndCheck(rule, source); - expect(results).toHaveNFailures(1, baseConfig); - expect(results[0]).toBeFailureMatching({ + expect(results).toHaveFailuresMatching({ matchedCode: `q.cite = 'some example string'`, - messageText: 'found citation' + messageText: 'found citation', + fix: [ + {start: 50, end: 80, replacement: `Q.CITE = 'SOME EXAMPLE STRING'`} + ] }); - expect(results[0]).toHaveFixMatching([ - {start: 50, end: 80, replacement: `Q.CITE = 'SOME EXAMPLE STRING'`} - ]); }); it('for a single match (alternate fixer)', () => { const rule = new ConformancePatternRule(baseConfig, uppercaseFixerBuilt); const results = compileAndCheck(rule, source); - expect(results).toHaveNFailures(1, baseConfig); - expect(results[0]).toBeFailureMatching({ + expect(results).toHaveFailuresMatching({ matchedCode: `q.cite = 'some example string'`, - messageText: 'found citation' + messageText: 'found citation', + fix: [ + {start: 50, end: 80, replacement: `Q.CITE = 'SOME EXAMPLE STRING'`} + ] }); - expect(results[0]).toHaveFixMatching([ - {start: 50, end: 80, replacement: `Q.CITE = 'SOME EXAMPLE STRING'`} - ]); }); it('for several matches', () => { @@ -69,27 +67,30 @@ describe('ConformancePatternRule\'s fixer', () => { source + `q.cite = 'some other example string';\n`; const results = compileAndCheck(rule, sourceTwoMatches); - expect(results).toHaveNFailures(2, baseConfig); - expect(results[0]).toBeFailureMatching({ - matchedCode: `q.cite = 'some example string'`, - messageText: 'found citation' - }); - expect(results[1]).toBeFailureMatching({ - matchedCode: `q.cite = 'some other example string'`, - messageText: 'found citation' - }); - expect(results[0]).toHaveFixMatching([ - {start: 50, end: 80, replacement: `Q.CITE = 'SOME EXAMPLE STRING'`} - ]); + expect(results).toHaveFailuresMatching( + { + matchedCode: `q.cite = 'some example string'`, + messageText: 'found citation', + fix: [{ + start: 50, + end: 80, + replacement: `Q.CITE = 'SOME EXAMPLE STRING'` + }] + }, + { + matchedCode: `q.cite = 'some other example string'`, + messageText: 'found citation', + fix: [{ + start: 82, + end: 118, + replacement: `Q.CITE = 'SOME OTHER EXAMPLE STRING'` + }] + }); + expect(results[0].fixToReadableStringInContext()) .toBe( `Suggested fix:\n` + `- Replace the full match with: Q.CITE = 'SOME EXAMPLE STRING'`); - expect(results[1]).toHaveFixMatching([{ - start: 82, - end: 118, - replacement: `Q.CITE = 'SOME OTHER EXAMPLE STRING'` - }]); expect(results[1].fixToReadableStringInContext()) .toBe( `Suggested fix:\n` + diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_call_non_constant_argument_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_call_non_constant_argument_test.ts index 44c9a31952..dba2664eff 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_call_non_constant_argument_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_call_non_constant_argument_test.ts @@ -3,11 +3,12 @@ import {ConformancePatternRule, PatternKind} from '../../rules/conformance_patte import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; describe('BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT', () => { - const rule = new ConformancePatternRule({ + const config = { errorMessage: 'do not call bar.foo with non-literal 1st arg', kind: PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT, values: ['bar:0'] - }); + }; + const rule = new ConformancePatternRule(config); it('matches simple examples', () => { const sources = [ @@ -17,8 +18,7 @@ describe('BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT', () => { ]; const results = compileAndCheck(rule, ...sources); - expect(results.length).toBe(1); - expect(results[0]).toBeFailureMatching({ + expect(results).toHaveFailuresMatching({ matchedCode: `foo.bar(window.name, 1)`, messageText: 'do not call bar.foo with non-literal 1st arg' }); @@ -31,7 +31,7 @@ describe('BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT', () => { ]; const results = compileAndCheck(rule, ...sources); - expect(results.length).toBe(0); + expect(results).toHaveNoFailures(); }); it('looks at the right position', () => { @@ -48,13 +48,13 @@ describe('BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT', () => { ]; const results = compileAndCheck(rule, ...sources); - expect(results.length).toBe(2); - expect(results[0]).toBeFailureMatching({ - matchedCode: `foo.aaa(1, window.name)`, - }); - expect(results[1]).toBeFailureMatching({ - matchedCode: `foo.bbb(window.name)`, - }); + expect(results).toHaveFailuresMatching( + { + matchedCode: `foo.aaa(1, window.name)`, + }, + { + matchedCode: `foo.bbb(window.name)`, + }); }); it('supports static methods', () => { @@ -72,8 +72,7 @@ describe('BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT', () => { ]; const results = compileAndCheck(rule, ...sources); - expect(results.length).toBe(1); - expect(results[0]).toBeFailureMatching({ + expect(results).toHaveFailuresMatching({ matchedCode: `Car.buildFromParts(window.name)`, }); }); @@ -88,8 +87,7 @@ describe('BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT', () => { const sources = [`URL.createObjectURL(window.name);\n`]; const results = compileAndCheck(rule, ...sources); - expect(results.length).toBe(1); - expect(results[0]).toBeFailureMatching({ + expect(results).toHaveFailuresMatching({ matchedCode: `URL.createObjectURL(window.name)`, }); }); @@ -104,8 +102,7 @@ describe('BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT', () => { const sources = [`eval(window.name);\n`]; const results = compileAndCheck(rule, ...sources); - expect(results.length).toBe(1); - expect(results[0]).toBeFailureMatching({ + expect(results).toHaveFailuresMatching({ matchedCode: `eval(window.name)`, }); }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts index d3ffdd0433..4e8609ce74 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts @@ -4,39 +4,29 @@ import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; describe('BANNED_NAME', () => { it('matches simple example of globals', () => { - const rule = new ConformancePatternRule({ + const config = { errorMessage: 'no Infinity', kind: PatternKind.BANNED_NAME, values: ['Infinity'] - }); - const source = [ - `Infinity; 1+1;`, - ].join('\n'); - const results = compileAndCheck(rule, source); + }; + const source = `Infinity; 1+1;`; + const results = compileAndCheck(new ConformancePatternRule(config), source); - expect(results.length).toBe(1); - expect(results[0]).toBeFailureMatching({ - matchedCode: `Infinity`, - messageText: 'no Infinity' - }); + expect(results).toHaveFailuresMatching( + {matchedCode: `Infinity`, messageText: 'no Infinity'}); }); it('matches namespaced globals', () => { - const rule = new ConformancePatternRule({ + const config = { errorMessage: 'no blob url', kind: PatternKind.BANNED_NAME, values: ['URL.createObjectURL'] - }); - const source = [ - `URL.createObjectURL({});`, - ].join('\n'); - const results = compileAndCheck(rule, source); + }; + const source = `URL.createObjectURL({});`; + const results = compileAndCheck(new ConformancePatternRule(config), source); - expect(results.length).toBe(1); - expect(results[0]).toBeFailureMatching({ - matchedCode: `createObjectURL`, - messageText: 'no blob url' - }); + expect(results).toHaveFailuresMatching( + {matchedCode: `createObjectURL`, messageText: 'no blob url'}); }); it('does not choke on type aliases', () => { @@ -46,21 +36,21 @@ describe('BANNED_NAME', () => { // Symbols that verify ts.SymbolFlags.Alias, and ts.SymbolFlags.TypeAlias is // not acceptable (the typechecker will throw). + const config = { + errorMessage: 'should not trigger', + kind: PatternKind.BANNED_NAME, + values: ['whatever'] + }; const sources = [ `export type Foo = {bar: number, baz: (x:string)=>void}`, `import {Foo} from './file_0'; export const c: Foo["baz"] = (x:string)=>{};`, `import {c} from './file_1'; c(window.name);` ]; - const results = compileAndCheck( - new ConformancePatternRule({ - errorMessage: 'should not trigger', - kind: PatternKind.BANNED_NAME, - values: ['whatever'] - }), - ...sources); + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); - expect(results.length).toBe(0); + expect(results).toHaveNoFailures(); }); }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts index b545571a11..753e08a4fc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts @@ -7,17 +7,15 @@ describe('BANNED_PROPERTY_NON_CONSTANT_WRITE', () => { const source = `const q = document.createElement('q');\n` + `q.cite = 'some example string';\n` + // literal `q.cite = window.name;\n`; // non-literal - const rule = new ConformancePatternRule({ + const config = { errorMessage: 'do not cite dynamically', kind: PatternKind.BANNED_PROPERTY_NON_CONSTANT_WRITE, values: ['HTMLQuoteElement.prototype.cite'] - }); - const results = compileAndCheck(rule, source); + }; + const results = compileAndCheck(new ConformancePatternRule(config), source); - expect(results.length).toBe(1); - expect(results[0]) - .toBeFailureMatching( - {start: 71, end: 91, messageText: 'do not cite dynamically'}); + expect(results).toHaveFailuresMatching( + {start: 71, end: 91, messageText: 'do not cite dynamically'}); }); }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts index e0f32540dc..5aa9f5640f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts @@ -3,77 +3,81 @@ import {ConformancePatternRule, PatternKind} from '../../rules/conformance_patte import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; describe('BANNED_PROPERTY_WRITE', () => { - const rule = new ConformancePatternRule({ - errorMessage: 'do not cite', - kind: PatternKind.BANNED_PROPERTY_WRITE, - values: ['HTMLQuoteElement.prototype.cite'] - }); + describe('simpler matcher tests', () => { + const config = { + errorMessage: 'do not cite', + kind: PatternKind.BANNED_PROPERTY_WRITE, + values: ['HTMLQuoteElement.prototype.cite'] + }; + const rule = new ConformancePatternRule(config); - it('matches simple examples', () => { - const source = [ - `const q = document.createElement('q');`, - `q.cite = 'some example string';`, - ].join('\n'); - const results = compileAndCheck(rule, source); + it('matches simple examples', () => { + const source = [ + `const q = document.createElement('q');`, + `q.cite = 'some example string';`, + ].join('\n'); + const results = compileAndCheck(rule, source); - expect(results.length).toBe(1); - expect(results[0]).toBeFailureMatching({ - matchedCode: `q.cite = 'some example string'`, - messageText: 'do not cite' + expect(results).toHaveFailuresMatching({ + matchedCode: `q.cite = 'some example string'`, + messageText: 'do not cite' + }); }); - }); - it('matches precisely, even with whitespace or comments', () => { - const source = [ - `const q = document.createElement('q');`, - ` q.cite = 'exampleA';`, - `q.cite = 'exampleB' ;`, - `/* test1 */ q.cite = /* test2 */ 'exampleC' /* test3 */;`, - ].join('\n'); - const results = compileAndCheck(rule, source); + it('matches precisely, even with whitespace or comments', () => { + const source = [ + `const q = document.createElement('q');`, + ` q.cite = 'exampleA';`, + `q.cite = 'exampleB' ;`, + `/* test1 */ q.cite = /* test2 */ 'exampleC' /* test3 */;`, + ].join('\n'); + const results = compileAndCheck(rule, source); - expect(results.length).toBe(3); - expect(results[0]).toBeFailureMatching({ - matchedCode: `q.cite = 'exampleA'`, - messageText: 'do not cite' - }); - expect(results[1]).toBeFailureMatching({ - matchedCode: `q.cite = 'exampleB'`, - messageText: 'do not cite' - }); - expect(results[2]).toBeFailureMatching({ - matchedCode: `q.cite = /* test2 */ 'exampleC'`, - messageText: 'do not cite' + expect(results).toHaveFailuresMatching( + {matchedCode: `q.cite = 'exampleA'`, messageText: 'do not cite'}, + {matchedCode: `q.cite = 'exampleB'`, messageText: 'do not cite'}, { + matchedCode: `q.cite = /* test2 */ 'exampleC'`, + messageText: 'do not cite' + }); }); - }) - it('understands function prototypes', () => { - const source = [ - `function foo(q:HTMLQuoteElement) {`, - ` q.cite = 'some example string';`, - `}`, - ].join('\n'); - const results = compileAndCheck(rule, source); + it('understands function prototypes', () => { + const source = [ + `function foo(q:HTMLQuoteElement) {`, + ` q.cite = 'some example string';`, + `}`, + ].join('\n'); + const results = compileAndCheck(rule, source); - expect(results.length).toBe(1); - expect(results[0]).toBeFailureMatching({ - matchedCode: `q.cite = 'some example string'`, - messageText: 'do not cite' + expect(results).toHaveFailuresMatching({ + matchedCode: `q.cite = 'some example string'`, + messageText: 'do not cite' + }); }); - }); - it('understands imported symbols', () => { - const sources = [ - `const q = document.createElement('q'); export {q};`, - `import {q} from './file_0'; q.cite = window.name;` - ]; - const results = compileAndCheck(rule, ...sources); - - expect(results.length).toBe(1); - expect(results[0]).toBeFailureMatching({ - matchedCode: 'q.cite = window.name', - fileName: 'file_1.ts', - messageText: 'do not cite', + it('understands imported symbols', () => { + const sources = [ + `const q = document.createElement('q'); export {q};`, + `import {q} from './file_0'; q.cite = window.name;` + ]; + const results = compileAndCheck(rule, ...sources); + + expect(results).toHaveFailuresMatching({ + matchedCode: 'q.cite = window.name', + fileName: 'file_1.ts', + messageText: 'do not cite', + }); + }); + + it('understands shadowing', () => { + const source = [ + `const q = document.createElement('q');`, + `const f1 = (q: {cite: string}) => { q.cite = 'example 1'; };`, + ].join('\n'); + const rule = new ConformancePatternRule(config); + const results = compileAndCheck(rule, source); + + expect(results).toHaveNoFailures(); }); }); @@ -94,42 +98,27 @@ describe('BANNED_PROPERTY_WRITE', () => { }; it('banning Parent.x matches (instance of Child).x', () => { - const ruleOnParent = new ConformancePatternRule({ + const configOnParent = { errorMessage: 'found write to x', kind: PatternKind.BANNED_PROPERTY_WRITE, values: ['Parent.prototype.x'] - }); - const r = compileAndCheck(ruleOnParent, source); - expect(r.length).toBe(1); - expect(r[0]).toBeFailureMatching(expectedFailure); + }; + const ruleOnParent = new ConformancePatternRule(configOnParent); + const results = compileAndCheck(ruleOnParent, source); + + expect(results).toHaveFailuresMatching(expectedFailure); }); it('banning Child.x matches x defined on Parent', () => { - const ruleOnChild = new ConformancePatternRule({ + const configOnChild = { errorMessage: 'found write to x', kind: PatternKind.BANNED_PROPERTY_WRITE, values: ['Child.prototype.x'] - }); - const r = compileAndCheck(ruleOnChild, source); - expect(r.length).toBe(1); - expect(r[0]).toBeFailureMatching(expectedFailure); - }); - }); - - describe('with shadowing', () => { - it('does not over-match', () => { - const source = [ - `const q = document.createElement('q');`, - `const f1 = (q: {cite: string}) => { q.cite = 'example 1'; };`, - ].join('\n'); - const rule = new ConformancePatternRule({ - errorMessage: 'do not cite', - kind: PatternKind.BANNED_PROPERTY_WRITE, - values: ['HTMLQuoteElement.prototype.cite'] - }); - const results = compileAndCheck(rule, source); + }; + const ruleOnChild = new ConformancePatternRule(configOnChild); + const results = compileAndCheck(ruleOnChild, source); - expect(results.length).toBe(0); + expect(results).toHaveFailuresMatching(expectedFailure); }); }); }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/whitelist_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/whitelist_test.ts index a1c7342c5a..93e17bd9bf 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/whitelist_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/whitelist_test.ts @@ -26,7 +26,7 @@ describe('ConformancePatternRule', () => { const rule = new ConformancePatternRule(config); const results = compileAndCheck(rule, source); - expect(results).toHaveNFailures(1, config); + expect(results).toHaveNFailures(1); }); it('matches if there is an empty whitelist group', () => { @@ -39,7 +39,7 @@ describe('ConformancePatternRule', () => { const rule = new ConformancePatternRule(config); const results = compileAndCheck(rule, source); - expect(results).toHaveNFailures(1, config); + expect(results).toHaveNFailures(1); }); it('respects prefix-based whitelists (matching test)', () => { @@ -53,7 +53,7 @@ describe('ConformancePatternRule', () => { const rule = new ConformancePatternRule(config); const results = compileAndCheck(rule, source); - expect(results).toHaveNFailures(0, config); + expect(results).toHaveNoFailures(); }); it('respects prefix-based whitelists (non-matching test)', () => { @@ -67,7 +67,7 @@ describe('ConformancePatternRule', () => { const rule = new ConformancePatternRule(config); const results = compileAndCheck(rule, source); - expect(results).toHaveNFailures(1, config); + expect(results).toHaveNFailures(1); }); it('respects regex-based whitelists', () => { @@ -81,7 +81,7 @@ describe('ConformancePatternRule', () => { const rule = new ConformancePatternRule(config); const results = compileAndCheck(rule, source); - expect(results).toHaveNFailures(0, config); + expect(results).toHaveNoFailures(); }); it('accepts several regex-based whitelists', () => { @@ -99,7 +99,7 @@ describe('ConformancePatternRule', () => { // Testing two times the same file so that both regexps match. const results = compileAndCheck(rule, source, source); - expect(results).toHaveNFailures(0, config); + expect(results).toHaveNoFailures(); }); it('throws on creation of invalid regexps', () => { @@ -111,6 +111,7 @@ describe('ConformancePatternRule', () => { }] }; expect(() => { + // tslint:disable-next-line:no-unused-expression new ConformancePatternRule(config); }).toThrowError(/Invalid regular expression/); }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts index fb2460e387..e474ec7229 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts @@ -9,7 +9,6 @@ import * as ts from 'typescript'; import {Checker} from '../../checker'; import {Failure, fixToString} from '../../failure'; import {AbstractRule} from '../../rule'; -import {Config} from '../pattern_config'; @@ -74,18 +73,146 @@ export function toFileName(f: Failure) { return file ? file.fileName : 'unknown'; } +/** + * Returns the location the temp directory for that platform (with forward + * slashes). + */ export function getTempDirForWhitelist() { // TS uses forward slashes on Windows ¯\_(ツ)_/¯ - return os.platform() == 'win32' ? os.tmpdir().replace(/\\/g, '/') : - os.tmpdir(); + return os.platform() === 'win32' ? os.tmpdir().replace(/\\/g, '/') : + os.tmpdir(); +} + +interface FailureExpectations { + fileName?: string; + start?: number; + end?: number; + matchedCode?: string; + messageText?: string; + fix?: FixExpectations; +} + +type FixExpectations = [{ + fileName?: string; + start?: number; + end?: number; + replacement?: string; +}]; + + +function failureMatchesExpectation( + f1: Failure, exp: FailureExpectations): {pass: boolean, message: string} { + const diagnostic = f1.toDiagnostic(); + let regrets = ''; + if (exp === undefined) { + regrets += 'The matcher requires two arguments. '; + } + if (exp.fileName) { + if (!diagnostic.file) { + regrets += `Expected diagnostic to have a source file, but it had ${ + diagnostic.file}. `; + } else if (!diagnostic.file.fileName.endsWith(exp.fileName)) { + regrets += + `Expected ${diagnostic.file.fileName} to end with ${exp.fileName}. `; + } + } + if (exp.messageText !== undefined && + exp.messageText !== diagnostic.messageText) { + regrets += + expectation('errorMessage', exp.messageText, diagnostic.messageText); + } + if (exp.start !== undefined && diagnostic.start !== exp.start) { + regrets += expectation('start', exp.start, diagnostic.start); + } + if (exp.end !== undefined && diagnostic.end !== exp.end) { + regrets += expectation('end', exp.end, diagnostic.end); + } + if (exp.matchedCode) { + if (!diagnostic.file) { + regrets += `Expected diagnostic to have a source file, but it had ${ + diagnostic.file}. `; + } else if (diagnostic.start === undefined) { + // I don't know how this could happen, but typings say so. + regrets += `Expected diagnostic to have a starting position. `; + } else { + const foundMatchedCode = diagnostic.file.getFullText().slice( + Number(diagnostic.start), diagnostic.end); + if (foundMatchedCode !== exp.matchedCode) { + regrets += `Expected diagnostic to match ${exp.matchedCode}, but was ${ + foundMatchedCode} (from ${Number(diagnostic.start)} to ${ + diagnostic.end}). `; + } + } + } + if (exp.fix) { + const {pass, message: fixMessage} = fixMatchesExpectation(f1, exp.fix); + if (!pass) { + regrets += fixMessage; + } + } + return {pass: regrets === '', message: regrets}; } -// Custom matcher for Jasmine, for a better experience matching fixes. +function fixMatchesExpectation(failure: Failure, expected: FixExpectations): + {pass: boolean, message: string} { + let regrets = ''; + const actualFix = failure.toDiagnostic().fix; + if (!actualFix) { + regrets += `Expected ${failure.toString()} to have fix ${ + JSON.stringify(expected)}. `; + } else if (actualFix.changes.length !== expected.length) { + regrets += `Expected ${expected.length} individual changes, got ${ + actualFix.changes.length}. `; + if (actualFix.changes.length) { + regrets += '\n' + fixToString(actualFix); + } + } else { + for (let i = 0; i < expected.length; i++) { + const e = expected[i]; + const a = actualFix.changes[i]; + if (e.start !== undefined && e.start !== a.start) { + regrets += + expectation(`${i}th individualChange's start`, e.start, a.start); + } + if (e.end !== undefined && e.end !== a.end) { + regrets += expectation(`${i}th individualChange's end`, e.end, a.end); + } + if (e.replacement !== undefined && e.replacement !== a.replacement) { + regrets += expectation( + `${i}th individualChange's replacement`, e.replacement, + a.replacement); + } + if (e.fileName !== undefined && e.fileName !== a.sourceFile.fileName) { + regrets += expectation( + `${i}th individualChange's fileName`, e.fileName, + a.sourceFile.fileName); + } + // TODO: Consider adding matchedCode as for the failure matcher. + } + } + + return {pass: regrets === '', message: regrets}; +} + + +/** + * Custom matcher for Jasmine, for a better experience matching failures and + * fixes. + */ export const customMatchers: jasmine.CustomMatcherFactories = { + toBeFailureMatching(): jasmine.CustomMatcher { + return {compare: failureMatchesExpectation}; + }, + + /** Checks that a Failure has the expected Fix field. */ + toHaveFixMatching(): jasmine.CustomMatcher { + return {compare: fixMatchesExpectation}; + }, + toHaveNFailures(): jasmine.CustomMatcher { return { - compare: (actual: Failure[], expected: Number, config?: Config) => { + compare: (actual: Failure[], expected: number) => { if (actual.length === expected) { return {pass: true}; } else { @@ -94,123 +221,33 @@ export const customMatchers: jasmine.CustomMatcherFactories = { if (actual.length) { message += '\n' + actual.map(f => f.toString()).join('\n'); } - if (config) { - message += `\nConfig: {kind:${config.kind}, values:${ - JSON.stringify(config.values)}, whitelist:${ - JSON.stringify(config.whitelistEntries)} }`; - } return {pass: false, message}; } } }; }, - toBeFailureMatching(): jasmine.CustomMatcher { + toHaveFailuresMatching(): jasmine.CustomMatcher { return { - compare: (actualFailure: Failure, exp: { - fileName?: string, - start?: number, - end?: number, - matchedCode?: string, - messageText?: string, - }) => { - const actualDiagnostic = actualFailure.toDiagnostic(); - let regrets = ''; - if (exp === undefined) { - regrets += 'The matcher requires two arguments. '; - } - if (exp.fileName) { - if (!actualDiagnostic.file) { - regrets += `Expected diagnostic to have a source file, but it had ${ - actualDiagnostic.file}. `; - } else if (!actualDiagnostic.file.fileName.endsWith(exp.fileName)) { - regrets += `Expected ${ - actualDiagnostic.file.fileName} to end with ${exp.fileName}. `; - } - } - if (exp.messageText !== undefined && - exp.messageText != actualDiagnostic.messageText) { - regrets += expectation( - 'errorMessage', exp.messageText, actualDiagnostic.messageText); - } - if (exp.start !== undefined && actualDiagnostic.start !== exp.start) { - regrets += expectation('start', exp.start, actualDiagnostic.start); - } - if (exp.end !== undefined && actualDiagnostic.end !== exp.end) { - regrets += expectation('end', exp.end, actualDiagnostic.end); - } - if (exp.matchedCode) { - if (!actualDiagnostic.file) { - regrets += `Expected diagnostic to have a source file, but it had ${ - actualDiagnostic.file}. `; - } else if (actualDiagnostic.start === undefined) { - // I don't know how this could happen, but typings say so. - regrets += `Expected diagnostic to have a starting position. `; - } else { - const foundMatchedCode = actualDiagnostic.file.getFullText().slice( - Number(actualDiagnostic.start), actualDiagnostic.end); - if (foundMatchedCode != exp.matchedCode) { - regrets += `Expected diagnostic to match ${ - exp.matchedCode}, but was ${foundMatchedCode} (from ${ - Number( - actualDiagnostic.start)} to ${actualDiagnostic.end}). `; - } + compare: (actual: Failure[], ...expected: FailureExpectations[]) => { + if (actual.length !== expected.length) { + let message = + `Expected ${expected} Failures, but found ${actual.length}.`; + if (actual.length) { + message += '\n' + actual.map(f => f.toString()).join('\n'); } + return {pass: false, message}; } - return {pass: regrets === '', message: regrets}; - } - }; - }, - - /** Checks that a Failure has the expected Fix field. */ - toHaveFixMatching(): jasmine.CustomMatcher { - return { - compare: (actualFailure: Failure, exp: [{ - fileName?: string, - start?: number, - end?: number, - replacement?: string - }]) => { - let regrets = ''; - const actualFix = actualFailure.toDiagnostic().fix; - if (!actualFix) { - regrets += `Expected ${actualFailure.toString()} to have fix ${ - JSON.stringify(exp)}. `; - } else if (actualFix.changes.length != exp.length) { - regrets += `Expected ${exp.length} individual changes, got ${ - actualFix.changes.length}. `; - if (actualFix.changes.length) { - regrets += '\n' + fixToString(actualFix); - } - } else { - for (let i = 0; i < exp.length; i++) { - const e = exp[i]; - const a = actualFix.changes[i]; - if (e.start !== undefined && e.start !== a.start) { - regrets += expectation( - `${i}th individualChange's start`, e.start, a.start); - } - if (e.end !== undefined && e.end !== a.end) { - regrets += - expectation(`${i}th individualChange's end`, e.end, a.end); - } - if (e.replacement !== undefined && - e.replacement !== a.replacement) { - regrets += expectation( - `${i}th individualChange's replacement`, e.replacement, - a.replacement); - } - if (e.fileName !== undefined && - e.fileName !== a.sourceFile.fileName) { - regrets += expectation( - `${i}th individualChange's fileName`, e.fileName, - a.sourceFile.fileName); - } - // TODO: Consider adding matchedCode as for the failure matcher. + let pass = true, message = ''; + for (let i = 0; i < actual.length; i++) { + const comparison = failureMatchesExpectation(actual[i], expected[i]); + pass = pass && comparison.pass; + if (comparison.message) { + message += `For failure ${i}: ${comparison.message}\n`; } + message += comparison.message; } - - return {pass: regrets === '', message: regrets}; + return {pass, message}; } }; }, @@ -227,11 +264,23 @@ export const customMatchers: jasmine.CustomMatcherFactories = { }; } }; - } + }, + toHaveNoFailures(): jasmine.CustomMatcher { + return { + compare: (actual: Failure[]) => { + if (actual.length !== 0) { + let message = `Expected no Failures, but found ${actual.length}.`; + message += '\n' + actual.map(f => f.toString()).join('\n'); + return {pass: false, message}; + } + return {pass: true, message: ''}; + } + }; + } }; -function expectation(fieldname: string, expectation: any, actual: any) { +function expectation(fieldname: string, expectation: T, actual: T) { return `Expected .${fieldname} to be ${expectation}, was ${actual}. `; } @@ -239,23 +288,21 @@ function expectation(fieldname: string, expectation: any, actual: any) { declare global { namespace jasmine { interface Matchers { - toBeFailureMatching(expected: { - fileName?: string, - start?: number, - end?: number, - matchedCode?: string, - messageText?: string, - }): void; + toBeFailureMatching(expected: FailureExpectations): void; - /** Checks that a Failure has the expected Fix field. */ - toHaveFixMatching(expected: [ - {fileName?: string, start?: number, end?: number, replacement?: string} - ]): void; - toHaveNFailures(expected: Number, config?: Config): void; + /** Checks that a Failure has the expected Fix field. */ + toHaveFixMatching(expected: FixExpectations): void; /** Asserts that a Failure has no fix. */ toHaveNoFix(): void; + + toHaveNFailures(expected: number): void; + + toHaveFailuresMatching(...expected: FailureExpectations[]): void; + + /** Asserts that the results are empty. */ + toHaveNoFailures(): void; } } } From d150e77405fe300c2840b46d9780d7512e231e3a Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 14 Oct 2019 05:37:44 -0700 Subject: [PATCH 0657/1134] Merge changes from Bazel: Allow sending and receiving work requests via proxy and multiplexer in the persistent worker protocol. PiperOrigin-RevId: 274560006 --- .../src/main/protobuf/worker_protocol.proto | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto b/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto index 4706792f4e..c628b7eb7a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto +++ b/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto @@ -38,14 +38,25 @@ message WorkRequest { // The inputs that the worker is allowed to read during execution of this // request. repeated Input inputs = 2; + + // To support multiplex worker, each WorkRequest must have an unique ID. This + // ID should be attached unchanged to the WorkResponse. + int32 request_id = 3; } -// The worker sends this message to Blaze when it finished its work on the WorkRequest message. +// The worker sends this message to Blaze when it finished its work on the +// WorkRequest message. message WorkResponse { int32 exit_code = 1; - // This is printed to the user after the WorkResponse has been received and is supposed to contain - // compiler warnings / errors etc. - thus we'll use a string type here, which gives us UTF-8 - // encoding. + // This is printed to the user after the WorkResponse has been received and is + // supposed to contain compiler warnings / errors etc. - thus we'll use a + // string type here, which gives us UTF-8 encoding. string output = 2; + + // To support multiplex worker, each WorkResponse must have an unique ID. + // Since worker processes which support multiplex worker will handle multiple + // WorkRequests in parallel, this ID will be used to determined which + // WorkerProxy does this WorkResponse belong to. + int32 request_id = 3; } From 8de7960b4c8052e8e468177988acf210d8499f2b Mon Sep 17 00:00:00 2001 From: evanm Date: Fri, 18 Oct 2019 07:37:54 -0700 Subject: [PATCH 0658/1134] Remove dependencies on builtin TypeScript typings PiperOrigin-RevId: 275468463 --- .../bazelbuild/rules_typescript/internal/tsetse/checker.ts | 1 - .../internal/tsetse/rules/check_return_value_rule.ts | 2 -- .../internal/tsetse/tests/ban_promise_as_condition/BUILD | 4 ---- .../internal/tsetse/tests/must_use_promises/BUILD | 2 -- .../rules_typescript/internal/tsetse/util/match_symbol.ts | 2 -- 5 files changed, 11 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts index 9fba3b70b5..9eef4165a0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts @@ -3,7 +3,6 @@ * file AST traversals and report errors. */ - import * as ts from 'typescript'; import {Failure, Fix} from './failure'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts index 8ba125c3fe..d52a0f7ab0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts @@ -1,5 +1,3 @@ - - /** * @fileoverview A Tsetse rule that checks the return value of certain functions * must be used. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD index 0e7e07d584..29073e1b13 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD @@ -37,8 +37,6 @@ ts_library( "\(45,34\).*" + error_message, ], tsconfig = "//internal:tsetse/tsconfig.json", - deps = [ - ], ) ts_library( @@ -46,6 +44,4 @@ ts_library( testonly = 1, srcs = ["negatives.ts"], tsconfig = "//internal:tsetse/tsconfig.json", - deps = [ - ], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD index eb9dcde9b8..20372cd754 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD @@ -32,6 +32,4 @@ ts_library( "\(34,3\)" + error_message, ], tsconfig = "//internal:tsetse/tsconfig.json", - deps = [ - ], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts index eb588e8f96..f446e1947b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts @@ -1,5 +1,3 @@ - - import * as ts from 'typescript'; import {dealias, debugLog, isAmbientDeclaration, isDeclaration, isInStockLibraries, isPartOfImportStatement} from './ast_tools'; From 4fe37ff44f77bf180cd581471e0d09c27aba8aa1 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Fri, 18 Oct 2019 16:09:07 -0700 Subject: [PATCH 0659/1134] Add jasmine_node_test to the list of test rules that taze recognizes. PiperOrigin-RevId: 275565383 --- .../ts_auto_deps/updater/test_register.go | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go index ac6c1fba9f..cc6bdc2c7c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go @@ -6,6 +6,7 @@ import ( "path/filepath" "github.com/bazelbuild/buildtools/build" + "github.com/bazelbuild/buildtools/edit" "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform" ) @@ -214,3 +215,37 @@ func (reg *buildRegistry) registerTestRule(ctx context.Context, bld *build.File, rt.kind(), target) return "", nil } + +var wellKnownBuildRules = []struct { + name string + attrName string +}{ + { + name: "karma_polymer_test", + attrName: "test_ts_deps", + }, + { + name: "wct_closure_test_suite", + attrName: "js_deps", + }, + { + name: "jasmine_node_test", + attrName: "deps", + }, +} + +// isRegisteredWithAlternateTestRule returns true if the rule is already +// registered with a well known test rule, such as karma_polymer_test, +// wct_closure_test_suite or jasmine_node_test. +func isRegisteredWithAlternateTestRule(bld *build.File, r *build.Rule, dep string) bool { + pkg := filepath.Dir(bld.Path) + for _, wkbr := range wellKnownBuildRules { + if isKind(r, wkbr.name) { + testTsDeps := r.Attr(wkbr.attrName) + if edit.ListFind(testTsDeps, dep, pkg) != nil { + return true + } + } + } + return false +} From 8d385c0381872875edfc82eb0f93d2736e5a3c6b Mon Sep 17 00:00:00 2001 From: lucassloan Date: Tue, 22 Oct 2019 17:12:11 -0700 Subject: [PATCH 0660/1134] Add karma_web_test_suite to the list of well-known test rules. PiperOrigin-RevId: 276176210 --- .../rules_typescript/ts_auto_deps/updater/test_register.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go index cc6bdc2c7c..1c15cb9e3d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go @@ -232,6 +232,10 @@ var wellKnownBuildRules = []struct { name: "jasmine_node_test", attrName: "deps", }, + { + name: "karma_web_test_suite", + attrName: "deps", + }, } // isRegisteredWithAlternateTestRule returns true if the rule is already From ae379b6f0b76b10dfde3334f0d1732e00145346d Mon Sep 17 00:00:00 2001 From: rjamet Date: Thu, 24 Oct 2019 06:52:47 -0700 Subject: [PATCH 0661/1134] Improve the spacing of suggested fix stringifications. Suggested fixes used to include line breaks, but that makes everything more confusing. Instead, trim each suggested fix, so that whitespace stays consistent. PiperOrigin-RevId: 276478533 --- .../internal/tsetse/failure.ts | 16 ++++-- .../ban_conformance_pattern/fixer_test.ts | 57 ++++++++++++++----- .../tsetse/util/testing/test_support.ts | 8 +-- 3 files changed, 57 insertions(+), 24 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts index 317faf40fc..02ccd48ef3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/failure.ts @@ -66,30 +66,38 @@ export class Failure { let fixText = ''; for (const c of f.changes) { + // Remove leading/trailing whitespace from the stringified suggestions: + // since we add line breaks after each line of stringified suggestion, and + // since users will manually apply the fix, there is no need to show + // trailing whitespace. This is however just for stringification of the + // fixes: the suggested fix itself still keeps trailing whitespace. + const printableReplacement = c.replacement.trim(); + // Insertion. if (c.start === c.end) { // Try to see if that's an import. if (c.replacement.indexOf('import') !== -1) { - fixText += `- Add new import: ${c.replacement}\n`; + fixText += `- Add new import: ${printableReplacement}\n`; } else { // Insertion that's not a full import. This should rarely happen in // our context, and we don't have a great message for these. // For instance, this could be the addition of a new symbol in an // existing import (`import {foo}` becoming `import {foo, bar}`). fixText += `- Insert ${this.readableRange(c.start, c.end)}: ${ - c.replacement}\n`; + printableReplacement}\n`; } } else if (c.start === this.start && c.end === this.end) { // We assume the replacement is the main part of the fix, so put that // individual change first in `fixText`. - fixText = `- Replace the full match with: ${c.replacement}\n` + fixText; + fixText = `- Replace the full match with: ${printableReplacement}\n` + + fixText; } else { // Fallback case: Use a numerical range to specify a replacement. In // general, falling through in this case should be avoided, as it's not // really readable without an IDE (the range can be outside of the // matched code). fixText = `- Replace ${this.readableRange(c.start, c.end)} with: ` + - `${c.replacement}\n${fixText}`; + `${printableReplacement}\n${fixText}`; } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts index 59843a635e..afd9177966 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts @@ -100,11 +100,20 @@ describe('ConformancePatternRule\'s fixer', () => { describe('adds imports', () => { const addNamedImportFixer: Fixer = { - getFixForFlaggedNode(n: ts.Node) { - const ic = + getFixForFlaggedNode(n: ts.Node): Fix | + undefined { + const changes = []; + const ic1 = maybeAddNamedImport(n.getSourceFile(), 'foo', './file_1', 'bar'); - if (ic) return {changes: [ic]}; - return; + if (ic1) { + changes.push(ic1); + } + const ic2 = + maybeAddNamedImport(n.getSourceFile(), 'foo2', './file_2', 'bar2'); + if (ic2) { + changes.push(ic2); + } + return changes.length ? {changes} : undefined; } }; @@ -112,15 +121,23 @@ describe('ConformancePatternRule\'s fixer', () => { const results = compileAndCheck( new ConformancePatternRule(baseConfig, addNamedImportFixer), source); - expect(results[0]).toHaveFixMatching([{ - start: 0, - end: 0, - replacement: `import {foo as bar} from './file_1';\n` - }]); + expect(results[0]).toHaveFixMatching([ + { + start: 0, + end: 0, + replacement: `import {foo as bar} from './file_1';\n` + }, + { + start: 0, + end: 0, + replacement: `import {foo2 as bar2} from './file_2';\n` + } + ]); expect(results[0].fixToReadableStringInContext()) .toBe( `Suggested fix:\n` + - `- Add new import: import {foo as bar} from './file_1';`); + `- Add new import: import {foo as bar} from './file_1';\n` + + `- Add new import: import {foo2 as bar2} from './file_2';`); }); it('maybeAddNamedImport already there', () => { @@ -129,8 +146,15 @@ describe('ConformancePatternRule\'s fixer', () => { 'import {foo as bar} from \'./file_1\';\n' + source, 'export const foo = 1;'); - expect(results[0]).toHaveNoFix(); - expect(results[0].fixToReadableStringInContext()).toBe(''); + expect(results[0]).toHaveFixMatching([{ + start: 37, + end: 37, + replacement: `import {foo2 as bar2} from './file_2';\n` + }]); + expect(results[0].fixToReadableStringInContext()) + .toBe( + `Suggested fix:\n` + + `- Add new import: import {foo2 as bar2} from './file_2';`); }); it('maybeAddNamedImport different name', () => { @@ -140,12 +164,17 @@ describe('ConformancePatternRule\'s fixer', () => { 'export const foo = 1;'); expect(results[0]).toHaveFixMatching([ - {start: 8, end: 8, replacement: `foo as bar, `} + {start: 8, end: 8, replacement: `foo as bar, `}, { + start: 37, + end: 37, + replacement: `import {foo2 as bar2} from './file_2';\n` + } ]); expect(results[0].fixToReadableStringInContext()) .toBe( `Suggested fix:\n` + - `- Insert at line 1, char 9: foo as bar,`); + `- Insert at line 1, char 9: foo as bar,\n` + + `- Add new import: import {foo2 as bar2} from './file_2';`); }); it('maybeAddNamespacedImport', () => { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts index e474ec7229..bfbc78b135 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts @@ -92,12 +92,8 @@ interface FailureExpectations { fix?: FixExpectations; } -type FixExpectations = [{ - fileName?: string; - start?: number; - end?: number; - replacement?: string; -}]; +type FixExpectations = Array< + {fileName?: string; start?: number; end?: number; replacement?: string;}>; function failureMatchesExpectation( From d89aa4fc9793b61164c841b05c2bb94272d549b6 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Thu, 24 Oct 2019 11:38:26 -0700 Subject: [PATCH 0662/1134] Switch rules_nodejs load points from defs.bzl to index.bzl The former is about to be removed. PiperOrigin-RevId: 276532382 --- .../bazelbuild/rules_typescript/BUILD.bazel | 16 +++++++++------- .../bazelbuild/rules_typescript/WORKSPACE | 2 +- .../rules_typescript/internal/BUILD.bazel | 4 ++-- .../tsetse/tests/ban_expect_truthy_promise/BUILD | 2 +- .../tsetse/tests/ban_promise_as_condition/BUILD | 2 +- .../tsetse/tests/check_return_value/BUILD | 2 +- .../internal/tsetse/tests/equals_nan/BUILD | 2 +- .../tsetse/tests/must_use_promises/BUILD | 2 +- .../bazelbuild/rules_typescript/package.bzl | 4 ++-- .../bazelbuild/rules_typescript/package.json | 4 ++-- .../bazelbuild/rules_typescript/yarn.lock | 8 ++++---- 11 files changed, 25 insertions(+), 23 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index d5422316ca..7f69e55b26 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -19,10 +19,12 @@ # https://github.com/bazelbuild/rules_go/blob/master/go/tools/gazelle/README.rst#directives # gazelle:exclude node_modules load("@bazel_gazelle//:def.bzl", "gazelle") -load("@build_bazel_rules_nodejs//:defs.bzl", "npm_package") -load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") +load("@build_bazel_rules_nodejs//:index.bzl", "npm_package") -exports_files(["LICENSE", "tsconfig.json"]) +exports_files([ + "LICENSE", + "tsconfig.json", +]) gazelle( name = "gazelle", @@ -33,18 +35,18 @@ gazelle( npm_package( name = "npm_bazel_typescript_package", srcs = [ - "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:npm_package_assets", "//internal:npm_package_assets", + "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:npm_package_assets", ], + visibility = ["//visibility:public"], deps = [ - "//internal:generated_BUILD", - "//internal:tsc_wrapped", "//devserver:devserver-darwin", "//devserver:devserver-linux", "//devserver:devserver-windows", + "//internal:generated_BUILD", + "//internal:tsc_wrapped", "//ts_auto_deps:ts_auto_deps-darwin", "//ts_auto_deps:ts_auto_deps-linux", "//ts_auto_deps:ts_auto_deps-windows", ], - visibility = ["//visibility:public"], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE index f4157f2928..c03057d0de 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE +++ b/third_party/github.com/bazelbuild/rules_typescript/WORKSPACE @@ -23,7 +23,7 @@ load("//:package.bzl", "rules_typescript_dev_dependencies") rules_typescript_dev_dependencies() # Setup nodejs toolchain -load("@build_bazel_rules_nodejs//:defs.bzl", "yarn_install") +load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") # Download npm dependencies yarn_install( diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 5eb31904f0..0c70b531d8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -14,7 +14,7 @@ # gazelle:exclude worker_protocol.proto -load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary") +load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary") load("@bazel_skylib//:bzl_library.bzl", "bzl_library") load("@npm_bazel_jasmine//:index.bzl", "jasmine_node_test") load("@npm_bazel_typescript//:index.bzl", "ts_library") @@ -81,12 +81,12 @@ nodejs_binary( name = "tsc_wrapped_bin", data = [ ":tsc_wrapped", + "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", "@npm//protobufjs", "@npm//source-map-support", "@npm//tsickle", "@npm//tsutils", "@npm//typescript", - "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", ], entry_point = ":tsc_wrapped/tsc_wrapped.ts", visibility = ["//visibility:public"], diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD index c8a7fa36ab..13772f9876 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@npm_bazel_typescript//:defs.bzl", "ts_library") +load("@npm_bazel_typescript//:index.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD index 29073e1b13..019903df72 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@npm_bazel_typescript//:defs.bzl", "ts_library") +load("@npm_bazel_typescript//:index.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD index c319f132ea..2afcf62e7e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@npm_bazel_typescript//:defs.bzl", "ts_library") +load("@npm_bazel_typescript//:index.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD index 7706253624..5fb48ffd33 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@npm_bazel_typescript//:defs.bzl", "ts_library") +load("@npm_bazel_typescript//:index.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD index 20372cd754..8b9b2f718b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@npm_bazel_typescript//:defs.bzl", "ts_library") +load("@npm_bazel_typescript//:index.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index 792940d06b..2e4473d817 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -30,8 +30,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - sha256 = "da72ea53fa1cb8ab5ef7781ba06b97259b7d579a431ce480476266bc81bdf21d", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.36.2/rules_nodejs-0.36.2.tar.gz"], + sha256 = "26c39450ce2d825abee5583a43733863098ed29d3cbaebf084ebaca59a21a1c8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.39.0/rules_nodejs-0.39.0.tar.gz"], ) # For protocol buffers diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 9a86e2653a..320fed5696 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -6,8 +6,8 @@ "@bazel/bazel": "^0.26.0", "@bazel/buildifier": "^0.20.0", "@bazel/ibazel": "^0.2.0", - "@bazel/jasmine": "^0.32.0", - "@bazel/typescript": "^0.32.0", + "@bazel/jasmine": "^0.39.0", + "@bazel/typescript": "^0.39.0", "@types/jasmine": "^2.8.2", "@types/long": "^4.0.0", "@types/node": "10.12.20", diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index f14d230caa..41251e7e95 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -131,10 +131,10 @@ resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.0.tgz#719551d2352d301ac8b81db732acb6bdc28dbdef" integrity sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q== -"@types/node@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173" - integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM= +"@types/node@10.12.20": + version "10.12.20" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.20.tgz#f79f959acd3422d0889bd1ead1664bd2d17cd367" + integrity sha512-9spv6SklidqxevvZyOUGjZVz4QRXGu2dNaLyXIFzFYZW0AGDykzPRIUFJXTlQXyfzAucddwTcGtJNim8zqSOPA== "@types/node@^10.1.0": version "10.14.6" From 68dc27d75d26c7d3d08cd7ec0845ca7d0bb2508b Mon Sep 17 00:00:00 2001 From: alexeagle Date: Thu, 24 Oct 2019 13:42:17 -0700 Subject: [PATCH 0663/1134] Update one more reference to rules_nodejs defs.bzl that I missed. Now it is green when consumed downstream. PiperOrigin-RevId: 276556510 --- .../bazelbuild/rules_typescript/internal/ts_repositories.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl index 929db7d1a1..90a1c1a9c0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl @@ -20,7 +20,7 @@ load("@bazel_gazelle//:deps.bzl", "go_repository") # END-DEV-ONLY -load("@build_bazel_rules_nodejs//:defs.bzl", "check_bazel_version", "check_rules_nodejs_version") +load("@build_bazel_rules_nodejs//:index.bzl", "check_bazel_version", "check_rules_nodejs_version") def ts_setup_workspace(): """This repository rule should be called from your WORKSPACE file. From fbca2c542e5a0863b464926c4b4d975395247e70 Mon Sep 17 00:00:00 2001 From: martinprobst Date: Wed, 6 Nov 2019 12:18:40 -0800 Subject: [PATCH 0664/1134] Refactor tsc_wrapped's runFromOptions to be more composable. This allows other tools to reproduce tsc_wrapped's compiler configuration & plugin setup with fidelity. The refactoring moves any console printing out of the former `runFromOptions`, renames it to `createProgramAndEmit()`, and handles console emit on the caller level. It also required observing `options.noEmit` in several locations that'd previously write files unconditionally. PiperOrigin-RevId: 278914685 --- .../internal/tsc_wrapped/tsc_wrapped.ts | 90 ++++++++++++------- 1 file changed, 59 insertions(+), 31 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 280d73398a..e73ece5faa 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -118,26 +118,26 @@ export function gatherDiagnostics( * TODO: Call sites of getDiagnostics should initialize plugins themselves, * including these, and the arguments to getDiagnostics should be simplified. */ -export function* - getCommonPlugins( - options: ts.CompilerOptions, bazelOpts: BazelOptions, - program: ts.Program, - disabledTsetseRules: string[]): Iterable { +export function getCommonPlugins( + options: ts.CompilerOptions, bazelOpts: BazelOptions, program: ts.Program, + disabledTsetseRules: string[]): DiagnosticPlugin[] { + const plugins: DiagnosticPlugin[] = []; if (!bazelOpts.disableStrictDeps) { if (options.rootDir == null) { throw new Error(`StrictDepsPlugin requires that rootDir be specified`); } - yield new StrictDepsPlugin(program, { + plugins.push(new StrictDepsPlugin(program, { ...bazelOpts, rootDir: options.rootDir, - }); + })); } if (!bazelOpts.isJsTranspilation) { let tsetsePluginConstructor: {new (program: ts.Program, disabledRules: string[]): DiagnosticPlugin} = BazelConformancePlugin; - yield new tsetsePluginConstructor(program, disabledTsetseRules); + plugins.push(new tsetsePluginConstructor(program, disabledTsetseRules)); } + return plugins; } /** @@ -250,17 +250,27 @@ function runOneBuild( const perfTracePath = bazelOpts.perfTracePath; if (!perfTracePath) { - return runFromOptions( + const {diagnostics} = createProgramAndEmit( fileLoader, options, bazelOpts, sourceFiles, disabledTsetseRules, angularCompilerOptions); + if (diagnostics.length > 0) { + console.error(bazelDiagnostics.format(bazelOpts.target, diagnostics)); + return false; + } + return true; } log('Writing trace to', perfTracePath); - const success = perfTrace.wrap( - 'runOneBuild', - () => runFromOptions( - fileLoader, options, bazelOpts, sourceFiles, disabledTsetseRules, - angularCompilerOptions)); + const success = perfTrace.wrap('runOneBuild', () => { + const {diagnostics} = createProgramAndEmit( + fileLoader, options, bazelOpts, sourceFiles, disabledTsetseRules, + angularCompilerOptions); + if (diagnostics.length > 0) { + console.error(bazelDiagnostics.format(bazelOpts.target, diagnostics)); + return false; + } + return true; + }); if (!success) return false; // Force a garbage collection pass. This keeps our memory usage // consistent across multiple compilations, and allows the file @@ -279,10 +289,32 @@ function runOneBuild( const expectDiagnosticsWhitelist: string[] = [ ]; -function runFromOptions( +/** errorDiag produces an error diagnostic not bound to a file or location. */ +function errorDiag(messageText: string) { + return { + category: ts.DiagnosticCategory.Error, + code: 0, + file: undefined, + start: undefined, + length: undefined, + messageText, + }; +} + +/** + * createProgramAndEmit creates a ts.Program from the given options and emits it + * according to them (e.g. including running various plugins and tsickle). It + * returns the program and any diagnostics generated. + * + * Callers should check and emit diagnostics. + */ +export function createProgramAndEmit( fileLoader: FileLoader, options: ts.CompilerOptions, bazelOpts: BazelOptions, files: string[], disabledTsetseRules: string[], - angularCompilerOptions?: {[key: string]: unknown}): boolean { + angularCompilerOptions?: {[key: string]: unknown}): + {program?: ts.Program, diagnostics: ts.Diagnostic[]} { + // Beware! createProgramAndEmit must not print to console, nor exit etc. + // Handle errors by reporting and returning diagnostics. perfTrace.snapshotMemoryUsage(); cache.resetStats(); cache.traceStats(); @@ -313,10 +345,11 @@ function runFromOptions( const ngtsc = require('@angular/compiler-cli'); angularPlugin = new ngtsc.NgTscPlugin(ngOptions); } catch (e) { - console.error(e); - throw new Error( - 'when using `ts_library(compile_angular_templates=True)`, ' + - 'you must install @angular/compiler-cli'); + return { + diagnostics: [errorDiag( + 'when using `ts_library(compile_angular_templates=True)`, ' + + `you must install @angular/compiler-cli (was: ${e})`)] + }; } // Wrap host only needed until after Ivy cleanup @@ -345,17 +378,15 @@ function runFromOptions( diagnostics = bazelDiagnostics.filterExpected( bazelOpts, diagnostics, bazelDiagnostics.uglyFormat); } else if (bazelOpts.expectedDiagnostics.length > 0) { - console.error( + diagnostics.push(errorDiag( `Only targets under ${ expectDiagnosticsWhitelist.join(', ')} can use ` + - 'expected_diagnostics, but got', - bazelOpts.target); + 'expected_diagnostics, but got ' + bazelOpts.target)); } if (diagnostics.length > 0) { - console.error(bazelDiagnostics.format(bazelOpts.target, diagnostics)); debug('compilation failed at', new Error().stack!); - return false; + return {program, diagnostics}; } } @@ -383,13 +414,10 @@ function runFromOptions( } if (diagnostics.length > 0) { - console.error(bazelDiagnostics.format(bazelOpts.target, diagnostics)); debug('compilation failed at', new Error().stack!); - return false; } - cache.printStats(); - return true; + return {program, diagnostics}; } function emitWithTypescript( @@ -465,7 +493,7 @@ export function emitWithTsickle( optTsickle.getGeneratedExterns(emitResult.externs, options.rootDir!); } - if (bazelOpts.tsickleExternsPath) { + if (!options.noEmit && bazelOpts.tsickleExternsPath) { // Note: when tsickleExternsPath is provided, we always write a file as a // marker that compilation succeeded, even if it's empty (just containing an // @externs). @@ -493,7 +521,7 @@ export function emitWithTsickle( } } - if (bazelOpts.manifest) { + if (!options.noEmit && bazelOpts.manifest) { perfTrace.wrap('manifest', () => { const manifest = constructManifest(emitResult.modulesManifest, compilerHost); From 9088ebba1038d711627d4ba101968746d21a7fc4 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Thu, 14 Nov 2019 08:46:48 -0800 Subject: [PATCH 0665/1134] Avoid recursively adding depth to depsets in rules_typescript PiperOrigin-RevId: 280437642 --- .../rules_typescript/internal/common/compilation.bzl | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 1bcf2bc4e0..eff1846898 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -459,14 +459,11 @@ def compile_ts( if not is_library: files_depsets.append(depset(tsickle_externs)) - transitive_es6_sources = depset() + transitive_es6_sources_sets = [es6_sources] for dep in deps: if hasattr(dep, "typescript"): - transitive_es6_sources = depset(transitive = [ - transitive_es6_sources, - dep.typescript.transitive_es6_sources, - ]) - transitive_es6_sources = depset(transitive = [transitive_es6_sources, es6_sources]) + transitive_es6_sources_sets += [dep.typescript.transitive_es6_sources] + transitive_es6_sources = depset(transitive = transitive_es6_sources_sets) return { "providers": [ From 55d08a4d06f6f77cc3ca28d31395c907b160aab6 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Thu, 14 Nov 2019 13:41:06 -0800 Subject: [PATCH 0666/1134] Add boq_jswire_test_library to the list of well known tests to ignore for ts_development_sources registration. PiperOrigin-RevId: 280501723 --- .../rules_typescript/ts_auto_deps/updater/test_register.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go index 1c15cb9e3d..0f51e63b48 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go @@ -236,6 +236,10 @@ var wellKnownBuildRules = []struct { name: "karma_web_test_suite", attrName: "deps", }, + { + name: "boq_jswire_test_library", + attrName: "deps", + }, } // isRegisteredWithAlternateTestRule returns true if the rule is already From 77a02d19692484d242c35d40dcc57df8f9070d12 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 18 Nov 2019 17:15:11 -0800 Subject: [PATCH 0667/1134] Internal change. PiperOrigin-RevId: 281188652 --- .../bazelbuild/rules_typescript/internal/common/compilation.bzl | 1 + 1 file changed, 1 insertion(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index eff1846898..3b10700b50 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -517,6 +517,7 @@ def compile_ts( # This allows users of compile_ts to modify or augment the returned dict before # converting it to an immutable struct. def ts_providers_dict_to_struct(d): + for key, value in d.items(): if key != "output_groups" and type(value) == type({}): d[key] = struct(**value) From 9d61e06dfb234b2a49a069ccfdb46586a2da6800 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Tue, 19 Nov 2019 13:19:16 -0800 Subject: [PATCH 0668/1134] Revert the behavior of taze --update_comments. PiperOrigin-RevId: 281364300 --- .../bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go | 1 + 1 file changed, 1 insertion(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index d3ecc683cc..f606e5bbe5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -623,6 +623,7 @@ func directoryOrAncestorHasSubdirectorySources(ctx context.Context, g3root, work } func (upd *Updater) addSourcesToBUILD(ctx context.Context, path string, buildFilePath string, bld *build.File, srcs srcSet) (bool, error) { + platform.Infof("Updating sources") if len(srcs) == 0 && len(allTSRules(bld)) == 0 { // No TypeScript rules/sources, no need to update anything From 99e0c766f11405a85fe1948f512066f708901e18 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Fri, 22 Nov 2019 10:44:42 -0800 Subject: [PATCH 0669/1134] Internal change. PiperOrigin-RevId: 281998457 --- .../rules_typescript/internal/common/compilation.bzl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 3b10700b50..72a81d344f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -50,7 +50,7 @@ COMMON_ATTRIBUTES = { # any closure JS code. "runtime_deps": attr.label_list( default = [], - providers = ["js"], + providers = [JsInfo], ), "deps": attr.label_list(aspects = DEPS_ASPECTS), "_additional_d_ts": _ADDITIONAL_D_TS, @@ -72,7 +72,7 @@ def assert_js_or_typescript_deps(ctx, deps = None): # Fallback to `ctx.attr.deps`. deps = deps if deps != None else ctx.attr.deps for dep in deps: - if not hasattr(dep, "typescript") and not hasattr(dep, "js"): + if not hasattr(dep, "typescript") and not JsInfo in dep: allowed_deps_msg = "Dependencies must be ts_library" fail("%s is neither a TypeScript nor a JS producing rule.\n%s\n" % (dep.label, allowed_deps_msg)) From 2321bed39244f62bf0b07ba09d08a523691a49d8 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Fri, 22 Nov 2019 16:51:56 -0800 Subject: [PATCH 0670/1134] Fix breakage shown in downstream build when adopting new version See https://github.com/bazelbuild/rules_nodejs/pull/1386 PiperOrigin-RevId: 282069060 --- .../rules_typescript/internal/common/compilation.bzl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 72a81d344f..6d1aa9f78c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -29,6 +29,9 @@ _ADDITIONAL_D_TS = attr.label_list( allow_files = True, ) +# Mock out the JsInfo blaze-only provider +JsInfo = provider() + # Attributes shared by any typescript-compatible rule (ts_library, ng_module) COMMON_ATTRIBUTES = { "data": attr.label_list( From e48ae0a33cbade04eae99660f60e70c981d739d7 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 25 Nov 2019 12:41:38 -0800 Subject: [PATCH 0671/1134] Fix generic comparisons on protobuf messages Generated protobuf messages contain internal data structures that general purpose comparison functions (e.g., reflect.DeepEqual, pretty.Compare, etc) do not properly compare. It is already the case today that these functions may report a difference when two messages are actually semantically equivalent. Fix all usages by either calling proto.Equal directly if the top-level types are themselves proto.Message, or by calling cmp.Equal with the cmp.Comparer(proto.Equal) option specified. This option teaches cmp to use proto.Equal anytime it encounters proto.Message types. PiperOrigin-RevId: 282412693 --- .../internal/ts_repositories.bzl | 6 + .../ts_auto_deps/analyze/BUILD.bazel | 37 ---- .../ts_auto_deps/analyze/analyze.go | 34 +-- .../ts_auto_deps/analyze/analyze_test.go | 16 +- .../ts_auto_deps/analyze/imports.go | 38 ++-- .../ts_auto_deps/analyze/imports_test.go | 6 +- .../ts_auto_deps/analyze/loader.go | 36 +-- .../ts_auto_deps/analyze/loader_test.go | 5 +- .../rules_typescript/ts_auto_deps/main.go | 2 +- .../ts_auto_deps/platform/BUILD.bazel | 12 - .../ts_auto_deps/platform/file.go | 41 ++-- .../ts_auto_deps/platform/file.go.oss | 54 +++++ .../ts_auto_deps/platform/log.go | 12 +- .../ts_auto_deps/platform/log.go.oss | 22 ++ .../ts_auto_deps/platform/walk.go | 19 +- .../ts_auto_deps/platform/walk.go.oss | 15 ++ .../ts_auto_deps/proto/BUILD.bazel | 22 -- .../ts_auto_deps/proto/analyze_result.proto | 6 +- .../ts_auto_deps/updater/BUILD.bazel | 32 --- .../ts_auto_deps/updater/comments.go | 208 ++++++++++++++++++ .../ts_auto_deps/updater/comments_test.go | 184 ++++++++++++++++ .../ts_auto_deps/updater/internal_rules.go | 125 +++++++++++ .../updater/internal_updater_test.go | 86 ++++++++ .../ts_auto_deps/updater/test_register.go | 20 +- .../ts_auto_deps/updater/updater.go | 176 ++++++++------- .../ts_auto_deps/updater/updater_test.go | 23 +- .../ts_auto_deps/workspace/BUILD.bazel | 9 - .../ts_auto_deps/workspace/workspace.go | 21 +- .../ts_auto_deps/workspace/workspace.go.oss | 13 ++ 29 files changed, 958 insertions(+), 322 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/file.go.oss create mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/log.go.oss create mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/walk.go.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/proto/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/comments.go create mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/comments_test.go create mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/internal_rules.go create mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/internal_updater_test.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/BUILD.bazel create mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/workspace.go.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl index 90a1c1a9c0..30cb4053f6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/ts_repositories.bzl @@ -46,6 +46,12 @@ def ts_setup_dev_workspace(): ts_setup_workspace() + go_repository( + name = "com_github_google_go_cmp", + commit = "2d0692c2e9617365a95b295612ac0d4415ba4627", + importpath = "github.com/google/go-cmp", + ) + go_repository( name = "com_github_kylelemons_godebug", commit = "d65d576e9348f5982d7f6d83682b694e731a45c6", diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/BUILD.bazel deleted file mode 100644 index 29213ce830..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/BUILD.bazel +++ /dev/null @@ -1,37 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - -go_library( - name = "go_default_library", - srcs = [ - "analyze.go", - "imports.go", - "loader.go", - ], - importpath = "github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze", - visibility = ["//visibility:public"], - deps = [ - "//ts_auto_deps/platform:go_default_library", - "//ts_auto_deps/proto:go_default_library", - "//ts_auto_deps/workspace:go_default_library", - "@com_github_bazelbuild_buildtools//build_proto:go_default_library", - "@com_github_bazelbuild_buildtools//edit:go_default_library", - "@com_github_golang_protobuf//proto:go_default_library", - ], -) - -go_test( - name = "go_default_test", - srcs = [ - "analyze_test.go", - "imports_test.go", - "loader_test.go", - ], - embed = [":go_default_library"], - deps = [ - "//ts_auto_deps/platform:go_default_library", - "//ts_auto_deps/proto:go_default_library", - "@com_github_bazelbuild_buildtools//build_proto:go_default_library", - "@com_github_golang_protobuf//proto:go_default_library", - "@com_github_kylelemons_godebug//pretty:go_default_library", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go index 9e005cce5a..00bb81ac24 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go @@ -1,4 +1,4 @@ -// Package analyze uses bazel query to determine and locate missing imports +// Package analyze uses blaze query to determine and locate missing imports // in TypeScript source files. package analyze @@ -10,13 +10,13 @@ import ( "regexp" "strings" - "github.com/bazelbuild/buildtools/edit" + "google3/net/proto2/go/proto" + "google3/third_party/bazel_buildifier/edit/edit" "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform" "github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace" - "github.com/golang/protobuf/proto" - appb "github.com/bazelbuild/buildtools/build_proto" - arpb "github.com/bazelbuild/rules_typescript/ts_auto_deps/proto" + appb "google3/third_party/bazel/src/main/protobuf/build_go_proto" + arpb "google3/third_party/bazel_rules/rules_typescript/ts_auto_deps/proto/analyze_result_go_proto" ) var ( @@ -97,7 +97,7 @@ func New(loader TargetLoader) *Analyzer { // Analyze generates a dependency report for each target label in labels. // -// dir is the directory that ts_auto_deps should execute in. Must be a sub-directory +// dir is the directory that taze should execute in. Must be a sub-directory // of the workspace root. func (a *Analyzer) Analyze(ctx context.Context, dir string, labels []string) ([]*arpb.DependencyReport, error) { if len(labels) == 0 { @@ -124,14 +124,14 @@ func (a *Analyzer) Analyze(ctx context.Context, dir string, labels []string) ([] return a.generateReports(labels, resolved) } -// resolvedTarget represents a Bazel target and all resolved information. +// resolvedTarget represents a Blaze target and all resolved information. type resolvedTarget struct { label string // A map of all existing dependencies on a target at the time of analysis. // The keys are labels and the values are thes loaded target. dependencies map[string]*appb.Rule // A map of source file paths to their imports. - imports map[string][]*ts_auto_depsImport + imports map[string][]*tazeImport // rule is the original rule the target was constructed from. rule *appb.Rule // missingSources are source files which could not be opened on disk. @@ -147,7 +147,7 @@ type resolvedTarget struct { // setSources sets the sources on t. It returns an error if one of the srcs of // t's rule isn't in loadedSrcs. It also sorts the sources into literal and // generated sources, setting literalSourcePaths and generatedSourcePaths. -// Returns an error if all the sources are generated - ts_auto_deps can't read the +// Returns an error if all the sources are generated - taze can't read the // import statements to determine deps. func (t *resolvedTarget) setSources(loadedSrcs map[string]*appb.Target) error { for _, label := range listAttribute(t.rule, "srcs") { @@ -220,7 +220,7 @@ func newResolvedTarget(r *appb.Rule) *resolvedTarget { return &resolvedTarget{ label: r.GetName(), dependencies: make(map[string]*appb.Rule), - imports: make(map[string][]*ts_auto_depsImport), + imports: make(map[string][]*tazeImport), rule: r, sources: make(map[string]*appb.Target), } @@ -264,7 +264,7 @@ func (a *Analyzer) resolveImportsForTargets(ctx context.Context, currentPkg, roo return nil, err } } - // only extract the imports out of the literal sources, since ts_auto_deps can't + // only extract the imports out of the literal sources, since taze can't // see the contents of generated files allLiteralSrcPaths, err := getAllLiteralSrcPaths(targets) if err != nil { @@ -302,7 +302,7 @@ func (a *Analyzer) resolveImportsForTargets(ctx context.Context, currentPkg, roo func (a *Analyzer) resolveImports(ctx context.Context, currentPkg, root string, targets map[string]*resolvedTarget) error { for _, target := range targets { var paths []string - needingResolution := make(map[string][]*ts_auto_depsImport) + needingResolution := make(map[string][]*tazeImport) for _, imports := range target.imports { handlingImports: for _, imp := range imports { @@ -363,7 +363,7 @@ var ambientModuleDeclRE = regexp.MustCompile("(?m)^\\s*declare\\s+module\\s+['\" // // If the import already has a knownTarget, findRuleProvidingImport will // return the knownTarget. -func (a *Analyzer) findExistingDepProvidingImport(ctx context.Context, root string, rt *resolvedTarget, i *ts_auto_depsImport) (string, error) { +func (a *Analyzer) findExistingDepProvidingImport(ctx context.Context, root string, rt *resolvedTarget, i *tazeImport) (string, error) { if i.knownTarget != "" { return i.knownTarget, nil } @@ -545,17 +545,17 @@ func (a *Analyzer) generateReport(target *resolvedTarget) (*arpb.DependencyRepor // TypeScript declarations might declare arbitrary global symbols, so it // is impossible to detect reliably if the import is being used (without // compiling, at least). Report that the rule has no explicit import as a - // warning, so that ts_auto_deps can decide to import remove or not based on a + // warning, so that taze can decide to import remove or not based on a // flag. warning := fmt.Sprintf("WARNING: %s: keeping possibly used %s '%s'", rule.GetLocation(), class, label) report.Feedback = append(report.Feedback, warning) case "css_library": - // Similar to ts_declaration, ts_auto_deps can't reliably detect if css_library - // imports are being used, since ts_auto_deps can't currently parse @requirecss + // Similar to ts_declaration, taze can't reliably detect if css_library + // imports are being used, since taze can't currently parse @requirecss // annotations. Unlike ts_declaration, there's no flag to remove them, so // there's no need to report a warning. default: - // The contents of generated files aren't visible, so ts_auto_deps can't discover + // The contents of generated files aren't visible, so taze can't discover // the import statements/deps that they contain. To be safe, don't remove // any unused deps, since they might be used by the generated file(s). if len(target.generatedSourcePaths) == 0 { diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go index ff529b8d79..a1cb550a8a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go @@ -10,12 +10,14 @@ import ( "strings" "testing" + "google3/net/proto2/go/proto" "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform" - "github.com/golang/protobuf/proto" - "github.com/kylelemons/godebug/pretty" + "google3/third_party/golang/cmp/cmp" + "google3/third_party/golang/cmp/cmpopts/cmpopts" + "google3/third_party/golang/godebug/pretty/pretty" - appb "github.com/bazelbuild/buildtools/build_proto" - arpb "github.com/bazelbuild/rules_typescript/ts_auto_deps/proto" + appb "google3/third_party/bazel/src/main/protobuf/build_go_proto" + arpb "google3/third_party/bazel_rules/rules_typescript/ts_auto_deps/proto/analyze_result_go_proto" ) var ( @@ -204,7 +206,7 @@ func TestUnnecessaryDependencies(t *testing.T) { func TestNecessaryDependencies(t *testing.T) { tests := [][]string{ []string{"import x from 'b/target';"}, - []string{"// ts_auto_deps: x from //b:b_lib"}, + []string{"// taze: x from //b:b_lib"}, []string{"export x from 'b/target';"}, } for _, test := range tests { @@ -616,7 +618,7 @@ func TestSetSources(t *testing.T) { t.Errorf("got err %q, expected %q", err, test.err) } - if diff := pretty.Compare(rt.sources, test.expected); err == nil && diff != "" { + if diff := cmp.Diff(rt.sources, test.expected, cmpopts.EquateEmpty(), cmp.Comparer(proto.Equal)); err == nil && diff != "" { t.Errorf("failed to set correct sources: (-got, +want)\n%s", diff) } }) @@ -646,7 +648,7 @@ func createFile(path string, content ...string) error { return ioutil.WriteFile(path, []byte(strings.Join(content, "\n")), 0666) } -// This method creates a WORKSPACE file in the root of the Bazel test +// This method creates a WORKSPACE file in the root of the Blaze test // directory. This allows the tests to resolve the root path of the // workspace by looking for the WORKSPACE file on disk. func createWorkspaceFile() error { diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/imports.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/imports.go index 28f6501911..909e645279 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/imports.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/imports.go @@ -11,13 +11,13 @@ import ( "github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace" ) -// ts_auto_depsImport represents a single import in a TypeScript source. -type ts_auto_depsImport struct { +// tazeImport represents a single import in a TypeScript source. +type tazeImport struct { // importPath can be an ES6 path ('./foo/bar'), but also a namespace ('goog:...'). // This is the import path as it appears in the TypeScript source. importPath string - // knownTarget is the (fully qualified) bazel target providing importPath. - // It's either found by locateMissingTargets or taken from a ts_auto_deps comment. + // knownTarget is the (fully qualified) blaze target providing importPath. + // It's either found by locateMissingTargets or taken from a taze comment. knownTarget string location sourceLocation } @@ -30,7 +30,7 @@ type ts_auto_depsImport struct { // these imports depends on the dependencies of the target the source // location is a member of. For example, an import of 'foo/bar' would have // no resolvedPath. -func (i *ts_auto_depsImport) resolvedPath() string { +func (i *tazeImport) resolvedPath() string { if strings.HasPrefix(i.importPath, "./") || strings.HasPrefix(i.importPath, "../") { // If the import is relative to the source location, use the source // location to form a "canonical" path from the root. @@ -55,9 +55,9 @@ type sourceLocation struct { // // paths should be relative to root. The root will be joined to each path // to construct a physical path to each file. -func extractAllImports(root string, paths []string) (map[string][]*ts_auto_depsImport, []error) { +func extractAllImports(root string, paths []string) (map[string][]*tazeImport, []error) { debugf("extracting imports from TypeScript files relative to %q: %q", root, paths) - allImports := make(map[string][]*ts_auto_depsImport) + allImports := make(map[string][]*tazeImport) var ( errors []error mutex sync.Mutex @@ -84,7 +84,7 @@ func extractAllImports(root string, paths []string) (map[string][]*ts_auto_depsI // extractImports extracts the TypeScript imports from a single file. path // should be a path from the root to the file. -func extractImports(root, path string) ([]*ts_auto_depsImport, error) { +func extractImports(root, path string) ([]*tazeImport, error) { d, err := ioutil.ReadFile(filepath.Join(root, path)) if err != nil { return nil, err @@ -93,7 +93,7 @@ func extractImports(root, path string) ([]*ts_auto_depsImport, error) { } const ( - ts_auto_depsFrom = `^[ \t]*//[ \t]+ts_auto_deps:[^\n]*?from[ \t]+(?P//\S+)$` + tazeFrom = `^[ \t]*//[ \t]+taze:[^\n]*?from[ \t]+(?P//\S+)$` importPreface = `^[ \t]*(?:import|export)\b\s*` wildcardTerm = `\*(?:\s*as\s+\S+)?` // "as..." is optional to match exports. identifiersClause = `(?:\{[^}]*\}|\S+|` + wildcardTerm + `)` @@ -103,26 +103,26 @@ const ( ) var importRE = regexp.MustCompile("(?ms)" + - "(?:" + ts_auto_depsFrom + ")|" + + "(?:" + tazeFrom + ")|" + "(?:" + importPreface + symbolsTerm + url + namespaceComment + ")") -// parseImports scans contents for imports (ES6 modules, ts_auto_deps comments), and -// returns a list of ts_auto_depsImports. knownTarget is already filled in for imports -// that have ts_auto_deps comments. -func parseImports(sourcePath string, contents []byte) []*ts_auto_depsImport { - var imports []*ts_auto_depsImport +// parseImports scans contents for imports (ES6 modules, taze comments), and +// returns a list of tazeImports. knownTarget is already filled in for imports +// that have taze comments. +func parseImports(sourcePath string, contents []byte) []*tazeImport { + var imports []*tazeImport lastOffset := 0 line := 1 column := 1 for _, matchIndices := range importRE.FindAllSubmatchIndex(contents, -1) { - imp := &ts_auto_depsImport{} + imp := &tazeImport{} imports = append(imports, imp) // matchIndices[0, 1]: full RE match imp.location.sourcePath = sourcePath for lastOffset < matchIndices[1] { // Iterate to the *end* of the import statement. - // The ts_auto_deps comment must be placed at the end of the "import" statement. - // This offset has to be exactly the end of the import for ts_auto_deps later on + // The taze comment must be placed at the end of the "import" statement. + // This offset has to be exactly the end of the import for taze later on // to insert the '// from' comment in the correct line. column++ if contents[lastOffset] == '\n' { @@ -135,7 +135,7 @@ func parseImports(sourcePath string, contents []byte) []*ts_auto_depsImport { imp.location.length = matchIndices[1] - matchIndices[0] imp.location.line = line if matchIndices[2] >= 0 { - // matchIndices[2, 3]: Target for a // ts_auto_deps: ... from ... comment. + // matchIndices[2, 3]: Target for a // taze: ... from ... comment. imp.knownTarget = string(contents[matchIndices[2]:matchIndices[3]]) } else { // matchIndices[4, 5]: URL in import x from 'url'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/imports_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/imports_test.go index 029df0ea6a..65d13d5565 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/imports_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/imports_test.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "github.com/kylelemons/godebug/pretty" + "google3/third_party/golang/godebug/pretty/pretty" ) func TestParseImports(t *testing.T) { @@ -41,8 +41,8 @@ func TestParseImports(t *testing.T) { {"export*from'no whitespace';", "no whitespace", ""}, {"export{}from'no whitespace';", "no whitespace", ""}, // Comments - {"x;\n// ts_auto_deps: ng from //some/global:rule\ny;", "", "//some/global:rule"}, - {"// ts_auto_deps: ng from //foo/bar from //some/global:rule", "", "//some/global:rule"}, + {"x;\n// taze: ng from //some/global:rule\ny;", "", "//some/global:rule"}, + {"// taze: ng from //foo/bar from //some/global:rule", "", "//some/global:rule"}, } for i, tst := range tests { diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go index 4a98600fe9..bd4b0a55a5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go @@ -1,6 +1,7 @@ package analyze import ( + "bytes" "context" "fmt" @@ -9,12 +10,12 @@ import ( "strings" "time" - "github.com/bazelbuild/buildtools/edit" + "google3/net/proto2/go/proto" + "google3/third_party/bazel_buildifier/edit/edit" "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform" "github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace" - "github.com/golang/protobuf/proto" - appb "github.com/bazelbuild/buildtools/build_proto" + appb "google3/third_party/bazel/src/main/protobuf/build_go_proto" ) // pkgCacheEntry represents a set of loaded rules and a mapping from alias @@ -26,10 +27,10 @@ type pkgCacheEntry struct { aliases map[string]*appb.Rule } -// QueryBasedTargetLoader uses Bazel query to load targets from BUILD files. +// QueryBasedTargetLoader uses Blaze query to load targets from BUILD files. type QueryBasedTargetLoader struct { workdir string - bazelBinary string + blazeBinary string // pkgCache is a mapping from a package to all of the rules in said // package along with a map from aliases to actual rules. @@ -51,17 +52,17 @@ type QueryBasedTargetLoader struct { // NewQueryBasedTargetLoader constructs a new QueryBasedTargetLoader rooted // in workdir. -func NewQueryBasedTargetLoader(workdir, bazelBinary string) *QueryBasedTargetLoader { +func NewQueryBasedTargetLoader(workdir, blazeBinary string) *QueryBasedTargetLoader { return &QueryBasedTargetLoader{ workdir: workdir, - bazelBinary: bazelBinary, + blazeBinary: blazeBinary, pkgCache: make(map[string]*pkgCacheEntry), labelCache: make(map[string]*appb.Target), } } -// LoadRules uses Bazel query to load rules associated with labels from BUILD +// LoadRules uses Blaze query to load rules associated with labels from BUILD // files. func (q *QueryBasedTargetLoader) LoadRules(pkg string, labels []string) (map[string]*appb.Rule, error) { labelToTarget, err := q.LoadTargets(pkg, labels) @@ -81,7 +82,7 @@ func (q *QueryBasedTargetLoader) LoadRules(pkg string, labels []string) (map[str return labelToRule, nil } -// LoadTargets uses Bazel query to load targets associated with labels from BUILD +// LoadTargets uses Blaze query to load targets associated with labels from BUILD // files. func (q *QueryBasedTargetLoader) LoadTargets(pkg string, labels []string) (map[string]*appb.Target, error) { var labelCacheMisses []string @@ -151,7 +152,7 @@ func possibleFilepaths(importPath string) []string { return possiblePaths } -// LoadImportPaths uses Bazel Query to load targets associated with import +// LoadImportPaths uses Blaze Query to load targets associated with import // paths from BUILD files. func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, targetToAnalyze *appb.Rule, currentPkg, workspaceRoot string, paths []string) (map[string]*appb.Rule, error) { debugf("loading imports visible to %q relative to %q: %q", currentPkg, workspaceRoot, paths) @@ -279,6 +280,7 @@ func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, targetToAn } } + return results, nil } @@ -412,10 +414,11 @@ func (q *QueryBasedTargetLoader) targetLabel(target *appb.Target) (string, error } } -// batchQuery runs a set of queries with a single call to Bazel query and the + +// batchQuery runs a set of queries with a single call to Blaze query and the // '--keep_going' flag. func (q *QueryBasedTargetLoader) batchQuery(queries []string) (*appb.QueryResult, error) { - // Join all of the queries with a '+' character according to Bazel's + // Join all of the queries with a '+' character according to Blaze's // syntax for running multiple queries. return q.query("--keep_going", strings.Join(queries, "+")) } @@ -428,14 +431,14 @@ func (q *QueryBasedTargetLoader) query(args ...string) (*appb.QueryResult, error query := args[n-1] if query == "" { // An empty query was provided so return an empty result without - // making a call to Bazel. + // making a call to Blaze. return &appb.QueryResult{}, nil } var stdout, stderr bytes.Buffer args = append([]string{"query", "--output=proto"}, args...) q.queryCount++ - debugf("executing query #%d in %q: %s %s %q", q.queryCount, q.workdir, q.bazelBinary, strings.Join(args[:len(args)-1], " "), query) - cmd := exec.Command(q.bazelBinary, args...) + debugf("executing query #%d in %q: %s %s %q", q.queryCount, q.workdir, q.blazeBinary, strings.Join(args[:len(args)-1], " "), query) + cmd := exec.Command(q.blazeBinary, args...) cmd.Dir = q.workdir cmd.Stdout = &stdout cmd.Stderr = &stderr @@ -446,7 +449,7 @@ func (q *QueryBasedTargetLoader) query(args ...string) (*appb.QueryResult, error // flag. Since one query failing to return a result does not hinder the // other queries from returning a result, ignore these errors. // - // Herb prints "printing partial results" to indicate the same as bazel's + // Herb prints "printing partial results" to indicate the same as blaze's // exit status 3 if err.Error() != "exit status 3" && !strings.Contains(stderr.String(), "printing partial results") { // The error provided as a result is less useful than the contents of @@ -462,6 +465,7 @@ func (q *QueryBasedTargetLoader) query(args ...string) (*appb.QueryResult, error return &result, nil } + // ruleProvidesImports checks if the rule directly provides the import, or if // it's a reexporting lib, if one of its deps does. func (q *QueryBasedTargetLoader) ruleProvidesImports(rule *appb.Rule, srcMatcher func(rule *appb.Rule) bool) (bool, error) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader_test.go index 57651290ca..f6b909e7cd 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader_test.go @@ -3,11 +3,12 @@ package analyze import ( "testing" - "github.com/golang/protobuf/proto" + "google3/net/proto2/go/proto" - appb "github.com/bazelbuild/buildtools/build_proto" + appb "google3/third_party/bazel/src/main/protobuf/build_go_proto" ) + func TestResolveAgainstModuleRoot(t *testing.T) { tests := []struct { ruleLiteral string diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go index 553afbc37f..8410149f1d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go @@ -47,7 +47,7 @@ func main() { platform.Error(err) } - host := updater.New(false, false, updater.QueryBasedBazelAnalyze, updater.LocalUpdateFile) + host := updater.New(false, false, updater.QueryBasedBlazeAnalyze, updater.LocalUpdateFile) if err := updater.Execute(host, paths, *isRoot, *recursive); err != nil { platform.Error(err) } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/BUILD.bazel deleted file mode 100644 index d3e9253b0f..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/BUILD.bazel +++ /dev/null @@ -1,12 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "go_default_library", - srcs = [ - "file.go", - "log.go", - "walk.go", - ], - importpath = "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform", - visibility = ["//visibility:public"], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/file.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/file.go index 7df93d03d5..175a8de629 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/file.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/file.go @@ -1,53 +1,58 @@ +// Package platform handles differences between google3 and open source for taze. package platform import ( "context" - "io/ioutil" - "os" - "path/filepath" - "strings" -) -const ( - filePerms = 0666 + "google3/file/base/go/file" ) -var pathReplacer = strings.NewReplacer("\\", "/") - // ReadFile reads the contents of name. func ReadFile(ctx context.Context, name string) ([]byte, error) { - return ioutil.ReadFile(name) + return file.ReadFile(ctx, name) } // ReadBytesFromFile reads bytes into the buffer provided, stopping when the // buffer is full. func ReadBytesFromFile(ctx context.Context, name string, buffer []byte) (int, error) { - f, err := os.Open(name) + f, err := file.OpenRead(ctx, name) if err != nil { return 0, err } - defer f.Close() + defer f.IO(ctx).Close() - n, err := f.Read(buffer) + n, err := f.IO(ctx).Read(buffer) return n, err } // WriteFile writes data to filename. func WriteFile(ctx context.Context, filename string, data []byte) error { - return ioutil.WriteFile(filename, data, filePerms) + return file.WriteFile(ctx, filename, data) } // Stat reads the file system information of name. +// NOTE: The result of Stat, FileStat or FileInfo for internal and external +// respectively, is never used. Since the two results are mostly incompatible +// structures, return an interface in both the open-source and internal version. func Stat(ctx context.Context, name string) (interface{}, error) { - return os.Stat(name) + return file.Stat(ctx, name) } // Glob returns all paths matching pattern. func Glob(ctx context.Context, pattern string) ([]string, error) { - return filepath.Glob(pattern) + stats, err := file.Match(ctx, pattern, file.StatNone) + if err != nil { + return nil, err + } + paths := make([]string, 0, len(stats)) + for _, stat := range stats { + paths = append(paths, stat.Path) + } + return paths, nil } -// Normalize converts Windows path separators into POSIX +// Normalize is a no-op in google3. Note that file.go.oss has an implementation +// which fixes Windows paths. func Normalize(path string) string { - return pathReplacer.Replace(path) + return path } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/file.go.oss b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/file.go.oss new file mode 100644 index 0000000000..bf87a03ccc --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/file.go.oss @@ -0,0 +1,54 @@ +package platform + +import ( + "context" + "io/ioutil" + "os" + "path/filepath" + "strings" +) + +const ( + filePerms = 0666 +) + +var pathReplacer = strings.NewReplacer("\\", "/") + +// ReadFile reads the contents of name. +func ReadFile(ctx context.Context, name string) ([]byte, error) { + return ioutil.ReadFile(name) +} + +// ReadBytesFromFile reads bytes into the buffer provided, stopping when the +// buffer is full. +func ReadBytesFromFile(ctx context.Context, name string, buffer []byte) (int, error) { + f, err := os.Open(name) + if err != nil { + return 0, err + } + defer f.Close() + + n, err := f.Read(buffer) + return n, err +} + + +// WriteFile writes data to filename. +func WriteFile(ctx context.Context, filename string, data []byte) error { + return ioutil.WriteFile(filename, data, filePerms) +} + +// Stat reads the file system information of name. +func Stat(ctx context.Context, name string) (interface{}, error) { + return os.Stat(name) +} + +// Glob returns all paths matching pattern. +func Glob(ctx context.Context, pattern string) ([]string, error) { + return filepath.Glob(pattern) +} + +// Normalize converts Windows path separators into POSIX +func Normalize(path string) (string) { + return pathReplacer.Replace(path) +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/log.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/log.go index 4fb889eee5..1486945cb3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/log.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/log.go @@ -1,19 +1,15 @@ package platform -import ( - "fmt" - "log" - "os" -) +import "google3/base/go/log" // Infof prints a formatted message to stdout. -func Infof(format string, args ...interface{}) { - fmt.Printf(format+"\n", args...) +func Infof(format string, v ...interface{}) { + log.Infof(format, v...) } // Error prints a series of args to stderr. func Error(args ...interface{}) { - fmt.Fprintln(os.Stderr, args...) + log.Error(args...) } // Fatalf prints a formatted message to stderr. Panics after printing. diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/log.go.oss b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/log.go.oss new file mode 100644 index 0000000000..4fb889eee5 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/log.go.oss @@ -0,0 +1,22 @@ +package platform + +import ( + "fmt" + "log" + "os" +) + +// Infof prints a formatted message to stdout. +func Infof(format string, args ...interface{}) { + fmt.Printf(format+"\n", args...) +} + +// Error prints a series of args to stderr. +func Error(args ...interface{}) { + fmt.Fprintln(os.Stderr, args...) +} + +// Fatalf prints a formatted message to stderr. Panics after printing. +func Fatalf(format string, v ...interface{}) { + log.Fatalf(format, v...) +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/walk.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/walk.go index 05dd36611a..ee35020d9d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/walk.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/walk.go @@ -2,14 +2,19 @@ package platform import ( "os" - "path/filepath" + + "google3/third_party/golang/go_tools/internal/fastwalk/fastwalk" ) +// Walk does a faster filesystem walk than filepath.Walk by wrapping +// fastwalk.Walk. +// Performance was measured by timing updater.Paths when running taze +//--recursive on the cloud directory, both after a clearing the srcfs cache, and +// on subsequent runs. +// fastwalk, without cache: 2m35.950528503s +// fastwalk, with cache: 940.908936ms +// filepath.Walk without cache: 34m55.55114913s +// filepath.Walk with cache: 26.917530244s func Walk(root string, walkFn func(path string, typ os.FileMode) error) error { - return filepath.Walk(root, func(path string, info os.FileInfo, err error) error { - if err != nil { - return err - } - return walkFn(path, info.Mode()) - }) + return fastwalk.Walk(root, walkFn) } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/walk.go.oss b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/walk.go.oss new file mode 100644 index 0000000000..05dd36611a --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/walk.go.oss @@ -0,0 +1,15 @@ +package platform + +import ( + "os" + "path/filepath" +) + +func Walk(root string, walkFn func(path string, typ os.FileMode) error) error { + return filepath.Walk(root, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + return walkFn(path, info.Mode()) + }) +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/proto/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/proto/BUILD.bazel deleted file mode 100644 index e7e793a396..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/proto/BUILD.bazel +++ /dev/null @@ -1,22 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") -load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") - -proto_library( - name = "bazel_analyze_proto", - srcs = ["analyze_result.proto"], - visibility = ["//visibility:public"], -) - -go_proto_library( - name = "bazel_analyze_go_proto", - importpath = "github.com/bazelbuild/rules_typescript/ts_auto_deps/proto", - proto = ":bazel_analyze_proto", - visibility = ["//visibility:public"], -) - -go_library( - name = "go_default_library", - embed = [":bazel_analyze_go_proto"], - importpath = "github.com/bazelbuild/rules_typescript/ts_auto_deps/proto", - visibility = ["//visibility:public"], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/proto/analyze_result.proto b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/proto/analyze_result.proto index 49ee5000e9..f94855f9ae 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/proto/analyze_result.proto +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/proto/analyze_result.proto @@ -1,6 +1,6 @@ syntax = "proto2"; -package bazel_analyze; +package blaze_analyze; // A DependencyGroup represents a list of alternatives for satisfying // a missing dependency. @@ -42,7 +42,7 @@ message AttributeReport { // The result of checking a single build rule (called X in comments // below) for missing or unnecessary dependencies. Produced by // java/com/google/devtools/build/checkbuilddeps (which for external -// users means it's produced by bazel analyze). +// users means it's produced by blaze analyze). message DependencyReport { required string rule = 1; // Name of rule X, in canonical google3 format. @@ -92,7 +92,7 @@ message DependencyReport { } // Aggregate DependencyReports for multiple analysis -// targets - used to support bazel analyze --analysis_output=proto +// targets - used to support blaze analyze --analysis_output=proto message AnalyzeResult { repeated DependencyReport dependency_report = 1; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/BUILD.bazel deleted file mode 100644 index ea67ff6ee8..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/BUILD.bazel +++ /dev/null @@ -1,32 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - -go_library( - name = "go_default_library", - srcs = [ - "test_register.go", - "updater.go", - ], - importpath = "github.com/bazelbuild/rules_typescript/ts_auto_deps/updater", - visibility = ["//visibility:public"], - deps = [ - "//ts_auto_deps/analyze:go_default_library", - "//ts_auto_deps/platform:go_default_library", - "//ts_auto_deps/proto:go_default_library", - "//ts_auto_deps/workspace:go_default_library", - "@com_github_bazelbuild_buildtools//build:go_default_library", - "@com_github_bazelbuild_buildtools//edit:go_default_library", - "@com_github_golang_protobuf//proto:go_default_library", - "@com_github_mattn_go_isatty//:go_default_library", - ], -) - -go_test( - name = "go_default_test", - srcs = ["updater_test.go"], - embed = [":go_default_library"], - deps = [ - "//ts_auto_deps/proto:go_default_library", - "@com_github_bazelbuild_buildtools//build:go_default_library", - "@com_github_golang_protobuf//proto:go_default_library", - ], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/comments.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/comments.go new file mode 100644 index 0000000000..17060aff98 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/comments.go @@ -0,0 +1,208 @@ +// Excluded from the open-source version since there are no taze comments. Also +// because the sstable is not available. + +package updater + +import ( + "bytes" + "context" + "fmt" + "path/filepath" + "regexp" + "strconv" + "sync" + + "google3/base/go/log" + "google3/file/base/go/file" + "google3/sstable/go/sstable" + "google3/third_party/bazel_buildifier/edit/edit" + + arpb "google3/third_party/bazel_rules/rules_typescript/ts_auto_deps/proto/analyze_result_go_proto" +) + +var missingCommentRE = regexp.MustCompile( + `(?s)ERROR: ([^:]+):(\d+):(\d+): missing comment for 'goog:' import.*?'goog:([^']+)'`) + +// fixMissingTazeComments adds taze `// from ...` comments to source files. +// It scans the given feedback reports for "missing taze comment" errors, looks up the missing namespaces +// in an sstable stored on x20, and then appends comments to the lines missing them. +// fixMissingTazeComments returns true if it fixed any missing comments. +func (upd *Updater) fixMissingTazeComments(ctx context.Context, g3root string, reports []*arpb.DependencyReport) (bool, error) { + type location struct { + file string + line int + } + type missingComment struct { + target string + locations []location + } + + // Group reports and locations by namespace. + nsToComment := make(map[string]*missingComment) + for _, report := range reports { + for _, fb := range report.GetFeedback() { + log.Infof("fix taze comments: checking feedback:\n%s", fb) + // Sadly, there is no way to return more structured feedback from blaze analyze. + m := missingCommentRE.FindStringSubmatch(fb) + if m == nil { + continue + } + file := m[1] + line, err := strconv.Atoi(m[2]) + if err != nil { + return false, err + } + namespace := m[4] + + mc := nsToComment[namespace] + if mc == nil { + mc = &missingComment{} + nsToComment[namespace] = mc + } + mc.locations = append(mc.locations, location{file: file, line: line}) + } + } + + if len(nsToComment) == 0 { + return false, nil + } + + table, err := GetNamespaceToTargetTable() + if err != nil { + return false, err + } + + tableLookupSpinner := spin(fmt.Sprintf("Searching %d namespaces for taze comments", len(nsToComment))) + // Look up targets for missing namespaces + // Group locations to add a specific target to by file. + fileToLocs := make(map[string][]*missingComment) + for namespace, mc := range nsToComment { + log.Infof("Looking for namespace %s", namespace) + it := table.Lookup(ctx, []byte(namespace)) + if it.Done() { + log.Warningf("Couldn't find namespace %q", namespace) + continue + } + target := string(it.Value()) + mc.target = target + for _, l := range mc.locations { + mc := &missingComment{target: mc.target, locations: []location{l}} + fileToLocs[l.file] = append(fileToLocs[l.file], mc) + } + } + close(tableLookupSpinner) + + // Add taze comments to files. + fixedSomething := false + for srcFile, mcs := range fileToLocs { + p := filepath.Join(g3root, srcFile) + content, err := file.ReadFile(ctx, p) + if err != nil { + log.Errorf("fix taze comments: failed to read %q: %v", p, err) + continue + } + + lines := bytes.Split(content, []byte("\n")) + + for _, mc := range mcs { + loc := mc.locations[0] + lineOffset := loc.line - 1 + if len(lines) < lineOffset { + log.Errorf("fix taze comments: no line %d in %q", loc.line, p) + continue + } + // Contains("//") is a bit overly broad here, but import URLs should not contain double + // slashes either. + if bytes.Contains(lines[lineOffset], []byte("//")) { + return fixedSomething, + &AnalysisFailedError{ + []AnalysisFailureCause{ + AnalysisFailureCause{ + Message: fmt.Sprintf("cannot add taze comment to %s:%d, it already has a (malformed?) comment."+ + " Please remove or fix the comment.", + srcFile, loc.line), + Path: srcFile, + Line: loc.line, + }, + }, + } + } + var line bytes.Buffer + target := edit.ShortenLabel(mc.target, "") // pass "" as pkg to always get absolute package references. + fmt.Fprintf(&line, "%s // from %s", lines[lineOffset], target) + lines[lineOffset] = line.Bytes() + } + newContent := string(bytes.Join(lines, []byte("\n"))) + if err := upd.updateFile(ctx, p, newContent); err != nil { + log.Errorf("fix taze comments: failed to write %q: %v", p, err) + continue + } + fmt.Printf("Added taze comments to %s\n", srcFile) + fixedSomething = true + } + + return fixedSomething, nil +} + +var namespaceToTarget sstable.Table +var tableOnce sync.Once + +// GetNamespaceToTargetTable opens and returns the taze table from x20. +// It is a variable so it can be overridden for testing. +var GetNamespaceToTargetTable = func() (sstable.Table, error) { + tableOnce.Do(func() { + ctx := context.Background() + // This keeps the same sstable open for the entire (short) lifetime of the taze run. + // That is by design: during one run, the table should not change from under us. + t, err := sstable.Open(ctx, *namespaceLookupTable, &sstable.Options{}) + if err != nil { + log.Errorf("Failed to open namespace to target sstable: %v", err) + return + } + namespaceToTarget = t + }) + if namespaceToTarget == nil { + return nil, fmt.Errorf("fix taze comments: failed to open namespace sstable") + } + return namespaceToTarget, nil +} + +// Matches the Closure namespace for an import inside a .ts file. +var googImportNamespace = regexp.MustCompile(`^import .* from 'goog:(.*)';.*`) + +// Matches import lines that have a trailing taze comment. +// Capturing group 1 will be kept and the lookedup namespace will be appended. +// Based on a regex from +// java/com/google/devtools/ruleanalysis/service/checkbuilddeps/typescript/TypeScriptRuleChecker.java +var tazeCommentAfterStatement = regexp.MustCompile(`^(import .*;\s*//[ \t]*from[ \t]+)//.*$`) + +func updateTazeCommentsOnImports(ctx context.Context, path string, namespaceToTargetTable sstable.Table) error { + log.Infof("Updating taze import comments from %s\n", path) + content, err := file.ReadFile(ctx, path) + if err != nil { + return fmt.Errorf("reading %q: %v", path, err) + } + lines := bytes.Split(content, []byte("\n")) + for i, line := range lines { + match := googImportNamespace.FindSubmatch(line) + if match == nil { + continue + } + namespace := match[1] + it := namespaceToTargetTable.Lookup(ctx, namespace) + if it.Done() { + log.Infof("Attempted to update taze comment for %q but it is not in the index.\n", namespace) + continue + } + newLine := tazeCommentAfterStatement.ReplaceAll(line, append([]byte("$1"), it.Value()...)) + if bytes.Compare(newLine, lines[i]) != 0 { + log.Infof("Updated comment for %q in %q\n", namespace, path) + lines[i] = newLine + } + } + err = file.WriteFile(ctx, path, bytes.Join(lines, []byte("\n"))) + if err != nil { + return fmt.Errorf("failed to write %q: %v", path, err) + } + return nil +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/comments_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/comments_test.go new file mode 100644 index 0000000000..921cf44c7e --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/comments_test.go @@ -0,0 +1,184 @@ +// Excluded from the open-source version since there are no taze comments. Also +// because the sstable is not available. + +package updater + +import ( + "bytes" + "context" + "io/ioutil" + "testing" + + "google3/sstable/go/sstable" + "google3/sstable/go/sstabletest" + "github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace" + + arpb "google3/third_party/bazel_rules/rules_typescript/ts_auto_deps/proto/analyze_result_go_proto" +) + +func TestFixMissingTazeComments(t *testing.T) { + sstableContent := []sstabletest.Entry{ + {[]byte("goog.string"), []byte("//javascript/closure/string:string")}, + {[]byte("goog.array"), []byte("//javascript/closure/array:nondefault")}, + } + sstabletest.Sort(sstableContent) + table := sstabletest.NewTable(sstableContent) + + GetNamespaceToTargetTable = func() (sstable.Table, error) { + return table, nil + } + + p, err := mktmp("google3/foo/a.ts", []byte(` + import {firstUsage} from 'goog:goog.string'; + import {x} from 'x'; + import {secondUsage} from 'goog:goog.string'; + import {hasComment} from 'goog:goog.string'; // from //javascript/closure/string + import {otherNamespace} from 'goog:goog.array';`)) + if err != nil { + t.Error(err) + } + g3root, err := workspace.Root(p) + if err != nil { + t.Error(err) + } + p2, err := mktmp("google3/foo/b.ts", []byte(`import {anotherUser} from 'goog:goog.string';`)) + if err != nil { + t.Error(err) + } + + report := parseReport(t, ` + rule: "//foo:bar" + unresolved_import: "goog:goog.string" + unresolved_import: "goog:goog.array" + feedback: "ERROR: foo/a.ts:2:1: missing comment for 'goog:' import, please add a trailing comment to the import. E.g.\n" + " import Bar from 'goog:goog.string'; // from //foo:bar\n" + feedback: "ERROR: foo/a.ts:4:1: missing comment for 'goog:' import, please add a trailing comment to the import. E.g.\n" + " import Bar from 'goog:goog.string'; // from //foo:bar\n" + feedback: "ERROR: foo/a.ts:6:1: missing comment for 'goog:' import, please add a trailing comment to the import. E.g.\n" + " import Bar from 'goog:goog.array'; // from //foo:bar\n"`) + report2 := parseReport(t, ` + rule: "//foo:baz" + unresolved_import: "goog:goog.string" + feedback: "ERROR: foo/b.ts:1:1: missing comment for 'goog:' import, please add a trailing comment to the import. E.g.\n" + " import Bar from 'goog:goog.string'; // from //foo:bar\n"`) + + ctx := context.Background() + updater := New(false, false, nil, LocalUpdateFile) + changed, err := updater.fixMissingTazeComments(ctx, g3root, []*arpb.DependencyReport{report, report2}) + if err != nil { + t.Error(err) + } + if !changed { + t.Error("fixMissingTazeComments: expected change") + } + + content, err := ioutil.ReadFile(p) + if err != nil { + t.Error(err) + } + expected := ` + import {firstUsage} from 'goog:goog.string'; // from //javascript/closure/string + import {x} from 'x'; + import {secondUsage} from 'goog:goog.string'; // from //javascript/closure/string + import {hasComment} from 'goog:goog.string'; // from //javascript/closure/string + import {otherNamespace} from 'goog:goog.array'; // from //javascript/closure/array:nondefault` + if string(content) != expected { + t.Errorf("fixMissingTazeComments(%q): got:\n%s, expected:\n%s", p, content, expected) + } + + content, err = ioutil.ReadFile(p2) + if err != nil { + t.Error(err) + } + expected = `import {anotherUser} from 'goog:goog.string'; // from //javascript/closure/string` + if string(content) != expected { + t.Errorf("fixMissingTazeComments(%q): got:\n%s, expected:\n%s", p2, content, expected) + } +} + +func TestFixMissingTazeCommentsBadCommentFormat(t *testing.T) { + sstableContent := []sstabletest.Entry{{[]byte("goog.string"), []byte("//javascript/closure/string:string")}} + sstabletest.Sort(sstableContent) + table := sstabletest.NewTable(sstableContent) + + GetNamespaceToTargetTable = func() (sstable.Table, error) { + return table, nil + } + + fileContents := []byte(` + import {hasIncorrectComment} from 'goog:goog.string'; // from some:place + `) + p, err := mktmp("google3/foo/a.ts", fileContents) + if err != nil { + t.Error(err) + } + g3root, err := workspace.Root(p) + if err != nil { + t.Error(err) + } + + report := parseReport(t, ` + rule: "//foo:bar" + unresolved_import: "goog:goog.string" + feedback: "ERROR: foo/a.ts:2:1: missing comment for 'goog:' import, please add a trailing comment to the import. E.g.\n" + " import Bar from 'goog:goog.string'; // from //foo:bar\n"`) + ctx := context.Background() + updater := New(false, false, nil, LocalUpdateFile) + _, err = updater.fixMissingTazeComments(ctx, g3root, []*arpb.DependencyReport{report}) + expErr := "cannot add taze comment to foo/a.ts:2, it already has a (malformed?) comment. Please remove or fix the comment." + if err == nil || err.Error() != expErr { + t.Errorf("fixMissingTazeComments(%q): got error %q, expected %q", p, err, expErr) + } + + if analysisErr, ok := err.(*AnalysisFailedError); ok { + if len(analysisErr.Causes) != 1 { + t.Errorf("fixMissingTazeComments(%q): got error causes %q, expected only one", p, analysisErr.Causes) + } + cause := analysisErr.Causes[0] + expFile := "foo/a.ts" + if cause.Path != expFile { + t.Errorf("fixMissingTazeComments(%q): got error file %q, expected %q", p, expFile, cause.Path) + } + expLine := 2 + if cause.Line != expLine { + t.Errorf("fixMissingTazeComments(%q): got error line %q, expected %q", p, expLine, cause.Line) + } + } else { + t.Errorf("fixMissingTazeComments(%q): got error %q, expected it to be an AnalysisFailedError", p, err) + } + + newContents, err := ioutil.ReadFile(p) + if err != nil { + t.Error(err) + } + if !bytes.Equal(newContents, fileContents) { + t.Errorf("fixMissingTazeComments(%q): got:\n%s, expected unchanged:\n%s", p, newContents, fileContents) + } +} + +func TestUpdateTazeCommentsOnImports(t *testing.T) { + sstableContent := []sstabletest.Entry{{[]byte("rapid.model.json"), []byte("//java/com/google/releasetools/rapid/static/js/model:model")}} + sstabletest.Sort(sstableContent) + table := sstabletest.NewTable(sstableContent) + + fileContents := []byte(`import {ProcessTypeEnum} from 'goog:rapid.model.json'; // from //java/com/google/releasetools/rapid/static/js/model:json_js`) + p, err := mktmp("google3/foo/a.ts", fileContents) + if err != nil { + t.Fatal(err) + } + + ctx := context.Background() + err = updateTazeCommentsOnImports(ctx, p, table) + if err != nil { + t.Error(err) + } + + content, err := ioutil.ReadFile(p) + if err != nil { + t.Error(err) + } + expected := `import {ProcessTypeEnum} from 'goog:rapid.model.json'; // from //java/com/google/releasetools/rapid/static/js/model:model` + if string(content) != expected { + t.Errorf("updateTazeCommentsOnImports(%q): got:\n%s, expected:\n%s", p, content, expected) + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/internal_rules.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/internal_rules.go new file mode 100644 index 0000000000..bf9122841f --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/internal_rules.go @@ -0,0 +1,125 @@ +// Excluded from the open-source version since there are no equivalent rules +// to ts_config and ts_development_sources. + +package updater + +import ( + "path/filepath" + "strings" + + "google3/third_party/bazel_buildifier/build/build" + "google3/third_party/bazel_buildifier/edit/edit" + "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform" +) + +// updateTSConfig creates new ts_config rules, as well as registers non-test ts +// rules with the ts_config. Test ts rules are handled in test_register.go. +func updateTSConfig(bld *build.File, add bool) { + if add && getLastRule(bld, "ts_config", ruleTypeAny) == nil { + r := getOrCreateRule(bld, "tsconfig", "ts_config", ruleTypeAny) + r.SetAttr("deps", &build.ListExpr{}) + } + + // register any non-test rules + r := getLastRule(bld, "ts_config", ruleTypeAny) + if r == nil { + return // No ts_config rule that needs updating. + } + targets := allTSRules(bld) + for _, t := range targets { + isTest := attrTruthy(t, "testonly") + if isTest { + // registering test rules with ts_config is done in test_register.go + continue + } + addDep(bld, r, t.Name()) + } +} + +// updateTSDevelopmentSources creates new ts_development_sources rules, as well +// as registers non-test ts rules with the ts_development_sources. Test ts +// rules are handled in test_register.go. +func updateTSDevelopmentSources(bld *build.File, add bool) { + if add { + ruleName := "devsrcs" + if getLastRule(bld, "ts_development_sources", ruleTypeRegular) == nil { + r := getOrCreateRule(bld, ruleName, "ts_development_sources", ruleTypeRegular) + r.SetAttr("deps", &build.ListExpr{}) + } + if getLastRule(bld, "ts_development_sources", ruleTypeTest) == nil { + r := getOrCreateRule(bld, ruleName, "ts_development_sources", ruleTypeTest) + r.SetAttr("deps", &build.ListExpr{}) + } + } + + // register any non-test rules + for _, t := range allTSRules(bld) { + // NodeJS rules should not be added to ts_development_sources automatically + // because they typically do not run in the browser. + if t.AttrString("runtime") == "nodejs" { + continue + } + isTest := attrTruthy(t, "testonly") + if isTest { + // registering test rules with ts_dev_srcs is done in test_register.go + continue + } + depName := ":" + t.Name() + if targetRegisteredInRule(bld, "ts_development_sources", ruleTypeRegular, depName) { + continue + } + r := getLastRule(bld, "ts_development_sources", ruleTypeRegular) + if r == nil { + continue // No devsources rule that needs updating. + } + addDep(bld, r, depName) + } +} + +// updateGenWizTS updates the sources of gen_wiz_ts() build rules referenced +// from ts_library()s. +func updateGenWizTS(bld *build.File) { + // For each ts_library, check if it references a gen_wiz_ts() rule in its srcs + for _, r := range buildRules(bld, "ts_library") { + srcs := r.AttrStrings("srcs") + var genWizRule *build.Rule + for _, src := range srcs { + if !strings.HasPrefix(src, ":") { + continue + } + candidate := edit.FindRuleByName(bld, strings.TrimPrefix(src, ":")) + if candidate != nil && candidate.Kind() == "gen_wiz_ts" { + genWizRule = candidate + break + } + } + // If so, add each source file ending with a wiz suffix to its srcs. + if genWizRule != nil { + addWizSrcsToTarget(bld, genWizRule, srcs) + } + } +} + +var wizSuffixes = []string{ + "controller.ts", + "model.ts", + "renderer.ts", + "processor.ts", + "service.ts", + "interface.ts", +} + +// addWizSrcsToTarget adds any entry from srcs to the sources of the given rule +// if it is a Wiz source (matches one of the suffixes). +func addWizSrcsToTarget(bld *build.File, rule *build.Rule, srcs []string) { + platform.Infof("Adding wiz sources to target %s:%s: %q", filepath.Dir(bld.Path), rule.Name(), srcs) +srcLoop: + for _, src := range srcs { + for _, suffix := range wizSuffixes { + if strings.HasSuffix(src, suffix) { + addToSrcsClobbering(bld, rule, src) + continue srcLoop + } + } + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/internal_updater_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/internal_updater_test.go new file mode 100644 index 0000000000..4dbc9c875e --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/internal_updater_test.go @@ -0,0 +1,86 @@ +package updater + +import ( + "context" + "os" + "path/filepath" + "reflect" + "testing" + + "github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace" +) + +func TestGoogle3Root(t *testing.T) { + r, err := workspace.Root("a/google3/b/c") + if err != nil { + t.Error(err) + } + // Expect an absolute, resolved path. + exp, err := filepath.Abs("a/google3") + if r != exp { + t.Errorf("got %s, expected %s", r, exp) + } +} + +func TestRegisterTestRule(t *testing.T) { + ctx := context.Background() + p, err := mktmp("google3/foo/BUILD", []byte(`ts_config(name = "tsconfig", deps = ["//foo/bar:bar_test"])`)) + if err != nil { + t.Fatal(err) + } + barPath, err := mktmp("google3/foo/bar/BUILD", []byte(`ts_library(name = "bar_test", testonly=True)`)) + if err != nil { + t.Fatal(err) + } + bazPath, err := mktmp("google3/foo/baz/BUILD", []byte(`ts_library(name = "baz_test", testonly=True)`)) + if err != nil { + t.Fatal(err) + } + + g3root := filepath.Dir(filepath.Dir(p)) + var updatedFile string + testUpdateFile := UpdateFile(func(ctx context.Context, filePath string, _ string) error { + var err error + updatedFile, err = filepath.Rel(g3root, filePath) + return err + }) + + updater := New(false, false, nil, testUpdateFile) + _, _, err = updater.RegisterTestRules(ctx, barPath) + if err != nil { + t.Fatal(err) + } + if updatedFile != "" { + t.Errorf("expected no update, got a write to %q", updatedFile) + } + + _, _, err = updater.RegisterTestRules(ctx, bazPath) + if err != nil { + t.Fatal(err) + } + if updatedFile != "foo/BUILD" { + t.Errorf("got an update to %q, expected foo/BUILD", updatedFile) + } +} + +func TestResolvePackages(t *testing.T) { + p, err := mktmp("google3/sub/pkg/file", []byte("")) + if err != nil { + t.Fatal(err) + } + if err := os.Chdir(filepath.Dir(p)); err != nil { + t.Fatal(err) + } + g3root := filepath.Dir(filepath.Dir(filepath.Dir(p))) + if filepath.Base(g3root) != "google3" { + t.Errorf("g3root should be called google3, got %q", g3root) + } + paths := []string{"//foo", "/bar"} + if err := ResolvePackages(paths); err != nil { + t.Fatal(err) + } + expected := []string{filepath.Join(g3root, "foo"), "/bar"} + if !reflect.DeepEqual(paths, expected) { + t.Errorf("ResolvePackages: got %s, expected %s", paths, expected) + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go index 0f51e63b48..1960226c58 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go @@ -5,8 +5,8 @@ import ( "fmt" "path/filepath" - "github.com/bazelbuild/buildtools/build" - "github.com/bazelbuild/buildtools/edit" + "google3/third_party/bazel_buildifier/build/build" + "google3/third_party/bazel_buildifier/edit/edit" "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform" ) @@ -65,7 +65,7 @@ func (upd *Updater) RegisterTestRules(ctx context.Context, paths ...string) (boo continue } platform.Infof("Registering test rule in closest ts_config & ts_development_sources") - target := AbsoluteBazelTarget(bld, tr.Name()) + target := AbsoluteBlazeTarget(bld, tr.Name()) ancestorBuild, err := reg.registerTestRule(ctx, bld, tsConfig, g3root, target) if err != nil { return false, nil, err @@ -221,23 +221,23 @@ var wellKnownBuildRules = []struct { attrName string }{ { - name: "karma_polymer_test", + name: "karma_polymer_test", attrName: "test_ts_deps", }, { - name: "wct_closure_test_suite", + name: "wct_closure_test_suite", attrName: "js_deps", }, { - name: "jasmine_node_test", + name: "jasmine_node_test", attrName: "deps", }, { - name: "karma_web_test_suite", + name: "karma_web_test_suite", attrName: "deps", }, { - name: "boq_jswire_test_library", + name: "boq_jswire_test_library", attrName: "deps", }, } @@ -247,13 +247,13 @@ var wellKnownBuildRules = []struct { // wct_closure_test_suite or jasmine_node_test. func isRegisteredWithAlternateTestRule(bld *build.File, r *build.Rule, dep string) bool { pkg := filepath.Dir(bld.Path) - for _, wkbr := range wellKnownBuildRules { + for _, wkbr := range wellKnownBuildRules{ if isKind(r, wkbr.name) { testTsDeps := r.Attr(wkbr.attrName) if edit.ListFind(testTsDeps, dep, pkg) != nil { return true } - } + } } return false } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go index f606e5bbe5..60ff54e50c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go @@ -1,5 +1,5 @@ -// Package updater implements the main logic of the ts_auto_deps command. It reads BUILD files, -// discovers TypeScript sources, uses `bazel analyze` to update import/dependency information, +// Package updater implements the main logic of the taze command. It reads BUILD files, +// discovers TypeScript sources, uses `blaze analyze` to update import/dependency information, // and then modifies the BUILD file accordingly. package updater @@ -17,26 +17,27 @@ import ( "sync" "time" - "flag" - "github.com/bazelbuild/buildtools/build" - "github.com/bazelbuild/buildtools/edit" + "google3/base/go/flag" + "google3/net/proto2/go/proto" + "google3/third_party/bazel_buildifier/build/build" + "google3/third_party/bazel_buildifier/edit/edit" "github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze" "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform" "github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace" - "github.com/golang/protobuf/proto" - "github.com/mattn/go-isatty" + "google3/third_party/golang/isatty/isatty" - arpb "github.com/bazelbuild/rules_typescript/ts_auto_deps/proto" + arpb "google3/third_party/bazel_rules/rules_typescript/ts_auto_deps/proto/analyze_result_go_proto" ) -var bazelErrorRE = regexp.MustCompile(`ERROR: ([^:]+):(\d+):\d+:`) + +var blazeErrorRE = regexp.MustCompile(`ERROR: ([^:]+):(\d+):\d+:`) // New creates a new updater from the given arguments. One updater can be used // to update many packages, repeatedly, but not concurrently. -// bazelAnalyze and updateFile can be passed in to handle ts_auto_deps operation in +// blazeAnalyze and updateFile can be passed in to handle taze operation in // different environments and for fakes in tests. -func New(removeUnusedDeclarations bool, updateComments bool, bazelAnalyze BazelAnalyzer, updateFile UpdateFile) *Updater { - return &Updater{removeUnusedDeclarations, updateComments, bazelAnalyze, updateFile} +func New(removeUnusedDeclarations bool, updateComments bool, blazeAnalyze BlazeAnalyzer, updateFile UpdateFile) *Updater { + return &Updater{removeUnusedDeclarations, updateComments, blazeAnalyze, updateFile} } // UpdateFile updates the contents of filePath. Implementations may postpone or batch actually writing the given file, i.e. @@ -48,19 +49,19 @@ func LocalUpdateFile(ctx context.Context, filePath string, contents string) erro return platform.WriteFile(ctx, filePath, []byte(contents)) } -// BazelAnalyzer is a function that executes bazel analyze for the given -// absolute build file path and bazel targets, and returns the raw analysis +// BlazeAnalyzer is a function that executes blaze analyze for the given +// absolute build file path and blaze targets, and returns the raw analysis // result proto, or an error if the analyze call failed. // It's used to abstract over execution using rabbit vs local execution. // Returns the main output (serialized AnalysisResult proto), any error // messages, or an error. -type BazelAnalyzer func(buildFilePath string, targets []string) ([]byte, []byte, error) +type BlazeAnalyzer func(buildFilePath string, targets []string) ([]byte, []byte, error) -// Updater encapsulates configuration for the ts_auto_deps process. +// Updater encapsulates configuration for the taze process. type Updater struct { removeUnusedDeclarations bool updateComments bool - bazelAnalyze BazelAnalyzer + blazeAnalyze BlazeAnalyzer updateFile UpdateFile } @@ -74,31 +75,31 @@ func attrTruthy(r *build.Rule, attr string) bool { var unusedDeclarationRE = regexp.MustCompile( `WARNING: [^:]+:\d+:(?:\d+:)? keeping possibly used ts_declaration '([^']+)'`) -// GarbledBazelResponseError signals to callers that the proto returned by bazel +// GarbledBlazeResponseError signals to callers that the proto returned by blaze // analyze was garbled, and couldn't be unmarshalled. // TODO(lucassloan): remove when b/112891536 is fixed -// Build Rabbit rewrites paths produced by bazel, which garbles the error -// messages from bazel analyze, since they're encoded in protobufs. -type GarbledBazelResponseError struct { +// Build Rabbit rewrites paths produced by blaze, which garbles the error +// messages from blaze analyze, since they're encoded in protobufs. +type GarbledBlazeResponseError struct { Message string } -func (g *GarbledBazelResponseError) Error() string { +func (g *GarbledBlazeResponseError) Error() string { return g.Message } -// runBazelAnalyze executes the `bazel analyze` command and extracts reports. +// runBlazeAnalyze executes the `blaze analyze` command and extracts reports. // It returns the dependency report with rule names referring to rules *before* -// macro expansion, or an error. runBazelAnalyze uses the given `analyze` -// function to actually run the `bazel analyze` operation, which allows -// exchanging it for a different implementation in the ts_auto_deps presubmit service. -func (upd *Updater) runBazelAnalyze(buildFilePath string, bld *build.File, rules []*build.Rule) ([]*arpb.DependencyReport, error) { +// macro expansion, or an error. runBlazeAnalyze uses the given `analyze` +// function to actually run the `blaze analyze` operation, which allows +// exchanging it for a different implementation in the taze presubmit service. +func (upd *Updater) runBlazeAnalyze(buildFilePath string, bld *build.File, rules []*build.Rule) ([]*arpb.DependencyReport, error) { var targets []string for _, r := range rules { - fullTarget := AbsoluteBazelTarget(bld, r.Name()) + fullTarget := AbsoluteBlazeTarget(bld, r.Name()) targets = append(targets, fullTarget) } - out, stderr, err := upd.bazelAnalyze(buildFilePath, targets) + out, stderr, err := upd.blazeAnalyze(buildFilePath, targets) if err != nil { return nil, err } @@ -106,15 +107,15 @@ func (upd *Updater) runBazelAnalyze(buildFilePath string, bld *build.File, rules var res arpb.AnalyzeResult if err := proto.Unmarshal(out, &res); err != nil { // TODO(lucassloan): remove when b/112891536 is fixed - // Build Rabbit rewrites paths produced by bazel, which garbles the error - // messages from bazel analyze, since they're encoded in protobufs. - return nil, &GarbledBazelResponseError{fmt.Sprintf("failed to unmarshal analysis result: %v\nin: %q", err, string(out))} + // Build Rabbit rewrites paths produced by blaze, which garbles the error + // messages from blaze analyze, since they're encoded in protobufs. + return nil, &GarbledBlazeResponseError{fmt.Sprintf("failed to unmarshal analysis result: %v\nin: %q", err, string(out))} } platform.Infof("analyze result %v", res) reports := res.GetDependencyReport() if len(targets) != len(reports) { if len(stderr) > 0 { - // TODO(b/73321854): pretend second rule has a syntactical error, so bazel analyze produces no + // TODO(b/73321854): pretend second rule has a syntactical error, so blaze analyze produces no // report for it, but also doesn't return an error code. Remove workaround once fixed. return nil, fmt.Errorf("parsing reports failed (%d reports for %s):\n%s", len(reports), targets, stderr) @@ -135,6 +136,7 @@ func (upd *Updater) runBazelAnalyze(buildFilePath string, bld *build.File, rules // Once existing code is fixed, this constitutes normal operation, and the logging below should be dropped. fmt.Fprintf(os.Stderr, "WARNING: removing apparently unused ts_declaration() dependency from %q.\n", report.GetRule()) + report.UnnecessaryDependency = append(report.UnnecessaryDependency, target) } } @@ -213,7 +215,7 @@ type globResult struct { } // globSources finds sources in path with any of the given extensions. -// It also filters out temporary files, dangling symlinks, and symlinks into bazel-bin specifically. +// It also filters out temporary files, dangling symlinks, and symlinks into blaze-bin specifically. // It returns file names relative to path. func globSources(ctx context.Context, path string, extensions []string) (srcSet, error) { var allSourcePaths []string @@ -315,9 +317,9 @@ func addToSrcsClobbering(bld *build.File, r *build.Rule, s string) { case nil, *build.ListExpr: // expected - a list of files (labels) or absent. default: - // Remove any glob calls, variables, etc. ts_auto_deps uses explicit source lists. + // Remove any glob calls, variables, etc. taze uses explicit source lists. fmt.Fprintf(os.Stderr, "WARNING: clobbering non-list srcs attribute on %s\n", - AbsoluteBazelTarget(bld, r.Name())) + AbsoluteBlazeTarget(bld, r.Name())) r.DelAttr("srcs") } val := &build.StringExpr{Value: s} @@ -331,10 +333,11 @@ func determineRuleType(path, s string) ruleType { return ruleTypeTest } + return ruleTypeRegular } -// AnalysisFailedError is returned by ts_auto_deps when the underlying analyze operation +// AnalysisFailedError is returned by taze when the underlying analyze operation // fails, e.g. because the BUILD files have syntactical errors. type AnalysisFailedError struct { Causes []AnalysisFailureCause @@ -371,7 +374,7 @@ func updateDeps(bld *build.File, reports []*arpb.DependencyReport) error { msg := fmt.Sprintf("dependency analysis failed for %s:\n%s", report.GetRule(), fb) - m := bazelErrorRE.FindStringSubmatch(fb) + m := blazeErrorRE.FindStringSubmatch(fb) if m == nil { // error message didn't contain file and line number, so just use the // path of the BUILD file that was analyzed @@ -404,7 +407,7 @@ func updateDeps(bld *build.File, reports []*arpb.DependencyReport) error { } for _, md := range report.MissingDependencyGroup { for _, d := range md.Dependency { - d = AbsoluteBazelTarget(bld, d) + d = AbsoluteBlazeTarget(bld, d) if d == fullTarget { return &AnalysisFailedError{ []AnalysisFailureCause{ @@ -446,6 +449,7 @@ func updateDeps(bld *build.File, reports []*arpb.DependencyReport) error { return nil } + // maybeWriteBUILD checks if the given file needs updating, i.e. whether the // canonical serialized form of bld has changed from the file contents on disk. // If so, writes the file and returns true, returns false otherwise. @@ -516,10 +520,10 @@ func getBUILDPath(ctx context.Context, path string) (string, string, string, err } // isTazeDisabledInPackage checks the BUILD file, or if the BUILD doesn't exist, -// the nearest ancestor BUILD file for a disable_ts_auto_deps() rule. +// the nearest ancestor BUILD file for a disable_taze() rule. func isTazeDisabledInPackage(ctx context.Context, g3root, buildFilePath, workspaceRelativePath string, bld *build.File) (bool, error) { if bld == nil { - // Make sure ts_auto_deps hasn't been disabled in the next closest ancestor package. + // Make sure taze hasn't been disabled in the next closest ancestor package. ancestor, err := FindBUILDFile(ctx, make(map[string]*build.File), g3root, filepath.Dir(workspaceRelativePath)) if _, ok := err.(*noAncestorBUILDError); ok { platform.Infof("Could not find any ancestor BUILD for %q, continuing with a new BUILD file", @@ -528,32 +532,32 @@ func isTazeDisabledInPackage(ctx context.Context, g3root, buildFilePath, workspa } else if err != nil { return false, err } else if buildHasDisableTaze(ancestor) { - fmt.Printf("ts_auto_deps disabled below %q\n", ancestor.Path) + fmt.Printf("taze disabled below %q\n", ancestor.Path) return true, nil } else { - platform.Infof("BUILD file missing and ts_auto_deps is enabled below %q. Creating new BUILD file.", + platform.Infof("BUILD file missing and taze is enabled below %q. Creating new BUILD file.", ancestor.Path) return false, nil } } if buildHasDisableTaze(bld) { - fmt.Printf("ts_auto_deps disabled on %q\n", buildFilePath) + fmt.Printf("taze disabled on %q\n", buildFilePath) return true, nil } return false, nil } -// SubdirectorySourcesError is returned when ts_auto_deps detects a BUILD file +// SubdirectorySourcesError is returned when taze detects a BUILD file // that references sources in another directory, either in the directory -// being ts_auto_depsd, or in a super directory. +// being tazed, or in a super directory. type SubdirectorySourcesError struct{} func (a *SubdirectorySourcesError) Error() string { - return "ts_auto_deps doesn't handle referencing sources in another directory " + - "- to use ts_auto_deps, migrate to having a BUILD file in every directory. " + - "For more details, see go/ts_auto_deps#subdirectory-sources" + return "taze doesn't handle referencing sources in another directory " + + "- to use taze, migrate to having a BUILD file in every directory. " + + "For more details, see go/taze#subdirectory-sources" } // hasSubdirectorySources checks if the BUILD file has ts_libraries that contain @@ -631,18 +635,20 @@ func (upd *Updater) addSourcesToBUILD(ctx context.Context, path string, buildFil } updateSources(bld, srcs) + return upd.maybeWriteBUILD(ctx, buildFilePath, bld) } -// updateBUILDAfterBazelAnalyze applies the BUILD file updates that depend on bazel +// updateBUILDAfterBlazeAnalyze applies the BUILD file updates that depend on blaze // analyze's DependencyReports, most notably updating any rules' deps. -func (upd *Updater) updateBUILDAfterBazelAnalyze(ctx context.Context, isRoot bool, +func (upd *Updater) updateBUILDAfterBlazeAnalyze(ctx context.Context, isRoot bool, g3root string, buildFilePath string, bld *build.File, reports []*arpb.DependencyReport) (bool, error) { platform.Infof("Updating deps") if err := updateDeps(bld, reports); err != nil { return false, err } + platform.Infof("Setting library rule kinds") if err := setLibraryRuleKinds(ctx, buildFilePath, bld); err != nil { return false, err @@ -650,7 +656,7 @@ func (upd *Updater) updateBUILDAfterBazelAnalyze(ctx context.Context, isRoot boo return upd.maybeWriteBUILD(ctx, buildFilePath, bld) } -// IsTazeDisabledForDir checks if ts_auto_deps is disabled in the BUILD file in the dir, +// IsTazeDisabledForDir checks if taze is disabled in the BUILD file in the dir, // or if no BUILD file exists, in the closest ancestor BUILD func IsTazeDisabledForDir(ctx context.Context, dir string) (bool, error) { g3root, buildFilePath, workspaceRelativePath, err := getBUILDPath(ctx, dir) @@ -667,23 +673,23 @@ func IsTazeDisabledForDir(ctx context.Context, dir string) (bool, error) { return isTazeDisabledInPackage(ctx, g3root, buildFilePath, workspaceRelativePath, bld) } -// CantProgressAfterWriteError reports that ts_auto_deps was run in an environment -// where it can't make writes to the file system (such as when ts_auto_deps is running -// as a service for cider) and the writes it made need to be visible to bazel analyze, +// CantProgressAfterWriteError reports that taze was run in an environment +// where it can't make writes to the file system (such as when taze is running +// as a service for cider) and the writes it made need to be visible to blaze analyze, // so it can continue updating the BUILD file(s). In such a case, the caller should -// collect the writes using a custom UpdateFile function, and re-call ts_auto_deps after +// collect the writes using a custom UpdateFile function, and re-call taze after // applying the writes. type CantProgressAfterWriteError struct{} func (a *CantProgressAfterWriteError) Error() string { - return "running ts_auto_deps in a non-writable environment, can't continue until writes are applied" + return "running taze in a non-writable environment, can't continue until writes are applied" } // UpdateBUILDOptions bundles options for the UpdateBUILD function. type UpdateBUILDOptions struct { - // InNonWritableEnvironment boolean indicates to ts_auto_deps that the writes it makes - // won't be immediately visible to bazel analyze, so it cannot proceed normally. - // In this case, if it makes a write that needs to be visible to bazel analyze, it + // InNonWritableEnvironment boolean indicates to taze that the writes it makes + // won't be immediately visible to blaze analyze, so it cannot proceed normally. + // In this case, if it makes a write that needs to be visible to blaze analyze, it // will return a CantProgressAfterWriteError, which indicates that the caller // should apply the writes made to its UpdateFile function, and re-call UpdateBUILD // after the writes have been applied. @@ -702,8 +708,8 @@ type LatencyReport struct { // UpdateBUILD drives the main process of creating/updating the BUILD file // underneath path based on the available sources. Returns true if it modified -// the BUILD file, false if the BUILD file was up to date already. bazelAnalyze -// is used to run the underlying `bazel analyze` process. Returns another +// the BUILD file, false if the BUILD file was up to date already. blazeAnalyze +// is used to run the underlying `blaze analyze` process. Returns another // boolean that's true iff the package doesn't contain any TypeScript (source // files or BUILD rules). func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options UpdateBUILDOptions) (bool, *LatencyReport, error) { @@ -732,12 +738,12 @@ func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options Update latencyReport.GetBUILD = time.Since(start) start = time.Now() - ts_auto_depsDisabled, err := isTazeDisabledInPackage(ctx, g3root, buildFilePath, workspaceRelativePath, bld) + tazeDisabled, err := isTazeDisabledInPackage(ctx, g3root, buildFilePath, workspaceRelativePath, bld) if err != nil { return false, nil, err } latencyReport.TazeDisabled = time.Since(start) - if ts_auto_depsDisabled { + if tazeDisabled { return false, nil, nil } @@ -785,16 +791,17 @@ func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options Update } } platform.Infof("analyzing...") - reports, err := upd.runBazelAnalyze(buildFilePath, bld, rulesWithSrcs) + reports, err := upd.runBlazeAnalyze(buildFilePath, bld, rulesWithSrcs) if err != nil { return false, nil, err } - changedAfterBazelAnalyze, err := upd.updateBUILDAfterBazelAnalyze(ctx, options.IsRoot, g3root, buildFilePath, bld, reports) + + changedAfterBlazeAnalyze, err := upd.updateBUILDAfterBlazeAnalyze(ctx, options.IsRoot, g3root, buildFilePath, bld, reports) if err != nil { return false, nil, err } - changed = changed || changedAfterBazelAnalyze + changed = changed || changedAfterBlazeAnalyze if options.InNonWritableEnvironment && changed { return true, nil, &CantProgressAfterWriteError{} } @@ -802,12 +809,12 @@ func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options Update return changed, nil, nil } -// buildHasDisableTaze checks if the BUILD file should be managed using ts_auto_deps. -// Users can disable ts_auto_deps by adding a "disable_ts_auto_deps()" (or "dont_ts_auto_deps_me()") statement. +// buildHasDisableTaze checks if the BUILD file should be managed using taze. +// Users can disable taze by adding a "disable_taze()" (or "dont_taze_me()") statement. func buildHasDisableTaze(bld *build.File) bool { for _, stmt := range bld.Stmt { if call, ok := stmt.(*build.CallExpr); ok { - if fnName, ok := call.X.(*build.Ident); ok && (fnName.Name == "disable_ts_auto_deps" || fnName.Name == "dont_ts_auto_deps_me") { + if fnName, ok := call.X.(*build.Ident); ok && (fnName.Name == "disable_taze" || fnName.Name == "dont_taze_me") { return true } } @@ -815,14 +822,14 @@ func buildHasDisableTaze(bld *build.File) bool { return false } -// QueryBasedBazelAnalyze uses bazel query to analyze targets. It is available under a flag or +// QueryBasedBlazeAnalyze uses blaze query to analyze targets. It is available under a flag or // an environment variable on engineer's workstations. -func QueryBasedBazelAnalyze(buildFilePath string, targets []string) ([]byte, []byte, error) { +func QueryBasedBlazeAnalyze(buildFilePath string, targets []string) ([]byte, []byte, error) { root, err := workspace.Root(buildFilePath) if err != nil { return nil, nil, err } - reports, err := analyze.New(analyze.NewQueryBasedTargetLoader(root, "bazel")).Analyze(context.Background(), buildFilePath, targets) + reports, err := analyze.New(analyze.NewQueryBasedTargetLoader(root, "blaze")).Analyze(context.Background(), buildFilePath, targets) if err != nil { return nil, nil, err } @@ -853,7 +860,7 @@ func buildRules(bld *build.File, kind string) []*build.Rule { // Find all rules, then filter by kind. // This is nearly the same as just calling bld.Rules(kind), but allows to // retrieve ng_module and ts_library intermixed, in the order in which they - // appear in the BUILD file. That allows ts_auto_deps to consistently always pick the + // appear in the BUILD file. That allows taze to consistently always pick the // last build rule in the file in case multiple match, regardless of kind. allRules := bld.Rules("") var res []*build.Rule @@ -886,12 +893,12 @@ func addDep(bld *build.File, r *build.Rule, dep string) { edit.AddValueToListAttribute(r, "deps", pkg, &build.StringExpr{Value: dep}, nil) } -// AbsoluteBazelTarget converts a ruleName to an absolute target string (//foo/bar:bar). +// AbsoluteBlazeTarget converts a ruleName to an absolute target string (//foo/bar:bar). // It interprets ruleName relative to the given build file's package. It // supports plain names, names starting with colons, absolute paths, and // absolute paths with shorthand target syntax (i.e. "bar", ":bar", "//foo/bar", // "//foo/bar:bar"). -func AbsoluteBazelTarget(bld *build.File, ruleName string) string { +func AbsoluteBlazeTarget(bld *build.File, ruleName string) string { if strings.HasPrefix(ruleName, "//") { // already absolute if colonIdx := strings.LastIndex(ruleName, ":"); colonIdx == -1 { @@ -928,8 +935,8 @@ func removeSourcesUsed(bld *build.File, ruleKind, attrName string, srcs srcSet) } const ( - tsSkylarkLabel = "@npm_bazel_typescript//:index.bzl" - ngSkylarkLabel = "@angular//:index.bzl" + tsSkylarkLabel = "//javascript/typescript:build_defs.bzl" + ngSkylarkLabel = "//javascript/angular2:build_defs.bzl" ) func removeUnusedLoad(bld *build.File, kind string) { @@ -948,6 +955,7 @@ func removeUnusedLoad(bld *build.File, kind string) { continue } + var from, to []*build.Ident for i, ca := range load.To { if ca.Name != kind { @@ -1036,7 +1044,7 @@ func updateWebAssets(ctx context.Context, buildFilePath string, bld *build.File) for _, r := range bld.Rules("ng_module") { srcs := r.Attr("assets") if call, ok := srcs.(*build.CallExpr); ok && call.X.(*build.Ident).Name == "glob" { - // Remove any glob calls, ts_auto_deps uses explicit source lists. + // Remove any glob calls, taze uses explicit source lists. r.DelAttr("assets") } @@ -1241,7 +1249,7 @@ func FindBUILDFile(ctx context.Context, pkgToBUILD map[string]*build.File, return bld, err } -// Paths gets the list of paths for the current execution of ts_auto_deps. +// Paths gets the list of paths for the current execution of taze. func Paths(isRoot bool, files bool, recursive bool) ([]string, error) { paths := flag.Args() if len(paths) == 0 { @@ -1280,7 +1288,7 @@ func Paths(isRoot bool, files bool, recursive bool) ([]string, error) { return nil }) if err != nil { - return nil, fmt.Errorf("ts_auto_deps -recursive failed: %s", err) + return nil, fmt.Errorf("taze -recursive failed: %s", err) } } sort.Sort(byLengthInverted(allPaths)) @@ -1290,7 +1298,7 @@ func Paths(isRoot bool, files bool, recursive bool) ([]string, error) { return paths, nil } -// Execute runs ts_auto_deps on paths using host. +// Execute runs taze on paths using host. func Execute(host *Updater, paths []string, isRoot, recursive bool) error { ctx := context.Background() for i, p := range paths { @@ -1298,9 +1306,9 @@ func Execute(host *Updater, paths []string, isRoot, recursive bool) error { changed, _, err := host.UpdateBUILD(ctx, p, UpdateBUILDOptions{InNonWritableEnvironment: false, IsRoot: isLastAndRoot}) if err != nil { if recursive { - return fmt.Errorf("ts_auto_deps failed on %s/BUILD: %s", p, err) + return fmt.Errorf("taze failed on %s/BUILD: %s", p, err) } - return fmt.Errorf("ts_auto_deps failed: %s", err) + return fmt.Errorf("taze failed: %s", err) } if changed { if filepath.Base(p) == "BUILD" { diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go index 613b99f46f..38c9740132 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go @@ -9,10 +9,10 @@ import ( "strings" "testing" - "github.com/bazelbuild/buildtools/build" - "github.com/golang/protobuf/proto" + "google3/net/proto2/go/proto" + "google3/third_party/bazel_buildifier/build/build" - arpb "github.com/bazelbuild/rules_typescript/ts_auto_deps/proto" + arpb "google3/third_party/bazel_rules/rules_typescript/ts_auto_deps/proto/analyze_result_go_proto" ) var ( @@ -52,7 +52,7 @@ func TestGlobSources(t *testing.T) { t.Fatal(err) } } - if err := os.Symlink("../bazel-bin/symlink.d.ts", filepath.Join(testTmpDir, "symlink.d.ts")); err != nil { + if err := os.Symlink("../blaze-bin/symlink.d.ts", filepath.Join(testTmpDir, "symlink.d.ts")); err != nil { t.Fatal(err) } if err := os.Symlink("whatever", filepath.Join(testTmpDir, "whatever.d.ts")); err != nil { @@ -83,6 +83,7 @@ func TestDetermineRuleType(t *testing.T) { {"java/com/google/myapp/BUILD", "foo_test.ts", ruleTypeTest}, {"java/com/google/myapp/BUILD", "foo_test.tsx", ruleTypeTest}, + {"java/com/google/testing/mytesttool/BUILD", "foo.ts", ruleTypeRegular}, {"testing/mytesttool/BUILD", "foo.ts", ruleTypeRegular}, {"testing/mytesttool/BUILD", "foo_test.ts", ruleTypeTest}, @@ -104,7 +105,7 @@ func parseReport(t *testing.T, input string) *arpb.DependencyReport { return report } -func TestBazelAnalyzeError(t *testing.T) { +func TestBlazeAnalyzeError(t *testing.T) { bld, err := build.ParseBuild("rules/BUILD", []byte(` ts_library( name = "firstrule", @@ -127,15 +128,15 @@ ts_library( return data, []byte(`Here's the actual error`), err } upd := &Updater{} - upd.bazelAnalyze = mockAnalyze - report, err := upd.runBazelAnalyze("firstrule/BUILD", bld, bld.Rules("ts_library")) + upd.blazeAnalyze = mockAnalyze + report, err := upd.runBlazeAnalyze("firstrule/BUILD", bld, bld.Rules("ts_library")) if err == nil { t.Fatalf("expected an error, got a report: %v", report) } expected := `parsing reports failed (1 reports for [//rules:firstrule //rules:secondrule]): Here's the actual error` if err.Error() != expected { - t.Errorf("runBazelAnalyze: got %q, expected %q", err.Error(), expected) + t.Errorf("runBlazeAnalyze: got %q, expected %q", err.Error(), expected) } } @@ -472,7 +473,7 @@ func TestWebAssetReferredByColon(t *testing.T) { } } -func TestAbsoluteBazelTarget(t *testing.T) { +func TestAbsoluteBlazeTarget(t *testing.T) { bld := &build.File{Path: "foo/bar/BUILD", Type: build.TypeBuild} tests := []struct{ target, expected string }{ {"//foo/bar:bar", "//foo/bar:bar"}, @@ -481,9 +482,9 @@ func TestAbsoluteBazelTarget(t *testing.T) { {"//foo/bar", "//foo/bar:bar"}, } for _, tst := range tests { - abs := AbsoluteBazelTarget(bld, tst.target) + abs := AbsoluteBlazeTarget(bld, tst.target) if abs != tst.expected { - t.Errorf("AbsoluteBazelTarget(%q): got %q, expected %q", tst.target, abs, tst.expected) + t.Errorf("AbsoluteBlazeTarget(%q): got %q, expected %q", tst.target, abs, tst.expected) } } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/BUILD.bazel deleted file mode 100644 index 38f81231df..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/BUILD.bazel +++ /dev/null @@ -1,9 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "go_default_library", - srcs = ["workspace.go"], - importpath = "github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace", - visibility = ["//visibility:public"], - deps = ["@com_github_bazelbuild_buildtools//wspace:go_default_library"], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/workspace.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/workspace.go index c7f1ac2606..db4d4fde46 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/workspace.go +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/workspace.go @@ -1,13 +1,26 @@ package workspace -import "github.com/bazelbuild/buildtools/wspace" +import ( + "fmt" + "path/filepath" +) -// Root finds the closest directory containing a WORKSPACE file from p. +// Root finds the closest google3 root from p. func Root(p string) (string, error) { - return wspace.Find(p) + p, err := filepath.Abs(p) + if err != nil { + return "", fmt.Errorf("unable to determine google3 root from %s: %v", p, err) + } + + for step := p; step != "/" && step != "."; step = filepath.Dir(step) { + if filepath.Base(step) == "google3" { + return step, nil + } + } + return "", fmt.Errorf("unable to determine google3 root, no 'google3' in %s", p) } // Name returns the name of the workspace. func Name() string { - return "TODO" + return "google3" } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/workspace.go.oss b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/workspace.go.oss new file mode 100644 index 0000000000..c7f1ac2606 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/workspace.go.oss @@ -0,0 +1,13 @@ +package workspace + +import "github.com/bazelbuild/buildtools/wspace" + +// Root finds the closest directory containing a WORKSPACE file from p. +func Root(p string) (string, error) { + return wspace.Find(p) +} + +// Name returns the name of the workspace. +func Name() string { + return "TODO" +} From abbf3ca1004cfe4382eecca4cb003abaa8db4acf Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Tue, 26 Nov 2019 09:59:57 -0800 Subject: [PATCH 0672/1134] Properly handle negative error codes in typescript diagnostic identifiers for tsc_wrapped diagnostics extensions Since diagnostic identifier code's are of type `number`, both positive and negative numbers should be valid. PiperOrigin-RevId: 282587002 --- .../rules_typescript/internal/tsc_wrapped/diagnostics.ts | 4 ++-- .../internal/tsc_wrapped/diagnostics_test.ts | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics.ts index 89c2680662..32fbfe0f45 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics.ts @@ -22,7 +22,7 @@ export function filterExpected( // 2. Required TS error: 'TS2000: message text.' // Need triple escapes because the expected diagnostics that we're matching // here are regexes, too. - const ERROR_RE = /^(?:\\\((\d*),(\d*)\\\).*)?TS(\d+):(.*)/; + const ERROR_RE = /^(?:\\\((\d*),(\d*)\\\).*)?TS(-?\d+):(.*)/; const incorrectErrors = bazelOpts.expectedDiagnostics.filter(e => !e.match(ERROR_RE)); if (incorrectErrors.length) { @@ -52,7 +52,7 @@ export function filterExpected( const expectedDiags: ExpectedDiagnostics[] = bazelOpts.expectedDiagnostics.map(expected => { - const m = expected.match(/^(?:\\\((\d*),(\d*)\\\).*)?TS(\d+):(.*)$/); + const m = expected.match(/^(?:\\\((\d*),(\d*)\\\).*)?TS(-?\d+):(.*)$/); if (!m) { throw new Error( 'Incorrect expected error, did you forget character escapes in ' + diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics_test.ts index fceece4437..8acf2120fc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics_test.ts @@ -58,5 +58,10 @@ describe('diagnostics', () => { 'Incorrect expected error, did you forget character escapes in ' + 'TS1234:unescaped \n newline'); }); + + it('handle negative diagnostic codes', () => { + expect(filter(['TS-999:custom error'], [diag(-999, 'custom error')])) + .toEqual([]); + }); }); }); From e6337b8cb8d9d3173c58a6ae88d7df7f9136d0ec Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Tue, 26 Nov 2019 13:29:17 -0800 Subject: [PATCH 0673/1134] Avoid depset union operators Depset operators `+`, `+=`, `|` and the depset.union() method are deprecated. They were error-prone and led to build performance problems. Instead, creating a new depset should be done with the depset constructor. Also, the 'items' argument of depset is deprecated. PiperOrigin-RevId: 282628656 --- .../bazelbuild/rules_typescript/internal/common/compilation.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 6d1aa9f78c..e815f37291 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -302,7 +302,7 @@ def compile_ts( input_declarations = depset(src_declarations, transitive = [dep_declarations.transitive]) type_blacklisted_declarations = dep_declarations.type_blacklisted if not is_library and not _should_generate_externs(ctx): - type_blacklisted_declarations += srcs_files + type_blacklisted_declarations = depset(srcs_files, transitive = [type_blacklisted_declarations]) # The depsets of output files. These are the files that are always built # (including e.g. if you "blaze build :the_target" directly). From 4f7ba1cd03fed9a675d00d84cd6bb6f71a5171b0 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Wed, 27 Nov 2019 11:39:08 -0800 Subject: [PATCH 0674/1134] Unpublish ts_auto_deps. PiperOrigin-RevId: 282807385 --- .../bazelbuild/rules_typescript/BUILD.bazel | 3 - .../bazelbuild/rules_typescript/README.md | 1 - .../bazelbuild/rules_typescript/package.bzl | 11 +- .../rules_typescript/ts_auto_deps/BUILD.bazel | 48 - .../ts_auto_deps/analyze/analyze.go | 603 -------- .../ts_auto_deps/analyze/analyze_test.go | 657 -------- .../ts_auto_deps/analyze/imports.go | 150 -- .../ts_auto_deps/analyze/imports_test.go | 85 -- .../ts_auto_deps/analyze/loader.go | 741 --------- .../ts_auto_deps/analyze/loader_test.go | 97 -- .../rules_typescript/ts_auto_deps/main.go | 54 - .../ts_auto_deps/platform/file.go | 58 - .../ts_auto_deps/platform/file.go.oss | 54 - .../ts_auto_deps/platform/log.go | 18 - .../ts_auto_deps/platform/log.go.oss | 22 - .../ts_auto_deps/platform/walk.go | 20 - .../ts_auto_deps/platform/walk.go.oss | 15 - .../ts_auto_deps/proto/analyze_result.proto | 98 -- .../ts_auto_deps/updater/comments.go | 208 --- .../ts_auto_deps/updater/comments_test.go | 184 --- .../ts_auto_deps/updater/internal_rules.go | 125 -- .../updater/internal_updater_test.go | 86 -- .../ts_auto_deps/updater/test_register.go | 259 ---- .../ts_auto_deps/updater/updater.go | 1348 ----------------- .../ts_auto_deps/updater/updater_test.go | 564 ------- .../ts_auto_deps/workspace/workspace.go | 26 - .../ts_auto_deps/workspace/workspace.go.oss | 13 - 27 files changed, 1 insertion(+), 5547 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/imports.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/imports_test.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader_test.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/file.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/file.go.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/log.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/log.go.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/walk.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/walk.go.oss delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/proto/analyze_result.proto delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/comments.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/comments_test.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/internal_rules.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/internal_updater_test.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/workspace.go delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/workspace.go.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index 7f69e55b26..b0a0051807 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -45,8 +45,5 @@ npm_package( "//devserver:devserver-windows", "//internal:generated_BUILD", "//internal:tsc_wrapped", - "//ts_auto_deps:ts_auto_deps-darwin", - "//ts_auto_deps:ts_auto_deps-linux", - "//ts_auto_deps:ts_auto_deps-windows", ], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/README.md b/third_party/github.com/bazelbuild/rules_typescript/README.md index 41028ada75..8b1acebacd 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/README.md +++ b/third_party/github.com/bazelbuild/rules_typescript/README.md @@ -5,7 +5,6 @@ This repo contains a mirror of some Google-internal bits that support TypeScript It contains these utilities: - `ts_devserver`: a Go library and binary that runs a fast local web server which concatenates JavaScript on-the-fly. It requires inputs in a named module format (module ids must be contained in the file, not inferred from the file's path). -- `ts_auto_deps`: a Go library and binary which generates `BUILD.bazel` files from TypeScript sources. - `tsc_wrapped`: a TypeScript program which wraps the TypeScript compiler, hosting it under a Bazel worker. - `tsetse`: a collection of third-party "strictness" checks which we add to the TypeScript compiler. - `internal/common/*.bzl`: some Starlark utility code for running the `ts_library` rule. diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index 2e4473d817..e1c4bb3e6f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -42,7 +42,7 @@ def rules_typescript_dev_dependencies(): sha256 = "f624fe9ca8d51de192655369ac538c420afb7cde16e1ad052554b582fff09287", ) - # For building ts_devserver and ts_auto_deps binaries + # For building ts_devserver binary # See https://github.com/bazelbuild/rules_go#setup for the latest version. _maybe( http_archive, @@ -77,15 +77,6 @@ def rules_typescript_dev_dependencies(): sha256 = "3c681998538231a2d24d0c07ed5a7658cb72bfb5fd4bf9911157c0e9ac6a2687", ) - # ts_auto_deps depends on com_github_bazelbuild_buildtools - _maybe( - http_archive, - name = "com_github_bazelbuild_buildtools", - url = "https://github.com/bazelbuild/buildtools/archive/0.19.2.1.zip", - strip_prefix = "buildtools-0.19.2.1", - sha256 = "9176a7df34dbed2cf5171eb56271868824560364e60644348219f852f593ae79", - ) - def _maybe(repo_rule, name, **kwargs): if not native.existing_rule(name): repo_rule(name = name, **kwargs) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel deleted file mode 100644 index b71e8a142a..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/BUILD.bazel +++ /dev/null @@ -1,48 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") - -go_library( - name = "go_default_library", - srcs = ["main.go"], - importpath = "github.com/bazelbuild/rules_typescript/ts_auto_deps", - visibility = ["//visibility:private"], - deps = [ - "//ts_auto_deps/platform:go_default_library", - "//ts_auto_deps/updater:go_default_library", - ], -) - -go_binary( - name = "ts_auto_deps_bin", - embed = [":go_default_library"], - visibility = ["//visibility:public"], -) - -go_binary( - name = "ts_auto_deps-darwin", - out = "ts_auto_deps-darwin_x64", - embed = [":go_default_library"], - goarch = "amd64", - goos = "darwin", - pure = "on", - visibility = ["//visibility:public"], -) - -go_binary( - name = "ts_auto_deps-linux", - out = "ts_auto_deps-linux_x64", - embed = [":go_default_library"], - goarch = "amd64", - goos = "linux", - pure = "on", - visibility = ["//visibility:public"], -) - -go_binary( - name = "ts_auto_deps-windows", - out = "ts_auto_deps-win32_x64.exe", - embed = [":go_default_library"], - goarch = "amd64", - goos = "windows", - pure = "on", - visibility = ["//visibility:public"], -) diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go deleted file mode 100644 index 00bb81ac24..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze.go +++ /dev/null @@ -1,603 +0,0 @@ -// Package analyze uses blaze query to determine and locate missing imports -// in TypeScript source files. -package analyze - -import ( - "context" - "fmt" - "os" - "path/filepath" - "regexp" - "strings" - - "google3/net/proto2/go/proto" - "google3/third_party/bazel_buildifier/edit/edit" - "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform" - "github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace" - - appb "google3/third_party/bazel/src/main/protobuf/build_go_proto" - arpb "google3/third_party/bazel_rules/rules_typescript/ts_auto_deps/proto/analyze_result_go_proto" -) - -var ( - extensions = []string{ - // '.d.ts' must come before '.ts' to completely remove the '.d.ts' - // extension. - ".d.ts", - ".ts", - ".tsx", - } -) - -const ( - // debug enables/disables debug logging. Set to true to have debug statements - // print to stdout, set to false to disable debug statements. - debug = false -) - -// debugf prints a formatted message prefixed with "DEBUG:" if the debug -// flag is enabled. -func debugf(format string, v ...interface{}) { - if debug { - fmt.Printf(fmt.Sprintf("DEBUG: %s\n", format), v...) - } -} - -// TargetLoader provides methods for loading targets from BUILD files. -type TargetLoader interface { - // LoadTargets loads targets from BUILD files associated with labels. A target - // is a rule, source file, generated file, package group or environment group. - // It returns a mapping from labels to targets or an error, if any occurred. - // - // A label must be the absolute label associated with a target. For example, - // '//foo/bar:baz' is acceptable whereas 'bar:baz' or '//foo/bar' will result - // in undefined behavior. TODO(lucassloan): make this an error - // - // Only returns targets visible to currentPkg. If currentPkg is an empty - // string returns all targets regardless of visibility. - LoadTargets(currentPkg string, labels []string) (map[string]*appb.Target, error) - // LoadRules loads rules from BUILD files associated with labels. - // It returns a mapping from labels to rules or an error, if any - // occurred. - // - // A label must be the absolute label associated with a rule. For - // example, '//foo/bar:baz' is acceptable whereas 'bar:baz' or '//foo/bar' - // will result in undefined behavior. - // TODO(lucassloan): make this an error. - // - // Only returns rules visible to currentPkg. If currentPkg is an empty string - // returns all rules regardless of visibility. - LoadRules(currentPkg string, labels []string) (map[string]*appb.Rule, error) - // LoadImportPaths loads targets from BUILD files associated with import - // paths relative to a root directory. It returns a mapping from import - // paths to targets or an error, if any occurred. - // - // An import path is the path present in a TypeScript import statement - // resolved relative to the workspace root. For example, an import - // statement 'import baz from "../baz.ts"' declared in the TypeScript - // source file '//foo/bar.ts' would have the import path of 'baz.ts'. If - // no target is found associated with a provided import path, the import - // path should be excluded from the returned mapping but an error should - // not be returned. - // - // Only returns rules visible to currentPkg. If currentPkg is an empty string - // returns all targets regardless of visibility. - LoadImportPaths(ctx context.Context, targetToAnalyze *appb.Rule, currentPkg, root string, paths []string) (map[string]*appb.Rule, error) -} - -// Analyzer uses a BuildLoader to generate dependency reports. -type Analyzer struct { - loader TargetLoader -} - -// New returns a new Analyzer which can be used to generate dependency reports. -func New(loader TargetLoader) *Analyzer { - return &Analyzer{loader: loader} -} - -// Analyze generates a dependency report for each target label in labels. -// -// dir is the directory that taze should execute in. Must be a sub-directory -// of the workspace root. -func (a *Analyzer) Analyze(ctx context.Context, dir string, labels []string) ([]*arpb.DependencyReport, error) { - if len(labels) == 0 { - return nil, nil - } - _, currentPkg, _ := edit.ParseLabel(labels[0]) - for _, label := range labels { - if _, pkg, _ := edit.ParseLabel(label); pkg != currentPkg { - return nil, fmt.Errorf("can't analyze targets in different packages") - } - } - root, err := workspace.Root(dir) - if err != nil { - return nil, err - } - rules, err := a.loader.LoadRules(currentPkg, labels) - if err != nil { - return nil, err - } - resolved, err := a.resolveImportsForTargets(ctx, currentPkg, root, rules) - if err != nil { - return nil, err - } - return a.generateReports(labels, resolved) -} - -// resolvedTarget represents a Blaze target and all resolved information. -type resolvedTarget struct { - label string - // A map of all existing dependencies on a target at the time of analysis. - // The keys are labels and the values are thes loaded target. - dependencies map[string]*appb.Rule - // A map of source file paths to their imports. - imports map[string][]*tazeImport - // rule is the original rule the target was constructed from. - rule *appb.Rule - // missingSources are source files which could not be opened on disk. - // These are added to the dependency reports and MissingSources. - missingSources []string - // A map from the labels in the target's srcs to the Targets those - // labels refer. - sources map[string]*appb.Target - literalSourcePaths []string - generatedSourcePaths []string -} - -// setSources sets the sources on t. It returns an error if one of the srcs of -// t's rule isn't in loadedSrcs. It also sorts the sources into literal and -// generated sources, setting literalSourcePaths and generatedSourcePaths. -// Returns an error if all the sources are generated - taze can't read the -// import statements to determine deps. -func (t *resolvedTarget) setSources(loadedSrcs map[string]*appb.Target) error { - for _, label := range listAttribute(t.rule, "srcs") { - src := loadedSrcs[label] - if src == nil { - return fmt.Errorf("no source found for label %s", label) - } - t.sources[label] = src - if src.GetType() == appb.Target_SOURCE_FILE { - t.literalSourcePaths = append(t.literalSourcePaths, labelToPath(label)) - } else { - t.generatedSourcePaths = append(t.generatedSourcePaths, labelToPath(label)) - } - } - if len(t.literalSourcePaths) == 0 && len(t.generatedSourcePaths) > 0 { - return fmt.Errorf("rule has generated sources - cannot determine dependencies") - } - return nil -} - -// srcs returns the labels of the sources of t. -func (t *resolvedTarget) srcs() ([]string, error) { - srcs := listAttribute(t.rule, "srcs") - if srcs == nil { - return nil, fmt.Errorf("target %q missing \"srcs\" attribute", t.label) - } - - return srcs, nil -} - -// getAllLiteralSrcPaths returns the file paths of all the non-generated sources -// of the targets. -func getAllLiteralSrcPaths(targets map[string]*resolvedTarget) ([]string, error) { - var allLiteralSrcPaths []string - for _, t := range targets { - allLiteralSrcPaths = append(allLiteralSrcPaths, t.literalSourcePaths...) - } - - return allLiteralSrcPaths, nil -} - -func (t *resolvedTarget) deps() []string { - return listAttribute(t.rule, "deps") -} - -// provides returns whether the resolved target can provide the path provided. -func (t *resolvedTarget) provides(path string) bool { - for _, label := range listAttribute(t.rule, "srcs") { - src := t.sources[label] - if src.GetType() == appb.Target_SOURCE_FILE { - // For literal sources, check the path of the source - if labelToPath(label) == path { - return true - } - } else if src.GetType() == appb.Target_RULE { - // For generated souces, check against the paths of rule's - // outputs - for _, genSrc := range src.GetRule().GetRuleOutput() { - if labelToPath(genSrc) == path { - return true - } - } - } - } - return false -} - -// newTarget constructs a new target instance from a loaded rule. -func newResolvedTarget(r *appb.Rule) *resolvedTarget { - return &resolvedTarget{ - label: r.GetName(), - dependencies: make(map[string]*appb.Rule), - imports: make(map[string][]*tazeImport), - rule: r, - sources: make(map[string]*appb.Target), - } -} - -// resolveImportsForTargets attempts to resolve the imports in the sources of -// each target in targets. -func (a *Analyzer) resolveImportsForTargets(ctx context.Context, currentPkg, root string, allTargets map[string]*appb.Rule) (map[string]*resolvedTarget, error) { - targets := make(map[string]*resolvedTarget) - var allDeps, allSrcs []string - for _, t := range allTargets { - target := newResolvedTarget(t) - targets[target.label] = target - srcs, err := target.srcs() - if err != nil { - return nil, err - } - allDeps = append(allDeps, target.deps()...) - allSrcs = append(allSrcs, srcs...) - } - deps, err := a.loader.LoadRules(currentPkg, allDeps) - if err != nil { - return nil, err - } - // Associate the loaded existing deps with the target or targets which - // contained them. - for _, t := range targets { - for _, dep := range t.deps() { - t.dependencies[dep] = deps[dep] - } - } - // load all the sources in the targets, so that literal and generated - // targets can be distinguished - srcs, err := a.loader.LoadTargets(currentPkg, allSrcs) - if err != nil { - return nil, err - } - for _, t := range targets { - err := t.setSources(srcs) - if err != nil { - return nil, err - } - } - // only extract the imports out of the literal sources, since taze can't - // see the contents of generated files - allLiteralSrcPaths, err := getAllLiteralSrcPaths(targets) - if err != nil { - return nil, err - } - imports, errs := extractAllImports(root, allLiteralSrcPaths) - for _, err := range errs { - // NotExist errors are caught and added to the generated dependency - // reports as missing source files. Only errors which are not NotExist - // errors should be reported. - if !os.IsNotExist(err) { - return nil, err - } - } - for _, t := range targets { - srcs := t.literalSourcePaths - for _, src := range srcs { - v, ok := imports[src] - if ok { - t.imports[src] = v - } else { - // The source was not found on disk during import extraction. - t.missingSources = append(t.missingSources, relativePathLabel(t.label, src)) - } - } - } - if err := a.resolveImports(ctx, currentPkg, root, targets); err != nil { - return nil, err - } - return targets, nil -} - -// resolveImports finds targets which provide the imported file or library -// for imports without known targets. -func (a *Analyzer) resolveImports(ctx context.Context, currentPkg, root string, targets map[string]*resolvedTarget) error { - for _, target := range targets { - var paths []string - needingResolution := make(map[string][]*tazeImport) - for _, imports := range target.imports { - handlingImports: - for _, imp := range imports { - resolvedPath := imp.resolvedPath() - for _, path := range pathWithExtensions(resolvedPath) { - if target.provides(path) { - imp.knownTarget = target.label - continue handlingImports - } - } - d, err := a.findExistingDepProvidingImport(ctx, root, target, imp) - if err != nil { - return err - } - if d == "" { - // A target providing the import was not found on the - // existing dependencies or in a comment. Use other - // heuristics. - paths = append(paths, resolvedPath) - needingResolution[resolvedPath] = append(needingResolution[resolvedPath], imp) - continue - } - imp.knownTarget = d - } - } - if len(needingResolution) == 0 { - continue - } - res, err := a.loader.LoadImportPaths(ctx, target.rule, currentPkg, root, paths) - if err != nil { - return err - } - for path, imports := range needingResolution { - if target, ok := res[path]; ok { - for _, imp := range imports { - imp.knownTarget = redirectedLabel(target) - } - } - } - } - return nil -} - -func pathWithExtensions(basename string) []string { - var paths []string - for _, ext := range extensions { - paths = append(paths, basename+ext) - } - return paths -} - -var ambientModuleDeclRE = regexp.MustCompile("(?m)^\\s*declare\\s+module\\s+['\"]([^'\"]+)['\"]\\s+\\{") - -// findExistingDepProvidingImport looks through a map of the existing deps to -// see if any of them provide the import in a way that can't be queried -// for. E.g. if the build rule has a "module_name" attribute or if one -// of the .d.ts sources has an ambient module declaration. -// -// If the import already has a knownTarget, findRuleProvidingImport will -// return the knownTarget. -func (a *Analyzer) findExistingDepProvidingImport(ctx context.Context, root string, rt *resolvedTarget, i *tazeImport) (string, error) { - if i.knownTarget != "" { - return i.knownTarget, nil - } - - // check if any of the existing deps declare a module_name that matches the import - for _, r := range rt.dependencies { - resolvedImportPath := resolveAgainstModuleRoot(r, i.importPath) - if resolvedImportPath == i.importPath { - continue - } - - // enumerate all the possible filepaths for the resolved import path, and - // compare against all the srcs - possibleImportPaths := possibleFilepaths(resolvedImportPath) - for _, src := range listAttribute(r, "srcs") { - for _, mi := range possibleImportPaths { - if mi == labelToPath(src) { - return r.GetName(), nil - } - } - } - } - - // check if any of the other sources or the souces of any of the deps are .d.ts - // files which have ambient module declarations - var allRules []*appb.Rule - for _, r := range rt.dependencies { - allRules = append(allRules, r) - } - allRules = append(allRules, rt.rule) - for _, r := range allRules { - for _, src := range listAttribute(r, "srcs") { - fp := filepath.Join(root, labelToPath(src)) - if !strings.HasSuffix(fp, ".d.ts") { - continue - } - - contents, err := platform.ReadFile(ctx, fp) - if err != nil { - return "", fmt.Errorf("error reading file looking for ambient module decls: %s", err) - } - - matches := ambientModuleDeclRE.FindAllStringSubmatch(string(contents), -1) - - // put all the ambient modules into a set - declaredModules := make(map[string]bool) - for _, match := range matches { - declaredModules[match[1]] = true - } - - // remove all the modules that were imported (ie all the modules that - // were being augmented/re-opened) - for _, mi := range parseImports(fp, contents) { - delete(declaredModules, mi.importPath) - } - - if declaredModules[i.importPath] { - debugf("found import %s in ambient module declaration in %s", i.importPath, r.GetName()) - return r.GetName(), nil - } - } - } - return "", nil -} - -// stripTSExtension removes TypeScript extensions from a file path. If no -// TypeScript extensions are present, the filepath is returned unaltered. -func stripTSExtension(path string) string { - for _, ext := range extensions { - if strings.HasSuffix(path, ext) { - return strings.TrimSuffix(path, ext) - } - } - return path -} - -// redirectedLabel looks in the target's tags for a tag starting with -// 'alt_dep=' followed by a label. If such a tag is found, the label is -// returned. Otherwise, the target's own label is returned. -func redirectedLabel(target *appb.Rule) string { - for _, tag := range listAttribute(target, "tags") { - if trimmedTag := strings.TrimPrefix(tag, "alt_dep="); trimmedTag != tag { - return trimmedTag - } - } - // No 'alt_dep=' tag was present on the target so no redirects need to occur. - return target.GetName() -} - -func labelToPath(label string) string { - _, pkg, file := edit.ParseLabel(label) - return platform.Normalize(filepath.Clean(filepath.Join(pkg, file))) -} - -// generateReports generates reports for each label in labels. -func (a *Analyzer) generateReports(labels []string, labelToTarget map[string]*resolvedTarget) ([]*arpb.DependencyReport, error) { - reports := make([]*arpb.DependencyReport, 0, len(labels)) - for _, label := range labels { - target, ok := labelToTarget[label] - if !ok { - // This case should never happen. - platform.Fatalf("target %s no longer loaded", label) - } - report, err := a.generateReport(target) - if err != nil { - return nil, err - } - reports = append(reports, report) - } - return reports, nil -} - -// generateReport generates a dependency report for a target. -// -// It adds imports for which no target could be found to unresolved imports. -// Imports which had locatable targets are added to the necessary dependency -// or missing dependency properties if the import was already present on target -// or the import was not already present respectively. -// -// Missing source files detected during import resolution are added to the -// reports. Dependencies which were present on the initial target but are not -// required are added to the unnecessary dependency array. -func (a *Analyzer) generateReport(target *resolvedTarget) (*arpb.DependencyReport, error) { - usedDeps := make(map[string]bool) - report := &arpb.DependencyReport{ - Rule: proto.String(target.label), - MissingSourceFile: target.missingSources, - } - for _, imports := range target.imports { - handlingImports: - for _, imp := range imports { - if imp.knownTarget == target.label { - continue - } - if imp.knownTarget == "" { - if strings.HasPrefix(imp.importPath, "goog:") { - // This feedback needs to be phrased this way since the - // updater.go relies on parsing the feedback strings to - // determine which 'goog:' imports to add. - report.Feedback = append(report.Feedback, - fmt.Sprintf( - "ERROR: %s:%d:%d: missing comment for 'goog:' import, "+ - "please add a trailing comment to the import. E.g.\n "+ - "import Bar from '%s'; // from //foo:bar", - imp.location.sourcePath, imp.location.line, imp.location.offset, imp.importPath)) - } - report.UnresolvedImport = append(report.UnresolvedImport, imp.resolvedPath()) - continue - } - - for _, dep := range target.deps() { - if edit.LabelsEqual(dep, imp.knownTarget, "") { - // fmt.Printf("%s provides %s\n", dep, imp.importPath) - usedDeps[dep] = true - report.NecessaryDependency = append(report.NecessaryDependency, imp.knownTarget) - continue handlingImports - } - } - report.MissingDependencyGroup = append(report.MissingDependencyGroup, &arpb.DependencyGroup{ - Dependency: []string{edit.ShortenLabel(imp.knownTarget, "")}, - ImportPath: []string{imp.importPath}, - }) - } - } - - var unusedDeps []string - for _, dep := range target.deps() { - if _, ok := usedDeps[dep]; !ok { - unusedDeps = append(unusedDeps, dep) - } - } - labelToRule, err := a.loader.LoadRules("", unusedDeps) - if err != nil { - return nil, err - } - for label, rule := range labelToRule { - switch class := rule.GetRuleClass(); class { - case "ts_declaration": - // TypeScript declarations might declare arbitrary global symbols, so it - // is impossible to detect reliably if the import is being used (without - // compiling, at least). Report that the rule has no explicit import as a - // warning, so that taze can decide to import remove or not based on a - // flag. - warning := fmt.Sprintf("WARNING: %s: keeping possibly used %s '%s'", rule.GetLocation(), class, label) - report.Feedback = append(report.Feedback, warning) - case "css_library": - // Similar to ts_declaration, taze can't reliably detect if css_library - // imports are being used, since taze can't currently parse @requirecss - // annotations. Unlike ts_declaration, there's no flag to remove them, so - // there's no need to report a warning. - default: - // The contents of generated files aren't visible, so taze can't discover - // the import statements/deps that they contain. To be safe, don't remove - // any unused deps, since they might be used by the generated file(s). - if len(target.generatedSourcePaths) == 0 { - report.UnnecessaryDependency = append(report.UnnecessaryDependency, label) - } - } - } - return report, nil -} - -// relativePathLabel converts src to a label for a path relative to the -// provided target. For example, a target '//foo/bar' and a src 'foo/bar/baz.ts' -// would result in a relative path label of '//foo/bar:baz.ts'. -func relativePathLabel(label, src string) string { - _, pkg, _ := edit.ParseLabel(label) - return fmt.Sprintf("//%s:%s", pkg, strings.TrimPrefix(src, pkg+"/")) -} - -// listAttribute retrieves the attribute from target with name. -func listAttribute(target *appb.Rule, name string) []string { - if a := attribute(target, name); a != nil { - return a.GetStringListValue() - } - return nil -} - -func stringAttribute(target *appb.Rule, name string) string { - if a := attribute(target, name); a != nil { - return a.GetStringValue() - } - return "" -} - -func attribute(target *appb.Rule, name string) *appb.Attribute { - for _, a := range target.GetAttribute() { - if a.GetName() == name { - return a - } - } - return nil -} - -func isGenerated(rule *appb.Rule) bool { - return stringAttribute(rule, "generator_name") != "" -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go deleted file mode 100644 index a1cb550a8a..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/analyze_test.go +++ /dev/null @@ -1,657 +0,0 @@ -package analyze - -import ( - "context" - "fmt" - "io/ioutil" - "os" - "path/filepath" - "reflect" - "strings" - "testing" - - "google3/net/proto2/go/proto" - "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform" - "google3/third_party/golang/cmp/cmp" - "google3/third_party/golang/cmp/cmpopts/cmpopts" - "google3/third_party/golang/godebug/pretty/pretty" - - appb "google3/third_party/bazel/src/main/protobuf/build_go_proto" - arpb "google3/third_party/bazel_rules/rules_typescript/ts_auto_deps/proto/analyze_result_go_proto" -) - -var ( - testTmpDir = os.Getenv("TEST_TMPDIR") -) - -func TestMain(m *testing.M) { - if err := createWorkspaceFile(); err != nil { - platform.Fatalf("failed to create WORKSPACE file: %q", err) - } - os.Exit(m.Run()) -} - -const ( - testDirectory = "a" -) - -type fakeTargetLoader struct { - targetsByLabels map[string]string - targetsByImportPaths map[string]string -} - -func newFakeTargetLoader() *fakeTargetLoader { - return &fakeTargetLoader{ - targetsByLabels: make(map[string]string), - targetsByImportPaths: make(map[string]string), - } -} - -func (bl *fakeTargetLoader) LoadRules(_ string, labels []string) (map[string]*appb.Rule, error) { - return bl.loadRules(bl.targetsByLabels, labels) -} - -func (bl *fakeTargetLoader) LoadTargets(_ string, labels []string) (map[string]*appb.Target, error) { - targets := make(map[string]*appb.Target) - for _, l := range labels { - if strings.Contains(l, ".") { - targets[l] = &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()} - } else { - targets[l] = &appb.Target{Type: appb.Target_RULE.Enum()} - } - } - return targets, nil -} - -func (bl *fakeTargetLoader) byLabel(label, value string) { - bl.targetsByLabels[label] = value -} - -func (bl *fakeTargetLoader) LoadImportPaths(_ context.Context, _ *appb.Rule, _, _ string, paths []string) (map[string]*appb.Rule, error) { - return bl.loadRules(bl.targetsByImportPaths, paths) -} - -func (bl *fakeTargetLoader) byImportPath(importPath, value string) { - bl.targetsByImportPaths[importPath] = value -} - -func (bl *fakeTargetLoader) loadRules(source map[string]string, keys []string) (map[string]*appb.Rule, error) { - targets := make(map[string]*appb.Rule) - for _, key := range keys { - value, ok := source[key] - if !ok { - return nil, nil - } - var target appb.Rule - if err := proto.UnmarshalText(strings.Trim(value, " \n\r\t"), &target); err != nil { - return nil, err - } - targets[key] = &target - } - return targets, nil -} - -type file struct { - path string - contents []string -} - -// testTarget represents a target with a label, a proto literal, and any import -// paths that should resolve to the target. -type testTarget struct { - label, protoLiteral string - importPaths []string -} - -func analyzeTargets(t *testing.T, labels []string, targets []*testTarget, files []*file) []*arpb.DependencyReport { - t.Helper() - for _, file := range files { - path := filepath.Join(testDirectory, file.path) - if err := createFile(path, file.contents...); err != nil { - t.Errorf("failed to create file %q: %q", file.path, err) - return nil - } - defer os.Remove(path) - } - for i, label := range labels { - labels[i] = fmt.Sprintf("//%s:%s", testDirectory, label) - } - loader := newFakeTargetLoader() - for _, t := range targets { - label := t.label - if !strings.HasPrefix(label, "//") { - label = fmt.Sprintf("//%s:%s", testDirectory, label) - } - r := fmt.Sprintf("name: %q\n%s", label, t.protoLiteral) - loader.byLabel(label, r) - for _, i := range t.importPaths { - loader.byImportPath(i, r) - } - } - r, err := New(loader).Analyze(context.Background(), testTmpDir, labels) - if err != nil { - t.Errorf("Analyze(%q): failed to generate reports: %q", labels, err) - return nil - } - if len(r) != len(labels) { - t.Errorf("Analyze(%q): got %d reports, wanted %d", labels, len(r), len(labels)) - return nil - } - return r -} - -func TestUnresolvedImports(t *testing.T) { - tests := []struct { - filepath, fileContents string - expectedImports []string - }{ - {"b/importer.ts", "import X from './path';", []string{"a/b/path"}}, - {"b/importer.ts", "import X from 'absolute/path';", []string{"absolute/path"}}, - {"b/importer.ts", "import X from '../../root';", []string{"root"}}, - {"b/importer.ts", "import X from './multi/subpath';", []string{"a/b/multi/subpath"}}, - {"b/importer.ts", "import X from '/rooted';", []string{"/rooted"}}, - {"b/importer.ts", "import X from 'absolute/path';\nimport Y from './path';", []string{"absolute/path", "a/b/path"}}, - {"b/importer.ts", "import X from 'some/path'; // from //target:location", nil}, - {"importer.d.ts", "import y from 'some/thing/missing';", []string{"some/thing/missing"}}, - } - for _, test := range tests { - r := analyzeTargets(t, []string{"a_lib"}, []*testTarget{ - {"a_lib", fmt.Sprintf(` - rule_class: "ts_library" - attribute: < - name: "srcs" - string_list_value: "//a:%s" - type: 5 - >`, test.filepath), nil}, - }, []*file{{test.filepath, []string{test.fileContents}}}) - if r == nil { - continue - } - if diff := pretty.Compare(r[0].GetUnresolvedImport(), test.expectedImports); diff != "" { - t.Errorf("Analyze(%q): failed to detect unresolved imports: (-got, +want)\n%s", test.fileContents, diff) - } - } -} - -func TestUnnecessaryDependencies(t *testing.T) { - tests := [][]string{ - []string{"/* nothing */"}, - } - for _, test := range tests { - r := analyzeTargets(t, []string{"a_lib"}, []*testTarget{ - {"a_lib", ` - rule_class: "ts_library" - attribute: < - name: "srcs" - string_list_value: "//a:importer.ts" - type: 5 - > - attribute: < - name: "deps" - string_list_value: "//a:b_lib" - type: 5 - >`, nil}, - {"b_lib", ` - rule_class: "ts_library"`, nil}, - }, []*file{{"t/importer.ts", test}}) - if r == nil { - continue - } - if diff := pretty.Compare(r[0].GetUnnecessaryDependency(), []string{"//a:b_lib"}); diff != "" { - t.Errorf("Analyze(%q): failed to detect unnecessary dependencies: (-got, +want)\n%s", test, diff) - } - } -} - -func TestNecessaryDependencies(t *testing.T) { - tests := [][]string{ - []string{"import x from 'b/target';"}, - []string{"// taze: x from //b:b_lib"}, - []string{"export x from 'b/target';"}, - } - for _, test := range tests { - r := analyzeTargets(t, []string{"a_lib"}, []*testTarget{ - {"a_lib", ` - rule_class: "ts_library" - attribute: < - type: 5 - name: "srcs" - string_list_value: "//a:importer.ts" - > - attribute: < - type: 5 - name: "deps" - string_list_value: "//b:b_lib" - >`, nil}, - {"//b:b_lib", ` - rule_class: "ts_library" - attribute: < - type: 5 - name: "srcs" - string_list_value: "//b:target.ts" - >`, []string{"b/target"}}, - }, []*file{{"importer.ts", test}}) - if r == nil { - continue - } - if diff := pretty.Compare(r[0].GetNecessaryDependency(), []string{"//b:b_lib"}); diff != "" { - t.Errorf("Analyze(%q): failed to detect necessary deps: (-got, +want)\n%s", test, diff) - } - } -} - -func TestMissingDependencies(t *testing.T) { - tests := []struct { - fileContents string - missingDeps []string - }{ - {"import x from 'b/c';\nimport y from 'angular';", []string{"//b/c:b_lib", "//third_party/javascript/typings/angular"}}, - {"import * as angular from 'angular';\ndeclare module 'angular' { /* reopen */ }", []string{"//third_party/javascript/typings/angular"}}, - } - for _, test := range tests { - r := analyzeTargets(t, []string{"a_lib"}, []*testTarget{ - {"a_lib", ` - rule_class: "ts_library" - attribute: < - type: 5 - name: "srcs" - string_list_value: "//a:x.ts" - >`, nil}, - {"//b/c:b_lib", ` - rule_class: "ts_library" - attribute: < - type: 5 - name: "srcs" - string_list_value: "//b/c:index.ts" - >`, []string{"b/c"}}, - {"//third_party/javascript/typings/angular:angular", ` - rule_class: "ts_declaration" - attribute: < - type: 5 - name: "srcs" - string_list_value: "//third_party/javascript/typings/angular:index.d.ts" - >`, []string{"angular"}}, - }, []*file{{"x.ts", []string{test.fileContents}}}) - if r == nil { - continue - } - if diff := pretty.Compare(missingDeps(r[0]), test.missingDeps); diff != "" { - t.Errorf("Analyze(%q): failed to detect missing dependencies: (-got, +want)\n%s", test.fileContents, diff) - } - } -} - -func TestMissingSourceFile(t *testing.T) { - r := analyzeTargets(t, []string{"a_lib"}, []*testTarget{ - {"a_lib", ` - rule_class: "ts_library" - attribute: < - type: 5 - name: "srcs" - string_list_value: "//a:f1.ts" - string_list_value: "//a:f2.ts" - string_list_value: "//a:p/f3.ts" - >`, nil}, - }, []*file{{"f1.ts", []string{"/* nothing */"}}}) - if r == nil { - t.FailNow() - } - if diff := pretty.Compare(r[0].GetMissingSourceFile(), []string{"//a:f2.ts", "//a:p/f3.ts"}); diff != "" { - t.Fatalf("Analyze: failed to detect missing source files: (-got, +want)\n%s", diff) - } -} - -func TestMultipleLabels(t *testing.T) { - r := analyzeTargets(t, []string{"a_lib", "b_lib"}, []*testTarget{ - {"a_lib", ` - rule_class: "ts_library" - attribute: < - type: 5 - name: "srcs" - string_list_value: "//a:a/importer.ts" - >`, nil}, - {"b_lib", ` - rule_class: "ts_library" - attribute: < - type: 5 - name: "srcs" - string_list_value: "//a:b/importer.ts" - >`, nil}, - }, []*file{ - {"a/importer.ts", []string{"import X from './path';"}}, - {"b/importer.ts", []string{"import X from './path';"}}, - }) - if r == nil { - t.FailNow() - } - tests := []struct { - label string - unresolvedImports []string - }{ - {"a_lib", []string{"a/a/path"}}, - {"b_lib", []string{"a/b/path"}}, - } - for i, test := range tests { - report := r[i] - if diff := pretty.Compare(report.GetUnresolvedImport(), test.unresolvedImports); diff != "" { - t.Errorf("Analyze(%q): failed to detect unresolved imports: (-got, +want)\n%s", test.label, diff) - } - } -} - -func TestMultipleSourceFiles(t *testing.T) { - r := analyzeTargets(t, []string{"a_lib"}, []*testTarget{ - {"a_lib", ` - rule_class: "ts_library" - attribute: < - type: 5 - name: "srcs" - string_list_value: "//a:importer.ts" - string_list_value: "//a:exporter.ts" - >`, nil}, - }, []*file{ - {"importer.ts", []string{"import {x} from 'a/exporter';"}}, - {"exporter.ts", []string{"export let x = 12;"}}, - }) - if r == nil { - t.FailNow() - } - if diff := pretty.Compare(missingDeps(r[0]), []string{}); diff != "" { - t.Fatalf("Analyze: failed to detect missing dependencies: (-got, +want)\n%s", diff) - } -} - -func TestRedirectTag(t *testing.T) { - r := analyzeTargets(t, []string{"a_lib"}, []*testTarget{ - {"a_lib", ` - rule_class: "ts_library" - attribute: < - type: 5 - name: "srcs" - string_list_value: "//a:x.ts" - >`, nil}, - {"dlib", ` - rule_class: "ts_library" - attribute: < - type: 5 - name: "deps" - string_list_value: "//b:clib" - >`, nil}, - {"clib", ` - rule_class: "ts_library" - attribute: < - type: 5 - name: "srcs" - string_list_value: "//clib:c.ts" - > - attribute: < - type: 5 - name: "tags" - string_list_value: "alt_dep=//d:dlib" - >`, []string{"b/c"}}, - }, []*file{{"x.ts", []string{"import x from 'b/c';"}}}) - if r == nil { - t.FailNow() - } - if diff := pretty.Compare(missingDeps(r[0]), []string{"//d:dlib"}); diff != "" { - t.Fatalf("Analyze: failed to detect missing dependencies: (-got, +want)\n%s", diff) - } -} - -func TestCircularImport(t *testing.T) { - r := analyzeTargets(t, []string{"a_lib"}, []*testTarget{ - {"a_lib", ` - rule_class: "ts_library" - attribute: < - type: 5 - name: "srcs" - string_list_value: "f1.ts" - string_list_value: "f2.ts" - >`, []string{"a/f1", "a/f2"}}, - }, []*file{ - {"f1.ts", []string{"import {x} from 'a/f1';", "export let y = x + 1;"}}, - {"f2.ts", []string{"import {y} from 'a/f2';", "export let x = y + 0;"}}, - }) - if r == nil { - t.FailNow() - } - if diff := pretty.Compare(missingDeps(r[0]), []string{}); diff != "" { - t.Fatalf("Analyze: failed to detect missing dependencies: (-got, +want)\n%s", diff) - } -} - -func TestListAttribute(t *testing.T) { - tests := []struct { - name string - value []string - }{ - {"srcs", []string{"a.ts", "b.ts"}}, - {"deps", []string{":core"}}, - } - result, err := createResult(` - target: < - type: 1 - rule: < - name: "//tmp:tmp" - rule_class: "ts_library" - attribute: < - type: 5 - name: "srcs" - string_list_value: "a.ts" - string_list_value: "b.ts" - > - attribute: < - type: 5 - name: "deps" - string_list_value: ":core" - > - > - >`) - if err != nil { - t.Fatalf("failed to create result: %q", err) - } - for _, test := range tests { - attrValue := listAttribute(result.GetTarget()[0].GetRule(), test.name) - if attrValue == nil { - t.Errorf("listAttribute(%q): failed to find attribute", test.name) - continue - } - if diff := pretty.Compare(attrValue, test.value); diff != "" { - t.Errorf("listAttribute(%q): failed to get correct attribute values: (-got, +want)\n%s", test.name, diff) - } - } -} - -func TestStringAttribute(t *testing.T) { - tests := []struct { - name, value string - }{ - {"module_name", "@angular/core"}, - {"module_root", ""}, - } - result, err := createResult(` - target: < - type: 1 - rule: < - name: "//tmp:tmp" - rule_class: "ts_library" - attribute: < - type: 5 - name: "module_name" - string_value: "@angular/core" - > - > - >`) - if err != nil { - t.Fatalf("failed to create result: %q", err) - } - for _, test := range tests { - attrValue := stringAttribute(result.GetTarget()[0].GetRule(), test.name) - if diff := pretty.Compare(attrValue, test.value); diff != "" { - t.Errorf("stringAttribute(%q): failed to get correct attribute values: (-got, +want)\n%s", test.name, diff) - } - } -} - -func TestSetSources(t *testing.T) { - tests := []struct { - name string - srcs []string - loadedSrcs map[string]*appb.Target - err error - expected map[string]*appb.Target - expectedLiteralPaths []string - expectedGeneratedPaths []string - }{ - { - "NoSources", - nil, - nil, - nil, - nil, - nil, - nil, - }, - { - "OneSource", - []string{"//a:file.ts"}, - map[string]*appb.Target{ - "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, - }, - nil, - map[string]*appb.Target{ - "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, - }, - []string{"a/file.ts"}, - nil, - }, - { - "ExtraSources", - []string{"//a:file.ts"}, - map[string]*appb.Target{ - "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, - "//b:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, - "//b:generator": &appb.Target{Type: appb.Target_RULE.Enum()}, - "//b:wiz": &appb.Target{Type: appb.Target_RULE.Enum()}, - }, - nil, - map[string]*appb.Target{ - "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, - }, - []string{"a/file.ts"}, - nil, - }, - { - "MultipleLiteralSources", - []string{"//a:file.ts", "//b:file.ts"}, - map[string]*appb.Target{ - "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, - "//b:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, - }, - nil, - map[string]*appb.Target{ - "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, - "//b:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, - }, - []string{"a/file.ts", "b/file.ts"}, - nil, - }, - { - "MultipleGeneratedSources", - []string{"//b:generator", "//b:wiz"}, - map[string]*appb.Target{ - "//b:generator": &appb.Target{Type: appb.Target_RULE.Enum()}, - "//b:wiz": &appb.Target{Type: appb.Target_RULE.Enum()}, - }, - fmt.Errorf("rule has generated sources - cannot determine dependencies"), - nil, - nil, - nil, - }, - { - "MixedSources", - []string{"//a:file.ts", "//b:file.ts", "//b:generator", "//b:wiz"}, - map[string]*appb.Target{ - "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, - "//b:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, - "//b:generator": &appb.Target{Type: appb.Target_RULE.Enum()}, - "//b:wiz": &appb.Target{Type: appb.Target_RULE.Enum()}, - }, - nil, - map[string]*appb.Target{ - "//a:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, - "//b:file.ts": &appb.Target{Type: appb.Target_SOURCE_FILE.Enum()}, - "//b:generator": &appb.Target{Type: appb.Target_RULE.Enum()}, - "//b:wiz": &appb.Target{Type: appb.Target_RULE.Enum()}, - }, - []string{"a/file.ts", "b/file.ts"}, - []string{"//b:generator", "//b:wiz"}, - }, - { - "MissingSources", - []string{"//a:file.ts"}, - nil, - fmt.Errorf("no source found for label %s", "//a:file.ts"), - nil, - nil, - nil, - }, - } - - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - rt := &resolvedTarget{ - rule: &appb.Rule{ - Attribute: []*appb.Attribute{ - &appb.Attribute{ - Name: proto.String("srcs"), - Type: appb.Attribute_STRING_LIST.Enum(), - StringListValue: test.srcs, - }, - }, - }, - sources: make(map[string]*appb.Target), - } - - err := rt.setSources(test.loadedSrcs) - if !reflect.DeepEqual(err, test.err) { - t.Errorf("got err %q, expected %q", err, test.err) - } - - if diff := cmp.Diff(rt.sources, test.expected, cmpopts.EquateEmpty(), cmp.Comparer(proto.Equal)); err == nil && diff != "" { - t.Errorf("failed to set correct sources: (-got, +want)\n%s", diff) - } - }) - } -} - -func missingDeps(report *arpb.DependencyReport) []string { - var deps []string - for _, group := range report.GetMissingDependencyGroup() { - deps = append(deps, group.GetDependency()...) - } - return deps -} - -func createResult(str string) (*appb.QueryResult, error) { - var result appb.QueryResult - return &result, proto.UnmarshalText(strings.Trim(str, " \n\r\t"), &result) -} - -func createFile(path string, content ...string) error { - if !filepath.IsAbs(path) { - path = filepath.Join(filepath.Dir(testTmpDir), path) - } - if err := os.MkdirAll(filepath.Dir(path), 0777); err != nil { - return err - } - return ioutil.WriteFile(path, []byte(strings.Join(content, "\n")), 0666) -} - -// This method creates a WORKSPACE file in the root of the Blaze test -// directory. This allows the tests to resolve the root path of the -// workspace by looking for the WORKSPACE file on disk. -func createWorkspaceFile() error { - path := filepath.Join(filepath.Dir(testTmpDir), "WORKSPACE") - return ioutil.WriteFile(path, []byte("workspace(name = 'foo')"), 0666) -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/imports.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/imports.go deleted file mode 100644 index 909e645279..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/imports.go +++ /dev/null @@ -1,150 +0,0 @@ -package analyze - -import ( - "io/ioutil" - "path/filepath" - "regexp" - "strings" - "sync" - - "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform" - "github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace" -) - -// tazeImport represents a single import in a TypeScript source. -type tazeImport struct { - // importPath can be an ES6 path ('./foo/bar'), but also a namespace ('goog:...'). - // This is the import path as it appears in the TypeScript source. - importPath string - // knownTarget is the (fully qualified) blaze target providing importPath. - // It's either found by locateMissingTargets or taken from a taze comment. - knownTarget string - location sourceLocation -} - -// resolvedPath is the path to the import relative to the root of the -// workspace. For example, an import of './foo' in the 'bar/baz' directory -// would have a path from root of 'bar/baz/foo'. -// -// Absolute imports have no resolvedPath since the physical location of -// these imports depends on the dependencies of the target the source -// location is a member of. For example, an import of 'foo/bar' would have -// no resolvedPath. -func (i *tazeImport) resolvedPath() string { - if strings.HasPrefix(i.importPath, "./") || strings.HasPrefix(i.importPath, "../") { - // If the import is relative to the source location, use the source - // location to form a "canonical" path from the root. - return platform.Normalize(filepath.Clean(filepath.Join(filepath.Dir(i.location.sourcePath), i.importPath))) - } else if trim := strings.TrimPrefix(i.importPath, workspace.Name()+"/"); trim != i.importPath { - return trim - } - // The import is an absolute import and therefore does not have a definite - // resolved path. - return i.importPath -} - -// sourceLocation points to a position in a source file. -type sourceLocation struct { - // Workspace root relative source path. - sourcePath string - // offset and length are byte offsets, line is the 1-indexed source line (considering only \n as breaks). - offset, length, line int -} - -// extractAllImports extracts the TypeScript imports from paths. -// -// paths should be relative to root. The root will be joined to each path -// to construct a physical path to each file. -func extractAllImports(root string, paths []string) (map[string][]*tazeImport, []error) { - debugf("extracting imports from TypeScript files relative to %q: %q", root, paths) - allImports := make(map[string][]*tazeImport) - var ( - errors []error - mutex sync.Mutex - group sync.WaitGroup - ) - for _, path := range paths { - group.Add(1) - go func(path string) { - defer group.Done() - imports, err := extractImports(root, path) - // Lock the mutex to prevent concurrent writes. - mutex.Lock() - defer mutex.Unlock() - if err != nil { - errors = append(errors, err) - return - } - allImports[path] = imports - }(path) - } - group.Wait() - return allImports, errors -} - -// extractImports extracts the TypeScript imports from a single file. path -// should be a path from the root to the file. -func extractImports(root, path string) ([]*tazeImport, error) { - d, err := ioutil.ReadFile(filepath.Join(root, path)) - if err != nil { - return nil, err - } - return parseImports(path, d), nil -} - -const ( - tazeFrom = `^[ \t]*//[ \t]+taze:[^\n]*?from[ \t]+(?P//\S+)$` - importPreface = `^[ \t]*(?:import|export)\b\s*` - wildcardTerm = `\*(?:\s*as\s+\S+)?` // "as..." is optional to match exports. - identifiersClause = `(?:\{[^}]*\}|\S+|` + wildcardTerm + `)` - symbolsTerm = `(?:` + identifiersClause + `(?:,\s*` + identifiersClause + `)?\s*\bfrom\b\s*)?` - url = `['"](?P[^'";]+)['"]\s*;?` - namespaceComment = `(?:\s*//[ \t]*from[ \t]+(?P//\S+)$)?` -) - -var importRE = regexp.MustCompile("(?ms)" + - "(?:" + tazeFrom + ")|" + - "(?:" + importPreface + symbolsTerm + url + namespaceComment + ")") - -// parseImports scans contents for imports (ES6 modules, taze comments), and -// returns a list of tazeImports. knownTarget is already filled in for imports -// that have taze comments. -func parseImports(sourcePath string, contents []byte) []*tazeImport { - var imports []*tazeImport - lastOffset := 0 - line := 1 - column := 1 - for _, matchIndices := range importRE.FindAllSubmatchIndex(contents, -1) { - imp := &tazeImport{} - imports = append(imports, imp) - // matchIndices[0, 1]: full RE match - imp.location.sourcePath = sourcePath - for lastOffset < matchIndices[1] { - // Iterate to the *end* of the import statement. - // The taze comment must be placed at the end of the "import" statement. - // This offset has to be exactly the end of the import for taze later on - // to insert the '// from' comment in the correct line. - column++ - if contents[lastOffset] == '\n' { - line++ - column = 1 - } - lastOffset++ - } - imp.location.offset = matchIndices[0] - imp.location.length = matchIndices[1] - matchIndices[0] - imp.location.line = line - if matchIndices[2] >= 0 { - // matchIndices[2, 3]: Target for a // taze: ... from ... comment. - imp.knownTarget = string(contents[matchIndices[2]:matchIndices[3]]) - } else { - // matchIndices[4, 5]: URL in import x from 'url'; - imp.importPath = string(contents[matchIndices[4]:matchIndices[5]]) - } - if matchIndices[6] >= 0 { - // matchIndices[6, 7]: Target for a // from comment - imp.knownTarget = string(contents[matchIndices[6]:matchIndices[7]]) - } - } - return imports -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/imports_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/imports_test.go deleted file mode 100644 index 65d13d5565..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/imports_test.go +++ /dev/null @@ -1,85 +0,0 @@ -package analyze - -import ( - "fmt" - "testing" - - "google3/third_party/golang/godebug/pretty/pretty" -) - -func TestParseImports(t *testing.T) { - tests := []struct{ text, importPath, knownTarget string }{ - // Imports - {"import {a} from 'named';", "named", ""}, - {"code before;\n import {a} from 'before after'; code after", - "before after", ""}, - {"import A from 'default';", "default", ""}, - {"import A$X from 'default';", "default", ""}, - {"import {x as $} from 'default';", "default", ""}, - {"import ü from 'default';", "default", ""}, - {"import * as prefix from 'wildcard prefixed';", "wildcard prefixed", ""}, - {" \t import {A, B as C} from 'renamed';", "renamed", ""}, - {"import 'sideeffect import';", "sideeffect import", ""}, - {"import\n {A\n, B} from 'newlines';", "newlines", ""}, - {"import*as prefix from'no whitespace';", "no whitespace", ""}, - {"import Symbol from 'goog:some.Symbol'; // from //target:location", - "goog:some.Symbol", "//target:location"}, - {"import Symbol from 'goog:some.Symbol';//from //target:location", - "goog:some.Symbol", "//target:location"}, - {"import {a} from 'missing semi'", "missing semi", ""}, - {"import {a} from 'missing semi' // from //target:location", - "missing semi", "//target:location"}, - {"import A, {B, C} from 'mixed';", "mixed", ""}, - {"import A, * as B from 'mixed';", "mixed", ""}, - {"import * as B, A from 'inverted mixed';", "inverted mixed", ""}, - // Exports - {"export * from 'wildcard';", "wildcard", ""}, - {"export {a, b} from 'named';", "named", ""}, - {"export {} from 'empty import';", "empty import", ""}, - {"export {a as b} from 'renamed';", "renamed", ""}, - {"export\n {A\n, B} from 'newlines';", "newlines", ""}, - {"export*from'no whitespace';", "no whitespace", ""}, - {"export{}from'no whitespace';", "no whitespace", ""}, - // Comments - {"x;\n// taze: ng from //some/global:rule\ny;", "", "//some/global:rule"}, - {"// taze: ng from //foo/bar from //some/global:rule", "", "//some/global:rule"}, - } - - for i, tst := range tests { - imports := parseImports(fmt.Sprintf("test%d.ts", i), []byte(tst.text)) - if len(imports) != 1 { - t.Errorf("parseImports(%q): got %d import(s), want 1", tst.text, len(imports)) - continue - } - imp := imports[0] - if imp.importPath != tst.importPath { - t.Errorf("parseImports(%q): got %q, want %q", tst.text, imp.importPath, tst.importPath) - } - if imp.knownTarget != tst.knownTarget { - t.Errorf("parseImports(%q): got %q, want %q", tst.text, imp.knownTarget, tst.knownTarget) - } - } -} - -func TestParseImportsSourceLocation(t *testing.T) { - tests := []struct { - text string - expectedSourceLocation sourceLocation - }{ - {"import {a} from 'named';", sourceLocation{line: 1, offset: 0, length: 24}}, - {"\n\timport {a} from 'named';", sourceLocation{line: 2, offset: 1, length: 25}}, - } - for i, tst := range tests { - sourcePath := fmt.Sprintf("test%d.ts", i) - imports := parseImports(sourcePath, []byte(tst.text)) - if len(imports) != 1 { - t.Errorf("parseImports(%q): got %d import(s), want 1", tst.text, len(imports)) - continue - } - imp := imports[0] - tst.expectedSourceLocation.sourcePath = sourcePath - if diff := pretty.Compare(imp.location, tst.expectedSourceLocation); diff != "" { - t.Errorf("parseImports(%q): expected different source location: (-got, +want)\n%s", tst.text, diff) - } - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go deleted file mode 100644 index bd4b0a55a5..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader.go +++ /dev/null @@ -1,741 +0,0 @@ -package analyze - -import ( - - "bytes" - "context" - "fmt" - "os/exec" - "path/filepath" - "strings" - "time" - - "google3/net/proto2/go/proto" - "google3/third_party/bazel_buildifier/edit/edit" - "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform" - "github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace" - - appb "google3/third_party/bazel/src/main/protobuf/build_go_proto" -) - -// pkgCacheEntry represents a set of loaded rules and a mapping from alias -// to rules from a package. -type pkgCacheEntry struct { - // rules is all rules in a package. - rules []*appb.Rule - // aliases is a map from an alias label to the actual rule of the alias. - aliases map[string]*appb.Rule -} - -// QueryBasedTargetLoader uses Blaze query to load targets from BUILD files. -type QueryBasedTargetLoader struct { - workdir string - blazeBinary string - - // pkgCache is a mapping from a package to all of the rules in said - // package along with a map from aliases to actual rules. - // - // Keys are of the form of "|" where visibility - // is the package that rules in package must be visible to and package - // is the actual package that has been loaded and cached. - // - // Since a new target loader is constructed for each directory being - // analyzed in the "-recursive" case, these caches will be garbage - // collected between directories. - pkgCache map[string]*pkgCacheEntry - // labelCache is a mapping from a label to its loaded target. - labelCache map[string]*appb.Target - - // queryCount is the total number of queries executed by the target loader. - queryCount int -} - -// NewQueryBasedTargetLoader constructs a new QueryBasedTargetLoader rooted -// in workdir. -func NewQueryBasedTargetLoader(workdir, blazeBinary string) *QueryBasedTargetLoader { - return &QueryBasedTargetLoader{ - workdir: workdir, - blazeBinary: blazeBinary, - - pkgCache: make(map[string]*pkgCacheEntry), - labelCache: make(map[string]*appb.Target), - } -} - -// LoadRules uses Blaze query to load rules associated with labels from BUILD -// files. -func (q *QueryBasedTargetLoader) LoadRules(pkg string, labels []string) (map[string]*appb.Rule, error) { - labelToTarget, err := q.LoadTargets(pkg, labels) - if err != nil { - return nil, err - } - - labelToRule := make(map[string]*appb.Rule) - for _, label := range labels { - target := labelToTarget[label] - if target.GetType() == appb.Target_RULE { - labelToRule[label] = target.GetRule() - } else { - return nil, fmt.Errorf("target %s contains object of type %q instead of type %q", label, target.GetType(), appb.Target_RULE) - } - } - return labelToRule, nil -} - -// LoadTargets uses Blaze query to load targets associated with labels from BUILD -// files. -func (q *QueryBasedTargetLoader) LoadTargets(pkg string, labels []string) (map[string]*appb.Target, error) { - var labelCacheMisses []string - for _, label := range labels { - if _, ok := q.labelCache[labelCacheKey(pkg, label)]; !ok { - labelCacheMisses = append(labelCacheMisses, label) - } - } - if len(labelCacheMisses) > 0 { - var queries []string - if pkg == "" { - queries = labelCacheMisses - } else { - for _, label := range labelCacheMisses { - queries = append(queries, fmt.Sprintf("visible(%s:*, %s)", pkg, label)) - } - } - r, err := q.batchQuery(queries) - if err != nil { - return nil, err - } - for _, target := range r.GetTarget() { - label, err := q.targetLabel(target) - if err != nil { - return nil, err - } - q.labelCache[labelCacheKey(pkg, label)] = target - } - for _, label := range labelCacheMisses { - key := labelCacheKey(pkg, label) - if _, ok := q.labelCache[key]; !ok { - // Set to nil so the result exists in the cache and is not - // loaded again. If the nil is not added at the appropriate - // cache key, LoadLabels will attempt to load it again when - // next requested instead of getting a cache hit. - q.labelCache[key] = nil - } - } - } - labelToTarget := make(map[string]*appb.Target) - for _, label := range labels { - labelToTarget[label] = q.labelCache[labelCacheKey(pkg, label)] - } - return labelToTarget, nil -} - -func labelCacheKey(currentPkg, label string) string { - return currentPkg + "^" + label -} - -// possibleFilepaths generates the possible filepaths for the ts import path. -// e.g. google3/foo/bar could be foo/bar.ts or foo/bar.d.ts or foo/bar/index.ts, etc. -// Also handles special angular import paths (.ngfactory and .ngsummary). -func possibleFilepaths(importPath string) []string { - // If the path has a suffix of ".ngfactory" or ".ngsummary", it might - // be an Angular AOT generated file. We can infer the target as we - // infer its corresponding ngmodule target by simply stripping the - // ".ngfactory" / ".ngsummary" suffix - importPath = strings.TrimSuffix(strings.TrimSuffix(importPath, ".ngsummary"), ".ngfactory") - importPath = strings.TrimPrefix(importPath, workspace.Name()+"/") - - var possiblePaths []string - - possiblePaths = append(possiblePaths, pathWithExtensions(importPath)...) - possiblePaths = append(possiblePaths, pathWithExtensions(filepath.Join(importPath, "index"))...) - - return possiblePaths -} - -// LoadImportPaths uses Blaze Query to load targets associated with import -// paths from BUILD files. -func (q *QueryBasedTargetLoader) LoadImportPaths(ctx context.Context, targetToAnalyze *appb.Rule, currentPkg, workspaceRoot string, paths []string) (map[string]*appb.Rule, error) { - debugf("loading imports visible to %q relative to %q: %q", currentPkg, workspaceRoot, paths) - results := make(map[string]*appb.Rule) - - addedPaths := make(map[string]bool) - var possibleFilePaths []string - possiblePathToPaths := make(map[string][]string) - // for all the normalized typescript import paths, generate all the possible - // corresponding file paths - for _, path := range paths { - if strings.HasPrefix(path, "goog:") { - // 'goog:' imports are resolved using an sstable. - results[path] = nil - continue - } - if strings.HasPrefix(path, "@") { - continue - } - - if _, ok := addedPaths[path]; !ok { - addedPaths[path] = true - - // there isn't a one to one mapping from ts import paths to file - // paths, so look for all the possible file paths - pfs := possibleFilepaths(path) - possibleFilePaths = append(possibleFilePaths, pfs...) - // map the file paths back to the import paths so we can map the file - // labels back to the import paths - for _, pf := range pfs { - possiblePathToPaths[pf] = append(possiblePathToPaths[pf], path) - } - } - } - - // query for all the possible filepaths, to determine which ones are real - r, err := q.batchQuery(possibleFilePaths) - if err != nil { - return nil, err - } - var fileLabels, packages []string - fileToGeneratorLabel := make(map[string]string) - pathToLabels := make(map[string][]string) - // get the labels for all the files which exist - for _, target := range r.GetTarget() { - label, err := q.fileLabel(target) - if err != nil { - return nil, err - } - switch target.GetType() { - case appb.Target_GENERATED_FILE: - file := target.GetGeneratedFile() - generator := file.GetGeneratingRule() - label = file.GetName() - - fileLabels = append(fileLabels, label) - _, pkg, _ := edit.ParseLabel(label) - packages = append(packages, pkg) - // a generated file can be included as a source by referencing the label - // of the generated file, or the label of the generating rule, so check - // for both - fileToGeneratorLabel[labelToPath(label)] = labelToPath(generator) - // map file label back to the import paths so that they can be looked for - // in the srcs of the rules - for _, path := range possiblePathToPaths[labelToPath(label)] { - pathToLabels[path] = append(pathToLabels[path], label) - } - case appb.Target_SOURCE_FILE: - fileLabels = append(fileLabels, label) - _, pkg, _ := edit.ParseLabel(label) - packages = append(packages, pkg) - // map file label back to the import paths so that they can be looked for - // in the srcs of the rules - for _, path := range possiblePathToPaths[labelToPath(label)] { - pathToLabels[path] = append(pathToLabels[path], label) - } - } - } - - // load all the rules in all the packages files were found in, so we can look - // for aliases and reexporting libraries in the same package - pkgToAllRules, pkgToActualToAlias, err := q.loadAllRulesInPackages("", packages) - if err != nil { - return nil, err - } - - for _, path := range paths { - // look up the corresponding file label(s) for the normalized typescript - // import path - for _, label := range pathToLabels[path] { - _, pkg, _ := edit.ParseLabel(label) - // get the file path that corresponds to the normalized typescript import - // path - filePath := labelToPath(label) - allRules := pkgToAllRules[pkg] - actualToAlias := pkgToActualToAlias[pkg] - var matchingDeps []*appb.Rule - for _, candidate := range typeScriptRules(allRules) { - // check if the rule has the file or the generator of the file in its - // srcs - possibleSources := []string{filePath} - if gl, ok := fileToGeneratorLabel[filePath]; ok { - possibleSources = append(possibleSources, gl) - } - provides, err := q.ruleProvidesImports(candidate, srcsContainsAnyFilePath(possibleSources)) - if err != nil { - return nil, err - } - if !provides { - continue - } - - if alias, ok := actualToAlias[candidate.GetName()]; ok { - candidate = alias - } - matchingDeps = append(matchingDeps, candidate) - } - if len(matchingDeps) > 0 { - canonicalRule, err := q.chooseCanonicalDep(currentPkg, targetToAnalyze, matchingDeps) - if err != nil { - return nil, err - } - results[path] = canonicalRule - } - } - } - - - return results, nil -} - -// chooseCanonicalDep chooses between rules which include the imported file as -// a source (ie the rule that includes the file as a src, and any reexporting -// libraries). -// -// It filters the rules in a 3 stage process: -// -// 1. If only one of the rules is visible, choose that one, since the rule -// creator intended it to be imported. -// -// 2. If all or none of the rules are visible, choose the rule that directly -// includes the file as a src, since that reduces the chance of introducing -// circular dependencies. -// -// 3. Choose the rule that is already included as a dep. -func (q *QueryBasedTargetLoader) chooseCanonicalDep(currentPkg string, targetToAnalyze *appb.Rule, deps []*appb.Rule) (*appb.Rule, error) { - // check for visibility - filterForVisibility := func(deps []*appb.Rule) ([]*appb.Rule, error) { - var labels []string - for _, d := range deps { - labels = append(labels, d.GetName()) - } - visibleDepsMap, err := q.LoadRules(currentPkg, labels) - if err != nil { - return nil, err - } - - var visibleDeps []*appb.Rule - for _, d := range visibleDepsMap { - if d != nil { - visibleDeps = append(visibleDeps, d) - } - } - - return visibleDeps, nil - } - - // if there's a visible reexporting lib and a visible lib with the src, favor - // the lib with the src, to reduce the chance of introducing a circular - // dependency - filterForBaseLibs := func(deps []*appb.Rule) ([]*appb.Rule, error) { - var baseDeps []*appb.Rule - for _, d := range deps { - if !isReexportingLib(d) { - baseDeps = append(baseDeps, d) - } - } - - return baseDeps, nil - } - - // favor the dep that's already on the rule - filterForExistingDeps := func(deps []*appb.Rule) ([]*appb.Rule, error) { - var existingDeps []*appb.Rule - for _, d := range deps { - for _, existing := range listAttribute(targetToAnalyze, "deps") { - if d.GetName() == existing { - existingDeps = append(existingDeps, d) - } - } - } - - return existingDeps, nil - } - - filters := []func(deps []*appb.Rule) ([]*appb.Rule, error){ - filterForVisibility, - filterForBaseLibs, - filterForExistingDeps, - } - - // for each filter, return if it returned a single rule, narrow the set of deps if - // it discarded some, but not all, and try the full set with the next filter if it - // discarded them all - for _, filter := range filters { - filteredDeps, err := filter(deps) - if err != nil { - return nil, err - } - if len(filteredDeps) == 1 { - return filteredDeps[0], nil - } else if len(filteredDeps) > 0 { - deps = filteredDeps - } - } - - // no filter got down to a single rule, just return the first - return deps[0], nil -} - -// ruleLabel returns the label for a target which is a rule. Returns an error if -// target is not a rule. -func (q *QueryBasedTargetLoader) ruleLabel(target *appb.Target) (string, error) { - if t := target.GetType(); t != appb.Target_RULE { - return "", fmt.Errorf("target contains object of type %q instead of type %q", t, appb.Target_RULE) - } - return target.GetRule().GetName(), nil -} - -// fileLabel returns the label for a target which is a file. Returns an error if -// target is not a source file or a generated file. -func (q *QueryBasedTargetLoader) fileLabel(target *appb.Target) (string, error) { - switch t := target.GetType(); t { - case appb.Target_GENERATED_FILE: - return target.GetGeneratedFile().GetName(), nil - case appb.Target_SOURCE_FILE: - return target.GetSourceFile().GetName(), nil - default: - return "", fmt.Errorf("target contains object of type %q instead of type %q or %q", t, appb.Target_SOURCE_FILE, appb.Target_GENERATED_FILE) - } -} - -// targetLabel returns the label for a target. Returns an error if target is an -// unknown type. -func (q *QueryBasedTargetLoader) targetLabel(target *appb.Target) (string, error) { - switch t := target.GetType(); t { - case appb.Target_GENERATED_FILE: - return target.GetGeneratedFile().GetName(), nil - case appb.Target_SOURCE_FILE: - return target.GetSourceFile().GetName(), nil - case appb.Target_RULE: - return target.GetRule().GetName(), nil - case appb.Target_PACKAGE_GROUP: - return target.GetPackageGroup().GetName(), nil - case appb.Target_ENVIRONMENT_GROUP: - return target.GetEnvironmentGroup().GetName(), nil - default: - return "", fmt.Errorf("target contains object of unknown type %q", t) - } -} - - -// batchQuery runs a set of queries with a single call to Blaze query and the -// '--keep_going' flag. -func (q *QueryBasedTargetLoader) batchQuery(queries []string) (*appb.QueryResult, error) { - // Join all of the queries with a '+' character according to Blaze's - // syntax for running multiple queries. - return q.query("--keep_going", strings.Join(queries, "+")) -} - -func (q *QueryBasedTargetLoader) query(args ...string) (*appb.QueryResult, error) { - n := len(args) - if n < 1 { - return nil, fmt.Errorf("expected at least one argument") - } - query := args[n-1] - if query == "" { - // An empty query was provided so return an empty result without - // making a call to Blaze. - return &appb.QueryResult{}, nil - } - var stdout, stderr bytes.Buffer - args = append([]string{"query", "--output=proto"}, args...) - q.queryCount++ - debugf("executing query #%d in %q: %s %s %q", q.queryCount, q.workdir, q.blazeBinary, strings.Join(args[:len(args)-1], " "), query) - cmd := exec.Command(q.blazeBinary, args...) - cmd.Dir = q.workdir - cmd.Stdout = &stdout - cmd.Stderr = &stderr - startTime := time.Now() - if err := cmd.Run(); err != nil { - // Exit status 3 is a direct result of one or more queries in a set of - // queries not returning a result while running with the '--keep_going' - // flag. Since one query failing to return a result does not hinder the - // other queries from returning a result, ignore these errors. - // - // Herb prints "printing partial results" to indicate the same as blaze's - // exit status 3 - if err.Error() != "exit status 3" && !strings.Contains(stderr.String(), "printing partial results") { - // The error provided as a result is less useful than the contents of - // stderr for debugging. - return nil, fmt.Errorf(stderr.String()) - } - } - debugf("query #%d took %v", q.queryCount, time.Since(startTime)) - var result appb.QueryResult - if err := proto.Unmarshal(stdout.Bytes(), &result); err != nil { - return nil, err - } - return &result, nil -} - - -// ruleProvidesImports checks if the rule directly provides the import, or if -// it's a reexporting lib, if one of its deps does. -func (q *QueryBasedTargetLoader) ruleProvidesImports(rule *appb.Rule, srcMatcher func(rule *appb.Rule) bool) (bool, error) { - if srcMatcher(rule) { - return true, nil - } - - if !isReexportingLib(rule) { - return false, nil - } - - // if the rule is a reexporting library, load all the rules that the rule - // reexports, and check if they provide the imported paths. This only handles - // one level of reexport. - _, pkg, _ := edit.ParseLabel(rule.GetName()) - // TODO(alexeagle): Batch calls to LoadLabels. Batching calls to ruleProvidesImport - // would also be required. - exportedRules, err := q.LoadRules(pkg, exportedLabels(rule)) - if err != nil { - return false, err - } - for _, exportedRule := range exportedRules { - if srcMatcher(exportedRule) { - return true, nil - } - } - - return false, nil -} - -// exportedLabels returns the labels exported by rule. Exported labels are the -// deps of a rule if the rule is an alias. -func exportedLabels(rule *appb.Rule) []string { - var exported []string - if isReexportingLib(rule) { - exported = append(exported, listAttribute(rule, "deps")...) - } - return exported -} - -// isReexportingLib checks if a library has no sources, which the TS rules use a -// way to mark a library as an alias. -func isReexportingLib(rule *appb.Rule) bool { - return len(listAttribute(rule, "srcs")) == 0 -} - -// srcsContainsPath returns a function, which takes a rule, which returns true -// if the rule has a src which matches one of the possible filepaths for the -// provided typescript import path. -func srcsContainsPath(path string) func(rule *appb.Rule) bool { - return func(rule *appb.Rule) bool { - resolvedImportPath := resolveAgainstModuleRoot(rule, path) - - // enumerate all the possible filepaths for the resolved import path, and - // compare against all the srcs - possibleImportPaths := possibleFilepaths(resolvedImportPath) - for _, src := range listAttribute(rule, "srcs") { - for _, mi := range possibleImportPaths { - if mi == labelToPath(src) { - return true - } - } - } - - return false - } -} - -// srcsContainsFilePath returns a function which takes a rule, which returns -// true if the rule has a src which, if pathified, equals one of the filePaths. -func srcsContainsAnyFilePath(filePaths []string) func(rule *appb.Rule) bool { - return func(rule *appb.Rule) bool { - for _, filePath := range filePaths { - for _, src := range listAttribute(rule, "srcs") { - if filePath == labelToPath(src) { - return true - } - } - } - - return false - } -} - -// loadAllRulesInPackages loads all rules in all packages. -// -// If an alias or aliases are present in the package, the rules for each alias' -// 'actual' attribute are loaded and a map from each 'actual' rule to its alias -// rule is constructed. -// -// loadAllRulesInPackages returns two maps. The first map is a map from a package -// label to all of the rules in the package. The second map is a map from a -// package to the map of 'actual' rules to alias rules for that package. -func (q *QueryBasedTargetLoader) loadAllRulesInPackages(currentPkg string, packages []string) (map[string][]*appb.Rule, map[string]map[string]*appb.Rule, error) { - var missingPackages []string - for _, pkg := range packages { - if _, ok := q.pkgCache[pkgCacheKey(currentPkg, pkg)]; !ok { - missingPackages = append(missingPackages, pkg) - } - } - if len(missingPackages) > 0 { - // Load any packages not already available in the cache. - var queries []string - pkgToRules := make(map[string][]*appb.Rule) - pkgToAliasToRule := make(map[string]map[string]*appb.Rule) - for _, pkg := range missingPackages { - if currentPkg != "" { - queries = append(queries, fmt.Sprintf("visible(%s:*, %s:*)", currentPkg, pkg)) - } else { - queries = append(queries, fmt.Sprintf("%s:*", pkg)) - } - pkgToAliasToRule[pkg] = make(map[string]*appb.Rule) - } - r, err := q.batchQuery(queries) - if err != nil { - return nil, nil, err - } - actualToAlias := make(map[string]*appb.Rule) - pkgToActuals := make(map[string][]string) - for _, target := range r.GetTarget() { - if target.GetType() == appb.Target_RULE { - rule := target.GetRule() - _, pkg, _ := edit.ParseLabel(rule.GetName()) - if rule.GetRuleClass() == "alias" { - // if the package contains an alias, derefence it (but only one layer - // of aliases) - actual := stringAttribute(rule, "actual") - if actual == "" { - // probably an alias with a select statement as the value for - // 'actual' - just ignore - platform.Infof(`alias %q has non-string "actual" attribute`, rule.GetName()) - continue - } - actualToAlias[actual] = rule - pkgToActuals[pkg] = append(pkgToActuals[pkg], actual) - } else { - pkgToRules[pkg] = append(pkgToRules[pkg], rule) - } - } - } - for pkg, actuals := range pkgToActuals { - // Load all the aliased targets, checking if they're visible from the - // package where they're aliased from - resolvedActuals, err := q.LoadTargets(pkg, actuals) - if err != nil { - return nil, nil, err - } - for actual, target := range resolvedActuals { - // aliases can be for anything, but deps can only be rules, so ignore - // other aliased targets - if target.GetType() != appb.Target_RULE { - continue - } - - rule := target.GetRule() - alias := actualToAlias[actual] - _, pkg, _ := edit.ParseLabel(alias.GetName()) - pkgToAliasToRule[pkg][rule.GetName()] = alias - pkgToRules[pkg] = append(pkgToRules[pkg], rule) - } - } - for _, pkg := range missingPackages { - q.pkgCache[pkgCacheKey(currentPkg, pkg)] = &pkgCacheEntry{ - rules: pkgToRules[pkg], - aliases: pkgToAliasToRule[pkg], - } - } - } - - pkgToRules := make(map[string][]*appb.Rule) - pkgToRuleToAlias := make(map[string]map[string]*appb.Rule) - for _, pkg := range packages { - cacheEntry := q.pkgCache[pkgCacheKey(currentPkg, pkg)] - pkgToRules[pkg] = cacheEntry.rules - pkgToRuleToAlias[pkg] = cacheEntry.aliases - } - - return pkgToRules, pkgToRuleToAlias, nil -} - -func pkgCacheKey(currentPkg, pkg string) string { - return currentPkg + "|" + pkg -} - -// dedupeLabels returns a new set of labels with no duplicates. -func dedupeLabels(labels []string) []string { - addedLabels := make(map[string]bool) - var uniqueLabels []string - for _, label := range labels { - if _, added := addedLabels[label]; !added { - addedLabels[label] = true - uniqueLabels = append(uniqueLabels, label) - } - } - return uniqueLabels -} - -// typeScriptRules returns all TypeScript rules in rules. -func typeScriptRules(rules []*appb.Rule) []*appb.Rule { - var tsRules []*appb.Rule - for _, rule := range rules { - for _, supportedRuleClass := range []string{ - "ts_library", - "ts_declaration", - "ng_module", - } { - if rule.GetRuleClass() == supportedRuleClass { - tsRules = append(tsRules, rule) - break - } - } - } - return tsRules -} - -// resolveAgainstModuleRoot resolves imported against moduleRoot and moduleName. -func resolveAgainstModuleRoot(rule *appb.Rule, imported string) string { - moduleName := stringAttribute(rule, "module_name") - if moduleName == "" { - return imported - } - if !pathStartsWith(imported, moduleName) { - return imported - } - // if module root is a file, remove the file extension, since it'll be added - // by possibleFilepaths below - moduleRoot := stripTSExtension(stringAttribute(rule, "module_root")) - _, pkg, _ := edit.ParseLabel(rule.GetName()) - - // resolve the import path against the module name and module root, ie if - // the import path is @foo/bar and there's a moduleName of @foo the resolved - // import path is location/of/foo/bar, or if there's also a moduleRoot of - // baz, the resolved import path is location/of/foo/baz/bar - // - // using strings.TrimPrefix for trimming the path is ok, since - // pathStartsWith already checked that moduleName is a proper prefix of - // i.importPath - return platform.Normalize(filepath.Join(pkg, moduleRoot, strings.TrimPrefix(imported, moduleName))) -} - -// pathStartsWith checks if path starts with prefix, checking each path segment, -// so that @angular/core starts with @angular/core, but @angular/core-bananas -// does not -func pathStartsWith(path, prefix string) bool { - pathParts := strings.Split(path, "/") - prefixParts := strings.Split(prefix, "/") - - if len(prefixParts) > len(pathParts) { - return false - } - - for i, prefixPart := range prefixParts { - if prefixPart != pathParts[i] { - return false - } - } - - return true -} - -// parsePackageName parses and returns the scope and package of imported. For -// example, "@foo/bar" would have a scope of "@foo" and a package of "bar". -func parsePackageName(imported string) (string, string) { - firstSlash := strings.Index(imported, "/") - if firstSlash == -1 { - return imported, "" - } - afterSlash := imported[firstSlash+1:] - if secondSlash := strings.Index(afterSlash, "/"); secondSlash > -1 { - return imported[:firstSlash], afterSlash[:secondSlash] - } - return imported[:firstSlash], afterSlash -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader_test.go deleted file mode 100644 index f6b909e7cd..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze/loader_test.go +++ /dev/null @@ -1,97 +0,0 @@ -package analyze - -import ( - "testing" - - "google3/net/proto2/go/proto" - - appb "google3/third_party/bazel/src/main/protobuf/build_go_proto" -) - - -func TestResolveAgainstModuleRoot(t *testing.T) { - tests := []struct { - ruleLiteral string - imported string - expected string - }{ - { - ruleLiteral: `name: "//a" - rule_class: "ts_library"`, - imported: "foo", - expected: "foo", - }, - { - ruleLiteral: `name: "//b" - rule_class: "ts_library" - attribute: < - type: 4 - name: "module_name" - string_value: "foo" - >`, - imported: "bar", - expected: "bar", - }, - { - ruleLiteral: `name: "//c" - rule_class: "ts_library" - attribute: < - type: 4 - name: "module_name" - string_value: "foo" - >`, - imported: "foo/bar", - expected: "c/bar", - }, - { - ruleLiteral: `name: "//actual/loc:target" - rule_class: "ts_library" - attribute: < - type: 4 - name: "module_name" - string_value: "foo/bar" - > - attribute: < - type: 4 - name: "module_root" - string_value: "mod/root" - >`, - imported: "foo/bar/baz/bam", - expected: "actual/loc/mod/root/baz/bam", - }, - } - for _, test := range tests { - rule, err := parseRuleLiteral(test.ruleLiteral) - if err != nil { - t.Errorf("isRuleAnAlias(%q): failed to parse literal: %s", test.ruleLiteral, err) - continue - } - if actual := resolveAgainstModuleRoot(rule, test.imported); actual != test.expected { - t.Errorf("resolveAgainstModuleRoot(%q): got %q, want %q", rule.GetName(), actual, test.expected) - } - } -} - -func TestParsePackageName(t *testing.T) { - tests := []struct { - input, scope, pkg string - }{ - {"foo/bar", "foo", "bar"}, - {"foo/bar/baz", "foo", "bar"}, - {"foo", "foo", ""}, - {"", "", ""}, - } - for _, test := range tests { - if scope, pkg := parsePackageName(test.input); scope != test.scope || pkg != test.pkg { - t.Errorf("moduleName(%q): got %q, %q, want %q, %q", test.input, scope, pkg, test.scope, test.pkg) - } - } -} - -func parseRuleLiteral(literal string) (*appb.Rule, error) { - var rule appb.Rule - if err := proto.UnmarshalText(literal, &rule); err != nil { - return nil, err - } - return &rule, nil -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go deleted file mode 100644 index 8410149f1d..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/main.go +++ /dev/null @@ -1,54 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "os" - - "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform" - "github.com/bazelbuild/rules_typescript/ts_auto_deps/updater" -) - -var ( - isRoot = flag.Bool("root", false, "the given path is the root of a TypeScript project "+ - "(generates ts_config and ts_development_sources targets).") - recursive = flag.Bool("recursive", false, "recursively update all packages under the given root.") - files = flag.Bool("files", false, "treats arguments as file names. Filters .ts files, then runs on their dirnames.") -) - -func usage() { - fmt.Fprintf(os.Stderr, `ts_auto_deps: generate BUILD rules for TypeScript sources. - -usage: %s [flags] [path...] - -ts_auto_deps generates and updates BUILD rules for each of the given package paths. -Paths are expected to reside underneath the workspace root. If none is given, -ts_auto_deps runs on the current working directory. - -For each of the given package paths, ts_auto_deps finds all TypeScript sources in the -package and adds sources that are not currently built to the appropriate -BUILD rule (ts_library or ts_declaration). - -If there is no matching BUILD rule, or no BUILD file, ts_auto_deps will create either. - -ts_auto_deps also updates BUILD rule dependencies ('deps') based on the source imports. - -Flags: -`, os.Args[0]) - flag.PrintDefaults() -} - -func main() { - flag.Usage = usage - flag.Parse() - - paths, err := updater.Paths(*isRoot, *files, *recursive) - if err != nil { - platform.Error(err) - } - - host := updater.New(false, false, updater.QueryBasedBlazeAnalyze, updater.LocalUpdateFile) - if err := updater.Execute(host, paths, *isRoot, *recursive); err != nil { - platform.Error(err) - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/file.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/file.go deleted file mode 100644 index 175a8de629..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/file.go +++ /dev/null @@ -1,58 +0,0 @@ -// Package platform handles differences between google3 and open source for taze. -package platform - -import ( - "context" - - "google3/file/base/go/file" -) - -// ReadFile reads the contents of name. -func ReadFile(ctx context.Context, name string) ([]byte, error) { - return file.ReadFile(ctx, name) -} - -// ReadBytesFromFile reads bytes into the buffer provided, stopping when the -// buffer is full. -func ReadBytesFromFile(ctx context.Context, name string, buffer []byte) (int, error) { - f, err := file.OpenRead(ctx, name) - if err != nil { - return 0, err - } - defer f.IO(ctx).Close() - - n, err := f.IO(ctx).Read(buffer) - return n, err -} - -// WriteFile writes data to filename. -func WriteFile(ctx context.Context, filename string, data []byte) error { - return file.WriteFile(ctx, filename, data) -} - -// Stat reads the file system information of name. -// NOTE: The result of Stat, FileStat or FileInfo for internal and external -// respectively, is never used. Since the two results are mostly incompatible -// structures, return an interface in both the open-source and internal version. -func Stat(ctx context.Context, name string) (interface{}, error) { - return file.Stat(ctx, name) -} - -// Glob returns all paths matching pattern. -func Glob(ctx context.Context, pattern string) ([]string, error) { - stats, err := file.Match(ctx, pattern, file.StatNone) - if err != nil { - return nil, err - } - paths := make([]string, 0, len(stats)) - for _, stat := range stats { - paths = append(paths, stat.Path) - } - return paths, nil -} - -// Normalize is a no-op in google3. Note that file.go.oss has an implementation -// which fixes Windows paths. -func Normalize(path string) string { - return path -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/file.go.oss b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/file.go.oss deleted file mode 100644 index bf87a03ccc..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/file.go.oss +++ /dev/null @@ -1,54 +0,0 @@ -package platform - -import ( - "context" - "io/ioutil" - "os" - "path/filepath" - "strings" -) - -const ( - filePerms = 0666 -) - -var pathReplacer = strings.NewReplacer("\\", "/") - -// ReadFile reads the contents of name. -func ReadFile(ctx context.Context, name string) ([]byte, error) { - return ioutil.ReadFile(name) -} - -// ReadBytesFromFile reads bytes into the buffer provided, stopping when the -// buffer is full. -func ReadBytesFromFile(ctx context.Context, name string, buffer []byte) (int, error) { - f, err := os.Open(name) - if err != nil { - return 0, err - } - defer f.Close() - - n, err := f.Read(buffer) - return n, err -} - - -// WriteFile writes data to filename. -func WriteFile(ctx context.Context, filename string, data []byte) error { - return ioutil.WriteFile(filename, data, filePerms) -} - -// Stat reads the file system information of name. -func Stat(ctx context.Context, name string) (interface{}, error) { - return os.Stat(name) -} - -// Glob returns all paths matching pattern. -func Glob(ctx context.Context, pattern string) ([]string, error) { - return filepath.Glob(pattern) -} - -// Normalize converts Windows path separators into POSIX -func Normalize(path string) (string) { - return pathReplacer.Replace(path) -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/log.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/log.go deleted file mode 100644 index 1486945cb3..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/log.go +++ /dev/null @@ -1,18 +0,0 @@ -package platform - -import "google3/base/go/log" - -// Infof prints a formatted message to stdout. -func Infof(format string, v ...interface{}) { - log.Infof(format, v...) -} - -// Error prints a series of args to stderr. -func Error(args ...interface{}) { - log.Error(args...) -} - -// Fatalf prints a formatted message to stderr. Panics after printing. -func Fatalf(format string, v ...interface{}) { - log.Fatalf(format, v...) -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/log.go.oss b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/log.go.oss deleted file mode 100644 index 4fb889eee5..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/log.go.oss +++ /dev/null @@ -1,22 +0,0 @@ -package platform - -import ( - "fmt" - "log" - "os" -) - -// Infof prints a formatted message to stdout. -func Infof(format string, args ...interface{}) { - fmt.Printf(format+"\n", args...) -} - -// Error prints a series of args to stderr. -func Error(args ...interface{}) { - fmt.Fprintln(os.Stderr, args...) -} - -// Fatalf prints a formatted message to stderr. Panics after printing. -func Fatalf(format string, v ...interface{}) { - log.Fatalf(format, v...) -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/walk.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/walk.go deleted file mode 100644 index ee35020d9d..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/walk.go +++ /dev/null @@ -1,20 +0,0 @@ -package platform - -import ( - "os" - - "google3/third_party/golang/go_tools/internal/fastwalk/fastwalk" -) - -// Walk does a faster filesystem walk than filepath.Walk by wrapping -// fastwalk.Walk. -// Performance was measured by timing updater.Paths when running taze -//--recursive on the cloud directory, both after a clearing the srcfs cache, and -// on subsequent runs. -// fastwalk, without cache: 2m35.950528503s -// fastwalk, with cache: 940.908936ms -// filepath.Walk without cache: 34m55.55114913s -// filepath.Walk with cache: 26.917530244s -func Walk(root string, walkFn func(path string, typ os.FileMode) error) error { - return fastwalk.Walk(root, walkFn) -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/walk.go.oss b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/walk.go.oss deleted file mode 100644 index 05dd36611a..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/platform/walk.go.oss +++ /dev/null @@ -1,15 +0,0 @@ -package platform - -import ( - "os" - "path/filepath" -) - -func Walk(root string, walkFn func(path string, typ os.FileMode) error) error { - return filepath.Walk(root, func(path string, info os.FileInfo, err error) error { - if err != nil { - return err - } - return walkFn(path, info.Mode()) - }) -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/proto/analyze_result.proto b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/proto/analyze_result.proto deleted file mode 100644 index f94855f9ae..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/proto/analyze_result.proto +++ /dev/null @@ -1,98 +0,0 @@ -syntax = "proto2"; - -package blaze_analyze; - -// A DependencyGroup represents a list of alternatives for satisfying -// a missing dependency. -message DependencyGroup { - // Represents the visibility status of this dependency group. All the - // dependencies have the same visibility status indicated by the visibility - // field. Producers of this message (i.e. checkdeps) will ensure that - // the invariant is true. - enum Visibility { - // Visibility was not considered. (Default) - UNKNOWN = 0; - // All the alternatives are visible - ALL_VISIBLE = 1; - // All the alternatives are invisible - ALL_INVISIBLE = 2; - } - - repeated string dependency = 1; - optional Visibility visibility = 2 [default = UNKNOWN]; - // The set of import paths for which any of these dependencies can provide. - // It is legal for there to be multiple entries there (in practice it is - // not very common). This happens if the dependencies required by one - // import_path is a subset of the other. In that case, the smaller set of - // dependencies is populated in dependency field, and both import_path's are - // listed here. - repeated string import_path = 3; -} - -// Represents information about arbitrary non-deps attributes. -message AttributeReport { - // Name of the attribute (e.g. "runtime_deps"). - optional string attribute = 1; - // Attribute value that is required but missing. - repeated string missing_value = 2; - // Attribute value that is declared but not needed. - repeated string unnecessary_value = 3; -} - -// The result of checking a single build rule (called X in comments -// below) for missing or unnecessary dependencies. Produced by -// java/com/google/devtools/build/checkbuilddeps (which for external -// users means it's produced by blaze analyze). -message DependencyReport { - required string rule = 1; // Name of rule X, in canonical google3 format. - - // Names of targets that are, or should be, declared as dependencies - // by rule X. Some need to be declared and some don't; in some - // cases it is impossible to tell by static analysis. Each is the - // full canonical name of the target, i.e. //x/y:z, or the shorthand - // form if the target name equals the package name, i.e. //x/y - // (shorthand for //x/y:y). - - // Declared and needed. Removing these dependencies should break the build. - repeated string necessary_dependency = 2; - - // Declared but not needed. Removing these dependencies should not break - // the build. - repeated string unnecessary_dependency = 3; - - // Can't tell. These may be dependencies where no corresponding imports - // were found, but alwayslink=1. - repeated string ambiguous_dependency = 4; - - // Needed but not declared. If there are imports which can be satisfied - // by more than one dependency declared in a best-matching package, list - // all of them. If this list is not empty, we expect the build to break. - repeated DependencyGroup missing_dependency_group = 8; - - // Files/classes that a source file imports, but for which no - // appropriate dependency could be found. We expect the build to break - // if this list is not empty. - // NOTE: If there are unreseolved imports, it may indicate that - // analysis failed to connect a declared dependency with a - // corresponding import statement, and so you may want to have less - // faith in the unnecessary_dependency field (though, in general, - // rules in unnecessary_dependency are still PROBABLY unnecessary). - repeated string unresolved_import = 7; - - // Source files that are inputs to the rule but cannot be found. - // Values are absolute labels, e.g. '//foo:bar/baz.c'. - repeated string missing_source_file = 13; - - // General-purpose feedback messages from the dependency checker - // (errors, warnings, any kind of info). - repeated string feedback = 6; - - // Indicates whether the dependency analysis completed without errors. - optional bool successful = 10 [default = true]; -} - -// Aggregate DependencyReports for multiple analysis -// targets - used to support blaze analyze --analysis_output=proto -message AnalyzeResult { - repeated DependencyReport dependency_report = 1; -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/comments.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/comments.go deleted file mode 100644 index 17060aff98..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/comments.go +++ /dev/null @@ -1,208 +0,0 @@ -// Excluded from the open-source version since there are no taze comments. Also -// because the sstable is not available. - -package updater - -import ( - "bytes" - "context" - "fmt" - "path/filepath" - "regexp" - "strconv" - "sync" - - "google3/base/go/log" - "google3/file/base/go/file" - "google3/sstable/go/sstable" - "google3/third_party/bazel_buildifier/edit/edit" - - arpb "google3/third_party/bazel_rules/rules_typescript/ts_auto_deps/proto/analyze_result_go_proto" -) - -var missingCommentRE = regexp.MustCompile( - `(?s)ERROR: ([^:]+):(\d+):(\d+): missing comment for 'goog:' import.*?'goog:([^']+)'`) - -// fixMissingTazeComments adds taze `// from ...` comments to source files. -// It scans the given feedback reports for "missing taze comment" errors, looks up the missing namespaces -// in an sstable stored on x20, and then appends comments to the lines missing them. -// fixMissingTazeComments returns true if it fixed any missing comments. -func (upd *Updater) fixMissingTazeComments(ctx context.Context, g3root string, reports []*arpb.DependencyReport) (bool, error) { - type location struct { - file string - line int - } - type missingComment struct { - target string - locations []location - } - - // Group reports and locations by namespace. - nsToComment := make(map[string]*missingComment) - for _, report := range reports { - for _, fb := range report.GetFeedback() { - log.Infof("fix taze comments: checking feedback:\n%s", fb) - // Sadly, there is no way to return more structured feedback from blaze analyze. - m := missingCommentRE.FindStringSubmatch(fb) - if m == nil { - continue - } - file := m[1] - line, err := strconv.Atoi(m[2]) - if err != nil { - return false, err - } - namespace := m[4] - - mc := nsToComment[namespace] - if mc == nil { - mc = &missingComment{} - nsToComment[namespace] = mc - } - mc.locations = append(mc.locations, location{file: file, line: line}) - } - } - - if len(nsToComment) == 0 { - return false, nil - } - - table, err := GetNamespaceToTargetTable() - if err != nil { - return false, err - } - - tableLookupSpinner := spin(fmt.Sprintf("Searching %d namespaces for taze comments", len(nsToComment))) - // Look up targets for missing namespaces - // Group locations to add a specific target to by file. - fileToLocs := make(map[string][]*missingComment) - for namespace, mc := range nsToComment { - log.Infof("Looking for namespace %s", namespace) - it := table.Lookup(ctx, []byte(namespace)) - if it.Done() { - log.Warningf("Couldn't find namespace %q", namespace) - continue - } - target := string(it.Value()) - mc.target = target - for _, l := range mc.locations { - mc := &missingComment{target: mc.target, locations: []location{l}} - fileToLocs[l.file] = append(fileToLocs[l.file], mc) - } - } - close(tableLookupSpinner) - - // Add taze comments to files. - fixedSomething := false - for srcFile, mcs := range fileToLocs { - p := filepath.Join(g3root, srcFile) - content, err := file.ReadFile(ctx, p) - if err != nil { - log.Errorf("fix taze comments: failed to read %q: %v", p, err) - continue - } - - lines := bytes.Split(content, []byte("\n")) - - for _, mc := range mcs { - loc := mc.locations[0] - lineOffset := loc.line - 1 - if len(lines) < lineOffset { - log.Errorf("fix taze comments: no line %d in %q", loc.line, p) - continue - } - // Contains("//") is a bit overly broad here, but import URLs should not contain double - // slashes either. - if bytes.Contains(lines[lineOffset], []byte("//")) { - return fixedSomething, - &AnalysisFailedError{ - []AnalysisFailureCause{ - AnalysisFailureCause{ - Message: fmt.Sprintf("cannot add taze comment to %s:%d, it already has a (malformed?) comment."+ - " Please remove or fix the comment.", - srcFile, loc.line), - Path: srcFile, - Line: loc.line, - }, - }, - } - } - var line bytes.Buffer - target := edit.ShortenLabel(mc.target, "") // pass "" as pkg to always get absolute package references. - fmt.Fprintf(&line, "%s // from %s", lines[lineOffset], target) - lines[lineOffset] = line.Bytes() - } - newContent := string(bytes.Join(lines, []byte("\n"))) - if err := upd.updateFile(ctx, p, newContent); err != nil { - log.Errorf("fix taze comments: failed to write %q: %v", p, err) - continue - } - fmt.Printf("Added taze comments to %s\n", srcFile) - fixedSomething = true - } - - return fixedSomething, nil -} - -var namespaceToTarget sstable.Table -var tableOnce sync.Once - -// GetNamespaceToTargetTable opens and returns the taze table from x20. -// It is a variable so it can be overridden for testing. -var GetNamespaceToTargetTable = func() (sstable.Table, error) { - tableOnce.Do(func() { - ctx := context.Background() - // This keeps the same sstable open for the entire (short) lifetime of the taze run. - // That is by design: during one run, the table should not change from under us. - t, err := sstable.Open(ctx, *namespaceLookupTable, &sstable.Options{}) - if err != nil { - log.Errorf("Failed to open namespace to target sstable: %v", err) - return - } - namespaceToTarget = t - }) - if namespaceToTarget == nil { - return nil, fmt.Errorf("fix taze comments: failed to open namespace sstable") - } - return namespaceToTarget, nil -} - -// Matches the Closure namespace for an import inside a .ts file. -var googImportNamespace = regexp.MustCompile(`^import .* from 'goog:(.*)';.*`) - -// Matches import lines that have a trailing taze comment. -// Capturing group 1 will be kept and the lookedup namespace will be appended. -// Based on a regex from -// java/com/google/devtools/ruleanalysis/service/checkbuilddeps/typescript/TypeScriptRuleChecker.java -var tazeCommentAfterStatement = regexp.MustCompile(`^(import .*;\s*//[ \t]*from[ \t]+)//.*$`) - -func updateTazeCommentsOnImports(ctx context.Context, path string, namespaceToTargetTable sstable.Table) error { - log.Infof("Updating taze import comments from %s\n", path) - content, err := file.ReadFile(ctx, path) - if err != nil { - return fmt.Errorf("reading %q: %v", path, err) - } - lines := bytes.Split(content, []byte("\n")) - for i, line := range lines { - match := googImportNamespace.FindSubmatch(line) - if match == nil { - continue - } - namespace := match[1] - it := namespaceToTargetTable.Lookup(ctx, namespace) - if it.Done() { - log.Infof("Attempted to update taze comment for %q but it is not in the index.\n", namespace) - continue - } - newLine := tazeCommentAfterStatement.ReplaceAll(line, append([]byte("$1"), it.Value()...)) - if bytes.Compare(newLine, lines[i]) != 0 { - log.Infof("Updated comment for %q in %q\n", namespace, path) - lines[i] = newLine - } - } - err = file.WriteFile(ctx, path, bytes.Join(lines, []byte("\n"))) - if err != nil { - return fmt.Errorf("failed to write %q: %v", path, err) - } - return nil -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/comments_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/comments_test.go deleted file mode 100644 index 921cf44c7e..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/comments_test.go +++ /dev/null @@ -1,184 +0,0 @@ -// Excluded from the open-source version since there are no taze comments. Also -// because the sstable is not available. - -package updater - -import ( - "bytes" - "context" - "io/ioutil" - "testing" - - "google3/sstable/go/sstable" - "google3/sstable/go/sstabletest" - "github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace" - - arpb "google3/third_party/bazel_rules/rules_typescript/ts_auto_deps/proto/analyze_result_go_proto" -) - -func TestFixMissingTazeComments(t *testing.T) { - sstableContent := []sstabletest.Entry{ - {[]byte("goog.string"), []byte("//javascript/closure/string:string")}, - {[]byte("goog.array"), []byte("//javascript/closure/array:nondefault")}, - } - sstabletest.Sort(sstableContent) - table := sstabletest.NewTable(sstableContent) - - GetNamespaceToTargetTable = func() (sstable.Table, error) { - return table, nil - } - - p, err := mktmp("google3/foo/a.ts", []byte(` - import {firstUsage} from 'goog:goog.string'; - import {x} from 'x'; - import {secondUsage} from 'goog:goog.string'; - import {hasComment} from 'goog:goog.string'; // from //javascript/closure/string - import {otherNamespace} from 'goog:goog.array';`)) - if err != nil { - t.Error(err) - } - g3root, err := workspace.Root(p) - if err != nil { - t.Error(err) - } - p2, err := mktmp("google3/foo/b.ts", []byte(`import {anotherUser} from 'goog:goog.string';`)) - if err != nil { - t.Error(err) - } - - report := parseReport(t, ` - rule: "//foo:bar" - unresolved_import: "goog:goog.string" - unresolved_import: "goog:goog.array" - feedback: "ERROR: foo/a.ts:2:1: missing comment for 'goog:' import, please add a trailing comment to the import. E.g.\n" - " import Bar from 'goog:goog.string'; // from //foo:bar\n" - feedback: "ERROR: foo/a.ts:4:1: missing comment for 'goog:' import, please add a trailing comment to the import. E.g.\n" - " import Bar from 'goog:goog.string'; // from //foo:bar\n" - feedback: "ERROR: foo/a.ts:6:1: missing comment for 'goog:' import, please add a trailing comment to the import. E.g.\n" - " import Bar from 'goog:goog.array'; // from //foo:bar\n"`) - report2 := parseReport(t, ` - rule: "//foo:baz" - unresolved_import: "goog:goog.string" - feedback: "ERROR: foo/b.ts:1:1: missing comment for 'goog:' import, please add a trailing comment to the import. E.g.\n" - " import Bar from 'goog:goog.string'; // from //foo:bar\n"`) - - ctx := context.Background() - updater := New(false, false, nil, LocalUpdateFile) - changed, err := updater.fixMissingTazeComments(ctx, g3root, []*arpb.DependencyReport{report, report2}) - if err != nil { - t.Error(err) - } - if !changed { - t.Error("fixMissingTazeComments: expected change") - } - - content, err := ioutil.ReadFile(p) - if err != nil { - t.Error(err) - } - expected := ` - import {firstUsage} from 'goog:goog.string'; // from //javascript/closure/string - import {x} from 'x'; - import {secondUsage} from 'goog:goog.string'; // from //javascript/closure/string - import {hasComment} from 'goog:goog.string'; // from //javascript/closure/string - import {otherNamespace} from 'goog:goog.array'; // from //javascript/closure/array:nondefault` - if string(content) != expected { - t.Errorf("fixMissingTazeComments(%q): got:\n%s, expected:\n%s", p, content, expected) - } - - content, err = ioutil.ReadFile(p2) - if err != nil { - t.Error(err) - } - expected = `import {anotherUser} from 'goog:goog.string'; // from //javascript/closure/string` - if string(content) != expected { - t.Errorf("fixMissingTazeComments(%q): got:\n%s, expected:\n%s", p2, content, expected) - } -} - -func TestFixMissingTazeCommentsBadCommentFormat(t *testing.T) { - sstableContent := []sstabletest.Entry{{[]byte("goog.string"), []byte("//javascript/closure/string:string")}} - sstabletest.Sort(sstableContent) - table := sstabletest.NewTable(sstableContent) - - GetNamespaceToTargetTable = func() (sstable.Table, error) { - return table, nil - } - - fileContents := []byte(` - import {hasIncorrectComment} from 'goog:goog.string'; // from some:place - `) - p, err := mktmp("google3/foo/a.ts", fileContents) - if err != nil { - t.Error(err) - } - g3root, err := workspace.Root(p) - if err != nil { - t.Error(err) - } - - report := parseReport(t, ` - rule: "//foo:bar" - unresolved_import: "goog:goog.string" - feedback: "ERROR: foo/a.ts:2:1: missing comment for 'goog:' import, please add a trailing comment to the import. E.g.\n" - " import Bar from 'goog:goog.string'; // from //foo:bar\n"`) - ctx := context.Background() - updater := New(false, false, nil, LocalUpdateFile) - _, err = updater.fixMissingTazeComments(ctx, g3root, []*arpb.DependencyReport{report}) - expErr := "cannot add taze comment to foo/a.ts:2, it already has a (malformed?) comment. Please remove or fix the comment." - if err == nil || err.Error() != expErr { - t.Errorf("fixMissingTazeComments(%q): got error %q, expected %q", p, err, expErr) - } - - if analysisErr, ok := err.(*AnalysisFailedError); ok { - if len(analysisErr.Causes) != 1 { - t.Errorf("fixMissingTazeComments(%q): got error causes %q, expected only one", p, analysisErr.Causes) - } - cause := analysisErr.Causes[0] - expFile := "foo/a.ts" - if cause.Path != expFile { - t.Errorf("fixMissingTazeComments(%q): got error file %q, expected %q", p, expFile, cause.Path) - } - expLine := 2 - if cause.Line != expLine { - t.Errorf("fixMissingTazeComments(%q): got error line %q, expected %q", p, expLine, cause.Line) - } - } else { - t.Errorf("fixMissingTazeComments(%q): got error %q, expected it to be an AnalysisFailedError", p, err) - } - - newContents, err := ioutil.ReadFile(p) - if err != nil { - t.Error(err) - } - if !bytes.Equal(newContents, fileContents) { - t.Errorf("fixMissingTazeComments(%q): got:\n%s, expected unchanged:\n%s", p, newContents, fileContents) - } -} - -func TestUpdateTazeCommentsOnImports(t *testing.T) { - sstableContent := []sstabletest.Entry{{[]byte("rapid.model.json"), []byte("//java/com/google/releasetools/rapid/static/js/model:model")}} - sstabletest.Sort(sstableContent) - table := sstabletest.NewTable(sstableContent) - - fileContents := []byte(`import {ProcessTypeEnum} from 'goog:rapid.model.json'; // from //java/com/google/releasetools/rapid/static/js/model:json_js`) - p, err := mktmp("google3/foo/a.ts", fileContents) - if err != nil { - t.Fatal(err) - } - - ctx := context.Background() - err = updateTazeCommentsOnImports(ctx, p, table) - if err != nil { - t.Error(err) - } - - content, err := ioutil.ReadFile(p) - if err != nil { - t.Error(err) - } - expected := `import {ProcessTypeEnum} from 'goog:rapid.model.json'; // from //java/com/google/releasetools/rapid/static/js/model:model` - if string(content) != expected { - t.Errorf("updateTazeCommentsOnImports(%q): got:\n%s, expected:\n%s", p, content, expected) - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/internal_rules.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/internal_rules.go deleted file mode 100644 index bf9122841f..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/internal_rules.go +++ /dev/null @@ -1,125 +0,0 @@ -// Excluded from the open-source version since there are no equivalent rules -// to ts_config and ts_development_sources. - -package updater - -import ( - "path/filepath" - "strings" - - "google3/third_party/bazel_buildifier/build/build" - "google3/third_party/bazel_buildifier/edit/edit" - "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform" -) - -// updateTSConfig creates new ts_config rules, as well as registers non-test ts -// rules with the ts_config. Test ts rules are handled in test_register.go. -func updateTSConfig(bld *build.File, add bool) { - if add && getLastRule(bld, "ts_config", ruleTypeAny) == nil { - r := getOrCreateRule(bld, "tsconfig", "ts_config", ruleTypeAny) - r.SetAttr("deps", &build.ListExpr{}) - } - - // register any non-test rules - r := getLastRule(bld, "ts_config", ruleTypeAny) - if r == nil { - return // No ts_config rule that needs updating. - } - targets := allTSRules(bld) - for _, t := range targets { - isTest := attrTruthy(t, "testonly") - if isTest { - // registering test rules with ts_config is done in test_register.go - continue - } - addDep(bld, r, t.Name()) - } -} - -// updateTSDevelopmentSources creates new ts_development_sources rules, as well -// as registers non-test ts rules with the ts_development_sources. Test ts -// rules are handled in test_register.go. -func updateTSDevelopmentSources(bld *build.File, add bool) { - if add { - ruleName := "devsrcs" - if getLastRule(bld, "ts_development_sources", ruleTypeRegular) == nil { - r := getOrCreateRule(bld, ruleName, "ts_development_sources", ruleTypeRegular) - r.SetAttr("deps", &build.ListExpr{}) - } - if getLastRule(bld, "ts_development_sources", ruleTypeTest) == nil { - r := getOrCreateRule(bld, ruleName, "ts_development_sources", ruleTypeTest) - r.SetAttr("deps", &build.ListExpr{}) - } - } - - // register any non-test rules - for _, t := range allTSRules(bld) { - // NodeJS rules should not be added to ts_development_sources automatically - // because they typically do not run in the browser. - if t.AttrString("runtime") == "nodejs" { - continue - } - isTest := attrTruthy(t, "testonly") - if isTest { - // registering test rules with ts_dev_srcs is done in test_register.go - continue - } - depName := ":" + t.Name() - if targetRegisteredInRule(bld, "ts_development_sources", ruleTypeRegular, depName) { - continue - } - r := getLastRule(bld, "ts_development_sources", ruleTypeRegular) - if r == nil { - continue // No devsources rule that needs updating. - } - addDep(bld, r, depName) - } -} - -// updateGenWizTS updates the sources of gen_wiz_ts() build rules referenced -// from ts_library()s. -func updateGenWizTS(bld *build.File) { - // For each ts_library, check if it references a gen_wiz_ts() rule in its srcs - for _, r := range buildRules(bld, "ts_library") { - srcs := r.AttrStrings("srcs") - var genWizRule *build.Rule - for _, src := range srcs { - if !strings.HasPrefix(src, ":") { - continue - } - candidate := edit.FindRuleByName(bld, strings.TrimPrefix(src, ":")) - if candidate != nil && candidate.Kind() == "gen_wiz_ts" { - genWizRule = candidate - break - } - } - // If so, add each source file ending with a wiz suffix to its srcs. - if genWizRule != nil { - addWizSrcsToTarget(bld, genWizRule, srcs) - } - } -} - -var wizSuffixes = []string{ - "controller.ts", - "model.ts", - "renderer.ts", - "processor.ts", - "service.ts", - "interface.ts", -} - -// addWizSrcsToTarget adds any entry from srcs to the sources of the given rule -// if it is a Wiz source (matches one of the suffixes). -func addWizSrcsToTarget(bld *build.File, rule *build.Rule, srcs []string) { - platform.Infof("Adding wiz sources to target %s:%s: %q", filepath.Dir(bld.Path), rule.Name(), srcs) -srcLoop: - for _, src := range srcs { - for _, suffix := range wizSuffixes { - if strings.HasSuffix(src, suffix) { - addToSrcsClobbering(bld, rule, src) - continue srcLoop - } - } - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/internal_updater_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/internal_updater_test.go deleted file mode 100644 index 4dbc9c875e..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/internal_updater_test.go +++ /dev/null @@ -1,86 +0,0 @@ -package updater - -import ( - "context" - "os" - "path/filepath" - "reflect" - "testing" - - "github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace" -) - -func TestGoogle3Root(t *testing.T) { - r, err := workspace.Root("a/google3/b/c") - if err != nil { - t.Error(err) - } - // Expect an absolute, resolved path. - exp, err := filepath.Abs("a/google3") - if r != exp { - t.Errorf("got %s, expected %s", r, exp) - } -} - -func TestRegisterTestRule(t *testing.T) { - ctx := context.Background() - p, err := mktmp("google3/foo/BUILD", []byte(`ts_config(name = "tsconfig", deps = ["//foo/bar:bar_test"])`)) - if err != nil { - t.Fatal(err) - } - barPath, err := mktmp("google3/foo/bar/BUILD", []byte(`ts_library(name = "bar_test", testonly=True)`)) - if err != nil { - t.Fatal(err) - } - bazPath, err := mktmp("google3/foo/baz/BUILD", []byte(`ts_library(name = "baz_test", testonly=True)`)) - if err != nil { - t.Fatal(err) - } - - g3root := filepath.Dir(filepath.Dir(p)) - var updatedFile string - testUpdateFile := UpdateFile(func(ctx context.Context, filePath string, _ string) error { - var err error - updatedFile, err = filepath.Rel(g3root, filePath) - return err - }) - - updater := New(false, false, nil, testUpdateFile) - _, _, err = updater.RegisterTestRules(ctx, barPath) - if err != nil { - t.Fatal(err) - } - if updatedFile != "" { - t.Errorf("expected no update, got a write to %q", updatedFile) - } - - _, _, err = updater.RegisterTestRules(ctx, bazPath) - if err != nil { - t.Fatal(err) - } - if updatedFile != "foo/BUILD" { - t.Errorf("got an update to %q, expected foo/BUILD", updatedFile) - } -} - -func TestResolvePackages(t *testing.T) { - p, err := mktmp("google3/sub/pkg/file", []byte("")) - if err != nil { - t.Fatal(err) - } - if err := os.Chdir(filepath.Dir(p)); err != nil { - t.Fatal(err) - } - g3root := filepath.Dir(filepath.Dir(filepath.Dir(p))) - if filepath.Base(g3root) != "google3" { - t.Errorf("g3root should be called google3, got %q", g3root) - } - paths := []string{"//foo", "/bar"} - if err := ResolvePackages(paths); err != nil { - t.Fatal(err) - } - expected := []string{filepath.Join(g3root, "foo"), "/bar"} - if !reflect.DeepEqual(paths, expected) { - t.Errorf("ResolvePackages: got %s, expected %s", paths, expected) - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go deleted file mode 100644 index 1960226c58..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/test_register.go +++ /dev/null @@ -1,259 +0,0 @@ -package updater - -import ( - "context" - "fmt" - "path/filepath" - - "google3/third_party/bazel_buildifier/build/build" - "google3/third_party/bazel_buildifier/edit/edit" - "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform" -) - -// isAllTestLibrary identifies testonly ts_libraries named "all_tests". Taze -// will register tests with these rules instead of -// ts_config/ts_development_sources rules to allow users to set up their builds -// differently. -func isAllTestLibrary(bld *build.File, r *build.Rule) bool { - if !ruleMatches(bld, r, "ts_library", ruleTypeTest) { - return false - } - - if r.Name() != "all_tests" { - return false - } - - return true -} - -func getAllTestLibraries(bld *build.File) []*build.Rule { - var allTestRules []*build.Rule - for _, r := range buildRules(bld, "ts_library") { - if isAllTestLibrary(bld, r) { - allTestRules = append(allTestRules, r) - } - } - return allTestRules -} - -// RegisterTestRules registers ts_library test targets with the project's -// ts_config and ts_development_sources rules. It may also register the tests -// with a testonly ts_library named "all_tests", which allows users to set up -// their own BUILD layout. It's separated from UpdateBUILD since it's -// non-local, multiple packages may all need to make writes to the same -// ts_config. It returns a set of the paths for the packages that were updated. -func (upd *Updater) RegisterTestRules(ctx context.Context, paths ...string) (bool, map[string]bool, error) { - reg := &buildRegistry{make(map[string]*build.File), make(map[*build.File]bool)} - var g3root string - updatedAncestorPackages := make(map[string]bool) - for _, path := range paths { - // declare variables manually so that g3root doesn't get overwritten by a := - // declaration - var err error - var buildPath string - g3root, buildPath, _, err = getBUILDPath(ctx, path) - if err != nil { - return false, nil, err - } - bld, err := reg.readBUILD(ctx, g3root, buildPath) - if err != nil { - return false, nil, err - } - for _, tr := range getRules(bld, "ts_library", ruleTypeTest) { - // don't register all_test libraries themselves - if isAllTestLibrary(bld, tr) { - continue - } - platform.Infof("Registering test rule in closest ts_config & ts_development_sources") - target := AbsoluteBlazeTarget(bld, tr.Name()) - ancestorBuild, err := reg.registerTestRule(ctx, bld, tsConfig, g3root, target) - if err != nil { - return false, nil, err - } - if ancestorBuild != "" { - updatedAncestorPackages[ancestorBuild] = true - } - // NodeJS rules should not be added to ts_development_sources automatically, because - // they typically do not run in the browser. - if tr.AttrString("runtime") != "nodejs" { - ancestorBuild, err := reg.registerTestRule(ctx, bld, tsDevSrcs, g3root, target) - if err != nil { - return false, nil, err - } - if ancestorBuild != "" { - updatedAncestorPackages[ancestorBuild] = true - } - } - } - } - - updated := false - for b := range reg.filesToUpdate { - fmt.Printf("Registered test(s) in %s\n", b.Path) - fileChanged, err := upd.maybeWriteBUILD(ctx, filepath.Join(g3root, b.Path), b) - if err != nil { - return false, nil, err - } - updated = updated || fileChanged - } - - return updated, updatedAncestorPackages, nil -} - -// buildRegistry buffers reads and writes done while registering ts_libraries -// with ts_config and ts_development_sources rules, so that registers from -// multiple packages all get applied at once. -type buildRegistry struct { - bldFiles map[string]*build.File - filesToUpdate map[*build.File]bool -} - -func (reg *buildRegistry) readBUILD(ctx context.Context, workspaceRoot, buildFilePath string) (*build.File, error) { - normalizedG3Path, err := getWorkspaceRelativePath(workspaceRoot, buildFilePath) - if err != nil { - return nil, err - } - - if bld, ok := reg.bldFiles[normalizedG3Path]; ok { - return bld, nil - } - - bld, err := readBUILD(ctx, buildFilePath, normalizedG3Path) - if err != nil { - return nil, err - } - if bld == nil { - // The BUILD file didn't exist, so create a new, empty one. - bld = &build.File{Path: normalizedG3Path, Type: build.TypeBuild} - } - - reg.bldFiles[normalizedG3Path] = bld - - return bld, nil -} - -func (reg *buildRegistry) registerForPossibleUpdate(bld *build.File) { - reg.filesToUpdate[bld] = true -} - -type registerTarget int - -const ( - tsConfig registerTarget = iota - tsDevSrcs -) - -func (rt registerTarget) kind() string { - if rt == tsConfig { - return "ts_config" - } - - return "ts_development_sources" -} - -func (rt registerTarget) ruleType() ruleType { - if rt == tsConfig { - return ruleTypeAny - } - - return ruleTypeTest -} - -// registerTestRule searches ancestor packages for a rule matching the register -// target and adds the given target to it. If an all_tests library is found, the -// rule is registered with it, instead of specified register target. Prints a -// warning if no rule is found, but only returns an error if adding the -// dependency fails. -func (reg *buildRegistry) registerTestRule(ctx context.Context, bld *build.File, rt registerTarget, g3root, target string) (string, error) { - if buildHasDisableTaze(bld) { - return "", nil - } - - var ruleToRegister *build.Rule - for _, r := range bld.Rules("") { - if isAllTestLibrary(bld, r) { - if hasDependency(bld, r, target) { - return "", nil - } - - // an all_tests library takes presidence over a registerTarget, and there - // can only be one, since there can only be one rule with a given name, so - // can just break after finding - ruleToRegister = r - break - } - if ruleMatches(bld, r, rt.kind(), rt.ruleType()) { - if hasDependency(bld, r, target) { - return "", nil - } - - // keep overwriting ruleToRegister so the last match in the BUILD gets - // used - ruleToRegister = r - } - } - - if ruleToRegister != nil { - addDep(bld, ruleToRegister, target) - reg.registerForPossibleUpdate(bld) - return filepath.Dir(bld.Path), nil - } - - parentDir := filepath.Dir(filepath.Dir(bld.Path)) - for parentDir != "." && parentDir != "/" { - buildFile := filepath.Join(g3root, parentDir, "BUILD") - if _, err := platform.Stat(ctx, buildFile); err == nil { - parent, err := reg.readBUILD(ctx, g3root, buildFile) - if err != nil { - return "", err - } - return reg.registerTestRule(ctx, parent, rt, g3root, target) - } - parentDir = filepath.Dir(parentDir) - } - fmt.Printf("WARNING: no %s rule in parent packages of %s to register with.\n", - rt.kind(), target) - return "", nil -} - -var wellKnownBuildRules = []struct { - name string - attrName string -}{ - { - name: "karma_polymer_test", - attrName: "test_ts_deps", - }, - { - name: "wct_closure_test_suite", - attrName: "js_deps", - }, - { - name: "jasmine_node_test", - attrName: "deps", - }, - { - name: "karma_web_test_suite", - attrName: "deps", - }, - { - name: "boq_jswire_test_library", - attrName: "deps", - }, -} - -// isRegisteredWithAlternateTestRule returns true if the rule is already -// registered with a well known test rule, such as karma_polymer_test, -// wct_closure_test_suite or jasmine_node_test. -func isRegisteredWithAlternateTestRule(bld *build.File, r *build.Rule, dep string) bool { - pkg := filepath.Dir(bld.Path) - for _, wkbr := range wellKnownBuildRules{ - if isKind(r, wkbr.name) { - testTsDeps := r.Attr(wkbr.attrName) - if edit.ListFind(testTsDeps, dep, pkg) != nil { - return true - } - } - } - return false -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go deleted file mode 100644 index 60ff54e50c..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater.go +++ /dev/null @@ -1,1348 +0,0 @@ -// Package updater implements the main logic of the taze command. It reads BUILD files, -// discovers TypeScript sources, uses `blaze analyze` to update import/dependency information, -// and then modifies the BUILD file accordingly. -package updater - -import ( - "bytes" - "context" - "fmt" - "io" - "os" - "path/filepath" - "regexp" - "sort" - "strconv" - "strings" - "sync" - "time" - - "google3/base/go/flag" - "google3/net/proto2/go/proto" - "google3/third_party/bazel_buildifier/build/build" - "google3/third_party/bazel_buildifier/edit/edit" - "github.com/bazelbuild/rules_typescript/ts_auto_deps/analyze" - "github.com/bazelbuild/rules_typescript/ts_auto_deps/platform" - "github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace" - "google3/third_party/golang/isatty/isatty" - - arpb "google3/third_party/bazel_rules/rules_typescript/ts_auto_deps/proto/analyze_result_go_proto" -) - - -var blazeErrorRE = regexp.MustCompile(`ERROR: ([^:]+):(\d+):\d+:`) - -// New creates a new updater from the given arguments. One updater can be used -// to update many packages, repeatedly, but not concurrently. -// blazeAnalyze and updateFile can be passed in to handle taze operation in -// different environments and for fakes in tests. -func New(removeUnusedDeclarations bool, updateComments bool, blazeAnalyze BlazeAnalyzer, updateFile UpdateFile) *Updater { - return &Updater{removeUnusedDeclarations, updateComments, blazeAnalyze, updateFile} -} - -// UpdateFile updates the contents of filePath. Implementations may postpone or batch actually writing the given file, i.e. -// a subsequent read may return stale contents. -type UpdateFile func(ctx context.Context, filePath string, contents string) error - -// LocalUpdateFile simply writes to the given file. -func LocalUpdateFile(ctx context.Context, filePath string, contents string) error { - return platform.WriteFile(ctx, filePath, []byte(contents)) -} - -// BlazeAnalyzer is a function that executes blaze analyze for the given -// absolute build file path and blaze targets, and returns the raw analysis -// result proto, or an error if the analyze call failed. -// It's used to abstract over execution using rabbit vs local execution. -// Returns the main output (serialized AnalysisResult proto), any error -// messages, or an error. -type BlazeAnalyzer func(buildFilePath string, targets []string) ([]byte, []byte, error) - -// Updater encapsulates configuration for the taze process. -type Updater struct { - removeUnusedDeclarations bool - updateComments bool - blazeAnalyze BlazeAnalyzer - updateFile UpdateFile -} - -func attrTruthy(r *build.Rule, attr string) bool { - attrVal := r.AttrLiteral(attr) - return attrVal == "True" || attrVal == "1" -} - -// Matches the warning TypeScriptRuleChecker prints for unused ts_declarations. -// TODO(martinprobst): in the long term, this should become the default and TypeScriptRuleChecker should no longer special case ts_declaration. -var unusedDeclarationRE = regexp.MustCompile( - `WARNING: [^:]+:\d+:(?:\d+:)? keeping possibly used ts_declaration '([^']+)'`) - -// GarbledBlazeResponseError signals to callers that the proto returned by blaze -// analyze was garbled, and couldn't be unmarshalled. -// TODO(lucassloan): remove when b/112891536 is fixed -// Build Rabbit rewrites paths produced by blaze, which garbles the error -// messages from blaze analyze, since they're encoded in protobufs. -type GarbledBlazeResponseError struct { - Message string -} - -func (g *GarbledBlazeResponseError) Error() string { - return g.Message -} - -// runBlazeAnalyze executes the `blaze analyze` command and extracts reports. -// It returns the dependency report with rule names referring to rules *before* -// macro expansion, or an error. runBlazeAnalyze uses the given `analyze` -// function to actually run the `blaze analyze` operation, which allows -// exchanging it for a different implementation in the taze presubmit service. -func (upd *Updater) runBlazeAnalyze(buildFilePath string, bld *build.File, rules []*build.Rule) ([]*arpb.DependencyReport, error) { - var targets []string - for _, r := range rules { - fullTarget := AbsoluteBlazeTarget(bld, r.Name()) - targets = append(targets, fullTarget) - } - out, stderr, err := upd.blazeAnalyze(buildFilePath, targets) - if err != nil { - return nil, err - } - - var res arpb.AnalyzeResult - if err := proto.Unmarshal(out, &res); err != nil { - // TODO(lucassloan): remove when b/112891536 is fixed - // Build Rabbit rewrites paths produced by blaze, which garbles the error - // messages from blaze analyze, since they're encoded in protobufs. - return nil, &GarbledBlazeResponseError{fmt.Sprintf("failed to unmarshal analysis result: %v\nin: %q", err, string(out))} - } - platform.Infof("analyze result %v", res) - reports := res.GetDependencyReport() - if len(targets) != len(reports) { - if len(stderr) > 0 { - // TODO(b/73321854): pretend second rule has a syntactical error, so blaze analyze produces no - // report for it, but also doesn't return an error code. Remove workaround once fixed. - return nil, fmt.Errorf("parsing reports failed (%d reports for %s):\n%s", - len(reports), targets, stderr) - } - return nil, fmt.Errorf("parsing reports failed (%d reports for %s) in output: %s", - len(reports), targets, out) - } - if upd.removeUnusedDeclarations { - for _, report := range reports { - for _, fb := range report.GetFeedback() { - m := unusedDeclarationRE.FindStringSubmatch(fb) - if m == nil { - continue - } - target := m[1] - platform.Infof("Removing (possibly) unused ts_declaration dependency %q", target) - // TODO(martinprobst): this warning is to educate users after changing removeUnusedDeclarations to true by default. - // Once existing code is fixed, this constitutes normal operation, and the logging below should be dropped. - fmt.Fprintf(os.Stderr, "WARNING: removing apparently unused ts_declaration() dependency from %q.\n", report.GetRule()) - - - report.UnnecessaryDependency = append(report.UnnecessaryDependency, target) - } - } - } - return reports, nil -} - -func spin(prefix string) chan<- struct{} { - done := make(chan struct{}) - // Check for cygwin, important for Windows compatibility - if !isatty.IsTerminal(os.Stderr.Fd()) || !isatty.IsCygwinTerminal(os.Stdout.Fd()) { - return done - } - go func() { - // Wait a bit before starting to print to avoid flashing a spinner unnecessarily. - time.Sleep(100 * time.Millisecond) - ticker := time.NewTicker(100 * time.Millisecond) - defer ticker.Stop() - i := 0 - str := []rune(`⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏`) - for { - select { - case <-done: - fmt.Fprint(os.Stderr, "\r") - for i := 0; i < len(prefix)+2; i++ { - fmt.Fprint(os.Stderr, " ") - } - fmt.Fprint(os.Stderr, "\r") - return - case <-ticker.C: - fmt.Fprintf(os.Stderr, "\r%s %s", prefix, string(str[i])) - i = (i + 1) % len(str) - } - } - }() - return done -} - -// readBUILD loads the BUILD file, if present, or returns a nil pointer, if not. -// buildFilePath is relative to CWD, and workspaceRelativePath is relative to -// the workspace root (the directory containing the WORKSPACE file). -func readBUILD(ctx context.Context, buildFilePath, workspaceRelativePath string) (*build.File, error) { - data, err := platform.ReadFile(ctx, buildFilePath) - if err != nil { - if os.IsNotExist(err) { - return nil, nil - } - return nil, err - } - bld, err := build.ParseBuild(workspaceRelativePath, data) - if err != nil { - if parseErr, ok := err.(build.ParseError); ok { - return nil, &AnalysisFailedError{ - []AnalysisFailureCause{ - AnalysisFailureCause{ - Message: parseErr.Error(), - Path: parseErr.Filename, - Line: parseErr.Pos.Line, - }, - }, - } - - } - - // wasn't an error we know how to parse - return nil, err - } - return bld, nil -} - -type srcSet map[string]bool - -type globResult struct { - srcs srcSet - err error -} - -// globSources finds sources in path with any of the given extensions. -// It also filters out temporary files, dangling symlinks, and symlinks into blaze-bin specifically. -// It returns file names relative to path. -func globSources(ctx context.Context, path string, extensions []string) (srcSet, error) { - var allSourcePaths []string - for _, extension := range extensions { - pattern := "*." + extension - matched, err := platform.Glob(ctx, filepath.Join(path, pattern)) - if err != nil { - return nil, fmt.Errorf("glob(%s): %s", pattern, err) - } - allSourcePaths = append(allSourcePaths, matched...) - } - srcs := make(srcSet) - for _, p := range allSourcePaths { - fileName := filepath.Base(p) - if isTempFile(fileName) { - continue // Ignore editor swap/backup files. - } - // Try platform.Stat as a fallback, for Google file systems. - _, err := platform.Stat(ctx, p) - if os.IsNotExist(err) { - platform.Infof("platform.Glob returned non-existent file (dangling symlink?). Ignoring %q.", p) - continue - } - if err != nil { - return nil, fmt.Errorf("cannot stat platform.Glob result %q: %v", p, err) - } - isMpeg, err := IsMpegTS(ctx, p) - if err != nil { - return nil, err - } - if isMpeg { - continue - } - p, err := filepath.Rel(path, p) - if err != nil { - return nil, fmt.Errorf("filepath.Rel(%s, %s): %v", path, p, err) - } - srcs[p] = true - } - return srcs, nil -} - -// IsMpegTS checks if a ".ts" file is an MPEG transport stream. Taze shouldn't -// treat them as TypeScript files. -func IsMpegTS(ctx context.Context, path string) (bool, error) { - var content [200]byte - n, err := platform.ReadBytesFromFile(ctx, path, content[:]) - if err != nil && err != io.EOF { - return false, err - } - - // MPEG TS' frame format starts with 0x47 every 189 bytes - detect that and return. - isMpeg := n > 188 && content[0] == 0x47 && content[188] == 0x47 - return isMpeg, nil -} - -func isTempFile(fileName string) bool { - return strings.HasPrefix(fileName, ".") || strings.HasSuffix(fileName, ".swp") || - strings.HasSuffix(fileName, "~") -} - -// updateSources adds any srcs that are not in some rule to the last ts_* rule -// in the package, or create a new rule for them. -func updateSources(bld *build.File, srcs srcSet) { - removeSourcesUsed(bld, "ts_library", "srcs", srcs) - removeSourcesUsed(bld, "ts_declaration", "srcs", srcs) - - if len(srcs) == 0 { - return - } - - // Sort the remaining sources for reproducibility (sadly Go has no LinkedHashSet) - var srcSlice []string - for s := range srcs { - srcSlice = append(srcSlice, s) - } - sort.Strings(srcSlice) - - pkgName := filepath.Base(filepath.Dir(bld.Path)) - platform.Infof("Adding new sources to targets in %q: %q", pkgName, srcSlice) - for _, s := range srcSlice { - var r *build.Rule - ruleName := pkgName - if strings.HasSuffix(s, ".d.ts") { - r = getOrCreateRule(bld, ruleName+"_dts", "ts_declaration", ruleTypeRegular) - } else { - rt := determineRuleType(bld.Path, s) - r = getOrCreateRule(bld, ruleName, "ts_library", rt) - } - addToSrcsClobbering(bld, r, s) - } -} - -// Adds the given value to the srcs attribute on the build rule. Clobbers any -// existing values for srcs that are not a list. -func addToSrcsClobbering(bld *build.File, r *build.Rule, s string) { - value := r.Attr("srcs") - switch value.(type) { - case nil, *build.ListExpr: - // expected - a list of files (labels) or absent. - default: - // Remove any glob calls, variables, etc. taze uses explicit source lists. - fmt.Fprintf(os.Stderr, "WARNING: clobbering non-list srcs attribute on %s\n", - AbsoluteBlazeTarget(bld, r.Name())) - r.DelAttr("srcs") - } - val := &build.StringExpr{Value: s} - edit.AddValueToListAttribute(r, "srcs", "", val, nil) -} - -var testingRegexp = regexp.MustCompile(`\btesting\b`) - -func determineRuleType(path, s string) ruleType { - if strings.HasSuffix(s, "_test.ts") || strings.HasSuffix(s, "_test.tsx") { - return ruleTypeTest - } - - - return ruleTypeRegular -} - -// AnalysisFailedError is returned by taze when the underlying analyze operation -// fails, e.g. because the BUILD files have syntactical errors. -type AnalysisFailedError struct { - Causes []AnalysisFailureCause -} - -// AnalysisFailureCause gives (one of) the reasons analysis failed, along with -// the path and line that caused the failure (if available). -type AnalysisFailureCause struct { - Message string - // workspace path of the file on which analysis failed ie foo/bar/baz.ts, not - // starting with google3/ - Path string - // 1-based line on which analysis failed - Line int -} - -func (a *AnalysisFailedError) Error() string { - var messages []string - for _, c := range a.Causes { - messages = append(messages, c.Message) - } - return strings.Join(messages, "\n") -} - -// updateDeps adds missing dependencies and removes unnecessary dependencies -// for the targets in the given DependencyReports to the build rules in bld. -func updateDeps(bld *build.File, reports []*arpb.DependencyReport) error { - // First, check *all* reports on whether they were successful, so that users - // get the complete set of errors at once. - var errors []AnalysisFailureCause - for _, report := range reports { - if !report.GetSuccessful() { - for _, fb := range report.GetFeedback() { - msg := fmt.Sprintf("dependency analysis failed for %s:\n%s", - report.GetRule(), fb) - - m := blazeErrorRE.FindStringSubmatch(fb) - if m == nil { - // error message didn't contain file and line number, so just use the - // path of the BUILD file that was analyzed - errors = append(errors, AnalysisFailureCause{Message: msg, Path: bld.Path}) - continue - } - - file := m[1] - line, err := strconv.Atoi(m[2]) - if err != nil { - return err - } - - errors = append(errors, AnalysisFailureCause{msg, file, line}) - } - } - } - if len(errors) > 0 { - return &AnalysisFailedError{errors} - } - - pkg := filepath.Dir(bld.Path) - for _, report := range reports { - platform.Infof("Applying report: %s", report.String()) - fullTarget := report.GetRule() - targetName := fullTarget[strings.LastIndex(fullTarget, ":")+1:] - r := edit.FindRuleByName(bld, targetName) - if r == nil { - return fmt.Errorf("could not find rule from report %v", targetName) - } - for _, md := range report.MissingDependencyGroup { - for _, d := range md.Dependency { - d = AbsoluteBlazeTarget(bld, d) - if d == fullTarget { - return &AnalysisFailedError{ - []AnalysisFailureCause{ - AnalysisFailureCause{ - Message: fmt.Sprintf("target %s depends on itself. "+ - "Maybe you have an incorrect `// from %s` comment, or need to split application "+ - "entry point (main.ts) and ng_module() rule?", d, d), - Path: bld.Path, - }, - }, - } - } - platform.Infof("Adding dependency on %s to %s\n", d, fullTarget) - addDep(bld, r, d) - } - } - hadUnresolved := len(report.UnresolvedImport) > 0 - if hadUnresolved { - return &AnalysisFailedError{ - []AnalysisFailureCause{ - AnalysisFailureCause{ - Message: fmt.Sprintf("ERROR in %s: unresolved imports %s.\nMaybe you are missing a "+ - "'// from ...'' comment, or the target BUILD files are incorrect?\n%s\n", - fullTarget, report.UnresolvedImport, strings.Join(report.GetFeedback(), "\n")), - Path: bld.Path, - }, - }, - } - } - for _, d := range report.UnnecessaryDependency { - platform.Infof("Removing dependency on %s from %s\n", d, fullTarget) - edit.ListAttributeDelete(r, "deps", d, pkg) - } - for _, s := range report.MissingSourceFile { - platform.Infof("Removing missing source %s from %s\n", s, fullTarget) - edit.ListAttributeDelete(r, "srcs", s, pkg) - } - } - return nil -} - - -// maybeWriteBUILD checks if the given file needs updating, i.e. whether the -// canonical serialized form of bld has changed from the file contents on disk. -// If so, writes the file and returns true, returns false otherwise. -func (upd *Updater) maybeWriteBUILD(ctx context.Context, path string, bld *build.File) (bool, error) { - ri := &build.RewriteInfo{} - build.Rewrite(bld, ri) - platform.Infof("Formatted %s: %s\n", path, ri) - newContent := build.Format(bld) - oldContent, err := platform.ReadFile(ctx, path) - if err != nil { - if !os.IsNotExist(err) { - return false, err - } else if len(newContent) == 0 { - // The BUILD file does not exist, and the newly created file has no content. - // Treat this as equivalent, and do not create a new BUILD file. - return false, nil - } - // Fall through to write a new file. - } else if bytes.Equal(oldContent, newContent) { - // Compare contents, only update if changed. - return false, nil - } - if err := upd.updateFile(ctx, path, string(newContent)); err != nil { - return false, fmt.Errorf("failed to update %q: %v", path, err) - } - return true, nil -} - -// getWorkspaceRelativePath takes a buildFilePath that's relative to the working -// directory, and returns a path to the BUILD file that's relative to the -// workspaceRoot (the absolute path of the directory containing the WORKSPACE -// file). -func getWorkspaceRelativePath(workspaceRoot, buildFilePath string) (string, error) { - absPath, err := filepath.Abs(buildFilePath) - if err != nil { - return "", err - } - workspaceRelativePath, err := filepath.Rel(workspaceRoot, absPath) - if err != nil { - return "", err - } - platform.Normalize(workspaceRelativePath) - - return workspaceRelativePath, nil -} - -// getBUILDPath takes in a package or BUILD file path, and returns the path of -// the workspace root (the absolute path of the directory containing the -// WORKSPACE file), the BUILD file path relative to the working directory, and -// the BUILD file path relative to the workspace root. -func getBUILDPath(ctx context.Context, path string) (string, string, string, error) { - path = strings.TrimSuffix(path, "/BUILD") // Support both package paths and BUILD files - if _, err := platform.Stat(ctx, path); os.IsNotExist(err) { - return "", "", "", err - } - buildFilePath := filepath.Join(path, "BUILD") - workspaceRoot, err := workspace.Root(buildFilePath) - if err != nil { - return "", "", "", err - } - - workspaceRelativePath, err := getWorkspaceRelativePath(workspaceRoot, buildFilePath) - if err != nil { - return "", "", "", err - } - - return workspaceRoot, buildFilePath, workspaceRelativePath, nil -} - -// isTazeDisabledInPackage checks the BUILD file, or if the BUILD doesn't exist, -// the nearest ancestor BUILD file for a disable_taze() rule. -func isTazeDisabledInPackage(ctx context.Context, g3root, buildFilePath, workspaceRelativePath string, bld *build.File) (bool, error) { - if bld == nil { - // Make sure taze hasn't been disabled in the next closest ancestor package. - ancestor, err := FindBUILDFile(ctx, make(map[string]*build.File), g3root, filepath.Dir(workspaceRelativePath)) - if _, ok := err.(*noAncestorBUILDError); ok { - platform.Infof("Could not find any ancestor BUILD for %q, continuing with a new BUILD file", - buildFilePath) - return false, nil - } else if err != nil { - return false, err - } else if buildHasDisableTaze(ancestor) { - fmt.Printf("taze disabled below %q\n", ancestor.Path) - return true, nil - } else { - platform.Infof("BUILD file missing and taze is enabled below %q. Creating new BUILD file.", - ancestor.Path) - return false, nil - } - } - - if buildHasDisableTaze(bld) { - fmt.Printf("taze disabled on %q\n", buildFilePath) - return true, nil - } - - return false, nil -} - -// SubdirectorySourcesError is returned when taze detects a BUILD file -// that references sources in another directory, either in the directory -// being tazed, or in a super directory. -type SubdirectorySourcesError struct{} - -func (a *SubdirectorySourcesError) Error() string { - return "taze doesn't handle referencing sources in another directory " + - "- to use taze, migrate to having a BUILD file in every directory. " + - "For more details, see go/taze#subdirectory-sources" -} - -// hasSubdirectorySources checks if the BUILD file has ts_libraries that contain -// source files from subdirectories of the directory with the BUILD. ie foo/BUILD -// has a src foo/bar/baz.ts, in the subdirectory foo/bar. -func hasSubdirectorySources(bld *build.File) bool { - for _, rule := range buildRules(bld, "ts_library") { - srcs := rule.AttrStrings("srcs") - if srcs != nil { - for _, s := range srcs { - if strings.Contains(s, "/") { - return true - } - } - } else { - // srcs wasn't a list, check for a glob over subdirectory soruces - srcExp := rule.Attr("srcs") - call, ok := srcExp.(*build.CallExpr) - if ok { - callName, ok := call.X.(*build.Ident) - if ok { - if callName.Name == "glob" { - for _, arg := range call.List { - strArg, ok := arg.(*build.StringExpr) - if ok && strings.Contains(strArg.Value, "/") { - return true - } - } - } - } - } - } - // TODO(b/120783741): - // This only handles a lists of files, and a single glob, there are other - // cases such as a glob + a list of files that it doesn't handle, but that's - // ok since, this is only meant as a caution to the user. - } - - return false -} - -// directoryOrAncestorHasSubdirectorySources checks for ts_libraries referencing sources in subdirectories. -// It checks the current directory's BUILD if it exists, otherwise it checks the nearest -// ancestor package. -func directoryOrAncestorHasSubdirectorySources(ctx context.Context, g3root, workspaceRelativePath string, bld *build.File) (bool, error) { - if bld == nil { - // Make sure the next closest ancestor package doesn't reference sources in a subdirectory. - ancestor, err := FindBUILDFile(ctx, make(map[string]*build.File), g3root, filepath.Dir(workspaceRelativePath)) - if _, ok := err.(*noAncestorBUILDError); ok { - // couldn't find an ancestor BUILD, so there aren't an subdirectory sources - return false, nil - } else if err != nil { - return false, err - } else if hasSubdirectorySources(ancestor) { - return true, nil - } else { - // there was an ancestor BUILD, but it didn't reference subdirectory sources - return false, nil - } - } - - if hasSubdirectorySources(bld) { - return true, nil - } - - return false, nil -} - -func (upd *Updater) addSourcesToBUILD(ctx context.Context, path string, buildFilePath string, bld *build.File, srcs srcSet) (bool, error) { - - platform.Infof("Updating sources") - if len(srcs) == 0 && len(allTSRules(bld)) == 0 { - // No TypeScript rules/sources, no need to update anything - return false, nil - } - updateSources(bld, srcs) - - - return upd.maybeWriteBUILD(ctx, buildFilePath, bld) -} - -// updateBUILDAfterBlazeAnalyze applies the BUILD file updates that depend on blaze -// analyze's DependencyReports, most notably updating any rules' deps. -func (upd *Updater) updateBUILDAfterBlazeAnalyze(ctx context.Context, isRoot bool, - g3root string, buildFilePath string, bld *build.File, reports []*arpb.DependencyReport) (bool, error) { - platform.Infof("Updating deps") - if err := updateDeps(bld, reports); err != nil { - return false, err - } - - - platform.Infof("Setting library rule kinds") - if err := setLibraryRuleKinds(ctx, buildFilePath, bld); err != nil { - return false, err - } - return upd.maybeWriteBUILD(ctx, buildFilePath, bld) -} - -// IsTazeDisabledForDir checks if taze is disabled in the BUILD file in the dir, -// or if no BUILD file exists, in the closest ancestor BUILD -func IsTazeDisabledForDir(ctx context.Context, dir string) (bool, error) { - g3root, buildFilePath, workspaceRelativePath, err := getBUILDPath(ctx, dir) - if err != nil { - return false, err - } - - bld, err := readBUILD(ctx, buildFilePath, workspaceRelativePath) - if err != nil { - platform.Infof("Error reading building file!") - return false, err - } - - return isTazeDisabledInPackage(ctx, g3root, buildFilePath, workspaceRelativePath, bld) -} - -// CantProgressAfterWriteError reports that taze was run in an environment -// where it can't make writes to the file system (such as when taze is running -// as a service for cider) and the writes it made need to be visible to blaze analyze, -// so it can continue updating the BUILD file(s). In such a case, the caller should -// collect the writes using a custom UpdateFile function, and re-call taze after -// applying the writes. -type CantProgressAfterWriteError struct{} - -func (a *CantProgressAfterWriteError) Error() string { - return "running taze in a non-writable environment, can't continue until writes are applied" -} - -// UpdateBUILDOptions bundles options for the UpdateBUILD function. -type UpdateBUILDOptions struct { - // InNonWritableEnvironment boolean indicates to taze that the writes it makes - // won't be immediately visible to blaze analyze, so it cannot proceed normally. - // In this case, if it makes a write that needs to be visible to blaze analyze, it - // will return a CantProgressAfterWriteError, which indicates that the caller - // should apply the writes made to its UpdateFile function, and re-call UpdateBUILD - // after the writes have been applied. - InNonWritableEnvironment bool - // IsRoot indicates that the directory is a project's root directory, so a tsconfig - // rule should be created. - IsRoot bool -} - -// LatencyReport contains timing measurements of the functions that are called -// when running the presubmit on a package without any TypeScript (since we -// return early to avoid the latency of RAS analyze). -type LatencyReport struct { - GetBUILD, TazeDisabled, SubdirSrcs, AddSrcs time.Duration -} - -// UpdateBUILD drives the main process of creating/updating the BUILD file -// underneath path based on the available sources. Returns true if it modified -// the BUILD file, false if the BUILD file was up to date already. blazeAnalyze -// is used to run the underlying `blaze analyze` process. Returns another -// boolean that's true iff the package doesn't contain any TypeScript (source -// files or BUILD rules). -func (upd *Updater) UpdateBUILD(ctx context.Context, path string, options UpdateBUILDOptions) (bool, *LatencyReport, error) { - latencyReport := &LatencyReport{} - - // asynchronously glob for TS sources in the package, since it can be slow on - // a network file system. - globChan := make(chan globResult) - go func() { - platform.Infof("Globbing TS sources in %s", path) - srcs, err := globSources(ctx, path, []string{"ts", "tsx"}) - globChan <- globResult{srcs, err} - }() - - start := time.Now() - g3root, buildFilePath, workspaceRelativePath, err := getBUILDPath(ctx, path) - if err != nil { - return false, nil, err - } - - bld, err := readBUILD(ctx, buildFilePath, workspaceRelativePath) - if err != nil { - platform.Infof("Error reading building file!") - return false, nil, err - } - latencyReport.GetBUILD = time.Since(start) - - start = time.Now() - tazeDisabled, err := isTazeDisabledInPackage(ctx, g3root, buildFilePath, workspaceRelativePath, bld) - if err != nil { - return false, nil, err - } - latencyReport.TazeDisabled = time.Since(start) - if tazeDisabled { - return false, nil, nil - } - - start = time.Now() - hasSubdirSrcs, err := directoryOrAncestorHasSubdirectorySources(ctx, g3root, workspaceRelativePath, bld) - latencyReport.SubdirSrcs = time.Since(start) - if err != nil { - return false, nil, err - } - if hasSubdirSrcs { - return false, nil, &SubdirectorySourcesError{} - } - - if bld == nil { - // The BUILD file didn't exist, so create a new, empty one. - bld = &build.File{Path: workspaceRelativePath, Type: build.TypeBuild} - } - - start = time.Now() - globRes := <-globChan - if globRes.err != nil { - return false, nil, globRes.err - } - changed, err := upd.addSourcesToBUILD(ctx, path, buildFilePath, bld, globRes.srcs) - latencyReport.AddSrcs = time.Since(start) - if err != nil { - return false, nil, err - } - if options.InNonWritableEnvironment && changed { - return true, nil, &CantProgressAfterWriteError{} - } - - rules := allTSRules(bld) - if len(rules) == 0 && !options.IsRoot { - // No TypeScript rules, no need to query for dependencies etc, so just exit early. - return changed, latencyReport, nil - } - rulesWithSrcs := []*build.Rule{} - for _, r := range rules { - srcs := r.Attr("srcs") - if srcs != nil { - if l, ok := srcs.(*build.ListExpr); ok && len(l.List) > 0 { - rulesWithSrcs = append(rulesWithSrcs, r) - } - } - } - platform.Infof("analyzing...") - reports, err := upd.runBlazeAnalyze(buildFilePath, bld, rulesWithSrcs) - if err != nil { - return false, nil, err - } - - - changedAfterBlazeAnalyze, err := upd.updateBUILDAfterBlazeAnalyze(ctx, options.IsRoot, g3root, buildFilePath, bld, reports) - if err != nil { - return false, nil, err - } - changed = changed || changedAfterBlazeAnalyze - if options.InNonWritableEnvironment && changed { - return true, nil, &CantProgressAfterWriteError{} - } - - return changed, nil, nil -} - -// buildHasDisableTaze checks if the BUILD file should be managed using taze. -// Users can disable taze by adding a "disable_taze()" (or "dont_taze_me()") statement. -func buildHasDisableTaze(bld *build.File) bool { - for _, stmt := range bld.Stmt { - if call, ok := stmt.(*build.CallExpr); ok { - if fnName, ok := call.X.(*build.Ident); ok && (fnName.Name == "disable_taze" || fnName.Name == "dont_taze_me") { - return true - } - } - } - return false -} - -// QueryBasedBlazeAnalyze uses blaze query to analyze targets. It is available under a flag or -// an environment variable on engineer's workstations. -func QueryBasedBlazeAnalyze(buildFilePath string, targets []string) ([]byte, []byte, error) { - root, err := workspace.Root(buildFilePath) - if err != nil { - return nil, nil, err - } - reports, err := analyze.New(analyze.NewQueryBasedTargetLoader(root, "blaze")).Analyze(context.Background(), buildFilePath, targets) - if err != nil { - return nil, nil, err - } - s, err := proto.Marshal(&arpb.AnalyzeResult{ - DependencyReport: reports, - }) - return s, nil, err -} - -type ruleType int - -const ( - ruleTypeAny ruleType = iota - ruleTypeRegular - ruleTypeTest - ruleTypeTestSupport -) - -// isKind returns true if the rule has given kind. It also accepts "ng_modules" -// as "ts_library" kind. -func isKind(r *build.Rule, kind string) bool { - acceptNgModule := kind == "ts_library" - - return r.Kind() == kind || (acceptNgModule && r.Kind() == "ng_module") -} - -func buildRules(bld *build.File, kind string) []*build.Rule { - // Find all rules, then filter by kind. - // This is nearly the same as just calling bld.Rules(kind), but allows to - // retrieve ng_module and ts_library intermixed, in the order in which they - // appear in the BUILD file. That allows taze to consistently always pick the - // last build rule in the file in case multiple match, regardless of kind. - allRules := bld.Rules("") - var res []*build.Rule - for _, r := range allRules { - if isKind(r, kind) { - res = append(res, r) - } - } - return res -} - -// hasDependency returns whether a build rule contains the specified dependency. -func hasDependency(bld *build.File, r *build.Rule, dep string) bool { - pkg := filepath.Dir(bld.Path) - oldDeps := r.Attr("deps") - if edit.ListFind(oldDeps, dep, pkg) != nil { - return true - } - runtimeDeps := r.Attr("runtime_deps") - return edit.ListFind(runtimeDeps, dep, pkg) != nil -} - -// addDep adds a dependency to the specified build rule -func addDep(bld *build.File, r *build.Rule, dep string) { - pkg := filepath.Dir(bld.Path) - dep = edit.ShortenLabel(dep, pkg) - if dep[0] != '/' && dep[0] != ':' { - dep = ":" + dep // ShortenLabel doesn't add the ':' - } - edit.AddValueToListAttribute(r, "deps", pkg, &build.StringExpr{Value: dep}, nil) -} - -// AbsoluteBlazeTarget converts a ruleName to an absolute target string (//foo/bar:bar). -// It interprets ruleName relative to the given build file's package. It -// supports plain names, names starting with colons, absolute paths, and -// absolute paths with shorthand target syntax (i.e. "bar", ":bar", "//foo/bar", -// "//foo/bar:bar"). -func AbsoluteBlazeTarget(bld *build.File, ruleName string) string { - if strings.HasPrefix(ruleName, "//") { - // already absolute - if colonIdx := strings.LastIndex(ruleName, ":"); colonIdx == -1 { - // expand shorthand syntax - return ruleName + ":" + ruleName[strings.LastIndex(ruleName, "/")+1:] - } - return ruleName - } - pkg := platform.Normalize(filepath.Dir(bld.Path)) - return fmt.Sprintf("//%s:%s", pkg, strings.TrimPrefix(ruleName, ":")) -} - -// Finds all ts_library and ts_declaration targets in the given BUILD file. -func allTSRules(bld *build.File) []*build.Rule { - var res []*build.Rule - res = append(res, buildRules(bld, "ts_library")...) - res = append(res, buildRules(bld, "ts_declaration")...) - return res -} - -// removeSourcesUsed removes sources used by rules of kind ruleKind in attribute -// attrName from the given set of sources. -func removeSourcesUsed(bld *build.File, ruleKind, attrName string, srcs srcSet) { - for _, rule := range buildRules(bld, ruleKind) { - for s := range srcs { - pkg := filepath.Dir(bld.Path) - // Handles ":foo.ts" references, and concatenated lists [foo.ts] + [bar.ts] - // TODO(martinprobst): What to do about sources that don't seem to exist? - if edit.ListFind(rule.Attr(attrName), s, pkg) != nil { - delete(srcs, s) - } - } - } -} - -const ( - tsSkylarkLabel = "//javascript/typescript:build_defs.bzl" - ngSkylarkLabel = "//javascript/angular2:build_defs.bzl" -) - -func removeUnusedLoad(bld *build.File, kind string) { - if len(bld.Rules(kind)) > 0 { - return // kind is still used somewhere. - } - var stmt []build.Expr - for _, s := range bld.Stmt { - load, ok := s.(*build.LoadStmt) - if !ok { - stmt = append(stmt, s) - continue - } - if len(load.To) == 0 { - // a load statement without actually loaded symbols, skip - continue - } - - - var from, to []*build.Ident - for i, ca := range load.To { - if ca.Name != kind { - from = append(from, load.From[i]) - to = append(to, ca) - } - } - load.From = from - load.To = to - if len(to) > 0 { - stmt = append(stmt, load) - continue - } - } - bld.Stmt = stmt -} - -// setLibraryRuleKinds sets the kinds for recognized library rules. That is, it -// determines if a rule should be an ng_module, and sets the -// rule kind if so. It also takes care of having the appropriate load calls. -func setLibraryRuleKinds(ctx context.Context, buildFilePath string, bld *build.File) error { - hasNgModule := false - changed := false - for _, r := range buildRules(bld, "ts_library") { - shouldBeNgModule := false - isNgModule := r.Call.X.(*build.Ident).Name == "ng_module" - if hasAngularDependency(r) { - shouldBeNgModule = true - hasNgModule = true - } - if isNgModule && !shouldBeNgModule { - platform.Infof("Changing rule %s to ts_library()", r.AttrString("name")) - r.Call.X.(*build.Ident).Name = "ts_library" - r.DelAttr("assets") - changed = true - } else if !isNgModule && shouldBeNgModule { - platform.Infof("Changing rule %s to ng_module()", r.AttrString("name")) - r.Call.X.(*build.Ident).Name = "ng_module" - changed = true - } - } - if changed { - bld.Stmt = edit.InsertLoad(bld.Stmt, ngSkylarkLabel, - []string{"ng_module"}, []string{"ng_module"}) - bld.Stmt = edit.InsertLoad(bld.Stmt, tsSkylarkLabel, - []string{"ts_library"}, []string{"ts_library"}) - removeUnusedLoad(bld, "ts_library") - removeUnusedLoad(bld, "ng_module") - } - if !hasNgModule { - return nil - } - return updateWebAssets(ctx, buildFilePath, bld) -} - -// hasAngularDependency returns true if the given rule depends on a Angular -// build rule. -func hasAngularDependency(r *build.Rule) bool { - e := r.Attr("deps") - for _, li := range edit.AllLists(e) { - for _, elem := range li.List { - str, ok := elem.(*build.StringExpr) - if ok && strings.HasPrefix(str.Value, "//third_party/javascript/angular2") { - return true - } - } - } - return false -} - -// updateWebAssets finds web assets in the package of the BUILD file and adds -// them to the "assets" attribute of the ng_module rules. -func updateWebAssets(ctx context.Context, buildFilePath string, bld *build.File) error { - // TODO(martinprobst): should this be merged with updateSources above? Difference is that - // creates new rules, this just distributes assets across them. - // This must use buildFilePath, the absolute path to the directory, as our cwd - // might not be the workspace root. - absolutePkgPath := filepath.Dir(buildFilePath) - assetFiles, err := globSources(ctx, absolutePkgPath, []string{"html", "css"}) - if err != nil { - return err - } - platform.Infof("Found asset files in %s: %v", absolutePkgPath, assetFiles) - - pkg := filepath.Dir(bld.Path) - for _, r := range bld.Rules("ng_module") { - srcs := r.Attr("assets") - if call, ok := srcs.(*build.CallExpr); ok && call.X.(*build.Ident).Name == "glob" { - // Remove any glob calls, taze uses explicit source lists. - r.DelAttr("assets") - } - - for _, s := range r.AttrStrings("assets") { - if strings.HasPrefix(s, ":") || strings.HasPrefix(s, "//") { - continue // keep rule references - } - if _, ok := assetFiles[s]; !ok { - edit.ListAttributeDelete(r, "assets", s, pkg) - } - } - } - - removeSourcesUsed(bld, "ng_module", "assets", assetFiles) - if len(assetFiles) == 0 { - return nil - } - - // Add to the last rule, to match behaviour with *.ts sources. - lastModule := getLastRule(bld, "ng_module", ruleTypeRegular) - if lastModule == nil { - // Fall back to using any ng_module - lastModule = getLastRule(bld, "ng_module", ruleTypeAny) - } - if lastModule == nil { - // Should not happen by preconditions of this function. - return fmt.Errorf("no ng_module rules in BUILD?") - } - - for newAsset := range assetFiles { - val := &build.StringExpr{Value: newAsset} - edit.AddValueToListAttribute(lastModule, "assets", pkg, val, nil) - } - return nil -} - -// getOrCreateRule returns or creates a rule of the given kind, with testonly = 1 or 0 depending on -// rt. If there's no such rule, it creates a new rule with the given ruleName. -// If there is more than one rule matching, it returns the *last* rule. -func getOrCreateRule(bld *build.File, ruleName, ruleKind string, rt ruleType) *build.Rule { - if r := getLastRule(bld, ruleKind, rt); r != nil { - return r - } - - // TODO(calebegg): Switch this to "_test" but still support "_tests" - if rt == ruleTypeTest { - ruleName += "_tests" - } - - loadArgs := []string{ruleKind} - bld.Stmt = edit.InsertLoad(bld.Stmt, tsSkylarkLabel, loadArgs, loadArgs) - - r := &build.Rule{&build.CallExpr{X: &build.Ident{Name: ruleKind}}, ""} - // Rename to *_ts if there's a name collision. This leaves open a collision with another rule - // called _ts, but that failure mode is unlikely to happen accidentally. - if edit.FindRuleByName(bld, ruleName) != nil { - ruleName = ruleName + "_ts" - } else if filepath.Base(filepath.Dir(bld.Path)) == ruleName { - // The various *_ajd macros do not have a "name" attribute, but implicitly use the package name. - // Make sure not to use the package name if there is a *_ajd rule. - for _, r := range bld.Rules("") { - if r.Name() == "" && strings.HasSuffix(r.Kind(), "_ajd") { - ruleName = ruleName + "_ts" - break - } - } - } - r.SetAttr("name", &build.StringExpr{Value: ruleName}) - if rt == ruleTypeTest || rt == ruleTypeTestSupport { - r.SetAttr("testonly", &build.Ident{Name: "True"}) - } - bld.Stmt = append(bld.Stmt, r.Call) - return r -} - -// ruleMatches return whether a rule matches the specified kind and rt value. -func ruleMatches(bld *build.File, r *build.Rule, kind string, rt ruleType) bool { - if !isKind(r, kind) { - return false - } - inTestingDir := determineRuleType(bld.Path, "somefile.ts") == ruleTypeTestSupport - hasTestsName := strings.HasSuffix(r.Name(), "_tests") - // Accept the rule if it matches the testonly attribute. - if rt == ruleTypeAny { - return true - } - if attrTruthy(r, "testonly") { - if inTestingDir && ((hasTestsName && rt == ruleTypeTest) || (!hasTestsName && rt == ruleTypeTestSupport)) { - return true - } - if !inTestingDir && rt == ruleTypeTest { - return true - } - } - return rt == ruleTypeRegular && !attrTruthy(r, "testonly") -} - -// targetRegisteredInRule returns whether a target has been registered in a rule that -// matches a specified ruleKind and ruleType in current build file -func targetRegisteredInRule(bld *build.File, ruleKind string, rt ruleType, target string) bool { - for _, r := range bld.Rules("") { - if ruleMatches(bld, r, ruleKind, rt) && hasDependency(bld, r, target) { - return true - } - } - return false -} - -// getRule returns the last rule in bld that has the given ruleKind and matches -// the specified rt value. -func getLastRule(bld *build.File, ruleKind string, rt ruleType) *build.Rule { - rules := getRules(bld, ruleKind, rt) - - if len(rules) == 0 { - return nil - } - - return rules[len(rules)-1] -} - -// getRules returns all the rules in bld that have the given ruleKind and -// matches the specified rt value. -func getRules(bld *build.File, ruleKind string, rt ruleType) []*build.Rule { - var rules []*build.Rule - for _, r := range bld.Rules("") { - if ruleMatches(bld, r, ruleKind, rt) { - rules = append(rules, r) - } - } - - return rules -} - -// FilterPaths filters the given paths, returning the deduplicated set of -// folders that contain TypeScript sources (.ts and .tsx) or BUILD files. -func FilterPaths(paths []string) []string { - fileSet := make(map[string]bool) - for _, p := range paths { - if !strings.HasSuffix(p, ".ts") && !strings.HasSuffix(p, ".tsx") && filepath.Base(p) != "BUILD" { - continue - } - fileSet[filepath.Dir(p)] = true - } - var newPaths []string - for k := range fileSet { - newPaths = append(newPaths, platform.Normalize(k)) - } - return newPaths -} - -// ResolvePackages resolves package paths, i.e. paths starting with '//', -// against the workspace root folder closest to the current working directory. -// It updates paths in place. -// It returns an error if it cannot find a workspace root or working directory. -func ResolvePackages(paths []string) error { - for i, p := range paths { - if strings.HasPrefix(p, "//") { - wd, err := os.Getwd() - if err != nil { - return fmt.Errorf("failed to get working directory: %v", err) - } - g3root, err := workspace.Root(wd) - if err != nil { - return fmt.Errorf("failed to find workspace root under %q: %v", wd, err) - } - paths[i] = filepath.Join(g3root, p) - } - } - return nil -} - -type noAncestorBUILDError struct{} - -func (nabe *noAncestorBUILDError) Error() string { - return "no ancestor BUILD file found" -} - -// FindBUILDFile searches for the closest parent BUILD file above pkg. It -// returns the parsed BUILD file, or an error if none can be found. -func FindBUILDFile(ctx context.Context, pkgToBUILD map[string]*build.File, - workspaceRoot string, packagePath string) (*build.File, error) { - if packagePath == "." || packagePath == "/" { - return nil, &noAncestorBUILDError{} - } - if bld, ok := pkgToBUILD[packagePath]; ok { - return bld, nil - } - buildPath := filepath.Join(workspaceRoot, packagePath, "BUILD") - bld, err := readBUILD(ctx, buildPath, filepath.Join(packagePath, "BUILD")) - if err != nil { - return nil, err - } else if bld == nil { - // Recursively search parent package and cache its location below if found. - bld, err = FindBUILDFile(ctx, pkgToBUILD, workspaceRoot, filepath.Dir(packagePath)) - } - if err == nil { - // NB: The cache key is packagePath ('foo/bar/baz'), even if build file was - // found at a higher location ('foo/BUILD'). This avoids re-testing for file - // existence. - pkgToBUILD[packagePath] = bld - } - return bld, err -} - -// Paths gets the list of paths for the current execution of taze. -func Paths(isRoot bool, files bool, recursive bool) ([]string, error) { - paths := flag.Args() - if len(paths) == 0 { - wd, err := os.Getwd() - if err != nil { - return nil, fmt.Errorf("failed to get working directory: %v", err) - } - paths = []string{wd} - } - - if len(paths) > 1 && isRoot { - return nil, fmt.Errorf("can only take exactly one path with -root") - } - - if files { - paths = FilterPaths(paths) - if len(paths) == 0 { - return nil, fmt.Errorf("WARNING: found no TypeScript files in %s", paths) - } - } - - if err := ResolvePackages(paths); err != nil { - return nil, fmt.Errorf("failed to resolve packages: %s", err) - } - - if recursive { - var lock sync.Mutex // guards allPaths - var allPaths []string - for _, p := range paths { - err := platform.Walk(p, func(path string, info os.FileMode) error { - if info.IsDir() { - lock.Lock() - allPaths = append(allPaths, path) - lock.Unlock() - } - return nil - }) - if err != nil { - return nil, fmt.Errorf("taze -recursive failed: %s", err) - } - } - sort.Sort(byLengthInverted(allPaths)) - paths = allPaths - } - - return paths, nil -} - -// Execute runs taze on paths using host. -func Execute(host *Updater, paths []string, isRoot, recursive bool) error { - ctx := context.Background() - for i, p := range paths { - isLastAndRoot := isRoot && i == len(paths)-1 - changed, _, err := host.UpdateBUILD(ctx, p, UpdateBUILDOptions{InNonWritableEnvironment: false, IsRoot: isLastAndRoot}) - if err != nil { - if recursive { - return fmt.Errorf("taze failed on %s/BUILD: %s", p, err) - } - return fmt.Errorf("taze failed: %s", err) - } - if changed { - if filepath.Base(p) == "BUILD" { - fmt.Printf("Wrote %s\n", p) - } else { - fmt.Printf("Wrote %s\n", filepath.Join(p, "BUILD")) - } - } - } - host.RegisterTestRules(ctx, paths...) - return nil -} - -// allPaths walks the file system and returns a list of all directories under -// all paths. -func allPaths(paths []string) ([]string, error) { - var allPaths []string - for _, p := range paths { - err := filepath.Walk(p, func(path string, info os.FileInfo, err error) error { - if err == nil && info.IsDir() { - allPaths = append(allPaths, path) - } - return err - }) - if err != nil { - return nil, err - } - } - sort.Sort(byLengthInverted(allPaths)) - return allPaths, nil -} - -type byLengthInverted []string - -func (s byLengthInverted) Len() int { return len(s) } -func (s byLengthInverted) Swap(i, j int) { s[i], s[j] = s[j], s[i] } -func (s byLengthInverted) Less(i, j int) bool { return len(s[i]) > len(s[j]) } diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go deleted file mode 100644 index 38c9740132..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/updater/updater_test.go +++ /dev/null @@ -1,564 +0,0 @@ -package updater - -import ( - "context" - "io/ioutil" - "os" - "path/filepath" - "reflect" - "strings" - "testing" - - "google3/net/proto2/go/proto" - "google3/third_party/bazel_buildifier/build/build" - - arpb "google3/third_party/bazel_rules/rules_typescript/ts_auto_deps/proto/analyze_result_go_proto" -) - -var ( - testTmpDir = os.Getenv("TEST_TMPDIR") -) - -func mktmp(fn string, content []byte) (string, error) { - p := fn - if !filepath.IsAbs(p) { - p = filepath.Join(testTmpDir, fn) - } - if err := os.MkdirAll(filepath.Dir(p), 0777); err != nil { - return "", err - } - return p, ioutil.WriteFile(p, content, 0666) -} - -func TestReadBuild(t *testing.T) { - p, err := mktmp("google3/foo/bar/BUILD", []byte(` -ts_library(name = 'a', srcs = ['b.ts']) -`)) - if err != nil { - t.Fatal(err) - } - bld, err := readBUILD(context.Background(), p, "foo/bar/BUILD") - if err != nil { - t.Fatal(err) - } - if bld.Path != "foo/bar/BUILD" { - t.Errorf("bld.Path: got %s, expected %s", bld.Path, "foo/bar/BUILD") - } -} - -func TestGlobSources(t *testing.T) { - for _, f := range []string{"a.ts", "a/b.ts", "c.tsx", "whatever", "foo.cpp", "d.d.ts", "._e.ts"} { - if _, err := mktmp(f, []byte("// content")); err != nil { - t.Fatal(err) - } - } - if err := os.Symlink("../blaze-bin/symlink.d.ts", filepath.Join(testTmpDir, "symlink.d.ts")); err != nil { - t.Fatal(err) - } - if err := os.Symlink("whatever", filepath.Join(testTmpDir, "whatever.d.ts")); err != nil { - t.Fatal(err) - } - srcs, err := globSources(context.Background(), testTmpDir, []string{"ts", "tsx"}) - if err != nil { - t.Fatal(err) - } - expected := srcSet(map[string]bool{ - "a.ts": true, - "c.tsx": true, - "d.d.ts": true, - "whatever.d.ts": true, - }) - if !reflect.DeepEqual(srcs, expected) { - t.Errorf("globSources: got %v, want %v", srcs, expected) - } -} - -func TestDetermineRuleType(t *testing.T) { - tests := []struct { - path string - source string - rt ruleType - }{ - {"java/com/google/myapp/BUILD", "foo.ts", ruleTypeRegular}, - {"java/com/google/myapp/BUILD", "foo_test.ts", ruleTypeTest}, - {"java/com/google/myapp/BUILD", "foo_test.tsx", ruleTypeTest}, - - - {"java/com/google/testing/mytesttool/BUILD", "foo.ts", ruleTypeRegular}, - {"testing/mytesttool/BUILD", "foo.ts", ruleTypeRegular}, - {"testing/mytesttool/BUILD", "foo_test.ts", ruleTypeTest}, - {"testing/mytesttool/BUILD", "foo_test.ts", ruleTypeTest}, - } - for _, tst := range tests { - rt := determineRuleType(tst.path, tst.source) - if rt != tst.rt { - t.Errorf("determineRuleType(%q, %q): got %v, expected %v", tst.path, tst.source, rt, tst.rt) - } - } -} - -func parseReport(t *testing.T, input string) *arpb.DependencyReport { - report := &arpb.DependencyReport{} - if err := proto.UnmarshalText(input, report); err != nil { - t.Error(err) - } - return report -} - -func TestBlazeAnalyzeError(t *testing.T) { - bld, err := build.ParseBuild("rules/BUILD", []byte(` -ts_library( - name = "firstrule", - srcs = [], -) -ts_library( - name = "secondrule", - srcs = [], -) - `)) - if err != nil { - t.Fatal(err) - } - mockAnalyze := func(_ string, targets []string) ([]byte, []byte, error) { - data, err := proto.Marshal(&arpb.AnalyzeResult{ - DependencyReport: []*arpb.DependencyReport{&arpb.DependencyReport{ - Rule: proto.String("//rules:firstrule"), - }}, - }) - return data, []byte(`Here's the actual error`), err - } - upd := &Updater{} - upd.blazeAnalyze = mockAnalyze - report, err := upd.runBlazeAnalyze("firstrule/BUILD", bld, bld.Rules("ts_library")) - if err == nil { - t.Fatalf("expected an error, got a report: %v", report) - } - expected := `parsing reports failed (1 reports for [//rules:firstrule //rules:secondrule]): -Here's the actual error` - if err.Error() != expected { - t.Errorf("runBlazeAnalyze: got %q, expected %q", err.Error(), expected) - } -} - -func TestUpdateDeps(t *testing.T) { - report := parseReport(t, ` - rule: "//foo:bar" - unnecessary_dependency: "//unnecessary_dep" - missing_dependency_group: { - dependency: "//missing_dep" - } - missing_source_file: "missing_file.ts"`) - - tests := []struct { - name string - before string - after string - changed bool - }{ - { - "Add missing dependency", - `ts_library( - name = "bar", - deps = [], - )`, - `ts_library( - name = "bar", - deps = ["//missing_dep"], - )`, - true, - }, - { - "Remove + Add dependency", - `ts_library( - name = "bar", - deps = ["//unnecessary_dep"], - )`, - `ts_library( - name = "bar", - deps = ["//missing_dep"], - )`, - true, - }, - { - "Remove nonexistent dep (e.g. due to macro)", - `ts_library( - name = "bar", - deps = ["//missing_dep"], - )`, - `ts_library( - name = "bar", - deps = ["//missing_dep"], - )`, - false, // Unchanged! - }, - { - "Remove nonexistent src", - `ts_library( - name = "bar", - srcs = ["hello.ts"], - deps = ["//missing_dep"], - )`, - `ts_library( - name = "bar", - srcs = ["hello.ts"], - deps = ["//missing_dep"], - )`, - false, // Unchanged! - }, - } - for _, tst := range tests { - bld, err := build.ParseBuild("foo/BUILD", []byte(tst.before)) - if err != nil { - t.Errorf("parse %s failed: %s in %s", tst.name, err, tst.before) - } - bldAft, err := build.ParseBuild("foo/BUILD", []byte(tst.after)) - if err != nil { - t.Errorf("parse %s after failed: %s", tst.name, err) - } - if err := updateDeps(bld, []*arpb.DependencyReport{report}); err != nil { - t.Errorf("update %s failed: %s", tst.name, err) - } - updated := string(build.Format(bld)) - after := string(build.Format(bldAft)) - if updated != after { - t.Errorf("update(%s), got:\n%s\n\nexpected:\n%s", tst.name, updated, after) - } - } -} - -func TestUnresolvedImportError(t *testing.T) { - report := parseReport(t, ` - rule: "//foo:bar" - unresolved_import: "unresolved/import"`) - - bld, err := build.ParseBuild("foo/BUILD", []byte(`ts_library( - name = "bar", - srcs = ["hello.ts"], - )`)) - if err != nil { - t.Fatal(err) - } - - expectedErr := "'// from ...'' comment, or the target BUILD files are incorrect?" - - err = updateDeps(bld, []*arpb.DependencyReport{report}) - if !strings.Contains(err.Error(), expectedErr) { - t.Errorf("returned error %s: expected it to contain %s", err, expectedErr) - } -} - -func TestDottedCall(t *testing.T) { - // Repro for a crash, b/35389044 - buildText := `foo.bar("baz")` - bld, err := build.ParseBuild("test", []byte(buildText)) - if err != nil { - t.Error(err) - } - removeUnusedLoad(bld, "ignored") -} - -func TestFilterPaths(t *testing.T) { - tests := []struct { - in []string - expected []string - }{ - {[]string{"foo/bar.txt", "foo/baz.ts"}, []string{"foo"}}, - {[]string{"bam.ts"}, []string{"."}}, - {[]string{"foo/BUILD"}, []string{"foo"}}, - {[]string{"r/foo.tsx"}, []string{"r"}}, - {[]string{"../../x.ts"}, []string{"../.."}}, - {[]string{"a.txt", "foo/b.txt"}, []string(nil)}, - } - for _, tst := range tests { - res := FilterPaths(tst.in) - if !reflect.DeepEqual(res, tst.expected) { - t.Errorf("FilterPaths(%v): got %v, expected %v", tst.in, res, tst.expected) - } - } -} - -func TestAddDep(t *testing.T) { - tests := []struct { - buildFile string - newDep string - expected string - }{ - {`ts_library(name = "lib", deps = ["//a", "//b", "//c"])`, - "//b", - `ts_library(name = "lib", deps = ["//a", "//b", "//c"])`}, - {`ts_library(name = "lib", deps = ["//a", "//b", "//c"])`, - "//d", - `ts_library(name = "lib", deps = ["//a", "//b", "//c", "//d"])`}, - {`ts_library(name = "lib", deps = ["//a", ":b", "//c"])`, - ":b", - `ts_library(name = "lib", deps = ["//a", ":b", "//c"])`}, - {`ts_library(name = "lib", deps = ["//a", ":b", "//c"])`, - "//buildloc:b", - `ts_library(name = "lib", deps = ["//a", ":b", "//c"])`}, - {`ts_library(name = "lib", deps = ["//a", "//buildloc:b", "//c"])`, - ":b", - `ts_library(name = "lib", deps = ["//a", "//buildloc:b", "//c"])`}, - {`ts_library(name = "lib", deps = ["//a", "//other:b", "//c"])`, - ":b", - `ts_library(name = "lib", deps = [":b", "//a", "//other:b", "//c"])`}, - {`ts_library(name = "lib", deps = ["//a", "//other:b", "//c"])`, - "//a:a", - `ts_library(name = "lib", deps = ["//a", "//other:b", "//c"])`}, - } - for _, tst := range tests { - bld, err := build.ParseBuild("buildloc/BUILD", []byte(tst.buildFile)) - if err != nil { - t.Fatalf("parse failure: %s - %v", tst.buildFile, err) - } - addDep(bld, bld.Rules("ts_library")[0], tst.newDep) - newContent := string(build.Format(bld)) - expectedBld, err := build.ParseBuild("buildloc/BUILD", []byte(tst.expected)) - if err != nil { - t.Fatalf("parse failure: %s - %v", tst.expected, err) - } - expected := string(build.Format(expectedBld)) - if newContent != expected { - t.Errorf("addDep(%s, %s): got %v, expected %v", tst.buildFile, tst.newDep, newContent, tst.expected) - } - } -} - -func TestRemoveSourcesUsed(t *testing.T) { - tests := []struct { - name string - buildFile string - ruleKind string - attrName string - srcs srcSet - expectedSrcs srcSet - }{ - { - name: "RemovesSources", - buildFile: `ts_library(name = "lib", srcs = ["foo.ts", "bar.ts"])`, - ruleKind: "ts_library", - attrName: "srcs", - srcs: map[string]bool{"foo.ts": true}, - expectedSrcs: map[string]bool{}, - }, - { - name: "WrongRuleKind", - buildFile: `ts_library(name = "lib", srcs = ["foo.ts", "bar.ts"])`, - ruleKind: "ng_module", - attrName: "srcs", - srcs: map[string]bool{"foo.ts": true}, - expectedSrcs: map[string]bool{"foo.ts": true}, - }, - { - name: "WrongAttrName", - buildFile: `ts_library(name = "lib", srcs = ["foo.ts", "bar.ts"])`, - ruleKind: "ts_library", - attrName: "deps", - srcs: map[string]bool{"foo.ts": true}, - expectedSrcs: map[string]bool{"foo.ts": true}, - }, - { - name: "MultipleRules", - buildFile: `ts_library(name = "lib", srcs = ["foo.ts"]) - ts_library(name = "lib2", srcs = ["bar.ts"])`, - ruleKind: "ts_library", - attrName: "srcs", - srcs: map[string]bool{"foo.ts": true, "bar.ts": true}, - expectedSrcs: map[string]bool{}, - }, - { - name: "ConcatenatedLists", - buildFile: `ts_library(name = "lib", srcs = ["foo.ts"] + ["bar.ts"])`, - ruleKind: "ts_library", - attrName: "srcs", - srcs: map[string]bool{"foo.ts": true, "bar.ts": true}, - expectedSrcs: map[string]bool{}, - }, - { - name: "ColonReferences", - buildFile: `ts_library(name = "lib", srcs = [":foo.ts", "bar.ts"])`, - ruleKind: "ts_library", - attrName: "srcs", - srcs: map[string]bool{"foo.ts": true}, - expectedSrcs: map[string]bool{}, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - bld, err := build.ParseBuild("foo/bar/BUILD", - []byte(test.buildFile)) - if err != nil { - t.Fatalf("parse failure: %v", err) - } - - removeSourcesUsed(bld, test.ruleKind, test.attrName, test.srcs) - if !reflect.DeepEqual(test.srcs, test.expectedSrcs) { - t.Errorf("expected removeSourcesUsed() = %v, expected %v", test.srcs, test.expectedSrcs) - } - }) - } -} - -func TestUpdateWebAssets(t *testing.T) { - ctx := context.Background() - bld, err := build.ParseBuild("foo/bar/BUILD", - []byte(`ng_module(name = "m", assets = [":rule", "gone.html"])`)) - if err != nil { - t.Fatalf("parse failure: %v", err) - } - testHTML, err := mktmp("google3/foo/bar/test.html", []byte(`

test

`)) - if err != nil { - t.Fatal(err) - } - defer func() { - if err := os.Remove(testHTML); err != nil { - t.Error(err) - } - }() - testCSS, err := mktmp("google3/foo/bar/test.css", []byte(`.test {}`)) - if err != nil { - t.Fatal(err) - } - defer func() { - if err := os.Remove(testCSS); err != nil { - t.Error(err) - } - }() - absoluteBuildPath := filepath.Join(filepath.Dir(testCSS), "BUILD") - if err := updateWebAssets(ctx, absoluteBuildPath, bld); err != nil { - t.Fatal(err) - } - data := string(build.Format(bld)) - expected := `ng_module( - name = "m", - assets = [ - ":rule", - "test.css", - "test.html", - ], -) -` - if data != expected { - t.Errorf("build file mismatch, got %s, expected %s", data, expected) - } -} - -func TestWebAssetReferredByColon(t *testing.T) { - ctx := context.Background() - bld, err := build.ParseBuild("foo/bar/BUILD", - []byte(`ng_module(name = "m", assets = [":colon.html"])`)) - if err != nil { - t.Fatalf("parse failure: %v", err) - } - colon, err := mktmp("google3/foo/bar/colon.html", []byte(`

test

`)) - if err != nil { - t.Fatal(err) - } - defer func() { - if err := os.Remove(colon); err != nil { - t.Error(err) - } - }() - absolutBuildPath := filepath.Join(filepath.Dir(colon), "BUILD") - if err := updateWebAssets(ctx, absolutBuildPath, bld); err != nil { - t.Error(err) - } - data := string(build.Format(bld)) - expected := `ng_module( - name = "m", - assets = [":colon.html"], -) -` - if data != expected { - t.Errorf("build file mismatch, got %s, expected %s", data, expected) - } -} - -func TestAbsoluteBlazeTarget(t *testing.T) { - bld := &build.File{Path: "foo/bar/BUILD", Type: build.TypeBuild} - tests := []struct{ target, expected string }{ - {"//foo/bar:bar", "//foo/bar:bar"}, - {":bar", "//foo/bar:bar"}, - {"bar", "//foo/bar:bar"}, - {"//foo/bar", "//foo/bar:bar"}, - } - for _, tst := range tests { - abs := AbsoluteBlazeTarget(bld, tst.target) - if abs != tst.expected { - t.Errorf("AbsoluteBlazeTarget(%q): got %q, expected %q", tst.target, abs, tst.expected) - } - } -} - -func TestFindBUILDFileCacheOnError(t *testing.T) { - ctx := context.Background() - cache := make(map[string]*build.File) - p, err := mktmp("google3/pkg/file", []byte("")) - if err != nil { - t.Fatal(err) - } - g3root := filepath.Dir(filepath.Dir(p)) - if filepath.Base(g3root) != "google3" { - t.Errorf("g3root should be called google3, got %q", g3root) - } - // No BUILD file was created in the file system so FindBUILDFile should - // return an error. - if _, err = FindBUILDFile(ctx, cache, g3root, "pkg"); err == nil { - t.Fatalf("returned no error, expected some error to occur") - } - if _, ok := cache["pkg"]; ok { - t.Fatalf("cache contained BUILD file for package") - } -} - -func TestHasSubdirectorySources(t *testing.T) { - tests := []struct { - name string - buildFile string - expected bool - }{ - { - name: "LocalSources", - buildFile: `ts_library(name = "lib", srcs = ["foo.ts", "bar.ts"])`, - expected: false, - }, - { - name: "SubdirectorySources", - buildFile: `ts_library(name = "lib", srcs = ["subdir/foo.ts", "subdir/bar.ts"])`, - expected: true, - }, - { - name: "LocalNgModuleSources", - buildFile: `ng_module(name = "lib", srcs = ["foo.ts", "bar.ts"])`, - expected: false, - }, - { - name: "SubdirectoryNgModuleSources", - buildFile: `ng_module(name = "lib", srcs = ["subdir/foo.ts", "subdir/bar.ts"])`, - expected: true, - }, - { - name: "LocalGlob", - buildFile: `ts_library(name = "lib", srcs = glob("*.ts"))`, - expected: false, - }, - { - name: "SubdirectoryGlob", - buildFile: `ts_library(name = "lib", srcs = glob("**/*.ts"))`, - expected: true, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - bld, err := build.ParseBuild("foo/bar/BUILD", - []byte(test.buildFile)) - if err != nil { - t.Fatalf("parse failure: %v", err) - } - - actual := hasSubdirectorySources(bld) - if actual != test.expected { - t.Errorf("got hasSubdirectorySouces() = %v, expected %v", actual, test.expected) - } - }) - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/workspace.go b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/workspace.go deleted file mode 100644 index db4d4fde46..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/workspace.go +++ /dev/null @@ -1,26 +0,0 @@ -package workspace - -import ( - "fmt" - "path/filepath" -) - -// Root finds the closest google3 root from p. -func Root(p string) (string, error) { - p, err := filepath.Abs(p) - if err != nil { - return "", fmt.Errorf("unable to determine google3 root from %s: %v", p, err) - } - - for step := p; step != "/" && step != "."; step = filepath.Dir(step) { - if filepath.Base(step) == "google3" { - return step, nil - } - } - return "", fmt.Errorf("unable to determine google3 root, no 'google3' in %s", p) -} - -// Name returns the name of the workspace. -func Name() string { - return "google3" -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/workspace.go.oss b/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/workspace.go.oss deleted file mode 100644 index c7f1ac2606..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/ts_auto_deps/workspace/workspace.go.oss +++ /dev/null @@ -1,13 +0,0 @@ -package workspace - -import "github.com/bazelbuild/buildtools/wspace" - -// Root finds the closest directory containing a WORKSPACE file from p. -func Root(p string) (string, error) { - return wspace.Find(p) -} - -// Name returns the name of the workspace. -func Name() string { - return "TODO" -} From 2520f0b3510e48ebf1e9b30cd60b2212f6223493 Mon Sep 17 00:00:00 2001 From: martinprobst Date: Mon, 2 Dec 2019 11:07:35 -0800 Subject: [PATCH 0675/1134] Add a test suite for json_marshal.bzl. PiperOrigin-RevId: 283376123 --- .../internal/common/json_marshal_test.bzl | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/common/json_marshal_test.bzl diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/json_marshal_test.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/json_marshal_test.bzl new file mode 100644 index 0000000000..6c4b475b4d --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/json_marshal_test.bzl @@ -0,0 +1,33 @@ +"""Unit tests for json marshaling. + +Note, this cannot live next to the file it tests, because that file is in +third_party bazel rules, and bazel doesn't support skylark testing yet. +""" + +load("//third_party/bazel_skylib/lib:unittest.bzl", "asserts", "unittest") +load("//third_party/bazel_rules/rules_typescript/internal:common/json_marshal.bzl", "json_marshal") + +def _test_impl(ctx): + env = unittest.begin(ctx) + asserts.equals(env, "\"abc\"", json_marshal("abc")) + asserts.equals(env, "123", json_marshal(123)) + asserts.equals(env, "true", json_marshal(True)) + asserts.equals(env, "false", json_marshal(False)) + asserts.equals(env, "\"//a:b\"", json_marshal(Label("//a:b"))) + asserts.equals(env, "[]", json_marshal([])) + asserts.equals(env, "{}", json_marshal({})) + asserts.equals(env, """[1, 2, 3]""", json_marshal([1, 2, 3])) + asserts.equals(env, """{"a": "b"}""", json_marshal({"a": "b"})) + asserts.equals(env, """{"none": false}""", json_marshal({"none": None})) + asserts.equals( + env, + """{"a": {"d": 1, "e": true, "f": ["f1", "f2"]}, "b": "val", "c": [{"g": false}]}""", + json_marshal({"a": {"d": 1, "e": True, "f": ["f1", "f2"]}, "b": "val", "c": [{"g": False}]}), + ) + + return unittest.end(env) + +_test = unittest.make(_test_impl) + +def json_marshal_test_suite(): + unittest.suite("json_marshal_tests", _test) From 5d9dc6d7529303bd27d1bb4c7ec7b323a04e4e8e Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Wed, 4 Dec 2019 10:47:10 -0800 Subject: [PATCH 0676/1134] Remove incompatible_depset_is_not_iterable from bazelrc This flag is default-on now, and is being removed in the next version of Bazel. Thus, this inclusion in bazelrc was breaking buildkite against Bazel@HEAD. PiperOrigin-RevId: 283787955 --- third_party/github.com/bazelbuild/rules_typescript/.bazelrc | 3 --- 1 file changed, 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelrc b/third_party/github.com/bazelbuild/rules_typescript/.bazelrc index 6005eaac95..01026c9242 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelrc +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelrc @@ -10,6 +10,3 @@ test --nolegacy_external_runfiles # Enable the "Managed Directories" feature common --experimental_allow_incremental_repository_updates - -# Opt-in to upcoming breaking change -build --incompatible_depset_is_not_iterable From c3ef55e4f829e36c7449e59d50490efeaebcb489 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 9 Dec 2019 11:39:35 -0800 Subject: [PATCH 0677/1134] Add a tsetse rule that disallows mutating exports This is illegal for goog.modules emitted by tsickle. This is not enabled by default. PiperOrigin-RevId: 284600418 --- .../internal/common/compilation.bzl | 2 +- .../internal/tsetse/checker.ts | 2 +- .../internal/tsetse/error_code.ts | 1 + .../tsetse/rules/ban_mutable_exports_rule.ts | 71 +++++++++++++++++++ .../tests/ban_mutable_exports/examples.ts | 30 ++++++++ 5 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_mutable_exports_rule.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_mutable_exports/examples.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index e815f37291..a2b6468652 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -17,7 +17,7 @@ load(":common/json_marshal.bzl", "json_marshal") load(":common/module_mappings.bzl", "module_mappings_aspect") -load("@build_bazel_rules_nodejs//:declaration_provider.bzl", "DeclarationInfo") +load("@build_bazel_rules_nodejs//:providers.bzl", "DeclarationInfo") _DEBUG = False diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts index 9eef4165a0..52d06f968c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts @@ -96,7 +96,7 @@ export class Checker { const thisChecker = this; this.currentSourceFile = sourceFile; this.failures = []; - ts.forEachChild(sourceFile, run); + run(sourceFile); return this.failures; function run(node: ts.Node) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts index 71ca712af3..87b7fd2e40 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts @@ -13,4 +13,5 @@ export enum ErrorCode { BAN_PROMISE_AS_CONDITION = 21226, PROPERTY_RENAMING_SAFE = 21227, CONFORMANCE_PATTERN = 21228, + BAN_MUTABLE_EXPORTS = 21229, } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_mutable_exports_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_mutable_exports_rule.ts new file mode 100644 index 0000000000..5b5716d805 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_mutable_exports_rule.ts @@ -0,0 +1,71 @@ +/** + * @fileoverview Bans 'export' of mutable variables. + * It is illegal to mutate them, so you might as well use 'const'. + */ + +import * as ts from 'typescript'; + +import {Checker} from '../checker'; +import {ErrorCode} from '../error_code'; +import {AbstractRule} from '../rule'; + +const MUTABLE_EXPORTS_EXCEPTION_FILES = [ + // Allow in d.ts files, which are modelling external JS that doesn't + // follow our rules. + '.d.ts', +]; + +export class Rule extends AbstractRule { + readonly ruleName = 'ban-mutable-exports'; + readonly code = ErrorCode.BAN_MUTABLE_EXPORTS; + + register(checker: Checker) { + // Strategy: take all the exports of the file, then look at whether + // they're const or not. This is simpler than the alternative of + // trying to match all the various kinds of 'export' syntax, such + // as 'export var ...', 'export {...}', 'export default ...'. + checker.on(ts.SyntaxKind.SourceFile, checkFile, this.code); + } +} + +function checkFile(checker: Checker, file: ts.SourceFile) { + if (MUTABLE_EXPORTS_EXCEPTION_FILES.some( + (suffix) => file.fileName.endsWith(suffix))) { + return; + } + const sym = checker.typeChecker.getSymbolAtLocation(file); + if (!sym) return; + const exports = checker.typeChecker.getExportsOfModule(sym); + for (const exp of exports) { + // In the case of + // let x = 3; export {x}; + // The exported symbol is the latter x, but we must dealias to + // the former to judge whether it's const or not. + let sym = exp; + if (sym.flags & ts.SymbolFlags.Alias) { + sym = checker.typeChecker.getAliasedSymbol(exp); + } + const decl = sym.valueDeclaration; + if (!decl) continue; // Skip e.g. type declarations. + + if (decl.getSourceFile() !== file) { + // Reexports are best warned about in the original file + continue; + } + + if (!ts.isVariableDeclaration(decl) && !ts.isBindingElement(decl)) { + // Skip e.g. class declarations. + continue; + } + + const isConst = (ts.getCombinedNodeFlags(decl) & ts.NodeFlags.Const) !== 0; + if (!isConst) { + // Note: show the failure at the exported symbol's declaration site, + // not the dealiased 'sym', so that the error message shows at the + // 'export' statement and not the variable declaration. + checker.addFailureAtNode( + exp.declarations[0], + `Exports must be const.`); + } + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_mutable_exports/examples.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_mutable_exports/examples.ts new file mode 100644 index 0000000000..c687cad562 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_mutable_exports/examples.ts @@ -0,0 +1,30 @@ +/** + * @fileoverview Examples for the mutable exports rule. + * We expect every 'bad' to be an error, and every 'ok' to pass. + * These are checked as expected diagnostics in the BUILD file. + */ + +export let bad1 = 3; +export var bad2 = 3; +export var bad3 = 3, bad4 = 3; +var bad5 = 3; +export {bad5}; +let bad6 = 3; +export {bad6}; +export {bad6 as bad6alias}; +var bad7 = 3; +export {bad7 as default}; +export let {bad8} = { + bad8: 3 +}; +export let bad9: unknown; + +let ok1 = 3; +var ok2 = 3; +export const ok3 = 3; +const ok4 = 3; +const ok5 = 3; +export {ok5}; +export type ok6 = string; +export function ok7() {} +export class ok8 {} From c0bf88ed915d7d50414323a53b93559f0c80e5a9 Mon Sep 17 00:00:00 2001 From: martinprobst Date: Thu, 12 Dec 2019 07:52:26 -0800 Subject: [PATCH 0678/1134] Fix compilation issues with strictBindCallApply. With strictBindCallApply, TS complains that the unknown[] is incompatible with the [any?, ...any] array expected by .error. The workaround is to just switch to `.call` with splat. PiperOrigin-RevId: 285190781 --- .../rules_typescript/internal/tsc_wrapped/worker.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts index 0bdb04cef5..f6bc505a9a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts @@ -19,7 +19,7 @@ export const DEBUG = false; /** Maybe print a debug message (depending on a flag defaulting to false). */ export function debug(...args: Array) { - if (DEBUG) console.error.apply(console, args); + if (DEBUG) console.error.call(console, ...args); } /** @@ -27,7 +27,7 @@ export function debug(...args: Array) { * the end user. */ export function log(...args: Array) { - console.error.apply(console, args); + console.error.call(console, ...args); } /** From b3c61750e8e17aacc17a822752c3f4e078f251f1 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Thu, 12 Dec 2019 13:49:36 -0800 Subject: [PATCH 0679/1134] n/a PiperOrigin-RevId: 285262975 --- .../internal/common/compilation.bzl | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index a2b6468652..c11b71c61a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -516,10 +516,23 @@ def compile_ts( }, } -# Converts a dict to a struct, recursing into a single level of nested dicts. -# This allows users of compile_ts to modify or augment the returned dict before -# converting it to an immutable struct. -def ts_providers_dict_to_struct(d): +def ts_providers_dict_to_struct(d, preserve_js_struct_field = False): + """ Converts a dict to a struct, recursing into a single level of nested dicts. + + This allows users of compile_ts to modify or augment the returned dict before + converting it to an immutable struct. + + Args: + d: the dict to convert + preserve_js_struct_field: whether to preserve the js provider as a "js" field. + Please only set this to True if you are using this struct in another provider. + e.g. MyProvider(some_field = ts_providers_dict_to_struct(d, preserve_js_struct_field = True)) + *Do not use* if returning the struct from a rule. + + Returns: + An immutable struct created from the input dict + """ + for key, value in d.items(): if key != "output_groups" and type(value) == type({}): From fb578b2b41a89bf14d08d0f8bcfe4c91f47dd147 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Fri, 13 Dec 2019 10:12:38 -0800 Subject: [PATCH 0680/1134] Minor code cleanup PiperOrigin-RevId: 285422043 --- .../internal/tsetse/rules/ban_mutable_exports_rule.ts | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_mutable_exports_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_mutable_exports_rule.ts index 5b5716d805..a4dc132c63 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_mutable_exports_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_mutable_exports_rule.ts @@ -9,12 +9,6 @@ import {Checker} from '../checker'; import {ErrorCode} from '../error_code'; import {AbstractRule} from '../rule'; -const MUTABLE_EXPORTS_EXCEPTION_FILES = [ - // Allow in d.ts files, which are modelling external JS that doesn't - // follow our rules. - '.d.ts', -]; - export class Rule extends AbstractRule { readonly ruleName = 'ban-mutable-exports'; readonly code = ErrorCode.BAN_MUTABLE_EXPORTS; @@ -29,8 +23,9 @@ export class Rule extends AbstractRule { } function checkFile(checker: Checker, file: ts.SourceFile) { - if (MUTABLE_EXPORTS_EXCEPTION_FILES.some( - (suffix) => file.fileName.endsWith(suffix))) { + // Allow in d.ts files, which are modelling external JS that doesn't + // follow our rules. + if (file.fileName.endsWith('.d.ts')) { return; } const sym = checker.typeChecker.getSymbolAtLocation(file); From 4db3cb1acb0cb68a459d6828d34204a733fa6c31 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Tue, 7 Jan 2020 07:59:41 -0800 Subject: [PATCH 0681/1134] Update to rules_nodejs 1.0.0 Closes #480 PiperOrigin-RevId: 288497658 --- .../bazelbuild/rules_typescript/BUILD.bazel | 4 +- .../bazelbuild/rules_typescript/package.bzl | 4 +- .../bazelbuild/rules_typescript/package.json | 10 +- .../bazelbuild/rules_typescript/yarn.lock | 139 ++++++++++-------- 4 files changed, 85 insertions(+), 72 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel index b0a0051807..3a519c580f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/BUILD.bazel @@ -19,7 +19,7 @@ # https://github.com/bazelbuild/rules_go/blob/master/go/tools/gazelle/README.rst#directives # gazelle:exclude node_modules load("@bazel_gazelle//:def.bzl", "gazelle") -load("@build_bazel_rules_nodejs//:index.bzl", "npm_package") +load("@build_bazel_rules_nodejs//:index.bzl", "pkg_npm") exports_files([ "LICENSE", @@ -32,7 +32,7 @@ gazelle( ) # This package is included in the npm_bazel_typescript package in rules_nodejs/packages/typescript -npm_package( +pkg_npm( name = "npm_bazel_typescript_package", srcs = [ "//internal:npm_package_assets", diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index e1c4bb3e6f..cb33eab92d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -30,8 +30,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - sha256 = "26c39450ce2d825abee5583a43733863098ed29d3cbaebf084ebaca59a21a1c8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.39.0/rules_nodejs-0.39.0.tar.gz"], + sha256 = "3887b948779431ac443e6a64f31b9e1e17b8d386a31eebc50ec1d9b0a6cabd2b", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/1.0.0/rules_nodejs-1.0.0.tar.gz"], ) # For protocol buffers diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index 320fed5696..c87382d832 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,11 +3,11 @@ "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", "devDependencies": { - "@bazel/bazel": "^0.26.0", - "@bazel/buildifier": "^0.20.0", - "@bazel/ibazel": "^0.2.0", - "@bazel/jasmine": "^0.39.0", - "@bazel/typescript": "^0.39.0", + "@bazel/bazel": "^2.0.0", + "@bazel/buildifier": "^0.29.0", + "@bazel/ibazel": "^0.11.0", + "@bazel/jasmine": "^1.0.0", + "@bazel/typescript": "^1.0.0", "@types/jasmine": "^2.8.2", "@types/long": "^4.0.0", "@types/node": "10.12.20", diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index 41251e7e95..0d685afb2a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -2,66 +2,79 @@ # yarn lockfile v1 -"@bazel/bazel-darwin_x64@0.26.0": - version "0.26.0" - resolved "https://registry.yarnpkg.com/@bazel/bazel-darwin_x64/-/bazel-darwin_x64-0.26.0.tgz#24660853a01e286359636025618a1fda1aa978e1" - integrity sha512-9qcRlTW9g8TPJ1PWYIkNDUMsEjdhN4sJz5fDjva3GM7mnIST0sgJiRRW5Y9L3Ksv9+jNWmIOlj5wsibAUYyb5w== - -"@bazel/bazel-linux_x64@0.26.0": - version "0.26.0" - resolved "https://registry.yarnpkg.com/@bazel/bazel-linux_x64/-/bazel-linux_x64-0.26.0.tgz#9302b6df4363b5c492f2755174988935b84fb076" - integrity sha512-v9RTFIZb/A8Ej0Q1uCc/uTCRFZIRGqQpBVLO9Vqkbg4kScND9FxAI2RO0bv3Zhz7YTXBvJ8+kSfd/DY+0azwsA== - -"@bazel/bazel-win32_x64@0.26.0": - version "0.26.0" - resolved "https://registry.yarnpkg.com/@bazel/bazel-win32_x64/-/bazel-win32_x64-0.26.0.tgz#ae878cf2aae0ad9799141e554c47417f426c1aa7" - integrity sha512-hmhuWQUzTmVLDusSt701LFzkWoRdEsakDtEGKgIuQuAJ7zqwH8QUn3PpWIg5BA0qF0gxJBKMfTHGvNhMft3pmg== - -"@bazel/bazel@^0.26.0": - version "0.26.0" - resolved "https://registry.yarnpkg.com/@bazel/bazel/-/bazel-0.26.0.tgz#651513d5e11198f4c911024fdd57e76e0742fe9d" - integrity sha512-vxm3nuvYu97NRVkcRBfuLHqDytykCazZaTX13j+Ssqg0XIuuIiewTXGNKq2lcxeydJnscArMyYEv+gyXpexHDA== +"@bazel/bazel-darwin_x64@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/bazel-darwin_x64/-/bazel-darwin_x64-2.0.0.tgz#bd678069216dd470c6816a22c405f21e7f048038" + integrity sha512-I/pP+B+2xfY0g+OEpEcVnk8rizuC761pAzBOQjP3b+gz3AzeRgm05CpcSY7tfPIppMSYoy3uTZJ1XlwgUg7IQQ== + +"@bazel/bazel-linux_x64@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/bazel-linux_x64/-/bazel-linux_x64-2.0.0.tgz#2c76e3301e9178a90ec3ad00649e89b953eda0b7" + integrity sha512-iOr45G+511IbP7e+ISriG97WpfCAVXekTrTgL5mGg3NDBFCVNs350VquHAvmlXAoP5+IEug2pCOlkdEl4bLl8g== + +"@bazel/bazel-win32_x64@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/bazel-win32_x64/-/bazel-win32_x64-2.0.0.tgz#f12ac0738d2eac0fd255f099776194807cedfe50" + integrity sha512-5qs2qoa/paG/YYEM0yvrwuJIShoPVK2FX+Oz9jEWAQJsmU4drHA9Aq+gbBOirEFLmvYhleZ9XORCwu/5uAo8vA== + +"@bazel/bazel@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/bazel/-/bazel-2.0.0.tgz#feb8cf5a40ea6437ef69cac2a92072118b11c230" + integrity sha512-KQbv5dHNSfutbhXCc3KVMuBXPpUh6Af/hT9IRIaMTuiB6Nq2gEW9Z3aNqncopdZqV848V/qYxnqPnQ+S37fMyQ== + dependencies: + "@bazel/hide-bazel-files" latest optionalDependencies: - "@bazel/bazel-darwin_x64" "0.26.0" - "@bazel/bazel-linux_x64" "0.26.0" - "@bazel/bazel-win32_x64" "0.26.0" - -"@bazel/buildifier-darwin_x64@0.20.0": - version "0.20.0" - resolved "https://registry.yarnpkg.com/@bazel/buildifier-darwin_x64/-/buildifier-darwin_x64-0.20.0.tgz#1aeceb5a1a57a62eef6415377dbe95091781a7d4" - integrity sha512-yV7niwbdpDDPUw1vgyk1wIjPl3+YOM4o5FPgFmnFgzf48JUqrF3PK6Blg95Z8SqGOVoJAOChRC1GvopzEUzwZA== - -"@bazel/buildifier-linux_x64@0.20.0": - version "0.20.0" - resolved "https://registry.yarnpkg.com/@bazel/buildifier-linux_x64/-/buildifier-linux_x64-0.20.0.tgz#8cb6c8f999dbd8a9ee183906f202b698571d771b" - integrity sha512-djbBtcacgERWZoxjEm8lGmMyEaOYB3moiz0kioHTQc2F96wNLfm6Cikd4Ojrcj5VNQCMW9oy3YFTu+c5mIrCcA== - -"@bazel/buildifier@^0.20.0": - version "0.20.0" - resolved "https://registry.yarnpkg.com/@bazel/buildifier/-/buildifier-0.20.0.tgz#24a10e485fe65dbd75ef812cf37635df1fb91d0d" - integrity sha512-dahQRtE1KEp+efUV23q/JtOCSbQEk5C/+H3J33g8wP5roxMUa8mfDto85eloJ+gRPW7yOybxknuRYc4KSpgT7w== + "@bazel/bazel-darwin_x64" "2.0.0" + "@bazel/bazel-linux_x64" "2.0.0" + "@bazel/bazel-win32_x64" "2.0.0" + +"@bazel/buildifier-darwin_x64@0.29.0": + version "0.29.0" + resolved "https://registry.yarnpkg.com/@bazel/buildifier-darwin_x64/-/buildifier-darwin_x64-0.29.0.tgz#13dfaf3ea4d89f9d4da00085e894e90b7d302342" + integrity sha512-jiQIZo5z1c8oFokD2jObrkB04Bs+7RaUJ6WlHV9BBeJiRMGfRVUBUrOF5eJPk6VB8qknIOfHvJD/Ym5XUc1Zlw== + +"@bazel/buildifier-linux_x64@0.29.0": + version "0.29.0" + resolved "https://registry.yarnpkg.com/@bazel/buildifier-linux_x64/-/buildifier-linux_x64-0.29.0.tgz#0191fc46735a1c281878642673844f2b717cd8dc" + integrity sha512-sXXY0gP4oC1nC1G8Baqd7kyBL/y9/qOqftKSkDe2Y7gBoc9GslwyexwDxTSxK0Gun/4Vcvc2eRu7b83hMOxuag== + +"@bazel/buildifier-win32_x64@0.29.0": + version "0.29.0" + resolved "https://registry.yarnpkg.com/@bazel/buildifier-win32_x64/-/buildifier-win32_x64-0.29.0.tgz#a63438c7a7d2dc593e626ed6e163e9d8ea93917a" + integrity sha512-hnOQfPhQNAIqbrhsHT3MWAyAZSUhKwxzEuZJZoOsGrW8fPonhKysdvfZJqfqJ6vDVYaMJKvLnSO1c9QZRhU7kQ== + +"@bazel/buildifier@^0.29.0": + version "0.29.0" + resolved "https://registry.yarnpkg.com/@bazel/buildifier/-/buildifier-0.29.0.tgz#7984739270c8d1dd23650f87a810e1e6367188d9" + integrity sha512-skJ7vVff7x3tB8crBCtJji2wU09uH0uD2N30xfOpVUgsMJSXktAQMj8+RPdMBqJQ9XS5+O5lmRthR35Ua7xQXA== optionalDependencies: - "@bazel/buildifier-darwin_x64" "0.20.0" - "@bazel/buildifier-linux_x64" "0.20.0" + "@bazel/buildifier-darwin_x64" "0.29.0" + "@bazel/buildifier-linux_x64" "0.29.0" + "@bazel/buildifier-win32_x64" "0.29.0" -"@bazel/ibazel@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.2.0.tgz#c119aef4344a789cef5e792caaee52264123e71c" - integrity sha1-wRmu9DRKeJzvXnksqu5SJkEj5xw= +"@bazel/hide-bazel-files@latest": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@bazel/hide-bazel-files/-/hide-bazel-files-1.0.0.tgz#779070dcb5ae121ff6c72d73bf3fb7bf68285d75" + integrity sha512-dfw2W7xDUPlRMcDMVO8gDkX9Xb7Thy3sP4PDODv+eiHOvwIi116X/wwy7mQUZISkJdEJ1zWy9ydpzvfetpYh4w== -"@bazel/jasmine@^0.32.0": - version "0.32.0" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-0.32.0.tgz#afbb3b7cb3aeabd55324962dec3253841ed617ee" - integrity sha512-yzXqa9lP+su6lqqFJbhcdvHOCgfgIm6zMt8i1doZU8O/RkefAWj2nv+8gY8dPGMMByB6herV/5QAowB88d6ZAA== +"@bazel/ibazel@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.11.0.tgz#6879c8032f5bee81ca632456304c16525160f47f" + integrity sha512-UOSMb29SjjXrs7VTn6eOAO2anmAgUC3hrsKwW3XyFV4pQdd71d0wjRqz36Vao4ICWXZcv4C6mRuVH2VCfZmG1w== + +"@bazel/jasmine@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-1.0.0.tgz#12aa82c0e4b7b5658e9e496b73c0cf660df2b0ae" + integrity sha512-cheQWMYs0PaS4kYwJC9tmAiyd0tLbPNcgoM+S8plNUp5k0gUVosCvQ0TOrxvRlKEY0ni1hdn9owPx2rUO1J+Wg== dependencies: - jasmine "~3.3.1" - jasmine-core "~3.3.0" + jasmine "~3.4.0" + jasmine-core "~3.4.0" v8-coverage "1.0.9" -"@bazel/typescript@^0.32.0": - version "0.32.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.32.0.tgz#648be4c63302cac95552c74d17c708adbcc4c366" - integrity sha512-D2wlWanIDiagj50GetmbIeXN73XSG3E5eIhlDNL1atHe4ZPo7rODJGfI1Yme9xD71nbDL7WjwH15wYOfeoWNhA== +"@bazel/typescript@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-1.0.0.tgz#2c7318b9a3aaa730f282b094ddf41dd16fda7b5a" + integrity sha512-caNOKz7EjVMgbedjVTreao9++9Sb9oYlU2nqDOMIK8MyoOUQvgGQWhFwF65XXGSb79Tzv8kaFQskoaH/iAs4ng== dependencies: protobufjs "6.8.8" semver "5.6.0" @@ -1812,10 +1825,10 @@ jasmine-core@2.8.0, jasmine-core@~2.8.0: resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= -jasmine-core@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.3.0.tgz#dea1cdc634bc93c7e0d4ad27185df30fa971b10e" - integrity sha512-3/xSmG/d35hf80BEN66Y6g9Ca5l/Isdeg/j6zvbTYlTzeKinzmaTM4p9am5kYqOmE05D7s1t8FGjzdSnbUbceA== +jasmine-core@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.4.0.tgz#2a74618e966026530c3518f03e9f845d26473ce3" + integrity sha512-HU/YxV4i6GcmiH4duATwAbJQMlE0MsDIR5XmSVxURxKHn3aGAdbY1/ZJFmVRbKtnLwIxxMJD7gYaPsypcbYimg== jasmine@^2.5.3: version "2.8.0" @@ -1826,13 +1839,13 @@ jasmine@^2.5.3: glob "^7.0.6" jasmine-core "~2.8.0" -jasmine@~3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.3.1.tgz#d61bb1dd8888859bd11ea83074a78ee13d949905" - integrity sha512-/vU3/H7U56XsxIXHwgEuWpCgQ0bRi2iiZeUpx7Nqo8n1TpoDHfZhkPIc7CO8I4pnMzYsi3XaSZEiy8cnTfujng== +jasmine@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.4.0.tgz#0fa68903ff0c9697459cd044b44f4dcef5ec8bdc" + integrity sha512-sR9b4n+fnBFDEd7VS2el2DeHgKcPiMVn44rtKFumq9q7P/t8WrxsVIZPob4UDdgcDNCwyDqwxCt4k9TDRmjPoQ== dependencies: - glob "^7.0.6" - jasmine-core "~3.3.0" + glob "^7.1.3" + jasmine-core "~3.4.0" jasminewd2@^2.1.0: version "2.2.0" From 6d046725a4c8f08eca29623c20cb3b2fc0f4ff7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2020 08:31:39 -0800 Subject: [PATCH 0682/1134] Bump handlebars from 4.1.2 to 4.5.3 Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.1.2 to 4.5.3. - [Release notes](https://github.com/wycats/handlebars.js/releases) - [Changelog](https://github.com/wycats/handlebars.js/blob/master/release-notes.md) - [Commits](https://github.com/wycats/handlebars.js/compare/v4.1.2...v4.5.3) Signed-off-by: dependabot[bot] Closes #479 PiperOrigin-RevId: 288502738 --- .../bazelbuild/rules_typescript/yarn.lock | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index 0d685afb2a..f60c13d228 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -707,10 +707,10 @@ commander@2.6.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d" integrity sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0= -commander@~2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commander@~2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== component-bind@1.0.0: version "1.0.0" @@ -1367,9 +1367,9 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2: integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= handlebars@^4.0.3: - version "4.1.2" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" - integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== + version "4.5.3" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" + integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== dependencies: neo-async "^2.6.0" optimist "^0.6.1" @@ -1484,7 +1484,7 @@ hosted-git-info@^2.1.4: http-errors@1.6.3, http-errors@~1.6.3: version "1.6.3" - resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= dependencies: depd "~1.1.2" @@ -2178,7 +2178,7 @@ minimatch@^3.0.2, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8, minimist@~0.0.1: +minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= @@ -2188,6 +2188,11 @@ minimist@^1.1.0, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + minipass@^2.2.1, minipass@^2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957" @@ -2734,7 +2739,7 @@ read-pkg@^3.0.0: readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.0: version "2.3.6" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== dependencies: core-util-is "~1.0.0" @@ -2747,7 +2752,7 @@ readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.0: readable-stream@~2.0.6: version "2.0.6" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= dependencies: core-util-is "~1.0.0" @@ -3506,11 +3511,11 @@ typescript@~3.1.6: integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== uglify-js@^3.1.4: - version "3.5.15" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.5.15.tgz#fe2b5378fd0b09e116864041437bff889105ce24" - integrity sha512-fe7aYFotptIddkwcm6YuA0HmknBZ52ZzOsUxZEdhhkSsz7RfjHDX2QDxwKTiv4JQ5t5NhfmpgAK+J7LiDhKSqg== + version "3.7.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.4.tgz#e6d83a1aa32ff448bd1679359ab13d8db0fe0743" + integrity sha512-tinYWE8X1QfCHxS1lBS8yiDekyhSXOO6R66yNOCdUJeojxxw+PX2BHAz/BWyW7PQ7pkiWVxJfIEbiDxyLWvUGg== dependencies: - commander "~2.20.0" + commander "~2.20.3" source-map "~0.6.1" ultron@1.0.x: From 0d4dc42897645a7fcc329809419784fa15a2b839 Mon Sep 17 00:00:00 2001 From: martinprobst Date: Mon, 13 Jan 2020 09:04:20 -0800 Subject: [PATCH 0683/1134] Fix two "strictBindCallApply" problems in tsc_wrapped. PiperOrigin-RevId: 289453549 --- .../rules_typescript/internal/tsc_wrapped/cache_test.ts | 2 +- .../rules_typescript/internal/tsc_wrapped/strict_deps_test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/cache_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/cache_test.ts index e4aeaf3e1b..09e0afa863 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/cache_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/cache_test.ts @@ -22,7 +22,7 @@ import * as ts from 'typescript'; import {CachedFileLoader, FileCache, ProgramAndFileCache} from './cache'; import {invalidateFileCache, writeTempFile} from './test_support'; -function fauxDebug(...args: any[]) { +function fauxDebug(...args: [any?, ...any[]]) { console.error.apply(console, args); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts index 2b555172b7..807e86e1f9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts @@ -39,7 +39,7 @@ describe('strict deps', () => { if (!files[fileName]) { if (astCache.has(fileName)) return astCache.get(fileName); const file = originalGetSourceFile(fileName, ts.ScriptTarget.Latest); - astCache.set(fileName, file); + astCache.set(fileName, file!); return file; } return ts.createSourceFile( From da843297ab367f008be673c28ead675476016ddd Mon Sep 17 00:00:00 2001 From: alexeagle Date: Mon, 13 Jan 2020 11:36:53 -0800 Subject: [PATCH 0684/1134] Expose declarations only via DeclarationInfo PiperOrigin-RevId: 289484723 --- .../internal/common/compilation.bzl | 167 +++++++++--------- 1 file changed, 80 insertions(+), 87 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index c11b71c61a..514202adc7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -55,7 +55,13 @@ COMMON_ATTRIBUTES = { default = [], providers = [JsInfo], ), - "deps": attr.label_list(aspects = DEPS_ASPECTS), + "deps": attr.label_list( + aspects = DEPS_ASPECTS, + # TODO(b/139705078): require all deps have a DeclarationInfo provider + # and remove assert_js_or_typescript_deps which is attempting + # to enforce the same thing as this. + # providers = [DeclarationInfo], + ), "_additional_d_ts": _ADDITIONAL_D_TS, } @@ -75,85 +81,48 @@ def assert_js_or_typescript_deps(ctx, deps = None): # Fallback to `ctx.attr.deps`. deps = deps if deps != None else ctx.attr.deps for dep in deps: - if not hasattr(dep, "typescript") and not JsInfo in dep: + if not hasattr(dep, "typescript") and not JsInfo in dep and not DeclarationInfo in dep: allowed_deps_msg = "Dependencies must be ts_library" fail("%s is neither a TypeScript nor a JS producing rule.\n%s\n" % (dep.label, allowed_deps_msg)) _DEPSET_TYPE = type(depset()) -def _check_ts_provider(dep): - """Verifies the type shape of the typescript provider in dep, if it has one. - """ - - # Under Bazel, some third parties have created typescript providers which may not be compatible. - # Rather than users getting an obscure error later, explicitly check them and point to the - # target that created the bad provider. - # TODO(alexeagle): remove this after some transition period, maybe mid-2019 - if hasattr(dep, "typescript"): - if type(dep.typescript.declarations) != _DEPSET_TYPE: - fail("typescript provider in %s defined declarations as a %s rather than a depset" % ( - dep.label, - type(dep.typescript.declarations), - )) - if type(dep.typescript.transitive_declarations) != _DEPSET_TYPE: - fail("typescript provider in %s defined transitive_declarations as a %s rather than a depset" % ( - dep.label, - type(dep.typescript.transitive_declarations), - )) - if type(dep.typescript.type_blacklisted_declarations) != _DEPSET_TYPE: - fail("typescript provider in %s defined type_blacklisted_declarations as a %s rather than a depset" % ( - dep.label, - type(dep.typescript.type_blacklisted_declarations), - )) - return dep - -def _collect_dep_declarations(ctx, deps): - """Collects .d.ts files from typescript and javascript dependencies. +def _collect_dep_declarations(ctx, declaration_infos): + """Flattens DeclarationInfo from typescript and javascript dependencies. Args: ctx: ctx. - deps: dependent targets, generally ctx.attr.deps + declaration_infos: list of DeclarationInfo collected from dependent targets Returns: A struct of depsets for direct, transitive and type-blacklisted declarations. """ - deps_and_helpers = [ - _check_ts_provider(dep) - for dep in deps + getattr(ctx.attr, "_helpers", []) - if hasattr(dep, "typescript") - ] - # .d.ts files from direct dependencies, ok for strict deps - direct_deps_declarations = [dep.typescript.declarations for dep in deps_and_helpers] + direct_deps_declarations = [dep.declarations for dep in declaration_infos] # all reachable .d.ts files from dependencies. - transitive_deps_declarations = [ - dep.typescript.transitive_declarations - for dep in deps_and_helpers - ] + transitive_deps_declarations = [dep.transitive_declarations for dep in declaration_infos] # all reachable .d.ts files from node_modules attribute (if it has a typescript provider) - if hasattr(ctx.attr, "node_modules") and hasattr(ctx.attr.node_modules, "typescript"): - transitive_deps_declarations += [ctx.attr.node_modules.typescript.transitive_declarations] + if hasattr(ctx.attr, "node_modules"): + if DeclarationInfo in ctx.attr.node_modules: + transitive_deps_declarations.append(ctx.attr.node_modules[DeclarationInfo].transitive_declarations) + elif hasattr(ctx.attr.node_modules, "typescript"): + # TODO(b/139705078): remove this case after bazel BUILD file generation for node_modules is updated + transitive_deps_declarations.append([ctx.attr.node_modules.typescript.transitive_declarations]) # .d.ts files whose types tsickle will not emit (used for ts_declaration(generate_externs=False). - type_blacklisted_declarations = [ - dep.typescript.type_blacklisted_declarations - for dep in deps_and_helpers - ] + type_blacklisted_declarations = [dep.type_blacklisted_declarations for dep in declaration_infos] # If a tool like github.com/angular/clutz can create .d.ts from type annotated .js # its output will be collected here. - return struct( - direct = depset(transitive = direct_deps_declarations), - transitive = depset( - [extra for extra in ctx.files._additional_d_ts], - transitive = transitive_deps_declarations, - ), - type_blacklisted = depset(transitive = type_blacklisted_declarations), + return DeclarationInfo( + declarations = depset(transitive = direct_deps_declarations), + transitive_declarations = depset(ctx.files._additional_d_ts, transitive = transitive_deps_declarations), + type_blacklisted_declarations = depset(transitive = type_blacklisted_declarations), ) def _should_generate_externs(ctx): @@ -224,7 +193,7 @@ def compile_ts( ctx, is_library, srcs = None, - deps = None, + declaration_infos = None, compile_action = None, devmode_compile_action = None, jsx_factory = None, @@ -239,7 +208,7 @@ def compile_ts( ctx: ctx. is_library: boolean. False if only compiling .dts files. srcs: label list. Explicit list of sources to be used instead of ctx.attr.srcs. - deps: label list. Explicit list of deps to be used instead of ctx.attr.deps. + declaration_infos: list of DeclarationInfo. Explicit list of declarations to be used instead of those on ctx.attr.deps. compile_action: function. Creates the compilation action. devmode_compile_action: function. Creates the compilation action for devmode. @@ -254,16 +223,28 @@ def compile_ts( ### Collect srcs and outputs. srcs = srcs if srcs != None else ctx.attr.srcs - deps = deps if deps != None else ctx.attr.deps + if declaration_infos == None: + if not hasattr(ctx.attr, "deps"): + fail("compile_ts must either be called from a rule with a deps attr, or must be given declaration_infos") + + # Validate the user inputs. + # TODO(b/139705078): remove this when we require DeclarationInfo provider on deps + assert_js_or_typescript_deps(ctx, ctx.attr.deps) + + # By default, we collect dependencies from the ctx, when used as a rule + declaration_infos = [ + d[DeclarationInfo] + for d in ctx.attr.deps + getattr(ctx.attr, "_helpers", []) + # TODO(b/139705078): remove this when we require DeclarationInfo provider on deps + if DeclarationInfo in d + ] + tsconfig = tsconfig if tsconfig != None else ctx.outputs.tsconfig srcs_files = [f for t in srcs for f in t.files.to_list()] src_declarations = [] # d.ts found in inputs. tsickle_externs = [] # externs.js generated by tsickle, if any. has_sources = False - # Validate the user inputs. - assert_js_or_typescript_deps(ctx, deps) - for src in srcs: if src.label.package != ctx.label.package: # Sources can be in sub-folders, but not in sub-packages. @@ -298,9 +279,9 @@ def compile_ts( # Note: setting this variable controls whether tsickle is run at all. tsickle_externs = [ctx.actions.declare_file(ctx.label.name + ".externs.js")] - dep_declarations = _collect_dep_declarations(ctx, deps) - input_declarations = depset(src_declarations, transitive = [dep_declarations.transitive]) - type_blacklisted_declarations = dep_declarations.type_blacklisted + dep_declarations = _collect_dep_declarations(ctx, declaration_infos) + + type_blacklisted_declarations = dep_declarations.type_blacklisted_declarations if not is_library and not _should_generate_externs(ctx): type_blacklisted_declarations = depset(srcs_files, transitive = [type_blacklisted_declarations]) @@ -319,7 +300,7 @@ def compile_ts( if "TYPESCRIPT_PERF_TRACE_TARGET" in ctx.var: perf_trace = str(ctx.label) == ctx.var["TYPESCRIPT_PERF_TRACE_TARGET"] - compilation_inputs = dep_declarations.transitive.to_list() + srcs_files + compilation_inputs = dep_declarations.transitive_declarations.to_list() + srcs_files tsickle_externs_path = tsickle_externs[0] if tsickle_externs else None # Calculate allowed dependencies for strict deps enforcement. @@ -327,7 +308,7 @@ def compile_ts( # A target's sources may depend on each other, srcs_files, # or on a .d.ts from a direct dependency - transitive = [dep_declarations.direct], + transitive = [dep_declarations.declarations], ) tsconfig_es6 = tsc_wrapped_tsconfig( @@ -429,7 +410,7 @@ def compile_ts( # TODO(martinprobst): Merge the generated .d.ts files, and enforce strict # deps (do not re-export transitive types from the transitive closure). - transitive_decls = depset(src_declarations + gen_declarations, transitive = [dep_declarations.transitive]) + transitive_decls = depset(src_declarations + gen_declarations, transitive = [dep_declarations.transitive_declarations]) # both ts_library and ts_declarations generate .mjs files: # - for libraries, this is the ES6/production code @@ -451,9 +432,8 @@ def compile_ts( if not srcs_files: # Re-export sources from deps. # TODO(b/30018387): introduce an "exports" attribute. - for dep in deps: - if hasattr(dep, "typescript"): - declarations_depsets.append(dep.typescript.declarations) + for dep in declaration_infos: + declarations_depsets.append(dep.declarations) files_depsets.extend(declarations_depsets) # If this is a ts_declaration, add tsickle_externs to the outputs list to @@ -463,11 +443,17 @@ def compile_ts( files_depsets.append(depset(tsickle_externs)) transitive_es6_sources_sets = [es6_sources] - for dep in deps: + for dep in getattr(ctx.attr, "deps", []): if hasattr(dep, "typescript"): transitive_es6_sources_sets += [dep.typescript.transitive_es6_sources] transitive_es6_sources = depset(transitive = transitive_es6_sources_sets) + declarations_provider = DeclarationInfo( + declarations = depset(transitive = declarations_depsets), + transitive_declarations = transitive_decls, + type_blacklisted_declarations = type_blacklisted_declarations, + ) + return { "providers": [ DefaultInfo( @@ -484,12 +470,11 @@ def compile_ts( es5_sources = es5_sources, es6_sources = es6_sources, ), - # TODO(martinprobst): Prune transitive deps, see go/dtspruning - DeclarationInfo( - declarations = depset(transitive = declarations_depsets), - transitive_declarations = transitive_decls, - ), + declarations_provider, ], + # Also expose the DeclarationInfo as a named provider so that aspect implementations can reference it + # Otherwise they would be forced to reference it by a numeric index out of the "providers" list above. + "declarations": declarations_provider, "instrumented_files": { "dependency_attributes": ["deps", "runtime_deps"], "extensions": ["ts"], @@ -502,21 +487,16 @@ def compile_ts( # Expose the tags so that a Skylark aspect can access them. "tags": ctx.attr.tags if hasattr(ctx.attr, "tags") else ctx.rule.attr.tags, "typescript": { - # TODO(b/139705078): remove when consumers migrated to DeclarationInfo - "declarations": depset(transitive = declarations_depsets), "devmode_manifest": devmode_manifest, "es5_sources": es5_sources, "es6_sources": es6_sources, "replay_params": replay_params, - # TODO(b/139705078): remove when consumers migrated to DeclarationInfo - "transitive_declarations": transitive_decls, "transitive_es6_sources": transitive_es6_sources, "tsickle_externs": tsickle_externs, - "type_blacklisted_declarations": type_blacklisted_declarations, }, } -def ts_providers_dict_to_struct(d, preserve_js_struct_field = False): +def ts_providers_dict_to_struct(d): """ Converts a dict to a struct, recursing into a single level of nested dicts. This allows users of compile_ts to modify or augment the returned dict before @@ -524,17 +504,30 @@ def ts_providers_dict_to_struct(d, preserve_js_struct_field = False): Args: d: the dict to convert - preserve_js_struct_field: whether to preserve the js provider as a "js" field. - Please only set this to True if you are using this struct in another provider. - e.g. MyProvider(some_field = ts_providers_dict_to_struct(d, preserve_js_struct_field = True)) - *Do not use* if returning the struct from a rule. Returns: An immutable struct created from the input dict """ + # These keys are present in the dict so that aspects can reference them, + # however they should not be output as legacy providers since we have modern + # symbol-typed providers for them. + js_provider = d.pop("js", None) + declarations_provider = d.pop("declarations", None) + + # Promote the "js" string-typed provider to a modern provider + if js_provider: + # Create a new providers list rather than modify the existing list + d["providers"] = d.get("providers", []) + [js_provider] for key, value in d.items(): if key != "output_groups" and type(value) == type({}): d[key] = struct(**value) - return struct(**d) + result = struct(**d) + + # Restore the elements we removed, to avoid side-effect of mutating the argument + if js_provider: + d["js"] = js_provider + if declarations_provider: + d["declarations"] = declarations_provider + return result From 38b98e79a7b5524eca9361863a5ae78039a59bfd Mon Sep 17 00:00:00 2001 From: alexeagle Date: Fri, 17 Jan 2020 16:36:37 -0800 Subject: [PATCH 0685/1134] Allow for ts strictdeps to look at multiple declaration sites of a symbol PiperOrigin-RevId: 290365047 --- .../internal/tsc_wrapped/strict_deps.ts | 19 +++++++++++----- .../internal/tsc_wrapped/strict_deps_test.ts | 22 +++++++++++++++++++ 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts index c2cb7238b9..447fc3e76e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps.ts @@ -85,15 +85,24 @@ export function checkModuleDeps( if (!sym || !sym.declarations || sym.declarations.length < 1) { continue; } - // Module imports can only have one declaration location. - const declFileName = sym.declarations[0].getSourceFile().fileName; - if (allowedMap[stripExt(declFileName)]) continue; - const importName = path.posix.relative(rootDir, declFileName); + const declFileNames = + sym.declarations.map(decl => decl.getSourceFile().fileName); + if (declFileNames.find( + declFileName => !!allowedMap[stripExt(declFileName)])) { + continue; + } + const importNames = declFileNames.map( + declFileName => path.posix.relative(rootDir, declFileName)); + + const extraDeclarationLocationsMessage = (importNames.length < 2) ? + '' : + `(It is also declared in ${importNames.slice(1).join(', ')}) `; result.push({ file: sf, start: modSpec.getStart(), length: modSpec.getEnd() - modSpec.getStart(), - messageText: `transitive dependency on ${importName} not allowed. ` + + messageText: `transitive dependency on ${importNames[0]} not allowed. ` + + extraDeclarationLocationsMessage + `Please add the BUILD target to your rule's deps.`, category: ts.DiagnosticCategory.Error, // semantics are close enough, needs taze. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts index 807e86e1f9..1e3ae470ac 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/strict_deps_test.ts @@ -132,4 +132,26 @@ describe('strict deps', () => { expect(diags[0].messageText) .toMatch(/dependency on blaze-bin\/p\/sd1.d.ts not allowed/); }); + + it('allows multiple declarations of the same clutz-generated module', () => { + const p = createProgram({ + '/src/blaze-bin/p/js1.d.ts': `declare module 'goog:thing' {}`, + '/src/blaze-bin/p/js2.d.ts': `declare module 'goog:thing' {}`, + '/src/blaze-bin/p/js3.d.ts': `declare module 'goog:thing' {}`, + // Import from the middle one, to be sure it doesn't pass just because the + // order so happens that we checked the declaration from the first one + '/src/p/my.ts': `import {} from 'goog:thing'; // taze: from //p:js2`, + }); + const good = checkModuleDeps( + p.getSourceFile('/src/p/my.ts')!, p.getTypeChecker(), + ['/src/blaze-bin/p/js2.d.ts'], '/src'); + expect(good.length).toBe(0); + + const bad = checkModuleDeps( + p.getSourceFile('/src/p/my.ts')!, p.getTypeChecker(), [], '/src'); + expect(bad.length).toBe(1); + expect(bad[0].messageText) + .toContain( + '(It is also declared in blaze-bin/p/js2.d.ts, blaze-bin/p/js3.d.ts)'); + }); }); From 90d6d0271bc40f9ecadb22d89afcee929672d14f Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Wed, 22 Jan 2020 02:13:36 -0800 Subject: [PATCH 0686/1134] Adds a tsetse rule to prevent constructing Sets using a string. Disallows `new Set('abc')` since that results in a Set containing 'a', 'b' and 'c'. - If that really is the intention of the code, it can be converted to `new Set('abc' as Iterable)` - If the intention was to have a Set containing 'abc', it should be `new Set(['abc'])` PiperOrigin-RevId: 290914197 --- .../internal/tsetse/error_code.ts | 1 + .../rules/ban_string_initialized_sets_rule.ts | 63 +++++++++++++++++++ .../internal/tsetse/runner.ts | 2 + .../ban_string_initialized_sets/negatives.ts | 42 +++++++++++++ .../ban_string_initialized_sets/positives.ts | 51 +++++++++++++++ 5 files changed, 159 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_string_initialized_sets_rule.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_string_initialized_sets/negatives.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_string_initialized_sets/positives.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts index 87b7fd2e40..10d36c55fd 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/error_code.ts @@ -14,4 +14,5 @@ export enum ErrorCode { PROPERTY_RENAMING_SAFE = 21227, CONFORMANCE_PATTERN = 21228, BAN_MUTABLE_EXPORTS = 21229, + BAN_STRING_INITIALIZED_SETS = 21230, } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_string_initialized_sets_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_string_initialized_sets_rule.ts new file mode 100644 index 0000000000..44087baf28 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_string_initialized_sets_rule.ts @@ -0,0 +1,63 @@ +/** + * @fileoverview Bans `new Set()` since it is a potential source of bugs + * due to strings also implementing `Iterable`. + */ + +import * as ts from 'typescript'; + +import {Checker} from '../checker'; +import {ErrorCode} from '../error_code'; +import {AbstractRule} from '../rule'; + +const errorMsg = 'Value passed to Set constructor is a string. This will' + + ' create a Set of the characters of the string, rather than a Set' + + ' containing the string. To make a Set of the string, pass an array' + + ' containing the string. To make a Set of the characters, use \'as\' to ' + + ' create an Iterable, eg: new Set(myStr as Iterable).'; + +export class Rule extends AbstractRule { + readonly ruleName = 'ban-string-initialized-sets'; + readonly code = ErrorCode.BAN_STRING_INITIALIZED_SETS; + + register(checker: Checker) { + checker.on(ts.SyntaxKind.NewExpression, checkNewExpression, this.code); + } +} + +function checkNewExpression(checker: Checker, node: ts.NewExpression) { + const typeChecker = checker.typeChecker; + + // Check that it's a Set which is being constructed + const ctorTypeSymbol = + typeChecker.getTypeAtLocation(node.expression).getSymbol(); + + if (!ctorTypeSymbol || ctorTypeSymbol.getEscapedName() !== 'SetConstructor') { + return; + } + const isES2015SetCtor = ctorTypeSymbol.declarations.some((decl) => { + return sourceFileIsStdLib(decl.getSourceFile()); + }); + if (!isES2015SetCtor) return; + + // If there's no arguments provided, then it's not a string so bail out. + if (!node.arguments || node.arguments.length !== 1) return; + + // Check the type of the first argument, expanding union & intersection types + const arg = node.arguments[0]; + const argType = typeChecker.getTypeAtLocation(arg); + const allTypes = argType.isUnionOrIntersection() ? argType.types : [argType]; + + // Checks if the type (or any of the union/intersection types) are either + // strings or string literals. + const typeContainsString = allTypes.some((tsType) => { + return (tsType.getFlags() & ts.TypeFlags.StringLike) !== 0; + }); + + if (!typeContainsString) return; + + checker.addFailureAtNode(arg, errorMsg); +} + +function sourceFileIsStdLib(sourceFile: ts.SourceFile) { + return /lib\.es2015\.(collection|iterable)\.d\.ts$/.test(sourceFile.fileName); +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts index a2b76d4077..8e2926aa9d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/runner.ts @@ -11,6 +11,7 @@ import {Checker} from './checker'; import {AbstractRule} from './rule'; import {Rule as BanExpectTruthyPromiseRule} from './rules/ban_expect_truthy_promise_rule'; import {Rule as BanPromiseAsConditionRule} from './rules/ban_promise_as_condition_rule'; +import {Rule as BanStringInitializedSetsRule} from './rules/ban_string_initialized_sets_rule'; import {Rule as CheckReturnValueRule} from './rules/check_return_value_rule'; import {Rule as EqualsNanRule} from './rules/equals_nan_rule'; import {Rule as MustUsePromisesRule} from './rules/must_use_promises_rule'; @@ -25,6 +26,7 @@ const ENABLED_RULES: AbstractRule[] = [ new BanExpectTruthyPromiseRule(), new MustUsePromisesRule(), new BanPromiseAsConditionRule(), + new BanStringInitializedSetsRule(), ]; /** diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_string_initialized_sets/negatives.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_string_initialized_sets/negatives.ts new file mode 100644 index 0000000000..e9a188aee1 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_string_initialized_sets/negatives.ts @@ -0,0 +1,42 @@ +// tslint:disable +function emptySet() { + const set = new Set(); +} + +function noConstructorArgs() { + const set = new Set; +} + +function nonStringSet() { + const set = new Set([1, 2, 3]); +} + +// This is an allowable way to create a set of strings +function setOfStrings() { + const set = new Set(['abc']); +} + +function setOfChars() { + const set = new Set('abc'.split('')); +} + +function explicitlyAllowString() { + const set = new Set('abc' as Iterable); +} + +// checks that just a property called 'Set' doesn't trigger the error +function justAKeyCalledSet(obj: {Set: {new (s: string): any}}) { + const set = new obj.Set('abc'); +} + +function destructuredConstructorCalledSet(obj: {Set: {new (s: string): any}}) { + const {Set} = obj; + const set = new Set('abc'); +} + +function locallyDeclaredSet() { + class Set { + constructor(private s: string) {} + } + const set = new Set('abc'); +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_string_initialized_sets/positives.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_string_initialized_sets/positives.ts new file mode 100644 index 0000000000..a4ec6955b9 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_string_initialized_sets/positives.ts @@ -0,0 +1,51 @@ +// tslint:disable +function setWithStringLiteral() { + const set = new Set('abc'); +} + +function setWithStringVariable(s: string) { + const set = new Set(s); +} + +function setWithStringUnionType(s: string|string[]) { + const set = new Set(s); +} + +function setWithStringExpression(fn: () => string) { + const set = new Set(fn()); +} + +function setWithStringExpression2() { + const set = new Set(Math.random() < 0.5 ? 'a' : 'b'); +} + +type TypeA = string|Set; +type TypeB = TypeA|(Iterable&IterableIterator); +function setWithComplexInitializationType(s: TypeB) { + const set = new Set(s); +} + +function setWithUnionStringType(s: string&{toString(): string}) { + const set = new Set(s); +} + +function setWithLocalAlias() { + const TotallyNotASet = Set; + const set = new TotallyNotASet('abc'); +} + +function setWithMultipleAliases() { + const Foo = Set; + const Bar = Foo; + const Baz = Bar; + const set = new Baz('abc'); +} + +function setUsingSetConstructorType(ctor: SetConstructor) { + const set = new ctor('abc'); +} + +type MySet = SetConstructor; +function setUsingAliasedSetConstructor(ctor: MySet) { + const set = new ctor('abc'); +} From 7aeae353bbc47e8935386d470fc3fefbdf1c2609 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Wed, 22 Jan 2020 15:10:12 -0800 Subject: [PATCH 0687/1134] Require deps of ts_library to provide DeclarationInfo PiperOrigin-RevId: 291040689 --- .../internal/common/compilation.bzl | 22 +------------------ 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 514202adc7..a514e9e662 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -57,10 +57,7 @@ COMMON_ATTRIBUTES = { ), "deps": attr.label_list( aspects = DEPS_ASPECTS, - # TODO(b/139705078): require all deps have a DeclarationInfo provider - # and remove assert_js_or_typescript_deps which is attempting - # to enforce the same thing as this. - # providers = [DeclarationInfo], + providers = [DeclarationInfo], ), "_additional_d_ts": _ADDITIONAL_D_TS, } @@ -75,17 +72,6 @@ COMMON_OUTPUTS = { "tsconfig": "%{name}_tsconfig.json", } -# TODO(plf): Enforce this at analysis time. -def assert_js_or_typescript_deps(ctx, deps = None): - # `deps` args is optinal for backward compat. - # Fallback to `ctx.attr.deps`. - deps = deps if deps != None else ctx.attr.deps - for dep in deps: - if not hasattr(dep, "typescript") and not JsInfo in dep and not DeclarationInfo in dep: - allowed_deps_msg = "Dependencies must be ts_library" - - fail("%s is neither a TypeScript nor a JS producing rule.\n%s\n" % (dep.label, allowed_deps_msg)) - _DEPSET_TYPE = type(depset()) def _collect_dep_declarations(ctx, declaration_infos): @@ -227,16 +213,10 @@ def compile_ts( if not hasattr(ctx.attr, "deps"): fail("compile_ts must either be called from a rule with a deps attr, or must be given declaration_infos") - # Validate the user inputs. - # TODO(b/139705078): remove this when we require DeclarationInfo provider on deps - assert_js_or_typescript_deps(ctx, ctx.attr.deps) - # By default, we collect dependencies from the ctx, when used as a rule declaration_infos = [ d[DeclarationInfo] for d in ctx.attr.deps + getattr(ctx.attr, "_helpers", []) - # TODO(b/139705078): remove this when we require DeclarationInfo provider on deps - if DeclarationInfo in d ] tsconfig = tsconfig if tsconfig != None else ctx.outputs.tsconfig From 118f7151215f144d9b829b8b055a21d9bb5ae07c Mon Sep 17 00:00:00 2001 From: rjamet Date: Thu, 23 Jan 2020 05:19:57 -0800 Subject: [PATCH 0688/1134] Remove an obsolete TODO in Tsetse's test utils. It's been implemented in the past. PiperOrigin-RevId: 291147258 --- .../internal/tsetse/util/testing/test_support.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts index bfbc78b135..ece3695f9d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts @@ -183,7 +183,6 @@ function fixMatchesExpectation(failure: Failure, expected: FixExpectations): `${i}th individualChange's fileName`, e.fileName, a.sourceFile.fileName); } - // TODO: Consider adding matchedCode as for the failure matcher. } } From a2e4add0ace7fd4c19d313823988a6127b0dcdad Mon Sep 17 00:00:00 2001 From: alexeagle Date: Sun, 26 Jan 2020 21:06:27 -0800 Subject: [PATCH 0689/1134] Internal only PiperOrigin-RevId: 291652895 --- .../rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index e73ece5faa..8d8e537af9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -343,7 +343,13 @@ export function createProgramAndEmit( // Dynamically load the Angular compiler installed as a peerDep const ngtsc = require('@angular/compiler-cli'); - angularPlugin = new ngtsc.NgTscPlugin(ngOptions); + + // TODO(alexeagle): re-enable after Angular API changes land + // See https://github.com/angular/angular/pull/34792 + // and pending CL/289493608 + // By commenting this out, we allow Angular caretaker to sync changes from + // GitHub without having to coordinate any Piper patches in the same CL. + // angularPlugin = new ngtsc.NgTscPlugin(ngOptions); } catch (e) { return { diagnostics: [errorDiag( From e560b97a93b400bb17bebd771927cf2c9688ebaa Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Tue, 28 Jan 2020 11:14:23 -0800 Subject: [PATCH 0690/1134] Improve formatting of cyclical dependency error reporting This adds a line break between dependencies, since each line tends to be very long. It's easier to understand the cycle if the actual file names are grouped closer together into a column. This change adds a newline between each dependency in the cycle to better achieve that. It also adds space between the stacktrace below and the context above. Previously: Compilation failed Error: Cyclical dependency between files: src/b.ts -> src/a.ts -> src/b.ts Now: Compilation failed Error: Cyclical dependency between files: src/b.ts -> src/a.ts -> src/b.ts PiperOrigin-RevId: 291974463 --- .../rules_typescript/internal/tsc_wrapped/manifest.ts | 4 ++-- .../rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts index 4e5b9f6483..3642dc761f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/manifest.ts @@ -22,8 +22,8 @@ function topologicalSort( if (!referencedFileName) continue; // Ambient modules. if (!result[referencedFileName]) { if (visiting[referencedFileName]) { - const path = current + ' -> ' + Object.keys(visiting).join(' -> '); - throw new Error('Cyclical dependency between files:\n' + path); + const path = [current, ...Object.keys(visiting)].join(' ->\n'); + throw new Error(`\n\nCyclical dependency between files:\n${path}\n`); } visiting[referencedFileName] = true; topologicalSort(result, referencedFileName, modulesManifest, visiting); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts index 2351cd87f2..ccb4eee071 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts @@ -47,7 +47,7 @@ describe('tsc wrapped', () => { f(res, 'src/f3', 'src$f3', ['src$f1']); f(res, 'src/f1', 'src$f1', ['src$f2']); expect(() => constructManifest(res, {relativeOutputPath})) - .toThrowError(/src\/f2 -> src\/f3 -> src\/f1 -> src\/f2/g); + .toThrowError(/src\/f2 ->\nsrc\/f3 ->\nsrc\/f1 ->\nsrc\/f2/g); }); it('toposorts diamonds', () => { From 2e8e8a24a247c0cfbe1d872f556a5e6baa59eb6c Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Thu, 6 Feb 2020 08:57:50 -0800 Subject: [PATCH 0691/1134] Remove obsolete incompatible flag Close https://github.com/bazelbuild/rules_typescript/pull/487 PiperOrigin-RevId: 293602783 --- .../bazelbuild/rules_typescript/.bazelci/presubmit.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml index adf1614206..86727d1915 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml @@ -44,6 +44,5 @@ platforms: test_flags: - "--action_env=PATH" - "--test_env=PATH" - - "--incompatible_windows_native_test_wrapper" test_targets: - "..." From ef82724dbb4399db9f1fb3eddc312a19927e3ca3 Mon Sep 17 00:00:00 2001 From: Yannic Date: Mon, 10 Feb 2020 09:23:35 -0800 Subject: [PATCH 0692/1134] Make rules_typescript compatible with --incompatible_load_proto_rules_from_bzl Closes #488 PiperOrigin-RevId: 294235496 --- .../github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel | 1 + 1 file changed, 1 insertion(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel index 3b326019b6..5e6ed7cec0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/BUILD.bazel @@ -3,6 +3,7 @@ # The generated `@bazel/typescript` npm package contains a trimmed BUILD file using # DEV-ONLY fences. load("@io_bazel_rules_go//go:def.bzl", "go_library") load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") +load("@rules_proto//proto:defs.bzl", "proto_library") package(default_visibility = ["//:__pkg__"]) From a187afb49db47e0bacb801811d1c7efb52289425 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Wed, 12 Feb 2020 13:32:58 -0800 Subject: [PATCH 0693/1134] Switch tsc_wrapped to a .js entry point This lets it work under the linker, where the execpath to the .js file is hard to calculate from the .ts input file path. This also wires up the ts-lit-plugin under Bazel if it appears in the tsconfig settings. Closes #490 PiperOrigin-RevId: 294743226 --- .../rules_typescript/.bazelci/presubmit.yml | 1 + .../bazelbuild/rules_typescript/.bazelversion | 1 + .../rules_typescript/internal/BUILD.bazel | 69 ++++++++----------- .../internal/tsc_wrapped/tsc_wrapped.ts | 12 ++++ .../{tsconfig.json => tsconfig.json.oss} | 0 .../internal/tsc_wrapped/worker.ts | 11 ++- .../rules_typescript/internal/tsconfig.json | 26 +++++++ .../bazelbuild/rules_typescript/package.bzl | 4 +- .../bazelbuild/rules_typescript/package.json | 18 ++--- .../bazelbuild/rules_typescript/yarn.lock | 69 +++++-------------- 10 files changed, 105 insertions(+), 106 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/.bazelversion rename third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/{tsconfig.json => tsconfig.json.oss} (100%) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsconfig.json diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml index 86727d1915..9695da48ab 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelci/presubmit.yml @@ -1,4 +1,5 @@ --- +bazel: 2.1.0 platforms: ubuntu1604: run_targets: diff --git a/third_party/github.com/bazelbuild/rules_typescript/.bazelversion b/third_party/github.com/bazelbuild/rules_typescript/.bazelversion new file mode 100644 index 0000000000..50aea0e7ab --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/.bazelversion @@ -0,0 +1 @@ +2.1.0 \ No newline at end of file diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel index 0c70b531d8..bd2aa0cddf 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/BUILD.bazel @@ -17,6 +17,7 @@ load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary") load("@bazel_skylib//:bzl_library.bzl", "bzl_library") load("@npm_bazel_jasmine//:index.bzl", "jasmine_node_test") +load("@npm//typescript:index.bzl", "tsc") load("@npm_bazel_typescript//:index.bzl", "ts_library") package(default_visibility = ["//visibility:public"]) @@ -29,43 +30,35 @@ bzl_library( visibility = ["//visibility:public"], ) -# Vanilla typescript compiler: run the tsc.js binary distributed by TypeScript -nodejs_binary( - name = "tsc", - data = [ - "@npm//source-map-support", - "@npm//typescript", +_TSC_WRAPPED_TESTS = [ + "**/test_support.ts", + "**/*_test.ts", +] + +_TSC_WRAPPED_SRCS = glob( + [ + "tsc_wrapped/*.ts", + "tsetse/**/*.ts", ], - entry_point = "@npm//:node_modules/typescript/lib/tsc.js", - visibility = ["//internal:__subpackages__"], + exclude = _TSC_WRAPPED_TESTS + ["tsetse/tests/**"], ) +_TSC_WRAPPED_JS = [k[:-3] + ".js" for k in _TSC_WRAPPED_SRCS] +_TSC_WRAPPED_TYPINGS = [k[:-3] + ".d.ts" for k in _TSC_WRAPPED_SRCS] # Build our custom compiler using the vanilla one -ts_library( +tsc( name = "tsc_wrapped", - srcs = glob( - [ - "tsc_wrapped/*.ts", - "tsetse/**/*.ts", - ], - exclude = [ - "**/test_support.ts", - "**/*_test.ts", - ], - ), - compiler = ":tsc", - data = [ - "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", + args = [ + "--declaration", + "-p", + "$(execpath //internal:tsconfig.json)", + "--outDir", + "$(RULEDIR)", ], - module_name = "@bazel/typescript", - module_root = "tsc_wrapped/index.d.ts", - supports_workers = False, - tsconfig = "//internal:tsc_wrapped/tsconfig.json", + outs = _TSC_WRAPPED_JS + _TSC_WRAPPED_TYPINGS, visibility = ["//visibility:public"], - # Cannot have any deps (except npm fine grained deps) because it doesn't - # work with vanilla tsc. - # Workaround for https://github.com/Microsoft/TypeScript/issues/22208 - deps = [ + data = _TSC_WRAPPED_SRCS + [ + "//internal:tsconfig.json", "@npm//@types/node", "@npm//protobufjs", "@npm//tsickle", @@ -88,23 +81,16 @@ nodejs_binary( "@npm//tsutils", "@npm//typescript", ], - entry_point = ":tsc_wrapped/tsc_wrapped.ts", + entry_point = ":tsc_wrapped/tsc_wrapped.js", visibility = ["//visibility:public"], ) ts_library( name = "test_lib", - srcs = glob([ - "tsc_wrapped/*_test.ts", - "tsetse/**/*_test.ts", - ]) + [ - "tsc_wrapped/test_support.ts", - "tsetse/util/testing/test_support.ts", - ], + srcs = glob(_TSC_WRAPPED_TESTS) + _TSC_WRAPPED_TYPINGS, compiler = "@build_bazel_rules_typescript//internal:tsc_wrapped_bin", - tsconfig = "//internal:tsc_wrapped/tsconfig.json", + tsconfig = "//internal:tsconfig.json", deps = [ - ":tsc_wrapped", "@npm//@types/jasmine", "@npm//@types/node", "@npm//tsickle", @@ -115,8 +101,9 @@ ts_library( jasmine_node_test( name = "test", srcs = [], - deps = [ + deps = _TSC_WRAPPED_JS + [ ":test_lib", + "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:worker_protocol.proto", "@npm//jasmine", "@npm//protobufjs", "@npm//source-map", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 8d8e537af9..848ba2e514 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -371,6 +371,18 @@ export function createProgramAndEmit( compilerHost.inputFiles, options, compilerHost, oldProgram)); cache.putProgram(bazelOpts.target, program); + for (const pluginConfig of options['plugins'] as ts.PluginImport[] || []) { + if (pluginConfig.name === 'ts-lit-plugin') { + const litTscPlugin = + // Lazy load, so that code that does not use the plugin doesn't even + // have to spend the time to parse and load the plugin's source. + // + // tslint:disable-next-line:no-require-imports + new (require('ts-lit-plugin/lib/bazel-plugin').Plugin)( + program, pluginConfig) as DiagnosticPlugin; + diagnosticPlugins.push(litTscPlugin); + } + } if (!bazelOpts.isJsTranspilation) { // If there are any TypeScript type errors abort now, so the error diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json.oss similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json rename to third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.json.oss diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts index f6bc505a9a..71fdf259f1 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts @@ -88,8 +88,15 @@ function loadWorkerPb() { // workspace location // This extra lookup should never happen in google3. It's only needed for // local development in the rules_typescript repo. - protofile = require.resolve( - 'build_bazel_rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto'); + + const runfiles = process.env['BAZEL_NODE_RUNFILES_HELPER']; + if (runfiles) { + protofile = require(runfiles).resolve( + 'build_bazel_rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto'); + } else { + protofile = + 'build_bazel_rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto'; + } } const protoNamespace = protobufjs.loadSync(protofile); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsconfig.json b/third_party/github.com/bazelbuild/rules_typescript/internal/tsconfig.json new file mode 100644 index 0000000000..f69878c700 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "strict": true, + "module": "CommonJS", + "target": "ES2015", + "types": [ + "node", + ], + "lib": [ + "dom", + "es5", + "es2015.core", + "es2015.collection", + "es2015.promise", + // This will need to become es2018.asynciterable when + // bumping the version of TypeScript in rules_typescript/package.json + "es2018.asynciterable" + ] + }, + // We run the plain tsc compiler so we need to exclude files we don't want it to visit + "exclude": [ + "**/test_support.ts", + "**/*_test.ts", + "*/tests" + ] +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.bzl b/third_party/github.com/bazelbuild/rules_typescript/package.bzl index cb33eab92d..1d77473f60 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/package.bzl @@ -30,8 +30,8 @@ def rules_typescript_dev_dependencies(): _maybe( http_archive, name = "build_bazel_rules_nodejs", - sha256 = "3887b948779431ac443e6a64f31b9e1e17b8d386a31eebc50ec1d9b0a6cabd2b", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/1.0.0/rules_nodejs-1.0.0.tar.gz"], + sha256 = "b6670f9f43faa66e3009488bbd909bc7bc46a5a9661a33f6bc578068d1837f37", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/1.3.0/rules_nodejs-1.3.0.tar.gz"], ) # For protocol buffers diff --git a/third_party/github.com/bazelbuild/rules_typescript/package.json b/third_party/github.com/bazelbuild/rules_typescript/package.json index c87382d832..8854919abc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/package.json +++ b/third_party/github.com/bazelbuild/rules_typescript/package.json @@ -3,14 +3,14 @@ "homepage": "https://github.com/bazelbuild/rules_typescript", "license": "Apache-2.0", "devDependencies": { - "@bazel/bazel": "^2.0.0", + "@bazel/bazelisk": "^1.3.0", "@bazel/buildifier": "^0.29.0", "@bazel/ibazel": "^0.11.0", "@bazel/jasmine": "^1.0.0", "@bazel/typescript": "^1.0.0", "@types/jasmine": "^2.8.2", "@types/long": "^4.0.0", - "@types/node": "10.12.20", + "@types/node": "^12.0.0", "@types/source-map": "^0.5.1", "@types/tmp": "^0.0.33", "clang-format": "1.0.49", @@ -32,17 +32,17 @@ "shelljs": "^0.8.2", "source-map-support": "0.5.9", "tmp": "0.0.33", - "tsickle": "0.33.1", + "tsickle": "0.38.0", "tsutils": "2.27.2", - "typescript": "~3.1.6", + "typescript": "^3.7.5", "which": "~1.0.5" }, "scripts": { - "pree2e": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG && bazel build //examples/app:e2e //examples/protocol_buffers:e2e", + "pree2e": "webdriver-manager update $CHROMEDRIVER_VERSION_ARG && bazelisk build //examples/app:e2e //examples/protocol_buffers:e2e", "e2e": "yarn e2e-examples-app-devserver && yarn e2e-examples-app-prodserver && yarn e2e-examples-protobuf-devserver && yarn e2e-examples-protobuf-prodserver", - "e2e-examples-app-devserver": "concurrently \"bazel run //examples/app:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", - "e2e-examples-app-prodserver": "concurrently \"bazel run //examples/app:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", - "e2e-examples-protobuf-devserver": "concurrently \"bazel run //examples/protocol_buffers:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first", - "e2e-examples-protobuf-prodserver": "concurrently \"bazel run //examples/protocol_buffers:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first" + "e2e-examples-app-devserver": "concurrently \"bazelisk run //examples/app:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", + "e2e-examples-app-prodserver": "concurrently \"bazelisk run //examples/app:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite app\" --kill-others --success first", + "e2e-examples-protobuf-devserver": "concurrently \"bazelisk run //examples/protocol_buffers:devserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first", + "e2e-examples-protobuf-prodserver": "concurrently \"bazelisk run //examples/protocol_buffers:prodserver\" \"while ! nc -z 127.0.0.1 8080; do sleep 1; done && protractor --suite protocol_buffers\" --kill-others --success first" } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock index f60c13d228..90b9892351 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/yarn.lock +++ b/third_party/github.com/bazelbuild/rules_typescript/yarn.lock @@ -2,31 +2,10 @@ # yarn lockfile v1 -"@bazel/bazel-darwin_x64@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/bazel-darwin_x64/-/bazel-darwin_x64-2.0.0.tgz#bd678069216dd470c6816a22c405f21e7f048038" - integrity sha512-I/pP+B+2xfY0g+OEpEcVnk8rizuC761pAzBOQjP3b+gz3AzeRgm05CpcSY7tfPIppMSYoy3uTZJ1XlwgUg7IQQ== - -"@bazel/bazel-linux_x64@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/bazel-linux_x64/-/bazel-linux_x64-2.0.0.tgz#2c76e3301e9178a90ec3ad00649e89b953eda0b7" - integrity sha512-iOr45G+511IbP7e+ISriG97WpfCAVXekTrTgL5mGg3NDBFCVNs350VquHAvmlXAoP5+IEug2pCOlkdEl4bLl8g== - -"@bazel/bazel-win32_x64@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/bazel-win32_x64/-/bazel-win32_x64-2.0.0.tgz#f12ac0738d2eac0fd255f099776194807cedfe50" - integrity sha512-5qs2qoa/paG/YYEM0yvrwuJIShoPVK2FX+Oz9jEWAQJsmU4drHA9Aq+gbBOirEFLmvYhleZ9XORCwu/5uAo8vA== - -"@bazel/bazel@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/bazel/-/bazel-2.0.0.tgz#feb8cf5a40ea6437ef69cac2a92072118b11c230" - integrity sha512-KQbv5dHNSfutbhXCc3KVMuBXPpUh6Af/hT9IRIaMTuiB6Nq2gEW9Z3aNqncopdZqV848V/qYxnqPnQ+S37fMyQ== - dependencies: - "@bazel/hide-bazel-files" latest - optionalDependencies: - "@bazel/bazel-darwin_x64" "2.0.0" - "@bazel/bazel-linux_x64" "2.0.0" - "@bazel/bazel-win32_x64" "2.0.0" +"@bazel/bazelisk@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.3.0.tgz#dc312dd30ad01e9af86e53b40795ab6e545fa55b" + integrity sha512-73H1nq3572tTf+dhDT86aWQN+LCyfxrh05jabqPXp6cpR8soxte3gS5oUqkN36fUe+J2HzNiV4CXZTz4Xytd3Q== "@bazel/buildifier-darwin_x64@0.29.0": version "0.29.0" @@ -52,11 +31,6 @@ "@bazel/buildifier-linux_x64" "0.29.0" "@bazel/buildifier-win32_x64" "0.29.0" -"@bazel/hide-bazel-files@latest": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@bazel/hide-bazel-files/-/hide-bazel-files-1.0.0.tgz#779070dcb5ae121ff6c72d73bf3fb7bf68285d75" - integrity sha512-dfw2W7xDUPlRMcDMVO8gDkX9Xb7Thy3sP4PDODv+eiHOvwIi116X/wwy7mQUZISkJdEJ1zWy9ydpzvfetpYh4w== - "@bazel/ibazel@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.11.0.tgz#6879c8032f5bee81ca632456304c16525160f47f" @@ -144,16 +118,16 @@ resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.0.tgz#719551d2352d301ac8b81db732acb6bdc28dbdef" integrity sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q== -"@types/node@10.12.20": - version "10.12.20" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.20.tgz#f79f959acd3422d0889bd1ead1664bd2d17cd367" - integrity sha512-9spv6SklidqxevvZyOUGjZVz4QRXGu2dNaLyXIFzFYZW0AGDykzPRIUFJXTlQXyfzAucddwTcGtJNim8zqSOPA== - "@types/node@^10.1.0": version "10.14.6" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.6.tgz#9cbfcb62c50947217f4d88d4d274cc40c22625a9" integrity sha512-Fvm24+u85lGmV4hT5G++aht2C5I4Z4dYlWZIh62FAfFO/TfzXtPpoLI6I7AuBWkIFqZCnhFOoTT7RjjaIL5Fjg== +"@types/node@^12.0.0": + version "12.12.27" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.27.tgz#d7506f73160ad30fcebbcf5b8b7d2d976e649e42" + integrity sha512-odQFl/+B9idbdS0e8IxDl2ia/LP8KZLXhV3BUeI98TrZp0uoIzQPhGd+5EtzHmT0SMOIaPd7jfz6pOHLWTtl7A== + "@types/node@^6.0.46": version "6.0.92" resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.92.tgz#e7f721ae282772e12ba2579968c00d9cce422c5d" @@ -3195,11 +3169,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - spawn-command@^0.0.2-1: version "0.0.2" resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" @@ -3464,14 +3433,10 @@ tree-kill@^1.1.0: resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" integrity sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg== -tsickle@0.33.1: - version "0.33.1" - resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.33.1.tgz#eee4ebabeda3bcd8afc32cee34c822cbe3e839ec" - integrity sha512-SpW2G3PvDGs4a5sMXPlWnCWHWRviWjSlI3U0734e3fU3U39VAE0NPr8M3W1cuL/OU/YXheYipGeEwtIJ5k0NHQ== - dependencies: - minimist "^1.2.0" - mkdirp "^0.5.1" - source-map "^0.7.3" +tsickle@0.38.0: + version "0.38.0" + resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.38.0.tgz#89f5952c9bb3ba0b36dc384975e23cf90e584822" + integrity sha512-k7kI6afBuLd2jIrj9JR8lKhEkp99sFVRKQbHeaHQkdvDaH5AvzwqA/qX+aNj28OfuAsWryOKAZoXm24l7JelEw== tslib@^1.8.1: version "1.9.0" @@ -3505,10 +3470,10 @@ type-is@~1.6.16: media-typer "0.3.0" mime-types "~2.1.18" -typescript@~3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" - integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== +typescript@^3.7.5: + version "3.7.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" + integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== uglify-js@^3.1.4: version "3.7.4" From 03446f6044556663d250e6c8232df17f759f0ef6 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 17 Feb 2020 23:17:24 -0800 Subject: [PATCH 0694/1134] Fix null dereference of angularPlugin. PiperOrigin-RevId: 295670447 --- .../rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts | 4 +++- .../rules_typescript/internal/tsc_wrapped/worker.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 848ba2e514..659a91ad34 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -360,7 +360,9 @@ export function createProgramAndEmit( // Wrap host only needed until after Ivy cleanup // TODO(alexeagle): remove after ngsummary and ngfactory files eliminated - compilerHost = angularPlugin!.wrapHost!(files, compilerHost); + if (angularPlugin) { + compilerHost = angularPlugin.wrapHost!(files, compilerHost); + } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts index 71fdf259f1..2a6d1eec77 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts @@ -72,7 +72,7 @@ declare namespace workerProto { */ function loadWorkerPb() { const protoPath = - '../../third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto'; + './third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto'; // Use node module resolution so we can find the .proto file in any of the // root dirs From a7f66cd719a6f144be1987224ade97c797d97b1f Mon Sep 17 00:00:00 2001 From: evanm Date: Tue, 18 Feb 2020 11:00:44 -0800 Subject: [PATCH 0695/1134] construct plugins just before using them The common plugins includes the tsetse plugin, which grabs the Program's TypeChecker as part of its construction, which causes TS to do a bunch of work. By moving the plugin construction here, that work happens in the code above (where we explicitly ask TS for diagnostics), which makes perf trace accounting for type checking more accurate. PiperOrigin-RevId: 295773738 --- .../rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 659a91ad34..442ce6f433 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -64,9 +64,6 @@ export function gatherDiagnostics( options: ts.CompilerOptions, bazelOpts: BazelOptions, program: ts.Program, disabledTsetseRules: string[], angularPlugin?: TscPlugin, plugins: DiagnosticPlugin[] = []): ts.Diagnostic[] { - // Install extra diagnostic plugins - plugins.push( - ...getCommonPlugins(options, bazelOpts, program, disabledTsetseRules)); if (angularPlugin) { program = angularPlugin.wrap(program); } @@ -94,6 +91,10 @@ export function gatherDiagnostics( }); perfTrace.snapshotMemoryUsage(); } + + // Install extra diagnostic plugins + plugins.push( + ...getCommonPlugins(options, bazelOpts, program, disabledTsetseRules)); for (const plugin of plugins) { perfTrace.wrap(`${plugin.name} diagnostics`, () => { for (const sf of sourceFilesToCheck) { From 22c8f67cf9353417427306361fa9715f1f8320e8 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Tue, 18 Feb 2020 17:23:38 -0800 Subject: [PATCH 0696/1134] Deleting the google-internal path for ts-lit-plugin in favor of the open source one. PiperOrigin-RevId: 295860542 --- .../bazelbuild/rules_typescript/internal/common/tsconfig.bzl | 3 ++- .../rules_typescript/internal/tsc_wrapped/tsconfig.ts | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 4c4427dc52..14b4df5cff 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -162,7 +162,6 @@ def create_tsconfig( if hasattr(ctx.attr, "compile_angular_templates") and ctx.attr.compile_angular_templates: bazel_options["compileAngularTemplates"] = True - if disable_strict_deps: bazel_options["disableStrictDeps"] = disable_strict_deps bazel_options["allowedStrictDeps"] = [] @@ -263,8 +262,10 @@ def create_tsconfig( "inlineSources": True, # Implied by inlineSourceMap: True "sourceMap": False, + "plugins": [], } + if hasattr(ctx.attr, "node_modules"): compiler_options["typeRoots"] = ["/".join([p for p in [ workspace_path, diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index a50ac1ccc0..13851ca713 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -183,7 +183,6 @@ export interface BazelOptions { */ compileAngularTemplates?: boolean; - /** * Override for ECMAScript target language level to use for devmode. * From 8dd4b31b5d399214593090bfb7ff8eaa2d9b05dc Mon Sep 17 00:00:00 2001 From: evanm Date: Wed, 19 Feb 2020 10:41:41 -0800 Subject: [PATCH 0697/1134] clarify why expected_diagostics isn't available to everyone Someone was wondering why it had this whitelist, so add a bit more info to the comment. PiperOrigin-RevId: 296003095 --- .../rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 442ce6f433..24e2e6eefc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -286,7 +286,10 @@ function runOneBuild( return true; } -// We only allow our own code to use the expected_diagnostics attribute +// We use the expected_diagnostics attribute for writing compilation tests. +// We don't want to expose it to users as a general-purpose feature, because +// we don't want users to end up using it like a fancy @ts-ignore. +// So instead it's limited to a whitelist. const expectDiagnosticsWhitelist: string[] = [ ]; From 6b6630aacdd2b4a234c51ca224144b8d0a2405b6 Mon Sep 17 00:00:00 2001 From: evanm Date: Fri, 21 Feb 2020 11:19:02 -0800 Subject: [PATCH 0698/1134] don't stat() all input files As part of transpilation we might receive directories as input files. To check, we tested each file for whether it was a directory or not. This disk access evaded our various caches. To fix: 1. only check for directories in transpilation; 2. when checking for directories, assume names ending in sourc file extensions like ".js" are not directories. PiperOrigin-RevId: 296473783 --- .../internal/tsc_wrapped/tsc_wrapped.ts | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 24e2e6eefc..077a9480ce 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -177,11 +177,14 @@ function tagDiagnosticWithPlugin( * them to their .js or .ts contents. */ function expandSourcesFromDirectories(fileList: string[], filePath: string) { + if (filePath.endsWith('.ts') || filePath.endsWith('.tsx') || + filePath.endsWith('.js')) { + fileList.push(filePath); + return; + } + if (!fs.statSync(filePath).isDirectory()) { - if (filePath.endsWith('.ts') || filePath.endsWith('.tsx') || - filePath.endsWith('.js')) { - fileList.push(filePath); - } + // subdirectories may also contain e.g. .java files, which we ignore. return; } const entries = fs.readdirSync(filePath); @@ -223,10 +226,14 @@ function runOneBuild( angularCompilerOptions } = parsed; - const sourceFiles: string[] = []; - for (let i = 0; i < files.length; i++) { - const filePath = files[i]; - expandSourcesFromDirectories(sourceFiles, filePath); + let sourceFiles: string[] = []; + if (bazelOpts.isJsTranspilation) { + // Under JS transpilations, some inputs might be directories. + for (const filePath of files) { + expandSourcesFromDirectories(sourceFiles, filePath); + } + } else { + sourceFiles = files; } if (bazelOpts.maxCacheSizeMb !== undefined) { From 16672fcf3a6bf061b4ee013e23fae3ec9c75e463 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 24 Feb 2020 11:12:52 -0800 Subject: [PATCH 0699/1134] Fix worker loading when using require.resolve The breakage was observed downstream in @bazel/worker package which no longer worked. Closes #491 PiperOrigin-RevId: 296932382 --- .../rules_typescript/internal/tsc_wrapped/worker.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts index 2a6d1eec77..0a3239d54a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts @@ -88,14 +88,14 @@ function loadWorkerPb() { // workspace location // This extra lookup should never happen in google3. It's only needed for // local development in the rules_typescript repo. - const runfiles = process.env['BAZEL_NODE_RUNFILES_HELPER']; if (runfiles) { protofile = require(runfiles).resolve( 'build_bazel_rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto'); - } else { - protofile = - 'build_bazel_rules_typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto'; + } + if (!protofile) { + throw new Error( + `cannot find worker_protocol.proto at ${protoPath} or in Runfiles`); } } From c6f0b27f8fcdf54b251d1975f2978d9094681ed3 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Tue, 25 Feb 2020 13:03:18 -0800 Subject: [PATCH 0700/1134] Wire up Angular 9 templates as a ts_library plugin PiperOrigin-RevId: 297183761 --- .../internal/common/compilation.bzl | 10 +- .../internal/common/tsconfig.bzl | 14 ++- .../internal/tsc_wrapped/plugin_api.ts | 33 ++--- .../internal/tsc_wrapped/tsc_wrapped.ts | 115 ++++++++++-------- .../internal/tsc_wrapped/tsconfig.ts | 16 ++- 5 files changed, 106 insertions(+), 82 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index a514e9e662..8e36bfac49 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -156,7 +156,7 @@ def _outputs(ctx, label, srcs_files = []): # Temporary until all imports of ngfactory/ngsummary files are removed # TODO(alexeagle): clean up after Ivy launch - if getattr(ctx, "compile_angular_templates", False): + if getattr(ctx.attr, "use_angular_plugin", False): closure_js_files += [ctx.actions.declare_file(basename + ".ngfactory.mjs")] closure_js_files += [ctx.actions.declare_file(basename + ".ngsummary.mjs")] @@ -166,9 +166,11 @@ def _outputs(ctx, label, srcs_files = []): # Temporary until all imports of ngfactory/ngsummary files are removed # TODO(alexeagle): clean up after Ivy launch - if getattr(ctx, "compile_angular_templates", False): + if getattr(ctx.attr, "use_angular_plugin", False): devmode_js_files += [ctx.actions.declare_file(basename + ".ngfactory.js")] devmode_js_files += [ctx.actions.declare_file(basename + ".ngsummary.js")] + declaration_files += [ctx.actions.declare_file(basename + ".ngfactory.d.ts")] + declaration_files += [ctx.actions.declare_file(basename + ".ngsummary.d.ts")] return struct( closure_js = closure_js_files, devmode_js = devmode_js_files, @@ -336,7 +338,7 @@ def compile_ts( replay_params = None if has_sources: - inputs = compilation_inputs + [tsconfig] + inputs = compilation_inputs + [tsconfig] + getattr(ctx.files, "angular_assets", []) replay_params = compile_action( ctx, inputs, @@ -382,7 +384,7 @@ def compile_ts( )) devmode_compile_action( ctx, - compilation_inputs + [tsconfig_json_es5], + compilation_inputs + [tsconfig_json_es5] + getattr(ctx.files, "angular_assets", []), outputs, tsconfig_json_es5, node_profile_args, diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 14b4df5cff..d30b1c55ef 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -159,8 +159,18 @@ def create_tsconfig( "expectedDiagnostics": getattr(ctx.attr, "expected_diagnostics", []), } - if hasattr(ctx.attr, "compile_angular_templates") and ctx.attr.compile_angular_templates: - bazel_options["compileAngularTemplates"] = True + if getattr(ctx.attr, "use_angular_plugin", False): + bazel_options["angularCompilerOptions"] = { + # Needed for back-compat with explicit AOT bootstrap + # which has imports from generated .ngfactory files + "generateNgFactoryShims": True, + # Needed for back-compat with AOT tests which import the + # .ngsummary files + "generateNgSummaryShims": True, + # Bazel expects output files will always be produced + "allowEmptyCodegenFiles": True, + "assets": [a.path for a in getattr(ctx.files, "angular_assets", [])], + } if disable_strict_deps: bazel_options["disableStrictDeps"] = disable_strict_deps diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts index e09954d3e4..2bcfa210e3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts @@ -17,8 +17,8 @@ /** * @fileoverview - * Provides APIs for extending TypeScript. - * Based on the LanguageService plugin API in TS 2.3 + * Provides APIs for extending TypeScript command-line compiler. + * It's roughly analogous to how the Language Service allows plugins. */ import * as ts from 'typescript'; @@ -29,13 +29,6 @@ export interface PluginCompilerHost extends ts.CompilerHost { * In vanilla tsc, these are the ts.ParsedCommandLine#fileNames */ inputFiles: ReadonlyArray; - - /** - * A helper the transformer can use when generating new import statements - * @param fileName the absolute path to the file as referenced in the ts.Program - * @return a string suitable for use in an import statement - */ - fileNameToModuleId: (fileName: string) => string; } /** @@ -48,10 +41,10 @@ export interface PluginCompilerHost extends ts.CompilerHost { * * The methods on the plugin will be called in the order shown below: * - wrapHost to intercept CompilerHost methods and contribute inputFiles to the program - * - wrap to intercept diagnostics requests on the program + * - setupCompilation to capture the ts.Program * - createTransformers once it's time to emit */ -export interface TscPlugin { +export interface EmitPlugin { /** * Allow plugins to add additional files to the program. * For example, Angular creates ngsummary and ngfactory files. @@ -59,27 +52,19 @@ export interface TscPlugin { * @param inputFiles the files that were part of the original program * @param compilerHost: the original host (likely a ts.CompilerHost) that we can delegate to */ - wrapHost?(inputFiles: string[], compilerHost: PluginCompilerHost): PluginCompilerHost; + wrapHost?(compilerHost: ts.CompilerHost, inputFiles: string[], options: ts.CompilerOptions): PluginCompilerHost; - /** - * Same API as ts.LanguageService: allow the plugin to contribute additional - * diagnostics - * IMPORTANT: plugins must propagate the diagnostics from the original program. - * Execution of plugins is not additive; only the result from the top-most - * wrapped Program is used. - */ - wrap(p: ts.Program, config?: {}, host?: ts.CompilerHost): ts.Program; + setupCompilation(program: ts.Program, oldProgram?: ts.Program): void; + getNextProgram?(): ts.Program; + /** * Allow plugins to contribute additional TypeScript CustomTransformers. * These can modify the TS AST, JS AST, or .d.ts output AST. */ - createTransformers?(host: PluginCompilerHost): ts.CustomTransformers; + createTransformers(): ts.CustomTransformers; } -// TODO(alexeagle): this should be unioned with tsserverlibrary.PluginModule -export type Plugin = TscPlugin; - /** * The proxy design pattern, allowing us to customize behavior of the delegate * object. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 077a9480ce..71ca1eead6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -10,7 +10,7 @@ import {CompilerHost} from './compiler_host'; import * as bazelDiagnostics from './diagnostics'; import {constructManifest} from './manifest'; import * as perfTrace from './perf_trace'; -import {DiagnosticPlugin, PluginCompilerHost, TscPlugin} from './plugin_api'; +import {DiagnosticPlugin, PluginCompilerHost, EmitPlugin} from './plugin_api'; import {Plugin as StrictDepsPlugin} from './strict_deps'; import {BazelOptions, parseTsconfig, resolveNormalizedPath} from './tsconfig'; import {debug, log, runAsWorker, runWorkerLoop} from './worker'; @@ -62,11 +62,8 @@ function isCompilationTarget( */ export function gatherDiagnostics( options: ts.CompilerOptions, bazelOpts: BazelOptions, program: ts.Program, - disabledTsetseRules: string[], angularPlugin?: TscPlugin, + disabledTsetseRules: string[], plugins: DiagnosticPlugin[] = []): ts.Diagnostic[] { - if (angularPlugin) { - program = angularPlugin.wrap(program); - } const diagnostics: ts.Diagnostic[] = []; perfTrace.wrap('type checking', () => { @@ -218,13 +215,7 @@ function runOneBuild( throw new Error( 'Impossible state: if parseTsconfig returns no errors, then parsed should be non-null'); } - const { - options, - bazelOpts, - files, - disabledTsetseRules, - angularCompilerOptions - } = parsed; + const {options, bazelOpts, files, disabledTsetseRules} = parsed; let sourceFiles: string[] = []; if (bazelOpts.isJsTranspilation) { @@ -259,8 +250,7 @@ function runOneBuild( const perfTracePath = bazelOpts.perfTracePath; if (!perfTracePath) { const {diagnostics} = createProgramAndEmit( - fileLoader, options, bazelOpts, sourceFiles, disabledTsetseRules, - angularCompilerOptions); + fileLoader, options, bazelOpts, sourceFiles, disabledTsetseRules); if (diagnostics.length > 0) { console.error(bazelDiagnostics.format(bazelOpts.target, diagnostics)); return false; @@ -271,8 +261,7 @@ function runOneBuild( log('Writing trace to', perfTracePath); const success = perfTrace.wrap('runOneBuild', () => { const {diagnostics} = createProgramAndEmit( - fileLoader, options, bazelOpts, sourceFiles, disabledTsetseRules, - angularCompilerOptions); + fileLoader, options, bazelOpts, sourceFiles, disabledTsetseRules); if (diagnostics.length > 0) { console.error(bazelDiagnostics.format(bazelOpts.target, diagnostics)); return false; @@ -321,8 +310,7 @@ function errorDiag(messageText: string) { */ export function createProgramAndEmit( fileLoader: FileLoader, options: ts.CompilerOptions, - bazelOpts: BazelOptions, files: string[], disabledTsetseRules: string[], - angularCompilerOptions?: {[key: string]: unknown}): + bazelOpts: BazelOptions, files: string[], disabledTsetseRules: string[]): {program?: ts.Program, diagnostics: ts.Diagnostic[]} { // Beware! createProgramAndEmit must not print to console, nor exit etc. // Handle errors by reporting and returning diagnostics. @@ -336,44 +324,52 @@ export function createProgramAndEmit( const moduleResolver = bazelOpts.isJsTranspilation ? makeJsModuleResolver(bazelOpts.workspaceName) : ts.resolveModuleName; + + // Files which should be allowed to be read, but aren't TypeScript code + const assets: string[] = []; + if (bazelOpts.angularCompilerOptions) { + if (bazelOpts.angularCompilerOptions.assets) { + assets.push(...bazelOpts.angularCompilerOptions.assets); + } + } + const tsickleCompilerHost = new CompilerHost( - files, options, bazelOpts, compilerHostDelegate, fileLoader, + [...files, ...assets], options, bazelOpts, compilerHostDelegate, fileLoader, moduleResolver); let compilerHost: PluginCompilerHost = tsickleCompilerHost; const diagnosticPlugins: DiagnosticPlugin[] = []; - let angularPlugin: TscPlugin|undefined; - if (bazelOpts.compileAngularTemplates) { + let angularPlugin: EmitPlugin&DiagnosticPlugin|undefined; + if (bazelOpts.angularCompilerOptions) { try { - const ngOptions = angularCompilerOptions || {}; + const ngOptions = bazelOpts.angularCompilerOptions; // Add the rootDir setting to the options passed to NgTscPlugin. // Required so that synthetic files added to the rootFiles in the program // can be given absolute paths, just as we do in tsconfig.ts, matching // the behavior in TypeScript's tsconfig parsing logic. ngOptions['rootDir'] = options.rootDir; - // Dynamically load the Angular compiler installed as a peerDep - const ngtsc = require('@angular/compiler-cli'); + let angularPluginEntryPoint = '@angular/compiler-cli'; - // TODO(alexeagle): re-enable after Angular API changes land - // See https://github.com/angular/angular/pull/34792 - // and pending CL/289493608 - // By commenting this out, we allow Angular caretaker to sync changes from - // GitHub without having to coordinate any Piper patches in the same CL. - // angularPlugin = new ngtsc.NgTscPlugin(ngOptions); + // Dynamically load the Angular compiler. + // Lazy load, so that code that does not use the plugin doesn't even + // have to spend the time to parse and load the plugin's source. + // + // tslint:disable-next-line:no-require-imports + const ngtsc = require(angularPluginEntryPoint); + angularPlugin = new ngtsc.NgTscPlugin(ngOptions); + diagnosticPlugins.push(angularPlugin!); } catch (e) { return { diagnostics: [errorDiag( - 'when using `ts_library(compile_angular_templates=True)`, ' + + 'when using `ts_library(use_angular_plugin=True)`, ' + `you must install @angular/compiler-cli (was: ${e})`)] }; } - // Wrap host only needed until after Ivy cleanup - // TODO(alexeagle): remove after ngsummary and ngfactory files eliminated - if (angularPlugin) { - compilerHost = angularPlugin.wrapHost!(files, compilerHost); - } + // Wrap host so that Ivy compiler can add a file to it (has synthetic types for checking templates) + // TODO(arick): remove after ngsummary and ngfactory files eliminated + compilerHost = angularPlugin!.wrapHost!(compilerHost, files, options); } @@ -384,6 +380,16 @@ export function createProgramAndEmit( compilerHost.inputFiles, options, compilerHost, oldProgram)); cache.putProgram(bazelOpts.target, program); + let transformers: ts.CustomTransformers = { + before: [], + after: [], + afterDeclarations: [], + }; + if (angularPlugin) { + angularPlugin.setupCompilation(program); + transformers = angularPlugin.createTransformers(); + } + for (const pluginConfig of options['plugins'] as ts.PluginImport[] || []) { if (pluginConfig.name === 'ts-lit-plugin') { const litTscPlugin = @@ -402,8 +408,7 @@ export function createProgramAndEmit( // messages refer to the original source. After any subsequent passes // (decorator downleveling or tsickle) we do not type check. let diagnostics = gatherDiagnostics( - options, bazelOpts, program, disabledTsetseRules, angularPlugin, - diagnosticPlugins); + options, bazelOpts, program, disabledTsetseRules, diagnosticPlugins); if (!expectDiagnosticsWhitelist.length || expectDiagnosticsWhitelist.some(p => bazelOpts.target.startsWith(p))) { diagnostics = bazelDiagnostics.filterExpected( @@ -415,33 +420,43 @@ export function createProgramAndEmit( 'expected_diagnostics, but got ' + bazelOpts.target)); } + // The Angular plugin creates a new program with template type-check information + // This consumes (destroys) the old program so it's not suitable for re-use anymore + // Ask Angular to give us the updated reusable program. + if (angularPlugin) { + cache.putProgram(bazelOpts.target, angularPlugin.getNextProgram!()); + } + if (diagnostics.length > 0) { debug('compilation failed at', new Error().stack!); return {program, diagnostics}; } } + // Angular might have added files like input.ngfactory.ts or input.ngsummary.ts + // and these need to be emitted. + // TODO(arick): remove after Ivy is enabled and ngsummary/ngfactory files no longer needed + function isAngularFile(sf: ts.SourceFile) { + if (!/\.ng(factory|summary)\.ts$/.test(sf.fileName)) { + return false; + } + return isCompilationTarget(bazelOpts, { + fileName: sf.fileName.slice(0, /*'.ngfactory|ngsummary.ts'.length*/ -13) + '.ts' + } as ts.SourceFile); + } + const compilationTargets = program.getSourceFiles().filter( - fileName => isCompilationTarget(bazelOpts, fileName)); + sf => isCompilationTarget(bazelOpts, sf) || isAngularFile(sf)); let diagnostics: ts.Diagnostic[] = []; let useTsickleEmit = bazelOpts.tsickle; - let transforms: ts.CustomTransformers = { - before: [], - after: [], - afterDeclarations: [], - }; - - if (angularPlugin) { - transforms = angularPlugin.createTransformers!(compilerHost); - } if (useTsickleEmit) { diagnostics = emitWithTsickle( program, tsickleCompilerHost, compilationTargets, options, bazelOpts, - transforms); + transformers); } else { - diagnostics = emitWithTypescript(program, compilationTargets, transforms); + diagnostics = emitWithTypescript(program, compilationTargets, transformers); } if (diagnostics.length > 0) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index 13851ca713..be964ebcd8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -179,9 +179,17 @@ export interface BazelOptions { hasImplementation?: boolean; /** - * Enable the Angular ngtsc plugin. + * If present, run the Angular ngtsc plugin with the given options. */ - compileAngularTemplates?: boolean; + angularCompilerOptions?: { + [k: string]: any, + assets: string[], + // Ideally we would + // import {AngularCompilerOptions} from '@angular/compiler-cli'; + // and the type would be AngularCompilerOptions&{assets: string[]}; + // but we don't want a dependency from @bazel/typescript to @angular/compiler-cli + // as it's conceptually cyclical. + }; /** * Override for ECMAScript target language level to use for devmode. @@ -372,6 +380,10 @@ export function parseTsconfig( bazelOpts.nodeModulesPrefix = resolveNormalizedPath(options.rootDir!, bazelOpts.nodeModulesPrefix); } + if (bazelOpts.angularCompilerOptions && bazelOpts.angularCompilerOptions.assets) { + bazelOpts.angularCompilerOptions.assets = bazelOpts.angularCompilerOptions.assets.map( + f => resolveNormalizedPath(options.rootDir!, f)); + } let disabledTsetseRules: string[] = []; for (const pluginConfig of options['plugins'] as PluginImportWithConfig[] || From 0395ad9cc296cbdb96e2d01f1daaab6f24d6fe36 Mon Sep 17 00:00:00 2001 From: alexeagle Date: Tue, 25 Feb 2020 14:23:57 -0800 Subject: [PATCH 0701/1134] Don't initialize tsconfig with empty plugins. That overrides the user's selected plugins. PiperOrigin-RevId: 297202791 --- .../bazelbuild/rules_typescript/internal/common/tsconfig.bzl | 3 --- 1 file changed, 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index d30b1c55ef..fc1d6f75e2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -17,7 +17,6 @@ load(":common/module_mappings.bzl", "get_module_mappings") - _DEBUG = False def create_tsconfig( @@ -272,10 +271,8 @@ def create_tsconfig( "inlineSources": True, # Implied by inlineSourceMap: True "sourceMap": False, - "plugins": [], } - if hasattr(ctx.attr, "node_modules"): compiler_options["typeRoots"] = ["/".join([p for p in [ workspace_path, From 51d4a4eae1e7039ece107cf54ba61f470f5a4615 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Wed, 26 Feb 2020 14:49:32 -0800 Subject: [PATCH 0702/1134] Restore worker_protocol.proto path PiperOrigin-RevId: 297453665 --- .../bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts index 0a3239d54a..94d3bbb39b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/worker.ts @@ -72,7 +72,7 @@ declare namespace workerProto { */ function loadWorkerPb() { const protoPath = - './third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto'; + '../../third_party/github.com/bazelbuild/bazel/src/main/protobuf/worker_protocol.proto'; // Use node module resolution so we can find the .proto file in any of the // root dirs From de69b1b843e36ec0a655fc317928adaafdac062f Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Wed, 4 Mar 2020 12:23:55 -0800 Subject: [PATCH 0703/1134] Add BANNED_PROPERTY_READ to TS Conformance PiperOrigin-RevId: 298911342 --- .../tsetse/rules/conformance_pattern_rule.ts | 4 + .../property_read_test.ts | 82 ++++++++++++++++++ .../internal/tsetse/util/pattern_config.ts | 1 + .../pattern_engines/property_read_engine.ts | 83 +++++++++++++++++++ 4 files changed, 170 insertions(+) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts index feb72c2621..5b33edc86c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts @@ -7,6 +7,7 @@ import {CallNonConstantArgumentEngine} from '../util/pattern_engines/name_call_n import {NameEngine} from '../util/pattern_engines/name_engine'; import {PatternEngine} from '../util/pattern_engines/pattern_engine'; import {PropertyNonConstantWriteEngine} from '../util/pattern_engines/property_non_constant_write_engine'; +import {PropertyReadEngine} from '../util/pattern_engines/property_read_engine'; import {PropertyWriteEngine} from '../util/pattern_engines/property_write_engine'; @@ -37,6 +38,9 @@ export class ConformancePatternRule implements AbstractRule { case PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT: this.engine = new CallNonConstantArgumentEngine(config, fixer); break; + case PatternKind.BANNED_PROPERTY_READ: + this.engine = new PropertyReadEngine(config, fixer); + break; default: throw new Error('Config type not recognized, or not implemented yet.'); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts new file mode 100644 index 0000000000..1a09e819c3 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts @@ -0,0 +1,82 @@ +import 'jasmine'; + +import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; +import {setDebug} from '../../util/ast_tools'; +import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; + +describe('BANNED_PROPERTY_READ', () => { + describe('simpler matcher tests', () => { + const config = { + errorMessage: 'do not read location.href', + kind: PatternKind.BANNED_PROPERTY_READ, + values: ['Location.prototype.href'] + }; + const rule = new ConformancePatternRule(config); + + setDebug(true); + + it('check property access from the RHS of an assignment', () => { + const source = [ + `var x;`, + `x = location.href;`, + ]; + const results = compileAndCheck(rule, ...source); + + expect(results).toHaveFailuresMatching({ + matchedCode: `x = location.href`, + messageText: 'do not read location.href' + }); + }); + + it('check property access from the LHS of an assignment', () => { + const source = [ + `location.href = 'abc';`, + ]; + const results = compileAndCheck(rule, ...source); + + expect(results).toHaveNoFailures(); + }); + + it('check property access from the LHS of a non-assignment binary operation', + () => { + const source = [ + `var x = (location.href == "abc");`, + ]; + const results = compileAndCheck(rule, ...source); + + expect(results).toHaveFailuresMatching({ + matchedCode: `location.href == "abc"`, + messageText: 'do not read location.href' + }); + }); + + it('check property access from the RHS of a non-assignment binary operation', + () => { + const source = [ + `var x = ("abc" == location.href);`, + ]; + const results = compileAndCheck(rule, ...source); + + expect(results).toHaveFailuresMatching({ + matchedCode: `"abc" == location.href`, + messageText: 'do not read location.href' + }); + }); + + it('check property read from variable initializations', () => { + const source = [ + `var x = location.href;`, + ]; + const results = compileAndCheck(rule, ...source); + + expect(results).toHaveFailuresMatching({ + matchedCode: `var x = location.href;`, + messageText: 'do not read location.href' + }); + }); + }); +}); + +beforeEach(() => { + jasmine.addMatchers(customMatchers); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index cb35d41cf3..2830558997 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -8,6 +8,7 @@ export enum PatternKind { BANNED_NAME = 'banned-name', BANNED_PROPERTY_WRITE = 'banned-property-write', BANNED_PROPERTY_NON_CONSTANT_WRITE = 'banned-property-non-constant-write', + BANNED_PROPERTY_READ = 'banned-property-read', // Not from JSConformance. BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT = 'banned-call-non-constant-argument' } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts new file mode 100644 index 0000000000..03a4e02ac6 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts @@ -0,0 +1,83 @@ +import * as ts from 'typescript'; +import {Checker} from '../../checker'; +import {ErrorCode} from '../../error_code'; +import {debugLog} from '../ast_tools'; +import {Fixer} from '../fixer'; +import {PropertyMatcher} from '../match_symbol'; +import {Config} from '../pattern_config'; +import {PatternEngine} from '../pattern_engines/pattern_engine'; + +/** + * The engine for BANNED_PROPERTY_READ. + */ +export class PropertyReadEngine extends PatternEngine { + private readonly matcher: PropertyMatcher; + constructor(config: Config, fixer?: Fixer) { + super(config, fixer); + // TODO: Support more than one single value here, or even build a + // multi-pattern engine. This would help for performance. + if (this.config.values.length !== 1) { + throw new Error(`BANNED_PROPERTY_READ expects one value, got(${ + this.config.values.join(',')})`); + } + this.matcher = PropertyMatcher.fromSpec(this.config.values[0]); + } + + register(checker: Checker) { + checker.on( + ts.SyntaxKind.VariableStatement, this.checkAndFilterResults.bind(this), + ErrorCode.CONFORMANCE_PATTERN); + checker.on( + ts.SyntaxKind.BinaryExpression, this.checkAndFilterResults.bind(this), + ErrorCode.CONFORMANCE_PATTERN); + } + + check(tc: ts.TypeChecker, n: ts.Node): ts.Node|undefined { + // Check property read in variable initializations. + // For example, var a = object.property. + if (ts.isVariableStatement(n)) { + for (const declaration of n.declarationList.declarations) { + if (declaration.initializer !== undefined && + ts.isPropertyAccessExpression(declaration.initializer)) { + debugLog(`Inspecting ${n.getText().trim()}`); + if (this.matcher.matches(declaration.initializer, tc)) { + debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ + n.getEnd()}] on node [${n.getText()}]`); + return n; + } + } + } + } + + // Check property read in binary expressions. + // If it is an assignment, it is a match if the property access + // appears at the RHS of the assignment. + if (ts.isBinaryExpression(n)) { + debugLog(`inspecting ${n.getText().trim()}`); + // If the expression is an assignment, then the property must appear at + // the right-hand side of the expression. + if (n.operatorToken.getText().trim() === '=') { + if (ts.isPropertyAccessExpression(n.right) && + this.matcher.matches(n.right, tc)) { + debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ + n.getEnd()}] on node [${n.getText()}]`); + return n; + } + } + // If it is a non-assignment binary expression, + // the property access may appear either side of the expression. + else { + if ((ts.isPropertyAccessExpression(n.right) && + this.matcher.matches(n.right, tc)) || + (ts.isPropertyAccessExpression(n.left) && + this.matcher.matches(n.left, tc))) { + debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ + n.getEnd()}] on node [${n.getText()}]`); + return n; + } + } + } + + return; + } +} From ae37bd0e5e370c43e2be40303967eca11bc5e2ad Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Wed, 4 Mar 2020 13:04:37 -0800 Subject: [PATCH 0704/1134] Add an optional file path filter to AbsoluteMatcher. PiperOrigin-RevId: 298920299 --- .../ban_conformance_pattern/util_test.ts | 193 ++++++++++++++++++ .../internal/tsetse/util/match_symbol.ts | 95 ++++++++- 2 files changed, 279 insertions(+), 9 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts index 94ab234695..497821ba5f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts @@ -95,3 +95,196 @@ describe('The constant-ness logic', () => { } }); }); + +describe('test AbsoluteMatcher with file path', () => { + it('matched path', () => { + + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.bar'] + }; + const sources = [ + `export class Foo { static bar(s: string) {return s + "abc";} }`, + `import {Foo} from './file_0'; + var a = Foo.bar("123");` + ]; + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + + expect(results).toHaveFailuresMatching( + {matchedCode: `bar`, messageText: 'banned name with file path'}); + }); + + it('unmatched path', () => { + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.bar'] + }; + const sources = [ + `export class Foo { static bar(s: string) {return s + "abc";} }`, + `export class Foo { static bar(s: string) {return s + "abc";} }`, + `import {Foo} from './file_1'; + var a = Foo.bar("123");` + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveNoFailures(); + }); + + it('local exported definition', () => { + // This is a match because Foo.bar is an exported symbol. + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.bar'] + }; + const sources = + [`export class Foo { static bar(s: string) {return s + "abc";} } + var a = Foo.bar("123");`]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveFailuresMatching( + {matchedCode: `bar`, messageText: 'banned name with file path'}); + }); + + it('local non-exported definition', () => { + // This is not a match because Foo.bar is a non-exported locally defined + // symbol. + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.bar'] + }; + const sources = [`class Foo { static bar(s: string) {return s + "abc";} } + var a = Foo.bar("123");`]; + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveNoFailures(); + }); + + it('property test 1', () => { + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.s'] + }; + const sources = [ + `export class Foo { static s : string; }`, + `import {Foo} from './file_0'; + var a = Foo.s;`, + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveFailuresMatching( + {matchedCode: `s`, messageText: 'banned name with file path'}); + }); + + it('property test 2', () => { + // This is a match because Moo inherits s from Foo. + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.s'] + }; + const sources = [ + `export class Foo { static s : string; }`, + `import {Foo} from './file_0'; + export class Moo extends Foo { static t : string; }`, + `import {Moo} from './file_1'; + var a = Moo.s;`, + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveFailuresMatching( + {matchedCode: `s`, messageText: 'banned name with file path'}); + }); + + it('property test 3', () => { + // This is not a match because Moo redefines s. + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.s'] + }; + const sources = [ + `export class Foo { static s : string; }`, + `import {Foo} from './file_0'; + export class Moo extends Foo { static s : string; }`, + `import {Moo} from './file_1'; + var a = Moo.s;`, + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveNoFailures(); + }); + + it('inheritance test 1', () => { + // This is a match because Moo inherits bar from Foo. + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.bar'] + }; + const sources = [ + `export class Foo { static bar(s: string) {return s + "abc";} }`, + `import {Foo} from './file_0'; + export class Moo extends Foo { static far(s: string) {return s + "def";} }`, + `import {Moo} from './file_1'; + Moo.bar("abc");` + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveFailuresMatching( + {matchedCode: `bar`, messageText: 'banned name with file path'}); + }); + + it('inheritance test 2', () => { + // This is not a match because Moo redefines bar. + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.bar'] + }; + const sources = [ + `export class Foo { static bar(s: string) {return s + "abc";} } + export class Moo extends Foo { static bar(s: string) {return s + "def";} }`, + `import {Foo, Moo} from './file_0'; + Moo.bar("abc");` + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveNoFailures(); + }); + + it('interface', () => { + // This is not a match because even though bar specified is interface Moo, + // its actual definition is in class Boo. + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_1|Moo.bar'] + }; + const sources = [ + `export class Foo { static bar(s: string) {return s + "abc";} }`, + `import {Foo} from './file_0'; + export interface Moo extends Foo { }`, + `import {Moo} from './file_1'; + export class Boo implements Moo { static bar(s: string) {return s + "def";} }`, + `import {Boo} from './file_2'; + Boo.bar("abc");`, + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveNoFailures(); + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts index f446e1947b..d095647248 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts @@ -1,10 +1,11 @@ import * as ts from 'typescript'; import {dealias, debugLog, isAmbientDeclaration, isDeclaration, isInStockLibraries, isPartOfImportStatement} from './ast_tools'; +const PATH_NAME_FORMAT = '[/\\.\\w\\d_-]+'; const JS_IDENTIFIER_FORMAT = '[\\w\\d_-]+'; const FQN_FORMAT = `(${JS_IDENTIFIER_FORMAT}\.)*${JS_IDENTIFIER_FORMAT}`; // A fqn made out of a dot-separated chain of JS identifiers. -const ABSOLUTE_RE = new RegExp(`^${FQN_FORMAT}$`); +const ABSOLUTE_RE = new RegExp(`^(${PATH_NAME_FORMAT}\\|){0,1}${FQN_FORMAT}$`); /** * This class matches symbols given a "foo.bar.baz" name, where none of the @@ -14,18 +15,59 @@ const ABSOLUTE_RE = new RegExp(`^${FQN_FORMAT}$`); * strongly suggest finding the expected symbol in externs to find the object * name on which the symbol was initially defined. * - * TODO(rjamet): add a file-based optional filter, since FQNs tell you where - * your imported symbols were initially defined. That would let us be more - * specific in matches (say, you want to ban the fromLiteral in foo.ts but not - * the one from bar.ts). + * This matcher supports an optional file path filter. The filter specifies + * (part of) the path of the file in which the symbol of interest is defined. + * To add a file path filer to name "foo.bar.baz", prepend the path and + * the separator "|" to the name. For example, "path/to/file.ts|foo.bar.baz". + * With this filter, only symbols named "foo.bar.baz" that are defined in a path + * that contains "path/to/file.ts" are matched. + * + * This filter is useful when mutiple symbols have the same name but + * you want to match with a specific one. For example, assume that there are + * two classes named "Foo" defined in /path/to/file0 and /path/to/file1. + * // in /path/to/file0 + * export class Foo { static bar() {return "Foo.bar in file0";} } + * + * // in /path/to/file1 + * export class Foo { static bar() {return "Foo.bar in file1";} } + * + * Suppose that these two classes are referenced in two other files. + * // in /path/to/file2 + * import {Foo} from /path/to/file0; + * Foo.bar(); + * + * // in /path/to/file3 + * import {Foo} from /path/to/file1; + * Foo.bar(); + * + * An absolute matcher "Foo.bar" without a file filter will match with both + * references to "Foo.bar" in /path/to/file2 and /path/to/file3. + * An absolute matcher "/path/to/file1|Foo.bar", however, only matches with the + * "Foo.bar()" in /path/to/file3 because that references the "Foo.bar" defined + * in /path/to/file1. + * + * Note that an absolute matcher will match with any reference to the symbol + * defined in the file(s) specified by the file filter. For example, assume that + * Foo from file1 is extended in file4. + * + * // in /path/to/file4 + * import {Foo} from /path/to/file1; + * class Moo { static tar() {return "Moo.tar in file4";} } + * Moo.bar(); + * + * An absolute matcher "/path/to/file1|Foo.bar" matches with "Moo.bar()" because + * "bar" is defined as part of Foo in /path/to/file1. */ export class AbsoluteMatcher { /** - * From a "path/to/file.ts:foo.bar.baz" or "foo.bar.baz" matcher + * From a "path/to/file.ts|foo.bar.baz" or "foo.bar.baz" matcher * specification, builds a Matcher. */ - constructor(readonly bannedName: string) { - if (!bannedName.match(ABSOLUTE_RE)) { + readonly filePath: string; + readonly bannedName: string; + + constructor(spec: string) { + if (!spec.match(ABSOLUTE_RE)) { throw new Error('Malformed matcher selector.'); } @@ -35,12 +77,21 @@ export class AbsoluteMatcher { // on `foo`. To avoid any confusion, throw there if we see `prototype` in // the spec: that way, it's obvious that you're not trying to match // properties. - if (this.bannedName.match('.prototype.')) { + if (spec.match('.prototype.')) { throw new Error( 'Your pattern includes a .prototype, but the AbsoluteMatcher is ' + 'meant for non-object matches. Use the PropertyMatcher instead, or ' + 'the Property-based PatternKinds.'); } + + if (spec.includes('|')) { + // File path is present so we split spec by the separator "|". + [this.filePath, this.bannedName] = spec.split('|', 2); + } else { + // File path is omitted so spec is bannedName. + this.filePath = ''; + this.bannedName = spec; + } } matches(n: ts.Node, tc: ts.TypeChecker): boolean { @@ -79,6 +130,14 @@ export class AbsoluteMatcher { // either a declare somewhere, or one of the core libraries that // are loaded by default. if (!fqn.startsWith('"')) { + // If this matcher includes a file path, it means that the targeted symbol + // is defined and explicitly exported in some file. If the current symbol + // is not associated with a specific file (because it is a local symbol or + // ambient symbol), it is not a match. + if (this.filePath !== '') { + return false; + } + // We need to trace things back, so get declarations of the symbol. const declarations = s.getDeclarations(); if (!declarations) { @@ -91,6 +150,24 @@ export class AbsoluteMatcher { return false; } } + // If we know the file info of the symbol, and this matcher includes a file + // path, we check if they match. + else { + if (this.filePath !== '') { + const last = fqn.indexOf('"', 1); + if (last === -1) { + throw new Error('Malformed fully-qualified name.'); + } + const sympath = fqn.substring(1, last); + debugLog(`The file path of the symbol is ${sympath}`); + if (!sympath.match(this.filePath)) { + debugLog( + `The file path of the symbol does not match the ` + + `file path of the matcher`); + return false; + } + } + } debugLog(`all clear, report finding`); return true; From 10bc22fadfb331a3f397dc9e429d491afe5e2f2b Mon Sep 17 00:00:00 2001 From: martinprobst Date: Thu, 5 Mar 2020 07:20:03 -0800 Subject: [PATCH 0705/1134] Turn back on TypeScript error truncation. TypeScript runs out of memory trying to produce a human readable diagnostic in certain situations (infinitely recursing through anonymous type), see https://github.com/Microsoft/TypeScript/issues/37230. That's a bug, but more generally speaking, the default TypeScript behaviour is to run with error truncation. That's for a reason: some errors are much more readable with truncation. TypeScript's core team made the call that error truncation is generally a good idea, so we should follow along unless we have strong data indication otherwise (which we don't). Beyond that, error truncation being the default means it is the better tested path, so we'll probably save us some trouble in the future by keeping it enabled. PiperOrigin-RevId: 299096788 --- .../rules_typescript/internal/common/tsconfig.bzl | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index fc1d6f75e2..8df9ff4832 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -253,10 +253,17 @@ def create_tsconfig( # Interpret JSX as React calls (until someone asks for something different) "jsx": "react", - # Print out full errors. By default TS truncates errors >100 chars. This can make it - # impossible to understand some errors. - "noErrorTruncation": True, - # Do not emit files if they had errors (avoid accidentally serving broken code). + # Truncate excessively long errors. + # While truncation can make some errors harder to understand, it makes + # others easier to read. Additionally, for certain errors, TypeScript + # can run out of memory trying to convert them into a humand readable + # string (see https://github.com/Microsoft/TypeScript/issues/37230). + # That's a bug, but the general default configuration of TypeScript is + # to truncate, so following that seems safer and more in line with the + # expected developer UX. + "noErrorTruncation": False, + # Do not emit files if they had errors (avoid accidentally serving + # broken code). "noEmitOnError": False, # Create .d.ts files as part of compilation. "declaration": True, From f25798323da8b1ad1e872adebe26215eb8d42e5e Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Tue, 10 Mar 2020 14:23:26 -0700 Subject: [PATCH 0706/1134] Migrate users from legacy build_test to new implementation. PiperOrigin-RevId: 300177036 --- .../tests/ban_expect_truthy_promise/BUILD | 15 ++++++------- .../tests/ban_promise_as_condition/BUILD | 21 ++++++++++--------- .../tsetse/tests/check_return_value/BUILD | 21 ++++++++++--------- .../internal/tsetse/tests/equals_nan/BUILD | 15 ++++++------- .../tsetse/tests/must_use_promises/BUILD | 11 +++++----- 5 files changed, 44 insertions(+), 39 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD index 13772f9876..b92a83fd2c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_expect_truthy_promise/BUILD @@ -14,6 +14,7 @@ load("@npm_bazel_typescript//:index.bzl", "ts_library") + licenses(["notice"]) # Apache 2.0 error_message = "error TS21224: Value passed.*" @@ -33,13 +34,13 @@ ts_library( "positives.ts", ], expected_diagnostics = [ - "\(29,5\).*" + error_message, - "\(30,5\).*" + error_message, - "\(31,5\).*" + error_message, - "\(32,5\).*" + error_message, - "\(33,5\).*" + error_message, - "\(34,5\).*" + error_message, - "\(35,5\).*" + error_message, + "\\(29,5\\).*" + error_message, + "\\(30,5\\).*" + error_message, + "\\(31,5\\).*" + error_message, + "\\(32,5\\).*" + error_message, + "\\(33,5\\).*" + error_message, + "\\(34,5\\).*" + error_message, + "\\(35,5\\).*" + error_message, ], tsconfig = "//internal:tsetse/tsconfig.json", deps = [ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD index 019903df72..0a1540d97c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_promise_as_condition/BUILD @@ -14,6 +14,7 @@ load("@npm_bazel_typescript//:index.bzl", "ts_library") + licenses(["notice"]) # Apache 2.0 error_message = "error TS21226: Found a thenable.*" @@ -25,16 +26,16 @@ ts_library( "positives.ts", ], expected_diagnostics = [ - "\(7,7\).*" + error_message, - "\(15,7\).*" + error_message, - "\(23,19\).*" + error_message, - "\(25,10\).*" + error_message, - "\(30,34\).*" + error_message, - "\(31,34\).*" + error_message, - "\(37,19\).*" + error_message, - "\(39,10\).*" + error_message, - "\(44,34\).*" + error_message, - "\(45,34\).*" + error_message, + "\\(7,7\\).*" + error_message, + "\\(15,7\\).*" + error_message, + "\\(23,19\\).*" + error_message, + "\\(25,10\\).*" + error_message, + "\\(30,34\\).*" + error_message, + "\\(31,34\\).*" + error_message, + "\\(37,19\\).*" + error_message, + "\\(39,10\\).*" + error_message, + "\\(44,34\\).*" + error_message, + "\\(45,34\\).*" + error_message, ], tsconfig = "//internal:tsetse/tsconfig.json", ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD index 2afcf62e7e..989f892af7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD @@ -14,6 +14,7 @@ load("@npm_bazel_typescript//:index.bzl", "ts_library") + licenses(["notice"]) # Apache 2.0 error_message = "TS21222: return value is unused.\\n\\tSee http://tsetse.info/check-return-value" @@ -30,11 +31,11 @@ ts_library( testonly = 1, srcs = ["expected_diagnostics.ts"], expected_diagnostics = [ - "\(6,1\).*" + error_message, - "\(8,1\).*" + error_message, - "\(12,1\).*" + error_message, - "\(16,1\).*" + error_message, - "\(19,1\).*" + error_message, + "\\(6,1\\).*" + error_message, + "\\(8,1\\).*" + error_message, + "\\(12,1\\).*" + error_message, + "\\(16,1\\).*" + error_message, + "\\(19,1\\).*" + error_message, ], tsconfig = "//internal:tsetse/tsconfig.json", ) @@ -51,11 +52,11 @@ ts_library( testonly = 1, srcs = ["unused_return_value_user_defined_function.ts"], expected_diagnostics = [ - "\(4,1\).*" + error_message, - "\(5,1\).*" + error_message, - "\(7,1\).*" + error_message, - "\(9,1\).*" + error_message, - "\(15,1\).*" + error_message, + "\\(4,1\\).*" + error_message, + "\\(5,1\\).*" + error_message, + "\\(7,1\\).*" + error_message, + "\\(9,1\\).*" + error_message, + "\\(15,1\\).*" + error_message, ], tsconfig = "//internal:tsetse/tsconfig.json", deps = [ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD index 5fb48ffd33..c8dfdc5b07 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/equals_nan/BUILD @@ -14,6 +14,7 @@ load("@npm_bazel_typescript//:index.bzl", "ts_library") + licenses(["notice"]) # Apache 2.0 ts_library( @@ -23,13 +24,13 @@ ts_library( "positives.ts", ], expected_diagnostics = [ - "\(2,19\): error TS21223: x === NaN is always false; use isNaN\(x\) instead", - "\(6,5\): error TS21223: x === NaN is always false; use isNaN\(x\) instead", - "\(7,5\): error TS21223: x == NaN is always false; use isNaN\(x\) instead", - "\(8,5\): error TS21223: x !== NaN is always true; use !isNaN\(x\) instead", - "\(9,5\): error TS21223: x != NaN is always true; use !isNaN\(x\) instead", - "\(11,1\): error TS21223: x === NaN is always false; use isNaN\(x\) instead", - "\(12,1\): error TS21223: x === NaN is always false; use isNaN\(x\) instead", + "\\(2,19\\): error TS21223: x === NaN is always false; use isNaN\\(x\\) instead", + "\\(6,5\\): error TS21223: x === NaN is always false; use isNaN\\(x\\) instead", + "\\(7,5\\): error TS21223: x == NaN is always false; use isNaN\\(x\\) instead", + "\\(8,5\\): error TS21223: x !== NaN is always true; use !isNaN\\(x\\) instead", + "\\(9,5\\): error TS21223: x != NaN is always true; use !isNaN\\(x\\) instead", + "\\(11,1\\): error TS21223: x === NaN is always false; use isNaN\\(x\\) instead", + "\\(12,1\\): error TS21223: x === NaN is always false; use isNaN\\(x\\) instead", ], ) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD index 8b9b2f718b..827cef8dab 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/must_use_promises/BUILD @@ -14,6 +14,7 @@ load("@npm_bazel_typescript//:index.bzl", "ts_library") + licenses(["notice"]) # Apache 2.0 error_message = "TS21225: All Promises in async functions must either be awaited or used in an expression." @@ -25,11 +26,11 @@ ts_library( "positives.ts", ], expected_diagnostics = [ - "\(29,3\)" + error_message, - "\(30,3\)" + error_message, - "\(31,3\)" + error_message, - "\(32,3\)" + error_message, - "\(34,3\)" + error_message, + "\\(29,3\\)" + error_message, + "\\(30,3\\)" + error_message, + "\\(31,3\\)" + error_message, + "\\(32,3\\)" + error_message, + "\\(34,3\\)" + error_message, ], tsconfig = "//internal:tsetse/tsconfig.json", ) From 529884d585f98363d659fb6dd5201908dc540211 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Thu, 12 Mar 2020 14:28:28 -0700 Subject: [PATCH 0707/1134] Fix PropertyMatcher's improper handling of intersection/union types. PiperOrigin-RevId: 300624585 --- .../property_read_test.ts | 22 +++++++++++++++++++ .../internal/tsetse/util/match_symbol.ts | 5 +++++ 2 files changed, 27 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts index 1a09e819c3..d0fbee7794 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts @@ -75,6 +75,28 @@ describe('BANNED_PROPERTY_READ', () => { }); }); }); + + describe('advanced type property tests', () => { + const config = { + errorMessage: 'do not read window.location', + kind: PatternKind.BANNED_PROPERTY_READ, + // global variable `window` is of type `Window & typeof globalThis`, + // but we can only specify `Window` here. PropertyMatcher should be + // able to resolve intersection types by itself. See lib.dom.d.ts. + values: ['Window.prototype.location'] + }; + const rule = new ConformancePatternRule(config); + + it('check property read from variable initializations', () => { + const source = 'var l = window.location;'; + const results = compileAndCheck(rule, source); + + expect(results).toHaveFailuresMatching({ + matchedCode: 'var l = window.location;', + messageText: 'do not read window.location' + }); + }); + }); }); beforeEach(() => { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts index d095647248..c35ca7dc8f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts @@ -223,6 +223,11 @@ export class PropertyMatcher { if (this.exactTypeMatches(inspectedType)) { return true; } + // If the type is an intersection/union, check if any of the component matches + if (inspectedType.isUnionOrIntersection()) { + return inspectedType.types.some(comp => this.typeMatches(comp)); + } + const baseTypes = inspectedType.getBaseTypes() || []; return baseTypes.some(base => this.exactTypeMatches(base)); } From f77dab49148cbfe2ed67581133599f1def209dc7 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Thu, 12 Mar 2020 16:23:18 -0700 Subject: [PATCH 0708/1134] Fix PropertyMatcher's improper handling of intersection/union types. PiperOrigin-RevId: 300647116 --- .../property_read_test.ts | 22 ------------------- .../internal/tsetse/util/match_symbol.ts | 5 ----- 2 files changed, 27 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts index d0fbee7794..1a09e819c3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts @@ -75,28 +75,6 @@ describe('BANNED_PROPERTY_READ', () => { }); }); }); - - describe('advanced type property tests', () => { - const config = { - errorMessage: 'do not read window.location', - kind: PatternKind.BANNED_PROPERTY_READ, - // global variable `window` is of type `Window & typeof globalThis`, - // but we can only specify `Window` here. PropertyMatcher should be - // able to resolve intersection types by itself. See lib.dom.d.ts. - values: ['Window.prototype.location'] - }; - const rule = new ConformancePatternRule(config); - - it('check property read from variable initializations', () => { - const source = 'var l = window.location;'; - const results = compileAndCheck(rule, source); - - expect(results).toHaveFailuresMatching({ - matchedCode: 'var l = window.location;', - messageText: 'do not read window.location' - }); - }); - }); }); beforeEach(() => { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts index c35ca7dc8f..d095647248 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts @@ -223,11 +223,6 @@ export class PropertyMatcher { if (this.exactTypeMatches(inspectedType)) { return true; } - // If the type is an intersection/union, check if any of the component matches - if (inspectedType.isUnionOrIntersection()) { - return inspectedType.types.some(comp => this.typeMatches(comp)); - } - const baseTypes = inspectedType.getBaseTypes() || []; return baseTypes.some(base => this.exactTypeMatches(base)); } From 77f3060e45756b2fa81dc7fca31f9b3d6b0fda9d Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Fri, 13 Mar 2020 14:33:25 -0700 Subject: [PATCH 0709/1134] Fix PropertyMatcher's improper handling of intersection/union types. PiperOrigin-RevId: 300828250 --- .../property_read_test.ts | 22 +++++++++++++++++++ .../internal/tsetse/util/match_symbol.ts | 5 +++++ 2 files changed, 27 insertions(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts index 1a09e819c3..d0fbee7794 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts @@ -75,6 +75,28 @@ describe('BANNED_PROPERTY_READ', () => { }); }); }); + + describe('advanced type property tests', () => { + const config = { + errorMessage: 'do not read window.location', + kind: PatternKind.BANNED_PROPERTY_READ, + // global variable `window` is of type `Window & typeof globalThis`, + // but we can only specify `Window` here. PropertyMatcher should be + // able to resolve intersection types by itself. See lib.dom.d.ts. + values: ['Window.prototype.location'] + }; + const rule = new ConformancePatternRule(config); + + it('check property read from variable initializations', () => { + const source = 'var l = window.location;'; + const results = compileAndCheck(rule, source); + + expect(results).toHaveFailuresMatching({ + matchedCode: 'var l = window.location;', + messageText: 'do not read window.location' + }); + }); + }); }); beforeEach(() => { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts index d095647248..c35ca7dc8f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts @@ -223,6 +223,11 @@ export class PropertyMatcher { if (this.exactTypeMatches(inspectedType)) { return true; } + // If the type is an intersection/union, check if any of the component matches + if (inspectedType.isUnionOrIntersection()) { + return inspectedType.types.some(comp => this.typeMatches(comp)); + } + const baseTypes = inspectedType.getBaseTypes() || []; return baseTypes.some(base => this.exactTypeMatches(base)); } From f542de873e438adc6e090c84b794ac264118e1ca Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Fri, 27 Mar 2020 08:33:37 -0700 Subject: [PATCH 0710/1134] Expose official mapping from closure to devmode files PiperOrigin-RevId: 303334892 --- .../internal/common/compilation.bzl | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 8e36bfac49..0bee98e21f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -133,7 +133,7 @@ def _outputs(ctx, label, srcs_files = []): srcs_files: File list. sources files list. Returns: - A struct of file lists for different output types. + A struct of file lists for different output types and their relationship to each other. """ workspace_segments = label.workspace_root.split("/") if label.workspace_root else [] package_segments = label.package.split("/") if label.package else [] @@ -143,6 +143,7 @@ def _outputs(ctx, label, srcs_files = []): closure_js_files = [] devmode_js_files = [] declaration_files = [] + transpilation_infos = [] for input_file in srcs_files: is_dts = input_file.short_path.endswith(".d.ts") if is_dts and not create_shim_files: @@ -152,7 +153,8 @@ def _outputs(ctx, label, srcs_files = []): if basename.endswith(ext): basename = basename[:-len(ext)] break - closure_js_files += [ctx.actions.declare_file(basename + ".mjs")] + closure_js_file = ctx.actions.declare_file(basename + ".mjs") + closure_js_files.append(closure_js_file) # Temporary until all imports of ngfactory/ngsummary files are removed # TODO(alexeagle): clean up after Ivy launch @@ -161,7 +163,9 @@ def _outputs(ctx, label, srcs_files = []): closure_js_files += [ctx.actions.declare_file(basename + ".ngsummary.mjs")] if not is_dts: - devmode_js_files += [ctx.actions.declare_file(basename + ".js")] + devmode_js_file = ctx.actions.declare_file(basename + ".js") + devmode_js_files.append(devmode_js_file) + transpilation_infos.append(struct(closure = closure_js_file, devmode = devmode_js_file)) declaration_files += [ctx.actions.declare_file(basename + ".d.ts")] # Temporary until all imports of ngfactory/ngsummary files are removed @@ -175,6 +179,7 @@ def _outputs(ctx, label, srcs_files = []): closure_js = closure_js_files, devmode_js = devmode_js_files, declarations = declaration_files, + transpilation_infos = transpilation_infos, ) def compile_ts( @@ -257,6 +262,9 @@ def compile_ts( transpiled_devmode_js = outs.devmode_js gen_declarations = outs.declarations + # Not all existing implementations of outputs() may return transpilation_infos + transpilation_infos = getattr(outs, "transpilation_infos", []) + if has_sources and _get_runtime(ctx) != "nodejs": # Note: setting this variable controls whether tsickle is run at all. tsickle_externs = [ctx.actions.declare_file(ctx.label.name + ".externs.js")] @@ -475,6 +483,7 @@ def compile_ts( "replay_params": replay_params, "transitive_es6_sources": transitive_es6_sources, "tsickle_externs": tsickle_externs, + "transpilation_infos": transpilation_infos, }, } From 413fb486ea31077834732b50e7b306d92707d9ee Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 30 Mar 2020 11:53:00 -0700 Subject: [PATCH 0711/1134] Extend AbsoluteMatcher's file-matching capabilities to support matching against a global definition. PiperOrigin-RevId: 303789656 --- .../name_call_non_constant_argument_test.ts | 10 ++--- .../ban_conformance_pattern/name_test.ts | 6 +-- .../ban_conformance_pattern/util_test.ts | 45 ++++++++++++++++++- .../internal/tsetse/util/match_symbol.ts | 44 +++++++++--------- 4 files changed, 75 insertions(+), 30 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_call_non_constant_argument_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_call_non_constant_argument_test.ts index dba2664eff..b4b24cfc42 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_call_non_constant_argument_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_call_non_constant_argument_test.ts @@ -6,7 +6,7 @@ describe('BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT', () => { const config = { errorMessage: 'do not call bar.foo with non-literal 1st arg', kind: PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT, - values: ['bar:0'] + values: ['ANY_SYMBOL|bar:0'] }; const rule = new ConformancePatternRule(config); @@ -38,7 +38,7 @@ describe('BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT', () => { const rule = new ConformancePatternRule({ errorMessage: 'non-literal arg', kind: PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT, - values: ['aaa:1', 'bbb:0'] + values: ['ANY_SYMBOL|aaa:1', 'ANY_SYMBOL|bbb:0'] }); const sources = [ @@ -61,7 +61,7 @@ describe('BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT', () => { const rule = new ConformancePatternRule({ errorMessage: 'non-literal arg', kind: PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT, - values: ['Car.buildFromParts:0'] + values: ['ANY_SYMBOL|Car.buildFromParts:0'] }); const sources = [ @@ -81,7 +81,7 @@ describe('BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT', () => { const rule = new ConformancePatternRule({ errorMessage: 'non-literal arg', kind: PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT, - values: ['URL.createObjectURL:0'] + values: ['GLOBAL|URL.createObjectURL:0'] }); const sources = [`URL.createObjectURL(window.name);\n`]; @@ -96,7 +96,7 @@ describe('BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT', () => { const rule = new ConformancePatternRule({ errorMessage: 'non-literal arg', kind: PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT, - values: ['eval:0'] + values: ['GLOBAL|eval:0'] }); const sources = [`eval(window.name);\n`]; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts index 4e8609ce74..0a0eeaf552 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts @@ -7,7 +7,7 @@ describe('BANNED_NAME', () => { const config = { errorMessage: 'no Infinity', kind: PatternKind.BANNED_NAME, - values: ['Infinity'] + values: ['GLOBAL|Infinity'] }; const source = `Infinity; 1+1;`; const results = compileAndCheck(new ConformancePatternRule(config), source); @@ -20,7 +20,7 @@ describe('BANNED_NAME', () => { const config = { errorMessage: 'no blob url', kind: PatternKind.BANNED_NAME, - values: ['URL.createObjectURL'] + values: ['GLOBAL|URL.createObjectURL'] }; const source = `URL.createObjectURL({});`; const results = compileAndCheck(new ConformancePatternRule(config), source); @@ -39,7 +39,7 @@ describe('BANNED_NAME', () => { const config = { errorMessage: 'should not trigger', kind: PatternKind.BANNED_NAME, - values: ['whatever'] + values: ['ANY_SYMBOL|whatever'] }; const sources = [ `export type Foo = {bar: number, baz: (x:string)=>void}`, diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts index 497821ba5f..a234337d94 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts @@ -96,7 +96,21 @@ describe('The constant-ness logic', () => { }); }); -describe('test AbsoluteMatcher with file path', () => { +describe('test AbsoluteMatcher', () => { + it('requires a scope', () => { + const config = { + errorMessage: 'banned name with no scope', + kind: PatternKind.BANNED_NAME, + values: ['exec'] + }; + const sources = [`eval('alert("hi");');`]; + + const check = () => + compileAndCheck(new ConformancePatternRule(config), ...sources); + + expect(check).toThrowError('Malformed matcher selector.'); + }); + it('matched path', () => { const config = { @@ -151,6 +165,35 @@ describe('test AbsoluteMatcher with file path', () => { {matchedCode: `bar`, messageText: 'banned name with file path'}); }); + it('global definition', () => { + const config = { + errorMessage: 'banned ambient name', + kind: PatternKind.BANNED_NAME, + values: ['GLOBAL|eval'] + }; + const sources = [`eval('alert("hi");');`]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveFailuresMatching( + {matchedCode: `eval`, messageText: 'banned ambient name'}); + }); + + it('global definition with the same name as a custom method', () => { + const config = { + errorMessage: 'banned ambient name', + kind: PatternKind.BANNED_NAME, + values: ['GLOBAL|eval'] + }; + const sources = + [`export class Foo { static eval(s: string) { return s + "abc";} } + var a = Foo.eval("123");`]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveNoFailures(); + }); + it('local non-exported definition', () => { // This is not a match because Foo.bar is a non-exported locally defined // symbol. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts index c35ca7dc8f..842292c8c7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts @@ -5,7 +5,10 @@ const PATH_NAME_FORMAT = '[/\\.\\w\\d_-]+'; const JS_IDENTIFIER_FORMAT = '[\\w\\d_-]+'; const FQN_FORMAT = `(${JS_IDENTIFIER_FORMAT}\.)*${JS_IDENTIFIER_FORMAT}`; // A fqn made out of a dot-separated chain of JS identifiers. -const ABSOLUTE_RE = new RegExp(`^(${PATH_NAME_FORMAT}\\|){0,1}${FQN_FORMAT}$`); +const ABSOLUTE_RE = new RegExp(`^${PATH_NAME_FORMAT}\\|${FQN_FORMAT}$`); +const GLOBAL = 'GLOBAL'; +const ANY_SYMBOL = 'ANY_SYMBOL'; + /** * This class matches symbols given a "foo.bar.baz" name, where none of the @@ -15,10 +18,13 @@ const ABSOLUTE_RE = new RegExp(`^(${PATH_NAME_FORMAT}\\|){0,1}${FQN_FORMAT}$`); * strongly suggest finding the expected symbol in externs to find the object * name on which the symbol was initially defined. * - * This matcher supports an optional file path filter. The filter specifies + * This matcher requires a scope for the symbol, which may be `GLOBAL`, + * `ANY_SCOPE`, or a file path filter. The matcher begins with this scope, then + * the separator "|", followed by the symbol name. For example, "GLOBAL|eval". + * + * The file filter specifies * (part of) the path of the file in which the symbol of interest is defined. - * To add a file path filer to name "foo.bar.baz", prepend the path and - * the separator "|" to the name. For example, "path/to/file.ts|foo.bar.baz". + * For example, "path/to/file.ts|foo.bar.baz". * With this filter, only symbols named "foo.bar.baz" that are defined in a path * that contains "path/to/file.ts" are matched. * @@ -60,8 +66,7 @@ const ABSOLUTE_RE = new RegExp(`^(${PATH_NAME_FORMAT}\\|){0,1}${FQN_FORMAT}$`); */ export class AbsoluteMatcher { /** - * From a "path/to/file.ts|foo.bar.baz" or "foo.bar.baz" matcher - * specification, builds a Matcher. + * From a "path/to/file.ts|foo.bar.baz", builds a Matcher. */ readonly filePath: string; readonly bannedName: string; @@ -84,14 +89,8 @@ export class AbsoluteMatcher { 'the Property-based PatternKinds.'); } - if (spec.includes('|')) { - // File path is present so we split spec by the separator "|". - [this.filePath, this.bannedName] = spec.split('|', 2); - } else { - // File path is omitted so spec is bannedName. - this.filePath = ''; - this.bannedName = spec; - } + // Split spec by the separator "|". + [this.filePath, this.bannedName] = spec.split('|', 2); } matches(n: ts.Node, tc: ts.TypeChecker): boolean { @@ -130,11 +129,14 @@ export class AbsoluteMatcher { // either a declare somewhere, or one of the core libraries that // are loaded by default. if (!fqn.startsWith('"')) { - // If this matcher includes a file path, it means that the targeted symbol - // is defined and explicitly exported in some file. If the current symbol - // is not associated with a specific file (because it is a local symbol or - // ambient symbol), it is not a match. - if (this.filePath !== '') { + // If this matcher includes a non-empty file path, it means that the + // targeted symbol is defined and explicitly exported in some file. If the + // current symbol is not associated with a specific file (because it is a + // local symbol or ambient symbol), it is not a match. + if (this.filePath !== GLOBAL && this.filePath !== ANY_SYMBOL) { + debugLog( + `The symbol has no file path and one is specified by the ` + + `matcher`); return false; } @@ -153,14 +155,14 @@ export class AbsoluteMatcher { // If we know the file info of the symbol, and this matcher includes a file // path, we check if they match. else { - if (this.filePath !== '') { + if (this.filePath !== ANY_SYMBOL) { const last = fqn.indexOf('"', 1); if (last === -1) { throw new Error('Malformed fully-qualified name.'); } const sympath = fqn.substring(1, last); debugLog(`The file path of the symbol is ${sympath}`); - if (!sympath.match(this.filePath)) { + if (!sympath.match(this.filePath) || this.filePath === GLOBAL) { debugLog( `The file path of the symbol does not match the ` + `file path of the matcher`); From 1f96ea7ecf2118c4ac2731f64734c4351719721b Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Thu, 2 Apr 2020 18:44:32 -0700 Subject: [PATCH 0712/1134] Improve performance by checking multiple properties and identifiers in parallel. PiperOrigin-RevId: 304521229 --- .../internal/tsetse/checker.ts | 115 +++++++++++++++--- .../tsetse/rules/check_return_value_rule.ts | 2 +- .../tsetse/rules/must_use_promises_rule.ts | 2 +- .../tsetse/rules/property_renaming_safe.ts | 2 +- .../ban_conformance_pattern/util_test.ts | 8 +- .../tsetse/tests/check_return_value/BUILD | 2 +- .../internal/tsetse/util/pattern_config.ts | 2 + .../util/pattern_engines/name_engine.ts | 14 ++- .../pattern_engines/property_write_engine.ts | 28 +++-- 9 files changed, 139 insertions(+), 36 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts index 52d06f968c..be5fb250b7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts @@ -22,18 +22,26 @@ interface Handler { * possible. Compiler uses execute() to run the Tsetse check. */ export class Checker { + /** Node to handlers mapping for all enabled rules. */ + private readonly nodeHandlersMap = new Map(); /** - * nodeHandlersMap contains node to handlers mapping for all enabled rules. + * Mapping from identifier name to handlers for all rules inspecting property + * names. */ - private nodeHandlersMap = new Map(); + private readonly namedIdentifierHandlersMap = new Map(); + /** + * Mapping from property name to handlers for all rules inspecting property + * accesses expressions. + */ + private readonly namedPropertyAccessHandlersMap = + new Map(); + private failures: Failure[] = []; private currentSourceFile: ts.SourceFile|undefined; // currentCode will be set before invoking any handler functions so the value // initialized here is never used. private currentCode = 0; - /** - * Allow typed rules via typeChecker. - */ + /** Allow typed rules via typeChecker. */ typeChecker: ts.TypeChecker; constructor(program: ts.Program) { @@ -50,8 +58,7 @@ export class Checker { nodeKind: T['kind'], handlerFunction: (checker: Checker, node: T) => void, code: number) { const newHandler: Handler = {handlerFunction, code}; - const registeredHandlers: Handler[]|undefined = - this.nodeHandlersMap.get(nodeKind); + const registeredHandlers = this.nodeHandlersMap.get(nodeKind); if (registeredHandlers === undefined) { this.nodeHandlersMap.set(nodeKind, [newHandler]); } else { @@ -59,6 +66,43 @@ export class Checker { } } + /** + * Similar to `on`, but registers handlers on more specific node type, i.e., + * identifiers. + */ + onNamedIdentifier( + identifierName: string, + handlerFunction: (checker: Checker, node: ts.Identifier) => void, + code: number) { + const newHandler: Handler = {handlerFunction, code}; + const registeredHandlers = + this.namedIdentifierHandlersMap.get(identifierName); + if (registeredHandlers === undefined) { + this.namedIdentifierHandlersMap.set(identifierName, [newHandler]); + } else { + registeredHandlers.push(newHandler); + } + } + + /** + * Similar to `on`, but registers handlers on more specific node type, i.e., + * property access expressions. + */ + onNamedPropertyAccess( + propertyName: string, + handlerFunction: + (checker: Checker, node: ts.PropertyAccessExpression) => void, + code: number) { + const newHandler: Handler = {handlerFunction, code}; + const registeredHandlers = + this.namedPropertyAccessHandlersMap.get(propertyName); + if (registeredHandlers === undefined) { + this.namedPropertyAccessHandlersMap.set(propertyName, [newHandler]); + } else { + registeredHandlers.push(newHandler); + } + } + /** * Add a failure with a span. addFailure() is currently private because * `addFailureAtNode` is preferred. @@ -87,6 +131,47 @@ export class Checker { node.getStart(this.currentSourceFile), node.getEnd(), failureText, fix); } + /** Dispatch general handlers registered via `on` */ + dispatchNodeHandlers(node: ts.Node) { + const handlers = this.nodeHandlersMap.get(node.kind); + if (handlers === undefined) { + return; + } + + for (const handler of handlers) { + this.currentCode = handler.code; + handler.handlerFunction(this, node); + } + } + + /** Dispatch identifier handlers registered via `onNamedIdentifier` */ + dispatchNamedIdentifierHandlers(id: ts.Identifier) { + const handlers = this.namedIdentifierHandlersMap.get(id.text); + if (handlers === undefined) { + return; + } + + for (const handler of handlers) { + this.currentCode = handler.code; + handler.handlerFunction(this, id); + } + } + + /** + * Dispatch property access handlers registered via `onNamedPropertyAccess` + */ + dispatchNamedPropertyAccessHandlers(prop: ts.PropertyAccessExpression) { + const handlers = this.namedPropertyAccessHandlersMap.get(prop.name.text); + if (handlers === undefined) { + return; + } + + for (const handler of handlers) { + this.currentCode = handler.code; + handler.handlerFunction(this, prop); + } + } + /** * Walk `sourceFile`, invoking registered handlers with Checker as the first * argument and current node as the second argument. Return failures if there @@ -100,14 +185,16 @@ export class Checker { return this.failures; function run(node: ts.Node) { - const handlers: Handler[]|undefined = - thisChecker.nodeHandlersMap.get(node.kind); - if (handlers !== undefined) { - for (const handler of handlers) { - thisChecker.currentCode = handler.code; - handler.handlerFunction(thisChecker, node); - } + // Dispatch handlers registered via `on` + thisChecker.dispatchNodeHandlers(node); + + // Dispatch handlers for named identifiers and properties + if (ts.isIdentifier(node)) { + thisChecker.dispatchNamedIdentifierHandlers(node); + } else if (ts.isPropertyAccessExpression(node)) { + thisChecker.dispatchNamedPropertyAccessHandlers(node); } + ts.forEachChild(node, run); } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts index d52a0f7ab0..6ac0f229e8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts @@ -11,7 +11,7 @@ import {ErrorCode} from '../error_code'; import {AbstractRule} from '../rule'; const FAILURE_STRING = 'return value is unused.' - + '\n\tSee http://tsetse.info/check-return-value'; + + '\n\tSee go/ts-conformance#check-return-value'; // A list of well-known functions that the return value must be used. If unused // then the function call is either a no-op (e.g. 'foo.trim()' foo is unchanged) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/must_use_promises_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/must_use_promises_rule.ts index 7e4905a302..8bc8db0c41 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/must_use_promises_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/must_use_promises_rule.ts @@ -12,7 +12,7 @@ import {AbstractRule} from '../rule'; const FAILURE_STRING = 'All Promises in async functions must either be awaited or used in an expression.' + - '\n\tSee http://tsetse.info/must-use-promises'; + '\n\tSee go/ts-conformance#must-use-promises'; export class Rule extends AbstractRule { readonly ruleName = 'must-use-promises'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/property_renaming_safe.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/property_renaming_safe.ts index 7b842442b6..03d82fd060 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/property_renaming_safe.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/property_renaming_safe.ts @@ -50,5 +50,5 @@ function checkIndexSignAccessedWithPropAccess( `${typeChecker.typeToString(t)}. The type has a string index ` + `signature, but it is being accessed using a dotted property ` + `access. -See http://tsetse.info/property-renaming-safe.`); +See go/ts-conformance#property-renaming-safe.`); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts index a234337d94..dd44a5d15d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts @@ -11,11 +11,11 @@ import {compile, compileAndCheck} from '../../util/testing/test_support'; describe('Debug output', () => { it('turns on and off', () => { - const source = `const obj = {prop:'val'}; obj.prop = 'foo';`; + const source = `location.href = 'foo';`; const rule = new ConformancePatternRule({ errorMessage: 'does not matter', kind: PatternKind.BANNED_PROPERTY_WRITE, - values: ['HTMLQuoteElement.prototype.cite'] + values: ['Location.prototype.href'] }); const logs: string[] = []; @@ -27,13 +27,13 @@ describe('Debug output', () => { setDebug(true); compileAndCheck(rule, source); - expect(logs).toEqual([`inspecting obj.prop = 'foo'`]); + expect(logs).toEqual([`inspecting location.href = 'foo'`]); setDebug(false); compileAndCheck(rule, source); // Nothing more appended: debug was false - expect(logs).toEqual([`inspecting obj.prop = 'foo'`]); + expect(logs).toEqual([`inspecting location.href = 'foo'`]); }); }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD index 989f892af7..f15e5cbb66 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD @@ -17,7 +17,7 @@ load("@npm_bazel_typescript//:index.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 -error_message = "TS21222: return value is unused.\\n\\tSee http://tsetse.info/check-return-value" +error_message = "TS21222: return value is unused.\\n\\tSee go/ts-conformance#check-return-value" ts_library( name = "no_expected_diagnostics_test", diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index 2830558997..9517c1f7f0 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -7,9 +7,11 @@ export enum PatternKind { BANNED_NAME = 'banned-name', BANNED_PROPERTY_WRITE = 'banned-property-write', + /** @deprecated use `BANNED_PROPERTY_WRITE` instead */ BANNED_PROPERTY_NON_CONSTANT_WRITE = 'banned-property-non-constant-write', BANNED_PROPERTY_READ = 'banned-property-read', // Not from JSConformance. + /** @deprecated use `BANNED_PROPERTY` instead */ BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT = 'banned-call-non-constant-argument' } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts index 3312619041..666779b87e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts @@ -1,4 +1,5 @@ import * as ts from 'typescript'; + import {Checker} from '../../checker'; import {ErrorCode} from '../../error_code'; import {debugLog, shouldExamineNode} from '../ast_tools'; @@ -21,15 +22,16 @@ export class NameEngine extends PatternEngine { } register(checker: Checker) { - checker.on( - ts.SyntaxKind.Identifier, this.checkAndFilterResults.bind(this), - ErrorCode.CONFORMANCE_PATTERN); + // `String.prototype.split` only returns emtpy array when both the string + // and the splitter are empty. Here we should be able to safely assert pop + // returns a non-null result. + const bannedIdName = this.matcher.bannedName.split('.').pop()!; + checker.onNamedIdentifier(bannedIdName, (c: Checker, n: ts.Node) => { + this.checkAndFilterResults(c, n); + }, ErrorCode.CONFORMANCE_PATTERN); } check(tc: ts.TypeChecker, n: ts.Node): ts.Node|undefined { - if (!shouldExamineNode(n) || n.getSourceFile().isDeclarationFile) { - return; - } debugLog(`inspecting ${n.getText().trim()}`); if (!this.matcher.matches(n, tc)) { debugLog('Not the right global name.'); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts index 640ff64634..9ca2887a01 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts @@ -24,21 +24,33 @@ export class PropertyWriteEngine extends PatternEngine { } register(checker: Checker) { - checker.on( - ts.SyntaxKind.BinaryExpression, this.checkAndFilterResults.bind(this), + checker.onNamedPropertyAccess( + this.matcher.bannedProperty, this.checkAndFilterResults.bind(this), ErrorCode.CONFORMANCE_PATTERN); } check(tc: ts.TypeChecker, n: ts.Node): ts.Node|undefined { - if (!isPropertyWriteExpression(n)) { + if (!ts.isPropertyAccessExpression(n)) { + throw new Error( + `Should not happen: node is not a PropertyAccessExpression`); + } + + if (!ts.isBinaryExpression(n.parent)) { + return; + } + + if (n.parent.operatorToken.getText().trim() !== '=') { return; } - debugLog(`inspecting ${n.getText().trim()}`); - if (!this.matcher.matches(n.left, tc)) { + + if (n.parent.left !== n) { + return; + } + + debugLog(`inspecting ${n.parent.getText().trim()}`); + if (!this.matcher.matches(n, tc)) { return; } - debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ - n.getEnd()}] on node [${n.getText()}]`); - return n; + return n.parent; } } From 75675ddec85b3cc6e8bcda37ddd027572480f193 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 6 Apr 2020 19:43:56 -0700 Subject: [PATCH 0713/1134] Add a new conformance pattern to examine property access PiperOrigin-RevId: 305169505 --- .../tsetse/rules/conformance_pattern_rule.ts | 4 + .../ban_conformance_pattern/property_test.ts | 111 ++++++++++++++++++ .../internal/tsetse/util/pattern_config.ts | 12 +- .../util/pattern_engines/property_engine.ts | 50 ++++++++ 4 files changed, 176 insertions(+), 1 deletion(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_test.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts index 5b33edc86c..f1188943a6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts @@ -6,6 +6,7 @@ import {Config, PatternKind} from '../util/pattern_config'; import {CallNonConstantArgumentEngine} from '../util/pattern_engines/name_call_non_constant_argument'; import {NameEngine} from '../util/pattern_engines/name_engine'; import {PatternEngine} from '../util/pattern_engines/pattern_engine'; +import {PropertyEngine} from '../util/pattern_engines/property_engine'; import {PropertyNonConstantWriteEngine} from '../util/pattern_engines/property_non_constant_write_engine'; import {PropertyReadEngine} from '../util/pattern_engines/property_read_engine'; import {PropertyWriteEngine} from '../util/pattern_engines/property_write_engine'; @@ -26,6 +27,9 @@ export class ConformancePatternRule implements AbstractRule { constructor(config: Config, fixer?: Fixer) { switch (config.kind) { + case PatternKind.BANNED_PROPERTY: + this.engine = new PropertyEngine(config, fixer); + break; case PatternKind.BANNED_PROPERTY_WRITE: this.engine = new PropertyWriteEngine(config, fixer); break; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_test.ts new file mode 100644 index 0000000000..1fcd0a6fd2 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_test.ts @@ -0,0 +1,111 @@ +import 'jasmine'; +import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; +import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; + +describe('BANNED_PROPERTY', () => { + beforeEach(() => { + jasmine.addMatchers(customMatchers); + }); + + it('matches simple property access on dom properties', () => { + const config = { + errorMessage: 'No Location#href access', + kind: PatternKind.BANNED_PROPERTY, + values: ['Location.prototype.href'], + }; + const source = 'const href = location.href;'; + const results = compileAndCheck(new ConformancePatternRule(config), source); + + expect(results).toHaveFailuresMatching({ + matchedCode: 'location.href', + messageText: 'No Location#href access', + }); + }); + + it('matches simple property access on properties of TS built-in types', + () => { + const config = { + errorMessage: 'No Array#map access', + kind: PatternKind.BANNED_PROPERTY, + values: ['Array.prototype.map'], + }; + const source = '[].map(() => 1);'; + + const results = + compileAndCheck(new ConformancePatternRule(config), source); + + expect(results).toHaveFailuresMatching({ + matchedCode: '[].map', + messageText: 'No Array#map access', + }); + }); + + it('matches simple property access on properties of user-defined global types', + () => { + const config = { + errorMessage: 'No Ty#foo access', + kind: PatternKind.BANNED_PROPERTY, + values: ['Ty.prototype.foo'], + }; + const funcPropAccess = `class Ty { + foo() {} + bar: number = 1; + } + new Ty().foo(); + `; + let results = + compileAndCheck(new ConformancePatternRule(config), funcPropAccess); + + expect(results).toHaveFailuresMatching({ + matchedCode: 'new Ty().foo', + messageText: 'No Ty#foo access', + }); + + const nonFuncPropAccess = `class Ty { + foo: number = 1; + bar() {} + } + new Ty().foo; + `; + results = compileAndCheck( + new ConformancePatternRule(config), nonFuncPropAccess); + + expect(results).toHaveFailuresMatching({ + matchedCode: 'new Ty().foo', + messageText: 'No Ty#foo access', + }); + }); + + it('does not match in-module defined type', () => { + const config = { + errorMessage: 'No Location#replace access', + kind: PatternKind.BANNED_PROPERTY, + values: ['Location.prototype.location'], + }; + const source = `export {}; // export makes the file a module + class Location { replace(x: string) {} } + new Location().replace('a');` + const results = compileAndCheck(new ConformancePatternRule(config), source); + + expect(results).toHaveNoFailures(); + }); + + it('does not match properties after fancy type casts', () => { + const config = { + errorMessage: 'No Location#href access', + kind: PatternKind.BANNED_PROPERTY, + values: ['Location.prototype.replace'], + }; + const source = [ + // Grey area of tests that don't trigger, but probably could + '(location as unknown as {replace: (url: string) => void}).replace(\'\');', + // We don't trigger on any, since it's not the right type. + 'const locationAsAny: any = location;', + 'locationAsAny.replace(\'https://example.com/script.js\');', + ]; + const results = + compileAndCheck(new ConformancePatternRule(config), ...source); + + expect(results).toHaveNoFailures(); + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index 9517c1f7f0..3c78c8f200 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -5,12 +5,22 @@ * https://github.com/google/closure-compiler/wiki/JS-Conformance-Framework) */ export enum PatternKind { + /** Ban use of fully distinguished names. */ BANNED_NAME = 'banned-name', + /** Ban use of instance properties */ + BANNED_PROPERTY = 'banned-property', + /** + * Ban instance property, like BANNED_PROPERTY but where reads of the + * property are allowed. + */ BANNED_PROPERTY_WRITE = 'banned-property-write', /** @deprecated use `BANNED_PROPERTY_WRITE` instead */ BANNED_PROPERTY_NON_CONSTANT_WRITE = 'banned-property-non-constant-write', + /** + * Ban instance property, like BANNED_PROPERTY but where writes of the + * property are allowed. + */ BANNED_PROPERTY_READ = 'banned-property-read', - // Not from JSConformance. /** @deprecated use `BANNED_PROPERTY` instead */ BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT = 'banned-call-non-constant-argument' } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts new file mode 100644 index 0000000000..a3b2a8c47f --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts @@ -0,0 +1,50 @@ +import * as ts from 'typescript'; + +import {Checker} from '../../checker'; +import {ErrorCode} from '../../error_code'; +import {debugLog} from '../ast_tools'; +import {Fixer} from '../fixer'; +import {PropertyMatcher} from '../match_symbol'; +import {Config} from '../pattern_config'; +import {PatternEngine} from '../pattern_engines/pattern_engine'; + +/** + * Engine for the BANNED_PROPERTY pattern. It captures accesses to property + * matching the spec regardless whether it's a read or write. + */ +export class PropertyEngine extends PatternEngine { + private readonly matcher: PropertyMatcher; + constructor(config: Config, fixer?: Fixer) { + super(config, fixer); + // Although noted in other engines, it is difficult to support multiple + // values within the current design. It may be easier to only allow a single + // value in the config. + if (this.config.values.length !== 1) { + throw new Error(`BANNED_PROPERTY expects one value, got(${ + this.config.values.join(',')})`); + } + this.matcher = PropertyMatcher.fromSpec(this.config.values[0]); + } + + register(checker: Checker) { + checker.onNamedPropertyAccess( + this.matcher.bannedProperty, this.checkAndFilterResults.bind(this), + ErrorCode.CONFORMANCE_PATTERN); + } + + // TODO(pwng): only plain property access expressions are supported for now. + // In the future, support more patterns including `location['href']` and + // `const {href} = location;`. That possibly requires refactoring + // `PropertyMatcher` or adding new types of matchers. + check(tc: ts.TypeChecker, n: ts.Node): ts.Node|undefined { + if (!ts.isPropertyAccessExpression(n)) { + throw new Error( + `Should not happen: node is not a PropertyAccessExpression`); + } + debugLog(`inspecting ${n.getText().trim()}`); + if (!this.matcher.matches(n, tc)) { + return; + } + return n; + } +} From 295e2ce02563ab3792b8ef0e255747e45cdc4678 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Wed, 15 Apr 2020 09:24:50 -0700 Subject: [PATCH 0714/1134] Use generics to avoid run-time type confusion due to Map bivariance in TS. PiperOrigin-RevId: 306657994 --- .../internal/tsetse/checker.ts | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts index be5fb250b7..9d5c1d285b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts @@ -11,8 +11,8 @@ import {Failure, Fix} from './failure'; * A Handler contains a handler function and its corresponding error code so * when the handler function is triggered we know which rule is violated. */ -interface Handler { - handlerFunction(checker: Checker, node: ts.Node): void; +interface Handler { + handlerFunction(checker: Checker, node: T): void; code: number; } @@ -23,18 +23,20 @@ interface Handler { */ export class Checker { /** Node to handlers mapping for all enabled rules. */ - private readonly nodeHandlersMap = new Map(); + private readonly nodeHandlersMap = + new Map[]>(); /** * Mapping from identifier name to handlers for all rules inspecting property * names. */ - private readonly namedIdentifierHandlersMap = new Map(); + private readonly namedIdentifierHandlersMap = + new Map[]>(); /** * Mapping from property name to handlers for all rules inspecting property * accesses expressions. */ private readonly namedPropertyAccessHandlersMap = - new Map(); + new Map[]>(); private failures: Failure[] = []; private currentSourceFile: ts.SourceFile|undefined; @@ -57,7 +59,7 @@ export class Checker { on( nodeKind: T['kind'], handlerFunction: (checker: Checker, node: T) => void, code: number) { - const newHandler: Handler = {handlerFunction, code}; + const newHandler: Handler = {handlerFunction, code}; const registeredHandlers = this.nodeHandlersMap.get(nodeKind); if (registeredHandlers === undefined) { this.nodeHandlersMap.set(nodeKind, [newHandler]); @@ -74,7 +76,7 @@ export class Checker { identifierName: string, handlerFunction: (checker: Checker, node: ts.Identifier) => void, code: number) { - const newHandler: Handler = {handlerFunction, code}; + const newHandler: Handler = {handlerFunction, code}; const registeredHandlers = this.namedIdentifierHandlersMap.get(identifierName); if (registeredHandlers === undefined) { @@ -93,7 +95,8 @@ export class Checker { handlerFunction: (checker: Checker, node: ts.PropertyAccessExpression) => void, code: number) { - const newHandler: Handler = {handlerFunction, code}; + const newHandler: + Handler = {handlerFunction, code}; const registeredHandlers = this.namedPropertyAccessHandlersMap.get(propertyName); if (registeredHandlers === undefined) { From 0ef5825762298ba984966e684580014c3a30d730 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 20 Apr 2020 09:51:55 -0700 Subject: [PATCH 0715/1134] Update internal URLs for tsetse conformance checks. PiperOrigin-RevId: 307418854 --- .../internal/tsetse/rules/check_return_value_rule.ts | 5 +++-- .../internal/tsetse/rules/must_use_promises_rule.ts | 3 ++- .../internal/tsetse/rules/property_renaming_safe.ts | 2 +- .../internal/tsetse/tests/check_return_value/BUILD | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts index 6ac0f229e8..7863cf5e1e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts @@ -10,8 +10,8 @@ import {Checker} from '../checker'; import {ErrorCode} from '../error_code'; import {AbstractRule} from '../rule'; -const FAILURE_STRING = 'return value is unused.' - + '\n\tSee go/ts-conformance#check-return-value'; +const FAILURE_STRING = 'return value is unused.' + + '\n\tSee http://tsetse.info/check-return-value'; // A list of well-known functions that the return value must be used. If unused // then the function call is either a no-op (e.g. 'foo.trim()' foo is unchanged) @@ -40,6 +40,7 @@ const METHODS_TO_CHECK = new Set([ ['string', 'trim'], ].map(list => list.join('#'))); +/** A rule to ensure required return values from common functions are used. */ export class Rule extends AbstractRule { readonly ruleName = 'check-return-value'; readonly code = ErrorCode.CHECK_RETURN_VALUE; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/must_use_promises_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/must_use_promises_rule.ts index 8bc8db0c41..f58357440b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/must_use_promises_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/must_use_promises_rule.ts @@ -12,8 +12,9 @@ import {AbstractRule} from '../rule'; const FAILURE_STRING = 'All Promises in async functions must either be awaited or used in an expression.' + - '\n\tSee go/ts-conformance#must-use-promises'; + '\n\tSee http://tsetse.info/must-use-promises'; +/** A rule to ensure promises in async functions are awaited or used. */ export class Rule extends AbstractRule { readonly ruleName = 'must-use-promises'; readonly code = ErrorCode.MUST_USE_PROMISES; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/property_renaming_safe.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/property_renaming_safe.ts index 03d82fd060..7b842442b6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/property_renaming_safe.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/property_renaming_safe.ts @@ -50,5 +50,5 @@ function checkIndexSignAccessedWithPropAccess( `${typeChecker.typeToString(t)}. The type has a string index ` + `signature, but it is being accessed using a dotted property ` + `access. -See go/ts-conformance#property-renaming-safe.`); +See http://tsetse.info/property-renaming-safe.`); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD index f15e5cbb66..989f892af7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/check_return_value/BUILD @@ -17,7 +17,7 @@ load("@npm_bazel_typescript//:index.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 -error_message = "TS21222: return value is unused.\\n\\tSee go/ts-conformance#check-return-value" +error_message = "TS21222: return value is unused.\\n\\tSee http://tsetse.info/check-return-value" ts_library( name = "no_expected_diagnostics_test", From 3aaa0d3024c2d143734a4169f460f68c0795c38a Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Tue, 21 Apr 2020 09:06:55 -0700 Subject: [PATCH 0716/1134] Move tsetse/tests/ban_conformance_pattern/* tests into the same directory as the code under test. PiperOrigin-RevId: 307616092 --- .../conformance_pattern_rule_test.ts} | 4 ++-- .../{tests/ban_conformance_pattern => util}/fixer_test.ts | 8 ++++---- .../name_call_non_constant_argument_test.ts | 0 .../pattern_engines/name_engine_test.ts} | 0 .../pattern_engines/property_engine_test.ts} | 0 .../property_non_constant_write_engine_test.ts} | 0 .../pattern_engines/property_read_engine_test.ts} | 0 .../pattern_engines/property_write_engine_test.ts} | 0 .../{tests/ban_conformance_pattern => util}/util_test.ts | 8 ++++---- .../ban_conformance_pattern => util}/whitelist_test.ts | 6 +++--- 10 files changed, 13 insertions(+), 13 deletions(-) rename third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/{tests/ban_conformance_pattern/rule_creation_test.ts => rules/conformance_pattern_rule_test.ts} (82%) rename third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/{tests/ban_conformance_pattern => util}/fixer_test.ts (96%) rename third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/{tests/ban_conformance_pattern => util/pattern_engines}/name_call_non_constant_argument_test.ts (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/{tests/ban_conformance_pattern/name_test.ts => util/pattern_engines/name_engine_test.ts} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/{tests/ban_conformance_pattern/property_test.ts => util/pattern_engines/property_engine_test.ts} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/{tests/ban_conformance_pattern/property_non_constant_write_test.ts => util/pattern_engines/property_non_constant_write_engine_test.ts} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/{tests/ban_conformance_pattern/property_read_test.ts => util/pattern_engines/property_read_engine_test.ts} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/{tests/ban_conformance_pattern/property_write_test.ts => util/pattern_engines/property_write_engine_test.ts} (100%) rename third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/{tests/ban_conformance_pattern => util}/util_test.ts (97%) rename third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/{tests/ban_conformance_pattern => util}/whitelist_test.ts (95%) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/rule_creation_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule_test.ts similarity index 82% rename from third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/rule_creation_test.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule_test.ts index 46cc15634f..9d7eaa08b5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/rule_creation_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule_test.ts @@ -1,6 +1,6 @@ import 'jasmine'; -import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; -import {customMatchers} from '../../util/testing/test_support'; +import {ConformancePatternRule, PatternKind} from './conformance_pattern_rule'; +import {customMatchers} from '../util/testing/test_support'; describe('ConformancePatternRule creation', () => { describe('naming', () => { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer_test.ts similarity index 96% rename from third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer_test.ts index afd9177966..8ad3eb99a2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/fixer_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer_test.ts @@ -1,9 +1,9 @@ import 'jasmine'; import * as ts from 'typescript'; -import {Failure, Fix} from '../../failure'; -import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; -import {buildReplacementFixer, Fixer, maybeAddNamedImport, maybeAddNamespaceImport} from '../../util/fixer'; -import {compile, compileAndCheck, customMatchers} from '../../util/testing/test_support'; +import {Failure, Fix} from '../failure'; +import {ConformancePatternRule, PatternKind} from '../rules/conformance_pattern_rule'; +import {buildReplacementFixer, Fixer, maybeAddNamedImport, maybeAddNamespaceImport} from './fixer'; +import {compile, compileAndCheck, customMatchers} from './testing/test_support'; const uppercaseFixer: Fixer = { getFixForFlaggedNode(node: ts.Node): Fix { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_call_non_constant_argument_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument_test.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_call_non_constant_argument_test.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument_test.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine_test.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/name_test.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine_test.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine_test.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_test.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine_test.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine_test.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_non_constant_write_test.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine_test.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine_test.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_read_test.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine_test.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine_test.ts similarity index 100% rename from third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/property_write_test.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine_test.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/util_test.ts similarity index 97% rename from third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/util_test.ts index dd44a5d15d..21c33bcf43 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/util_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/util_test.ts @@ -4,10 +4,10 @@ */ import 'jasmine'; -import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; -import {isInStockLibraries, setDebug} from '../../util/ast_tools'; -import {isLiteral} from '../../util/is_literal'; -import {compile, compileAndCheck} from '../../util/testing/test_support'; +import {ConformancePatternRule, PatternKind} from '../rules/conformance_pattern_rule'; +import {isInStockLibraries, setDebug} from './ast_tools'; +import {isLiteral} from './is_literal'; +import {compile, compileAndCheck} from './testing/test_support'; describe('Debug output', () => { it('turns on and off', () => { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/whitelist_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist_test.ts similarity index 95% rename from third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/whitelist_test.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist_test.ts index 93e17bd9bf..475c62033b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/tests/ban_conformance_pattern/whitelist_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist_test.ts @@ -1,7 +1,7 @@ import 'jasmine'; -import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; -import {WhitelistReason} from '../../util/pattern_config'; -import {compileAndCheck, customMatchers, getTempDirForWhitelist} from '../../util/testing/test_support'; +import {ConformancePatternRule, PatternKind} from '../rules/conformance_pattern_rule'; +import {WhitelistReason} from './pattern_config'; +import {compileAndCheck, customMatchers, getTempDirForWhitelist} from './testing/test_support'; const tmpPrefixForWhitelist = getTempDirForWhitelist(); const tmpRegexpForWhitelist = From 541a915a986e66d4cc6751d16802d21cbc1ef6bd Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Fri, 24 Apr 2020 14:53:09 -0700 Subject: [PATCH 0717/1134] Restrict AbsoluteMatcher to match FQN rather than suffix of FQN. PiperOrigin-RevId: 308331290 --- .../internal/tsetse/util/match_symbol.ts | 6 ++++-- .../internal/tsetse/util/util_test.ts | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts index 842292c8c7..80ec1661c9 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts @@ -107,8 +107,10 @@ export class AbsoluteMatcher { const fqn = tc.getFullyQualifiedName(s); debugLog(`got FQN ${fqn}`); - // Name-based check - if (!(fqn.endsWith('.' + this.bannedName) || fqn === this.bannedName)) { + // Name-based check: `getFullyQualifiedName` returns `"filename".foo.bar` or + // just `foo.bar` if the symbol is ambient. The check here should consider + // both cases. + if (!(fqn.endsWith('".' + this.bannedName) || fqn === this.bannedName)) { debugLog(`FQN ${fqn} doesn't match name ${this.bannedName}`); return false; // not a use of the symbols we want } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/util_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/util_test.ts index 21c33bcf43..e4a15dad94 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/util_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/util_test.ts @@ -268,6 +268,23 @@ describe('test AbsoluteMatcher', () => { expect(results).toHaveNoFailures(); }); + it('Property of type defined in in-stock library', () => { + const config = { + errorMessage: 'banned name without file path', + kind: PatternKind.BANNED_NAME, + values: ['GLOBAL|open'] + }; + const sources = [ + 'const elem = new XMLHttpRequest();', + 'elem.open("get", "url");', // FQN of elem.open is XMLHttpRequest.open + // and shouldn't be banned + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveNoFailures(); + }); + it('inheritance test 1', () => { // This is a match because Moo inherits bar from Foo. const config = { From b186f5f4930bd17e7c7502e78820c47482256c22 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Sat, 25 Apr 2020 14:44:38 -0700 Subject: [PATCH 0718/1134] Fix the bug where AbsoluteMatcher misses identifiers used in the initializer of a named declaration. PiperOrigin-RevId: 308440132 --- .../internal/tsetse/util/ast_tools.ts | 34 ++++++++++++------- .../internal/tsetse/util/match_symbol.ts | 4 +-- .../internal/tsetse/util/util_test.ts | 15 ++++++++ 3 files changed, 38 insertions(+), 15 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts index 024c008794..39a447c8ec 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts @@ -124,22 +124,30 @@ export function isPartOfImportStatement(n: ts.Node) { p => p.kind === ts.SyntaxKind.ImportDeclaration); } -/** - * Returns whether `n` is a declaration. - */ -export function isDeclaration(n: ts.Node): n is ts.VariableDeclaration| - ts.ClassDeclaration|ts.FunctionDeclaration|ts.MethodDeclaration| - ts.PropertyDeclaration|ts.VariableDeclarationList|ts.InterfaceDeclaration| +function isWhitelistedNamedDeclaration(n: ts.Node): + n is ts.VariableDeclaration|ts.ClassDeclaration|ts.FunctionDeclaration| + ts.MethodDeclaration|ts.PropertyDeclaration|ts.InterfaceDeclaration| ts.TypeAliasDeclaration|ts.EnumDeclaration|ts.ModuleDeclaration| - ts.ImportDeclaration|ts.ImportEqualsDeclaration|ts.ExportDeclaration| - ts.MissingDeclaration { + ts.ImportEqualsDeclaration|ts.ExportDeclaration|ts.MissingDeclaration| + ts.ImportClause|ts.ExportSpecifier|ts.ImportSpecifier { return ts.isVariableDeclaration(n) || ts.isClassDeclaration(n) || ts.isFunctionDeclaration(n) || ts.isMethodDeclaration(n) || - ts.isPropertyDeclaration(n) || ts.isVariableDeclarationList(n) || - ts.isInterfaceDeclaration(n) || ts.isTypeAliasDeclaration(n) || - ts.isEnumDeclaration(n) || ts.isModuleDeclaration(n) || - ts.isImportDeclaration(n) || ts.isImportEqualsDeclaration(n) || - ts.isExportDeclaration(n) || ts.isMissingDeclaration(n); + ts.isPropertyDeclaration(n) || ts.isInterfaceDeclaration(n) || + ts.isTypeAliasDeclaration(n) || ts.isEnumDeclaration(n) || + ts.isModuleDeclaration(n) || ts.isImportEqualsDeclaration(n) || + ts.isExportDeclaration(n) || ts.isMissingDeclaration(n) || + ts.isImportClause(n) || ts.isExportSpecifier(n) || + ts.isImportSpecifier(n); +} + +/** Returns whether `n` is being declared in a declaration statement. */ +export function isNameInDeclaration(n: ts.Node): boolean { + const p = n.parent; + if (p === undefined) return false; + + return (isWhitelistedNamedDeclaration(p) && p.name === n) || + // TODO(pwng) Double-check if these two cases are needed + ts.isVariableDeclarationList(p) || ts.isImportDeclaration(p); } /** Type guard for expressions that looks like property writes. */ diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts index 80ec1661c9..721ddec2d4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts @@ -1,5 +1,5 @@ import * as ts from 'typescript'; -import {dealias, debugLog, isAmbientDeclaration, isDeclaration, isInStockLibraries, isPartOfImportStatement} from './ast_tools'; +import {dealias, debugLog, isAmbientDeclaration, isInStockLibraries, isNameInDeclaration, isPartOfImportStatement} from './ast_tools'; const PATH_NAME_FORMAT = '[/\\.\\w\\d_-]+'; const JS_IDENTIFIER_FORMAT = '[\\w\\d_-]+'; @@ -120,7 +120,7 @@ export class AbsoluteMatcher { // avoid flooding users with warnings (as the actual use will be alerted) // and bad fixes. const p = n.parent; - if (p && (isDeclaration(p) || isPartOfImportStatement(p))) { + if (isNameInDeclaration(n) || (p && isPartOfImportStatement(p))) { debugLog(`We don't flag symbol declarations`); return false; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/util_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/util_test.ts index e4a15dad94..166299e274 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/util_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/util_test.ts @@ -194,6 +194,21 @@ describe('test AbsoluteMatcher', () => { expect(results).toHaveNoFailures(); }); + it('In-stock lib symbol used as part of the initializer in named declaration', + () => { + const config = { + errorMessage: 'banned ambient name', + kind: PatternKind.BANNED_NAME, + values: ['GLOBAL|open'], + }; + const sources = ['const op = open;']; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveFailuresMatching( + {matchedCode: 'open', messageText: 'banned ambient name'}); + }); + it('local non-exported definition', () => { // This is not a match because Foo.bar is a non-exported locally defined // symbol. From ddc3435d4dd2a8083e51dbc0325d0b130f96d440 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Sat, 25 Apr 2020 22:05:52 -0700 Subject: [PATCH 0719/1134] Support multi-value config in all pattern engines. PiperOrigin-RevId: 308466106 --- .../internal/tsetse/util/ast_tools.ts | 2 + .../name_call_non_constant_argument.ts | 105 +++++++------- .../util/pattern_engines/name_engine.ts | 48 +++---- .../util/pattern_engines/pattern_engine.ts | 38 +++--- .../util/pattern_engines/property_engine.ts | 53 +++----- .../property_non_constant_write_engine.ts | 57 ++++---- .../pattern_engines/property_read_engine.ts | 128 +++++++++--------- .../pattern_engines/property_write_engine.ts | 66 ++++----- 8 files changed, 233 insertions(+), 264 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts index 39a447c8ec..ee012bf7f2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts @@ -59,6 +59,8 @@ export function findInChildren( * blocks, module declarations, JSDoc, lib.d.ts nodes, that kind of things. */ export function shouldExamineNode(n: ts.Node) { + // TODO(b/154674207): Only `isInStockLibraries` seems to be effective here. + // Remove the others. return !( ts.isBlock(n) || ts.isModuleBlock(n) || ts.isModuleDeclaration(n) || ts.isSourceFile(n) || (n.parent && ts.isTypeNode(n.parent)) || diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts index 1af786db58..48cf99b679 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts @@ -8,6 +8,46 @@ import {AbsoluteMatcher} from '../match_symbol'; import {Config} from '../pattern_config'; import {PatternEngine} from './pattern_engine'; +function parseSpec(value: string): [AbsoluteMatcher, number] { + const [matcherSpec, strPosition] = value.split(':', 2); + if (!matcherSpec || !strPosition.match('^\\d+$')) { + throw new Error(`Couldn\'t parse value '${value}'`); + } + const position = Number(strPosition); + return [new AbsoluteMatcher(matcherSpec), position]; +} + +/** + * Inspects a particular CallExpression to see if it calls the target + * function with a non-literal parameter in the target position. Returns + * that CallExpression if `n` matches the search, undefined otherwise. + */ +function checkCallExpr( + tc: ts.TypeChecker, n: ts.CallExpression, matcher: AbsoluteMatcher, + position: number): ts.CallExpression|undefined { + debugLog(`inspecting ${n.getText().trim()}`); + + if (!matcher.matches(n.expression, tc)) { + debugLog(`Wrong symbol, not ${matcher.bannedName}`); + return; + } + if (n.arguments.length < position) { + debugLog(`Good symbol, not enough arguments to match (got ${ + n.arguments.length}, want ${position})`); + return; + } + if (isLiteral(tc, n.arguments[position])) { + debugLog(`Good symbol, argument literal`); + return; + } + debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ + n.getEnd()}] on node [${n.getText()}]`); + return n; + + // No match. + return; +} + /** * The engine for BANNED_CALL_NON_CONSTANT_ARGUMENT. * @@ -22,65 +62,16 @@ import {PatternEngine} from './pattern_engine'; * function "buildFromParts" that lives in its own module. */ export class CallNonConstantArgumentEngine extends PatternEngine { - private readonly matchers: Array<[AbsoluteMatcher, number]> = []; - - constructor(config: Config, fixer?: Fixer) { - super(config, fixer); - for (const v of config.values) { - const [matcherSpec, strPosition] = v.split(':', 2); - if (!matcherSpec || !strPosition.match('^\\d+$')) { - throw new Error('Couldn\'t parse values'); - } - const position = Number(strPosition); - this.matchers.push([new AbsoluteMatcher(matcherSpec), position]); - } - } - register(checker: Checker) { - checker.on( - ts.SyntaxKind.CallExpression, this.checkAndFilterResults.bind(this), - ErrorCode.CONFORMANCE_PATTERN); - } - - check(tc: ts.TypeChecker, n: ts.Node): ts.Node|undefined { - if (!ts.isCallExpression(n)) { - debugLog(`Should not happen: node is not a CallExpression`); - return; - } - debugLog(`inspecting ${n.getText().trim()}`); + for (const value of this.config.values) { + const [matcher, position] = parseSpec(value); - /** - * Inspects a particular CallExpression to see if it calls the target - * function with a non-literal parameter in the target position. Returns - * that CallExpression if `n` matches the search, undefined otherwise. - */ - function checkIndividual( - n: ts.CallExpression, m: [AbsoluteMatcher, number]): ts.CallExpression| - undefined { - if (!m[0].matches(n.expression, tc)) { - debugLog(`Wrong symbol, not ${m[0].bannedName}`); - return; - } - if (n.arguments.length < m[1]) { - debugLog(`Good symbol, not enough arguments to match (got ${ - n.arguments.length}, want ${m[1]})`); - return; - } - if (isLiteral(tc, n.arguments[m[1]])) { - debugLog(`Good symbol, argument literal`); - return; - } - debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ - n.getEnd()}] on node [${n.getText()}]`); - return n; + checker.on( + ts.SyntaxKind.CallExpression, + this.wrapCheckWithWhitelistingAndFixer( + (tc, n: ts.CallExpression) => + checkCallExpr(tc, n, matcher, position)), + ErrorCode.CONFORMANCE_PATTERN); } - - for (const m of this.matchers) { - // The first matching matcher will be used. - const r = checkIndividual(n, m); - if (r) return r; - } - // No match. - return; } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts index 666779b87e..07742a4ba4 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts @@ -2,41 +2,37 @@ import * as ts from 'typescript'; import {Checker} from '../../checker'; import {ErrorCode} from '../../error_code'; -import {debugLog, shouldExamineNode} from '../ast_tools'; +import {debugLog} from '../ast_tools'; import {Fixer} from '../fixer'; import {AbsoluteMatcher} from '../match_symbol'; import {Config} from '../pattern_config'; import {PatternEngine} from './pattern_engine'; -export class NameEngine extends PatternEngine { - private readonly matcher: AbsoluteMatcher; - constructor(config: Config, fixer?: Fixer) { - super(config, fixer); - // TODO: Support more than one single value here, or even build a - // multi-pattern engine. This would help for performance. - if (this.config.values.length !== 1) { - throw new Error(`BANNED_NAME expects one value, got(${ - this.config.values.join(',')})`); - } - this.matcher = new AbsoluteMatcher(this.config.values[0]); +function checkId( + tc: ts.TypeChecker, n: ts.Identifier, + matcher: AbsoluteMatcher): ts.Identifier|undefined { + debugLog(`inspecting ${n.getText().trim()}`); + if (!matcher.matches(n, tc)) { + debugLog('Not the right global name.'); + return; } + return n; +} +export class NameEngine extends PatternEngine { register(checker: Checker) { - // `String.prototype.split` only returns emtpy array when both the string - // and the splitter are empty. Here we should be able to safely assert pop - // returns a non-null result. - const bannedIdName = this.matcher.bannedName.split('.').pop()!; - checker.onNamedIdentifier(bannedIdName, (c: Checker, n: ts.Node) => { - this.checkAndFilterResults(c, n); - }, ErrorCode.CONFORMANCE_PATTERN); - } + for (const value of this.config.values) { + const matcher = new AbsoluteMatcher(value); - check(tc: ts.TypeChecker, n: ts.Node): ts.Node|undefined { - debugLog(`inspecting ${n.getText().trim()}`); - if (!this.matcher.matches(n, tc)) { - debugLog('Not the right global name.'); - return; + // `String.prototype.split` only returns emtpy array when both the string + // and the splitter are empty. Here we should be able to safely assert pop + // returns a non-null result. + const bannedIdName = matcher.bannedName.split('.').pop()!; + checker.onNamedIdentifier( + bannedIdName, + this.wrapCheckWithWhitelistingAndFixer( + (tc, n: ts.Identifier) => checkId(tc, n, matcher)), + ErrorCode.CONFORMANCE_PATTERN); } - return n; } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts index d6b60ce8d5..f0f1d66d4f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts @@ -1,4 +1,5 @@ import * as ts from 'typescript'; + import {Checker} from '../../checker'; import {Fix} from '../../failure'; import {Fixer} from '../../util/fixer'; @@ -37,26 +38,25 @@ export abstract class PatternEngine { abstract register(checker: Checker): void; /** - * `check` is the PatternEngine subclass-specific matching logic. Overwrite - * with what the engine looks for, i.e., AST matching. The whitelisting logic - * and fix generation are handled in `checkAndFilterResults`. - */ - abstract check(tc: ts.TypeChecker, n: ts.Node): ts.Node|undefined; - - /** - * A wrapper for `check` that handles aspects of the analysis that are not - * engine-specific, and which defers to the subclass-specific logic - * afterwards. + * A composer that wraps checking functions with code handling aspects of the + * analysis that are not engine-specific, and which defers to the + * subclass-specific logic afterwards. Subclasses should transform their + * checking logic with this composer before registered on the checker. */ - checkAndFilterResults(c: Checker, n: ts.Node) { - if (!shouldExamineNode(n) || n.getSourceFile().isDeclarationFile) { - return; - } - const matchedNode = this.check(c.typeChecker, n); - if (matchedNode && !this.isWhitelisted(matchedNode)) { - const fix: Fix|undefined = - this.fixer ? this.fixer.getFixForFlaggedNode(matchedNode) : undefined; - c.addFailureAtNode(matchedNode, this.config.errorMessage, fix); + protected wrapCheckWithWhitelistingAndFixer( + checkFunction: (tc: ts.TypeChecker, n: T) => ts.Node | + undefined): (c: Checker, n: T) => void { + return (c: Checker, n: T) => { + if (!shouldExamineNode(n) || n.getSourceFile().isDeclarationFile) { + return; + } + const matchedNode = checkFunction(c.typeChecker, n); + if (matchedNode && !this.isWhitelisted(matchedNode)) { + const fix: Fix|undefined = this.fixer ? + this.fixer.getFixForFlaggedNode(matchedNode) : + undefined; + c.addFailureAtNode(matchedNode, this.config.errorMessage, fix); + } } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts index a3b2a8c47f..2476a6b2c5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts @@ -8,43 +8,34 @@ import {PropertyMatcher} from '../match_symbol'; import {Config} from '../pattern_config'; import {PatternEngine} from '../pattern_engines/pattern_engine'; +function checkPropAccessExpr( + tc: ts.TypeChecker, n: ts.PropertyAccessExpression, + matcher: PropertyMatcher): ts.Node|undefined { + debugLog(`inspecting ${n.getText().trim()}`); + if (!matcher.matches(n, tc)) { + return; + } + return n; +} + /** * Engine for the BANNED_PROPERTY pattern. It captures accesses to property * matching the spec regardless whether it's a read or write. */ export class PropertyEngine extends PatternEngine { - private readonly matcher: PropertyMatcher; - constructor(config: Config, fixer?: Fixer) { - super(config, fixer); - // Although noted in other engines, it is difficult to support multiple - // values within the current design. It may be easier to only allow a single - // value in the config. - if (this.config.values.length !== 1) { - throw new Error(`BANNED_PROPERTY expects one value, got(${ - this.config.values.join(',')})`); - } - this.matcher = PropertyMatcher.fromSpec(this.config.values[0]); - } - register(checker: Checker) { - checker.onNamedPropertyAccess( - this.matcher.bannedProperty, this.checkAndFilterResults.bind(this), - ErrorCode.CONFORMANCE_PATTERN); - } - - // TODO(pwng): only plain property access expressions are supported for now. - // In the future, support more patterns including `location['href']` and - // `const {href} = location;`. That possibly requires refactoring - // `PropertyMatcher` or adding new types of matchers. - check(tc: ts.TypeChecker, n: ts.Node): ts.Node|undefined { - if (!ts.isPropertyAccessExpression(n)) { - throw new Error( - `Should not happen: node is not a PropertyAccessExpression`); - } - debugLog(`inspecting ${n.getText().trim()}`); - if (!this.matcher.matches(n, tc)) { - return; + for (const value of this.config.values) { + const matcher = PropertyMatcher.fromSpec(value); + // TODO(b/154675140): only plain property access expressions are supported + // for now. In the future, support more patterns including + // `location['href']` and `const {href} = location;`. That possibly + // requires refactoring `PropertyMatcher` or adding new types of matchers. + checker.onNamedPropertyAccess( + matcher.bannedProperty, + this.wrapCheckWithWhitelistingAndFixer( + (tc, n: ts.PropertyAccessExpression) => + checkPropAccessExpr(tc, n, matcher)), + ErrorCode.CONFORMANCE_PATTERN); } - return n; } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts index 08b67813de..dca8503d75 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts @@ -8,43 +8,38 @@ import {PropertyMatcher} from '../match_symbol'; import {Config} from '../pattern_config'; import {PatternEngine} from './pattern_engine'; +function checkBinExpr( + tc: ts.TypeChecker, n: ts.BinaryExpression, + matcher: PropertyMatcher): ts.Node|undefined { + if (!isPropertyWriteExpression(n)) { + return; + } + debugLog(`inspecting ${n.getFullText().trim()}`); + if (!matcher.matches(n.left, tc)) { + debugLog('Not an assignment to the right property'); + return; + } + if (isLiteral(tc, n.right)) { + debugLog(`Assigned value (${ + n.right.getFullText()}) is a compile-time constant.`); + return; + } + return n; +} + /** * The engine for BANNED_PROPERTY_NON_CONSTANT_WRITE. */ export class PropertyNonConstantWriteEngine extends PatternEngine { - private readonly matcher: PropertyMatcher; - constructor(config: Config, fixer?: Fixer) { - super(config, fixer); - // TODO: Support more than one single value here, or even build a - // multi-pattern engine. This would help for performance. - if (this.config.values.length !== 1) { - throw new Error( - `BANNED_PROPERTY_NON_CONSTANT_WRITE expects one value, got(${ - this.config.values.join(',')})`); - } - this.matcher = PropertyMatcher.fromSpec(this.config.values[0]); - } - register(checker: Checker) { - checker.on( - ts.SyntaxKind.BinaryExpression, this.checkAndFilterResults.bind(this), - ErrorCode.CONFORMANCE_PATTERN); - } + for (const value of this.config.values) { + const matcher = PropertyMatcher.fromSpec(value); - check(tc: ts.TypeChecker, n: ts.Node): ts.Node|undefined { - if (!isPropertyWriteExpression(n)) { - return; - } - debugLog(`inspecting ${n.getFullText().trim()}`); - if (!this.matcher.matches(n.left, tc)) { - debugLog('Not an assignment to the right property'); - return; - } - if (isLiteral(tc, n.right)) { - debugLog(`Assigned value (${ - n.right.getFullText()}) is a compile-time constant.`); - return; + checker.on( + ts.SyntaxKind.BinaryExpression, + this.wrapCheckWithWhitelistingAndFixer( + (tc, n: ts.BinaryExpression) => checkBinExpr(tc, n, matcher)), + ErrorCode.CONFORMANCE_PATTERN); } - return n; } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts index 03a4e02ac6..f6f71124a3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts @@ -8,76 +8,78 @@ import {Config} from '../pattern_config'; import {PatternEngine} from '../pattern_engines/pattern_engine'; /** - * The engine for BANNED_PROPERTY_READ. + * Check property read in variable initializations. For example, var a = + * object.property. */ -export class PropertyReadEngine extends PatternEngine { - private readonly matcher: PropertyMatcher; - constructor(config: Config, fixer?: Fixer) { - super(config, fixer); - // TODO: Support more than one single value here, or even build a - // multi-pattern engine. This would help for performance. - if (this.config.values.length !== 1) { - throw new Error(`BANNED_PROPERTY_READ expects one value, got(${ - this.config.values.join(',')})`); +function checkVarStmt( + tc: ts.TypeChecker, n: ts.VariableStatement, + matcher: PropertyMatcher): ts.Node|undefined { + for (const declaration of n.declarationList.declarations) { + if (declaration.initializer !== undefined && + ts.isPropertyAccessExpression(declaration.initializer)) { + debugLog(`Inspecting ${n.getText().trim()}`); + if (matcher.matches(declaration.initializer, tc)) { + debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ + n.getEnd()}] on node [${n.getText()}]`); + return n; + } } - this.matcher = PropertyMatcher.fromSpec(this.config.values[0]); } + return; +} - register(checker: Checker) { - checker.on( - ts.SyntaxKind.VariableStatement, this.checkAndFilterResults.bind(this), - ErrorCode.CONFORMANCE_PATTERN); - checker.on( - ts.SyntaxKind.BinaryExpression, this.checkAndFilterResults.bind(this), - ErrorCode.CONFORMANCE_PATTERN); +/** + * Check property read in binary expressions. If it is an assignment, it is a + * match if the property access appears at the RHS of the assignment. + */ +function checkBinExpr( + tc: ts.TypeChecker, n: ts.BinaryExpression, + matcher: PropertyMatcher): ts.Node|undefined { + debugLog(`inspecting ${n.getText().trim()}`); + // If the expression is an assignment, then the property must appear + // at the right-hand side of the expression. + if (n.operatorToken.getText().trim() === '=') { + if (ts.isPropertyAccessExpression(n.right) && + matcher.matches(n.right, tc)) { + debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ + n.getEnd()}] on node [${n.getText()}]`); + return n; + } } - - check(tc: ts.TypeChecker, n: ts.Node): ts.Node|undefined { - // Check property read in variable initializations. - // For example, var a = object.property. - if (ts.isVariableStatement(n)) { - for (const declaration of n.declarationList.declarations) { - if (declaration.initializer !== undefined && - ts.isPropertyAccessExpression(declaration.initializer)) { - debugLog(`Inspecting ${n.getText().trim()}`); - if (this.matcher.matches(declaration.initializer, tc)) { - debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ - n.getEnd()}] on node [${n.getText()}]`); - return n; - } - } - } + // If it is a non-assignment binary expression, + // the property access may appear either side of the expression. + else { + if ((ts.isPropertyAccessExpression(n.right) && + matcher.matches(n.right, tc)) || + (ts.isPropertyAccessExpression(n.left) && + matcher.matches(n.left, tc))) { + debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ + n.getEnd()}] on node [${n.getText()}]`); + return n; } + } + return; +} - // Check property read in binary expressions. - // If it is an assignment, it is a match if the property access - // appears at the RHS of the assignment. - if (ts.isBinaryExpression(n)) { - debugLog(`inspecting ${n.getText().trim()}`); - // If the expression is an assignment, then the property must appear at - // the right-hand side of the expression. - if (n.operatorToken.getText().trim() === '=') { - if (ts.isPropertyAccessExpression(n.right) && - this.matcher.matches(n.right, tc)) { - debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ - n.getEnd()}] on node [${n.getText()}]`); - return n; - } - } - // If it is a non-assignment binary expression, - // the property access may appear either side of the expression. - else { - if ((ts.isPropertyAccessExpression(n.right) && - this.matcher.matches(n.right, tc)) || - (ts.isPropertyAccessExpression(n.left) && - this.matcher.matches(n.left, tc))) { - debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ - n.getEnd()}] on node [${n.getText()}]`); - return n; - } - } - } +/** + * The engine for BANNED_PROPERTY_READ. + */ +export class PropertyReadEngine extends PatternEngine { + register(checker: Checker) { + for (const value of this.config.values) { + const matcher = PropertyMatcher.fromSpec(value); - return; + checker.on( + ts.SyntaxKind.VariableStatement, + this.wrapCheckWithWhitelistingAndFixer( + (tc, n: ts.VariableStatement) => checkVarStmt(tc, n, matcher)), + ErrorCode.CONFORMANCE_PATTERN); + + checker.on( + ts.SyntaxKind.BinaryExpression, + this.wrapCheckWithWhitelistingAndFixer( + (tc, n: ts.BinaryExpression) => checkBinExpr(tc, n, matcher)), + ErrorCode.CONFORMANCE_PATTERN); + } } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts index 9ca2887a01..9145a8b38b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts @@ -7,50 +7,42 @@ import {PropertyMatcher} from '../match_symbol'; import {Config} from '../pattern_config'; import {PatternEngine} from '../pattern_engines/pattern_engine'; -/** - * The engine for BANNED_PROPERTY_WRITE. - */ -export class PropertyWriteEngine extends PatternEngine { - private readonly matcher: PropertyMatcher; - constructor(config: Config, fixer?: Fixer) { - super(config, fixer); - // TODO: Support more than one single value here, or even build a - // multi-pattern engine. This would help for performance. - if (this.config.values.length !== 1) { - throw new Error(`BANNED_PROPERTY_WRITE expects one value, got(${ - this.config.values.join(',')})`); - } - this.matcher = PropertyMatcher.fromSpec(this.config.values[0]); +function checkPropAccessExpr( + tc: ts.TypeChecker, n: ts.PropertyAccessExpression, + matcher: PropertyMatcher): ts.Node|undefined { + if (!ts.isBinaryExpression(n.parent)) { + return; } - register(checker: Checker) { - checker.onNamedPropertyAccess( - this.matcher.bannedProperty, this.checkAndFilterResults.bind(this), - ErrorCode.CONFORMANCE_PATTERN); + if (n.parent.operatorToken.getText().trim() !== '=') { + return; } - check(tc: ts.TypeChecker, n: ts.Node): ts.Node|undefined { - if (!ts.isPropertyAccessExpression(n)) { - throw new Error( - `Should not happen: node is not a PropertyAccessExpression`); - } - - if (!ts.isBinaryExpression(n.parent)) { - return; - } + if (n.parent.left !== n) { + return; + } - if (n.parent.operatorToken.getText().trim() !== '=') { - return; - } + debugLog(`inspecting ${n.parent.getText().trim()}`); + if (!matcher.matches(n, tc)) { + return; + } + return n.parent; +} - if (n.parent.left !== n) { - return; - } +/** + * The engine for BANNED_PROPERTY_WRITE. + */ +export class PropertyWriteEngine extends PatternEngine { + register(checker: Checker) { + for (const value of this.config.values) { + const matcher = PropertyMatcher.fromSpec(value); - debugLog(`inspecting ${n.parent.getText().trim()}`); - if (!this.matcher.matches(n, tc)) { - return; + checker.onNamedPropertyAccess( + matcher.bannedProperty, + this.wrapCheckWithWhitelistingAndFixer( + (tc, n: ts.PropertyAccessExpression) => + checkPropAccessExpr(tc, n, matcher)), + ErrorCode.CONFORMANCE_PATTERN); } - return n.parent; } } From 0279d39b8320a4ba0db0c37400f935aefe3977d7 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 27 Apr 2020 10:17:27 -0700 Subject: [PATCH 0720/1134] Allow `debugLog` to accept lazily evaluated arguments to avoid building expensive strings when unnecessary. PiperOrigin-RevId: 308645875 --- .../internal/tsetse/util/ast_tools.ts | 10 ++++---- .../internal/tsetse/util/fixer.ts | 23 ++++++++++-------- .../internal/tsetse/util/match_symbol.ts | 24 +++++++++---------- .../name_call_non_constant_argument.ts | 16 +++++++------ .../util/pattern_engines/name_engine.ts | 4 ++-- .../util/pattern_engines/property_engine.ts | 2 +- .../property_non_constant_write_engine.ts | 9 +++---- .../pattern_engines/property_read_engine.ts | 19 ++++++++------- .../pattern_engines/property_write_engine.ts | 2 +- 9 files changed, 60 insertions(+), 49 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts index ee012bf7f2..748d1b6697 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts @@ -20,8 +20,10 @@ export function setDebug(state: boolean) { /** * Debug helper. */ -export function debugLog(msg: string) { - if (DEBUG) console.log(msg); +export function debugLog(msg: () => string) { + if (DEBUG) { + console.log(msg()); + } } /** @@ -186,6 +188,6 @@ export function logASTWalkError(verbose: boolean, n: ts.Node, e: Error) { } catch { } debugLog( - `Walking node ${nodeText} failed with error ${e}.\n` + - `Stacktrace:\n${e.stack}`); + () => `Walking node ${nodeText} failed with error ${e}.\n` + + `Stacktrace:\n${e.stack}`); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts index 2b76983224..75138ba727 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer.ts @@ -64,7 +64,7 @@ export function maybeAddNamedImport( continue; // Jump to the next import. } if (ts.isNamespaceImport(parsedDecl.namedBindings)) { - debugLog(`... but it's a wildcard import`); + debugLog(() => `... but it's a wildcard import`); continue; // Jump to the next import. } @@ -77,12 +77,13 @@ export function maybeAddNamedImport( iSpec.name.getText() === importWhat); // import {foo} if (foundRightImport) { - debugLog(`"${iDecl.getFullText()}" imports ${importWhat} as we want.`); + debugLog( + () => `"${iDecl.getFullText()}" imports ${importWhat} as we want.`); return; // Our request is already imported under the right name. } // Else, insert our symbol in the list of imports from that file. - debugLog(`No named imports from that file, generating new fix`); + debugLog(() => `No named imports from that file, generating new fix`); return { start: parsedDecl.namedBindings.elements[0].getStart(), end: parsedDecl.namedBindings.elements[0].getStart(), @@ -125,18 +126,18 @@ export function maybeAddNamespaceImport( // Not an import from the right file, or couldn't understand the import. return false; } - debugLog(`"${iDecl.getFullText()}" is an import from the right file`); + debugLog(() => `"${iDecl.getFullText()}" is an import from the right file`); if (ts.isNamedImports(parsedDecl.namedBindings)) { - debugLog(`... but it's a named import`); + debugLog(() => `... but it's a named import`); return false; // irrelevant to our namespace imports } // Else, bindings is a NamespaceImport. if (parsedDecl.namedBindings.name.getText() !== importAs) { - debugLog(`... but not the right name, we need to reimport`); + debugLog(() => `... but not the right name, we need to reimport`); return false; } - debugLog(`... and the right name, no need to reimport`); + debugLog(() => `... and the right name, no need to reimport`); return true; }); @@ -167,7 +168,9 @@ function maybeParseImportNode(iDecl: ts.ImportDeclaration): { }|undefined { if (!iDecl.importClause) { // something like import "./file"; - debugLog(`Ignoring import without imported symbol: ${iDecl.getFullText()}`); + debugLog( + () => + `Ignoring import without imported symbol: ${iDecl.getFullText()}`); return; } if (iDecl.importClause.name || !iDecl.importClause.namedBindings) { @@ -175,11 +178,11 @@ function maybeParseImportNode(iDecl: ts.ImportDeclaration): { // Not much we can do with that when trying to get a hold of some symbols, // so just ignore that line (worst case, we'll suggest another import // style). - debugLog(`Ignoring import: ${iDecl.getFullText()}`); + debugLog(() => `Ignoring import: ${iDecl.getFullText()}`); return; } if (!ts.isStringLiteral(iDecl.moduleSpecifier)) { - debugLog(`Ignoring import whose module specifier is not literal`); + debugLog(() => `Ignoring import whose module specifier is not literal`); return; } return { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts index 721ddec2d4..3d00d088eb 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts @@ -98,20 +98,20 @@ export class AbsoluteMatcher { // looking at. const s = dealias(tc.getSymbolAtLocation(n), tc); if (!s) { - debugLog(`cannot get symbol`); + debugLog(() => `cannot get symbol`); return false; } // The TS-provided FQN tells us the full identifier, and the origin file // in some circumstances. const fqn = tc.getFullyQualifiedName(s); - debugLog(`got FQN ${fqn}`); + debugLog(() => `got FQN ${fqn}`); // Name-based check: `getFullyQualifiedName` returns `"filename".foo.bar` or // just `foo.bar` if the symbol is ambient. The check here should consider // both cases. if (!(fqn.endsWith('".' + this.bannedName) || fqn === this.bannedName)) { - debugLog(`FQN ${fqn} doesn't match name ${this.bannedName}`); + debugLog(() => `FQN ${fqn} doesn't match name ${this.bannedName}`); return false; // not a use of the symbols we want } @@ -121,7 +121,7 @@ export class AbsoluteMatcher { // and bad fixes. const p = n.parent; if (isNameInDeclaration(n) || (p && isPartOfImportStatement(p))) { - debugLog(`We don't flag symbol declarations`); + debugLog(() => `We don't flag symbol declarations`); return false; } @@ -137,20 +137,20 @@ export class AbsoluteMatcher { // local symbol or ambient symbol), it is not a match. if (this.filePath !== GLOBAL && this.filePath !== ANY_SYMBOL) { debugLog( - `The symbol has no file path and one is specified by the ` + - `matcher`); + () => + `The symbol has no file path and one is specified by the matcher`); return false; } // We need to trace things back, so get declarations of the symbol. const declarations = s.getDeclarations(); if (!declarations) { - debugLog(`Symbol never declared?`); + debugLog(() => `Symbol never declared?`); return false; } if (!declarations.some(isAmbientDeclaration) && !declarations.some(isInStockLibraries)) { - debugLog(`Symbol neither ambient nor from the stock libraries`); + debugLog(() => `Symbol neither ambient nor from the stock libraries`); return false; } } @@ -163,17 +163,17 @@ export class AbsoluteMatcher { throw new Error('Malformed fully-qualified name.'); } const sympath = fqn.substring(1, last); - debugLog(`The file path of the symbol is ${sympath}`); + debugLog(() => `The file path of the symbol is ${sympath}`); if (!sympath.match(this.filePath) || this.filePath === GLOBAL) { debugLog( - `The file path of the symbol does not match the ` + - `file path of the matcher`); + () => + `The file path of the symbol does not match the file path of the matcher`); return false; } } } - debugLog(`all clear, report finding`); + debugLog(() => `all clear, report finding`); return true; } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts index 48cf99b679..3f6863e14e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts @@ -25,23 +25,25 @@ function parseSpec(value: string): [AbsoluteMatcher, number] { function checkCallExpr( tc: ts.TypeChecker, n: ts.CallExpression, matcher: AbsoluteMatcher, position: number): ts.CallExpression|undefined { - debugLog(`inspecting ${n.getText().trim()}`); + debugLog(() => `inspecting ${n.getText().trim()}`); if (!matcher.matches(n.expression, tc)) { - debugLog(`Wrong symbol, not ${matcher.bannedName}`); + debugLog(() => `Wrong symbol, not ${matcher.bannedName}`); return; } if (n.arguments.length < position) { - debugLog(`Good symbol, not enough arguments to match (got ${ - n.arguments.length}, want ${position})`); + debugLog( + () => `Good symbol, not enough arguments to match (got ${ + n.arguments.length}, want ${position})`); return; } if (isLiteral(tc, n.arguments[position])) { - debugLog(`Good symbol, argument literal`); + debugLog(() => `Good symbol, argument literal`); return; } - debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ - n.getEnd()}] on node [${n.getText()}]`); + debugLog( + () => `Match. Reporting failure (boundaries: ${n.getStart()}, ${ + n.getEnd()}] on node [${n.getText()}]`); return n; // No match. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts index 07742a4ba4..0731d71512 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts @@ -11,9 +11,9 @@ import {PatternEngine} from './pattern_engine'; function checkId( tc: ts.TypeChecker, n: ts.Identifier, matcher: AbsoluteMatcher): ts.Identifier|undefined { - debugLog(`inspecting ${n.getText().trim()}`); + debugLog(() => `inspecting ${n.getText().trim()}`); if (!matcher.matches(n, tc)) { - debugLog('Not the right global name.'); + debugLog(() => 'Not the right global name.'); return; } return n; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts index 2476a6b2c5..8f0bbe6d96 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts @@ -11,7 +11,7 @@ import {PatternEngine} from '../pattern_engines/pattern_engine'; function checkPropAccessExpr( tc: ts.TypeChecker, n: ts.PropertyAccessExpression, matcher: PropertyMatcher): ts.Node|undefined { - debugLog(`inspecting ${n.getText().trim()}`); + debugLog(() => `inspecting ${n.getText().trim()}`); if (!matcher.matches(n, tc)) { return; } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts index dca8503d75..0496f0c62d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts @@ -14,14 +14,15 @@ function checkBinExpr( if (!isPropertyWriteExpression(n)) { return; } - debugLog(`inspecting ${n.getFullText().trim()}`); + debugLog(() => `inspecting ${n.getFullText().trim()}`); if (!matcher.matches(n.left, tc)) { - debugLog('Not an assignment to the right property'); + debugLog(() => 'Not an assignment to the right property'); return; } if (isLiteral(tc, n.right)) { - debugLog(`Assigned value (${ - n.right.getFullText()}) is a compile-time constant.`); + debugLog( + () => `Assigned value (${ + n.right.getFullText()}) is a compile-time constant.`); return; } return n; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts index f6f71124a3..9b1293902b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts @@ -17,10 +17,11 @@ function checkVarStmt( for (const declaration of n.declarationList.declarations) { if (declaration.initializer !== undefined && ts.isPropertyAccessExpression(declaration.initializer)) { - debugLog(`Inspecting ${n.getText().trim()}`); + debugLog(() => `Inspecting ${n.getText().trim()}`); if (matcher.matches(declaration.initializer, tc)) { - debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ - n.getEnd()}] on node [${n.getText()}]`); + debugLog( + () => `Match. Reporting failure (boundaries: ${n.getStart()}, ${ + n.getEnd()}] on node [${n.getText()}]`); return n; } } @@ -35,14 +36,15 @@ function checkVarStmt( function checkBinExpr( tc: ts.TypeChecker, n: ts.BinaryExpression, matcher: PropertyMatcher): ts.Node|undefined { - debugLog(`inspecting ${n.getText().trim()}`); + debugLog(() => `inspecting ${n.getText().trim()}`); // If the expression is an assignment, then the property must appear // at the right-hand side of the expression. if (n.operatorToken.getText().trim() === '=') { if (ts.isPropertyAccessExpression(n.right) && matcher.matches(n.right, tc)) { - debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ - n.getEnd()}] on node [${n.getText()}]`); + debugLog( + () => `Match. Reporting failure (boundaries: ${n.getStart()}, ${ + n.getEnd()}] on node [${n.getText()}]`); return n; } } @@ -53,8 +55,9 @@ function checkBinExpr( matcher.matches(n.right, tc)) || (ts.isPropertyAccessExpression(n.left) && matcher.matches(n.left, tc))) { - debugLog(`Match. Reporting failure (boundaries: ${n.getStart()}, ${ - n.getEnd()}] on node [${n.getText()}]`); + debugLog( + () => `Match. Reporting failure (boundaries: ${n.getStart()}, ${ + n.getEnd()}] on node [${n.getText()}]`); return n; } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts index 9145a8b38b..30cd443db8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts @@ -22,7 +22,7 @@ function checkPropAccessExpr( return; } - debugLog(`inspecting ${n.parent.getText().trim()}`); + debugLog(() => `inspecting ${n.parent.getText().trim()}`); if (!matcher.matches(n, tc)) { return; } From c79b238b43d584e3d70cf5fadeaccb0b87ae13d2 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Tue, 28 Apr 2020 17:52:12 -0700 Subject: [PATCH 0721/1134] Clean up file organization and tests for tsetse matchers: * Split AbsoluteMatcher and PropertyMatcher into two separate files. * Move unit tests from a combined file to multiple files with names matching the source under test. * Update Jasmine test names to describe expected behavior. PiperOrigin-RevId: 308933530 --- .../{match_symbol.ts => absolute_matcher.ts} | 59 --- .../tsetse/util/absolute_matcher_test.ts | 283 ++++++++++++++ .../internal/tsetse/util/ast_tools_test.ts | 32 ++ .../internal/tsetse/util/is_literal_test.ts | 63 +++ .../name_call_non_constant_argument.ts | 4 +- .../util/pattern_engines/name_engine.ts | 3 +- .../util/pattern_engines/property_engine.ts | 2 +- .../pattern_engines/property_engine_test.ts | 89 +---- .../property_non_constant_write_engine.ts | 4 +- .../pattern_engines/property_read_engine.ts | 3 +- .../pattern_engines/property_write_engine.ts | 3 +- .../internal/tsetse/util/property_matcher.ts | 70 ++++ .../tsetse/util/property_matcher_test.ts | 111 ++++++ .../internal/tsetse/util/util_test.ts | 365 ------------------ 14 files changed, 572 insertions(+), 519 deletions(-) rename third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/{match_symbol.ts => absolute_matcher.ts} (76%) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher_test.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools_test.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/is_literal_test.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/property_matcher.ts create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/property_matcher_test.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/util_test.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher.ts similarity index 76% rename from third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher.ts index 3d00d088eb..e1501598e8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/match_symbol.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher.ts @@ -177,62 +177,3 @@ export class AbsoluteMatcher { return true; } } - -// TODO: Export the matched node kinds here. -/** - * This class matches a property access node, based on a property holder type - * (through its name), i.e. a class, and a property name. - * - * The logic is voluntarily simple: if a matcher for `a.b` tests a `x.y` node, - * it will return true if: - * - `x` is of type `a` either directly (name-based) or through inheritance - * (ditto), - * - and, textually, `y` === `b`. - * - * Note that the logic is different from TS's type system: this matcher doesn't - * have any knowledge of structural typing. - */ -export class PropertyMatcher { - static fromSpec(spec: string): PropertyMatcher { - if (spec.indexOf('.prototype.') === -1) { - throw new Error(`BANNED_PROPERTY expects a .prototype in your query.`); - } - const requestParser = /^([\w\d_.-]+)\.prototype\.([\w\d_.-]+)$/; - const matches = requestParser.exec(spec); - if (!matches) { - throw new Error('Cannot understand the BannedProperty spec' + spec); - } - const [bannedType, bannedProperty] = matches.slice(1); - return new PropertyMatcher(bannedType, bannedProperty); - } - - constructor(readonly bannedType: string, readonly bannedProperty: string) {} - - /** - * @param n The PropertyAccessExpression we're looking at. - */ - matches(n: ts.PropertyAccessExpression, tc: ts.TypeChecker) { - return n.name.text === this.bannedProperty && - this.typeMatches(tc.getTypeAtLocation(n.expression)); - } - - private exactTypeMatches(inspectedType: ts.Type): boolean { - const typeSymbol = inspectedType.getSymbol() || false; - return typeSymbol && typeSymbol.getName() === this.bannedType; - } - - // TODO: Account for unknown types/ '?', and 'loose type matches', i.e. if the - // actual type is a supertype of the prohibited type. - private typeMatches(inspectedType: ts.Type): boolean { - if (this.exactTypeMatches(inspectedType)) { - return true; - } - // If the type is an intersection/union, check if any of the component matches - if (inspectedType.isUnionOrIntersection()) { - return inspectedType.types.some(comp => this.typeMatches(comp)); - } - - const baseTypes = inspectedType.getBaseTypes() || []; - return baseTypes.some(base => this.exactTypeMatches(base)); - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher_test.ts new file mode 100644 index 0000000000..cfc25652f8 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher_test.ts @@ -0,0 +1,283 @@ +import 'jasmine'; +import {ConformancePatternRule, PatternKind} from '../rules/conformance_pattern_rule'; +import {compileAndCheck, customMatchers} from './testing/test_support'; + +describe('AbsoluteMatcher', () => { + beforeEach(() => { + jasmine.addMatchers(customMatchers); + }); + + it('requires a matcher scope', () => { + const config = { + errorMessage: 'banned name with no scope', + kind: PatternKind.BANNED_NAME, + values: ['exec'] + }; + const sources = [`eval('alert("hi");');`]; + + const check = () => + compileAndCheck(new ConformancePatternRule(config), ...sources); + + expect(check).toThrowError('Malformed matcher selector.'); + }); + + describe('file scope', () => { + it('matches a file path', () => { + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.bar'] + }; + const sources = [ + `export class Foo { static bar(s: string) {return s + "abc";} }`, + `import {Foo} from './file_0'; + var a = Foo.bar("123");` + ]; + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + + expect(results).toHaveFailuresMatching( + {matchedCode: `bar`, messageText: 'banned name with file path'}); + }); + + it('ignores an unmatched file path', () => { + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.bar'] + }; + const sources = [ + `export class Foo { static bar(s: string) {return s + "abc";} }`, + `export class Foo { static bar(s: string) {return s + "abc";} }`, + `import {Foo} from './file_1'; + var a = Foo.bar("123");` + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveNoFailures(); + }); + + it('matches a local exported definition', () => { + // This is a match because Foo.bar is an exported symbol. + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.bar'] + }; + const sources = + [`export class Foo { static bar(s: string) {return s + "abc";} } + var a = Foo.bar("123");`]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveFailuresMatching( + {matchedCode: `bar`, messageText: 'banned name with file path'}); + }); + }); + + describe('global scope', () => { + it('matches an in-stock library method', () => { + const config = { + errorMessage: 'banned ambient name', + kind: PatternKind.BANNED_NAME, + values: ['GLOBAL|eval'] + }; + const sources = [`eval('alert("hi");');`]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveFailuresMatching( + {matchedCode: `eval`, messageText: 'banned ambient name'}); + }); + + it('does not match a custom method with the same name', () => { + const config = { + errorMessage: 'banned ambient name', + kind: PatternKind.BANNED_NAME, + values: ['GLOBAL|eval'] + }; + const sources = + [`export class Foo { static eval(s: string) { return s + "abc";} } + var a = Foo.eval("123");`]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveNoFailures(); + }); + + it('matches an initializer in a named declaration', () => { + const config = { + errorMessage: 'banned ambient name', + kind: PatternKind.BANNED_NAME, + values: ['GLOBAL|open'], + }; + const sources = ['const op = open;']; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveFailuresMatching( + {matchedCode: 'open', messageText: 'banned ambient name'}); + }); + + it('does not match a local non-exported definition', () => { + // This is not a match because Foo.bar is a non-exported locally defined + // symbol. + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.bar'] + }; + const sources = [`class Foo { static bar(s: string) {return s + "abc";} } + var a = Foo.bar("123");`]; + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveNoFailures(); + }); + }); + + describe('properties', () => { + it('matches a static property', () => { + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.s'] + }; + const sources = [ + `export class Foo { static s : string; }`, + `import {Foo} from './file_0'; + var a = Foo.s;`, + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveFailuresMatching( + {matchedCode: `s`, messageText: 'banned name with file path'}); + }); + + it('does not match a property with a name overlapping an in-stock library', + () => { + const config = { + errorMessage: 'banned name without file path', + kind: PatternKind.BANNED_NAME, + values: ['GLOBAL|open'] + }; + const sources = [ + 'const elem = new XMLHttpRequest();', + 'elem.open("get", "url");', // FQN of elem.open is + // XMLHttpRequest.open and shouldn't be + // banned + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveNoFailures(); + }); + }); + + describe('inheritance', () => { + it('matches an inherited static property', () => { + // This is a match because Moo inherits s from Foo. + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.s'] + }; + const sources = [ + `export class Foo { static s : string; }`, + `import {Foo} from './file_0'; + export class Moo extends Foo { static t : string; }`, + `import {Moo} from './file_1'; + var a = Moo.s;`, + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveFailuresMatching( + {matchedCode: `s`, messageText: 'banned name with file path'}); + }); + + it('matches an inherited static method', () => { + // This is a match because Moo inherits bar from Foo. + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.bar'] + }; + const sources = [ + `export class Foo { static bar(s: string) {return s + "abc";} }`, + `import {Foo} from './file_0'; + export class Moo extends Foo { static far(s: string) {return s + "def";} }`, + `import {Moo} from './file_1'; + Moo.bar("abc");` + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveFailuresMatching( + {matchedCode: `bar`, messageText: 'banned name with file path'}); + }); + + it('does not match a redefined inherited static property', () => { + // This is not a match because Moo redefines s. + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.s'] + }; + const sources = [ + `export class Foo { static s : string; }`, + `import {Foo} from './file_0'; + export class Moo extends Foo { static s : string; }`, + `import {Moo} from './file_1'; + var a = Moo.s;`, + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveNoFailures(); + }); + + it('does not match a redefined inherited static method', () => { + // This is not a match because Moo redefines bar. + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.bar'] + }; + const sources = [ + `export class Foo { static bar(s: string) {return s + "abc";} } + export class Moo extends Foo { static bar(s: string) {return s + "def";} }`, + `import {Foo, Moo} from './file_0'; + Moo.bar("abc");` + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveNoFailures(); + }); + + it('does not match an interface\'s static method', () => { + // This is not a match because even though bar specified is interface Moo, + // its actual definition is in class Boo. + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_1|Moo.bar'] + }; + const sources = [ + `export class Foo { static bar(s: string) {return s + "abc";} }`, + `import {Foo} from './file_0'; + export interface Moo extends Foo { }`, + `import {Moo} from './file_1'; + export class Boo implements Moo { static bar(s: string) {return s + "def";} }`, + `import {Boo} from './file_2'; + Boo.bar("abc");`, + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveNoFailures(); + }); + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools_test.ts new file mode 100644 index 0000000000..7ce342065f --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools_test.ts @@ -0,0 +1,32 @@ +import 'jasmine'; +import {ConformancePatternRule, PatternKind} from '../rules/conformance_pattern_rule'; +import {setDebug} from './ast_tools'; +import {compileAndCheck} from './testing/test_support'; + +describe('Debug output', () => { + it('turns on and off', () => { + const source = `location.href = 'foo';`; + const rule = new ConformancePatternRule({ + errorMessage: 'does not matter', + kind: PatternKind.BANNED_PROPERTY_WRITE, + values: ['Location.prototype.href'] + }); + + const logs: string[] = []; + const realConsoleLog = console.log; + spyOn(console, 'log').and.callFake((s: string) => { + logs.push(s); + realConsoleLog(s); + }); + setDebug(true); + compileAndCheck(rule, source); + + expect(logs).toEqual([`inspecting location.href = 'foo'`]); + + setDebug(false); + compileAndCheck(rule, source); + + // Nothing more appended: debug was false + expect(logs).toEqual([`inspecting location.href = 'foo'`]); + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/is_literal_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/is_literal_test.ts new file mode 100644 index 0000000000..c3dfa7a606 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/is_literal_test.ts @@ -0,0 +1,63 @@ +import 'jasmine'; +import {isInStockLibraries} from './ast_tools'; +import {isLiteral} from './is_literal'; +import {compile} from './testing/test_support'; + +describe('isLiteral', () => { + it('understands constants', () => { + // Keep these to single-expression programs. + const constantExpressionsSources = [ + `'hello'`, + `'hello' + 'hi'`, + `1`, + `1 + 1`, + '`abcdef`', + '`abcd${"ef"}`', + '`abcd${1+1}`+`hi`', + `1 ? 'hi' : 'hello'`, + `window.name ? 'hi' : 'hello'`, + ]; + + // We don't bother with a rule for this one. + const constantProgram = compile(...constantExpressionsSources); + const constantCompiledSources = constantProgram.getSourceFiles(); + const constantTc = constantProgram.getTypeChecker(); + const constantExpressions = + constantCompiledSources.filter(s => !isInStockLibraries(s)) + .map(s => s.statements[0].getChildren()[0]); + + for (const expr of constantExpressions) { + expect(isLiteral(constantTc, expr)) + .toBe( + true, + `Expected "${expr.getFullText()}" to be considered constant.`); + } + }); + + + it('understands non-constants', () => { + const nonconstantExpressionsSources = [ + `window.name`, + `'hello' + window.name`, + `window.name + 'hello'`, + '`abcd${window.name}`', + `1 ? window.name : 'hello'`, + `1 ? 'hello' : window.name`, + ]; + + const nonconstantProgram = compile(...nonconstantExpressionsSources); + const nonconstantCompiledSources = nonconstantProgram.getSourceFiles(); + const nonconstantTc = nonconstantProgram.getTypeChecker(); + const nonconstantExpressions = + nonconstantCompiledSources.filter(s => !isInStockLibraries(s)) + .map(s => s.statements[0].getChildren()[0]); + + for (const expr of nonconstantExpressions) { + expect(isLiteral(nonconstantTc, expr)) + .toBe( + false, + `Expected "${ + expr.getFullText()}" not to be considered constant.`); + } + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts index 3f6863e14e..5a7a7ffb7d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts @@ -1,11 +1,13 @@ import * as ts from 'typescript'; + import {Checker} from '../../checker'; import {ErrorCode} from '../../error_code'; +import {AbsoluteMatcher} from '../absolute_matcher'; import {debugLog} from '../ast_tools'; import {Fixer} from '../fixer'; import {isLiteral} from '../is_literal'; -import {AbsoluteMatcher} from '../match_symbol'; import {Config} from '../pattern_config'; + import {PatternEngine} from './pattern_engine'; function parseSpec(value: string): [AbsoluteMatcher, number] { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts index 0731d71512..aac2a9cf2c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts @@ -1,10 +1,9 @@ import * as ts from 'typescript'; - import {Checker} from '../../checker'; import {ErrorCode} from '../../error_code'; +import {AbsoluteMatcher} from '../absolute_matcher'; import {debugLog} from '../ast_tools'; import {Fixer} from '../fixer'; -import {AbsoluteMatcher} from '../match_symbol'; import {Config} from '../pattern_config'; import {PatternEngine} from './pattern_engine'; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts index 8f0bbe6d96..922ac255a5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts @@ -4,9 +4,9 @@ import {Checker} from '../../checker'; import {ErrorCode} from '../../error_code'; import {debugLog} from '../ast_tools'; import {Fixer} from '../fixer'; -import {PropertyMatcher} from '../match_symbol'; import {Config} from '../pattern_config'; import {PatternEngine} from '../pattern_engines/pattern_engine'; +import {PropertyMatcher} from '../property_matcher'; function checkPropAccessExpr( tc: ts.TypeChecker, n: ts.PropertyAccessExpression, diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine_test.ts index 1fcd0a6fd2..7993415e1b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine_test.ts @@ -7,7 +7,7 @@ describe('BANNED_PROPERTY', () => { jasmine.addMatchers(customMatchers); }); - it('matches simple property access on dom properties', () => { + it('matches a trivial example', () => { const config = { errorMessage: 'No Location#href access', kind: PatternKind.BANNED_PROPERTY, @@ -21,91 +21,4 @@ describe('BANNED_PROPERTY', () => { messageText: 'No Location#href access', }); }); - - it('matches simple property access on properties of TS built-in types', - () => { - const config = { - errorMessage: 'No Array#map access', - kind: PatternKind.BANNED_PROPERTY, - values: ['Array.prototype.map'], - }; - const source = '[].map(() => 1);'; - - const results = - compileAndCheck(new ConformancePatternRule(config), source); - - expect(results).toHaveFailuresMatching({ - matchedCode: '[].map', - messageText: 'No Array#map access', - }); - }); - - it('matches simple property access on properties of user-defined global types', - () => { - const config = { - errorMessage: 'No Ty#foo access', - kind: PatternKind.BANNED_PROPERTY, - values: ['Ty.prototype.foo'], - }; - const funcPropAccess = `class Ty { - foo() {} - bar: number = 1; - } - new Ty().foo(); - `; - let results = - compileAndCheck(new ConformancePatternRule(config), funcPropAccess); - - expect(results).toHaveFailuresMatching({ - matchedCode: 'new Ty().foo', - messageText: 'No Ty#foo access', - }); - - const nonFuncPropAccess = `class Ty { - foo: number = 1; - bar() {} - } - new Ty().foo; - `; - results = compileAndCheck( - new ConformancePatternRule(config), nonFuncPropAccess); - - expect(results).toHaveFailuresMatching({ - matchedCode: 'new Ty().foo', - messageText: 'No Ty#foo access', - }); - }); - - it('does not match in-module defined type', () => { - const config = { - errorMessage: 'No Location#replace access', - kind: PatternKind.BANNED_PROPERTY, - values: ['Location.prototype.location'], - }; - const source = `export {}; // export makes the file a module - class Location { replace(x: string) {} } - new Location().replace('a');` - const results = compileAndCheck(new ConformancePatternRule(config), source); - - expect(results).toHaveNoFailures(); - }); - - it('does not match properties after fancy type casts', () => { - const config = { - errorMessage: 'No Location#href access', - kind: PatternKind.BANNED_PROPERTY, - values: ['Location.prototype.replace'], - }; - const source = [ - // Grey area of tests that don't trigger, but probably could - '(location as unknown as {replace: (url: string) => void}).replace(\'\');', - // We don't trigger on any, since it's not the right type. - 'const locationAsAny: any = location;', - 'locationAsAny.replace(\'https://example.com/script.js\');', - ]; - const results = - compileAndCheck(new ConformancePatternRule(config), ...source); - - expect(results).toHaveNoFailures(); - }); }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts index 0496f0c62d..0a672147d8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts @@ -1,11 +1,13 @@ import * as ts from 'typescript'; + import {Checker} from '../../checker'; import {ErrorCode} from '../../error_code'; import {debugLog, isPropertyWriteExpression} from '../ast_tools'; import {Fixer} from '../fixer'; import {isLiteral} from '../is_literal'; -import {PropertyMatcher} from '../match_symbol'; import {Config} from '../pattern_config'; +import {PropertyMatcher} from '../property_matcher'; + import {PatternEngine} from './pattern_engine'; function checkBinExpr( diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts index 9b1293902b..7923120d5a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts @@ -1,11 +1,12 @@ import * as ts from 'typescript'; + import {Checker} from '../../checker'; import {ErrorCode} from '../../error_code'; import {debugLog} from '../ast_tools'; import {Fixer} from '../fixer'; -import {PropertyMatcher} from '../match_symbol'; import {Config} from '../pattern_config'; import {PatternEngine} from '../pattern_engines/pattern_engine'; +import {PropertyMatcher} from '../property_matcher'; /** * Check property read in variable initializations. For example, var a = diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts index 30cd443db8..d0a9e2bb45 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts @@ -1,11 +1,12 @@ import * as ts from 'typescript'; + import {Checker} from '../../checker'; import {ErrorCode} from '../../error_code'; import {debugLog, isPropertyWriteExpression} from '../ast_tools'; import {Fixer} from '../fixer'; -import {PropertyMatcher} from '../match_symbol'; import {Config} from '../pattern_config'; import {PatternEngine} from '../pattern_engines/pattern_engine'; +import {PropertyMatcher} from '../property_matcher'; function checkPropAccessExpr( tc: ts.TypeChecker, n: ts.PropertyAccessExpression, diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/property_matcher.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/property_matcher.ts new file mode 100644 index 0000000000..1fb67945c5 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/property_matcher.ts @@ -0,0 +1,70 @@ +import * as ts from 'typescript'; +import {dealias, debugLog, isAmbientDeclaration, isInStockLibraries, isNameInDeclaration, isPartOfImportStatement} from './ast_tools'; + +const PATH_NAME_FORMAT = '[/\\.\\w\\d_-]+'; +const JS_IDENTIFIER_FORMAT = '[\\w\\d_-]+'; +const FQN_FORMAT = `(${JS_IDENTIFIER_FORMAT}\.)*${JS_IDENTIFIER_FORMAT}`; +// A fqn made out of a dot-separated chain of JS identifiers. +const ABSOLUTE_RE = new RegExp(`^${PATH_NAME_FORMAT}\\|${FQN_FORMAT}$`); +const GLOBAL = 'GLOBAL'; +const ANY_SYMBOL = 'ANY_SYMBOL'; + + +// TODO: Export the matched node kinds here. +/** + * This class matches a property access node, based on a property holder type + * (through its name), i.e. a class, and a property name. + * + * The logic is voluntarily simple: if a matcher for `a.b` tests a `x.y` node, + * it will return true if: + * - `x` is of type `a` either directly (name-based) or through inheritance + * (ditto), + * - and, textually, `y` === `b`. + * + * Note that the logic is different from TS's type system: this matcher doesn't + * have any knowledge of structural typing. + */ +export class PropertyMatcher { + static fromSpec(spec: string): PropertyMatcher { + if (spec.indexOf('.prototype.') === -1) { + throw new Error(`BANNED_PROPERTY expects a .prototype in your query.`); + } + const requestParser = /^([\w\d_.-]+)\.prototype\.([\w\d_.-]+)$/; + const matches = requestParser.exec(spec); + if (!matches) { + throw new Error('Cannot understand the BannedProperty spec' + spec); + } + const [bannedType, bannedProperty] = matches.slice(1); + return new PropertyMatcher(bannedType, bannedProperty); + } + + constructor(readonly bannedType: string, readonly bannedProperty: string) {} + + /** + * @param n The PropertyAccessExpression we're looking at. + */ + matches(n: ts.PropertyAccessExpression, tc: ts.TypeChecker) { + return n.name.text === this.bannedProperty && + this.typeMatches(tc.getTypeAtLocation(n.expression)); + } + + private exactTypeMatches(inspectedType: ts.Type): boolean { + const typeSymbol = inspectedType.getSymbol() || false; + return typeSymbol && typeSymbol.getName() === this.bannedType; + } + + // TODO: Account for unknown types/ '?', and 'loose type matches', i.e. if the + // actual type is a supertype of the prohibited type. + private typeMatches(inspectedType: ts.Type): boolean { + if (this.exactTypeMatches(inspectedType)) { + return true; + } + // If the type is an intersection/union, check if any of the component matches + if (inspectedType.isUnionOrIntersection()) { + return inspectedType.types.some(comp => this.typeMatches(comp)); + } + + const baseTypes = inspectedType.getBaseTypes() || []; + return baseTypes.some(base => this.exactTypeMatches(base)); + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/property_matcher_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/property_matcher_test.ts new file mode 100644 index 0000000000..e4fea908da --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/property_matcher_test.ts @@ -0,0 +1,111 @@ +import 'jasmine'; +import {ConformancePatternRule, PatternKind} from '../rules/conformance_pattern_rule'; +import {compileAndCheck, customMatchers} from './testing/test_support'; + +describe('PropertyMatcher', () => { + beforeEach(() => { + jasmine.addMatchers(customMatchers); + }); + + it('matches simple property access on dom properties', () => { + const config = { + errorMessage: 'No Location#href access', + kind: PatternKind.BANNED_PROPERTY, + values: ['Location.prototype.href'], + }; + const source = 'const href = location.href;'; + const results = compileAndCheck(new ConformancePatternRule(config), source); + + expect(results).toHaveFailuresMatching({ + matchedCode: 'location.href', + messageText: 'No Location#href access', + }); + }); + + it('matches simple property access on properties of TS built-in types', + () => { + const config = { + errorMessage: 'No Array#map access', + kind: PatternKind.BANNED_PROPERTY, + values: ['Array.prototype.map'], + }; + const source = '[].map(() => 1);'; + + const results = + compileAndCheck(new ConformancePatternRule(config), source); + + expect(results).toHaveFailuresMatching({ + matchedCode: '[].map', + messageText: 'No Array#map access', + }); + }); + + it('matches simple property access on properties of user-defined global types', + () => { + const config = { + errorMessage: 'No Ty#foo access', + kind: PatternKind.BANNED_PROPERTY, + values: ['Ty.prototype.foo'], + }; + const funcPropAccess = `class Ty { + foo() {} + bar: number = 1; + } + new Ty().foo(); + `; + let results = + compileAndCheck(new ConformancePatternRule(config), funcPropAccess); + + expect(results).toHaveFailuresMatching({ + matchedCode: 'new Ty().foo', + messageText: 'No Ty#foo access', + }); + + const nonFuncPropAccess = `class Ty { + foo: number = 1; + bar() {} + } + new Ty().foo; + `; + results = compileAndCheck( + new ConformancePatternRule(config), nonFuncPropAccess); + + expect(results).toHaveFailuresMatching({ + matchedCode: 'new Ty().foo', + messageText: 'No Ty#foo access', + }); + }); + + it('does not match in-module defined type', () => { + const config = { + errorMessage: 'No Location#replace access', + kind: PatternKind.BANNED_PROPERTY, + values: ['Location.prototype.location'], + }; + const source = `export {}; // export makes the file a module + class Location { replace(x: string) {} } + new Location().replace('a');` + const results = compileAndCheck(new ConformancePatternRule(config), source); + + expect(results).toHaveNoFailures(); + }); + + it('does not match properties after fancy type casts', () => { + const config = { + errorMessage: 'No Location#href access', + kind: PatternKind.BANNED_PROPERTY, + values: ['Location.prototype.replace'], + }; + const source = [ + // Grey area of tests that don't trigger, but probably could + '(location as unknown as {replace: (url: string) => void}).replace(\'\');', + // We don't trigger on any, since it's not the right type. + 'const locationAsAny: any = location;', + 'locationAsAny.replace(\'https://example.com/script.js\');', + ]; + const results = + compileAndCheck(new ConformancePatternRule(config), ...source); + + expect(results).toHaveNoFailures(); + }); +}); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/util_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/util_test.ts deleted file mode 100644 index 166299e274..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/util_test.ts +++ /dev/null @@ -1,365 +0,0 @@ -/** - * @fileoverview Tests for the various utilities that are not tied to a single - * rule. - */ - -import 'jasmine'; -import {ConformancePatternRule, PatternKind} from '../rules/conformance_pattern_rule'; -import {isInStockLibraries, setDebug} from './ast_tools'; -import {isLiteral} from './is_literal'; -import {compile, compileAndCheck} from './testing/test_support'; - -describe('Debug output', () => { - it('turns on and off', () => { - const source = `location.href = 'foo';`; - const rule = new ConformancePatternRule({ - errorMessage: 'does not matter', - kind: PatternKind.BANNED_PROPERTY_WRITE, - values: ['Location.prototype.href'] - }); - - const logs: string[] = []; - const realConsoleLog = console.log; - spyOn(console, 'log').and.callFake((s: string) => { - logs.push(s); - realConsoleLog(s); - }); - setDebug(true); - compileAndCheck(rule, source); - - expect(logs).toEqual([`inspecting location.href = 'foo'`]); - - setDebug(false); - compileAndCheck(rule, source); - - // Nothing more appended: debug was false - expect(logs).toEqual([`inspecting location.href = 'foo'`]); - }); -}); - -describe('The constant-ness logic', () => { - it('understands constants', () => { - // Keep these to single-expression programs. - const constantExpressionsSources = [ - `'hello'`, - `'hello' + 'hi'`, - `1`, - `1 + 1`, - '`abcdef`', - '`abcd${"ef"}`', - '`abcd${1+1}`+`hi`', - `1 ? 'hi' : 'hello'`, - `window.name ? 'hi' : 'hello'`, - ]; - - // We don't bother with a rule for this one. - const constantProgram = compile(...constantExpressionsSources); - const constantCompiledSources = constantProgram.getSourceFiles(); - const constantTc = constantProgram.getTypeChecker(); - const constantExpressions = - constantCompiledSources.filter(s => !isInStockLibraries(s)) - .map(s => s.statements[0].getChildren()[0]); - - for (const expr of constantExpressions) { - expect(isLiteral(constantTc, expr)) - .toBe( - true, - `Expected "${expr.getFullText()}" to be considered constant.`); - } - }); - - - it('understands non-constants', () => { - const nonconstantExpressionsSources = [ - `window.name`, - `'hello' + window.name`, - `window.name + 'hello'`, - '`abcd${window.name}`', - `1 ? window.name : 'hello'`, - `1 ? 'hello' : window.name`, - ]; - - const nonconstantProgram = compile(...nonconstantExpressionsSources); - const nonconstantCompiledSources = nonconstantProgram.getSourceFiles(); - const nonconstantTc = nonconstantProgram.getTypeChecker(); - const nonconstantExpressions = - nonconstantCompiledSources.filter(s => !isInStockLibraries(s)) - .map(s => s.statements[0].getChildren()[0]); - - for (const expr of nonconstantExpressions) { - expect(isLiteral(nonconstantTc, expr)) - .toBe( - false, - `Expected "${ - expr.getFullText()}" not to be considered constant.`); - } - }); -}); - -describe('test AbsoluteMatcher', () => { - it('requires a scope', () => { - const config = { - errorMessage: 'banned name with no scope', - kind: PatternKind.BANNED_NAME, - values: ['exec'] - }; - const sources = [`eval('alert("hi");');`]; - - const check = () => - compileAndCheck(new ConformancePatternRule(config), ...sources); - - expect(check).toThrowError('Malformed matcher selector.'); - }); - - it('matched path', () => { - - const config = { - errorMessage: 'banned name with file path', - kind: PatternKind.BANNED_NAME, - values: ['./file_0|Foo.bar'] - }; - const sources = [ - `export class Foo { static bar(s: string) {return s + "abc";} }`, - `import {Foo} from './file_0'; - var a = Foo.bar("123");` - ]; - const results = - compileAndCheck(new ConformancePatternRule(config), ...sources); - - expect(results).toHaveFailuresMatching( - {matchedCode: `bar`, messageText: 'banned name with file path'}); - }); - - it('unmatched path', () => { - const config = { - errorMessage: 'banned name with file path', - kind: PatternKind.BANNED_NAME, - values: ['./file_0|Foo.bar'] - }; - const sources = [ - `export class Foo { static bar(s: string) {return s + "abc";} }`, - `export class Foo { static bar(s: string) {return s + "abc";} }`, - `import {Foo} from './file_1'; - var a = Foo.bar("123");` - ]; - - const results = - compileAndCheck(new ConformancePatternRule(config), ...sources); - expect(results).toHaveNoFailures(); - }); - - it('local exported definition', () => { - // This is a match because Foo.bar is an exported symbol. - const config = { - errorMessage: 'banned name with file path', - kind: PatternKind.BANNED_NAME, - values: ['./file_0|Foo.bar'] - }; - const sources = - [`export class Foo { static bar(s: string) {return s + "abc";} } - var a = Foo.bar("123");`]; - - const results = - compileAndCheck(new ConformancePatternRule(config), ...sources); - expect(results).toHaveFailuresMatching( - {matchedCode: `bar`, messageText: 'banned name with file path'}); - }); - - it('global definition', () => { - const config = { - errorMessage: 'banned ambient name', - kind: PatternKind.BANNED_NAME, - values: ['GLOBAL|eval'] - }; - const sources = [`eval('alert("hi");');`]; - - const results = - compileAndCheck(new ConformancePatternRule(config), ...sources); - expect(results).toHaveFailuresMatching( - {matchedCode: `eval`, messageText: 'banned ambient name'}); - }); - - it('global definition with the same name as a custom method', () => { - const config = { - errorMessage: 'banned ambient name', - kind: PatternKind.BANNED_NAME, - values: ['GLOBAL|eval'] - }; - const sources = - [`export class Foo { static eval(s: string) { return s + "abc";} } - var a = Foo.eval("123");`]; - - const results = - compileAndCheck(new ConformancePatternRule(config), ...sources); - expect(results).toHaveNoFailures(); - }); - - it('In-stock lib symbol used as part of the initializer in named declaration', - () => { - const config = { - errorMessage: 'banned ambient name', - kind: PatternKind.BANNED_NAME, - values: ['GLOBAL|open'], - }; - const sources = ['const op = open;']; - - const results = - compileAndCheck(new ConformancePatternRule(config), ...sources); - expect(results).toHaveFailuresMatching( - {matchedCode: 'open', messageText: 'banned ambient name'}); - }); - - it('local non-exported definition', () => { - // This is not a match because Foo.bar is a non-exported locally defined - // symbol. - const config = { - errorMessage: 'banned name with file path', - kind: PatternKind.BANNED_NAME, - values: ['./file_0|Foo.bar'] - }; - const sources = [`class Foo { static bar(s: string) {return s + "abc";} } - var a = Foo.bar("123");`]; - const results = - compileAndCheck(new ConformancePatternRule(config), ...sources); - expect(results).toHaveNoFailures(); - }); - - it('property test 1', () => { - const config = { - errorMessage: 'banned name with file path', - kind: PatternKind.BANNED_NAME, - values: ['./file_0|Foo.s'] - }; - const sources = [ - `export class Foo { static s : string; }`, - `import {Foo} from './file_0'; - var a = Foo.s;`, - ]; - - const results = - compileAndCheck(new ConformancePatternRule(config), ...sources); - expect(results).toHaveFailuresMatching( - {matchedCode: `s`, messageText: 'banned name with file path'}); - }); - - it('property test 2', () => { - // This is a match because Moo inherits s from Foo. - const config = { - errorMessage: 'banned name with file path', - kind: PatternKind.BANNED_NAME, - values: ['./file_0|Foo.s'] - }; - const sources = [ - `export class Foo { static s : string; }`, - `import {Foo} from './file_0'; - export class Moo extends Foo { static t : string; }`, - `import {Moo} from './file_1'; - var a = Moo.s;`, - ]; - - const results = - compileAndCheck(new ConformancePatternRule(config), ...sources); - expect(results).toHaveFailuresMatching( - {matchedCode: `s`, messageText: 'banned name with file path'}); - }); - - it('property test 3', () => { - // This is not a match because Moo redefines s. - const config = { - errorMessage: 'banned name with file path', - kind: PatternKind.BANNED_NAME, - values: ['./file_0|Foo.s'] - }; - const sources = [ - `export class Foo { static s : string; }`, - `import {Foo} from './file_0'; - export class Moo extends Foo { static s : string; }`, - `import {Moo} from './file_1'; - var a = Moo.s;`, - ]; - - const results = - compileAndCheck(new ConformancePatternRule(config), ...sources); - expect(results).toHaveNoFailures(); - }); - - it('Property of type defined in in-stock library', () => { - const config = { - errorMessage: 'banned name without file path', - kind: PatternKind.BANNED_NAME, - values: ['GLOBAL|open'] - }; - const sources = [ - 'const elem = new XMLHttpRequest();', - 'elem.open("get", "url");', // FQN of elem.open is XMLHttpRequest.open - // and shouldn't be banned - ]; - - const results = - compileAndCheck(new ConformancePatternRule(config), ...sources); - expect(results).toHaveNoFailures(); - }); - - it('inheritance test 1', () => { - // This is a match because Moo inherits bar from Foo. - const config = { - errorMessage: 'banned name with file path', - kind: PatternKind.BANNED_NAME, - values: ['./file_0|Foo.bar'] - }; - const sources = [ - `export class Foo { static bar(s: string) {return s + "abc";} }`, - `import {Foo} from './file_0'; - export class Moo extends Foo { static far(s: string) {return s + "def";} }`, - `import {Moo} from './file_1'; - Moo.bar("abc");` - ]; - - const results = - compileAndCheck(new ConformancePatternRule(config), ...sources); - expect(results).toHaveFailuresMatching( - {matchedCode: `bar`, messageText: 'banned name with file path'}); - }); - - it('inheritance test 2', () => { - // This is not a match because Moo redefines bar. - const config = { - errorMessage: 'banned name with file path', - kind: PatternKind.BANNED_NAME, - values: ['./file_0|Foo.bar'] - }; - const sources = [ - `export class Foo { static bar(s: string) {return s + "abc";} } - export class Moo extends Foo { static bar(s: string) {return s + "def";} }`, - `import {Foo, Moo} from './file_0'; - Moo.bar("abc");` - ]; - - const results = - compileAndCheck(new ConformancePatternRule(config), ...sources); - expect(results).toHaveNoFailures(); - }); - - it('interface', () => { - // This is not a match because even though bar specified is interface Moo, - // its actual definition is in class Boo. - const config = { - errorMessage: 'banned name with file path', - kind: PatternKind.BANNED_NAME, - values: ['./file_1|Moo.bar'] - }; - const sources = [ - `export class Foo { static bar(s: string) {return s + "abc";} }`, - `import {Foo} from './file_0'; - export interface Moo extends Foo { }`, - `import {Moo} from './file_1'; - export class Boo implements Moo { static bar(s: string) {return s + "def";} }`, - `import {Boo} from './file_2'; - Boo.bar("abc");`, - ]; - - const results = - compileAndCheck(new ConformancePatternRule(config), ...sources); - expect(results).toHaveNoFailures(); - }); -}); From 63f1fce2e1622b50383a1690267af8efd8ee6a0c Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Wed, 29 Apr 2020 12:56:14 -0700 Subject: [PATCH 0722/1134] Fix BazelCI failure on Windows due to different in-stock lib file path. PiperOrigin-RevId: 309079472 --- .../internal/tsetse/util/is_literal_test.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/is_literal_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/is_literal_test.ts index c3dfa7a606..92b49d6b5a 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/is_literal_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/is_literal_test.ts @@ -4,6 +4,11 @@ import {isLiteral} from './is_literal'; import {compile} from './testing/test_support'; describe('isLiteral', () => { + // Different platforms pull in different files (or from different + // paths) when compiling a .ts file. We only want to inspect source + // defined in the tests. This pattern is determinted by `compile`. + const testSrcNamePattern = /file_\d+.ts$/; + it('understands constants', () => { // Keep these to single-expression programs. const constantExpressionsSources = [ @@ -21,11 +26,12 @@ describe('isLiteral', () => { // We don't bother with a rule for this one. const constantProgram = compile(...constantExpressionsSources); const constantCompiledSources = constantProgram.getSourceFiles(); - const constantTc = constantProgram.getTypeChecker(); + const constantExpressions = - constantCompiledSources.filter(s => !isInStockLibraries(s)) + constantCompiledSources.filter(s => testSrcNamePattern.test(s.fileName)) .map(s => s.statements[0].getChildren()[0]); + const constantTc = constantProgram.getTypeChecker(); for (const expr of constantExpressions) { expect(isLiteral(constantTc, expr)) .toBe( @@ -34,7 +40,6 @@ describe('isLiteral', () => { } }); - it('understands non-constants', () => { const nonconstantExpressionsSources = [ `window.name`, @@ -49,7 +54,8 @@ describe('isLiteral', () => { const nonconstantCompiledSources = nonconstantProgram.getSourceFiles(); const nonconstantTc = nonconstantProgram.getTypeChecker(); const nonconstantExpressions = - nonconstantCompiledSources.filter(s => !isInStockLibraries(s)) + nonconstantCompiledSources + .filter(s => testSrcNamePattern.test(s.fileName)) .map(s => s.statements[0].getChildren()[0]); for (const expr of nonconstantExpressions) { From 06c179945048219e4cfabc0c2fdb72e2d0718bae Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Wed, 29 Apr 2020 17:17:00 -0700 Subject: [PATCH 0723/1134] Remove isAmbientDeclaration that causes false positives. PiperOrigin-RevId: 309129473 --- .../internal/tsetse/util/absolute_matcher.ts | 7 +++---- .../rules_typescript/internal/tsetse/util/ast_tools.ts | 9 --------- .../internal/tsetse/util/property_matcher.ts | 10 ---------- 3 files changed, 3 insertions(+), 23 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher.ts index e1501598e8..0581629777 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher.ts @@ -1,5 +1,5 @@ import * as ts from 'typescript'; -import {dealias, debugLog, isAmbientDeclaration, isInStockLibraries, isNameInDeclaration, isPartOfImportStatement} from './ast_tools'; +import {dealias, debugLog, isInStockLibraries, isNameInDeclaration, isPartOfImportStatement} from './ast_tools'; const PATH_NAME_FORMAT = '[/\\.\\w\\d_-]+'; const JS_IDENTIFIER_FORMAT = '[\\w\\d_-]+'; @@ -148,9 +148,8 @@ export class AbsoluteMatcher { debugLog(() => `Symbol never declared?`); return false; } - if (!declarations.some(isAmbientDeclaration) && - !declarations.some(isInStockLibraries)) { - debugLog(() => `Symbol neither ambient nor from the stock libraries`); + if (!declarations.some(isInStockLibraries)) { + debugLog(() => `Symbol not from the stock libraries`); return false; } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts index 748d1b6697..191e854d2e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts @@ -69,15 +69,6 @@ export function shouldExamineNode(n: ts.Node) { ts.isJSDoc(n) || isInStockLibraries(n)); } -/** - * Return whether the given declaration is ambient. - */ -export function isAmbientDeclaration(d: ts.Declaration): boolean { - return Boolean( - d.modifiers && - d.modifiers.some(m => m.kind === ts.SyntaxKind.DeclareKeyword)); -} - /** * Return whether the given Node is (or is in) a library included as default. * We currently look for a node_modules/typescript/ prefix, but this could diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/property_matcher.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/property_matcher.ts index 1fb67945c5..8ab1f067d7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/property_matcher.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/property_matcher.ts @@ -1,14 +1,4 @@ import * as ts from 'typescript'; -import {dealias, debugLog, isAmbientDeclaration, isInStockLibraries, isNameInDeclaration, isPartOfImportStatement} from './ast_tools'; - -const PATH_NAME_FORMAT = '[/\\.\\w\\d_-]+'; -const JS_IDENTIFIER_FORMAT = '[\\w\\d_-]+'; -const FQN_FORMAT = `(${JS_IDENTIFIER_FORMAT}\.)*${JS_IDENTIFIER_FORMAT}`; -// A fqn made out of a dot-separated chain of JS identifiers. -const ABSOLUTE_RE = new RegExp(`^${PATH_NAME_FORMAT}\\|${FQN_FORMAT}$`); -const GLOBAL = 'GLOBAL'; -const ANY_SYMBOL = 'ANY_SYMBOL'; - // TODO: Export the matched node kinds here. /** From 4a3a5c24d4cf2c79766a4385ee673dca991e2583 Mon Sep 17 00:00:00 2001 From: evanm Date: Mon, 4 May 2020 08:52:53 -0700 Subject: [PATCH 0724/1134] add licenses attribute This causes ts_library() to inherit the licenses() attribute of the BUILD file. This attribute is used for tracking license compliance. PiperOrigin-RevId: 309752152 --- .../bazelbuild/rules_typescript/internal/common/compilation.bzl | 1 + 1 file changed, 1 insertion(+) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index 0bee98e21f..c9d76d12aa 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -44,6 +44,7 @@ COMMON_ATTRIBUTES = { "expected_diagnostics": attr.string_list(), # Whether to generate externs.js from any "declare" statement. "generate_externs": attr.bool(default = True), + "licenses": attr.license(), # Used to determine module mappings "module_name": attr.string(), "module_root": attr.string(), From 757753e516af12799ccc433f4afecd480c778a35 Mon Sep 17 00:00:00 2001 From: evanm Date: Wed, 6 May 2020 08:49:25 -0700 Subject: [PATCH 0725/1134] drop needless gc in tsc_wrapped When running as a worker, we garbage collect between each compilation so that our memory statistics make sense over time. But when running an individual compilation, there's little point in running garbage collection right before we're gonna exit anyway. The code I deleted in this CL is executed in both paths (worker and not), and there's a separate call to gc in the worker codepath (not in this CL), so there's no reason to have also gc'd here. I suspect this was a mistake during some refactor. While I'm at it, also rearrange a bit of the code to remove some random duplication. PiperOrigin-RevId: 310159657 --- .../internal/tsc_wrapped/tsc_wrapped.ts | 52 ++++++------------- 1 file changed, 15 insertions(+), 37 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 71ca1eead6..4104d9b34f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -15,14 +15,6 @@ import {Plugin as StrictDepsPlugin} from './strict_deps'; import {BazelOptions, parseTsconfig, resolveNormalizedPath} from './tsconfig'; import {debug, log, runAsWorker, runWorkerLoop} from './worker'; -// Equivalent of running node with --expose-gc -// but easier to write tooling since we don't need to inject that arg to -// nodejs_binary -if (typeof global.gc !== 'function') { - require('v8').setFlagsFromString('--expose_gc'); - global.gc = require('vm').runInNewContext('gc'); -} - /** * Top-level entry point for tsc_wrapped. */ @@ -247,37 +239,23 @@ function runOneBuild( fileLoader = new UncachedFileLoader(); } - const perfTracePath = bazelOpts.perfTracePath; - if (!perfTracePath) { - const {diagnostics} = createProgramAndEmit( - fileLoader, options, bazelOpts, sourceFiles, disabledTsetseRules); - if (diagnostics.length > 0) { - console.error(bazelDiagnostics.format(bazelOpts.target, diagnostics)); - return false; - } - return true; - } - - log('Writing trace to', perfTracePath); - const success = perfTrace.wrap('runOneBuild', () => { - const {diagnostics} = createProgramAndEmit( - fileLoader, options, bazelOpts, sourceFiles, disabledTsetseRules); - if (diagnostics.length > 0) { - console.error(bazelDiagnostics.format(bazelOpts.target, diagnostics)); - return false; - } - return true; + const diagnostics = perfTrace.wrap('createProgramAndEmit', () => { + return createProgramAndEmit( + fileLoader, options, bazelOpts, sourceFiles, disabledTsetseRules) + .diagnostics; }); - if (!success) return false; - // Force a garbage collection pass. This keeps our memory usage - // consistent across multiple compilations, and allows the file - // cache to use the current memory usage as a guideline for expiring - // data. Note: this is intentionally not within runFromOptions(), as - // we want to gc only after all its locals have gone out of scope. - global.gc(); - perfTrace.snapshotMemoryUsage(); - perfTrace.write(perfTracePath); + if (diagnostics.length > 0) { + console.error(bazelDiagnostics.format(bazelOpts.target, diagnostics)); + return false; + } + + const perfTracePath = bazelOpts.perfTracePath; + if (perfTracePath) { + log('Writing trace to', perfTracePath); + perfTrace.snapshotMemoryUsage(); + perfTrace.write(perfTracePath); + } return true; } From 4ac150eb11b8198268a724d7d07e2b6d2b26b0f6 Mon Sep 17 00:00:00 2001 From: evanm Date: Wed, 6 May 2020 12:05:05 -0700 Subject: [PATCH 0726/1134] use tslib.d.ts, not tslib_closure.d.ts The only reason we use the name 'tslib_closure' is for the Closure .js implementation. There's no reason to have a separate tslib_closure.d.ts. The changes here to tslib.d.ts are copying the changes in tslib_closure.d.ts to it. I'm not sure why we diverged from upstream here, but using the same filename as upstream will make this easier to track in the future. PiperOrigin-RevId: 310200260 --- .../rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts index ccb4eee071..fa77e96526 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped_test.ts @@ -85,8 +85,7 @@ const COMPILER_OPTIONS: ts.CompilerOptions = { const defaultBazelOpts = { googmodule: true, workspaceName: 'google3', - prelude: - `goog.require('google3.third_party.javascript.tslib.tslib_closure');`, + prelude: `goog.require('google3.third_party.javascript.tslib.tslib');`, } as BazelOptions; describe('compiler host', () => { From 108ccb7c64281094161aa49767f295bfdd626e18 Mon Sep 17 00:00:00 2001 From: pwng Date: Mon, 11 May 2020 19:24:58 -0700 Subject: [PATCH 0727/1134] Revise AbsoluteMatcher to support matching Closure APIs. PiperOrigin-RevId: 311043276 --- .../internal/tsetse/util/absolute_matcher.ts | 122 +++++++++--------- .../tsetse/util/absolute_matcher_test.ts | 79 +++++++++--- 2 files changed, 124 insertions(+), 77 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher.ts index 0581629777..1ba885d938 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher.ts @@ -4,11 +4,16 @@ import {dealias, debugLog, isInStockLibraries, isNameInDeclaration, isPartOfImpo const PATH_NAME_FORMAT = '[/\\.\\w\\d_-]+'; const JS_IDENTIFIER_FORMAT = '[\\w\\d_-]+'; const FQN_FORMAT = `(${JS_IDENTIFIER_FORMAT}\.)*${JS_IDENTIFIER_FORMAT}`; -// A fqn made out of a dot-separated chain of JS identifiers. -const ABSOLUTE_RE = new RegExp(`^${PATH_NAME_FORMAT}\\|${FQN_FORMAT}$`); const GLOBAL = 'GLOBAL'; const ANY_SYMBOL = 'ANY_SYMBOL'; - +const CLOSURE = 'CLOSURE'; +/** A fqn made out of a dot-separated chain of JS identifiers. */ +const ABSOLUTE_RE = new RegExp(`^${PATH_NAME_FORMAT}\\|${FQN_FORMAT}$`); +/** + * Clutz glues js symbols to ts namespace by prepending "ಠ_ಠ.clutz.". + * We need to include this prefix when the banned name is from Closure. + */ +const CLUTZ_SYM_PREFIX = 'ಠ_ಠ.clutz.'; /** * This class matches symbols given a "foo.bar.baz" name, where none of the @@ -19,8 +24,10 @@ const ANY_SYMBOL = 'ANY_SYMBOL'; * name on which the symbol was initially defined. * * This matcher requires a scope for the symbol, which may be `GLOBAL`, - * `ANY_SCOPE`, or a file path filter. The matcher begins with this scope, then - * the separator "|", followed by the symbol name. For example, "GLOBAL|eval". + * `ANY_SYMBOL`, `CLOSURE` or a file path filter. `CLOSURE` indicates that the + * symbol is from the JS Closure library processed by clutz. The matcher begins + * with this scope, then the separator "|", followed by the symbol name. For + * example, "GLOBAL|eval". * * The file filter specifies * (part of) the path of the file in which the symbol of interest is defined. @@ -91,9 +98,29 @@ export class AbsoluteMatcher { // Split spec by the separator "|". [this.filePath, this.bannedName] = spec.split('|', 2); + + if (this.filePath === CLOSURE) { + this.bannedName = CLUTZ_SYM_PREFIX + this.bannedName; + } } matches(n: ts.Node, tc: ts.TypeChecker): boolean { + debugLog(() => `start matching ${n.getText()} in ${n.parent.getText()}`); + + // Check if the node is being declared. Declaration may be imported without + // programmer being aware of. We should not alert them about that. + // Since import statments are also declarations, this have two notable + // consequences. + // - Match is negative for imports without renaming + // - Match is positive for imports with renaming, when the imported name + // is the target. Since Tsetse is flow insensitive and we don't track + // symbol aliases, the import statement is the only place we can match + // bad symbols if they get renamed. + if (isNameInDeclaration(n)) { + debugLog(() => `We don't flag symbol declarations`); + return false; + } + // Get the symbol (or the one at the other end of this alias) that we're // looking at. const s = dealias(tc.getSymbolAtLocation(n), tc); @@ -110,69 +137,44 @@ export class AbsoluteMatcher { // Name-based check: `getFullyQualifiedName` returns `"filename".foo.bar` or // just `foo.bar` if the symbol is ambient. The check here should consider // both cases. - if (!(fqn.endsWith('".' + this.bannedName) || fqn === this.bannedName)) { + if (!fqn.endsWith('".' + this.bannedName) && fqn !== this.bannedName) { debugLog(() => `FQN ${fqn} doesn't match name ${this.bannedName}`); - return false; // not a use of the symbols we want + return false; } - // Check if it's part of a declaration or import. The check is cheap. If - // we're looking for the uses of a symbol, we don't alert on the imports, to - // avoid flooding users with warnings (as the actual use will be alerted) - // and bad fixes. - const p = n.parent; - if (isNameInDeclaration(n) || (p && isPartOfImportStatement(p))) { - debugLog(() => `We don't flag symbol declarations`); - return false; + // If `ANY_SYMBOL` or `CLOSURE` is specified, it's sufficient to conclude we + // have a match. + if (this.filePath === ANY_SYMBOL || this.filePath === CLOSURE) { + return true; } - // No file info in the FQN means it's not explicitly imported. - // That must therefore be a local variable, or an ambient symbol - // (and we only care about ambients here). Those could come from - // either a declare somewhere, or one of the core libraries that - // are loaded by default. - if (!fqn.startsWith('"')) { - // If this matcher includes a non-empty file path, it means that the - // targeted symbol is defined and explicitly exported in some file. If the - // current symbol is not associated with a specific file (because it is a - // local symbol or ambient symbol), it is not a match. - if (this.filePath !== GLOBAL && this.filePath !== ANY_SYMBOL) { - debugLog( - () => - `The symbol has no file path and one is specified by the matcher`); - return false; - } + // If there is no declaration, the symbol is a language built-in object. + // This is a match only if `GLOBAL` is specified. + const declarations = s.getDeclarations(); + if (declarations === undefined) { + return this.filePath === GLOBAL; + } - // We need to trace things back, so get declarations of the symbol. - const declarations = s.getDeclarations(); - if (!declarations) { - debugLog(() => `Symbol never declared?`); - return false; + // No file info in the FQN means it's imported from a .d.ts declaration + // file. This can be from a core library, a JS library, or an exported local + // symbol defined in another TS target. We need to extract the name of the + // declaration file. + if (!fqn.startsWith('"')) { + if (this.filePath === GLOBAL) { + return declarations.some(isInStockLibraries); + } else { + return declarations.some((d) => { + const srcFilePath = d.getSourceFile()?.fileName; + return srcFilePath && srcFilePath.match(this.filePath); + }) } - if (!declarations.some(isInStockLibraries)) { - debugLog(() => `Symbol not from the stock libraries`); - return false; + } else { + const last = fqn.indexOf('"', 1); + if (last === -1) { + throw new Error('Malformed fully-qualified name.'); } + const filePath = fqn.substring(1, last); + return filePath.match(this.filePath) !== null; } - // If we know the file info of the symbol, and this matcher includes a file - // path, we check if they match. - else { - if (this.filePath !== ANY_SYMBOL) { - const last = fqn.indexOf('"', 1); - if (last === -1) { - throw new Error('Malformed fully-qualified name.'); - } - const sympath = fqn.substring(1, last); - debugLog(() => `The file path of the symbol is ${sympath}`); - if (!sympath.match(this.filePath) || this.filePath === GLOBAL) { - debugLog( - () => - `The file path of the symbol does not match the file path of the matcher`); - return false; - } - } - } - - debugLog(() => `all clear, report finding`); - return true; } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher_test.ts index cfc25652f8..3617aad748 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher_test.ts @@ -40,12 +40,14 @@ describe('AbsoluteMatcher', () => { {matchedCode: `bar`, messageText: 'banned name with file path'}); }); - it('ignores an unmatched file path', () => { + it('ignores an exported symbol defined in an unmatched file path', () => { const config = { errorMessage: 'banned name with file path', kind: PatternKind.BANNED_NAME, values: ['./file_0|Foo.bar'] }; + + // test exported symbols const sources = [ `export class Foo { static bar(s: string) {return s + "abc";} }`, `export class Foo { static bar(s: string) {return s + "abc";} }`, @@ -58,6 +60,27 @@ describe('AbsoluteMatcher', () => { expect(results).toHaveNoFailures(); }); + it('ignores an un-exported symbol defined in an unmatched file path', + () => { + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|Foo.bar'] + }; + + // test non-exported symbols + const sources = [ + `export class Foo { static bar(s: string) {return s + "abc";} }`, + `class Foo { static bar(s: string) {return s + "abc";} } + var a = Foo.bar("123");` + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + + expect(results).toHaveNoFailures(); + }); + it('matches a local exported definition', () => { // This is a match because Foo.bar is an exported symbol. const config = { @@ -74,6 +97,30 @@ describe('AbsoluteMatcher', () => { expect(results).toHaveFailuresMatching( {matchedCode: `bar`, messageText: 'banned name with file path'}); }); + + it('matches names in import statement', () => { + const config = { + errorMessage: 'banned name with file path', + kind: PatternKind.BANNED_NAME, + values: ['./file_0|foo', 'ANY_SYMBOL|bar'] + }; + const sources = [ + `export function foo(s: string) {return s + "abc";} + function bar() {} + export {bar};`, + `import {foo} from './file_0'; + import {bar} from './file_0';`, + `import {foo as okFoo} from './file_0'; + import {bar as okBar} from './file_0';`, + ]; + + const results = + compileAndCheck(new ConformancePatternRule(config), ...sources); + expect(results).toHaveFailuresMatching( + {matchedCode: `foo`, messageText: 'banned name with file path'}, + {matchedCode: `bar`, messageText: 'banned name with file path'}, + ); + }); }); describe('global scope', () => { @@ -91,7 +138,7 @@ describe('AbsoluteMatcher', () => { {matchedCode: `eval`, messageText: 'banned ambient name'}); }); - it('does not match a custom method with the same name', () => { + it('does not match a custom exported method with the same name', () => { const config = { errorMessage: 'banned ambient name', kind: PatternKind.BANNED_NAME, @@ -106,33 +153,31 @@ describe('AbsoluteMatcher', () => { expect(results).toHaveNoFailures(); }); - it('matches an initializer in a named declaration', () => { + it('does not match a custom non-exported method with the same name', () => { const config = { - errorMessage: 'banned ambient name', + errorMessage: 'banned global name', kind: PatternKind.BANNED_NAME, - values: ['GLOBAL|open'], + values: ['GLOBAL|Foo.bar'] }; - const sources = ['const op = open;']; - + const sources = [`class Foo { static bar(s: string) {return s + "abc";} } + var a = Foo.bar("123");`]; const results = compileAndCheck(new ConformancePatternRule(config), ...sources); - expect(results).toHaveFailuresMatching( - {matchedCode: 'open', messageText: 'banned ambient name'}); + expect(results).toHaveNoFailures(); }); - it('does not match a local non-exported definition', () => { - // This is not a match because Foo.bar is a non-exported locally defined - // symbol. + it('matches an initializer in a named declaration', () => { const config = { - errorMessage: 'banned name with file path', + errorMessage: 'banned ambient name', kind: PatternKind.BANNED_NAME, - values: ['./file_0|Foo.bar'] + values: ['GLOBAL|open'], }; - const sources = [`class Foo { static bar(s: string) {return s + "abc";} } - var a = Foo.bar("123");`]; + const sources = ['const op = open;']; + const results = compileAndCheck(new ConformancePatternRule(config), ...sources); - expect(results).toHaveNoFailures(); + expect(results).toHaveFailuresMatching( + {matchedCode: 'open', messageText: 'banned ambient name'}); }); }); From dc7cb4f035778ad10a206163465cd9faf3ab6dea Mon Sep 17 00:00:00 2001 From: lucassloan Date: Tue, 2 Jun 2020 11:07:25 -0700 Subject: [PATCH 0728/1134] Make the position based diagnostic constructor public. Fix a bug where expected diagnostics on line 1, character 1 never matched. PiperOrigin-RevId: 314365731 --- .../rules_typescript/internal/tsc_wrapped/diagnostics.ts | 2 +- .../bazelbuild/rules_typescript/internal/tsetse/checker.ts | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics.ts index 32fbfe0f45..53f292802b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/diagnostics.ts @@ -79,7 +79,7 @@ export function filterExpected( const unmatchedDiags = diagnostics.filter(diag => { let line = -1; let character = -1; - if (diag.file && diag.start) { + if (diag.file !== undefined && diag.start !== undefined) { ({line, character} = ts.getLineAndCharacterOfPosition(diag.file, diag.start)); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts index 9d5c1d285b..2f606f455e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/checker.ts @@ -107,11 +107,9 @@ export class Checker { } /** - * Add a failure with a span. addFailure() is currently private because - * `addFailureAtNode` is preferred. + * Add a failure with a span. */ - private addFailure( - start: number, end: number, failureText: string, fix?: Fix) { + addFailure(start: number, end: number, failureText: string, fix?: Fix) { if (!this.currentSourceFile) { throw new Error('Source file not defined'); } From 1211d339e5afdc5bb8346f4230ccc4cf4abc8686 Mon Sep 17 00:00:00 2001 From: pwng Date: Mon, 8 Jun 2020 17:01:16 -0700 Subject: [PATCH 0729/1134] Remove the deprecated and unused BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT pattern from Tsetse checker. PiperOrigin-RevId: 315383297 --- .../tsetse/rules/conformance_pattern_rule.ts | 4 - .../internal/tsetse/util/pattern_config.ts | 2 - .../name_call_non_constant_argument.ts | 81 ------------- .../name_call_non_constant_argument_test.ts | 113 ------------------ 4 files changed, 200 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument_test.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts index f1188943a6..666501b81c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts @@ -3,7 +3,6 @@ import {ErrorCode} from '../error_code'; import {AbstractRule} from '../rule'; import {Fixer} from '../util/fixer'; import {Config, PatternKind} from '../util/pattern_config'; -import {CallNonConstantArgumentEngine} from '../util/pattern_engines/name_call_non_constant_argument'; import {NameEngine} from '../util/pattern_engines/name_engine'; import {PatternEngine} from '../util/pattern_engines/pattern_engine'; import {PropertyEngine} from '../util/pattern_engines/property_engine'; @@ -39,9 +38,6 @@ export class ConformancePatternRule implements AbstractRule { case PatternKind.BANNED_NAME: this.engine = new NameEngine(config, fixer); break; - case PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT: - this.engine = new CallNonConstantArgumentEngine(config, fixer); - break; case PatternKind.BANNED_PROPERTY_READ: this.engine = new PropertyReadEngine(config, fixer); break; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index 3c78c8f200..522621906d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -21,8 +21,6 @@ export enum PatternKind { * property are allowed. */ BANNED_PROPERTY_READ = 'banned-property-read', - /** @deprecated use `BANNED_PROPERTY` instead */ - BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT = 'banned-call-non-constant-argument' } /** diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts deleted file mode 100644 index 5a7a7ffb7d..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument.ts +++ /dev/null @@ -1,81 +0,0 @@ -import * as ts from 'typescript'; - -import {Checker} from '../../checker'; -import {ErrorCode} from '../../error_code'; -import {AbsoluteMatcher} from '../absolute_matcher'; -import {debugLog} from '../ast_tools'; -import {Fixer} from '../fixer'; -import {isLiteral} from '../is_literal'; -import {Config} from '../pattern_config'; - -import {PatternEngine} from './pattern_engine'; - -function parseSpec(value: string): [AbsoluteMatcher, number] { - const [matcherSpec, strPosition] = value.split(':', 2); - if (!matcherSpec || !strPosition.match('^\\d+$')) { - throw new Error(`Couldn\'t parse value '${value}'`); - } - const position = Number(strPosition); - return [new AbsoluteMatcher(matcherSpec), position]; -} - -/** - * Inspects a particular CallExpression to see if it calls the target - * function with a non-literal parameter in the target position. Returns - * that CallExpression if `n` matches the search, undefined otherwise. - */ -function checkCallExpr( - tc: ts.TypeChecker, n: ts.CallExpression, matcher: AbsoluteMatcher, - position: number): ts.CallExpression|undefined { - debugLog(() => `inspecting ${n.getText().trim()}`); - - if (!matcher.matches(n.expression, tc)) { - debugLog(() => `Wrong symbol, not ${matcher.bannedName}`); - return; - } - if (n.arguments.length < position) { - debugLog( - () => `Good symbol, not enough arguments to match (got ${ - n.arguments.length}, want ${position})`); - return; - } - if (isLiteral(tc, n.arguments[position])) { - debugLog(() => `Good symbol, argument literal`); - return; - } - debugLog( - () => `Match. Reporting failure (boundaries: ${n.getStart()}, ${ - n.getEnd()}] on node [${n.getText()}]`); - return n; - - // No match. - return; -} - -/** - * The engine for BANNED_CALL_NON_CONSTANT_ARGUMENT. - * - * This takes any amount of (functionName, argument) position pairs, separated - * by a colon. The first part matches symbols that were defined on the global - * scope, and their fields, without going through a prototype chain. - * - * For instance, "URL.createObjectURL:0" will target any createObjectURL-named - * call on a URL-named object (like the ambient URL declared in lib.dom.d.ts), - * or "Car.buildFromParts:1" will match any buildFromParts reached from a - * Car-named symbol, including a hypothetical class with a static member - * function "buildFromParts" that lives in its own module. - */ -export class CallNonConstantArgumentEngine extends PatternEngine { - register(checker: Checker) { - for (const value of this.config.values) { - const [matcher, position] = parseSpec(value); - - checker.on( - ts.SyntaxKind.CallExpression, - this.wrapCheckWithWhitelistingAndFixer( - (tc, n: ts.CallExpression) => - checkCallExpr(tc, n, matcher, position)), - ErrorCode.CONFORMANCE_PATTERN); - } - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument_test.ts deleted file mode 100644 index b4b24cfc42..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_call_non_constant_argument_test.ts +++ /dev/null @@ -1,113 +0,0 @@ -import 'jasmine'; -import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; -import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; - -describe('BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT', () => { - const config = { - errorMessage: 'do not call bar.foo with non-literal 1st arg', - kind: PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT, - values: ['ANY_SYMBOL|bar:0'] - }; - const rule = new ConformancePatternRule(config); - - it('matches simple examples', () => { - const sources = [ - `export function bar(x:any, y:any) {}`, - `import * as foo from './file_0'; ` + - `foo.bar(1, 1); foo.bar(window.name, 1);`, - ]; - const results = compileAndCheck(rule, ...sources); - - expect(results).toHaveFailuresMatching({ - matchedCode: `foo.bar(window.name, 1)`, - messageText: 'do not call bar.foo with non-literal 1st arg' - }); - }); - - it('looks at the right position', () => { - const sources = [ - `export function bar(x:any, y:any) {}`, - `import * as foo from './file_0'; foo.bar(1, window.name);`, - ]; - const results = compileAndCheck(rule, ...sources); - - expect(results).toHaveNoFailures(); - }); - - it('looks at the right position', () => { - const rule = new ConformancePatternRule({ - errorMessage: 'non-literal arg', - kind: PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT, - values: ['ANY_SYMBOL|aaa:1', 'ANY_SYMBOL|bbb:0'] - }); - - const sources = [ - `export function aaa(x:any, y:any) {}; export function bbb(x:any) {}`, - `import * as foo from './file_0'; ` + - `foo.aaa(1, window.name); foo.bbb(window.name);`, - ]; - const results = compileAndCheck(rule, ...sources); - - expect(results).toHaveFailuresMatching( - { - matchedCode: `foo.aaa(1, window.name)`, - }, - { - matchedCode: `foo.bbb(window.name)`, - }); - }); - - it('supports static methods', () => { - const rule = new ConformancePatternRule({ - errorMessage: 'non-literal arg', - kind: PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT, - values: ['ANY_SYMBOL|Car.buildFromParts:0'] - }); - - const sources = [ - `export class Car { static buildFromParts(name:string):void {}; }`, - `import {Car} from './file_0';\n` + - `Car.buildFromParts(window.name);\n` + - `Car.buildFromParts('hello');`, - ]; - const results = compileAndCheck(rule, ...sources); - - expect(results).toHaveFailuresMatching({ - matchedCode: `Car.buildFromParts(window.name)`, - }); - }); - - it('supports ambient global methods', () => { - const rule = new ConformancePatternRule({ - errorMessage: 'non-literal arg', - kind: PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT, - values: ['GLOBAL|URL.createObjectURL:0'] - }); - - const sources = [`URL.createObjectURL(window.name);\n`]; - const results = compileAndCheck(rule, ...sources); - - expect(results).toHaveFailuresMatching({ - matchedCode: `URL.createObjectURL(window.name)`, - }); - }); - - it('supports ambient global methods', () => { - const rule = new ConformancePatternRule({ - errorMessage: 'non-literal arg', - kind: PatternKind.BANNED_NAME_CALL_NON_CONSTANT_ARGUMENT, - values: ['GLOBAL|eval:0'] - }); - - const sources = [`eval(window.name);\n`]; - const results = compileAndCheck(rule, ...sources); - - expect(results).toHaveFailuresMatching({ - matchedCode: `eval(window.name)`, - }); - }); -}); - -beforeEach(() => { - jasmine.addMatchers(customMatchers); -}); From e3b72ab65bf3458408b931659616315f371a0657 Mon Sep 17 00:00:00 2001 From: lucassloan Date: Wed, 10 Jun 2020 14:42:47 -0700 Subject: [PATCH 0730/1134] Add the option to entirely disable type checking. PiperOrigin-RevId: 315771891 --- .../rules_typescript/internal/common/tsconfig.bzl | 4 +++- .../rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts | 3 +++ .../rules_typescript/internal/tsc_wrapped/tsconfig.ts | 6 ++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl index 8df9ff4832..ac14b4dcac 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl @@ -32,7 +32,8 @@ def create_tsconfig( extra_root_dirs = [], module_path_prefixes = None, module_roots = None, - node_modules_root = None): + node_modules_root = None, + type_check = True): """Creates an object representing the TypeScript configuration to run the compiler under Bazel. Args: @@ -156,6 +157,7 @@ def create_tsconfig( "addDtsClutzAliases": getattr(ctx.attr, "add_dts_clutz_aliases", False), "typeCheckDependencies": getattr(ctx.attr, "internal_testing_type_check_dependencies", False), "expectedDiagnostics": getattr(ctx.attr, "expected_diagnostics", []), + "typeCheck": True, } if getattr(ctx.attr, "use_angular_plugin", False): diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index 4104d9b34f..f17aebe92d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -59,6 +59,9 @@ export function gatherDiagnostics( const diagnostics: ts.Diagnostic[] = []; perfTrace.wrap('type checking', () => { + if (!bazelOpts.typeCheck) { + return; + } // These checks mirror ts.getPreEmitDiagnostics, with the important // exception of avoiding b/30708240, which is that if you call // program.getDeclarationDiagnostics() it somehow corrupts the emit. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts index be964ebcd8..1117ea892d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsconfig.ts @@ -201,6 +201,12 @@ export interface BazelOptions { * future. */ devmodeTargetOverride?: string; + + /** + * Whether to type check. Differs from typeCheckDependencies in that this + * avoids type checking the srcs in addition to the dependencies. + */ + typeCheck: boolean; } export interface ParsedTsConfig { From 241cff3d3cb3b9daf5b458a63538cf054adcc5b7 Mon Sep 17 00:00:00 2001 From: pwng Date: Thu, 11 Jun 2020 18:17:55 -0700 Subject: [PATCH 0731/1134] Undo the deprecation of `BANNED_PROPERTY_NON_CONSTANT_WRITE` PiperOrigin-RevId: 316017056 --- .../rules_typescript/internal/tsetse/util/pattern_config.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index 522621906d..3e82e34250 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -14,7 +14,10 @@ export enum PatternKind { * property are allowed. */ BANNED_PROPERTY_WRITE = 'banned-property-write', - /** @deprecated use `BANNED_PROPERTY_WRITE` instead */ + /** + * Ban instance property write unless the property is assigned a constant + * literal. + */ BANNED_PROPERTY_NON_CONSTANT_WRITE = 'banned-property-non-constant-write', /** * Ban instance property, like BANNED_PROPERTY but where writes of the From 5dfea633ffdec77ff0b3816b4984021047f00a90 Mon Sep 17 00:00:00 2001 From: martinprobst Date: Fri, 12 Jun 2020 11:02:32 -0700 Subject: [PATCH 0732/1134] Document why this code is serving 404s with useful content (and not 200s). PiperOrigin-RevId: 316136597 --- .../rules_typescript/devserver/devserver/devserver.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/devserver.go b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/devserver.go index 9bd3a8661c..3ed5d88c7e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/devserver.go +++ b/third_party/github.com/bazelbuild/rules_typescript/devserver/devserver/devserver.go @@ -160,6 +160,9 @@ func CreateFileHandler(servingPath, manifest string, pkgs []string, base string) // When a file is not found, serve a 404 code but serve the index.html from above as its body. // This allows applications to use html5 routing and reload the page at /some/sub/path, but still // get their web app served. + // The responses is marked as an error (404) so that requests that are genuinely wrong (e.g. + // incorrect URLs for CSS, images, etc) are marked as such. Otherwise they'd seem to succeed but + // then fail to process correctly, which makes for a bad debugging experience. writer = &customNotFoundResponseWriter{ResponseWriter: writer, request: request, notFound: indexHandler} fileHandler(writer, request) } @@ -170,7 +173,7 @@ func CreateFileHandler(servingPath, manifest string, pkgs []string, base string) // dirHTTPFileSystem implements http.FileSystem by looking in the list of dirs one after each other. type dirHTTPFileSystem struct { packageDirs []string - base string + base string } func (fs dirHTTPFileSystem) Open(name string) (http.File, error) { @@ -211,7 +214,6 @@ func (fs dirHTTPFileSystem) Open(name string) (http.File, error) { } } - // We can assume that the file is present, if it's listed in the runfile manifest. Though, we // return the error, in case something prevented the read-access. return os.Open(realFilePath) From eaf9f2e845d5aa1f46a58f9be658d7f6412868d5 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Mon, 15 Jun 2020 11:57:44 -0700 Subject: [PATCH 0733/1134] Allow validation outputs to be registered in OutputGroupInfo. PiperOrigin-RevId: 316514294 --- .../rules_typescript/internal/common/compilation.bzl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl index c9d76d12aa..2947e81b51 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/common/compilation.bzl @@ -193,7 +193,8 @@ def compile_ts( jsx_factory = None, tsc_wrapped_tsconfig = None, tsconfig = None, - outputs = _outputs): + outputs = _outputs, + validation_outputs = None): """Creates actions to compile TypeScript code. This rule is shared between ts_library and ts_declaration. @@ -205,11 +206,13 @@ def compile_ts( declaration_infos: list of DeclarationInfo. Explicit list of declarations to be used instead of those on ctx.attr.deps. compile_action: function. Creates the compilation action. devmode_compile_action: function. Creates the compilation action - for devmode. + for devmode. jsx_factory: optional string. Enables overriding jsx pragma. tsc_wrapped_tsconfig: function that produces a tsconfig object. tsconfig: The tsconfig file to output, if other than ctx.outputs.tsconfig. outputs: function from a ctx to the expected compilation outputs. + validation_outputs: Actions that produce validation outputs will be run whenever any part of + a rule is run, even if its outputs are not used. This is useful for things like strict deps check. Returns: struct that will be returned by the rule implementation. @@ -458,6 +461,7 @@ def compile_ts( files = depset(transitive = files_depsets), ), OutputGroupInfo( + _validation = depset(validation_outputs if validation_outputs else []), es5_sources = es5_sources, es6_sources = es6_sources, ), From 6ce9df170ca13ea9e3cb68c93c2adaa12e8e1b9a Mon Sep 17 00:00:00 2001 From: pwng Date: Tue, 16 Jun 2020 10:33:31 -0700 Subject: [PATCH 0734/1134] Make whitelisting-related code visible outside `PatternEngine`. PiperOrigin-RevId: 316709323 --- .../internal/tsetse/util/pattern_config.ts | 49 +--------- .../util/pattern_engines/pattern_engine.ts | 44 ++------- .../internal/tsetse/util/whitelist.ts | 96 +++++++++++++++++++ .../internal/tsetse/util/whitelist_test.ts | 44 ++++++++- 4 files changed, 146 insertions(+), 87 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index 3e82e34250..ab1becb0a2 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -1,3 +1,4 @@ +import {WhitelistEntry} from './whitelist'; /** * The list of supported patterns useable in ConformancePatternRule. The @@ -52,51 +53,3 @@ export interface Config { */ name?: string; } - -/** - * A whitelist entry, corresponding to a logical whitelisting rule. Use these - * to distinguish between various logical reasons for whitelisting something: - * for instance, tie these to particular bugs that needed whitelisting, per - * legacy project, manually reviewed entries, and so on. - * - * Whitelists are based on the file paths provided by the TS compiler, with - * both regexp-based checks and prefix-based checks. - * - * - * Follows the logic in - * https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/conformance.proto. - */ -export interface WhitelistEntry { - /** The category corresponding to this entry. */ - reason: WhitelistReason; - /** Why is this okay to whitelist. */ - explanation?: string; - - /** - * Regexps for the paths of files that will be ignored by the - * ConformancePattern. Beware, escaping can be tricky. - */ - regexp?: string[]; - /** - * Prefixes for the paths of files that will be ignored by the - * ConformancePattern. - */ - prefix?: string[]; -} - -/** - * The categories of whitelist entries. - */ -export enum WhitelistReason { - /** No reason. */ - UNSPECIFIED, - /** Code that has to be grandfathered in (no guarantees). */ - LEGACY, - /** - * Code that does not enter the scope of this particular check (no - * guarantees). - */ - OUT_OF_SCOPE, - /** Manually reviewed exceptions (supposedly okay). */ - MANUALLY_REVIEWED -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts index f0f1d66d4f..a53fae44dc 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts @@ -4,30 +4,18 @@ import {Checker} from '../../checker'; import {Fix} from '../../failure'; import {Fixer} from '../../util/fixer'; import {Config} from '../../util/pattern_config'; +import {Whitelist} from '../../util/whitelist'; import {shouldExamineNode} from '../ast_tools'; /** * A patternEngine is the logic that handles a specific PatternKind. */ export abstract class PatternEngine { - private readonly whitelistedPrefixes: string[] = []; - private readonly whitelistedRegExps: RegExp[] = []; - private readonly whitelistMemoizer: Map = new Map(); + private readonly whitelist: Whitelist; constructor( protected readonly config: Config, protected readonly fixer?: Fixer) { - if (config.whitelistEntries) { - for (const e of config.whitelistEntries) { - if (e.prefix) { - this.whitelistedPrefixes = - this.whitelistedPrefixes.concat(...e.prefix); - } - if (e.regexp) { - this.whitelistedRegExps = this.whitelistedRegExps.concat( - ...e.regexp.map(r => new RegExp(r))); - } - } - } + this.whitelist = new Whitelist(config.whitelistEntries); } /** @@ -47,11 +35,12 @@ export abstract class PatternEngine { checkFunction: (tc: ts.TypeChecker, n: T) => ts.Node | undefined): (c: Checker, n: T) => void { return (c: Checker, n: T) => { - if (!shouldExamineNode(n) || n.getSourceFile().isDeclarationFile) { + const sf = n.getSourceFile(); + if (!shouldExamineNode(n) || sf.isDeclarationFile) { return; } const matchedNode = checkFunction(c.typeChecker, n); - if (matchedNode && !this.isWhitelisted(matchedNode)) { + if (matchedNode && !this.whitelist.isWhitelisted(sf.fileName)) { const fix: Fix|undefined = this.fixer ? this.fixer.getFixForFlaggedNode(matchedNode) : undefined; @@ -59,25 +48,4 @@ export abstract class PatternEngine { } } } - - isWhitelisted(n: ts.Node): boolean { - const name: string = n.getSourceFile().fileName; - if (this.whitelistMemoizer.has(name)) { - return this.whitelistMemoizer.get(name)!; - } - for (const p of this.whitelistedPrefixes) { - if (name.indexOf(p) == 0) { - this.whitelistMemoizer.set(name, true); - return true; - } - } - for (const re of this.whitelistedRegExps) { - if (re.test(name)) { - this.whitelistMemoizer.set(name, true); - return true; - } - } - this.whitelistMemoizer.set(name, false); - return false; - } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist.ts new file mode 100644 index 0000000000..6bedc15712 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist.ts @@ -0,0 +1,96 @@ +/** + * A whitelist entry, corresponding to a logical whitelisting rule. Use these + * to distinguish between various logical reasons for whitelisting something: + * for instance, tie these to particular bugs that needed whitelisting, per + * legacy project, manually reviewed entries, and so on. + * + * Whitelists are based on the file paths provided by the TS compiler, with + * both regexp-based checks and prefix-based checks. + * + * + * Follows the logic in + * https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/conformance.proto. + */ +export interface WhitelistEntry { + /** The category corresponding to this entry. */ + readonly reason: WhitelistReason; + /** Why is this okay to whitelist. */ + readonly explanation?: string; + + /** + * Regexps for the paths of files that will be ignored by the + * ConformancePattern. Beware, escaping can be tricky. + */ + readonly regexp?: readonly string[]; + /** + * Prefixes for the paths of files that will be ignored by the + * ConformancePattern. + */ + readonly prefix?: readonly string[]; +} + +/** + * The categories of whitelist entries. + */ +export enum WhitelistReason { + /** No reason. */ + UNSPECIFIED, + /** Code that has to be grandfathered in (no guarantees). */ + LEGACY, + /** + * Code that does not enter the scope of this particular check (no + * guarantees). + */ + OUT_OF_SCOPE, + /** Manually reviewed exceptions (supposedly okay). */ + MANUALLY_REVIEWED +} + +/** + * A complete whitelist with all related WhitelistEntry grouped together, with + * WhitelistReason ignored since it is purely for documentary purposes. + */ +export class Whitelist { + private readonly whitelistedPrefixes: readonly string[] = []; + private readonly whitelistedRegExps: readonly RegExp[] = []; + // To avoid repeated computation for whitelisting queries with the same file + // path, create a memoizer to cache known results. This is useful in watch + // mode (and possible in language service) when the same files can be compiled + // repeatedly. + private readonly whitelistMemoizer: Map = new Map(); + + constructor(whitelistEntries?: WhitelistEntry[]) { + if (whitelistEntries) { + for (const e of whitelistEntries) { + if (e.prefix) { + this.whitelistedPrefixes = + this.whitelistedPrefixes.concat(...e.prefix); + } + if (e.regexp) { + this.whitelistedRegExps = this.whitelistedRegExps.concat( + ...e.regexp.map(r => new RegExp(r))); + } + } + } + } + + isWhitelisted(filePath: string): boolean { + if (this.whitelistMemoizer.has(filePath)) { + return this.whitelistMemoizer.get(filePath)!; + } + for (const p of this.whitelistedPrefixes) { + if (filePath.startsWith(p)) { + this.whitelistMemoizer.set(filePath, true); + return true; + } + } + for (const re of this.whitelistedRegExps) { + if (re.test(filePath)) { + this.whitelistMemoizer.set(filePath, true); + return true; + } + } + this.whitelistMemoizer.set(filePath, false); + return false; + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist_test.ts index 475c62033b..b94ea80590 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist_test.ts @@ -1,7 +1,9 @@ import 'jasmine'; + import {ConformancePatternRule, PatternKind} from '../rules/conformance_pattern_rule'; -import {WhitelistReason} from './pattern_config'; + import {compileAndCheck, customMatchers, getTempDirForWhitelist} from './testing/test_support'; +import {WhitelistReason} from './whitelist'; const tmpPrefixForWhitelist = getTempDirForWhitelist(); const tmpRegexpForWhitelist = @@ -115,6 +117,46 @@ describe('ConformancePatternRule', () => { new ConformancePatternRule(config); }).toThrowError(/Invalid regular expression/); }); + + it('test memoizer hit', () => { + const config = { + ...baseConfig, + whitelistEntries: [{ + reason: WhitelistReason.UNSPECIFIED, + regexp: [ + `${tmpRegexpForWhitelist}.+/file_0\\.ts`, + ] + }] + }; + const rule = new ConformancePatternRule(config); + // Compile the same file twice to make sure memoizer doesn't + // break things. + let results = compileAndCheck(rule, source); + results = results.concat(compileAndCheck(rule, source)); + + expect(results).toHaveNoFailures(); + }); + + it('test memoizer miss', () => { + const config = { + ...baseConfig, + whitelistEntries: [{ + reason: WhitelistReason.UNSPECIFIED, + regexp: [ + `${tmpRegexpForWhitelist}.+/file_1\\.ts`, + ], + prefix: ['###PrefixNotExist###'], + }] + }; + const rule = new ConformancePatternRule(config); + // Compile the same file twice to make sure memoizer doesn't + // break things. + let results = compileAndCheck(rule, source); + expect(results).toHaveNFailures(1); + + results = compileAndCheck(rule, source); + expect(results).toHaveNFailures(1); + }); }); }); From 85edd6be1b0d53ccea21e37c5f4154b6b681864f Mon Sep 17 00:00:00 2001 From: pwng Date: Wed, 17 Jun 2020 19:03:13 -0700 Subject: [PATCH 0735/1134] Remove never used BANNED_PROPERTY_READ pattern. PiperOrigin-RevId: 317013155 --- .../tsetse/rules/conformance_pattern_rule.ts | 4 - .../internal/tsetse/util/pattern_config.ts | 5 - .../pattern_engines/property_read_engine.ts | 89 --------------- .../property_read_engine_test.ts | 104 ------------------ 4 files changed, 202 deletions(-) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine_test.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts index 666501b81c..714c0e7433 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts @@ -7,7 +7,6 @@ import {NameEngine} from '../util/pattern_engines/name_engine'; import {PatternEngine} from '../util/pattern_engines/pattern_engine'; import {PropertyEngine} from '../util/pattern_engines/property_engine'; import {PropertyNonConstantWriteEngine} from '../util/pattern_engines/property_non_constant_write_engine'; -import {PropertyReadEngine} from '../util/pattern_engines/property_read_engine'; import {PropertyWriteEngine} from '../util/pattern_engines/property_write_engine'; @@ -38,9 +37,6 @@ export class ConformancePatternRule implements AbstractRule { case PatternKind.BANNED_NAME: this.engine = new NameEngine(config, fixer); break; - case PatternKind.BANNED_PROPERTY_READ: - this.engine = new PropertyReadEngine(config, fixer); - break; default: throw new Error('Config type not recognized, or not implemented yet.'); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index ab1becb0a2..041fd9d5a6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -20,11 +20,6 @@ export enum PatternKind { * literal. */ BANNED_PROPERTY_NON_CONSTANT_WRITE = 'banned-property-non-constant-write', - /** - * Ban instance property, like BANNED_PROPERTY but where writes of the - * property are allowed. - */ - BANNED_PROPERTY_READ = 'banned-property-read', } /** diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts deleted file mode 100644 index 7923120d5a..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine.ts +++ /dev/null @@ -1,89 +0,0 @@ -import * as ts from 'typescript'; - -import {Checker} from '../../checker'; -import {ErrorCode} from '../../error_code'; -import {debugLog} from '../ast_tools'; -import {Fixer} from '../fixer'; -import {Config} from '../pattern_config'; -import {PatternEngine} from '../pattern_engines/pattern_engine'; -import {PropertyMatcher} from '../property_matcher'; - -/** - * Check property read in variable initializations. For example, var a = - * object.property. - */ -function checkVarStmt( - tc: ts.TypeChecker, n: ts.VariableStatement, - matcher: PropertyMatcher): ts.Node|undefined { - for (const declaration of n.declarationList.declarations) { - if (declaration.initializer !== undefined && - ts.isPropertyAccessExpression(declaration.initializer)) { - debugLog(() => `Inspecting ${n.getText().trim()}`); - if (matcher.matches(declaration.initializer, tc)) { - debugLog( - () => `Match. Reporting failure (boundaries: ${n.getStart()}, ${ - n.getEnd()}] on node [${n.getText()}]`); - return n; - } - } - } - return; -} - -/** - * Check property read in binary expressions. If it is an assignment, it is a - * match if the property access appears at the RHS of the assignment. - */ -function checkBinExpr( - tc: ts.TypeChecker, n: ts.BinaryExpression, - matcher: PropertyMatcher): ts.Node|undefined { - debugLog(() => `inspecting ${n.getText().trim()}`); - // If the expression is an assignment, then the property must appear - // at the right-hand side of the expression. - if (n.operatorToken.getText().trim() === '=') { - if (ts.isPropertyAccessExpression(n.right) && - matcher.matches(n.right, tc)) { - debugLog( - () => `Match. Reporting failure (boundaries: ${n.getStart()}, ${ - n.getEnd()}] on node [${n.getText()}]`); - return n; - } - } - // If it is a non-assignment binary expression, - // the property access may appear either side of the expression. - else { - if ((ts.isPropertyAccessExpression(n.right) && - matcher.matches(n.right, tc)) || - (ts.isPropertyAccessExpression(n.left) && - matcher.matches(n.left, tc))) { - debugLog( - () => `Match. Reporting failure (boundaries: ${n.getStart()}, ${ - n.getEnd()}] on node [${n.getText()}]`); - return n; - } - } - return; -} - -/** - * The engine for BANNED_PROPERTY_READ. - */ -export class PropertyReadEngine extends PatternEngine { - register(checker: Checker) { - for (const value of this.config.values) { - const matcher = PropertyMatcher.fromSpec(value); - - checker.on( - ts.SyntaxKind.VariableStatement, - this.wrapCheckWithWhitelistingAndFixer( - (tc, n: ts.VariableStatement) => checkVarStmt(tc, n, matcher)), - ErrorCode.CONFORMANCE_PATTERN); - - checker.on( - ts.SyntaxKind.BinaryExpression, - this.wrapCheckWithWhitelistingAndFixer( - (tc, n: ts.BinaryExpression) => checkBinExpr(tc, n, matcher)), - ErrorCode.CONFORMANCE_PATTERN); - } - } -} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine_test.ts deleted file mode 100644 index d0fbee7794..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_read_engine_test.ts +++ /dev/null @@ -1,104 +0,0 @@ -import 'jasmine'; - -import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; -import {setDebug} from '../../util/ast_tools'; -import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; - -describe('BANNED_PROPERTY_READ', () => { - describe('simpler matcher tests', () => { - const config = { - errorMessage: 'do not read location.href', - kind: PatternKind.BANNED_PROPERTY_READ, - values: ['Location.prototype.href'] - }; - const rule = new ConformancePatternRule(config); - - setDebug(true); - - it('check property access from the RHS of an assignment', () => { - const source = [ - `var x;`, - `x = location.href;`, - ]; - const results = compileAndCheck(rule, ...source); - - expect(results).toHaveFailuresMatching({ - matchedCode: `x = location.href`, - messageText: 'do not read location.href' - }); - }); - - it('check property access from the LHS of an assignment', () => { - const source = [ - `location.href = 'abc';`, - ]; - const results = compileAndCheck(rule, ...source); - - expect(results).toHaveNoFailures(); - }); - - it('check property access from the LHS of a non-assignment binary operation', - () => { - const source = [ - `var x = (location.href == "abc");`, - ]; - const results = compileAndCheck(rule, ...source); - - expect(results).toHaveFailuresMatching({ - matchedCode: `location.href == "abc"`, - messageText: 'do not read location.href' - }); - }); - - it('check property access from the RHS of a non-assignment binary operation', - () => { - const source = [ - `var x = ("abc" == location.href);`, - ]; - const results = compileAndCheck(rule, ...source); - - expect(results).toHaveFailuresMatching({ - matchedCode: `"abc" == location.href`, - messageText: 'do not read location.href' - }); - }); - - it('check property read from variable initializations', () => { - const source = [ - `var x = location.href;`, - ]; - const results = compileAndCheck(rule, ...source); - - expect(results).toHaveFailuresMatching({ - matchedCode: `var x = location.href;`, - messageText: 'do not read location.href' - }); - }); - }); - - describe('advanced type property tests', () => { - const config = { - errorMessage: 'do not read window.location', - kind: PatternKind.BANNED_PROPERTY_READ, - // global variable `window` is of type `Window & typeof globalThis`, - // but we can only specify `Window` here. PropertyMatcher should be - // able to resolve intersection types by itself. See lib.dom.d.ts. - values: ['Window.prototype.location'] - }; - const rule = new ConformancePatternRule(config); - - it('check property read from variable initializations', () => { - const source = 'var l = window.location;'; - const results = compileAndCheck(rule, source); - - expect(results).toHaveFailuresMatching({ - matchedCode: 'var l = window.location;', - messageText: 'do not read window.location' - }); - }); - }); -}); - -beforeEach(() => { - jasmine.addMatchers(customMatchers); -}); From 65e77e26be675e6b4f37adf6998042ee33166542 Mon Sep 17 00:00:00 2001 From: TypeScript Team Date: Thu, 18 Jun 2020 12:52:32 -0700 Subject: [PATCH 0736/1134] `tsc_wrapped` contains an experimental integration with the Angular `NgTscPlugin`. This integration is not quite correct: the Angular plugin's `setupCompilation` step returns two important pieces of information that are currently ignored by `tsc_wrapped`: * `ignoreForDiagnostics`: a `Set` of files which should be skipped during the generation of diagnostics. Errors in these files should never be reported to the user or cause the build to fail. * `ignoreForEmit`: a `Set` of files which should not be emitted to JS. Emitting these isn't harmful, just expensive (and they're not declared outputs). This CL modifies `tsc_wrapped` to honor `ignoreForDiagnostics`. `ignoreForEmit` is unnecessary for this context as `tsc_wrapped` already limits the files it emits to the user's compilation inputs (and any Angular shims recognized by `isAngularFile`). PiperOrigin-RevId: 317161735 --- .../internal/tsc_wrapped/plugin_api.ts | 7 ++- .../internal/tsc_wrapped/tsc_wrapped.ts | 62 +++++++++++++++---- 2 files changed, 55 insertions(+), 14 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts index 2bcfa210e3..5dbf497d4d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/plugin_api.ts @@ -54,10 +54,13 @@ export interface EmitPlugin { */ wrapHost?(compilerHost: ts.CompilerHost, inputFiles: string[], options: ts.CompilerOptions): PluginCompilerHost; - setupCompilation(program: ts.Program, oldProgram?: ts.Program): void; + setupCompilation(program: ts.Program, oldProgram?: ts.Program): { + ignoreForDiagnostics: Set, + ignoreForEmit: Set + }; getNextProgram?(): ts.Program; - + /** * Allow plugins to contribute additional TypeScript CustomTransformers. * These can modify the TS AST, JS AST, or .d.ts output AST. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts index f17aebe92d..a18c04393f 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsc_wrapped/tsc_wrapped.ts @@ -54,9 +54,8 @@ function isCompilationTarget( */ export function gatherDiagnostics( options: ts.CompilerOptions, bazelOpts: BazelOptions, program: ts.Program, - disabledTsetseRules: string[], - plugins: DiagnosticPlugin[] = []): ts.Diagnostic[] { - + disabledTsetseRules: string[], plugins: DiagnosticPlugin[] = [], + ignoreForDiagnostics: Set = new Set()): ts.Diagnostic[] { const diagnostics: ts.Diagnostic[] = []; perfTrace.wrap('type checking', () => { if (!bazelOpts.typeCheck) { @@ -69,13 +68,14 @@ export function gatherDiagnostics( diagnostics.push(...program.getOptionsDiagnostics()); diagnostics.push(...program.getGlobalDiagnostics()); }); - let sourceFilesToCheck: ReadonlyArray; - if (bazelOpts.typeCheckDependencies) { - sourceFilesToCheck = program.getSourceFiles(); - } else { - sourceFilesToCheck = program.getSourceFiles().filter( - f => isCompilationTarget(bazelOpts, f)); - } + + // Check if `f` is a target for type-checking. + let isTypeCheckTarget = (f: ts.SourceFile) => + bazelOpts.typeCheckDependencies || isCompilationTarget(bazelOpts, f); + + let sourceFilesToCheck: ReadonlyArray = + program.getSourceFiles().filter( + f => isTypeCheckTarget(f) && !ignoreForDiagnostics.has(f)); for (const sf of sourceFilesToCheck) { perfTrace.wrap(`check ${sf.fileName}`, () => { diagnostics.push(...program.getSyntacticDiagnostics(sf)); @@ -366,8 +366,40 @@ export function createProgramAndEmit( after: [], afterDeclarations: [], }; + + let ignoreForDiagnostics = new Set(); + if (angularPlugin) { - angularPlugin.setupCompilation(program); + // The Angular plugin (via the `wrapHost` call above) inserts additional + // "shim" files into the `ts.Program`, beyond the user's .ts files. For + // proper operation, the plugin requires two modifications to the standard + // flow of TypeScript compilation, relating to which files are either + // type-checked or emitted. + // + // In tsc_wrapped, there is already a concept of which files should be + // emitted (which is calculated from the compilation inputs, as well as any + // paths that match expected Angular shims such as ngfactory files for those + // inputs). So the `ignoreForEmit` set produced by the plugin can be + // ignored here. + + const angularSetup = angularPlugin.setupCompilation(program); + + // Shims generated by the plugin do not benefit from normal type-checking, + // for a few reasons. + // 1) for emitted shims like ngfactory files, their proper contents are + // programmatically added via TypeScript transforms, so checking their + // initial contents is pointless and inefficient. + // 2) for non-emitted shims like the ngtypecheck files used in template + // type-checking, they are managed and checked internally via the plugin + // `getDiagnostics` method. Checking them as part of the normal + // diagnostics flow will at best produce spurious, duplicate errors that + // are not reported in the correct context, and at worst can produce + // incorrect errors. + // + // The `ignoreForDiagnostics` set informs tsc_wrapped which Angular shim + // files should be skipped when gathering diagnostics. + ignoreForDiagnostics = angularSetup.ignoreForDiagnostics; + transformers = angularPlugin.createTransformers(); } @@ -389,7 +421,8 @@ export function createProgramAndEmit( // messages refer to the original source. After any subsequent passes // (decorator downleveling or tsickle) we do not type check. let diagnostics = gatherDiagnostics( - options, bazelOpts, program, disabledTsetseRules, diagnosticPlugins); + options, bazelOpts, program, disabledTsetseRules, diagnosticPlugins, + ignoreForDiagnostics); if (!expectDiagnosticsWhitelist.length || expectDiagnosticsWhitelist.some(p => bazelOpts.target.startsWith(p))) { diagnostics = bazelDiagnostics.filterExpected( @@ -426,6 +459,11 @@ export function createProgramAndEmit( } as ts.SourceFile); } + // If the Angular plugin is in use, this list of files to emit should exclude + // any files defined in the `ignoreForEmit` set returned by the plugin. + // However limiting the outputs to the set of compilation target files (plus + // any Angular shims defined by `isAngularFile`) already has that effect, so + // `ignoreForEmit` does not need to be factored in here. const compilationTargets = program.getSourceFiles().filter( sf => isCompilationTarget(bazelOpts, sf) || isAngularFile(sf)); From 3f0dcca6169816aa34d1d891713dbf37c9655794 Mon Sep 17 00:00:00 2001 From: Jason Bedard Date: Tue, 30 Jun 2020 12:27:22 -0700 Subject: [PATCH 0737/1134] chore(examples): upgrade angular example to 10.0.2 and remove ngtsc patch --- examples/angular/package.json | 29 ++- .../@angular+compiler-cli+10.0.0-rc.6.patch | 12 - examples/angular/yarn.lock | 222 +++++++----------- 3 files changed, 98 insertions(+), 165 deletions(-) delete mode 100644 examples/angular/patches/@angular+compiler-cli+10.0.0-rc.6.patch diff --git a/examples/angular/package.json b/examples/angular/package.json index a91c528021..b74d8d2c64 100644 --- a/examples/angular/package.json +++ b/examples/angular/package.json @@ -8,16 +8,16 @@ "yarn": ">=1.9.2 <2.0.0" }, "dependencies": { - "@angular/animations": "10.0.0-rc.6", - "@angular/cdk": "10.0.0-rc.2", - "@angular/common": "10.0.0-rc.6", - "@angular/core": "10.0.0-rc.6", - "@angular/forms": "10.0.0-rc.6", - "@angular/material": "10.0.0-rc.2", - "@angular/platform-browser": "10.0.0-rc.6", - "@angular/platform-browser-dynamic": "10.0.0-rc.6", - "@angular/platform-server": "10.0.0-rc.6", - "@angular/router": "10.0.0-rc.6", + "@angular/animations": "10.0.2", + "@angular/cdk": "10.0.1", + "@angular/common": "10.0.2", + "@angular/core": "10.0.2", + "@angular/forms": "10.0.2", + "@angular/material": "10.0.1", + "@angular/platform-browser": "10.0.2", + "@angular/platform-browser-dynamic": "10.0.2", + "@angular/platform-server": "10.0.2", + "@angular/router": "10.0.2", "@ngrx/store": "9.2.0", "@nguniversal/express-engine": "^9.0.0", "date-fns": "1.30.1", @@ -27,9 +27,9 @@ "zone.js": "0.10.3" }, "devDependencies": { - "@angular/cli": "10.0.0-rc.4", - "@angular/compiler": "10.0.0-rc.6", - "@angular/compiler-cli": "10.0.0-rc.6", + "@angular/cli": "10.0.0", + "@angular/compiler": "10.0.2", + "@angular/compiler-cli": "10.0.2", "@babel/cli": "^7.6.0", "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", @@ -55,7 +55,6 @@ "karma-jasmine": "2.0.1", "karma-requirejs": "1.1.0", "karma-sourcemap-loader": "0.3.7", - "patch-package": "^6.2.2", "protractor": "^5.4.2", "requirejs": "2.3.6", "rollup": "^1.21.4", @@ -73,7 +72,7 @@ "e2e": "bazel test //e2e:all", "test": "bazel test //src/...", "benchmark": "ibazel-benchmark-runner //src:devserver src/app/hello-world/hello-world.component.ts --url=http://localhost:5432", - "postinstall": "patch-package && ngcc", + "postinstall": "ngcc", "generate": "node tools/generator/index.js", "generate:clean": "node tools/generator/index.js --clean" } diff --git a/examples/angular/patches/@angular+compiler-cli+10.0.0-rc.6.patch b/examples/angular/patches/@angular+compiler-cli+10.0.0-rc.6.patch deleted file mode 100644 index c9a485b79f..0000000000 --- a/examples/angular/patches/@angular+compiler-cli+10.0.0-rc.6.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/node_modules/@angular/compiler-cli/src/ngtsc/tsc_plugin.js b/node_modules/@angular/compiler-cli/src/ngtsc/tsc_plugin.js -index 1f8fde2..05e30bf 100755 ---- a/node_modules/@angular/compiler-cli/src/ngtsc/tsc_plugin.js -+++ b/node_modules/@angular/compiler-cli/src/ngtsc/tsc_plugin.js -@@ -54,6 +54,7 @@ - if (this.host === null || this.options === null) { - throw new Error('Lifecycle error: setupCompilation() before wrapHost().'); - } -+ this.host.postProgramCreationCleanup(); - var typeCheckStrategy = new augmented_program_1.ReusedProgramStrategy(program, this.host, this.options, this.host.shimExtensionPrefixes); - this._compiler = new core_1.NgCompiler(this.host, this.options, program, typeCheckStrategy, new incremental_1.PatchedProgramIncrementalBuildStrategy(), oldProgram, perf_1.NOOP_PERF_RECORDER); - return { diff --git a/examples/angular/yarn.lock b/examples/angular/yarn.lock index b52a94a229..73f5b73569 100644 --- a/examples/angular/yarn.lock +++ b/examples/angular/yarn.lock @@ -2,12 +2,12 @@ # yarn lockfile v1 -"@angular-devkit/architect@0.1000.0-rc.4": - version "0.1000.0-rc.4" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1000.0-rc.4.tgz#46424ae5db7d9a25603b8596bb3af95ed90a6048" - integrity sha512-TbMPHG+PS0jNtXM8kgJ4RiVnvlxgiYOQ12s8cMofPMG8QhOU+IULkf1fq4ynV3+sdXJMtY8TMlFTCAgFsacoJQ== +"@angular-devkit/architect@0.1000.0": + version "0.1000.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1000.0.tgz#d06639f3834bc0031aa2f8cce9cb7d490c12ae37" + integrity sha512-luzBYe7t994ebq6xIfYJudxOkMBO0bywafk6sQqb+bOaBQAran4orF1R/zEx6f8TJzEoXELjUvxm/ePSqZdpKg== dependencies: - "@angular-devkit/core" "10.0.0-rc.4" + "@angular-devkit/core" "10.0.0" rxjs "6.5.5" "@angular-devkit/architect@^0.901.7": @@ -18,10 +18,10 @@ "@angular-devkit/core" "9.1.7" rxjs "6.5.4" -"@angular-devkit/core@10.0.0-rc.4": - version "10.0.0-rc.4" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.0.0-rc.4.tgz#6e551f037614dfac4d9d38c0305c25de0df24a54" - integrity sha512-zrD5sMUy8URkWgu3J+vftHbuBF1z33wy3K+z4GFSS8+M0Jh+WOLJGqOnVGY0qmmisfQB/1hMRCdKxRGYCiMGbw== +"@angular-devkit/core@10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.0.0.tgz#9f6378a295a559d1a0bf12af200c0c9d59428a65" + integrity sha512-IvX9IMaCjDkN9vDVnYcgWbSBinlUUb7jdFhDGeTtK6rGSnjX1GoLvWneVI2hoccS07fPbnfMoYXBoZLwVxiIxw== dependencies: ajv "6.12.2" fast-json-stable-stringify "2.1.0" @@ -40,41 +40,41 @@ rxjs "6.5.4" source-map "0.7.3" -"@angular-devkit/schematics@10.0.0-rc.4": - version "10.0.0-rc.4" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-10.0.0-rc.4.tgz#8352faaf7cfe6fbc89cbcd7139291e64f2170df2" - integrity sha512-CbVP3i+JQ13AKSkmvsRE7DsFA4P2lyu3uO+t+w6S+A/hQ6zKy4aHLdFDH00NGXbhpjyOiNiUEKNIlHYtaTDTXA== +"@angular-devkit/schematics@10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-10.0.0.tgz#6ba61092621c25fef78e29c700a7fb3f523b6cc0" + integrity sha512-FJ/dY18M+cnAT9RkVjVRJ0PMFZci3ok0WoOosW25Fk68jwNSbGCeF8k8NcD6YE60+CfF4/0LxQWgFagr/wdEhw== dependencies: - "@angular-devkit/core" "10.0.0-rc.4" + "@angular-devkit/core" "10.0.0" ora "4.0.4" rxjs "6.5.5" -"@angular/animations@10.0.0-rc.6": - version "10.0.0-rc.6" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-10.0.0-rc.6.tgz#a3f32174ebbe2704ab11703efe8bf8f6cece9c34" - integrity sha512-q+XCv9SXzCXeZFXCSaamwxrr2plGUPl7nUDfCy1AwPyynoOeKGCoEuVcJx9D2c1UHZ2lpkNBWc/4O9wIWkistQ== +"@angular/animations@10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-10.0.2.tgz#4af6983800c7e6fbb402f7183fc547ae480cb534" + integrity sha512-3fMR574KnaeAon7ZlwYCB2qkUoZ255Y2KwU6Z/ki37U66QZc8XMqf/d4oUiTZgLsJG4a5Whse0IX8Jz5/HAvQQ== dependencies: tslib "^2.0.0" -"@angular/cdk@10.0.0-rc.2": - version "10.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-10.0.0-rc.2.tgz#a4064d1090cd881e733ba2a2917de21d272373b5" - integrity sha512-9kJwAattGD8a5riKlKjOsG5IHq3zTb3qy+gPgAgF/CBk896NNVMCl/SOS9BlK1oX9jYGKaX3eQWOyEYe3aYuNg== +"@angular/cdk@10.0.1": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-10.0.1.tgz#8e10317cd6fee4d9f8a3794998629496fb60e68b" + integrity sha512-tEgaTDQplptbOf4cHHdVScH0h5QNvkWDhabAWpWaT4/dVXEsp+p2E9Pzkemesi/gNmUIetVjGaicX5VqsijZSQ== dependencies: tslib "^2.0.0" optionalDependencies: parse5 "^5.0.0" -"@angular/cli@10.0.0-rc.4": - version "10.0.0-rc.4" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-10.0.0-rc.4.tgz#81628db89946168557390e18696b206cf2166455" - integrity sha512-qsaA/TAZOIG3DJG+t3OOSFBtL4OUMytwHWh/TbsrHXLqpfzMpMGTjtgHppu1B4Q/ZlvQP5SeabR0pLjdxErYOA== +"@angular/cli@10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-10.0.0.tgz#5137aeb89d5d237d09f7c6b37437b0a6e65e224a" + integrity sha512-I+2cltQCmThgrnHwsG5AX0hQ9z6rK/8ysRWWeiJXHtEtqupW9eNzXX1QfXWxWB3o6oIKgijvnLlp04BUlWCyXA== dependencies: - "@angular-devkit/architect" "0.1000.0-rc.4" - "@angular-devkit/core" "10.0.0-rc.4" - "@angular-devkit/schematics" "10.0.0-rc.4" - "@schematics/angular" "10.0.0-rc.4" - "@schematics/update" "0.1000.0-rc.4" + "@angular-devkit/architect" "0.1000.0" + "@angular-devkit/core" "10.0.0" + "@angular-devkit/schematics" "10.0.0" + "@schematics/angular" "10.0.0" + "@schematics/update" "0.1000.0" "@yarnpkg/lockfile" "1.1.0" ansi-colors "4.1.1" debug "4.1.1" @@ -91,17 +91,17 @@ universal-analytics "0.4.20" uuid "8.1.0" -"@angular/common@10.0.0-rc.6": - version "10.0.0-rc.6" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-10.0.0-rc.6.tgz#b8c8641626680793ee451258730b6193b97f4308" - integrity sha512-/Xu09O0H3UKEjgB23FRzPeOe3ygoSKCSeXB0ECe/h0aCBdY37pjZIlGqMkOg0MwPow/FEcEY7zzZ2/fZTW+AkA== +"@angular/common@10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-10.0.2.tgz#8d5422b3a3e1bc405606476b90b0caffc9c9155a" + integrity sha512-zpNB2XD6jinXZjfihoO5Q1Yg7urfpZTt/fitdmwFHCcQ/1qZ9T2BVh8+VqVRkh6Pjxmtvu0uPnJ1a/aZ5f9r9A== dependencies: tslib "^2.0.0" -"@angular/compiler-cli@10.0.0-rc.6": - version "10.0.0-rc.6" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-10.0.0-rc.6.tgz#3aaeaa453003636f1cfeb1929749219b4e704bee" - integrity sha512-W3RZbi2x/iNPGUzIkOte2jnfczbzgbVVkIxfBNrI5h+8cuWAnuSJzp2ms75UnHHQQqG48a2xRO71wGHvOOPoJQ== +"@angular/compiler-cli@10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-10.0.2.tgz#8f178a03989e0018890c52807df9e3e03faaf47a" + integrity sha512-LGX86k1hOyaw5aPCjFfoLuPhVLKMENOdCBeNBzZB+H2CUGHfv8OWFB1EzjZO1N07VGR7JoMx9ZWSP7ornhuS4Q== dependencies: canonical-path "1.0.0" chokidar "^3.0.0" @@ -117,61 +117,61 @@ tslib "^2.0.0" yargs "15.3.0" -"@angular/compiler@10.0.0-rc.6": - version "10.0.0-rc.6" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-10.0.0-rc.6.tgz#0c00319654bc9320897468a45ee95d80bb121b21" - integrity sha512-3XfoBCmNiDewO8y3uW/N+7v23FGoC1GGl8MHewPeRuOQVsDYcEL0xKkCco5GL+f83Bp80o79N7oog2vbiNrwSg== +"@angular/compiler@10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-10.0.2.tgz#1056af84ad76763f03228aa3a60b63a5cd775944" + integrity sha512-TNE5ESDlRCVneb/K62HOEgLpxuZZTlw8RcmOy5vt3SngEVc576OE/aYsEA6MCwTlqj16GLSS3jGm9HBJcBKUVw== dependencies: tslib "^2.0.0" -"@angular/core@10.0.0-rc.6": - version "10.0.0-rc.6" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-10.0.0-rc.6.tgz#7858cb81affb377153bc6715e08861d333e1b14d" - integrity sha512-kTjvoQMqNw4Igt2lI7swvqujR6KOHeELVEV09cvczosUmMH2uKeuz9IPsH+0aNZdX1L1C9JvkBGyA7McoL2zUQ== +"@angular/core@10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-10.0.2.tgz#d2d2c2dd4a9e80dcccc63c274f13ab7397ee5a3b" + integrity sha512-r4M1D2NOdkmmFyvYLHRYSIBKTGNXQarZHDZcm5oEq2eTsRVe2u9MYIeOpHKeVQCQK7XKQVB13IZQP3XpUvljFg== dependencies: tslib "^2.0.0" -"@angular/forms@10.0.0-rc.6": - version "10.0.0-rc.6" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-10.0.0-rc.6.tgz#be5c919690c00dcb389f80d4a5db2385f57188a3" - integrity sha512-QVjyVRx821Qf2ENq6BEzUVQuyjg9nIHzXaYGbYiqteqFzUvjYo87MV71rsfErwKP0PJ2EOhSTJ5Cd+UR7bsNcg== +"@angular/forms@10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-10.0.2.tgz#fa443f73156640664a9e018aaeb42f85d6d20fcb" + integrity sha512-qnfApb5Q58SFdl8za8i6ijvP0UfVGxxTtIVnf8czVU5Jz5/KYDbPeChVw/aPl3hfXq8jt0Q6Yl99aAm/BNyhpQ== dependencies: tslib "^2.0.0" -"@angular/material@10.0.0-rc.2": - version "10.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@angular/material/-/material-10.0.0-rc.2.tgz#fa0e4a7899bc20c8563fea037d50aedebe243968" - integrity sha512-knE7t3z6Y9iDnXLX2JqsWwm1UnJHoLkZECqUJ7oh8k5asOnaPbbtLnrjqEe9QUh5Hjk9jKVYkEQdRosIIJSJ9A== +"@angular/material@10.0.1": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@angular/material/-/material-10.0.1.tgz#f59988499d20ee4ab93292d7e9a9d16ce24839f0" + integrity sha512-4xGIupOiPbyYG/tTbVhgjATRZSRf+Xj2FGkX3csSlIOvhrFtN1B9gTlcbOjzWHPpWTFChZALzMXA/841KA9QqA== dependencies: tslib "^2.0.0" -"@angular/platform-browser-dynamic@10.0.0-rc.6": - version "10.0.0-rc.6" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.0-rc.6.tgz#7089e8755640b1097cefd15ebfe1b201252bf4fe" - integrity sha512-+f7uOk0NlH5Wt0WShbL/XJUgJBisbBknWDTSoEc+qyeqfUGiwFa88b791v0Al/tt7aB6c0Dsbe2T3VYi6Gkwrg== +"@angular/platform-browser-dynamic@10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.2.tgz#b752e2110e5a4316087ce7922227b453e423c144" + integrity sha512-R1rt1/Ynm0DHgzMBcduCPoDg2y3MrYZVgT+N0DLobr2nCaVD74vGsJBVCRv7/m1sdCxyhPlOvq8Bm5sRauw2fw== dependencies: tslib "^2.0.0" -"@angular/platform-browser@10.0.0-rc.6": - version "10.0.0-rc.6" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-10.0.0-rc.6.tgz#30f7e078f0bea0534d2c223aed2203068d616019" - integrity sha512-xClpudzXUaqFh587WqS5CrUVEquof/2KxDiyLMN8b5EYSd2zFj6t/u9qqhEA37i3c/aGoO2N3AKOMCCElfWJ4g== +"@angular/platform-browser@10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-10.0.2.tgz#518db3bdff9692cc4ec0c871f3305218da66aebd" + integrity sha512-FLS3fYSuWvrDc7PiVCvs4joWZZxDe9+alJi90Sub1oBS/EnxmZpkS0Gr7zQv4MjAvVhNCVoTzL3CaV/SIoZqaw== dependencies: tslib "^2.0.0" -"@angular/platform-server@10.0.0-rc.6": - version "10.0.0-rc.6" - resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-10.0.0-rc.6.tgz#8a8f74d3dd6917f166daf2b87316f820de3af4b1" - integrity sha512-xLfb9HzGpS6qibB93w8yjwxLf1qFfy8+3zgIOMlp+5wcmO7b4CPvb+j/TeDD0/0rxuBxeUL1zP85Oxtf31Ym0Q== +"@angular/platform-server@10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-10.0.2.tgz#f375af59bcc44212a3fb8e3aa5df662794ab4265" + integrity sha512-9kFlVYc+BhaMz48m0blszljdoDe2WK5OisWL2Uiw23acLyYZZovhnFBEJbAje9htB/mXOke6MDXiz98bPHH9LQ== dependencies: domino "^2.1.2" tslib "^2.0.0" xhr2 "^0.2.0" -"@angular/router@10.0.0-rc.6": - version "10.0.0-rc.6" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-10.0.0-rc.6.tgz#6fab8d18a268f70ad18145fcba8e9236ee2aa818" - integrity sha512-HEjqxGEZUvwTrSMR93tIw2iZn7fbmOoDj9JsPDGMevmKlQZBESxWv4et3gCjRwqrln10/bt1q2ssJfpFnQRNng== +"@angular/router@10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-10.0.2.tgz#6514540f4f3179d8be3fd23b1f4a0dd02801a314" + integrity sha512-IcA3W+r5T0NC8TM4J9F0VOxG0wr7nJOSef6Qek6utZd6ByLlXxOhBrPIC5Ou+QNZeg9OuI2FBt6coea9jgmNOA== dependencies: tslib "^2.0.0" @@ -973,21 +973,21 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= -"@schematics/angular@10.0.0-rc.4": - version "10.0.0-rc.4" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-10.0.0-rc.4.tgz#edb18cd1a67feaef45be1bd664dbba22037e570f" - integrity sha512-hDqCha5FaqFl5PPTlYcRdeCyxXBR2UebfXGQxDD63VpNIugcizHOUDndq/4RW/d2r662r16TaFq8OyiFI7J9Lw== +"@schematics/angular@10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-10.0.0.tgz#d74ec2207f1beb52c9e91c300495adb4413ed32a" + integrity sha512-m7Pxz4guAMbe7NASKCPUNxvUX/LeieDjGsXwIt09tVE4dEi9yqJP5zq8kOnZEiLKKflP7GoB65RNex4dTxsydw== dependencies: - "@angular-devkit/core" "10.0.0-rc.4" - "@angular-devkit/schematics" "10.0.0-rc.4" + "@angular-devkit/core" "10.0.0" + "@angular-devkit/schematics" "10.0.0" -"@schematics/update@0.1000.0-rc.4": - version "0.1000.0-rc.4" - resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.1000.0-rc.4.tgz#75915cdf4e7537f8c49f39bb677cffb832e1d33b" - integrity sha512-QSTycSetXtkFSDZ7XXRz7CX2i2LHG2XZKOlYFQhFKJGXuAI+mw9TumA6oWLdUOXwiLoQoDKdctV0kn81+Cojag== +"@schematics/update@0.1000.0": + version "0.1000.0" + resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.1000.0.tgz#f9f92cd8cb4da3970216782023f35db6672559ff" + integrity sha512-snjz7sQCOn4Xi66XQREXZx9K6R/vAnUfdyO5nXekls8+E+MIowlP+gqHM0whi8qJDwCLd9maYmeVsD6XZaGImQ== dependencies: - "@angular-devkit/core" "10.0.0-rc.4" - "@angular-devkit/schematics" "10.0.0-rc.4" + "@angular-devkit/core" "10.0.0" + "@angular-devkit/schematics" "10.0.0" "@yarnpkg/lockfile" "1.1.0" ini "1.3.5" npm-package-arg "^8.0.0" @@ -1048,7 +1048,7 @@ resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.16.tgz#50a4755f8e33edacd9c406729e9b930d2451902a" integrity sha512-lMC2G0ItF2xv4UCiwbJGbnJlIuUixHrioOhNGHSCsYCJ8l4t9hMCUimCytvFv7qy6AfSzRxhRHoGa+UqaqwyeA== -"@yarnpkg/lockfile@1.1.0", "@yarnpkg/lockfile@^1.1.0": +"@yarnpkg/lockfile@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== @@ -1839,11 +1839,6 @@ ci-info@^1.5.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - cjson@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/cjson/-/cjson-0.3.3.tgz#a92d9c786e5bf9b930806329ee05d5d3261b4afa" @@ -2994,14 +2989,6 @@ find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-yarn-workspace-root@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" - integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== - dependencies: - fs-extra "^4.0.3" - micromatch "^3.1.4" - firebase-tools@7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-7.1.0.tgz#dcde117e70d021d163616e8bcd02abead5d5c1e1" @@ -3161,15 +3148,6 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -3799,13 +3777,6 @@ is-ci@^1.0.10: dependencies: ci-info "^1.5.0" -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.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" @@ -4342,13 +4313,6 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== -klaw-sync@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" - integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== - dependencies: - graceful-fs "^4.1.11" - klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" @@ -5393,24 +5357,6 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -patch-package@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.2.2.tgz#71d170d650c65c26556f0d0fbbb48d92b6cc5f39" - integrity sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^2.4.2" - cross-spawn "^6.0.5" - find-yarn-workspace-root "^1.2.1" - fs-extra "^7.0.1" - is-ci "^2.0.0" - klaw-sync "^6.0.0" - minimist "^1.2.0" - rimraf "^2.6.3" - semver "^5.6.0" - slash "^2.0.0" - tmp "^0.0.33" - path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" From f34bf1b5bf3e6cfe22268aefc45f3fdda7816920 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Mon, 6 Jul 2020 15:43:46 -0700 Subject: [PATCH 0738/1134] docs: update docs for release --- docs/Built-ins.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/docs/Built-ins.md b/docs/Built-ins.md index 50976cdcb8..db25d00d66 100755 --- a/docs/Built-ins.md +++ b/docs/Built-ins.md @@ -462,8 +462,15 @@ your own test runner. For example, the `ts-api-guardian` library has a way to assert the public API of a TypeScript program, and uses `nodejs_test` here: https://github.com/angular/angular/blob/master/tools/ts-api-guardian/index.bzl -If you just want to run a standard test using a test runner like Karma or Jasmine, -use the specific rules for those test runners, e.g. `jasmine_node_test`. +If you just want to run a standard test using a test runner from npm, use the generated +*_test target created by npm_install/yarn_install, such as `mocha_test`. +Some test runners like Karma and Jasmine have custom rules with added features, e.g. `jasmine_node_test`. + +Bazel always runs tests with a working directory set to your workspace root. +If your test needs to run in a different directory, you can write a `process.chdir` helper script +and invoke it before the test with a `--require` argument, like +`templated_args = ["--node_options=--require=./$(rootpath chdir.js)"]`. +See rules_nodejs/internal/node/test/chdir for an example. To debug a Node.js test, we recommend saving a group of flags together in a "config". Put this in your `tools/bazel.rc` so it's shared with your team: @@ -1265,6 +1272,12 @@ It must produce outputs. If you just want to run a program with `bazel run`, use This is like a genrule() except that it runs our launcher script that first links the node_modules tree before running the program. +Bazel always runs actions with a working directory set to your workspace root. +If your tool needs to run in a different directory, you can write a `process.chdir` helper script +and invoke it before the action with a `--require` argument, like +`args = ["--node_options=--require=./$(execpath chdir.js)"]` +See rules_nodejs/internal/node/test/chdir for an example. + This is a great candidate to wrap with a macro, as documented: https://docs.bazel.build/versions/master/skylark/macros.html#full-example From 4d761b57e94437be5d39f5dd8cd85af9ea118b09 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Mon, 6 Jul 2020 15:47:00 -0700 Subject: [PATCH 0739/1134] chore(release): 2.0.0-rc.1 --- CHANGELOG.md | 22 +++++++++++++++++++ docs/install.md | 2 +- e2e/bazel_managed_deps/WORKSPACE | 4 ++-- e2e/fine_grained_symlinks/WORKSPACE | 4 ++-- e2e/jasmine/WORKSPACE | 4 ++-- .../WORKSPACE | 4 ++-- e2e/node_loader_preserve_symlinks/WORKSPACE | 4 ++-- e2e/packages/WORKSPACE | 4 ++-- e2e/ts_devserver/WORKSPACE | 4 ++-- e2e/typescript/WORKSPACE | 4 ++-- e2e/webapp/WORKSPACE | 4 ++-- examples/angular/WORKSPACE | 4 ++-- examples/angular_bazel_architect/WORKSPACE | 4 ++-- examples/angular_view_engine/WORKSPACE | 4 ++-- examples/app/WORKSPACE | 4 ++-- examples/closure/WORKSPACE | 4 ++-- examples/cypress/WORKSPACE | 4 ++-- examples/jest/WORKSPACE | 4 ++-- examples/kotlin/WORKSPACE | 4 ++-- examples/nestjs/WORKSPACE | 4 ++-- examples/parcel/WORKSPACE | 4 ++-- examples/protocol_buffers/WORKSPACE | 4 ++-- examples/react_webpack/WORKSPACE | 4 ++-- examples/vendored_node/WORKSPACE | 4 ++-- examples/vendored_node_and_yarn/WORKSPACE | 4 ++-- examples/web_testing/WORKSPACE | 4 ++-- examples/webapp/WORKSPACE | 4 ++-- examples/worker/WORKSPACE | 4 ++-- package.json | 2 +- packages/create/index.js | 2 +- 30 files changed, 77 insertions(+), 55 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 603d66077f..4e3918e857 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,25 @@ +# [2.0.0-rc.1](https://github.com/bazelbuild/rules_nodejs/compare/2.0.0-rc.0...2.0.0-rc.1) (2020-07-06) + + +### Bug Fixes + +* **builtin:** fix linker bug when there are no third-party modules ([becd9bc](https://github.com/bazelbuild/rules_nodejs/commit/becd9bc)) +* **builtin:** fixes nodejs_binary to collect JSNamedModuleInfo ([4f95cc4](https://github.com/bazelbuild/rules_nodejs/commit/4f95cc4)), closes [#1998](https://github.com/bazelbuild/rules_nodejs/issues/1998) +* **builtin:** linker silently not generating expected links in windows ([2979fad](https://github.com/bazelbuild/rules_nodejs/commit/2979fad)) +* **typescript:** add .proto files from npm deps to inputs of ts_library ([#1991](https://github.com/bazelbuild/rules_nodejs/issues/1991)) ([c1d4885](https://github.com/bazelbuild/rules_nodejs/commit/c1d4885)) +* **typescript:** add json to ts_project DefaultInfo, fix [#1988](https://github.com/bazelbuild/rules_nodejs/issues/1988) ([f6fa264](https://github.com/bazelbuild/rules_nodejs/commit/f6fa264)) +* **typescript:** Exclude .json from _out_paths ([91d81b3](https://github.com/bazelbuild/rules_nodejs/commit/91d81b3)) +* allow multiple run_node calls to be made from the same rule context ([48bb9cc](https://github.com/bazelbuild/rules_nodejs/commit/48bb9cc)) + + +### Features + +* add support for capturing and overriding the exit code within run_node ([#1990](https://github.com/bazelbuild/rules_nodejs/issues/1990)) ([cbdd3b0](https://github.com/bazelbuild/rules_nodejs/commit/cbdd3b0)) +* **cypress:** add cypress_web_test rule and @bazel/cypress package ([3bac870](https://github.com/bazelbuild/rules_nodejs/commit/3bac870)) +* **typescript:** add OutputGroupInfo to ts_project with type definitions ([d660ca1](https://github.com/bazelbuild/rules_nodejs/commit/d660ca1)), closes [#1978](https://github.com/bazelbuild/rules_nodejs/issues/1978) + + + # [2.0.0-rc.0](https://github.com/bazelbuild/rules_nodejs/compare/1.6.0...2.0.0-rc.0) (2020-06-23) diff --git a/docs/install.md b/docs/install.md index 1e4d06457d..720342265c 100644 --- a/docs/install.md +++ b/docs/install.md @@ -31,7 +31,7 @@ containing: load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], ) diff --git a/e2e/bazel_managed_deps/WORKSPACE b/e2e/bazel_managed_deps/WORKSPACE index 1aee5470bf..cd03c62e9c 100644 --- a/e2e/bazel_managed_deps/WORKSPACE +++ b/e2e/bazel_managed_deps/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/fine_grained_symlinks/WORKSPACE b/e2e/fine_grained_symlinks/WORKSPACE index 10a7a4a0be..e298411f9c 100644 --- a/e2e/fine_grained_symlinks/WORKSPACE +++ b/e2e/fine_grained_symlinks/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") diff --git a/e2e/jasmine/WORKSPACE b/e2e/jasmine/WORKSPACE index bbe2512466..27997b9ccc 100644 --- a/e2e/jasmine/WORKSPACE +++ b/e2e/jasmine/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/node_loader_no_preserve_symlinks/WORKSPACE b/e2e/node_loader_no_preserve_symlinks/WORKSPACE index 2deae64144..0259e49450 100644 --- a/e2e/node_loader_no_preserve_symlinks/WORKSPACE +++ b/e2e/node_loader_no_preserve_symlinks/WORKSPACE @@ -9,8 +9,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") diff --git a/e2e/node_loader_preserve_symlinks/WORKSPACE b/e2e/node_loader_preserve_symlinks/WORKSPACE index adefea9534..48d58ce18b 100644 --- a/e2e/node_loader_preserve_symlinks/WORKSPACE +++ b/e2e/node_loader_preserve_symlinks/WORKSPACE @@ -9,8 +9,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/packages/WORKSPACE b/e2e/packages/WORKSPACE index 73612de0ad..54f093b655 100644 --- a/e2e/packages/WORKSPACE +++ b/e2e/packages/WORKSPACE @@ -4,8 +4,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "check_rules_nodejs_version", "node_repositories", "npm_install", "yarn_install") diff --git a/e2e/ts_devserver/WORKSPACE b/e2e/ts_devserver/WORKSPACE index b23c385d5f..2050f2a4f9 100644 --- a/e2e/ts_devserver/WORKSPACE +++ b/e2e/ts_devserver/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/typescript/WORKSPACE b/e2e/typescript/WORKSPACE index 1fe5dd2f0f..5ad9a770ae 100644 --- a/e2e/typescript/WORKSPACE +++ b/e2e/typescript/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/webapp/WORKSPACE b/e2e/webapp/WORKSPACE index 1873f698ed..45314bb92c 100644 --- a/e2e/webapp/WORKSPACE +++ b/e2e/webapp/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/angular/WORKSPACE b/examples/angular/WORKSPACE index a8721abc61..cdeaa26749 100644 --- a/examples/angular/WORKSPACE +++ b/examples/angular/WORKSPACE @@ -16,8 +16,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch rules_nodejs so we can install our npm dependencies http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) # Fetch sass rules for compiling sass files diff --git a/examples/angular_bazel_architect/WORKSPACE b/examples/angular_bazel_architect/WORKSPACE index a9de76cc01..23b185bc7c 100644 --- a/examples/angular_bazel_architect/WORKSPACE +++ b/examples/angular_bazel_architect/WORKSPACE @@ -12,8 +12,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) # The yarn_install rule runs yarn anytime the package.json or yarn.lock file changes. diff --git a/examples/angular_view_engine/WORKSPACE b/examples/angular_view_engine/WORKSPACE index 573c9f275e..a310167ebd 100644 --- a/examples/angular_view_engine/WORKSPACE +++ b/examples/angular_view_engine/WORKSPACE @@ -16,8 +16,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch rules_nodejs so we can install our npm dependencies http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) # Fetch sass rules for compiling sass files diff --git a/examples/app/WORKSPACE b/examples/app/WORKSPACE index ed0bcd42a7..f737734cef 100644 --- a/examples/app/WORKSPACE +++ b/examples/app/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/closure/WORKSPACE b/examples/closure/WORKSPACE index 366f8e4bb0..6b50cb8e51 100644 --- a/examples/closure/WORKSPACE +++ b/examples/closure/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/cypress/WORKSPACE b/examples/cypress/WORKSPACE index 4fe72741cb..763a3350f0 100644 --- a/examples/cypress/WORKSPACE +++ b/examples/cypress/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "84abf7ac4234a70924628baa9a73a5a5cbad944c4358cf9abdb4aab29c9a5b77", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/1.7.0/rules_nodejs-1.7.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/jest/WORKSPACE b/examples/jest/WORKSPACE index 462eb5152b..2ed27949dd 100644 --- a/examples/jest/WORKSPACE +++ b/examples/jest/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/kotlin/WORKSPACE b/examples/kotlin/WORKSPACE index 2221836214..6da5938e55 100644 --- a/examples/kotlin/WORKSPACE +++ b/examples/kotlin/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) # Install external npm dependencies diff --git a/examples/nestjs/WORKSPACE b/examples/nestjs/WORKSPACE index 6da8915be8..71579804e6 100644 --- a/examples/nestjs/WORKSPACE +++ b/examples/nestjs/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/parcel/WORKSPACE b/examples/parcel/WORKSPACE index 8f2208ed91..d80a8daa4a 100644 --- a/examples/parcel/WORKSPACE +++ b/examples/parcel/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "npm_install") diff --git a/examples/protocol_buffers/WORKSPACE b/examples/protocol_buffers/WORKSPACE index bc02ae5ff0..a53e931431 100644 --- a/examples/protocol_buffers/WORKSPACE +++ b/examples/protocol_buffers/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) http_archive( diff --git a/examples/react_webpack/WORKSPACE b/examples/react_webpack/WORKSPACE index dc36d8a10c..d0fef6fcc7 100644 --- a/examples/react_webpack/WORKSPACE +++ b/examples/react_webpack/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/vendored_node/WORKSPACE b/examples/vendored_node/WORKSPACE index c6878a6725..761f08cb87 100644 --- a/examples/vendored_node/WORKSPACE +++ b/examples/vendored_node/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) http_archive( diff --git a/examples/vendored_node_and_yarn/WORKSPACE b/examples/vendored_node_and_yarn/WORKSPACE index 1c009599ab..efd407acfe 100644 --- a/examples/vendored_node_and_yarn/WORKSPACE +++ b/examples/vendored_node_and_yarn/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) http_archive( diff --git a/examples/web_testing/WORKSPACE b/examples/web_testing/WORKSPACE index e32a48118b..8e9561eef3 100644 --- a/examples/web_testing/WORKSPACE +++ b/examples/web_testing/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/webapp/WORKSPACE b/examples/webapp/WORKSPACE index 7d71eadd67..5f9e2c359e 100644 --- a/examples/webapp/WORKSPACE +++ b/examples/webapp/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/worker/WORKSPACE b/examples/worker/WORKSPACE index be839a6edb..37b73961a8 100644 --- a/examples/worker/WORKSPACE +++ b/examples/worker/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/package.json b/package.json index 580df9db00..7803b80ee3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@bazel/javascript", "description": "Build JavaScript with Bazel", - "version": "2.0.0-rc.0", + "version": "2.0.0-rc.1", "keywords": [ "javascript", "bazel" diff --git a/packages/create/index.js b/packages/create/index.js index 5c1e824134..d2fc3901c5 100644 --- a/packages/create/index.js +++ b/packages/create/index.js @@ -157,7 +157,7 @@ workspace( load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "790af2f3739871fedfb5721263e145e6ca6559c3c90bcaf6f3482a165d411827", + sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], ) From a9c6ef19dcaa28a03cb1be79e62479c0938ec984 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Mon, 6 Jul 2020 16:25:38 -0700 Subject: [PATCH 0740/1134] chore: update lock files for release --- e2e/bazel_managed_deps/package.json | 2 +- e2e/bazel_managed_deps/yarn.lock | 8 +- e2e/jasmine/package.json | 2 +- e2e/jasmine/yarn.lock | 8 +- e2e/ts_devserver/package.json | 4 +- e2e/ts_devserver/yarn.lock | 18 ++--- e2e/typescript/package.json | 4 +- e2e/typescript/yarn.lock | 16 ++-- e2e/webapp/package.json | 4 +- e2e/webapp/yarn.lock | 16 ++-- examples/angular/package.json | 12 +-- examples/angular/yarn.lock | 54 +++++++------- examples/angular_view_engine/package.json | 10 +-- examples/angular_view_engine/yarn.lock | 46 ++++++------ examples/app/package.json | 8 +- examples/app/yarn.lock | 38 +++++----- examples/cypress/package.json | 10 +-- examples/cypress/yarn.lock | 12 ++- examples/kotlin/package-lock.json | 78 +++++++++++++++----- examples/kotlin/package.json | 6 +- examples/nestjs/package.json | 4 +- examples/nestjs/yarn.lock | 16 ++-- examples/protocol_buffers/package.json | 12 +-- examples/protocol_buffers/yarn.lock | 56 +++++++------- examples/react_webpack/package.json | 2 +- examples/react_webpack/yarn.lock | 8 +- examples/vendored_node/package-lock.json | 66 ++++++++++++++--- examples/vendored_node/package.json | 2 +- examples/vendored_node_and_yarn/package.json | 2 +- examples/vendored_node_and_yarn/yarn.lock | 8 +- examples/web_testing/package.json | 4 +- examples/web_testing/yarn.lock | 16 ++-- examples/webapp/package.json | 8 +- examples/webapp/yarn.lock | 38 +++++----- examples/worker/package.json | 2 +- examples/worker/yarn.lock | 8 +- 36 files changed, 348 insertions(+), 260 deletions(-) diff --git a/e2e/bazel_managed_deps/package.json b/e2e/bazel_managed_deps/package.json index 36e55cda7d..4ac44d5070 100644 --- a/e2e/bazel_managed_deps/package.json +++ b/e2e/bazel_managed_deps/package.json @@ -1,7 +1,7 @@ { "description": "runtime dependencies for bazel_managed_deps example", "devDependencies": { - "@bazel/jasmine": "^2.0.0-rc.0", + "@bazel/jasmine": "^2.0.0-rc.1", "jasmine": "^3.5.0", "typescript": "^3.0.1" }, diff --git a/e2e/bazel_managed_deps/yarn.lock b/e2e/bazel_managed_deps/yarn.lock index 4bcea489e6..7d422c3a23 100644 --- a/e2e/bazel_managed_deps/yarn.lock +++ b/e2e/bazel_managed_deps/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.0.tgz#4dbf419a8332ec05862302a64546c21f2a7bc467" - integrity sha512-A/3ypUXGs3i9VgbI26xosygh/OhJlNlK+Mkhd2UVIAuzBVVzQbf+Eo+F/iqB2AJTaIA9rm/YJoCfFFeQvHyO5w== +"@bazel/jasmine@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.1.tgz#6031872e35b29774209105b5c58e54b2a74cdb75" + integrity sha512-xQdwUvM0CYMxC8iZCLtvOd2DO02Wvl37x1Go7pKpLMyhy7wBM3JM4bsIZLo9Idwf9T5VuCOzXUAPvb0xmIA6sQ== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/e2e/jasmine/package.json b/e2e/jasmine/package.json index 4af25fa76b..c009ef84e4 100644 --- a/e2e/jasmine/package.json +++ b/e2e/jasmine/package.json @@ -1,7 +1,7 @@ { "name": "e2e-jasmine", "dependencies": { - "@bazel/jasmine": "^2.0.0-rc.0", + "@bazel/jasmine": "^2.0.0-rc.1", "zone.js": "0.8.29" }, "//": "Include an incompatible jasmine as a devDependency to verify that jasmine_node_test works regardless", diff --git a/e2e/jasmine/yarn.lock b/e2e/jasmine/yarn.lock index db08ff6506..41b985bd8c 100644 --- a/e2e/jasmine/yarn.lock +++ b/e2e/jasmine/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.0.tgz#4dbf419a8332ec05862302a64546c21f2a7bc467" - integrity sha512-A/3ypUXGs3i9VgbI26xosygh/OhJlNlK+Mkhd2UVIAuzBVVzQbf+Eo+F/iqB2AJTaIA9rm/YJoCfFFeQvHyO5w== +"@bazel/jasmine@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.1.tgz#6031872e35b29774209105b5c58e54b2a74cdb75" + integrity sha512-xQdwUvM0CYMxC8iZCLtvOd2DO02Wvl37x1Go7pKpLMyhy7wBM3JM4bsIZLo9Idwf9T5VuCOzXUAPvb0xmIA6sQ== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/e2e/ts_devserver/package.json b/e2e/ts_devserver/package.json index 6e51c6096f..18c3b28b35 100644 --- a/e2e/ts_devserver/package.json +++ b/e2e/ts_devserver/package.json @@ -1,7 +1,7 @@ { "dependencies": { - "@bazel/protractor": "^2.0.0-rc.0", - "@bazel/typescript": "^2.0.0-rc.0", + "@bazel/protractor": "^2.0.0-rc.1", + "@bazel/typescript": "^2.0.0-rc.1", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "date-fns": "1.30.1", diff --git a/e2e/ts_devserver/yarn.lock b/e2e/ts_devserver/yarn.lock index 498a40a607..151ee4e8ef 100644 --- a/e2e/ts_devserver/yarn.lock +++ b/e2e/ts_devserver/yarn.lock @@ -2,15 +2,15 @@ # yarn lockfile v1 -"@bazel/protractor@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.0.tgz#53f751a8d53e4c795dc568e629f1c56d360cb587" - integrity sha512-+7aXrWOeOvDTyFdrjD1N9NRzmnLtisS3ep2sxv0Z/+XkleX5+IUxI/RMXRhQXflGidf2aOtblUMTMBucC6B1/Q== - -"@bazel/typescript@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.0.tgz#2581569b8ad1c7ec35dbe0528c0b7a66dc084af3" - integrity sha512-Lv8p97dNpXsn5cdeMM0afmayJjFHqJL+dR41KrScYQHLvPeF2LMTPI9prgWHFc3XArcEjSN7IK4TCVu4q3ytPw== +"@bazel/protractor@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.1.tgz#a616adecfe5fd9a7f35c2ed30c47caeeb9866f97" + integrity sha512-E/xS2Dwc8BFjeVLVxciTLnMRT93OfBeE+zANK388gf7n6tggcJkRiiRqQ1gKiGHirL/zrTiir13SoDuQf1msBA== + +"@bazel/typescript@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" + integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/e2e/typescript/package.json b/e2e/typescript/package.json index 12882096b7..f811923017 100644 --- a/e2e/typescript/package.json +++ b/e2e/typescript/package.json @@ -1,7 +1,7 @@ { "dependencies": { - "@bazel/jasmine": "^2.0.0-rc.0", - "@bazel/typescript": "^2.0.0-rc.0", + "@bazel/jasmine": "^2.0.0-rc.1", + "@bazel/typescript": "^2.0.0-rc.1", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "date-fns": "^1.30.1", diff --git a/e2e/typescript/yarn.lock b/e2e/typescript/yarn.lock index d1995de82f..e958be192b 100644 --- a/e2e/typescript/yarn.lock +++ b/e2e/typescript/yarn.lock @@ -2,18 +2,18 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.0.tgz#4dbf419a8332ec05862302a64546c21f2a7bc467" - integrity sha512-A/3ypUXGs3i9VgbI26xosygh/OhJlNlK+Mkhd2UVIAuzBVVzQbf+Eo+F/iqB2AJTaIA9rm/YJoCfFFeQvHyO5w== +"@bazel/jasmine@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.1.tgz#6031872e35b29774209105b5c58e54b2a74cdb75" + integrity sha512-xQdwUvM0CYMxC8iZCLtvOd2DO02Wvl37x1Go7pKpLMyhy7wBM3JM4bsIZLo9Idwf9T5VuCOzXUAPvb0xmIA6sQ== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" -"@bazel/typescript@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.0.tgz#2581569b8ad1c7ec35dbe0528c0b7a66dc084af3" - integrity sha512-Lv8p97dNpXsn5cdeMM0afmayJjFHqJL+dR41KrScYQHLvPeF2LMTPI9prgWHFc3XArcEjSN7IK4TCVu4q3ytPw== +"@bazel/typescript@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" + integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/e2e/webapp/package.json b/e2e/webapp/package.json index 1d5ac92156..89dfbcecfc 100644 --- a/e2e/webapp/package.json +++ b/e2e/webapp/package.json @@ -2,8 +2,8 @@ "name": "e2e-terser", "private": true, "devDependencies": { - "@bazel/rollup": "^2.0.0-rc.0", - "@bazel/terser": "^2.0.0-rc.0", + "@bazel/rollup": "^2.0.0-rc.1", + "@bazel/terser": "^2.0.0-rc.1", "rollup": "1.20.3", "terser": "4.3.1" }, diff --git a/e2e/webapp/yarn.lock b/e2e/webapp/yarn.lock index 9ecff7bcc9..acb1368067 100644 --- a/e2e/webapp/yarn.lock +++ b/e2e/webapp/yarn.lock @@ -2,15 +2,15 @@ # yarn lockfile v1 -"@bazel/rollup@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.0.tgz#b184b9c9947bdfe57ca5167bce4b0ee15d2a321f" - integrity sha512-ZV3UUfOq9/JIPl7nwrR+Domncjd8J/uUPwnQGNwKz4yfS57NnR4A5mFoUjXeCKhPQZukaSt6Pydp2IUqrRGZkw== +"@bazel/rollup@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.1.tgz#6a4aec69347c7b7c9866b1def84aaef1c6c520fa" + integrity sha512-PvFvLRsctrdrljsYAD+IfDhpYVgedYx9xxH+q6gOZV63qlC45lCC/AAb4dw/TvjbeYK8IJ4pepJHd9NFTJFt6g== -"@bazel/terser@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.0.tgz#0f62465c44dc9a25a60f6355394e15c8c7466c6a" - integrity sha512-7lUInOkxJHw5DOVuEpYrTtpe7KK3vpC35w5KIPFCdIbCULrgyH0624ahmAKWj0e0152EpUFidmr4eBio0idtaA== +"@bazel/terser@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.1.tgz#b42ee3619f67788257a10cc4fea420a800381ce7" + integrity sha512-htQ7ETuHtKWji9ERYAgmarzAeU1w8iiIVtUAr2C0Ka1H76DhIa8fX/AkIgIr2f+5tDahyRZZirc02M8fEqIr/g== "@types/estree@0.0.39": version "0.0.39" diff --git a/examples/angular/package.json b/examples/angular/package.json index b74d8d2c64..fee3f96da0 100644 --- a/examples/angular/package.json +++ b/examples/angular/package.json @@ -33,16 +33,16 @@ "@babel/cli": "^7.6.0", "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", - "@bazel/angular": "^2.0.0-rc.0", + "@bazel/angular": "^2.0.0-rc.1", "@bazel/bazelisk": "^1.5.0", "@bazel/benchmark-runner": "^0.1.0", "@bazel/buildifier": "^3.3.0", "@bazel/ibazel": "^0.13.1", - "@bazel/karma": "^2.0.0-rc.0", - "@bazel/protractor": "^2.0.0-rc.0", - "@bazel/rollup": "^2.0.0-rc.0", - "@bazel/terser": "^2.0.0-rc.0", - "@bazel/typescript": "^2.0.0-rc.0", + "@bazel/karma": "^2.0.0-rc.1", + "@bazel/protractor": "^2.0.0-rc.1", + "@bazel/rollup": "^2.0.0-rc.1", + "@bazel/terser": "^2.0.0-rc.1", + "@bazel/typescript": "^2.0.0-rc.1", "@types/jasmine": "3.4.0", "@types/node": "6.14.6", "core-js": "2.6.9", diff --git a/examples/angular/yarn.lock b/examples/angular/yarn.lock index 73f5b73569..c02075b9b9 100644 --- a/examples/angular/yarn.lock +++ b/examples/angular/yarn.lock @@ -827,10 +827,10 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/angular@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/angular/-/angular-2.0.0-rc.0.tgz#d4f1ea2d0abc98edfe067a09ed4669e611cab090" - integrity sha512-2hayZo6evJ09CET4dS2FHXTs3wjt5sUwmGwtZxiBBYn5PCOnsDbBlla7A6r6tZ6egmtnyZ4Pn3w+C8jLvGyNtQ== +"@bazel/angular@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/angular/-/angular-2.0.0-rc.1.tgz#41733f661a30ba1c286066f1ca579b35910dfcfc" + integrity sha512-lxj74Zqy32hFXvgzj4KkpePgN7GbXN7api8kzUiaDo4XrP5Nx7K+j0NITyBCFigP/BTmNJgD+LiV8BXvuh7esQ== dependencies: "@angular-devkit/architect" "^0.901.7" "@bazel/bazelisk" "^1.4.0" @@ -871,32 +871,32 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/karma@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.0.tgz#32947f999617e2c938f6bf92889a64d363f7cd38" - integrity sha512-SkvDVqdCjD0Gn5V1enWqHAnZ83ULffhT+czXSRrPpITaQbbHWxA9IsU1uojzyJIWR3g2xLJcsqsErBHLIM5qCw== +"@bazel/karma@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.1.tgz#889e2c5fbc07f2c9021e0074f7cad37c2b697c5b" + integrity sha512-cJkv4UPy1Nj2Jgw47dviU222a5eeeRhaZa/cJApB6/hvEGAwKdTW3l3C8B29aonzO5K8skPDqw2urzhgJ3q2lA== dependencies: tmp "0.1.0" -"@bazel/protractor@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.0.tgz#53f751a8d53e4c795dc568e629f1c56d360cb587" - integrity sha512-+7aXrWOeOvDTyFdrjD1N9NRzmnLtisS3ep2sxv0Z/+XkleX5+IUxI/RMXRhQXflGidf2aOtblUMTMBucC6B1/Q== - -"@bazel/rollup@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.0.tgz#b184b9c9947bdfe57ca5167bce4b0ee15d2a321f" - integrity sha512-ZV3UUfOq9/JIPl7nwrR+Domncjd8J/uUPwnQGNwKz4yfS57NnR4A5mFoUjXeCKhPQZukaSt6Pydp2IUqrRGZkw== - -"@bazel/terser@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.0.tgz#0f62465c44dc9a25a60f6355394e15c8c7466c6a" - integrity sha512-7lUInOkxJHw5DOVuEpYrTtpe7KK3vpC35w5KIPFCdIbCULrgyH0624ahmAKWj0e0152EpUFidmr4eBio0idtaA== - -"@bazel/typescript@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.0.tgz#2581569b8ad1c7ec35dbe0528c0b7a66dc084af3" - integrity sha512-Lv8p97dNpXsn5cdeMM0afmayJjFHqJL+dR41KrScYQHLvPeF2LMTPI9prgWHFc3XArcEjSN7IK4TCVu4q3ytPw== +"@bazel/protractor@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.1.tgz#a616adecfe5fd9a7f35c2ed30c47caeeb9866f97" + integrity sha512-E/xS2Dwc8BFjeVLVxciTLnMRT93OfBeE+zANK388gf7n6tggcJkRiiRqQ1gKiGHirL/zrTiir13SoDuQf1msBA== + +"@bazel/rollup@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.1.tgz#6a4aec69347c7b7c9866b1def84aaef1c6c520fa" + integrity sha512-PvFvLRsctrdrljsYAD+IfDhpYVgedYx9xxH+q6gOZV63qlC45lCC/AAb4dw/TvjbeYK8IJ4pepJHd9NFTJFt6g== + +"@bazel/terser@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.1.tgz#b42ee3619f67788257a10cc4fea420a800381ce7" + integrity sha512-htQ7ETuHtKWji9ERYAgmarzAeU1w8iiIVtUAr2C0Ka1H76DhIa8fX/AkIgIr2f+5tDahyRZZirc02M8fEqIr/g== + +"@bazel/typescript@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" + integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/angular_view_engine/package.json b/examples/angular_view_engine/package.json index 477be6faed..524147a9f1 100644 --- a/examples/angular_view_engine/package.json +++ b/examples/angular_view_engine/package.json @@ -36,11 +36,11 @@ "@bazel/benchmark-runner": "^0.1.0", "@bazel/buildifier": "^3.3.0", "@bazel/ibazel": "^0.13.1", - "@bazel/karma": "^2.0.0-rc.0", - "@bazel/protractor": "^2.0.0-rc.0", - "@bazel/rollup": "^2.0.0-rc.0", - "@bazel/terser": "^2.0.0-rc.0", - "@bazel/typescript": "^2.0.0-rc.0", + "@bazel/karma": "^2.0.0-rc.1", + "@bazel/protractor": "^2.0.0-rc.1", + "@bazel/rollup": "^2.0.0-rc.1", + "@bazel/terser": "^2.0.0-rc.1", + "@bazel/typescript": "^2.0.0-rc.1", "@types/jasmine": "3.4.0", "@types/node": "6.14.6", "core-js": "2.6.9", diff --git a/examples/angular_view_engine/yarn.lock b/examples/angular_view_engine/yarn.lock index c6ca79d589..2af1f17b9e 100644 --- a/examples/angular_view_engine/yarn.lock +++ b/examples/angular_view_engine/yarn.lock @@ -833,32 +833,32 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/karma@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.0.tgz#32947f999617e2c938f6bf92889a64d363f7cd38" - integrity sha512-SkvDVqdCjD0Gn5V1enWqHAnZ83ULffhT+czXSRrPpITaQbbHWxA9IsU1uojzyJIWR3g2xLJcsqsErBHLIM5qCw== +"@bazel/karma@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.1.tgz#889e2c5fbc07f2c9021e0074f7cad37c2b697c5b" + integrity sha512-cJkv4UPy1Nj2Jgw47dviU222a5eeeRhaZa/cJApB6/hvEGAwKdTW3l3C8B29aonzO5K8skPDqw2urzhgJ3q2lA== dependencies: tmp "0.1.0" -"@bazel/protractor@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.0.tgz#53f751a8d53e4c795dc568e629f1c56d360cb587" - integrity sha512-+7aXrWOeOvDTyFdrjD1N9NRzmnLtisS3ep2sxv0Z/+XkleX5+IUxI/RMXRhQXflGidf2aOtblUMTMBucC6B1/Q== - -"@bazel/rollup@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.0.tgz#b184b9c9947bdfe57ca5167bce4b0ee15d2a321f" - integrity sha512-ZV3UUfOq9/JIPl7nwrR+Domncjd8J/uUPwnQGNwKz4yfS57NnR4A5mFoUjXeCKhPQZukaSt6Pydp2IUqrRGZkw== - -"@bazel/terser@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.0.tgz#0f62465c44dc9a25a60f6355394e15c8c7466c6a" - integrity sha512-7lUInOkxJHw5DOVuEpYrTtpe7KK3vpC35w5KIPFCdIbCULrgyH0624ahmAKWj0e0152EpUFidmr4eBio0idtaA== - -"@bazel/typescript@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.0.tgz#2581569b8ad1c7ec35dbe0528c0b7a66dc084af3" - integrity sha512-Lv8p97dNpXsn5cdeMM0afmayJjFHqJL+dR41KrScYQHLvPeF2LMTPI9prgWHFc3XArcEjSN7IK4TCVu4q3ytPw== +"@bazel/protractor@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.1.tgz#a616adecfe5fd9a7f35c2ed30c47caeeb9866f97" + integrity sha512-E/xS2Dwc8BFjeVLVxciTLnMRT93OfBeE+zANK388gf7n6tggcJkRiiRqQ1gKiGHirL/zrTiir13SoDuQf1msBA== + +"@bazel/rollup@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.1.tgz#6a4aec69347c7b7c9866b1def84aaef1c6c520fa" + integrity sha512-PvFvLRsctrdrljsYAD+IfDhpYVgedYx9xxH+q6gOZV63qlC45lCC/AAb4dw/TvjbeYK8IJ4pepJHd9NFTJFt6g== + +"@bazel/terser@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.1.tgz#b42ee3619f67788257a10cc4fea420a800381ce7" + integrity sha512-htQ7ETuHtKWji9ERYAgmarzAeU1w8iiIVtUAr2C0Ka1H76DhIa8fX/AkIgIr2f+5tDahyRZZirc02M8fEqIr/g== + +"@bazel/typescript@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" + integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/app/package.json b/examples/app/package.json index fef4cb33d0..568c54d778 100644 --- a/examples/app/package.json +++ b/examples/app/package.json @@ -1,9 +1,9 @@ { "devDependencies": { - "@bazel/protractor": "^2.0.0-rc.0", - "@bazel/rollup": "^2.0.0-rc.0", - "@bazel/terser": "^2.0.0-rc.0", - "@bazel/typescript": "^2.0.0-rc.0", + "@bazel/protractor": "^2.0.0-rc.1", + "@bazel/rollup": "^2.0.0-rc.1", + "@bazel/terser": "^2.0.0-rc.1", + "@bazel/typescript": "^2.0.0-rc.1", "@types/jasmine": "3.3.15", "html-insert-assets": "^0.6.0", "http-server": "^0.11.1", diff --git a/examples/app/yarn.lock b/examples/app/yarn.lock index d848c5c70b..5c4f6c45f3 100644 --- a/examples/app/yarn.lock +++ b/examples/app/yarn.lock @@ -2,25 +2,25 @@ # yarn lockfile v1 -"@bazel/protractor@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.0.tgz#53f751a8d53e4c795dc568e629f1c56d360cb587" - integrity sha512-+7aXrWOeOvDTyFdrjD1N9NRzmnLtisS3ep2sxv0Z/+XkleX5+IUxI/RMXRhQXflGidf2aOtblUMTMBucC6B1/Q== - -"@bazel/rollup@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.0.tgz#b184b9c9947bdfe57ca5167bce4b0ee15d2a321f" - integrity sha512-ZV3UUfOq9/JIPl7nwrR+Domncjd8J/uUPwnQGNwKz4yfS57NnR4A5mFoUjXeCKhPQZukaSt6Pydp2IUqrRGZkw== - -"@bazel/terser@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.0.tgz#0f62465c44dc9a25a60f6355394e15c8c7466c6a" - integrity sha512-7lUInOkxJHw5DOVuEpYrTtpe7KK3vpC35w5KIPFCdIbCULrgyH0624ahmAKWj0e0152EpUFidmr4eBio0idtaA== - -"@bazel/typescript@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.0.tgz#2581569b8ad1c7ec35dbe0528c0b7a66dc084af3" - integrity sha512-Lv8p97dNpXsn5cdeMM0afmayJjFHqJL+dR41KrScYQHLvPeF2LMTPI9prgWHFc3XArcEjSN7IK4TCVu4q3ytPw== +"@bazel/protractor@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.1.tgz#a616adecfe5fd9a7f35c2ed30c47caeeb9866f97" + integrity sha512-E/xS2Dwc8BFjeVLVxciTLnMRT93OfBeE+zANK388gf7n6tggcJkRiiRqQ1gKiGHirL/zrTiir13SoDuQf1msBA== + +"@bazel/rollup@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.1.tgz#6a4aec69347c7b7c9866b1def84aaef1c6c520fa" + integrity sha512-PvFvLRsctrdrljsYAD+IfDhpYVgedYx9xxH+q6gOZV63qlC45lCC/AAb4dw/TvjbeYK8IJ4pepJHd9NFTJFt6g== + +"@bazel/terser@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.1.tgz#b42ee3619f67788257a10cc4fea420a800381ce7" + integrity sha512-htQ7ETuHtKWji9ERYAgmarzAeU1w8iiIVtUAr2C0Ka1H76DhIa8fX/AkIgIr2f+5tDahyRZZirc02M8fEqIr/g== + +"@bazel/typescript@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" + integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/cypress/package.json b/examples/cypress/package.json index 99833b66d3..4826883604 100644 --- a/examples/cypress/package.json +++ b/examples/cypress/package.json @@ -5,16 +5,16 @@ "express": "4.17.1" }, "devDependencies": { - "cypress": "^4.8.0", - "@cypress/browserify-preprocessor": "^3.0.0", "@bazel/bazelisk": "^1.5.0", - "@bazel/cypress": "^1.7.0", + "@bazel/cypress": "^2.0.0-rc.1", "@bazel/ibazel": "^0.13.1", - "@bazel/typescript": "^1.7.0", + "@bazel/typescript": "^2.0.0-rc.1", + "@cypress/browserify-preprocessor": "^3.0.0", "@types/node": "14.0.13", + "cypress": "^4.8.0", "typescript": "3.9.5" }, "scripts": { "test": "bazel test //..." } -} \ No newline at end of file +} diff --git a/examples/cypress/yarn.lock b/examples/cypress/yarn.lock index 99a0f50f12..213ad414df 100644 --- a/examples/cypress/yarn.lock +++ b/examples/cypress/yarn.lock @@ -749,16 +749,20 @@ resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.5.0.tgz#61f583ed93be138b47be7180403938ea4057f54b" integrity sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg== -"@bazel/cypress@file:../tmp-14526tGZaBaqVNnN4": - version "0.0.0" +"@bazel/cypress@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/cypress/-/cypress-2.0.0-rc.1.tgz#d1a70349dca1030ba98f293ab952c413d4ee7806" + integrity sha512-MQXYy/OgVqeISKmjlTtR6E8wHIul9P1fFjauHzxcYgmrk6ZRvC4glK+r2DN4FLAOGg7/fDtAf1wT5r93332pxQ== "@bazel/ibazel@^0.13.1": version "0.13.1" resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/typescript@file:../tmp-14526gikocM6B1k1Z": - version "0.0.0" +"@bazel/typescript@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" + integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/kotlin/package-lock.json b/examples/kotlin/package-lock.json index f2c3ef58f1..e1c035a759 100644 --- a/examples/kotlin/package-lock.json +++ b/examples/kotlin/package-lock.json @@ -3,10 +3,20 @@ "requires": true, "lockfileVersion": 1, "dependencies": { + "@babel/runtime-corejs3": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz", + "integrity": "sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw==", + "dev": true, + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, "@bazel/jasmine": { - "version": "2.0.0-rc.0", - "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0-rc.0.tgz", - "integrity": "sha512-A/3ypUXGs3i9VgbI26xosygh/OhJlNlK+Mkhd2UVIAuzBVVzQbf+Eo+F/iqB2AJTaIA9rm/YJoCfFFeQvHyO5w==", + "version": "2.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0-rc.1.tgz", + "integrity": "sha512-xQdwUvM0CYMxC8iZCLtvOd2DO02Wvl37x1Go7pKpLMyhy7wBM3JM4bsIZLo9Idwf9T5VuCOzXUAPvb0xmIA6sQ==", "dev": true, "requires": { "c8": "~7.1.0", @@ -14,15 +24,15 @@ } }, "@bazel/rollup": { - "version": "2.0.0-rc.0", - "resolved": "https://registry.npmjs.org/@bazel/rollup/-/rollup-2.0.0-rc.0.tgz", - "integrity": "sha512-ZV3UUfOq9/JIPl7nwrR+Domncjd8J/uUPwnQGNwKz4yfS57NnR4A5mFoUjXeCKhPQZukaSt6Pydp2IUqrRGZkw==", + "version": "2.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@bazel/rollup/-/rollup-2.0.0-rc.1.tgz", + "integrity": "sha512-PvFvLRsctrdrljsYAD+IfDhpYVgedYx9xxH+q6gOZV63qlC45lCC/AAb4dw/TvjbeYK8IJ4pepJHd9NFTJFt6g==", "dev": true }, "@bazel/terser": { - "version": "2.0.0-rc.0", - "resolved": "https://registry.npmjs.org/@bazel/terser/-/terser-2.0.0-rc.0.tgz", - "integrity": "sha512-7lUInOkxJHw5DOVuEpYrTtpe7KK3vpC35w5KIPFCdIbCULrgyH0624ahmAKWj0e0152EpUFidmr4eBio0idtaA==", + "version": "2.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@bazel/terser/-/terser-2.0.0-rc.1.tgz", + "integrity": "sha512-htQ7ETuHtKWji9ERYAgmarzAeU1w8iiIVtUAr2C0Ka1H76DhIa8fX/AkIgIr2f+5tDahyRZZirc02M8fEqIr/g==", "dev": true }, "@bcoe/v8-coverage": { @@ -212,6 +222,12 @@ "safe-buffer": "~5.1.1" } }, + "core-js-pure": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", + "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", + "dev": true + }, "corser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", @@ -239,10 +255,13 @@ } }, "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-3.2.0.tgz", + "integrity": "sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw==", + "dev": true, + "requires": { + "xregexp": "^4.2.4" + } }, "domino": { "version": "2.1.3", @@ -682,6 +701,12 @@ "integrity": "sha1-6eha2+ddoLvkyOBHaghikPhjtAQ=", "dev": true }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -954,6 +979,15 @@ "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", "dev": true }, + "xregexp": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", + "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", + "dev": true, + "requires": { + "@babel/runtime-corejs3": "^7.8.3" + } + }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", @@ -961,13 +995,13 @@ "dev": true }, "yargs": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", - "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "version": "15.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.0.tgz", + "integrity": "sha512-D3fRFnZwLWp8jVAAhPZBsmeIHY8tTsb8ItV9KaAaopmC6wde2u6Yw29JBIZHXw14kgkRnYmDgmQU4FVMDlIsWw==", "dev": true, "requires": { "cliui": "^6.0.0", - "decamelize": "^1.2.0", + "decamelize": "^3.2.0", "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", @@ -976,7 +1010,7 @@ "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^18.1.1" + "yargs-parser": "^18.1.2" } }, "yargs-parser": { @@ -987,6 +1021,14 @@ "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" + }, + "dependencies": { + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + } } } } diff --git a/examples/kotlin/package.json b/examples/kotlin/package.json index 6a48aacc88..89dded982b 100644 --- a/examples/kotlin/package.json +++ b/examples/kotlin/package.json @@ -2,9 +2,9 @@ "name": "kotlin_example", "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.0-rc.0", - "@bazel/rollup": "^2.0.0-rc.0", - "@bazel/terser": "^2.0.0-rc.0", + "@bazel/jasmine": "^2.0.0-rc.1", + "@bazel/rollup": "^2.0.0-rc.1", + "@bazel/terser": "^2.0.0-rc.1", "domino": "^2.1.3", "http-server": "^0.11.1", "jasmine": "^3.5.0", diff --git a/examples/nestjs/package.json b/examples/nestjs/package.json index 963f47f41b..0f722656aa 100644 --- a/examples/nestjs/package.json +++ b/examples/nestjs/package.json @@ -3,7 +3,7 @@ "dependencies": { "@bazel/bazelisk": "^1.5.0", "@bazel/ibazel": "^0.13.1", - "@bazel/jasmine": "^2.0.0-rc.0", + "@bazel/jasmine": "^2.0.0-rc.1", "@nestjs/common": "6.5.2", "@nestjs/core": "6.5.2", "@nestjs/platform-express": "6.5.2", @@ -17,7 +17,7 @@ "supertest": "^4.0.2" }, "devDependencies": { - "@bazel/typescript": "^2.0.0-rc.0", + "@bazel/typescript": "^2.0.0-rc.1", "@types/node": "12.6.3", "typescript": "3.5.3" }, diff --git a/examples/nestjs/yarn.lock b/examples/nestjs/yarn.lock index 51d94e1a8b..da7187aab6 100644 --- a/examples/nestjs/yarn.lock +++ b/examples/nestjs/yarn.lock @@ -12,18 +12,18 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/jasmine@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.0.tgz#4dbf419a8332ec05862302a64546c21f2a7bc467" - integrity sha512-A/3ypUXGs3i9VgbI26xosygh/OhJlNlK+Mkhd2UVIAuzBVVzQbf+Eo+F/iqB2AJTaIA9rm/YJoCfFFeQvHyO5w== +"@bazel/jasmine@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.1.tgz#6031872e35b29774209105b5c58e54b2a74cdb75" + integrity sha512-xQdwUvM0CYMxC8iZCLtvOd2DO02Wvl37x1Go7pKpLMyhy7wBM3JM4bsIZLo9Idwf9T5VuCOzXUAPvb0xmIA6sQ== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" -"@bazel/typescript@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.0.tgz#2581569b8ad1c7ec35dbe0528c0b7a66dc084af3" - integrity sha512-Lv8p97dNpXsn5cdeMM0afmayJjFHqJL+dR41KrScYQHLvPeF2LMTPI9prgWHFc3XArcEjSN7IK4TCVu4q3ytPw== +"@bazel/typescript@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" + integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/protocol_buffers/package.json b/examples/protocol_buffers/package.json index 524bd1b9fd..5cb54c2c39 100644 --- a/examples/protocol_buffers/package.json +++ b/examples/protocol_buffers/package.json @@ -1,11 +1,11 @@ { "devDependencies": { - "@bazel/karma": "^2.0.0-rc.0", - "@bazel/labs": "^2.0.0-rc.0", - "@bazel/protractor": "^2.0.0-rc.0", - "@bazel/rollup": "^2.0.0-rc.0", - "@bazel/terser": "^2.0.0-rc.0", - "@bazel/typescript": "^2.0.0-rc.0", + "@bazel/karma": "^2.0.0-rc.1", + "@bazel/labs": "^2.0.0-rc.1", + "@bazel/protractor": "^2.0.0-rc.1", + "@bazel/rollup": "^2.0.0-rc.1", + "@bazel/terser": "^2.0.0-rc.1", + "@bazel/typescript": "^2.0.0-rc.1", "@types/jasmine": "2.8.2", "@types/long": "^4.0.0", "@types/node": "11.11.1", diff --git a/examples/protocol_buffers/yarn.lock b/examples/protocol_buffers/yarn.lock index abc06e7e74..c8c775e61c 100644 --- a/examples/protocol_buffers/yarn.lock +++ b/examples/protocol_buffers/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@bazel/karma@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.0.tgz#32947f999617e2c938f6bf92889a64d363f7cd38" - integrity sha512-SkvDVqdCjD0Gn5V1enWqHAnZ83ULffhT+czXSRrPpITaQbbHWxA9IsU1uojzyJIWR3g2xLJcsqsErBHLIM5qCw== +"@bazel/karma@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.1.tgz#889e2c5fbc07f2c9021e0074f7cad37c2b697c5b" + integrity sha512-cJkv4UPy1Nj2Jgw47dviU222a5eeeRhaZa/cJApB6/hvEGAwKdTW3l3C8B29aonzO5K8skPDqw2urzhgJ3q2lA== dependencies: tmp "0.1.0" -"@bazel/labs@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/labs/-/labs-2.0.0-rc.0.tgz#a30812f8ff88da6c73d699668c61f846d8130cb5" - integrity sha512-ibOV0IjBCYYZT3+no31o3j7mOZnQ59kIIMuv9Dp6Xl4wV2Lc/pYM3BWaemIQq5MDRNhZ6p3LuABNORLrFhD54Q== - -"@bazel/protractor@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.0.tgz#53f751a8d53e4c795dc568e629f1c56d360cb587" - integrity sha512-+7aXrWOeOvDTyFdrjD1N9NRzmnLtisS3ep2sxv0Z/+XkleX5+IUxI/RMXRhQXflGidf2aOtblUMTMBucC6B1/Q== - -"@bazel/rollup@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.0.tgz#b184b9c9947bdfe57ca5167bce4b0ee15d2a321f" - integrity sha512-ZV3UUfOq9/JIPl7nwrR+Domncjd8J/uUPwnQGNwKz4yfS57NnR4A5mFoUjXeCKhPQZukaSt6Pydp2IUqrRGZkw== - -"@bazel/terser@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.0.tgz#0f62465c44dc9a25a60f6355394e15c8c7466c6a" - integrity sha512-7lUInOkxJHw5DOVuEpYrTtpe7KK3vpC35w5KIPFCdIbCULrgyH0624ahmAKWj0e0152EpUFidmr4eBio0idtaA== - -"@bazel/typescript@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.0.tgz#2581569b8ad1c7ec35dbe0528c0b7a66dc084af3" - integrity sha512-Lv8p97dNpXsn5cdeMM0afmayJjFHqJL+dR41KrScYQHLvPeF2LMTPI9prgWHFc3XArcEjSN7IK4TCVu4q3ytPw== +"@bazel/labs@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/labs/-/labs-2.0.0-rc.1.tgz#876472b93fd9806dc7a26f8e73cee40bba37dc0a" + integrity sha512-GfhmsACdYnNpfuQ2eDWHJ9ArTr7ABTZ31ca1ekVEKDSSbQtT1AaUeRLk8lgHRbbMfkn4NL1uPZWPAXmNOUBaiw== + +"@bazel/protractor@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.1.tgz#a616adecfe5fd9a7f35c2ed30c47caeeb9866f97" + integrity sha512-E/xS2Dwc8BFjeVLVxciTLnMRT93OfBeE+zANK388gf7n6tggcJkRiiRqQ1gKiGHirL/zrTiir13SoDuQf1msBA== + +"@bazel/rollup@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.1.tgz#6a4aec69347c7b7c9866b1def84aaef1c6c520fa" + integrity sha512-PvFvLRsctrdrljsYAD+IfDhpYVgedYx9xxH+q6gOZV63qlC45lCC/AAb4dw/TvjbeYK8IJ4pepJHd9NFTJFt6g== + +"@bazel/terser@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.1.tgz#b42ee3619f67788257a10cc4fea420a800381ce7" + integrity sha512-htQ7ETuHtKWji9ERYAgmarzAeU1w8iiIVtUAr2C0Ka1H76DhIa8fX/AkIgIr2f+5tDahyRZZirc02M8fEqIr/g== + +"@bazel/typescript@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" + integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/react_webpack/package.json b/examples/react_webpack/package.json index 79b9e84b3d..695a829db4 100644 --- a/examples/react_webpack/package.json +++ b/examples/react_webpack/package.json @@ -4,7 +4,7 @@ "@bazel/bazelisk": "^1.5.0", "@bazel/buildifier": "^3.3.0", "@bazel/ibazel": "^0.13.1", - "@bazel/typescript": "^2.0.0-rc.0", + "@bazel/typescript": "^2.0.0-rc.1", "@types/react": "^16.9.5", "@types/react-dom": "^16.9.1", "css-loader": "^3.2.0", diff --git a/examples/react_webpack/yarn.lock b/examples/react_webpack/yarn.lock index fef0c249bb..349d903a93 100644 --- a/examples/react_webpack/yarn.lock +++ b/examples/react_webpack/yarn.lock @@ -17,10 +17,10 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/typescript@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.0.tgz#2581569b8ad1c7ec35dbe0528c0b7a66dc084af3" - integrity sha512-Lv8p97dNpXsn5cdeMM0afmayJjFHqJL+dR41KrScYQHLvPeF2LMTPI9prgWHFc3XArcEjSN7IK4TCVu4q3ytPw== +"@bazel/typescript@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" + integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/vendored_node/package-lock.json b/examples/vendored_node/package-lock.json index 48d90e0555..1b313388cc 100644 --- a/examples/vendored_node/package-lock.json +++ b/examples/vendored_node/package-lock.json @@ -2,10 +2,20 @@ "requires": true, "lockfileVersion": 1, "dependencies": { + "@babel/runtime-corejs3": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz", + "integrity": "sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw==", + "dev": true, + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, "@bazel/jasmine": { - "version": "2.0.0-rc.0", - "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0-rc.0.tgz", - "integrity": "sha512-A/3ypUXGs3i9VgbI26xosygh/OhJlNlK+Mkhd2UVIAuzBVVzQbf+Eo+F/iqB2AJTaIA9rm/YJoCfFFeQvHyO5w==", + "version": "2.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0-rc.1.tgz", + "integrity": "sha512-xQdwUvM0CYMxC8iZCLtvOd2DO02Wvl37x1Go7pKpLMyhy7wBM3JM4bsIZLo9Idwf9T5VuCOzXUAPvb0xmIA6sQ==", "dev": true, "requires": { "c8": "~7.1.0", @@ -142,6 +152,12 @@ "safe-buffer": "~5.1.1" } }, + "core-js-pure": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", + "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", + "dev": true + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -154,10 +170,13 @@ } }, "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-3.2.0.tgz", + "integrity": "sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw==", + "dev": true, + "requires": { + "xregexp": "^4.2.4" + } }, "emoji-regex": { "version": "8.0.0", @@ -413,6 +432,12 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -568,6 +593,15 @@ "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", "dev": true }, + "xregexp": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", + "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", + "dev": true, + "requires": { + "@babel/runtime-corejs3": "^7.8.3" + } + }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", @@ -575,13 +609,13 @@ "dev": true }, "yargs": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", - "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "version": "15.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.0.tgz", + "integrity": "sha512-D3fRFnZwLWp8jVAAhPZBsmeIHY8tTsb8ItV9KaAaopmC6wde2u6Yw29JBIZHXw14kgkRnYmDgmQU4FVMDlIsWw==", "dev": true, "requires": { "cliui": "^6.0.0", - "decamelize": "^1.2.0", + "decamelize": "^3.2.0", "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", @@ -590,7 +624,7 @@ "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^18.1.1" + "yargs-parser": "^18.1.2" } }, "yargs-parser": { @@ -601,6 +635,14 @@ "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" + }, + "dependencies": { + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + } } } } diff --git a/examples/vendored_node/package.json b/examples/vendored_node/package.json index ac989d04ad..2107193345 100644 --- a/examples/vendored_node/package.json +++ b/examples/vendored_node/package.json @@ -1,7 +1,7 @@ { "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.0-rc.0", + "@bazel/jasmine": "^2.0.0-rc.1", "jasmine": "^3.5.0" }, "scripts": { diff --git a/examples/vendored_node_and_yarn/package.json b/examples/vendored_node_and_yarn/package.json index ac989d04ad..2107193345 100644 --- a/examples/vendored_node_and_yarn/package.json +++ b/examples/vendored_node_and_yarn/package.json @@ -1,7 +1,7 @@ { "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.0-rc.0", + "@bazel/jasmine": "^2.0.0-rc.1", "jasmine": "^3.5.0" }, "scripts": { diff --git a/examples/vendored_node_and_yarn/yarn.lock b/examples/vendored_node_and_yarn/yarn.lock index 60d886fa4a..c98a04c44e 100644 --- a/examples/vendored_node_and_yarn/yarn.lock +++ b/examples/vendored_node_and_yarn/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.0.tgz#4dbf419a8332ec05862302a64546c21f2a7bc467" - integrity sha512-A/3ypUXGs3i9VgbI26xosygh/OhJlNlK+Mkhd2UVIAuzBVVzQbf+Eo+F/iqB2AJTaIA9rm/YJoCfFFeQvHyO5w== +"@bazel/jasmine@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.1.tgz#6031872e35b29774209105b5c58e54b2a74cdb75" + integrity sha512-xQdwUvM0CYMxC8iZCLtvOd2DO02Wvl37x1Go7pKpLMyhy7wBM3JM4bsIZLo9Idwf9T5VuCOzXUAPvb0xmIA6sQ== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/examples/web_testing/package.json b/examples/web_testing/package.json index e32b4456ed..7697c48f0b 100644 --- a/examples/web_testing/package.json +++ b/examples/web_testing/package.json @@ -1,7 +1,7 @@ { "devDependencies": { - "@bazel/karma": "^2.0.0-rc.0", - "@bazel/typescript": "^2.0.0-rc.0", + "@bazel/karma": "^2.0.0-rc.1", + "@bazel/typescript": "^2.0.0-rc.1", "@types/jasmine": "2.8.2", "@types/node": "11.11.1", "karma": "~4.1.0", diff --git a/examples/web_testing/yarn.lock b/examples/web_testing/yarn.lock index ea9c148df1..53423b41ac 100644 --- a/examples/web_testing/yarn.lock +++ b/examples/web_testing/yarn.lock @@ -2,17 +2,17 @@ # yarn lockfile v1 -"@bazel/karma@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.0.tgz#32947f999617e2c938f6bf92889a64d363f7cd38" - integrity sha512-SkvDVqdCjD0Gn5V1enWqHAnZ83ULffhT+czXSRrPpITaQbbHWxA9IsU1uojzyJIWR3g2xLJcsqsErBHLIM5qCw== +"@bazel/karma@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.1.tgz#889e2c5fbc07f2c9021e0074f7cad37c2b697c5b" + integrity sha512-cJkv4UPy1Nj2Jgw47dviU222a5eeeRhaZa/cJApB6/hvEGAwKdTW3l3C8B29aonzO5K8skPDqw2urzhgJ3q2lA== dependencies: tmp "0.1.0" -"@bazel/typescript@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.0.tgz#2581569b8ad1c7ec35dbe0528c0b7a66dc084af3" - integrity sha512-Lv8p97dNpXsn5cdeMM0afmayJjFHqJL+dR41KrScYQHLvPeF2LMTPI9prgWHFc3XArcEjSN7IK4TCVu4q3ytPw== +"@bazel/typescript@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" + integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/webapp/package.json b/examples/webapp/package.json index b9e8e658cc..351531feaf 100644 --- a/examples/webapp/package.json +++ b/examples/webapp/package.json @@ -4,10 +4,10 @@ "@babel/cli": "^7.6.0", "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", - "@bazel/protractor": "^2.0.0-rc.0", - "@bazel/rollup": "^2.0.0-rc.0", - "@bazel/terser": "^2.0.0-rc.0", - "@bazel/typescript": "^2.0.0-rc.0", + "@bazel/protractor": "^2.0.0-rc.1", + "@bazel/rollup": "^2.0.0-rc.1", + "@bazel/terser": "^2.0.0-rc.1", + "@bazel/typescript": "^2.0.0-rc.1", "http-server": "^0.11.1", "mocha": "^6.2.1", "protractor": "^5.4.2", diff --git a/examples/webapp/yarn.lock b/examples/webapp/yarn.lock index 850a8672fa..d4c88e0e10 100644 --- a/examples/webapp/yarn.lock +++ b/examples/webapp/yarn.lock @@ -655,25 +655,25 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/protractor@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.0.tgz#53f751a8d53e4c795dc568e629f1c56d360cb587" - integrity sha512-+7aXrWOeOvDTyFdrjD1N9NRzmnLtisS3ep2sxv0Z/+XkleX5+IUxI/RMXRhQXflGidf2aOtblUMTMBucC6B1/Q== - -"@bazel/rollup@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.0.tgz#b184b9c9947bdfe57ca5167bce4b0ee15d2a321f" - integrity sha512-ZV3UUfOq9/JIPl7nwrR+Domncjd8J/uUPwnQGNwKz4yfS57NnR4A5mFoUjXeCKhPQZukaSt6Pydp2IUqrRGZkw== - -"@bazel/terser@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.0.tgz#0f62465c44dc9a25a60f6355394e15c8c7466c6a" - integrity sha512-7lUInOkxJHw5DOVuEpYrTtpe7KK3vpC35w5KIPFCdIbCULrgyH0624ahmAKWj0e0152EpUFidmr4eBio0idtaA== - -"@bazel/typescript@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.0.tgz#2581569b8ad1c7ec35dbe0528c0b7a66dc084af3" - integrity sha512-Lv8p97dNpXsn5cdeMM0afmayJjFHqJL+dR41KrScYQHLvPeF2LMTPI9prgWHFc3XArcEjSN7IK4TCVu4q3ytPw== +"@bazel/protractor@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.1.tgz#a616adecfe5fd9a7f35c2ed30c47caeeb9866f97" + integrity sha512-E/xS2Dwc8BFjeVLVxciTLnMRT93OfBeE+zANK388gf7n6tggcJkRiiRqQ1gKiGHirL/zrTiir13SoDuQf1msBA== + +"@bazel/rollup@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.1.tgz#6a4aec69347c7b7c9866b1def84aaef1c6c520fa" + integrity sha512-PvFvLRsctrdrljsYAD+IfDhpYVgedYx9xxH+q6gOZV63qlC45lCC/AAb4dw/TvjbeYK8IJ4pepJHd9NFTJFt6g== + +"@bazel/terser@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.1.tgz#b42ee3619f67788257a10cc4fea420a800381ce7" + integrity sha512-htQ7ETuHtKWji9ERYAgmarzAeU1w8iiIVtUAr2C0Ka1H76DhIa8fX/AkIgIr2f+5tDahyRZZirc02M8fEqIr/g== + +"@bazel/typescript@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" + integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/worker/package.json b/examples/worker/package.json index c8eb3fe21c..b8c2626288 100644 --- a/examples/worker/package.json +++ b/examples/worker/package.json @@ -1,6 +1,6 @@ { "private": true, "devDependencies": { - "@bazel/worker": "^2.0.0-rc.0" + "@bazel/worker": "^2.0.0-rc.1" } } diff --git a/examples/worker/yarn.lock b/examples/worker/yarn.lock index d1d2909653..bf2f88f2b3 100644 --- a/examples/worker/yarn.lock +++ b/examples/worker/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/worker@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-2.0.0-rc.0.tgz#5a4ee8c18010d7d0dd0b83a7be0b48165f721e13" - integrity sha512-aNFvoJCO12hCEVmayEPDbSuPU/6Ad4zUMZDcozCiAx7djqI/nvkYW5AJOmZmpDWBoGFhT53vXUCYDxiYaw0LYw== +"@bazel/worker@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-2.0.0-rc.1.tgz#1941a2f9ac006a53e0be3594df49857c657c0161" + integrity sha512-IwmEZuEyu0IAgbiCP4aQ4bmBzN/2bhB1NbIZh4mnd1LfGLR9tjgml1FTXhFYkI+EOUlXsOaf6kKvkp5Q6urcUQ== dependencies: protobufjs "6.8.8" From f42cb8ec1fe382c918c226c79e059f983652772c Mon Sep 17 00:00:00 2001 From: Smokrow Date: Wed, 27 May 2020 10:00:01 +0200 Subject: [PATCH 0741/1134] added default vue example for --- examples/vue/README.md | 17 + examples/vue/hello-world/.gitignore | 22 + examples/vue/hello-world/BUILD | 24 + examples/vue/hello-world/README.md | 24 + examples/vue/hello-world/WORKSPACE | 25 + examples/vue/hello-world/babel.config.js | 5 + examples/vue/hello-world/bazel-bin | 1 + examples/vue/hello-world/bazel-hello-world | 1 + examples/vue/hello-world/bazel-testlogs | 1 + examples/vue/hello-world/package-lock.json | 11655 ++++++++++++++++ examples/vue/hello-world/package.json | 44 + examples/vue/hello-world/public/favicon.ico | Bin 0 -> 4286 bytes examples/vue/hello-world/public/index.html | 17 + examples/vue/hello-world/src/App.vue | 28 + examples/vue/hello-world/src/BUILD | 5 + examples/vue/hello-world/src/assets/logo.png | Bin 0 -> 6849 bytes .../hello-world/src/components/HelloWorld.vue | 58 + examples/vue/hello-world/src/main.js | 8 + examples/vue/hello-world/yarn.lock | 8298 +++++++++++ 19 files changed, 20233 insertions(+) create mode 100644 examples/vue/README.md create mode 100644 examples/vue/hello-world/.gitignore create mode 100644 examples/vue/hello-world/BUILD create mode 100644 examples/vue/hello-world/README.md create mode 100644 examples/vue/hello-world/WORKSPACE create mode 100644 examples/vue/hello-world/babel.config.js create mode 120000 examples/vue/hello-world/bazel-bin create mode 120000 examples/vue/hello-world/bazel-hello-world create mode 120000 examples/vue/hello-world/bazel-testlogs create mode 100644 examples/vue/hello-world/package-lock.json create mode 100644 examples/vue/hello-world/package.json create mode 100644 examples/vue/hello-world/public/favicon.ico create mode 100644 examples/vue/hello-world/public/index.html create mode 100644 examples/vue/hello-world/src/App.vue create mode 100644 examples/vue/hello-world/src/BUILD create mode 100644 examples/vue/hello-world/src/assets/logo.png create mode 100644 examples/vue/hello-world/src/components/HelloWorld.vue create mode 100644 examples/vue/hello-world/src/main.js create mode 100644 examples/vue/hello-world/yarn.lock diff --git a/examples/vue/README.md b/examples/vue/README.md new file mode 100644 index 0000000000..c93a57b2b9 --- /dev/null +++ b/examples/vue/README.md @@ -0,0 +1,17 @@ +# How to setup Bazel for your Vue App + +## Setting up Vue + +Install the Vue CLI und run 'vue create PROJECTNAME'. This will create a your vueproject and create a package.json with all needed dependencies. + +## Adding Bazel to your Vue Application +The full instructions can be found [here](https://bazelbuild.github.io/rules_nodejs/install.html). + +Install bazelisk and ibazel with yarn or npm. +Create a WORKSPACE File in your the Root Folder of your Application. +Add the NodeJS Rules to your Workspace, as well as the NPM Packages. + +## Adding Building and Serving to your Ruleset +TODO + + diff --git a/examples/vue/hello-world/.gitignore b/examples/vue/hello-world/.gitignore new file mode 100644 index 0000000000..11f5d71423 --- /dev/null +++ b/examples/vue/hello-world/.gitignore @@ -0,0 +1,22 @@ +.DS_Store +node_modules +/dist + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/examples/vue/hello-world/BUILD b/examples/vue/hello-world/BUILD new file mode 100644 index 0000000000..0126c78ada --- /dev/null +++ b/examples/vue/hello-world/BUILD @@ -0,0 +1,24 @@ +load("@npm//@vue/cli-service:index.bzl", "vue_cli_service") +load("@build_bazel_rules_nodejs//:index.bzl", "npm_package_bin") + +vue_cli_service( + name = "serve", + data = [":package.json", + ":package-lock.json", + "babel.config.js", + "@npm//:node_modules", + "//src:srcfiles",], + args = ["serve"], +) + +vue_cli_service( + name = "build", + data = [":package.json", + ":package-lock.json", + "babel.config.js", + "@npm//:node_modules", + "//src:srcfiles",], + args = ["build","--dest", "$(@D)/dist"], + outs = ["dist"] +) + diff --git a/examples/vue/hello-world/README.md b/examples/vue/hello-world/README.md new file mode 100644 index 0000000000..f1b71d4aeb --- /dev/null +++ b/examples/vue/hello-world/README.md @@ -0,0 +1,24 @@ +# hello-world + +## Project setup +``` +npm install +``` + +### Compiles and hot-reloads for development +``` +npm run serve +``` + +### Compiles and minifies for production +``` +npm run build +``` + +### Lints and fixes files +``` +npm run lint +``` + +### Customize configuration +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/examples/vue/hello-world/WORKSPACE b/examples/vue/hello-world/WORKSPACE new file mode 100644 index 0000000000..27950d3675 --- /dev/null +++ b/examples/vue/hello-world/WORKSPACE @@ -0,0 +1,25 @@ +workspace( + name = "helloworld", + managed_directories = {"@npm": ["node_modules"]}, +) + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +http_archive( + name = "build_bazel_rules_nodejs", + sha256 = "f9e7b9f42ae202cc2d2ce6d698ccb49a9f7f7ea572a78fd451696d03ef2ee116", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/1.6.0/rules_nodejs-1.6.0.tar.gz"], +) + +load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories") + + + +node_repositories(package_json = ["//:package.json"]) + +load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") + +yarn_install( + name = "npm", + package_json = "//:package.json", + yarn_lock = "//:yarn.lock", +) diff --git a/examples/vue/hello-world/babel.config.js b/examples/vue/hello-world/babel.config.js new file mode 100644 index 0000000000..e9558405fd --- /dev/null +++ b/examples/vue/hello-world/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/examples/vue/hello-world/bazel-bin b/examples/vue/hello-world/bazel-bin new file mode 120000 index 0000000000..5f3c8d93eb --- /dev/null +++ b/examples/vue/hello-world/bazel-bin @@ -0,0 +1 @@ +/home/momo/.cache/bazel/_bazel_momo/d9f8a56c1a07c723a745c9c08b6a401d/execroot/helloworld/bazel-out/k8-fastbuild/bin \ No newline at end of file diff --git a/examples/vue/hello-world/bazel-hello-world b/examples/vue/hello-world/bazel-hello-world new file mode 120000 index 0000000000..6fae2e5e5b --- /dev/null +++ b/examples/vue/hello-world/bazel-hello-world @@ -0,0 +1 @@ +/home/momo/.cache/bazel/_bazel_momo/d9f8a56c1a07c723a745c9c08b6a401d/execroot/helloworld \ No newline at end of file diff --git a/examples/vue/hello-world/bazel-testlogs b/examples/vue/hello-world/bazel-testlogs new file mode 120000 index 0000000000..a1c67f722b --- /dev/null +++ b/examples/vue/hello-world/bazel-testlogs @@ -0,0 +1 @@ +/home/momo/.cache/bazel/_bazel_momo/d9f8a56c1a07c723a745c9c08b6a401d/execroot/helloworld/bazel-out/k8-fastbuild/testlogs \ No newline at end of file diff --git a/examples/vue/hello-world/package-lock.json b/examples/vue/hello-world/package-lock.json new file mode 100644 index 0000000000..46739acd43 --- /dev/null +++ b/examples/vue/hello-world/package-lock.json @@ -0,0 +1,11655 @@ +{ + "name": "hello-world", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/compat-data": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.0.tgz", + "integrity": "sha512-H59nKm/7ATMfocMobbSk4PkeAerKqoxk+EYBT0kV5sol0e8GBpGNHseZNNYX0VOItKngIf6GgUpEOAlOLIUvDA==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.0.tgz", + "integrity": "sha512-FGgV2XyPoVtYDvbFXlukEWt13Afka4mBRQ2CoTsHxpgVGO6XfgtT6eI+WyjQRGGTL90IDkIVmme8riFCLZ8lUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.10.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.10.0", + "@babel/parser": "^7.10.0", + "@babel/template": "^7.10.0", + "@babel/traverse": "^7.10.0", + "@babel/types": "^7.10.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.0.tgz", + "integrity": "sha512-ThoWCJHlgukbtCP79nAK4oLqZt5fVo70AHUni/y8Jotyg5rtJiG2FVl+iJjRNKIyl4hppqztLyAoEWcCvqyOFQ==", + "dev": true, + "requires": { + "@babel/types": "^7.10.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.0.tgz", + "integrity": "sha512-PW5Hlc1cQ8bLzY7YsLJP6PQ7GR6ZD8Av4JlP3DZk6QaZJvptsXNDn4Su64EjKAetLTJhVPDp8AEC+j2O6b/Gpg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.0", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.0.tgz", + "integrity": "sha512-n4tPJaI0iuLRayriXTQ8brP3fMA/fNmxpxswfNuhe4qXQbcCWzeAqm6SeR/KExIOcdCvOh/KkPQVgBsjcb0oqA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-member-expression-to-functions": "^7.10.0", + "@babel/helper-optimise-call-expression": "^7.10.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.10.0", + "@babel/helper-split-export-declaration": "^7.8.3" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", + "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.0.tgz", + "integrity": "sha512-xKLTpbMkJcvwEsDaTfs9h0IlfUiBLPFfybxaPpPPsQDsZTRg+UKh+86oK7sctHF3OUiRQkb10oS9MXSqgyV6/g==", + "dev": true, + "requires": { + "@babel/types": "^7.10.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.0.tgz", + "integrity": "sha512-HgMd8QKA8wMJs5uK/DYKdyzJAEuGt1zyDp9wLMlMR6LitTQTHPUE+msC82ZsEDwq+U3/yHcIXIngRm9MS4IcIg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", + "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.0.tgz", + "integrity": "sha512-erl4iVeiANf14JszXP7b69bSrz3e3+qW09pVvEmTWwzRQEOoyb1WFlYCA8d/VjVZGYW8+nGpLh7swf9CifH5wg==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.0", + "@babel/helper-optimise-call-expression": "^7.10.0", + "@babel/traverse": "^7.10.0", + "@babel/types": "^7.10.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.0.tgz", + "integrity": "sha512-lQtFJoDZAGf/t2PgR6Z59Q2MwjvOGGsxZ0BAlsrgyDhKuMbe63EfbQmVmcLfyTBj8J4UtiadQimcotvYVg/kVQ==", + "dev": true, + "requires": { + "@babel/template": "^7.10.0", + "@babel/traverse": "^7.10.0", + "@babel/types": "^7.10.0" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.0.tgz", + "integrity": "sha512-fnDUl1Uy2gThM4IFVW4ISNHqr3cJrCsRkSCasFgx0XDO9JcttDS5ytyBc4Cu4X1+fjoo3IVvFbRD6TeFlHJlEQ==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", + "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.0.tgz", + "integrity": "sha512-PTlxQfx0fZjOYlLe+gAhpb6Lph3zr03lpzqnzI8bWtcxDo/98rhO2adxe87F7OHg1G65nXxQ9ChPvB/0A3qSAg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-decorators": "^7.8.3" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.0.tgz", + "integrity": "sha512-n4oQLAAXTFj0OusjIbr6bcvVQf8oH6QziwAK8QNtKhjJAg71+hnU2rZDZYkYMmfOZ46dCWf+ybbHJ7hxfrzFlw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.0.tgz", + "integrity": "sha512-DOD+4TqMcRKJdAfN08+v9cciK5d0HW5hwTndOoKZEfEzU/mRrKboheD5mnWU4Q96VOnDdAj86kKjZhoQyG6s+A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.9.5" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.0.tgz", + "integrity": "sha512-bn+9XT8Y6FJCO37ewj4E1gIirR35nDm+mGcqQV4dM3LKSVp3QTAU3f65Z0ld4y6jdfAlv2VKzCh4mezhRnl+6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.8.3.tgz", + "integrity": "sha512-ysLAper960yy1TVXa2lMYdCQIGqtUXo8sVb+zYE7UTiZSLs6/wbZ0PrrXEKESJcK3SgFWrF8WpsaDzdslhuoZA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", + "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.8", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz", + "integrity": "sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz", + "integrity": "sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz", + "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.0.tgz", + "integrity": "sha512-AoMn0D3nLG9i71useuBrZZTnHbjnhcaTXCckUtOx3JPuhGGJdOUYMwOV9niPJ+nZCk52dfLLqbmV3pBMCRQLNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz", + "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.0.tgz", + "integrity": "sha512-yKoghHpYbC0eM+6o6arPUJT9BQBvOOn8iOCEHwFvkJ5gjAxYmoUaAuLwaoA9h2YvC6dzcRI0KPQOpRXr8qQTxQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.0.tgz", + "integrity": "sha512-0ldl5xEe9kbuhB1cDqs17JiBPEm1+6/LH7loo29+MAJOyB/xbpLI/u6mRzDPjr0nYL7z0S14FPT4hs2gH8Im9Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz", + "integrity": "sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz", + "integrity": "sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.0.tgz", + "integrity": "sha512-L/1xADoyJeb01fqKiHhl4ghAJOnFcHvx2JQA7bc8zdaDFDU4k62CJmXqDtNtJUNiOwlHZLWg1l7/Twf1aWARQw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", + "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz", + "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.0.tgz", + "integrity": "sha512-SWIc5IJnoLHk9qVRvvpebUW5lafStcKlLcqELMiNOApVIxPbCtkQfLRMCdaEKw4X92JItFKdoBxv2udiyGwFtg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "resolve": "^1.8.1", + "semver": "^5.5.1" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.0.tgz", + "integrity": "sha512-P3Zj04ylqumJBjmjylNl05ZHRo4j4gFNG7P70loys0//q5BTe30E8xIj6PnqEWAfsPYu2sdIPcJeeQdclqlM6A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.0.tgz", + "integrity": "sha512-6DwSPQzJ9kSRI1kNFfVAeYdeH7sUH0c1NOYSBGnpJ1ZUZ7mxPY1hxeAqzcrO5NKlOx7ghcy4nAbfFWTPx5IVEg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.0.tgz", + "integrity": "sha512-UOZNyiZRvIGvIudjCB8Y8OVkpAvlslec4qgwC73yEvx3Puz0c/xc28Yru36y5K+StOkPPM+VldTsmXPht5LpSg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.0", + "@babel/helper-compilation-targets": "^7.10.0", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.10.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.10.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.10.0", + "@babel/plugin-proposal-private-methods": "^7.8.3", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.10.0", + "@babel/plugin-transform-classes": "^7.9.5", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.10.0", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.10.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.6", + "@babel/plugin-transform-modules-commonjs": "^7.9.6", + "@babel/plugin-transform-modules-systemjs": "^7.10.0", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.9.5", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.10.0", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-escapes": "^7.10.0", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.10.0", + "browserslist": "^4.12.0", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.0.tgz", + "integrity": "sha512-tgYb3zVApHbLHYOPWtVwg25sBqHhfBXRKeKoTIyoheIxln1nA7oBl7SfHfiTG2GhDPI8EUBkOD/0wJCP/3HN4Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.0.tgz", + "integrity": "sha512-aMLEQn5tcG49LEWrsEwxiRTdaJmvLem3+JMCMSeCy2TILau0IDVyWdm/18ACx7XOCady64FLt6KkHy28tkDQHQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.10.0", + "@babel/types": "^7.10.0" + } + }, + "@babel/traverse": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.0.tgz", + "integrity": "sha512-NZsFleMaLF1zX3NxbtXI/JCs2RPOdpGru6UBdGsfhdsDsP+kFF+h2QQJnMJglxk0kc69YmMFs4A44OJY0tKo5g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.10.0", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.10.0", + "@babel/types": "^7.10.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.0.tgz", + "integrity": "sha512-t41W8yWFyQFPOAAvPvjyRhejcLGnJTA3iRpFcDbEKwVJ3UnHQePFzLk8GagTsucJlImyNwrGikGsYURrWbQG8w==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@bazel/bazelisk": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@bazel/bazelisk/-/bazelisk-1.4.0.tgz", + "integrity": "sha512-VNI/jF7baQiBy4x+u8gmSDsFehqaAuzMyLuCj0j6/aZCZSw2OssytJVj73m8sFYbXgj67D8iYEQ0gbuoafDk6w==", + "dev": true + }, + "@bazel/ibazel": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@bazel/ibazel/-/ibazel-0.13.1.tgz", + "integrity": "sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w==", + "dev": true + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "dev": true + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "dev": true + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@intervolga/optimize-cssnano-plugin": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz", + "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==", + "dev": true, + "requires": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz", + "integrity": "sha512-cWKrGaFX+rfbMrAxVv56DzhPNqOJPZuNIS2HGMELtgGzb+vsMzyig9mml5gZ/hr2BGtSLV+dP2LUEuAL8aG2mQ==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "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" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "@soda/get-current-script": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@soda/get-current-script/-/get-current-script-1.0.0.tgz", + "integrity": "sha512-9GvTek+7cVw7r+L7TNGOG1astZJWXz2h5q4BqMXl28KN+24iSCm1xo+RhZOZvwdT3bzNe9hD7riJc/lBoO7mgg==", + "dev": true + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.5.tgz", + "integrity": "sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "dev": true + }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz", + "integrity": "sha512-6tyf5Cqm4m6v7buITuwS+jHzPlIPxbFzEhXR5JGZpbrvOcp1hiQKckd305/3C7C36wFekNTQSxAtgeM0j0yoUw==", + "dev": true + }, + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.1.2.tgz", + "integrity": "sha512-YfdaoSMvD1nj7+DsrwfTvTnhDXI7bsuh+Y5qWwvQXlD24uLgnsoww3qbiZvWf/EoviZMrvqkqN4CBw0W3BWUTQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-preset-app": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.4.1.tgz", + "integrity": "sha512-VHVROEBBiW0dnuNuzlFElkncXo+zxh5Px0MZ51Th5da8UPbQodf43mnpotMnFtmCPTXAFL58tzDttu1FgrgfpQ==", + "dev": true, + "requires": { + "@babel/core": "^7.9.6", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-decorators": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.9.6", + "@babel/preset-env": "^7.9.6", + "@babel/runtime": "^7.9.6", + "@vue/babel-preset-jsx": "^1.1.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.6.5", + "core-js-compat": "^3.6.5", + "semver": "^6.1.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@vue/babel-preset-jsx": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.1.2.tgz", + "integrity": "sha512-zDpVnFpeC9YXmvGIDSsKNdL7qCG2rA3gjywLYHPCKDT10erjxF4U+6ay9X6TW5fl4GsDlJp9bVfAVQAAVzxxvQ==", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "@vue/babel-sugar-functional-vue": "^1.1.2", + "@vue/babel-sugar-inject-h": "^1.1.2", + "@vue/babel-sugar-v-model": "^1.1.2", + "@vue/babel-sugar-v-on": "^1.1.2" + } + }, + "@vue/babel-sugar-functional-vue": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.1.2.tgz", + "integrity": "sha512-YhmdJQSVEFF5ETJXzrMpj0nkCXEa39TvVxJTuVjzvP2rgKhdMmQzlJuMv/HpadhZaRVMCCF3AEjjJcK5q/cYzQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-inject-h": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.1.2.tgz", + "integrity": "sha512-VRSENdTvD5htpnVp7i7DNuChR5rVMcORdXjvv5HVvpdKHzDZAYiLSD+GhnhxLm3/dMuk8pSzV+k28ECkiN5m8w==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-v-model": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.1.2.tgz", + "integrity": "sha512-vLXPvNq8vDtt0u9LqFdpGM9W9IWDmCmCyJXuozlq4F4UYVleXJ2Fa+3JsnTZNJcG+pLjjfnEGHci2339Kj5sGg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-sugar-v-on": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.1.2.tgz", + "integrity": "sha512-T8ZCwC8Jp2uRtcZ88YwZtZXe7eQrJcfRq0uTFy6ShbwYJyz5qWskRFoVsdTi9o0WEhmQXxhQUewodOSCUPVmsQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "camelcase": "^5.0.0" + } + }, + "@vue/cli-overlay": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.4.1.tgz", + "integrity": "sha512-EQqAVy7O/qqGOfSYIGL073FWlr/s6QFA0wA1wY8pHnTS5WPwAiHT+D+xe+fgXKZ3KeL7v7u/le7YFIEVXFVXOg==", + "dev": true + }, + "@vue/cli-plugin-babel": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.4.1.tgz", + "integrity": "sha512-dmhymfm2UnZDw13k/zKT6YIj7je53mE37Y+jEJxpRUlCKFmZUDuYkJ8i5HmO0SnaCnEGqNELaBkoIFnY3aE2Gw==", + "dev": true, + "requires": { + "@babel/core": "^7.9.6", + "@vue/babel-preset-app": "^4.4.1", + "@vue/cli-shared-utils": "^4.4.1", + "babel-loader": "^8.1.0", + "cache-loader": "^4.1.0", + "thread-loader": "^2.1.3", + "webpack": "^4.0.0" + } + }, + "@vue/cli-plugin-eslint": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.4.1.tgz", + "integrity": "sha512-T+9+q44iajQEbe59z6Io3otFOsWnPOEVU+/hrDyC6aOToJbQo6P4VacByDDcuGYENAjAd8ENLSt18TaPNSIyRw==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.4.1", + "eslint-loader": "^2.2.1", + "globby": "^9.2.0", + "inquirer": "^7.1.0", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + } + }, + "@vue/cli-plugin-router": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.4.1.tgz", + "integrity": "sha512-kCSsJG7pjDvCJDjGtcCI5l0UjmqwNigOR41RkeGSjSUvzV4ArSniXjFqrOmtpMp36S5xCtwtt9MFm/K4fCubkQ==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.4.1" + } + }, + "@vue/cli-plugin-vuex": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.4.1.tgz", + "integrity": "sha512-FtOFsDP0qznwVaCz0BZmTzUm5vhHSJzX2/XD3L5dLTkrNxyDEbZmbKoX0n1OzBcQwZC7dkJZP2tdoCQx0mX//g==", + "dev": true + }, + "@vue/cli-service": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.4.1.tgz", + "integrity": "sha512-DVV0zr5Sw7pzdm3z3PRrfqihLgoJP/d9AgNFcSSQF/J9Gtvjf1t0PTJJFeLANHSL3kDWte+3kjc22sXayu0BJQ==", + "dev": true, + "requires": { + "@intervolga/optimize-cssnano-plugin": "^1.0.5", + "@soda/friendly-errors-webpack-plugin": "^1.7.1", + "@soda/get-current-script": "^1.0.0", + "@vue/cli-overlay": "^4.4.1", + "@vue/cli-plugin-router": "^4.4.1", + "@vue/cli-plugin-vuex": "^4.4.1", + "@vue/cli-shared-utils": "^4.4.1", + "@vue/component-compiler-utils": "^3.1.2", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^7.2.0", + "acorn-walk": "^7.1.1", + "address": "^1.1.2", + "autoprefixer": "^9.8.0", + "browserslist": "^4.12.0", + "cache-loader": "^4.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.4", + "clipboardy": "^2.3.0", + "cliui": "^6.0.0", + "copy-webpack-plugin": "^5.1.1", + "css-loader": "^3.5.3", + "cssnano": "^4.1.10", + "debug": "^4.1.1", + "default-gateway": "^5.0.5", + "dotenv": "^8.2.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^4.2.0", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^3.2.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "lodash.transform": "^4.6.0", + "mini-css-extract-plugin": "^0.9.0", + "minimist": "^1.2.5", + "pnp-webpack-plugin": "^1.6.4", + "portfinder": "^1.0.26", + "postcss-loader": "^3.0.0", + "ssri": "^7.1.0", + "terser-webpack-plugin": "^2.3.6", + "thread-loader": "^2.1.3", + "url-loader": "^2.2.0", + "vue-loader": "^15.9.2", + "vue-style-loader": "^4.1.2", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.8.0", + "webpack-chain": "^6.4.0", + "webpack-dev-server": "^3.11.0", + "webpack-merge": "^4.2.2" + }, + "dependencies": { + "acorn": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", + "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", + "dev": true + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "serialize-javascript": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", + "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "terser-webpack-plugin": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.6.tgz", + "integrity": "sha512-I8IDsQwZrqjdmOicNeE8L/MhwatAap3mUrtcAKJuilsemUNcX+Hier/eAzwStVqhlCxq0aG3ni9bK/0BESXkTg==", + "dev": true, + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.3.1", + "jest-worker": "^25.4.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.6.6", + "serialize-javascript": "^3.0.0", + "source-map": "^0.6.1", + "terser": "^4.6.12", + "webpack-sources": "^1.4.3" + } + } + } + }, + "@vue/cli-shared-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.4.1.tgz", + "integrity": "sha512-teevHgI7XUsKVMOncx3M+6iLjO28woGfRwgUG4hR83moVBHQe5x2OCr2i5t/58bwpv269RD5RYXBQCGtIXuxZw==", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "request-promise-native": "^1.0.8", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@vue/component-compiler-utils": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.1.2.tgz", + "integrity": "sha512-QLq9z8m79mCinpaEeSURhnNCN6djxpHw0lpP/bodMlt5kALfONpryMthvnrQOlTcIKoF+VoPi+lPHUYeDFPXug==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "@vue/preload-webpack-plugin": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.1.tgz", + "integrity": "sha512-8VCoJeeH8tCkzhkpfOkt+abALQkS11OIHhte5MBzYaKMTqK0A3ZAKEUVAffsOklhEv7t0yrQt696Opnu9oAx+w==", + "dev": true + }, + "@vue/web-component-wrapper": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.2.0.tgz", + "integrity": "sha512-Xn/+vdm9CjuC9p3Ae+lTClNutrVhsXpzxvoTXXtoys6kVRX9FkueSUAqSWAyZntmVLlR4DosBV4pH8y5Z/HbUw==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true + }, + "acorn-walk": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz", + "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==", + "dev": true + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "arch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.2.tgz", + "integrity": "sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.0.tgz", + "integrity": "sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001061", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.30", + "postcss-value-parser": "^4.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", + "dev": true + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bfj": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", + "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true, + "optional": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "browserify-sign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", + "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.2", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", + "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz", + "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "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" + } + }, + "cache-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-4.1.0.tgz", + "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==", + "dev": true, + "requires": { + "buffer-json": "^2.0.0", + "find-cache-dir": "^3.0.0", + "loader-utils": "^1.2.3", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001066", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001066.tgz", + "integrity": "sha512-Gfj/WAastBtfxLws0RCh2sDbTK/8rJuSeZMecrSkNGYxPcv7EzblmDGfWQCFEQcSqYE2BRgQiJh8HOD07N5hIw==", + "dev": true + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-types": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", + "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", + "dev": true + }, + "chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-highlight": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.4.tgz", + "integrity": "sha512-s7Zofobm20qriqDoU9sXptQx0t2R9PEgac92mENNm7xaEe1hn71IIMsXMK+6encA6WRCWWxIGQbipr3q998tlQ==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "highlight.js": "^9.6.0", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^5.1.1", + "yargs": "^15.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cli-spinners": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.3.0.tgz", + "integrity": "sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w==", + "dev": true + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + } + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "dev": true, + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "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": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "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": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "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": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "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": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.5.3.tgz", + "integrity": "sha512-UEr9NH5Lmi7+dguAm+/JSPovNjYbm2k3TK58EiwQHzOHH5Jfq1Y+XoP2bQO6TMn7PptMd0opxxedAWcaSTRKHw==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.27", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.3", + "schema-utils": "^2.6.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-what": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", + "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "dev": true, + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true + }, + "default-gateway": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-5.0.5.tgz", + "integrity": "sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==", + "dev": true, + "requires": { + "execa": "^3.3.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "easy-stack": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz", + "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.453", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.453.tgz", + "integrity": "sha512-IQbCfjJR0NDDn/+vojTlq7fPSREcALtF8M1n01gw7nQghCtfFYrJ2dfhsp8APr8bANoFC8vRTFVXMOGpT0eetw==", + "dev": true + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.2.tgz", + "integrity": "sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", + "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", + "dev": true, + "requires": { + "stackframe": "^1.1.1" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "eslint-loader": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz", + "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", + "dev": true, + "requires": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + } + }, + "eslint-plugin-vue": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz", + "integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==", + "dev": true, + "requires": { + "natural-compare": "^1.4.0", + "semver": "^5.6.0", + "vue-eslint-parser": "^7.0.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", + "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", + "dev": true + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", + "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + } + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.11.0.tgz", + "integrity": "sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA==", + "dev": true, + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "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" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "highlight.js": { + "version": "9.18.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz", + "integrity": "sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + } + } + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "inquirer": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + } + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-docker": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", + "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "javascript-stringify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.0.1.tgz", + "integrity": "sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow==", + "dev": true + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-message": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz", + "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=", + "dev": true + }, + "js-queue": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.0.tgz", + "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", + "dev": true, + "requires": { + "easy-stack": "^1.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "launch-editor": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.2.1.tgz", + "integrity": "sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "shell-quote": "^1.6.1" + } + }, + "launch-editor-middleware": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz", + "integrity": "sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg==", + "dev": true, + "requires": { + "launch-editor": "^2.2.1" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "loader-fs-cache": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", + "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", + "dev": true, + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "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": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "mime": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", + "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==", + "dev": true + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz", + "integrity": "sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "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-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" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "dev": true + }, + "node-ipc": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.1.tgz", + "integrity": "sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w==", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.5", + "js-queue": "2.0.0" + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "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": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "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.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.56", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.56.tgz", + "integrity": "sha512-EVo605FhWLygH8a64TjgpjyHYOihkxECwX1bHHr8tETJKWEiWS2YJjPbvsX2jFjnjTNEgBCmk9mLjKG1Mf11cw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-is": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opener": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", + "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-5.1.1.tgz", + "integrity": "sha512-CF+TKjXqoqyDwHqBhFQ+3l5t83xYi6fVT1tQNg+Ye0JRLnTxWvIroCjEp1A0k4lneHNBGnICUf0cfYVYGEazqw==", + "dev": true, + "requires": { + "parse5": "^5.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "optional": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "portfinder": { + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", + "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.31.tgz", + "integrity": "sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true, + "optional": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "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": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", + "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "request-promise-native": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", + "dev": true, + "requires": { + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "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.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", + "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.4.0", + "websocket-driver": "0.6.5" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stackframe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.1.1.tgz", + "integrity": "sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", + "dev": true + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "terser": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", + "integrity": "sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "thenify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "thread-loader": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz", + "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", + "dev": true, + "requires": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "dev": true + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", + "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "vue": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz", + "integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==" + }, + "vue-eslint-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz", + "integrity": "sha512-Kr21uPfthDc63nDl27AGQEhtt9VrZ9nkYk/NTftJ2ws9XiJwzJJCnCr3AITQ2jpRMA0XPGDECxYH8E027qMK9Q==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-scope": "^5.0.0", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.0.1", + "lodash": "^4.17.15" + }, + "dependencies": { + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + } + } + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "vue-loader": { + "version": "15.9.2", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.2.tgz", + "integrity": "sha512-oXBubaY//CYEISBlHX+c2YPJbmOH68xXPXjFv4MAgPqQvUsnjrBAjCJi8HXZ/r/yfn0tPL5VZj1Zcp8mJPI8VA==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-style-loader": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", + "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-template-compiler": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz", + "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "watchpack": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", + "integrity": "sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==", + "dev": true, + "requires": { + "chokidar": "^3.4.0", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webpack": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", + "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.1", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz", + "integrity": "sha512-PODQhAYVEourCcOuU+NiYI7WdR8QyELZGgPvB1y2tjbUpbmcQOt5Q7jEK+ttd5se0KSBKD9SXHCEozS++Wllmw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.15", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", + "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", + "dev": true + } + } + }, + "webpack-chain": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.4.0.tgz", + "integrity": "sha512-f97PYqxU+9/u0IUqp/ekAHRhBD1IQwhBv3wlJo2nvyELpr2vNnUqO3XQEk+qneg0uWGP54iciotszpjfnEExFA==", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, + "webpack-dev-server": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", + "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.20", + "sockjs-client": "1.4.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "dev": true, + "requires": { + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", + "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", + "dev": true, + "requires": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + } + } +} diff --git a/examples/vue/hello-world/package.json b/examples/vue/hello-world/package.json new file mode 100644 index 0000000000..cecb2cecf6 --- /dev/null +++ b/examples/vue/hello-world/package.json @@ -0,0 +1,44 @@ +{ + "name": "hello-world", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "core-js": "^3.6.5", + "vue": "^2.6.11" + }, + "devDependencies": { + "@bazel/bazelisk": "^1.4.0", + "@bazel/ibazel": "^0.13.1", + "@vue/cli-plugin-babel": "~4.4.0", + "@vue/cli-plugin-eslint": "~4.4.0", + "@vue/cli-service": "~4.4.0", + "babel-eslint": "^10.1.0", + "eslint": "^6.7.2", + "eslint-plugin-vue": "^6.2.2", + "vue-template-compiler": "^2.6.11" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/essential", + "eslint:recommended" + ], + "parserOptions": { + "parser": "babel-eslint" + }, + "rules": {} + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead" + ] +} diff --git a/examples/vue/hello-world/public/favicon.ico b/examples/vue/hello-world/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/examples/vue/hello-world/public/index.html b/examples/vue/hello-world/public/index.html new file mode 100644 index 0000000000..4123528656 --- /dev/null +++ b/examples/vue/hello-world/public/index.html @@ -0,0 +1,17 @@ + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + +
+ + + diff --git a/examples/vue/hello-world/src/App.vue b/examples/vue/hello-world/src/App.vue new file mode 100644 index 0000000000..55df315325 --- /dev/null +++ b/examples/vue/hello-world/src/App.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/examples/vue/hello-world/src/BUILD b/examples/vue/hello-world/src/BUILD new file mode 100644 index 0000000000..879c82a013 --- /dev/null +++ b/examples/vue/hello-world/src/BUILD @@ -0,0 +1,5 @@ +filegroup( + name = "srcfiles", + srcs = glob(["**/**"]), + visibility = ["//visibility:public"] +) diff --git a/examples/vue/hello-world/src/assets/logo.png b/examples/vue/hello-world/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d2503fc2a44b5053b0837ebea6e87a2d339a43 GIT binary patch literal 6849 zcmaKRcUV(fvo}bjDT-7nLI_nlK}sT_69H+`qzVWDA|yaU?}j417wLi^B1KB1SLsC& zL0ag7$U(XW5YR7p&Ux?sP$d4lvMt8C^+TcQu4F zQqv!UF!I+kw)c0jhd6+g6oCr9P?7)?!qX1ui*iL{p}sKCAGuJ{{W)0z1pLF|=>h}& zt(2Lr0Z`2ig8<5i%Zk}cO5Fm=LByqGWaS`oqChZdEFmc`0hSb#gg|Aap^{+WKOYcj zHjINK)KDG%&s?Mt4CL(T=?;~U@bU2x_mLKN!#GJuK_CzbNw5SMEJorG!}_5;?R>@1 zSl)jns3WlU7^J%=(hUtfmuUCU&C3%8B5C^f5>W2Cy8jW3#{Od{lF1}|?c61##3dzA zsPlFG;l_FzBK}8>|H_Ru_H#!_7$UH4UKo3lKOA}g1(R&|e@}GINYVzX?q=_WLZCgh z)L|eJMce`D0EIwgRaNETDsr+?vQknSGAi=7H00r`QnI%oQnFxm`G2umXso9l+8*&Q z7WqF|$p49js$mdzo^BXpH#gURy=UO;=IMrYc5?@+sR4y_?d*~0^YP7d+y0{}0)zBM zIKVM(DBvICK#~7N0a+PY6)7;u=dutmNqK3AlsrUU9U`d;msiucB_|8|2kY=(7XA;G zwDA8AR)VCA#JOkxm#6oHNS^YVuOU;8p$N)2{`;oF|rQ?B~K$%rHDxXs+_G zF5|-uqHZvSzq}L;5Kcy_P+x0${33}Ofb6+TX&=y;;PkEOpz%+_bCw_{<&~ zeLV|!bP%l1qxywfVr9Z9JI+++EO^x>ZuCK);=$VIG1`kxK8F2M8AdC$iOe3cj1fo(ce4l-9 z7*zKy3={MixvUk=enQE;ED~7tv%qh&3lR<0m??@w{ILF|e#QOyPkFYK!&Up7xWNtL zOW%1QMC<3o;G9_S1;NkPB6bqbCOjeztEc6TsBM<(q9((JKiH{01+Ud=uw9B@{;(JJ z-DxI2*{pMq`q1RQc;V8@gYAY44Z!%#W~M9pRxI(R?SJ7sy7em=Z5DbuDlr@*q|25V)($-f}9c#?D%dU^RS<(wz?{P zFFHtCab*!rl(~j@0(Nadvwg8q|4!}L^>d?0al6}Rrv9$0M#^&@zjbfJy_n!%mVHK4 z6pLRIQ^Uq~dnyy$`ay51Us6WaP%&O;@49m&{G3z7xV3dLtt1VTOMYl3UW~Rm{Eq4m zF?Zl_v;?7EFx1_+#WFUXxcK78IV)FO>42@cm@}2I%pVbZqQ}3;p;sDIm&knay03a^ zn$5}Q$G!@fTwD$e(x-~aWP0h+4NRz$KlnO_H2c< z(XX#lPuW_%H#Q+c&(nRyX1-IadKR-%$4FYC0fsCmL9ky3 zKpxyjd^JFR+vg2!=HWf}2Z?@Td`0EG`kU?{8zKrvtsm)|7>pPk9nu@2^z96aU2<#` z2QhvH5w&V;wER?mopu+nqu*n8p~(%QkwSs&*0eJwa zMXR05`OSFpfyRb!Y_+H@O%Y z0=K^y6B8Gcbl?SA)qMP3Z+=C(?8zL@=74R=EVnE?vY!1BQy2@q*RUgRx4yJ$k}MnL zs!?74QciNb-LcG*&o<9=DSL>1n}ZNd)w1z3-0Pd^4ED1{qd=9|!!N?xnXjM!EuylY z5=!H>&hSofh8V?Jofyd!h`xDI1fYAuV(sZwwN~{$a}MX^=+0TH*SFp$vyxmUv7C*W zv^3Gl0+eTFgBi3FVD;$nhcp)ka*4gSskYIqQ&+M}xP9yLAkWzBI^I%zR^l1e?bW_6 zIn{mo{dD=)9@V?s^fa55jh78rP*Ze<3`tRCN4*mpO$@7a^*2B*7N_|A(Ve2VB|)_o z$=#_=aBkhe(ifX}MLT()@5?OV+~7cXC3r!%{QJxriXo9I%*3q4KT4Xxzyd{ z9;_%=W%q!Vw$Z7F3lUnY+1HZ*lO;4;VR2+i4+D(m#01OYq|L_fbnT;KN<^dkkCwtd zF7n+O7KvAw8c`JUh6LmeIrk4`F3o|AagKSMK3))_5Cv~y2Bb2!Ibg9BO7Vkz?pAYX zoI=B}+$R22&IL`NCYUYjrdhwjnMx_v=-Qcx-jmtN>!Zqf|n1^SWrHy zK|MwJ?Z#^>)rfT5YSY{qjZ&`Fjd;^vv&gF-Yj6$9-Dy$<6zeP4s+78gS2|t%Z309b z0^fp~ue_}i`U9j!<|qF92_3oB09NqgAoehQ`)<)dSfKoJl_A6Ec#*Mx9Cpd-p#$Ez z={AM*r-bQs6*z$!*VA4|QE7bf@-4vb?Q+pPKLkY2{yKsw{&udv_2v8{Dbd zm~8VAv!G~s)`O3|Q6vFUV%8%+?ZSVUa(;fhPNg#vab@J*9XE4#D%)$UU-T5`fwjz! z6&gA^`OGu6aUk{l*h9eB?opVdrHK>Q@U>&JQ_2pR%}TyOXGq_6s56_`U(WoOaAb+K zXQr#6H}>a-GYs9^bGP2Y&hSP5gEtW+GVC4=wy0wQk=~%CSXj=GH6q z-T#s!BV`xZVxm{~jr_ezYRpqqIcXC=Oq`b{lu`Rt(IYr4B91hhVC?yg{ol4WUr3v9 zOAk2LG>CIECZ-WIs0$N}F#eoIUEtZudc7DPYIjzGqDLWk_A4#(LgacooD z2K4IWs@N`Bddm-{%oy}!k0^i6Yh)uJ1S*90>|bm3TOZxcV|ywHUb(+CeX-o1|LTZM zwU>dY3R&U)T(}5#Neh?-CWT~@{6Ke@sI)uSuzoah8COy)w)B)aslJmp`WUcjdia-0 zl2Y}&L~XfA`uYQboAJ1;J{XLhYjH){cObH3FDva+^8ioOQy%Z=xyjGLmWMrzfFoH; zEi3AG`_v+%)&lDJE;iJWJDI@-X9K5O)LD~j*PBe(wu+|%ar~C+LK1+-+lK=t# z+Xc+J7qp~5q=B~rD!x78)?1+KUIbYr^5rcl&tB-cTtj+e%{gpZZ4G~6r15+d|J(ky zjg@@UzMW0k9@S#W(1H{u;Nq(7llJbq;;4t$awM;l&(2s+$l!Ay9^Ge|34CVhr7|BG z?dAR83smef^frq9V(OH+a+ki#q&-7TkWfFM=5bsGbU(8mC;>QTCWL5ydz9s6k@?+V zcjiH`VI=59P-(-DWXZ~5DH>B^_H~;4$)KUhnmGo*G!Tq8^LjfUDO)lASN*=#AY_yS zqW9UX(VOCO&p@kHdUUgsBO0KhXxn1sprK5h8}+>IhX(nSXZKwlNsjk^M|RAaqmCZB zHBolOHYBas@&{PT=R+?d8pZu zUHfyucQ`(umXSW7o?HQ3H21M`ZJal+%*)SH1B1j6rxTlG3hx1IGJN^M7{$j(9V;MZ zRKybgVuxKo#XVM+?*yTy{W+XHaU5Jbt-UG33x{u(N-2wmw;zzPH&4DE103HV@ER86 z|FZEmQb|&1s5#`$4!Cm}&`^{(4V}OP$bk`}v6q6rm;P!H)W|2i^e{7lTk2W@jo_9q z*aw|U7#+g59Fv(5qI`#O-qPj#@_P>PC#I(GSp3DLv7x-dmYK=C7lPF8a)bxb=@)B1 zUZ`EqpXV2dR}B&r`uM}N(TS99ZT0UB%IN|0H%DcVO#T%L_chrgn#m6%x4KE*IMfjX zJ%4veCEqbXZ`H`F_+fELMC@wuy_ch%t*+Z+1I}wN#C+dRrf2X{1C8=yZ_%Pt6wL_~ zZ2NN-hXOT4P4n$QFO7yYHS-4wF1Xfr-meG9Pn;uK51?hfel`d38k{W)F*|gJLT2#T z<~>spMu4(mul-8Q3*pf=N4DcI)zzjqAgbE2eOT7~&f1W3VsdD44Ffe;3mJp-V@8UC z)|qnPc12o~$X-+U@L_lWqv-RtvB~%hLF($%Ew5w>^NR82qC_0FB z)=hP1-OEx?lLi#jnLzH}a;Nvr@JDO-zQWd}#k^an$Kwml;MrD&)sC5b`s0ZkVyPkb zt}-jOq^%_9>YZe7Y}PhW{a)c39G`kg(P4@kxjcYfgB4XOOcmezdUI7j-!gs7oAo2o zx(Ph{G+YZ`a%~kzK!HTAA5NXE-7vOFRr5oqY$rH>WI6SFvWmahFav!CfRMM3%8J&c z*p+%|-fNS_@QrFr(at!JY9jCg9F-%5{nb5Bo~z@Y9m&SHYV`49GAJjA5h~h4(G!Se zZmK{Bo7ivCfvl}@A-ptkFGcWXAzj3xfl{evi-OG(TaCn1FAHxRc{}B|x+Ua1D=I6M z!C^ZIvK6aS_c&(=OQDZfm>O`Nxsw{ta&yiYPA~@e#c%N>>#rq)k6Aru-qD4(D^v)y z*>Rs;YUbD1S8^D(ps6Jbj0K3wJw>L4m)0e(6Pee3Y?gy9i0^bZO?$*sv+xKV?WBlh zAp*;v6w!a8;A7sLB*g-^<$Z4L7|5jXxxP1}hQZ<55f9<^KJ>^mKlWSGaLcO0=$jem zWyZkRwe~u{{tU63DlCaS9$Y4CP4f?+wwa(&1ou)b>72ydrFvm`Rj-0`kBJgK@nd(*Eh!(NC{F-@=FnF&Y!q`7){YsLLHf0_B6aHc# z>WIuHTyJwIH{BJ4)2RtEauC7Yq7Cytc|S)4^*t8Va3HR zg=~sN^tp9re@w=GTx$;zOWMjcg-7X3Wk^N$n;&Kf1RgVG2}2L-(0o)54C509C&77i zrjSi{X*WV=%C17((N^6R4Ya*4#6s_L99RtQ>m(%#nQ#wrRC8Y%yxkH;d!MdY+Tw@r zjpSnK`;C-U{ATcgaxoEpP0Gf+tx);buOMlK=01D|J+ROu37qc*rD(w`#O=3*O*w9?biwNoq3WN1`&Wp8TvKj3C z3HR9ssH7a&Vr<6waJrU zdLg!ieYz%U^bmpn%;(V%%ugMk92&?_XX1K@mwnVSE6!&%P%Wdi7_h`CpScvspMx?N zQUR>oadnG17#hNc$pkTp+9lW+MBKHRZ~74XWUryd)4yd zj98$%XmIL4(9OnoeO5Fnyn&fpQ9b0h4e6EHHw*l68j;>(ya`g^S&y2{O8U>1*>4zR zq*WSI_2o$CHQ?x0!wl9bpx|Cm2+kFMR)oMud1%n2=qn5nE&t@Fgr#=Zv2?}wtEz^T z9rrj=?IH*qI5{G@Rn&}^Z{+TW}mQeb9=8b<_a`&Cm#n%n~ zU47MvCBsdXFB1+adOO)03+nczfWa#vwk#r{o{dF)QWya9v2nv43Zp3%Ps}($lA02*_g25t;|T{A5snSY?3A zrRQ~(Ygh_ebltHo1VCbJb*eOAr;4cnlXLvI>*$-#AVsGg6B1r7@;g^L zFlJ_th0vxO7;-opU@WAFe;<}?!2q?RBrFK5U{*ai@NLKZ^};Ul}beukveh?TQn;$%9=R+DX07m82gP$=}Uo_%&ngV`}Hyv8g{u z3SWzTGV|cwQuFIs7ZDOqO_fGf8Q`8MwL}eUp>q?4eqCmOTcwQuXtQckPy|4F1on8l zP*h>d+cH#XQf|+6c|S{7SF(Lg>bR~l(0uY?O{OEVlaxa5@e%T&xju=o1`=OD#qc16 zSvyH*my(dcp6~VqR;o(#@m44Lug@~_qw+HA=mS#Z^4reBy8iV?H~I;{LQWk3aKK8$bLRyt$g?- +
+

{{ msg }}

+

+ For a guide and recipes on how to configure / customize this project,
+ check out the + vue-cli documentation. +

+

Installed CLI Plugins

+ +

Essential Links

+ +

Ecosystem

+ +
+ + + + + + diff --git a/examples/vue/hello-world/src/main.js b/examples/vue/hello-world/src/main.js new file mode 100644 index 0000000000..63eb05f711 --- /dev/null +++ b/examples/vue/hello-world/src/main.js @@ -0,0 +1,8 @@ +import Vue from 'vue' +import App from './App.vue' + +Vue.config.productionTip = false + +new Vue({ + render: h => h(App), +}).$mount('#app') diff --git a/examples/vue/hello-world/yarn.lock b/examples/vue/hello-world/yarn.lock new file mode 100644 index 0000000000..78c006c099 --- /dev/null +++ b/examples/vue/hello-world/yarn.lock @@ -0,0 +1,8298 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/compat-data@^7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.0.tgz#1e9129ec36bc7cc5ec202801d8af9529699b8d5e" + integrity sha512-H59nKm/7ATMfocMobbSk4PkeAerKqoxk+EYBT0kV5sol0e8GBpGNHseZNNYX0VOItKngIf6GgUpEOAlOLIUvDA== + dependencies: + browserslist "^4.12.0" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@^7.9.6": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.0.tgz#a6fe5db77ebfb61e0da6c5c36aaf14aab07b2b44" + integrity sha512-FGgV2XyPoVtYDvbFXlukEWt13Afka4mBRQ2CoTsHxpgVGO6XfgtT6eI+WyjQRGGTL90IDkIVmme8riFCLZ8lUw== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.10.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.10.0" + "@babel/parser" "^7.10.0" + "@babel/template" "^7.10.0" + "@babel/traverse" "^7.10.0" + "@babel/types" "^7.10.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.0.tgz#a238837896edf35ee5fbfb074548d3256b4bc55d" + integrity sha512-ThoWCJHlgukbtCP79nAK4oLqZt5fVo70AHUni/y8Jotyg5rtJiG2FVl+iJjRNKIyl4hppqztLyAoEWcCvqyOFQ== + dependencies: + "@babel/types" "^7.10.0" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-compilation-targets@^7.10.0", "@babel/helper-compilation-targets@^7.9.6": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.0.tgz#c2734604ddfaa616479759a0cc2593d1928304bd" + integrity sha512-PW5Hlc1cQ8bLzY7YsLJP6PQ7GR6ZD8Av4JlP3DZk6QaZJvptsXNDn4Su64EjKAetLTJhVPDp8AEC+j2O6b/Gpg== + dependencies: + "@babel/compat-data" "^7.10.0" + browserslist "^4.12.0" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.10.0", "@babel/helper-create-class-features-plugin@^7.8.3": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.0.tgz#3a2b7b86f6365ea4ac3837a49ec5791e65217944" + integrity sha512-n4tPJaI0iuLRayriXTQ8brP3fMA/fNmxpxswfNuhe4qXQbcCWzeAqm6SeR/KExIOcdCvOh/KkPQVgBsjcb0oqA== + dependencies: + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-member-expression-to-functions" "^7.10.0" + "@babel/helper-optimise-call-expression" "^7.10.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.10.0" + "@babel/helper-split-export-declaration" "^7.8.3" + +"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== + dependencies: + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" + integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.9.5" + +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-member-expression-to-functions@^7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.0.tgz#e8cf57470bfd1247f2b41aa621a527e952efa6f1" + integrity sha512-xKLTpbMkJcvwEsDaTfs9h0IlfUiBLPFfybxaPpPPsQDsZTRg+UKh+86oK7sctHF3OUiRQkb10oS9MXSqgyV6/g== + dependencies: + "@babel/types" "^7.10.0" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.10.0", "@babel/helper-optimise-call-expression@^7.8.3": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.0.tgz#6dcfb565842f43bed31b24f3e4277f18826e5e79" + integrity sha512-HgMd8QKA8wMJs5uK/DYKdyzJAEuGt1zyDp9wLMlMR6LitTQTHPUE+msC82ZsEDwq+U3/yHcIXIngRm9MS4IcIg== + dependencies: + "@babel/types" "^7.10.0" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-replace-supers@^7.10.0", "@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.0.tgz#26bc22ee1a35450934d2e2a9b27de10a22fac9d6" + integrity sha512-erl4iVeiANf14JszXP7b69bSrz3e3+qW09pVvEmTWwzRQEOoyb1WFlYCA8d/VjVZGYW8+nGpLh7swf9CifH5wg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.0" + "@babel/helper-optimise-call-expression" "^7.10.0" + "@babel/traverse" "^7.10.0" + "@babel/types" "^7.10.0" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" + integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== + +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helpers@^7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.0.tgz#634400a0977b8dcf7b311761a77ca94ed974b3b6" + integrity sha512-lQtFJoDZAGf/t2PgR6Z59Q2MwjvOGGsxZ0BAlsrgyDhKuMbe63EfbQmVmcLfyTBj8J4UtiadQimcotvYVg/kVQ== + dependencies: + "@babel/template" "^7.10.0" + "@babel/traverse" "^7.10.0" + "@babel/types" "^7.10.0" + +"@babel/highlight@^7.8.3": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.10.0", "@babel/parser@^7.7.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.0.tgz#8eca3e71a73dd562c5222376b08253436bb4995b" + integrity sha512-fnDUl1Uy2gThM4IFVW4ISNHqr3cJrCsRkSCasFgx0XDO9JcttDS5ytyBc4Cu4X1+fjoo3IVvFbRD6TeFlHJlEQ== + +"@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-proposal-decorators@^7.8.3": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.0.tgz#aa1c82288d9af1f2a5bc759e5dffbca8f8d01ea1" + integrity sha512-PTlxQfx0fZjOYlLe+gAhpb6Lph3zr03lpzqnzI8bWtcxDo/98rhO2adxe87F7OHg1G65nXxQ9ChPvB/0A3qSAg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-decorators" "^7.8.3" + +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-json-strings@^7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.0.tgz#72926c31c14ff4f04916a0b17d376cdfb7fa1d84" + integrity sha512-n4oQLAAXTFj0OusjIbr6bcvVQf8oH6QziwAK8QNtKhjJAg71+hnU2rZDZYkYMmfOZ46dCWf+ybbHJ7hxfrzFlw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + +"@babel/plugin-proposal-object-rest-spread@^7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.0.tgz#d27b0910b637f7c9d9a5629f2adcd04dc9ea4e69" + integrity sha512-DOD+4TqMcRKJdAfN08+v9cciK5d0HW5hwTndOoKZEfEzU/mRrKboheD5mnWU4Q96VOnDdAj86kKjZhoQyG6s+A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.9.5" + +"@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.0.tgz#f9bdcd5cbf2e3037674903a45e56ed0cbaea1550" + integrity sha512-bn+9XT8Y6FJCO37ewj4E1gIirR35nDm+mGcqQV4dM3LKSVp3QTAU3f65Z0ld4y6jdfAlv2VKzCh4mezhRnl+6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-private-methods@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.8.3.tgz#01248c6c8dc292116b3b4ebd746150f4f0728bab" + integrity sha512-ysLAper960yy1TVXa2lMYdCQIGqtUXo8sVb+zYE7UTiZSLs6/wbZ0PrrXEKESJcK3SgFWrF8WpsaDzdslhuoZA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" + integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.8" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz#6cb933a8872c8d359bfde69bbeaae5162fd1e8f7" + integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-decorators@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz#8d2c15a9f1af624b0025f961682a9d53d3001bda" + integrity sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" + integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + +"@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-block-scoping@^7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.0.tgz#5d7aa0cf921ec91bdc97c9b311bf1fce0ea979b0" + integrity sha512-AoMn0D3nLG9i71useuBrZZTnHbjnhcaTXCckUtOx3JPuhGGJdOUYMwOV9niPJ+nZCk52dfLLqbmV3pBMCRQLNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz#800597ddb8aefc2c293ed27459c1fcc935a26c2c" + integrity sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-destructuring@^7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.0.tgz#59145194029721e49e511afb4bdd1d2f38369180" + integrity sha512-yKoghHpYbC0eM+6o6arPUJT9BQBvOOn8iOCEHwFvkJ5gjAxYmoUaAuLwaoA9h2YvC6dzcRI0KPQOpRXr8qQTxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.0.tgz#ff2bf95dc1deb9b309c7fd78d9620ac9266a3efe" + integrity sha512-0ldl5xEe9kbuhB1cDqs17JiBPEm1+6/LH7loo29+MAJOyB/xbpLI/u6mRzDPjr0nYL7z0S14FPT4hs2gH8Im9Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-modules-amd@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz#8539ec42c153d12ea3836e0e3ac30d5aae7b258e" + integrity sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277" + integrity sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.0.tgz#815aa9b9d59224ed1bb5d4cbb3c86c4d7e12d9bf" + integrity sha512-L/1xADoyJeb01fqKiHhl4ghAJOnFcHvx2JQA7bc8zdaDFDU4k62CJmXqDtNtJUNiOwlHZLWg1l7/Twf1aWARQw== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" + integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + +"@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz#173b265746f5e15b2afe527eeda65b73623a0795" + integrity sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-regenerator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-runtime@^7.9.6": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.0.tgz#16e50ba682aa9925b94123a622d996cadd4cbef7" + integrity sha512-SWIc5IJnoLHk9qVRvvpebUW5lafStcKlLcqELMiNOApVIxPbCtkQfLRMCdaEKw4X92JItFKdoBxv2udiyGwFtg== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-spread@^7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.0.tgz#6918d9b2b52c604802bd50a5f22b649efddf9af6" + integrity sha512-P3Zj04ylqumJBjmjylNl05ZHRo4j4gFNG7P70loys0//q5BTe30E8xIj6PnqEWAfsPYu2sdIPcJeeQdclqlM6A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + +"@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" + integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-unicode-escapes@^7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.0.tgz#63b4da633af14740b6570b928a2d5537495314cb" + integrity sha512-6DwSPQzJ9kSRI1kNFfVAeYdeH7sUH0c1NOYSBGnpJ1ZUZ7mxPY1hxeAqzcrO5NKlOx7ghcy4nAbfFWTPx5IVEg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/preset-env@^7.9.6": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.0.tgz#2b1d9c0cf41fdf68f64d8183a567a14f70861f99" + integrity sha512-UOZNyiZRvIGvIudjCB8Y8OVkpAvlslec4qgwC73yEvx3Puz0c/xc28Yru36y5K+StOkPPM+VldTsmXPht5LpSg== + dependencies: + "@babel/compat-data" "^7.10.0" + "@babel/helper-compilation-targets" "^7.10.0" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-class-properties" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.10.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.10.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.10.0" + "@babel/plugin-proposal-private-methods" "^7.8.3" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.10.0" + "@babel/plugin-transform-classes" "^7.9.5" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.10.0" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.10.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.6" + "@babel/plugin-transform-modules-commonjs" "^7.9.6" + "@babel/plugin-transform-modules-systemjs" "^7.10.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.9.5" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.10.0" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-escapes" "^7.10.0" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.10.0" + browserslist "^4.12.0" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/runtime@^7.8.4", "@babel/runtime@^7.9.6": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.0.tgz#2cdcd6d7a391c24f7154235134c830cfb58ac0b1" + integrity sha512-tgYb3zVApHbLHYOPWtVwg25sBqHhfBXRKeKoTIyoheIxln1nA7oBl7SfHfiTG2GhDPI8EUBkOD/0wJCP/3HN4Q== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.0.tgz#f15d852ce16cd5fb3e219097a75f662710b249b1" + integrity sha512-aMLEQn5tcG49LEWrsEwxiRTdaJmvLem3+JMCMSeCy2TILau0IDVyWdm/18ACx7XOCady64FLt6KkHy28tkDQHQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.10.0" + "@babel/types" "^7.10.0" + +"@babel/traverse@^7.10.0", "@babel/traverse@^7.7.0", "@babel/traverse@^7.8.3": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.0.tgz#290935529881baf619398d94fd453838bef36740" + integrity sha512-NZsFleMaLF1zX3NxbtXI/JCs2RPOdpGru6UBdGsfhdsDsP+kFF+h2QQJnMJglxk0kc69YmMFs4A44OJY0tKo5g== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.10.0" + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.10.0" + "@babel/types" "^7.10.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.10.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.8.3", "@babel/types@^7.9.0", "@babel/types@^7.9.5": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.0.tgz#d47d92249e42393a5723aad5319035ae411e3e38" + integrity sha512-t41W8yWFyQFPOAAvPvjyRhejcLGnJTA3iRpFcDbEKwVJ3UnHQePFzLk8GagTsucJlImyNwrGikGsYURrWbQG8w== + dependencies: + "@babel/helper-validator-identifier" "^7.9.5" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@bazel/bazelisk@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.4.0.tgz#401d7b89b8d89dd579d1e16cc24cd4d9281a4fbb" + integrity sha512-VNI/jF7baQiBy4x+u8gmSDsFehqaAuzMyLuCj0j6/aZCZSw2OssytJVj73m8sFYbXgj67D8iYEQ0gbuoafDk6w== + +"@bazel/ibazel@^0.13.1": + version "0.13.1" + resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" + integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== + +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== + +"@hapi/joi@^15.0.1": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== + dependencies: + "@hapi/hoek" "^8.3.0" + +"@intervolga/optimize-cssnano-plugin@^1.0.5": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz#be7c7846128b88f6a9b1d1261a0ad06eb5c0fdf8" + integrity sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA== + dependencies: + cssnano "^4.0.0" + cssnano-preset-default "^4.0.0" + postcss "^7.0.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@soda/friendly-errors-webpack-plugin@^1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz#706f64bcb4a8b9642b48ae3ace444c70334d615d" + integrity sha512-cWKrGaFX+rfbMrAxVv56DzhPNqOJPZuNIS2HGMELtgGzb+vsMzyig9mml5gZ/hr2BGtSLV+dP2LUEuAL8aG2mQ== + dependencies: + chalk "^1.1.3" + error-stack-parser "^2.0.0" + string-width "^2.0.0" + +"@soda/get-current-script@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@soda/get-current-script/-/get-current-script-1.0.0.tgz#623aa40623550e3b94767cffeb096a6fb597ed09" + integrity sha512-9GvTek+7cVw7r+L7TNGOG1astZJWXz2h5q4BqMXl28KN+24iSCm1xo+RhZOZvwdT3bzNe9hD7riJc/lBoO7mgg== + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "14.0.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.5.tgz#3d03acd3b3414cf67faf999aed11682ed121f22b" + integrity sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@types/q@^1.5.1": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" + integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== + +"@vue/babel-helper-vue-jsx-merge-props@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz#048fe579958da408fb7a8b2a3ec050b50a661040" + integrity sha512-6tyf5Cqm4m6v7buITuwS+jHzPlIPxbFzEhXR5JGZpbrvOcp1hiQKckd305/3C7C36wFekNTQSxAtgeM0j0yoUw== + +"@vue/babel-plugin-transform-vue-jsx@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.1.2.tgz#c0a3e6efc022e75e4247b448a8fc6b86f03e91c0" + integrity sha512-YfdaoSMvD1nj7+DsrwfTvTnhDXI7bsuh+Y5qWwvQXlD24uLgnsoww3qbiZvWf/EoviZMrvqkqN4CBw0W3BWUTQ== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" + html-tags "^2.0.0" + lodash.kebabcase "^4.1.1" + svg-tags "^1.0.0" + +"@vue/babel-preset-app@^4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-4.4.1.tgz#97c6796183cd0abf96a17297dc335c4c702fd8c4" + integrity sha512-VHVROEBBiW0dnuNuzlFElkncXo+zxh5Px0MZ51Th5da8UPbQodf43mnpotMnFtmCPTXAFL58tzDttu1FgrgfpQ== + dependencies: + "@babel/core" "^7.9.6" + "@babel/helper-compilation-targets" "^7.9.6" + "@babel/helper-module-imports" "^7.8.3" + "@babel/plugin-proposal-class-properties" "^7.8.3" + "@babel/plugin-proposal-decorators" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + "@babel/plugin-transform-runtime" "^7.9.6" + "@babel/preset-env" "^7.9.6" + "@babel/runtime" "^7.9.6" + "@vue/babel-preset-jsx" "^1.1.2" + babel-plugin-dynamic-import-node "^2.3.3" + core-js "^3.6.5" + core-js-compat "^3.6.5" + semver "^6.1.0" + +"@vue/babel-preset-jsx@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.1.2.tgz#2e169eb4c204ea37ca66c2ea85a880bfc99d4f20" + integrity sha512-zDpVnFpeC9YXmvGIDSsKNdL7qCG2rA3gjywLYHPCKDT10erjxF4U+6ay9X6TW5fl4GsDlJp9bVfAVQAAVzxxvQ== + dependencies: + "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.1.2" + "@vue/babel-sugar-functional-vue" "^1.1.2" + "@vue/babel-sugar-inject-h" "^1.1.2" + "@vue/babel-sugar-v-model" "^1.1.2" + "@vue/babel-sugar-v-on" "^1.1.2" + +"@vue/babel-sugar-functional-vue@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.1.2.tgz#f7e24fba09e6f1ee70104560a8808057555f1a9a" + integrity sha512-YhmdJQSVEFF5ETJXzrMpj0nkCXEa39TvVxJTuVjzvP2rgKhdMmQzlJuMv/HpadhZaRVMCCF3AEjjJcK5q/cYzQ== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-inject-h@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.1.2.tgz#8a5276b6d8e2ed16ffc8078aad94236274e6edf0" + integrity sha512-VRSENdTvD5htpnVp7i7DNuChR5rVMcORdXjvv5HVvpdKHzDZAYiLSD+GhnhxLm3/dMuk8pSzV+k28ECkiN5m8w== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-v-model@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.1.2.tgz#1ff6fd1b800223fc9cb1e84dceb5e52d737a8192" + integrity sha512-vLXPvNq8vDtt0u9LqFdpGM9W9IWDmCmCyJXuozlq4F4UYVleXJ2Fa+3JsnTZNJcG+pLjjfnEGHci2339Kj5sGg== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.1.2" + camelcase "^5.0.0" + html-tags "^2.0.0" + svg-tags "^1.0.0" + +"@vue/babel-sugar-v-on@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.1.2.tgz#b2ef99b8f2fab09fbead25aad70ef42e1cf5b13b" + integrity sha512-T8ZCwC8Jp2uRtcZ88YwZtZXe7eQrJcfRq0uTFy6ShbwYJyz5qWskRFoVsdTi9o0WEhmQXxhQUewodOSCUPVmsQ== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.1.2" + camelcase "^5.0.0" + +"@vue/cli-overlay@^4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-4.4.1.tgz#f1f51f31f7a00d371e9a5b5a941525184475bf8b" + integrity sha512-EQqAVy7O/qqGOfSYIGL073FWlr/s6QFA0wA1wY8pHnTS5WPwAiHT+D+xe+fgXKZ3KeL7v7u/le7YFIEVXFVXOg== + +"@vue/cli-plugin-babel@~4.4.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.4.1.tgz#2c6e969fe51f1b4b211bea84afb7cad18240f70f" + integrity sha512-dmhymfm2UnZDw13k/zKT6YIj7je53mE37Y+jEJxpRUlCKFmZUDuYkJ8i5HmO0SnaCnEGqNELaBkoIFnY3aE2Gw== + dependencies: + "@babel/core" "^7.9.6" + "@vue/babel-preset-app" "^4.4.1" + "@vue/cli-shared-utils" "^4.4.1" + babel-loader "^8.1.0" + cache-loader "^4.1.0" + thread-loader "^2.1.3" + webpack "^4.0.0" + +"@vue/cli-plugin-eslint@~4.4.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.4.1.tgz#e39d6517da6de231195d227f995f495e2958a74a" + integrity sha512-T+9+q44iajQEbe59z6Io3otFOsWnPOEVU+/hrDyC6aOToJbQo6P4VacByDDcuGYENAjAd8ENLSt18TaPNSIyRw== + dependencies: + "@vue/cli-shared-utils" "^4.4.1" + eslint-loader "^2.2.1" + globby "^9.2.0" + inquirer "^7.1.0" + webpack "^4.0.0" + yorkie "^2.0.0" + +"@vue/cli-plugin-router@^4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-router/-/cli-plugin-router-4.4.1.tgz#07d09df0f4bea816e637da814f578b808f1f93b2" + integrity sha512-kCSsJG7pjDvCJDjGtcCI5l0UjmqwNigOR41RkeGSjSUvzV4ArSniXjFqrOmtpMp36S5xCtwtt9MFm/K4fCubkQ== + dependencies: + "@vue/cli-shared-utils" "^4.4.1" + +"@vue/cli-plugin-vuex@^4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.4.1.tgz#98d18fc5d36fa6e0d1fc2ecaeea37aa965564f19" + integrity sha512-FtOFsDP0qznwVaCz0BZmTzUm5vhHSJzX2/XD3L5dLTkrNxyDEbZmbKoX0n1OzBcQwZC7dkJZP2tdoCQx0mX//g== + +"@vue/cli-service@~4.4.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-4.4.1.tgz#b26a435d8c953bc7efaf7b784c9835c1415bcf1c" + integrity sha512-DVV0zr5Sw7pzdm3z3PRrfqihLgoJP/d9AgNFcSSQF/J9Gtvjf1t0PTJJFeLANHSL3kDWte+3kjc22sXayu0BJQ== + dependencies: + "@intervolga/optimize-cssnano-plugin" "^1.0.5" + "@soda/friendly-errors-webpack-plugin" "^1.7.1" + "@soda/get-current-script" "^1.0.0" + "@vue/cli-overlay" "^4.4.1" + "@vue/cli-plugin-router" "^4.4.1" + "@vue/cli-plugin-vuex" "^4.4.1" + "@vue/cli-shared-utils" "^4.4.1" + "@vue/component-compiler-utils" "^3.1.2" + "@vue/preload-webpack-plugin" "^1.1.0" + "@vue/web-component-wrapper" "^1.2.0" + acorn "^7.2.0" + acorn-walk "^7.1.1" + address "^1.1.2" + autoprefixer "^9.8.0" + browserslist "^4.12.0" + cache-loader "^4.1.0" + case-sensitive-paths-webpack-plugin "^2.3.0" + cli-highlight "^2.1.4" + clipboardy "^2.3.0" + cliui "^6.0.0" + copy-webpack-plugin "^5.1.1" + css-loader "^3.5.3" + cssnano "^4.1.10" + debug "^4.1.1" + default-gateway "^5.0.5" + dotenv "^8.2.0" + dotenv-expand "^5.1.0" + file-loader "^4.2.0" + fs-extra "^7.0.1" + globby "^9.2.0" + hash-sum "^2.0.0" + html-webpack-plugin "^3.2.0" + launch-editor-middleware "^2.2.1" + lodash.defaultsdeep "^4.6.1" + lodash.mapvalues "^4.6.0" + lodash.transform "^4.6.0" + mini-css-extract-plugin "^0.9.0" + minimist "^1.2.5" + pnp-webpack-plugin "^1.6.4" + portfinder "^1.0.26" + postcss-loader "^3.0.0" + ssri "^7.1.0" + terser-webpack-plugin "^2.3.6" + thread-loader "^2.1.3" + url-loader "^2.2.0" + vue-loader "^15.9.2" + vue-style-loader "^4.1.2" + webpack "^4.0.0" + webpack-bundle-analyzer "^3.8.0" + webpack-chain "^6.4.0" + webpack-dev-server "^3.11.0" + webpack-merge "^4.2.2" + +"@vue/cli-shared-utils@^4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-4.4.1.tgz#930304ade5a9f9bf0d2fd67d9305cad83d04aae1" + integrity sha512-teevHgI7XUsKVMOncx3M+6iLjO28woGfRwgUG4hR83moVBHQe5x2OCr2i5t/58bwpv269RD5RYXBQCGtIXuxZw== + dependencies: + "@hapi/joi" "^15.0.1" + chalk "^2.4.2" + execa "^1.0.0" + launch-editor "^2.2.1" + lru-cache "^5.1.1" + node-ipc "^9.1.1" + open "^6.3.0" + ora "^3.4.0" + read-pkg "^5.1.1" + request "^2.88.2" + request-promise-native "^1.0.8" + semver "^6.1.0" + strip-ansi "^6.0.0" + +"@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.1.2.tgz#8213a5ff3202f9f2137fe55370f9e8b9656081c3" + integrity sha512-QLq9z8m79mCinpaEeSURhnNCN6djxpHw0lpP/bodMlt5kALfONpryMthvnrQOlTcIKoF+VoPi+lPHUYeDFPXug== + dependencies: + consolidate "^0.15.1" + hash-sum "^1.0.2" + lru-cache "^4.1.2" + merge-source-map "^1.1.0" + postcss "^7.0.14" + postcss-selector-parser "^6.0.2" + source-map "~0.6.1" + vue-template-es2015-compiler "^1.9.0" + optionalDependencies: + prettier "^1.18.2" + +"@vue/preload-webpack-plugin@^1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.1.tgz#18723530d304f443021da2292d6ec9502826104a" + integrity sha512-8VCoJeeH8tCkzhkpfOkt+abALQkS11OIHhte5MBzYaKMTqK0A3ZAKEUVAffsOklhEv7t0yrQt696Opnu9oAx+w== + +"@vue/web-component-wrapper@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@vue/web-component-wrapper/-/web-component-wrapper-1.2.0.tgz#bb0e46f1585a7e289b4ee6067dcc5a6ae62f1dd1" + integrity sha512-Xn/+vdm9CjuC9p3Ae+lTClNutrVhsXpzxvoTXXtoys6kVRX9FkueSUAqSWAyZntmVLlR4DosBV4pH8y5Z/HbUw== + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +acorn-walk@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" + integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== + +acorn@^6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +acorn@^7.1.1, acorn@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" + integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== + +address@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +arch@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" + integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + 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" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-union@^1.0.1, array-union@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + 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" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9.8.0: + version "9.8.0" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.0.tgz#68e2d2bef7ba4c3a65436f662d0a56a741e56511" + integrity sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001061" + chalk "^2.4.2" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.30" + postcss-value-parser "^4.1.0" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" + integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== + +babel-eslint@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-loader@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + 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" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +bfj@^6.1.1: + version "6.1.2" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f" + integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw== + dependencies: + bluebird "^3.5.5" + check-types "^8.0.3" + hoopy "^0.1.4" + tryer "^1.0.1" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bluebird@^3.1.1, bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== + +bn.js@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" + integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + 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" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +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" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + 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" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" + integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.2" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.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" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.8.5: + version "4.12.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" + integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== + dependencies: + caniuse-lite "^1.0.30001043" + electron-to-chromium "^1.3.413" + node-releases "^1.1.53" + pkg-up "^2.0.0" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-json@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/buffer-json/-/buffer-json-2.0.0.tgz#f73e13b1e42f196fe2fd67d001c7d7107edd7c23" + integrity sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + 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" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^12.0.2, cacache@^12.0.3: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" + integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + 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" + +cache-loader@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-4.1.0.tgz#9948cae353aec0a1fcb1eafda2300816ec85387e" + integrity sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw== + dependencies: + buffer-json "^2.0.0" + find-cache-dir "^3.0.0" + loader-utils "^1.2.3" + mkdirp "^0.5.1" + neo-async "^2.6.1" + schema-utils "^2.0.0" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001043, caniuse-lite@^1.0.30001061: + version "1.0.30001066" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001066.tgz#0a8a58a10108f2b9bf38e7b65c237b12fd9c5f04" + integrity sha512-Gfj/WAastBtfxLws0RCh2sDbTK/8rJuSeZMecrSkNGYxPcv7EzblmDGfWQCFEQcSqYE2BRgQiJh8HOD07N5hIw== + +case-sensitive-paths-webpack-plugin@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + 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.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +check-types@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" + integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" + integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" + +chownr@^1.1.1, chownr@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +ci-info@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + +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" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@4.2.x: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-highlight@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.4.tgz#098cb642cf17f42adc1c1145e07f960ec4d7522b" + integrity sha512-s7Zofobm20qriqDoU9sXptQx0t2R9PEgac92mENNm7xaEe1hn71IIMsXMK+6encA6WRCWWxIGQbipr3q998tlQ== + dependencies: + chalk "^3.0.0" + highlight.js "^9.6.0" + mz "^2.4.0" + parse5 "^5.1.1" + parse5-htmlparser2-tree-adapter "^5.1.1" + yargs "^15.0.0" + +cli-spinners@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.3.0.tgz#0632239a4b5aa4c958610142c34bb7a651fc8df5" + integrity sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w== + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +clipboardy@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290" + integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ== + dependencies: + arch "^2.1.1" + execa "^1.0.0" + is-wsl "^2.1.1" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@2.17.x: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== + +commander@^2.18.0, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@~2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +consolidate@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" + integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== + dependencies: + bluebird "^3.1.1" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +copy-webpack-plugin@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" + integrity sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg== + dependencies: + cacache "^12.0.3" + find-cache-dir "^2.1.0" + glob-parent "^3.1.0" + globby "^7.1.1" + is-glob "^4.0.1" + loader-utils "^1.2.3" + minimatch "^3.0.4" + normalize-path "^3.0.0" + p-limit "^2.2.1" + schema-utils "^1.0.0" + serialize-javascript "^2.1.2" + webpack-log "^2.0.0" + +core-js-compat@^3.6.2, core-js-compat@^3.6.5: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== + dependencies: + browserslist "^4.8.5" + semver "7.0.0" + +core-js@^3.6.5: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== + +core-util-is@1.0.2, 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" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + 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.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + 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@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + 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, 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" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-loader@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.5.3.tgz#95ac16468e1adcd95c844729e0bb167639eb0bcf" + integrity sha512-UEr9NH5Lmi7+dguAm+/JSPovNjYbm2k3TK58EiwQHzOHH5Jfq1Y+XoP2bQO6TMn7PptMd0opxxedAWcaSTRKHw== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.27" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.3" + schema-utils "^2.6.6" + semver "^6.3.0" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@1.0.0-alpha.39: + version "1.0.0-alpha.39" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" + integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== + dependencies: + mdn-data "2.0.6" + source-map "^0.6.1" + +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.0.0, cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" + integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== + dependencies: + css-tree "1.0.0-alpha.39" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +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" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" + integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +default-gateway@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-5.0.5.tgz#4fd6bd5d2855d39b34cc5a59505486e9aafc9b10" + integrity sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA== + dependencies: + execa "^3.3.0" + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + 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" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + 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" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + 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" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^2.0.0, dir-glob@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== + dependencies: + path-type "^3.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + dependencies: + is-obj "^2.0.0" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +easy-stack@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/easy-stack/-/easy-stack-1.0.0.tgz#12c91b3085a37f0baa336e9486eac4bf94e3e788" + integrity sha1-EskbMIWjfwuqM26UhurEv5Tj54g= + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +ejs@^2.6.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + +electron-to-chromium@^1.3.413: + version "1.3.453" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.453.tgz#758a8565a64b7889b27132a51d2abb8b135c9d01" + integrity sha512-IQbCfjJR0NDDn/+vojTlq7fPSREcALtF8M1n01gw7nQghCtfFYrJ2dfhsp8APr8bANoFC8vRTFVXMOGpT0eetw== + +elliptic@^6.0.0, elliptic@^6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + 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" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" + integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.2.tgz#ac74db0bba8d33808bbf36809c3a5c3683531436" + integrity sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" + integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== + dependencies: + stackframe "^1.1.1" + +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: + version "1.17.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" + integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +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" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-loader@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.2.1.tgz#28b9c12da54057af0845e2a6112701a2f6bf8337" + integrity sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg== + dependencies: + loader-fs-cache "^1.0.0" + loader-utils "^1.0.2" + object-assign "^4.0.1" + object-hash "^1.1.4" + rimraf "^2.6.1" + +eslint-plugin-vue@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz#27fecd9a3a24789b0f111ecdd540a9e56198e0fe" + integrity sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ== + dependencies: + natural-compare "^1.4.0" + semver "^5.6.0" + vue-eslint-parser "^7.0.0" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + +eslint@^6.7.2: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^6.1.2, espree@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.1.0, estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +event-pubsub@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/event-pubsub/-/event-pubsub-4.3.0.tgz#f68d816bc29f1ec02c539dc58c8dd40ce72cb36e" + integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ== + +eventemitter3@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== + +events@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +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" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" + integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^3.3.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" + integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + 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" + +express@^4.16.3, express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + 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" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + 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" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + +fast-glob@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-loader@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" + integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== + dependencies: + loader-utils "^1.2.3" + schema-utils "^2.5.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filesize@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.0.0, find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.0.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.11.0.tgz#afa14f08ba12a52963140fe43212658897bc0ecb" + integrity sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA== + dependencies: + debug "^3.0.0" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + 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" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + +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" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.0.0, glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + 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@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globby@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.2: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +gzip-size@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + 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" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + 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" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash-sum@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" + integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= + +hash-sum@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" + integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@1.2.x, he@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +highlight.js@^9.6.0: + version "9.18.1" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.1.tgz#ed21aa001fe6252bb10a3d76d47573c6539fe13c" + integrity sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg== + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-entities@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" + integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== + +html-minifier@^3.2.3: + version "3.5.21" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" + integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== + dependencies: + camel-case "3.0.x" + clean-css "4.2.x" + commander "2.17.x" + he "1.2.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.4.x" + +html-tags@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" + integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= + +html-webpack-plugin@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" + integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= + dependencies: + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + tapable "^1.0.0" + toposort "^1.0.0" + util.promisify "1.0.0" + +htmlparser2@^3.3.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-parser-js@>=0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" + integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +iconv-lite@0.4.24, iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.3, ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +inquirer@^7.0.0, inquirer@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" + integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +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" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +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" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + 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" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +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" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.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" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + +is-ci@^1.0.10: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== + dependencies: + ci-info "^1.5.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^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" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + 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" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + 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" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" + integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== + +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" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + 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" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +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" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + 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" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +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" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4, is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.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" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + 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" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +javascript-stringify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.0.1.tgz#6ef358035310e35d667c675ed63d3eb7c1aa19e5" + integrity sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow== + +jest-worker@^25.4.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" + integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +js-message@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/js-message/-/js-message-1.0.5.tgz#2300d24b1af08e89dd095bc1a4c9c9cfcb892d15" + integrity sha1-IwDSSxrwjondCVvBpMnJz8uJLRU= + +js-queue@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/js-queue/-/js-queue-2.0.0.tgz#362213cf860f468f0125fc6c96abc1742531f948" + integrity sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug= + dependencies: + easy-stack "^1.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +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" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + 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" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + 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" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +launch-editor-middleware@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz#e14b07e6c7154b0a4b86a0fd345784e45804c157" + integrity sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg== + dependencies: + launch-editor "^2.2.1" + +launch-editor@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.2.1.tgz#871b5a3ee39d6680fcc26d37930b6eeda89db0ca" + integrity sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw== + dependencies: + chalk "^2.3.0" + shell-quote "^1.6.1" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +loader-fs-cache@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz#f08657646d607078be2f0a032f8bd69dd6f277d9" + integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== + dependencies: + find-cache-dir "^0.1.1" + mkdirp "^0.5.1" + +loader-runner@^2.3.1, loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.defaultsdeep@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" + integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== + +lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= + +lodash.mapvalues@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" + integrity sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.transform@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.transform/-/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0" + integrity sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A= + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +loglevel@^1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" + integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA== + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + +lru-cache@^4.0.1, lru-cache@^4.1.2: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +make-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +mdn-data@2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" + integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-source-map@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" + integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== + dependencies: + source-map "^0.6.1" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + 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" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.44.0, "mime-db@>= 1.43.0 < 2": + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + dependencies: + mime-db "1.44.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.4: + version "2.4.5" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.5.tgz#d8de2ecb92982dedbb6541c9b6841d7f218ea009" + integrity sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mini-css-extract-plugin@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" + integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +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" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz#55f7839307d74859d6e8ada9c3ebe72cec216a34" + integrity sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +mz@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nan@^2.12.1: + version "2.14.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" + integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + 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-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" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +node-forge@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" + integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== + +node-ipc@^9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/node-ipc/-/node-ipc-9.1.1.tgz#4e245ed6938e65100e595ebc5dc34b16e8dd5d69" + integrity sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w== + dependencies: + event-pubsub "4.3.0" + js-message "1.0.5" + js-queue "2.0.0" + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + 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 "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + 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.11.0" + vm-browserify "^1.0.1" + +node-releases@^1.1.53: + version "1.1.56" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.56.tgz#bc054a417d316e3adac90eafb7e1932802f28705" + integrity sha512-EVo605FhWLygH8a64TjgpjyHYOihkxECwX1bHHr8tETJKWEiWS2YJjPbvsX2jFjnjTNEgBCmk9mLjKG1Mf11cw== + +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" + integrity sha1-MtDkcvkf80VwHBWoMRAY07CpA3k= + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^1.0.2, nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + 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" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +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" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^1.1.4: + version "1.3.1" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" + integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== + +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-is@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" + integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +open@^6.3.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + +opener@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" + integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +ora@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" + integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== + dependencies: + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-spinners "^2.0.0" + log-symbols "^2.2.0" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1, p-limit@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + dependencies: + no-case "^2.2.0" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + 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" + safe-buffer "^5.1.1" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + +parse5-htmlparser2-tree-adapter@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-5.1.1.tgz#e8c743d4e92194d5293ecde2b08be31e67461cbc" + integrity sha512-CF+TKjXqoqyDwHqBhFQ+3l5t83xYi6fVT1tQNg+Ye0JRLnTxWvIroCjEp1A0k4lneHNBGnICUf0cfYVYGEazqw== + dependencies: + parse5 "^5.1.1" + +parse5@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + 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" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= + dependencies: + find-up "^1.0.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + +pnp-webpack-plugin@^1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +portfinder@^1.0.26: + version "1.0.26" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.26.tgz#475658d56ca30bed72ac7f1378ed350bd1b64e70" + integrity sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" + +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" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-calc@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" + integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" + +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.0.3, postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.27, postcss@^7.0.30, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.31.tgz#332af45cb73e26c0ee2614d7c7fb02dfcc2bd6dd" + integrity sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.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" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +prettier@^1.18.2: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== + +pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + 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" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + 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" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + 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" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +read-pkg@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + 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" + +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + dependencies: + picomatch "^2.2.1" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + +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" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +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" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" + integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== + dependencies: + css-select "^1.1.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + dependencies: + lodash "^4.17.15" + +request-promise-native@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + dependencies: + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.88.2: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.8.1: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rxjs@^6.5.3: + version "6.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" + integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + dependencies: + tslib "^1.9.0" + +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" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.6.6: + version "2.6.6" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.6.tgz#299fe6bd4a3365dc23d99fd446caff8f1d6c330c" + integrity sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA== + dependencies: + ajv "^6.12.0" + ajv-keywords "^3.4.1" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.7: + version "1.10.7" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" + integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== + dependencies: + node-forge "0.9.0" + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + 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.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== + +serialize-javascript@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.0.0.tgz#492e489a2d77b7b804ad391a5f5d97870952548e" + integrity sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw== + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + 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" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +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" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.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" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.6.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + 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" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + 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" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + 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" + +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.20: + version "0.3.20" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" + integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.4.0" + websocket-driver "0.6.5" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + 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.5.12: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +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" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.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" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + 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" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^7.0.0, ssri@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== + dependencies: + figgy-pudding "^3.5.1" + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stackframe@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.1.1.tgz#ffef0a3318b1b60c3b58564989aca5660729ec71" + integrity sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.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" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + 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" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +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" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-width@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.trimend@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trimleft@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" + integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.trimstart "^1.0.0" + +string.prototype.trimright@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" + integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.trimend "^1.0.0" + +string.prototype.trimstart@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + 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" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + 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" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= + +strip-json-comments@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" + integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +svg-tags@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" + integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= + +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +terser-webpack-plugin@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^2.1.2" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser-webpack-plugin@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.6.tgz#a4014b311a61f87c6a1b217ef4f5a75bd0665a69" + integrity sha512-I8IDsQwZrqjdmOicNeE8L/MhwatAap3mUrtcAKJuilsemUNcX+Hier/eAzwStVqhlCxq0aG3ni9bK/0BESXkTg== + dependencies: + cacache "^13.0.1" + find-cache-dir "^3.3.1" + jest-worker "^25.4.0" + p-limit "^2.3.0" + schema-utils "^2.6.6" + serialize-javascript "^3.0.0" + source-map "^0.6.1" + terser "^4.6.12" + webpack-sources "^1.4.3" + +terser@^4.1.2, terser@^4.6.12: + version "4.7.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.7.0.tgz#15852cf1a08e3256a80428e865a2fa893ffba006" + integrity sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.0" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" + integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= + dependencies: + any-promise "^1.0.0" + +thread-loader@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-2.1.3.tgz#cbd2c139fc2b2de6e9d28f62286ab770c1acbdda" + integrity sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg== + dependencies: + loader-runner "^2.3.1" + loader-utils "^1.1.0" + neo-async "^2.6.0" + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timers-browserify@^2.0.4: + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +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" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + 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" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +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" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +toposort@^1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" + integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= + +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +tslib@^1.9.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +uglify-js@3.4.x: + version "3.4.10" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" + integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== + dependencies: + commander "~2.19.0" + source-map "~0.6.1" + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" + integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== + dependencies: + loader-utils "^1.2.3" + mime "^2.4.4" + schema-utils "^2.5.0" + +url-parse@^1.4.3: + version "1.4.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@^0.4.0, utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +vue-eslint-parser@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz#9cdbcc823e656b087507a1911732b867ac101e83" + integrity sha512-Kr21uPfthDc63nDl27AGQEhtt9VrZ9nkYk/NTftJ2ws9XiJwzJJCnCr3AITQ2jpRMA0XPGDECxYH8E027qMK9Q== + dependencies: + debug "^4.1.1" + eslint-scope "^5.0.0" + eslint-visitor-keys "^1.1.0" + espree "^6.2.1" + esquery "^1.0.1" + lodash "^4.17.15" + +vue-hot-reload-api@^2.3.0: + version "2.3.4" + resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" + integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== + +vue-loader@^15.9.2: + version "15.9.2" + resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.2.tgz#ae01f5f4c9c6a04bff4483912e72ef91a402c1ae" + integrity sha512-oXBubaY//CYEISBlHX+c2YPJbmOH68xXPXjFv4MAgPqQvUsnjrBAjCJi8HXZ/r/yfn0tPL5VZj1Zcp8mJPI8VA== + dependencies: + "@vue/component-compiler-utils" "^3.1.0" + hash-sum "^1.0.2" + loader-utils "^1.1.0" + vue-hot-reload-api "^2.3.0" + vue-style-loader "^4.1.0" + +vue-style-loader@^4.1.0, vue-style-loader@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.2.tgz#dedf349806f25ceb4e64f3ad7c0a44fba735fcf8" + integrity sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ== + dependencies: + hash-sum "^1.0.2" + loader-utils "^1.0.2" + +vue-template-compiler@^2.6.11: + version "2.6.11" + resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz#c04704ef8f498b153130018993e56309d4698080" + integrity sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA== + dependencies: + de-indent "^1.0.2" + he "^1.1.0" + +vue-template-es2015-compiler@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" + integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== + +vue@^2.6.11: + version "2.6.11" + resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.11.tgz#76594d877d4b12234406e84e35275c6d514125c5" + integrity sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ== + +watchpack-chokidar2@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" + integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.6.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa" + integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.0" + watchpack-chokidar2 "^2.0.0" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +webpack-bundle-analyzer@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz#ce6b3f908daf069fd1f7266f692cbb3bded9ba16" + integrity sha512-PODQhAYVEourCcOuU+NiYI7WdR8QyELZGgPvB1y2tjbUpbmcQOt5Q7jEK+ttd5se0KSBKD9SXHCEozS++Wllmw== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + bfj "^6.1.1" + chalk "^2.4.1" + commander "^2.18.0" + ejs "^2.6.1" + express "^4.16.3" + filesize "^3.6.1" + gzip-size "^5.0.0" + lodash "^4.17.15" + mkdirp "^0.5.1" + opener "^1.5.1" + ws "^6.0.0" + +webpack-chain@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-6.4.0.tgz#22f0b27b6a9bc9ee3cba4f9e6513cf66394034e2" + integrity sha512-f97PYqxU+9/u0IUqp/ekAHRhBD1IQwhBv3wlJo2nvyELpr2vNnUqO3XQEk+qneg0uWGP54iciotszpjfnEExFA== + dependencies: + deepmerge "^1.5.2" + javascript-stringify "^2.0.1" + +webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@^3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" + integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.20" + sockjs-client "1.4.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-merge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== + dependencies: + lodash "^4.17.15" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^4.0.0: + version "4.43.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6" + integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.1" + webpack-sources "^1.4.1" + +websocket-driver@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= + dependencies: + websocket-extensions ">=0.1.1" + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +ws@^6.0.0, ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.1: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^15.0.0: + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.1" + +yorkie@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yorkie/-/yorkie-2.0.0.tgz#92411912d435214e12c51c2ae1093e54b6bb83d9" + integrity sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw== + dependencies: + execa "^0.8.0" + is-ci "^1.0.10" + normalize-path "^1.0.0" + strip-indent "^2.0.0" From 17c02445655fc42b3123f762349aa1a0f8727415 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Fri, 5 Jun 2020 13:49:43 -0700 Subject: [PATCH 0742/1134] chore: vue example cleanup and add trivial test target --- .bazelrc | 4 +- examples/BUILD.bazel | 5 + examples/vue/{hello-world => }/.gitignore | 0 examples/vue/BUILD.bazel | 48 + examples/vue/README.md | 21 + examples/vue/{hello-world => }/WORKSPACE | 13 +- examples/vue/babel.config.js | 3 + examples/vue/hello-world/BUILD | 24 - examples/vue/hello-world/README.md | 24 - examples/vue/hello-world/babel.config.js | 5 - examples/vue/hello-world/bazel-bin | 1 - examples/vue/hello-world/bazel-hello-world | 1 - examples/vue/hello-world/bazel-testlogs | 1 - examples/vue/hello-world/src/BUILD | 5 - examples/vue/hello-world/src/main.js | 8 - examples/vue/hello-world/yarn.lock | 8298 ----------------- .../vue/{hello-world => }/package-lock.json | 1151 +-- examples/vue/{hello-world => }/package.json | 7 +- .../vue/{hello-world => }/public/favicon.ico | Bin .../vue/{hello-world => }/public/index.html | 0 examples/vue/smoke.test.js | 6 + examples/vue/{hello-world => }/src/App.vue | 0 examples/vue/src/BUILD.bazel | 5 + .../vue/{hello-world => }/src/assets/logo.png | Bin .../src/components/HelloWorld.vue | 0 examples/vue/src/main.js | 8 + 26 files changed, 708 insertions(+), 8930 deletions(-) rename examples/vue/{hello-world => }/.gitignore (100%) create mode 100644 examples/vue/BUILD.bazel rename examples/vue/{hello-world => }/WORKSPACE (80%) create mode 100644 examples/vue/babel.config.js delete mode 100644 examples/vue/hello-world/BUILD delete mode 100644 examples/vue/hello-world/README.md delete mode 100644 examples/vue/hello-world/babel.config.js delete mode 120000 examples/vue/hello-world/bazel-bin delete mode 120000 examples/vue/hello-world/bazel-hello-world delete mode 120000 examples/vue/hello-world/bazel-testlogs delete mode 100644 examples/vue/hello-world/src/BUILD delete mode 100644 examples/vue/hello-world/src/main.js delete mode 100644 examples/vue/hello-world/yarn.lock rename examples/vue/{hello-world => }/package-lock.json (92%) rename examples/vue/{hello-world => }/package.json (85%) rename examples/vue/{hello-world => }/public/favicon.ico (100%) rename examples/vue/{hello-world => }/public/index.html (100%) create mode 100644 examples/vue/smoke.test.js rename examples/vue/{hello-world => }/src/App.vue (100%) create mode 100644 examples/vue/src/BUILD.bazel rename examples/vue/{hello-world => }/src/assets/logo.png (100%) rename examples/vue/{hello-world => }/src/components/HelloWorld.vue (100%) create mode 100644 examples/vue/src/main.js diff --git a/.bazelrc b/.bazelrc index c9163e0cca..c5eb17cfe0 100644 --- a/.bazelrc +++ b/.bazelrc @@ -5,8 +5,8 @@ import %workspace%/common.bazelrc # This lets us glob() up all the files inside the examples to make them inputs to tests # To update these lines, just run `yarn bazel:update-deleted-packages` # (Note, we cannot use common --deleted_packages because the bazel version command doesn't support it) -build --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/node_modules/@angular-devkit/core/third_party/github.com/chalk/supports-color,examples/angular/node_modules/@angular-devkit/core/third_party/github.com/sindresorhus/has-flag,examples/angular/node_modules/@schematics/angular/third_party/github.com/Microsoft/TypeScript,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/node_modules/@angular-devkit/core/third_party/github.com/chalk/supports-color,examples/angular_bazel_architect/node_modules/@angular-devkit/core/third_party/github.com/sindresorhus/has-flag,examples/angular_bazel_architect/node_modules/@schematics/angular/third_party/github.com/Microsoft/TypeScript,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/node_modules/@angular-devkit/core/node_modules/rxjs/src/webSocket,examples/angular_view_engine/node_modules/@angular-devkit/core/node_modules/rxjs/src/operators,examples/angular_view_engine/node_modules/@angular-devkit/core/node_modules/rxjs/src/testing,examples/angular_view_engine/node_modules/@angular-devkit/core/node_modules/rxjs/src,examples/angular_view_engine/node_modules/@angular-devkit/core/node_modules/rxjs/src/ajax,examples/angular_view_engine/node_modules/@angular-devkit/core/third_party/github.com/chalk/supports-color,examples/angular_view_engine/node_modules/@angular-devkit/core/third_party/github.com/sindresorhus/has-flag,examples/angular_view_engine/node_modules/@angular-devkit/architect/node_modules/rxjs/src/webSocket,examples/angular_view_engine/node_modules/@angular-devkit/architect/node_modules/rxjs/src/operators,examples/angular_view_engine/node_modules/@angular-devkit/architect/node_modules/rxjs/src/testing,examples/angular_view_engine/node_modules/@angular-devkit/architect/node_modules/rxjs/src,examples/angular_view_engine/node_modules/@angular-devkit/architect/node_modules/rxjs/src/ajax,examples/angular_view_engine/node_modules/@angular-devkit/schematics/node_modules/rxjs/src/webSocket,examples/angular_view_engine/node_modules/@angular-devkit/schematics/node_modules/rxjs/src/operators,examples/angular_view_engine/node_modules/@angular-devkit/schematics/node_modules/rxjs/src/testing,examples/angular_view_engine/node_modules/@angular-devkit/schematics/node_modules/rxjs/src,examples/angular_view_engine/node_modules/@angular-devkit/schematics/node_modules/rxjs/src/ajax,examples/angular_view_engine/node_modules/@schematics/update/node_modules/rxjs/src/webSocket,examples/angular_view_engine/node_modules/@schematics/update/node_modules/rxjs/src/operators,examples/angular_view_engine/node_modules/@schematics/update/node_modules/rxjs/src/testing,examples/angular_view_engine/node_modules/@schematics/update/node_modules/rxjs/src,examples/angular_view_engine/node_modules/@schematics/update/node_modules/rxjs/src/ajax,examples/angular_view_engine/node_modules/@schematics/angular/third_party/github.com/Microsoft/TypeScript,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp -query --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/node_modules/@angular-devkit/core/third_party/github.com/chalk/supports-color,examples/angular/node_modules/@angular-devkit/core/third_party/github.com/sindresorhus/has-flag,examples/angular/node_modules/@schematics/angular/third_party/github.com/Microsoft/TypeScript,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/node_modules/@angular-devkit/core/third_party/github.com/chalk/supports-color,examples/angular_bazel_architect/node_modules/@angular-devkit/core/third_party/github.com/sindresorhus/has-flag,examples/angular_bazel_architect/node_modules/@schematics/angular/third_party/github.com/Microsoft/TypeScript,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/node_modules/@angular-devkit/core/node_modules/rxjs/src/webSocket,examples/angular_view_engine/node_modules/@angular-devkit/core/node_modules/rxjs/src/operators,examples/angular_view_engine/node_modules/@angular-devkit/core/node_modules/rxjs/src/testing,examples/angular_view_engine/node_modules/@angular-devkit/core/node_modules/rxjs/src,examples/angular_view_engine/node_modules/@angular-devkit/core/node_modules/rxjs/src/ajax,examples/angular_view_engine/node_modules/@angular-devkit/core/third_party/github.com/chalk/supports-color,examples/angular_view_engine/node_modules/@angular-devkit/core/third_party/github.com/sindresorhus/has-flag,examples/angular_view_engine/node_modules/@angular-devkit/architect/node_modules/rxjs/src/webSocket,examples/angular_view_engine/node_modules/@angular-devkit/architect/node_modules/rxjs/src/operators,examples/angular_view_engine/node_modules/@angular-devkit/architect/node_modules/rxjs/src/testing,examples/angular_view_engine/node_modules/@angular-devkit/architect/node_modules/rxjs/src,examples/angular_view_engine/node_modules/@angular-devkit/architect/node_modules/rxjs/src/ajax,examples/angular_view_engine/node_modules/@angular-devkit/schematics/node_modules/rxjs/src/webSocket,examples/angular_view_engine/node_modules/@angular-devkit/schematics/node_modules/rxjs/src/operators,examples/angular_view_engine/node_modules/@angular-devkit/schematics/node_modules/rxjs/src/testing,examples/angular_view_engine/node_modules/@angular-devkit/schematics/node_modules/rxjs/src,examples/angular_view_engine/node_modules/@angular-devkit/schematics/node_modules/rxjs/src/ajax,examples/angular_view_engine/node_modules/@schematics/update/node_modules/rxjs/src/webSocket,examples/angular_view_engine/node_modules/@schematics/update/node_modules/rxjs/src/operators,examples/angular_view_engine/node_modules/@schematics/update/node_modules/rxjs/src/testing,examples/angular_view_engine/node_modules/@schematics/update/node_modules/rxjs/src,examples/angular_view_engine/node_modules/@schematics/update/node_modules/rxjs/src/ajax,examples/angular_view_engine/node_modules/@schematics/angular/third_party/github.com/Microsoft/TypeScript,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp +build --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp +query --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp # Mock versioning command to test the --stamp behavior build --workspace_status_command="echo BUILD_SCM_VERSION 1.2.3" diff --git a/examples/BUILD.bazel b/examples/BUILD.bazel index 7595e39a6c..1e3d369376 100644 --- a/examples/BUILD.bazel +++ b/examples/BUILD.bazel @@ -212,6 +212,11 @@ example_integration_test( tags = ["manual"], ) +example_integration_test( + name = "examples_vue", + npm_packages = {}, +) + example_integration_test( name = "examples_worker", # There are no tests in this example diff --git a/examples/vue/hello-world/.gitignore b/examples/vue/.gitignore similarity index 100% rename from examples/vue/hello-world/.gitignore rename to examples/vue/.gitignore diff --git a/examples/vue/BUILD.bazel b/examples/vue/BUILD.bazel new file mode 100644 index 0000000000..208f36fd78 --- /dev/null +++ b/examples/vue/BUILD.bazel @@ -0,0 +1,48 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin", "nodejs_test") +load("@npm//@vue/cli-service:index.bzl", "vue_cli_service") + +vue_cli_service( + name = "serve", + args = ["serve"], + data = [ + "babel.config.js", + ":package.json", + "//src", + ], +) + +vue_cli_service( + name = "build", + outs = ["dist"], + args = [ + "build", + "--dest", + "$(@D)/dist", + "--skip-plugins", + "eslint", + ], + data = [ + "babel.config.js", + ":package.json", + "//src", + "@npm//vue", + "@npm//@vue/cli-plugin-babel", + # Shouldn't be needed since it's in skip-plugins ? + "@npm//@vue/cli-plugin-eslint", + ], +) + +copy_to_bin( + name = "test_in_bin", + srcs = ["smoke.test.js"], +) + +# The example should have a Jest or Mocha test following the Vue instructions +# https://cli.vuejs.org/config/#unit-testing +# And probably also some e2e test that the server works. +# For now, just a trivial test to ensure we can build +nodejs_test( + name = "test", + data = [":build"], + entry_point = "test_in_bin", +) diff --git a/examples/vue/README.md b/examples/vue/README.md index c93a57b2b9..a97c6f800a 100644 --- a/examples/vue/README.md +++ b/examples/vue/README.md @@ -14,4 +14,25 @@ Add the NodeJS Rules to your Workspace, as well as the NPM Packages. ## Adding Building and Serving to your Ruleset TODO +## Project setup +``` +npm install +``` +### Compiles and hot-reloads for development +``` +npm run serve +``` + +### Compiles and minifies for production +``` +npm run build +``` + +### Lints and fixes files +``` +npm run lint +``` + +### Customize configuration +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/examples/vue/hello-world/WORKSPACE b/examples/vue/WORKSPACE similarity index 80% rename from examples/vue/hello-world/WORKSPACE rename to examples/vue/WORKSPACE index 27950d3675..346ecaec5a 100644 --- a/examples/vue/hello-world/WORKSPACE +++ b/examples/vue/WORKSPACE @@ -1,25 +1,22 @@ workspace( - name = "helloworld", + name = "vue_example", managed_directories = {"@npm": ["node_modules"]}, ) load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + http_archive( name = "build_bazel_rules_nodejs", sha256 = "f9e7b9f42ae202cc2d2ce6d698ccb49a9f7f7ea572a78fd451696d03ef2ee116", urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/1.6.0/rules_nodejs-1.6.0.tar.gz"], ) -load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories") - - +load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "npm_install") node_repositories(package_json = ["//:package.json"]) -load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") - -yarn_install( +npm_install( name = "npm", package_json = "//:package.json", - yarn_lock = "//:yarn.lock", + package_lock_json = "//:package-lock.json", ) diff --git a/examples/vue/babel.config.js b/examples/vue/babel.config.js new file mode 100644 index 0000000000..716b0237c6 --- /dev/null +++ b/examples/vue/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: ['@vue/cli-plugin-babel/preset'] +} diff --git a/examples/vue/hello-world/BUILD b/examples/vue/hello-world/BUILD deleted file mode 100644 index 0126c78ada..0000000000 --- a/examples/vue/hello-world/BUILD +++ /dev/null @@ -1,24 +0,0 @@ -load("@npm//@vue/cli-service:index.bzl", "vue_cli_service") -load("@build_bazel_rules_nodejs//:index.bzl", "npm_package_bin") - -vue_cli_service( - name = "serve", - data = [":package.json", - ":package-lock.json", - "babel.config.js", - "@npm//:node_modules", - "//src:srcfiles",], - args = ["serve"], -) - -vue_cli_service( - name = "build", - data = [":package.json", - ":package-lock.json", - "babel.config.js", - "@npm//:node_modules", - "//src:srcfiles",], - args = ["build","--dest", "$(@D)/dist"], - outs = ["dist"] -) - diff --git a/examples/vue/hello-world/README.md b/examples/vue/hello-world/README.md deleted file mode 100644 index f1b71d4aeb..0000000000 --- a/examples/vue/hello-world/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# hello-world - -## Project setup -``` -npm install -``` - -### Compiles and hot-reloads for development -``` -npm run serve -``` - -### Compiles and minifies for production -``` -npm run build -``` - -### Lints and fixes files -``` -npm run lint -``` - -### Customize configuration -See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/examples/vue/hello-world/babel.config.js b/examples/vue/hello-world/babel.config.js deleted file mode 100644 index e9558405fd..0000000000 --- a/examples/vue/hello-world/babel.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - presets: [ - '@vue/cli-plugin-babel/preset' - ] -} diff --git a/examples/vue/hello-world/bazel-bin b/examples/vue/hello-world/bazel-bin deleted file mode 120000 index 5f3c8d93eb..0000000000 --- a/examples/vue/hello-world/bazel-bin +++ /dev/null @@ -1 +0,0 @@ -/home/momo/.cache/bazel/_bazel_momo/d9f8a56c1a07c723a745c9c08b6a401d/execroot/helloworld/bazel-out/k8-fastbuild/bin \ No newline at end of file diff --git a/examples/vue/hello-world/bazel-hello-world b/examples/vue/hello-world/bazel-hello-world deleted file mode 120000 index 6fae2e5e5b..0000000000 --- a/examples/vue/hello-world/bazel-hello-world +++ /dev/null @@ -1 +0,0 @@ -/home/momo/.cache/bazel/_bazel_momo/d9f8a56c1a07c723a745c9c08b6a401d/execroot/helloworld \ No newline at end of file diff --git a/examples/vue/hello-world/bazel-testlogs b/examples/vue/hello-world/bazel-testlogs deleted file mode 120000 index a1c67f722b..0000000000 --- a/examples/vue/hello-world/bazel-testlogs +++ /dev/null @@ -1 +0,0 @@ -/home/momo/.cache/bazel/_bazel_momo/d9f8a56c1a07c723a745c9c08b6a401d/execroot/helloworld/bazel-out/k8-fastbuild/testlogs \ No newline at end of file diff --git a/examples/vue/hello-world/src/BUILD b/examples/vue/hello-world/src/BUILD deleted file mode 100644 index 879c82a013..0000000000 --- a/examples/vue/hello-world/src/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -filegroup( - name = "srcfiles", - srcs = glob(["**/**"]), - visibility = ["//visibility:public"] -) diff --git a/examples/vue/hello-world/src/main.js b/examples/vue/hello-world/src/main.js deleted file mode 100644 index 63eb05f711..0000000000 --- a/examples/vue/hello-world/src/main.js +++ /dev/null @@ -1,8 +0,0 @@ -import Vue from 'vue' -import App from './App.vue' - -Vue.config.productionTip = false - -new Vue({ - render: h => h(App), -}).$mount('#app') diff --git a/examples/vue/hello-world/yarn.lock b/examples/vue/hello-world/yarn.lock deleted file mode 100644 index 78c006c099..0000000000 --- a/examples/vue/hello-world/yarn.lock +++ /dev/null @@ -1,8298 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== - dependencies: - "@babel/highlight" "^7.8.3" - -"@babel/compat-data@^7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.0.tgz#1e9129ec36bc7cc5ec202801d8af9529699b8d5e" - integrity sha512-H59nKm/7ATMfocMobbSk4PkeAerKqoxk+EYBT0kV5sol0e8GBpGNHseZNNYX0VOItKngIf6GgUpEOAlOLIUvDA== - dependencies: - browserslist "^4.12.0" - invariant "^2.2.4" - semver "^5.5.0" - -"@babel/core@^7.9.6": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.0.tgz#a6fe5db77ebfb61e0da6c5c36aaf14aab07b2b44" - integrity sha512-FGgV2XyPoVtYDvbFXlukEWt13Afka4mBRQ2CoTsHxpgVGO6XfgtT6eI+WyjQRGGTL90IDkIVmme8riFCLZ8lUw== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.10.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.10.0" - "@babel/parser" "^7.10.0" - "@babel/template" "^7.10.0" - "@babel/traverse" "^7.10.0" - "@babel/types" "^7.10.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.0.tgz#a238837896edf35ee5fbfb074548d3256b4bc55d" - integrity sha512-ThoWCJHlgukbtCP79nAK4oLqZt5fVo70AHUni/y8Jotyg5rtJiG2FVl+iJjRNKIyl4hppqztLyAoEWcCvqyOFQ== - dependencies: - "@babel/types" "^7.10.0" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" - integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" - integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-compilation-targets@^7.10.0", "@babel/helper-compilation-targets@^7.9.6": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.0.tgz#c2734604ddfaa616479759a0cc2593d1928304bd" - integrity sha512-PW5Hlc1cQ8bLzY7YsLJP6PQ7GR6ZD8Av4JlP3DZk6QaZJvptsXNDn4Su64EjKAetLTJhVPDp8AEC+j2O6b/Gpg== - dependencies: - "@babel/compat-data" "^7.10.0" - browserslist "^4.12.0" - invariant "^2.2.4" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/helper-create-class-features-plugin@^7.10.0", "@babel/helper-create-class-features-plugin@^7.8.3": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.0.tgz#3a2b7b86f6365ea4ac3837a49ec5791e65217944" - integrity sha512-n4tPJaI0iuLRayriXTQ8brP3fMA/fNmxpxswfNuhe4qXQbcCWzeAqm6SeR/KExIOcdCvOh/KkPQVgBsjcb0oqA== - dependencies: - "@babel/helper-function-name" "^7.9.5" - "@babel/helper-member-expression-to-functions" "^7.10.0" - "@babel/helper-optimise-call-expression" "^7.10.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.10.0" - "@babel/helper-split-export-declaration" "^7.8.3" - -"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" - integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-regex" "^7.8.3" - regexpu-core "^4.7.0" - -"@babel/helper-define-map@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" - integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/types" "^7.8.3" - lodash "^4.17.13" - -"@babel/helper-explode-assignable-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" - integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== - dependencies: - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" - integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== - dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.9.5" - -"@babel/helper-get-function-arity@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" - integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-hoist-variables@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" - integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-member-expression-to-functions@^7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.0.tgz#e8cf57470bfd1247f2b41aa621a527e952efa6f1" - integrity sha512-xKLTpbMkJcvwEsDaTfs9h0IlfUiBLPFfybxaPpPPsQDsZTRg+UKh+86oK7sctHF3OUiRQkb10oS9MXSqgyV6/g== - dependencies: - "@babel/types" "^7.10.0" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" - integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-transforms@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" - integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-simple-access" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.6" - "@babel/types" "^7.9.0" - lodash "^4.17.13" - -"@babel/helper-optimise-call-expression@^7.10.0", "@babel/helper-optimise-call-expression@^7.8.3": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.0.tgz#6dcfb565842f43bed31b24f3e4277f18826e5e79" - integrity sha512-HgMd8QKA8wMJs5uK/DYKdyzJAEuGt1zyDp9wLMlMR6LitTQTHPUE+msC82ZsEDwq+U3/yHcIXIngRm9MS4IcIg== - dependencies: - "@babel/types" "^7.10.0" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" - integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== - -"@babel/helper-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" - integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== - dependencies: - lodash "^4.17.13" - -"@babel/helper-remap-async-to-generator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" - integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-wrap-function" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-replace-supers@^7.10.0", "@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.0.tgz#26bc22ee1a35450934d2e2a9b27de10a22fac9d6" - integrity sha512-erl4iVeiANf14JszXP7b69bSrz3e3+qW09pVvEmTWwzRQEOoyb1WFlYCA8d/VjVZGYW8+nGpLh7swf9CifH5wg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.0" - "@babel/helper-optimise-call-expression" "^7.10.0" - "@babel/traverse" "^7.10.0" - "@babel/types" "^7.10.0" - -"@babel/helper-simple-access@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" - integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== - dependencies: - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-split-export-declaration@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" - integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" - integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== - -"@babel/helper-wrap-function@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" - integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helpers@^7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.0.tgz#634400a0977b8dcf7b311761a77ca94ed974b3b6" - integrity sha512-lQtFJoDZAGf/t2PgR6Z59Q2MwjvOGGsxZ0BAlsrgyDhKuMbe63EfbQmVmcLfyTBj8J4UtiadQimcotvYVg/kVQ== - dependencies: - "@babel/template" "^7.10.0" - "@babel/traverse" "^7.10.0" - "@babel/types" "^7.10.0" - -"@babel/highlight@^7.8.3": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" - integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== - dependencies: - "@babel/helper-validator-identifier" "^7.9.0" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.10.0", "@babel/parser@^7.7.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.0.tgz#8eca3e71a73dd562c5222376b08253436bb4995b" - integrity sha512-fnDUl1Uy2gThM4IFVW4ISNHqr3cJrCsRkSCasFgx0XDO9JcttDS5ytyBc4Cu4X1+fjoo3IVvFbRD6TeFlHJlEQ== - -"@babel/plugin-proposal-async-generator-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" - integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-remap-async-to-generator" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - -"@babel/plugin-proposal-class-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" - integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-proposal-decorators@^7.8.3": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.0.tgz#aa1c82288d9af1f2a5bc759e5dffbca8f8d01ea1" - integrity sha512-PTlxQfx0fZjOYlLe+gAhpb6Lph3zr03lpzqnzI8bWtcxDo/98rhO2adxe87F7OHg1G65nXxQ9ChPvB/0A3qSAg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-decorators" "^7.8.3" - -"@babel/plugin-proposal-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" - integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - -"@babel/plugin-proposal-json-strings@^7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.0.tgz#72926c31c14ff4f04916a0b17d376cdfb7fa1d84" - integrity sha512-n4oQLAAXTFj0OusjIbr6bcvVQf8oH6QziwAK8QNtKhjJAg71+hnU2rZDZYkYMmfOZ46dCWf+ybbHJ7hxfrzFlw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.0" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" - integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - -"@babel/plugin-proposal-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" - integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - -"@babel/plugin-proposal-object-rest-spread@^7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.0.tgz#d27b0910b637f7c9d9a5629f2adcd04dc9ea4e69" - integrity sha512-DOD+4TqMcRKJdAfN08+v9cciK5d0HW5hwTndOoKZEfEzU/mRrKboheD5mnWU4Q96VOnDdAj86kKjZhoQyG6s+A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.9.5" - -"@babel/plugin-proposal-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" - integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - -"@babel/plugin-proposal-optional-chaining@^7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.0.tgz#f9bdcd5cbf2e3037674903a45e56ed0cbaea1550" - integrity sha512-bn+9XT8Y6FJCO37ewj4E1gIirR35nDm+mGcqQV4dM3LKSVp3QTAU3f65Z0ld4y6jdfAlv2VKzCh4mezhRnl+6Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-private-methods@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.8.3.tgz#01248c6c8dc292116b3b4ebd746150f4f0728bab" - integrity sha512-ysLAper960yy1TVXa2lMYdCQIGqtUXo8sVb+zYE7UTiZSLs6/wbZ0PrrXEKESJcK3SgFWrF8WpsaDzdslhuoZA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" - integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.8" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-async-generators@^7.8.0": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz#6cb933a8872c8d359bfde69bbeaae5162fd1e8f7" - integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-decorators@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz#8d2c15a9f1af624b0025f961682a9d53d3001bda" - integrity sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-json-strings@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" - integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" - integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-object-rest-spread@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" - integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-arrow-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" - integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-async-to-generator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" - integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-remap-async-to-generator" "^7.8.3" - -"@babel/plugin-transform-block-scoped-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" - integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-block-scoping@^7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.0.tgz#5d7aa0cf921ec91bdc97c9b311bf1fce0ea979b0" - integrity sha512-AoMn0D3nLG9i71useuBrZZTnHbjnhcaTXCckUtOx3JPuhGGJdOUYMwOV9niPJ+nZCk52dfLLqbmV3pBMCRQLNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - lodash "^4.17.13" - -"@babel/plugin-transform-classes@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz#800597ddb8aefc2c293ed27459c1fcc935a26c2c" - integrity sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-define-map" "^7.8.3" - "@babel/helper-function-name" "^7.9.5" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-split-export-declaration" "^7.8.3" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" - integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-destructuring@^7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.0.tgz#59145194029721e49e511afb4bdd1d2f38369180" - integrity sha512-yKoghHpYbC0eM+6o6arPUJT9BQBvOOn8iOCEHwFvkJ5gjAxYmoUaAuLwaoA9h2YvC6dzcRI0KPQOpRXr8qQTxQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" - integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-duplicate-keys@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" - integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" - integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-for-of@^7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.0.tgz#ff2bf95dc1deb9b309c7fd78d9620ac9266a3efe" - integrity sha512-0ldl5xEe9kbuhB1cDqs17JiBPEm1+6/LH7loo29+MAJOyB/xbpLI/u6mRzDPjr0nYL7z0S14FPT4hs2gH8Im9Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-function-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" - integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" - integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-member-expression-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" - integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-modules-amd@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz#8539ec42c153d12ea3836e0e3ac30d5aae7b258e" - integrity sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw== - dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277" - integrity sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ== - dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-simple-access" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.0.tgz#815aa9b9d59224ed1bb5d4cbb3c86c4d7e12d9bf" - integrity sha512-L/1xADoyJeb01fqKiHhl4ghAJOnFcHvx2JQA7bc8zdaDFDU4k62CJmXqDtNtJUNiOwlHZLWg1l7/Twf1aWARQw== - dependencies: - "@babel/helper-hoist-variables" "^7.8.3" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" - integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== - dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" - integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - -"@babel/plugin-transform-new-target@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" - integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-object-super@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" - integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz#173b265746f5e15b2afe527eeda65b73623a0795" - integrity sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA== - dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-property-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" - integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-regenerator@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" - integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" - integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-runtime@^7.9.6": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.0.tgz#16e50ba682aa9925b94123a622d996cadd4cbef7" - integrity sha512-SWIc5IJnoLHk9qVRvvpebUW5lafStcKlLcqELMiNOApVIxPbCtkQfLRMCdaEKw4X92JItFKdoBxv2udiyGwFtg== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - resolve "^1.8.1" - semver "^5.5.1" - -"@babel/plugin-transform-shorthand-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" - integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-spread@^7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.0.tgz#6918d9b2b52c604802bd50a5f22b649efddf9af6" - integrity sha512-P3Zj04ylqumJBjmjylNl05ZHRo4j4gFNG7P70loys0//q5BTe30E8xIj6PnqEWAfsPYu2sdIPcJeeQdclqlM6A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-sticky-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" - integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-regex" "^7.8.3" - -"@babel/plugin-transform-template-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" - integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-typeof-symbol@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" - integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-unicode-escapes@^7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.0.tgz#63b4da633af14740b6570b928a2d5537495314cb" - integrity sha512-6DwSPQzJ9kSRI1kNFfVAeYdeH7sUH0c1NOYSBGnpJ1ZUZ7mxPY1hxeAqzcrO5NKlOx7ghcy4nAbfFWTPx5IVEg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-unicode-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" - integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/preset-env@^7.9.6": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.0.tgz#2b1d9c0cf41fdf68f64d8183a567a14f70861f99" - integrity sha512-UOZNyiZRvIGvIudjCB8Y8OVkpAvlslec4qgwC73yEvx3Puz0c/xc28Yru36y5K+StOkPPM+VldTsmXPht5LpSg== - dependencies: - "@babel/compat-data" "^7.10.0" - "@babel/helper-compilation-targets" "^7.10.0" - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-proposal-async-generator-functions" "^7.8.3" - "@babel/plugin-proposal-class-properties" "^7.8.3" - "@babel/plugin-proposal-dynamic-import" "^7.8.3" - "@babel/plugin-proposal-json-strings" "^7.10.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.10.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.10.0" - "@babel/plugin-proposal-private-methods" "^7.8.3" - "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.8.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-async-to-generator" "^7.8.3" - "@babel/plugin-transform-block-scoped-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.10.0" - "@babel/plugin-transform-classes" "^7.9.5" - "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.10.0" - "@babel/plugin-transform-dotall-regex" "^7.8.3" - "@babel/plugin-transform-duplicate-keys" "^7.8.3" - "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.10.0" - "@babel/plugin-transform-function-name" "^7.8.3" - "@babel/plugin-transform-literals" "^7.8.3" - "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.6" - "@babel/plugin-transform-modules-commonjs" "^7.9.6" - "@babel/plugin-transform-modules-systemjs" "^7.10.0" - "@babel/plugin-transform-modules-umd" "^7.9.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.8.3" - "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.9.5" - "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.7" - "@babel/plugin-transform-reserved-words" "^7.8.3" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.10.0" - "@babel/plugin-transform-sticky-regex" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/plugin-transform-typeof-symbol" "^7.8.4" - "@babel/plugin-transform-unicode-escapes" "^7.10.0" - "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.10.0" - browserslist "^4.12.0" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/preset-modules@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" - integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/runtime@^7.8.4", "@babel/runtime@^7.9.6": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.0.tgz#2cdcd6d7a391c24f7154235134c830cfb58ac0b1" - integrity sha512-tgYb3zVApHbLHYOPWtVwg25sBqHhfBXRKeKoTIyoheIxln1nA7oBl7SfHfiTG2GhDPI8EUBkOD/0wJCP/3HN4Q== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.10.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.0.tgz#f15d852ce16cd5fb3e219097a75f662710b249b1" - integrity sha512-aMLEQn5tcG49LEWrsEwxiRTdaJmvLem3+JMCMSeCy2TILau0IDVyWdm/18ACx7XOCady64FLt6KkHy28tkDQHQ== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.10.0" - "@babel/types" "^7.10.0" - -"@babel/traverse@^7.10.0", "@babel/traverse@^7.7.0", "@babel/traverse@^7.8.3": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.0.tgz#290935529881baf619398d94fd453838bef36740" - integrity sha512-NZsFleMaLF1zX3NxbtXI/JCs2RPOdpGru6UBdGsfhdsDsP+kFF+h2QQJnMJglxk0kc69YmMFs4A44OJY0tKo5g== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.10.0" - "@babel/helper-function-name" "^7.9.5" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.10.0" - "@babel/types" "^7.10.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/types@^7.10.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.8.3", "@babel/types@^7.9.0", "@babel/types@^7.9.5": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.0.tgz#d47d92249e42393a5723aad5319035ae411e3e38" - integrity sha512-t41W8yWFyQFPOAAvPvjyRhejcLGnJTA3iRpFcDbEKwVJ3UnHQePFzLk8GagTsucJlImyNwrGikGsYURrWbQG8w== - dependencies: - "@babel/helper-validator-identifier" "^7.9.5" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@bazel/bazelisk@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.4.0.tgz#401d7b89b8d89dd579d1e16cc24cd4d9281a4fbb" - integrity sha512-VNI/jF7baQiBy4x+u8gmSDsFehqaAuzMyLuCj0j6/aZCZSw2OssytJVj73m8sFYbXgj67D8iYEQ0gbuoafDk6w== - -"@bazel/ibazel@^0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" - integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== - -"@hapi/address@2.x.x": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== - -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== - -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== - -"@hapi/joi@^15.0.1": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== - dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" - -"@hapi/topo@3.x.x": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== - dependencies: - "@hapi/hoek" "^8.3.0" - -"@intervolga/optimize-cssnano-plugin@^1.0.5": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz#be7c7846128b88f6a9b1d1261a0ad06eb5c0fdf8" - integrity sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA== - dependencies: - cssnano "^4.0.0" - cssnano-preset-default "^4.0.0" - postcss "^7.0.0" - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@soda/friendly-errors-webpack-plugin@^1.7.1": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz#706f64bcb4a8b9642b48ae3ace444c70334d615d" - integrity sha512-cWKrGaFX+rfbMrAxVv56DzhPNqOJPZuNIS2HGMELtgGzb+vsMzyig9mml5gZ/hr2BGtSLV+dP2LUEuAL8aG2mQ== - dependencies: - chalk "^1.1.3" - error-stack-parser "^2.0.0" - string-width "^2.0.0" - -"@soda/get-current-script@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@soda/get-current-script/-/get-current-script-1.0.0.tgz#623aa40623550e3b94767cffeb096a6fb597ed09" - integrity sha512-9GvTek+7cVw7r+L7TNGOG1astZJWXz2h5q4BqMXl28KN+24iSCm1xo+RhZOZvwdT3bzNe9hD7riJc/lBoO7mgg== - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" - -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/node@*": - version "14.0.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.5.tgz#3d03acd3b3414cf67faf999aed11682ed121f22b" - integrity sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA== - -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== - -"@types/q@^1.5.1": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" - integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== - -"@vue/babel-helper-vue-jsx-merge-props@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz#048fe579958da408fb7a8b2a3ec050b50a661040" - integrity sha512-6tyf5Cqm4m6v7buITuwS+jHzPlIPxbFzEhXR5JGZpbrvOcp1hiQKckd305/3C7C36wFekNTQSxAtgeM0j0yoUw== - -"@vue/babel-plugin-transform-vue-jsx@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.1.2.tgz#c0a3e6efc022e75e4247b448a8fc6b86f03e91c0" - integrity sha512-YfdaoSMvD1nj7+DsrwfTvTnhDXI7bsuh+Y5qWwvQXlD24uLgnsoww3qbiZvWf/EoviZMrvqkqN4CBw0W3BWUTQ== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" - html-tags "^2.0.0" - lodash.kebabcase "^4.1.1" - svg-tags "^1.0.0" - -"@vue/babel-preset-app@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-4.4.1.tgz#97c6796183cd0abf96a17297dc335c4c702fd8c4" - integrity sha512-VHVROEBBiW0dnuNuzlFElkncXo+zxh5Px0MZ51Th5da8UPbQodf43mnpotMnFtmCPTXAFL58tzDttu1FgrgfpQ== - dependencies: - "@babel/core" "^7.9.6" - "@babel/helper-compilation-targets" "^7.9.6" - "@babel/helper-module-imports" "^7.8.3" - "@babel/plugin-proposal-class-properties" "^7.8.3" - "@babel/plugin-proposal-decorators" "^7.8.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.9.6" - "@babel/preset-env" "^7.9.6" - "@babel/runtime" "^7.9.6" - "@vue/babel-preset-jsx" "^1.1.2" - babel-plugin-dynamic-import-node "^2.3.3" - core-js "^3.6.5" - core-js-compat "^3.6.5" - semver "^6.1.0" - -"@vue/babel-preset-jsx@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.1.2.tgz#2e169eb4c204ea37ca66c2ea85a880bfc99d4f20" - integrity sha512-zDpVnFpeC9YXmvGIDSsKNdL7qCG2rA3gjywLYHPCKDT10erjxF4U+6ay9X6TW5fl4GsDlJp9bVfAVQAAVzxxvQ== - dependencies: - "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.1.2" - "@vue/babel-sugar-functional-vue" "^1.1.2" - "@vue/babel-sugar-inject-h" "^1.1.2" - "@vue/babel-sugar-v-model" "^1.1.2" - "@vue/babel-sugar-v-on" "^1.1.2" - -"@vue/babel-sugar-functional-vue@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.1.2.tgz#f7e24fba09e6f1ee70104560a8808057555f1a9a" - integrity sha512-YhmdJQSVEFF5ETJXzrMpj0nkCXEa39TvVxJTuVjzvP2rgKhdMmQzlJuMv/HpadhZaRVMCCF3AEjjJcK5q/cYzQ== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-inject-h@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.1.2.tgz#8a5276b6d8e2ed16ffc8078aad94236274e6edf0" - integrity sha512-VRSENdTvD5htpnVp7i7DNuChR5rVMcORdXjvv5HVvpdKHzDZAYiLSD+GhnhxLm3/dMuk8pSzV+k28ECkiN5m8w== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-v-model@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.1.2.tgz#1ff6fd1b800223fc9cb1e84dceb5e52d737a8192" - integrity sha512-vLXPvNq8vDtt0u9LqFdpGM9W9IWDmCmCyJXuozlq4F4UYVleXJ2Fa+3JsnTZNJcG+pLjjfnEGHci2339Kj5sGg== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.1.2" - camelcase "^5.0.0" - html-tags "^2.0.0" - svg-tags "^1.0.0" - -"@vue/babel-sugar-v-on@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.1.2.tgz#b2ef99b8f2fab09fbead25aad70ef42e1cf5b13b" - integrity sha512-T8ZCwC8Jp2uRtcZ88YwZtZXe7eQrJcfRq0uTFy6ShbwYJyz5qWskRFoVsdTi9o0WEhmQXxhQUewodOSCUPVmsQ== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.1.2" - camelcase "^5.0.0" - -"@vue/cli-overlay@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-4.4.1.tgz#f1f51f31f7a00d371e9a5b5a941525184475bf8b" - integrity sha512-EQqAVy7O/qqGOfSYIGL073FWlr/s6QFA0wA1wY8pHnTS5WPwAiHT+D+xe+fgXKZ3KeL7v7u/le7YFIEVXFVXOg== - -"@vue/cli-plugin-babel@~4.4.0": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.4.1.tgz#2c6e969fe51f1b4b211bea84afb7cad18240f70f" - integrity sha512-dmhymfm2UnZDw13k/zKT6YIj7je53mE37Y+jEJxpRUlCKFmZUDuYkJ8i5HmO0SnaCnEGqNELaBkoIFnY3aE2Gw== - dependencies: - "@babel/core" "^7.9.6" - "@vue/babel-preset-app" "^4.4.1" - "@vue/cli-shared-utils" "^4.4.1" - babel-loader "^8.1.0" - cache-loader "^4.1.0" - thread-loader "^2.1.3" - webpack "^4.0.0" - -"@vue/cli-plugin-eslint@~4.4.0": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.4.1.tgz#e39d6517da6de231195d227f995f495e2958a74a" - integrity sha512-T+9+q44iajQEbe59z6Io3otFOsWnPOEVU+/hrDyC6aOToJbQo6P4VacByDDcuGYENAjAd8ENLSt18TaPNSIyRw== - dependencies: - "@vue/cli-shared-utils" "^4.4.1" - eslint-loader "^2.2.1" - globby "^9.2.0" - inquirer "^7.1.0" - webpack "^4.0.0" - yorkie "^2.0.0" - -"@vue/cli-plugin-router@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-router/-/cli-plugin-router-4.4.1.tgz#07d09df0f4bea816e637da814f578b808f1f93b2" - integrity sha512-kCSsJG7pjDvCJDjGtcCI5l0UjmqwNigOR41RkeGSjSUvzV4ArSniXjFqrOmtpMp36S5xCtwtt9MFm/K4fCubkQ== - dependencies: - "@vue/cli-shared-utils" "^4.4.1" - -"@vue/cli-plugin-vuex@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.4.1.tgz#98d18fc5d36fa6e0d1fc2ecaeea37aa965564f19" - integrity sha512-FtOFsDP0qznwVaCz0BZmTzUm5vhHSJzX2/XD3L5dLTkrNxyDEbZmbKoX0n1OzBcQwZC7dkJZP2tdoCQx0mX//g== - -"@vue/cli-service@~4.4.0": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-4.4.1.tgz#b26a435d8c953bc7efaf7b784c9835c1415bcf1c" - integrity sha512-DVV0zr5Sw7pzdm3z3PRrfqihLgoJP/d9AgNFcSSQF/J9Gtvjf1t0PTJJFeLANHSL3kDWte+3kjc22sXayu0BJQ== - dependencies: - "@intervolga/optimize-cssnano-plugin" "^1.0.5" - "@soda/friendly-errors-webpack-plugin" "^1.7.1" - "@soda/get-current-script" "^1.0.0" - "@vue/cli-overlay" "^4.4.1" - "@vue/cli-plugin-router" "^4.4.1" - "@vue/cli-plugin-vuex" "^4.4.1" - "@vue/cli-shared-utils" "^4.4.1" - "@vue/component-compiler-utils" "^3.1.2" - "@vue/preload-webpack-plugin" "^1.1.0" - "@vue/web-component-wrapper" "^1.2.0" - acorn "^7.2.0" - acorn-walk "^7.1.1" - address "^1.1.2" - autoprefixer "^9.8.0" - browserslist "^4.12.0" - cache-loader "^4.1.0" - case-sensitive-paths-webpack-plugin "^2.3.0" - cli-highlight "^2.1.4" - clipboardy "^2.3.0" - cliui "^6.0.0" - copy-webpack-plugin "^5.1.1" - css-loader "^3.5.3" - cssnano "^4.1.10" - debug "^4.1.1" - default-gateway "^5.0.5" - dotenv "^8.2.0" - dotenv-expand "^5.1.0" - file-loader "^4.2.0" - fs-extra "^7.0.1" - globby "^9.2.0" - hash-sum "^2.0.0" - html-webpack-plugin "^3.2.0" - launch-editor-middleware "^2.2.1" - lodash.defaultsdeep "^4.6.1" - lodash.mapvalues "^4.6.0" - lodash.transform "^4.6.0" - mini-css-extract-plugin "^0.9.0" - minimist "^1.2.5" - pnp-webpack-plugin "^1.6.4" - portfinder "^1.0.26" - postcss-loader "^3.0.0" - ssri "^7.1.0" - terser-webpack-plugin "^2.3.6" - thread-loader "^2.1.3" - url-loader "^2.2.0" - vue-loader "^15.9.2" - vue-style-loader "^4.1.2" - webpack "^4.0.0" - webpack-bundle-analyzer "^3.8.0" - webpack-chain "^6.4.0" - webpack-dev-server "^3.11.0" - webpack-merge "^4.2.2" - -"@vue/cli-shared-utils@^4.4.1": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-4.4.1.tgz#930304ade5a9f9bf0d2fd67d9305cad83d04aae1" - integrity sha512-teevHgI7XUsKVMOncx3M+6iLjO28woGfRwgUG4hR83moVBHQe5x2OCr2i5t/58bwpv269RD5RYXBQCGtIXuxZw== - dependencies: - "@hapi/joi" "^15.0.1" - chalk "^2.4.2" - execa "^1.0.0" - launch-editor "^2.2.1" - lru-cache "^5.1.1" - node-ipc "^9.1.1" - open "^6.3.0" - ora "^3.4.0" - read-pkg "^5.1.1" - request "^2.88.2" - request-promise-native "^1.0.8" - semver "^6.1.0" - strip-ansi "^6.0.0" - -"@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.1.2.tgz#8213a5ff3202f9f2137fe55370f9e8b9656081c3" - integrity sha512-QLq9z8m79mCinpaEeSURhnNCN6djxpHw0lpP/bodMlt5kALfONpryMthvnrQOlTcIKoF+VoPi+lPHUYeDFPXug== - dependencies: - consolidate "^0.15.1" - hash-sum "^1.0.2" - lru-cache "^4.1.2" - merge-source-map "^1.1.0" - postcss "^7.0.14" - postcss-selector-parser "^6.0.2" - source-map "~0.6.1" - vue-template-es2015-compiler "^1.9.0" - optionalDependencies: - prettier "^1.18.2" - -"@vue/preload-webpack-plugin@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.1.tgz#18723530d304f443021da2292d6ec9502826104a" - integrity sha512-8VCoJeeH8tCkzhkpfOkt+abALQkS11OIHhte5MBzYaKMTqK0A3ZAKEUVAffsOklhEv7t0yrQt696Opnu9oAx+w== - -"@vue/web-component-wrapper@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@vue/web-component-wrapper/-/web-component-wrapper-1.2.0.tgz#bb0e46f1585a7e289b4ee6067dcc5a6ae62f1dd1" - integrity sha512-Xn/+vdm9CjuC9p3Ae+lTClNutrVhsXpzxvoTXXtoys6kVRX9FkueSUAqSWAyZntmVLlR4DosBV4pH8y5Z/HbUw== - -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-jsx@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" - integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== - -acorn-walk@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" - integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== - -acorn@^6.4.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== - -acorn@^7.1.1, acorn@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" - integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== - -address@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== - -aggregate-error@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" - integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" - integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== - -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: - version "6.12.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" - integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== - dependencies: - type-fest "^0.11.0" - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -arch@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" - integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - 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" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-union@^1.0.1, array-union@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - 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" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^9.8.0: - version "9.8.0" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.0.tgz#68e2d2bef7ba4c3a65436f662d0a56a741e56511" - integrity sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A== - dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001061" - chalk "^2.4.2" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.30" - postcss-value-parser "^4.1.0" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" - integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== - -babel-eslint@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -babel-loader@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" - integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== - dependencies: - find-cache-dir "^2.1.0" - loader-utils "^1.4.0" - mkdirp "^0.5.3" - pify "^4.0.1" - schema-utils "^2.6.5" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - 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" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -bfj@^6.1.1: - version "6.1.2" - resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f" - integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw== - dependencies: - bluebird "^3.5.5" - check-types "^8.0.3" - hoopy "^0.1.4" - tryer "^1.0.1" - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird@^3.1.1, bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: - version "4.11.9" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" - integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== - -bn.js@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" - integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - 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" - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -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" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - 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" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" - integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.2" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.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" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.8.5: - version "4.12.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" - integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== - dependencies: - caniuse-lite "^1.0.30001043" - electron-to-chromium "^1.3.413" - node-releases "^1.1.53" - pkg-up "^2.0.0" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-json@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/buffer-json/-/buffer-json-2.0.0.tgz#f73e13b1e42f196fe2fd67d001c7d7107edd7c23" - integrity sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - 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" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cacache@^12.0.2, cacache@^12.0.3: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" - integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== - dependencies: - chownr "^1.1.2" - figgy-pudding "^3.5.1" - fs-minipass "^2.0.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - infer-owner "^1.0.4" - lru-cache "^5.1.1" - minipass "^3.0.0" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - p-map "^3.0.0" - promise-inflight "^1.0.1" - rimraf "^2.7.1" - ssri "^7.0.0" - unique-filename "^1.1.1" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - 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" - -cache-loader@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-4.1.0.tgz#9948cae353aec0a1fcb1eafda2300816ec85387e" - integrity sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw== - dependencies: - buffer-json "^2.0.0" - find-cache-dir "^3.0.0" - loader-utils "^1.2.3" - mkdirp "^0.5.1" - neo-async "^2.6.1" - schema-utils "^2.0.0" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001043, caniuse-lite@^1.0.30001061: - version "1.0.30001066" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001066.tgz#0a8a58a10108f2b9bf38e7b65c237b12fd9c5f04" - integrity sha512-Gfj/WAastBtfxLws0RCh2sDbTK/8rJuSeZMecrSkNGYxPcv7EzblmDGfWQCFEQcSqYE2BRgQiJh8HOD07N5hIw== - -case-sensitive-paths-webpack-plugin@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" - integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - 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.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -check-types@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" - integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== - -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" - integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.4.0" - optionalDependencies: - fsevents "~2.1.2" - -chownr@^1.1.1, chownr@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" - -ci-info@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== - -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" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@4.2.x: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-highlight@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.4.tgz#098cb642cf17f42adc1c1145e07f960ec4d7522b" - integrity sha512-s7Zofobm20qriqDoU9sXptQx0t2R9PEgac92mENNm7xaEe1hn71IIMsXMK+6encA6WRCWWxIGQbipr3q998tlQ== - dependencies: - chalk "^3.0.0" - highlight.js "^9.6.0" - mz "^2.4.0" - parse5 "^5.1.1" - parse5-htmlparser2-tree-adapter "^5.1.1" - yargs "^15.0.0" - -cli-spinners@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.3.0.tgz#0632239a4b5aa4c958610142c34bb7a651fc8df5" - integrity sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w== - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - -clipboardy@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290" - integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ== - dependencies: - arch "^2.1.1" - execa "^1.0.0" - is-wsl "^2.1.1" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.5.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" - integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" - integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.2" - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - -commander@^2.18.0, commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -consolidate@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" - integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== - dependencies: - bluebird "^3.1.1" - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -copy-webpack-plugin@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" - integrity sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg== - dependencies: - cacache "^12.0.3" - find-cache-dir "^2.1.0" - glob-parent "^3.1.0" - globby "^7.1.1" - is-glob "^4.0.1" - loader-utils "^1.2.3" - minimatch "^3.0.4" - normalize-path "^3.0.0" - p-limit "^2.2.1" - schema-utils "^1.0.0" - serialize-javascript "^2.1.2" - webpack-log "^2.0.0" - -core-js-compat@^3.6.2, core-js-compat@^3.6.5: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" - integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== - dependencies: - browserslist "^4.8.5" - semver "7.0.0" - -core-js@^3.6.5: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" - integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== - -core-util-is@1.0.2, 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" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - 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.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - 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@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - 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, 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" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-loader@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.5.3.tgz#95ac16468e1adcd95c844729e0bb167639eb0bcf" - integrity sha512-UEr9NH5Lmi7+dguAm+/JSPovNjYbm2k3TK58EiwQHzOHH5Jfq1Y+XoP2bQO6TMn7PptMd0opxxedAWcaSTRKHw== - dependencies: - camelcase "^5.3.1" - cssesc "^3.0.0" - icss-utils "^4.1.1" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.27" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.2" - postcss-modules-scope "^2.2.0" - postcss-modules-values "^3.0.0" - postcss-value-parser "^4.0.3" - schema-utils "^2.6.6" - semver "^6.3.0" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@1.0.0-alpha.39: - version "1.0.0-alpha.39" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" - integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== - dependencies: - mdn-data "2.0.6" - source-map "^0.6.1" - -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== - -css-what@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" - integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" - integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.0.0, cssnano@^4.1.10: - version "4.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" - integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" - integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== - dependencies: - css-tree "1.0.0-alpha.39" - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -de-indent@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" - integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -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" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deepmerge@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" - integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -default-gateway@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-5.0.5.tgz#4fd6bd5d2855d39b34cc5a59505486e9aafc9b10" - integrity sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA== - dependencies: - execa "^3.3.0" - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - 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" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - 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" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - 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" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^2.0.0, dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" - integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-converter@^0.2: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^1.5.1, domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -dot-prop@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" - integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== - dependencies: - is-obj "^2.0.0" - -dotenv-expand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== - -duplexer@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -easy-stack@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/easy-stack/-/easy-stack-1.0.0.tgz#12c91b3085a37f0baa336e9486eac4bf94e3e788" - integrity sha1-EskbMIWjfwuqM26UhurEv5Tj54g= - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -ejs@^2.6.1: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== - -electron-to-chromium@^1.3.413: - version "1.3.453" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.453.tgz#758a8565a64b7889b27132a51d2abb8b135c9d01" - integrity sha512-IQbCfjJR0NDDn/+vojTlq7fPSREcALtF8M1n01gw7nQghCtfFYrJ2dfhsp8APr8bANoFC8vRTFVXMOGpT0eetw== - -elliptic@^6.0.0, elliptic@^6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== - 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" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" - integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -entities@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.2.tgz#ac74db0bba8d33808bbf36809c3a5c3683531436" - integrity sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw== - -errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" - integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== - dependencies: - stackframe "^1.1.1" - -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: - version "1.17.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" - integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -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" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -eslint-loader@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.2.1.tgz#28b9c12da54057af0845e2a6112701a2f6bf8337" - integrity sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg== - dependencies: - loader-fs-cache "^1.0.0" - loader-utils "^1.0.2" - object-assign "^4.0.1" - object-hash "^1.1.4" - rimraf "^2.6.1" - -eslint-plugin-vue@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz#27fecd9a3a24789b0f111ecdd540a9e56198e0fe" - integrity sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ== - dependencies: - natural-compare "^1.4.0" - semver "^5.6.0" - vue-eslint-parser "^7.0.0" - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" - integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" - integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== - -eslint@^6.7.2: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^7.0.0" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.3" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^6.1.2, espree@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== - dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.0.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" - integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== - dependencies: - estraverse "^4.1.0" - -estraverse@^4.1.0, estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" - integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -event-pubsub@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/event-pubsub/-/event-pubsub-4.3.0.tgz#f68d816bc29f1ec02c539dc58c8dd40ce72cb36e" - integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ== - -eventemitter3@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" - integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== - -events@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" - integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== - -eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== - dependencies: - original "^1.0.0" - -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" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" - integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^3.3.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - p-finally "^2.0.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - 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" - -express@^4.16.3, express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - 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" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - 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" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== - -fast-glob@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== - dependencies: - websocket-driver ">=0.5.1" - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - -file-loader@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" - integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== - dependencies: - loader-utils "^1.2.3" - schema-utils "^2.5.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filesize@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" - integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= - dependencies: - commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.0.0, find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.11.0.tgz#afa14f08ba12a52963140fe43212658897bc0ecb" - integrity sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA== - dependencies: - debug "^3.0.0" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - 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" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== - dependencies: - pump "^3.0.0" - -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" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.0.0, glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - -glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - 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@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -globby@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" - integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= - dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.2: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -gzip-size@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" - integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== - dependencies: - duplexer "^0.1.1" - pify "^4.0.1" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - 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" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - 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" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.0, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash-sum@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" - integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= - -hash-sum@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" - integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@1.2.x, he@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - -highlight.js@^9.6.0: - version "9.18.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.1.tgz#ed21aa001fe6252bb10a3d76d47573c6539fe13c" - integrity sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg== - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoopy@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" - integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== - -hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - -html-entities@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" - integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== - -html-minifier@^3.2.3: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== - dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" - -html-tags@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" - integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= - -html-webpack-plugin@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" - integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= - dependencies: - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - tapable "^1.0.0" - toposort "^1.0.0" - util.promisify "1.0.0" - -htmlparser2@^3.3.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-parser-js@>=0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" - integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy@^1.17.0: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-utils@^4.0.0, icss-utils@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== - dependencies: - postcss "^7.0.14" - -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^4.0.3, ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -infer-owner@^1.0.3, infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -inquirer@^7.0.0, inquirer@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" - integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^3.0.0" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.5.3" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -invariant@^2.2.2, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.1, ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -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" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -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" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - 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" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -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" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.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" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== - -is-ci@^1.0.10: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== - dependencies: - ci-info "^1.5.0" - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^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" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - 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" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - 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" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-docker@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" - integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== - -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" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - 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" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -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" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - 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" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -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" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.0.4, is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== - dependencies: - has "^1.0.3" - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" - integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -is-wsl@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.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" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - 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" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -javascript-stringify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.0.1.tgz#6ef358035310e35d667c675ed63d3eb7c1aa19e5" - integrity sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow== - -jest-worker@^25.4.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" - integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== - dependencies: - merge-stream "^2.0.0" - supports-color "^7.0.0" - -js-message@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/js-message/-/js-message-1.0.5.tgz#2300d24b1af08e89dd095bc1a4c9c9cfcb892d15" - integrity sha1-IwDSSxrwjondCVvBpMnJz8uJLRU= - -js-queue@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/js-queue/-/js-queue-2.0.0.tgz#362213cf860f468f0125fc6c96abc1742531f948" - integrity sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug= - dependencies: - easy-stack "^1.0.0" - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json3@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -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" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - 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" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - 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" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -launch-editor-middleware@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz#e14b07e6c7154b0a4b86a0fd345784e45804c157" - integrity sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg== - dependencies: - launch-editor "^2.2.1" - -launch-editor@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.2.1.tgz#871b5a3ee39d6680fcc26d37930b6eeda89db0ca" - integrity sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw== - dependencies: - chalk "^2.3.0" - shell-quote "^1.6.1" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== - dependencies: - leven "^3.1.0" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -loader-fs-cache@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz#f08657646d607078be2f0a032f8bd69dd6f277d9" - integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== - dependencies: - find-cache-dir "^0.1.1" - mkdirp "^0.5.1" - -loader-runner@^2.3.1, loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash.defaultsdeep@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" - integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== - -lodash.kebabcase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= - -lodash.mapvalues@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" - integrity sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.transform@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.transform/-/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0" - integrity sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A= - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - -loglevel@^1.6.8: - version "1.6.8" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" - integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA== - -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= - -lru-cache@^4.0.1, lru-cache@^4.1.2: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -mdn-data@2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" - integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== - dependencies: - source-map "^0.6.1" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.2.3: - version "1.3.0" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" - integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - 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" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.44.0, "mime-db@>= 1.43.0 < 2": - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== - -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== - dependencies: - mime-db "1.44.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.4: - version "2.4.5" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.5.tgz#d8de2ecb92982dedbb6541c9b6841d7f218ea009" - integrity sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w== - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mini-css-extract-plugin@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" - integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -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" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz#55f7839307d74859d6e8ada9c3ebe72cec216a34" - integrity sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -mz@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nan@^2.12.1: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - 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-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" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - -node-forge@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" - integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== - -node-ipc@^9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/node-ipc/-/node-ipc-9.1.1.tgz#4e245ed6938e65100e595ebc5dc34b16e8dd5d69" - integrity sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w== - dependencies: - event-pubsub "4.3.0" - js-message "1.0.5" - js-queue "2.0.0" - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - 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 "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - 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.11.0" - vm-browserify "^1.0.1" - -node-releases@^1.1.53: - version "1.1.56" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.56.tgz#bc054a417d316e3adac90eafb7e1932802f28705" - integrity sha512-EVo605FhWLygH8a64TjgpjyHYOihkxECwX1bHHr8tETJKWEiWS2YJjPbvsX2jFjnjTNEgBCmk9mLjKG1Mf11cw== - -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" - integrity sha1-MtDkcvkf80VwHBWoMRAY07CpA3k= - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nth-check@^1.0.2, nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - 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" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -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" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-hash@^1.1.4: - version "1.3.1" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" - integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== - -object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== - -object-is@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" - integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - -onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== - dependencies: - mimic-fn "^2.1.0" - -open@^6.3.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== - dependencies: - is-wsl "^1.1.0" - -opener@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" - integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -optionator@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -ora@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" - integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== - dependencies: - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-spinners "^2.0.0" - log-symbols "^2.2.0" - strip-ansi "^5.2.0" - wcwidth "^1.0.1" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1, p-limit@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= - dependencies: - no-case "^2.2.0" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== - 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" - safe-buffer "^5.1.1" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" - integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - lines-and-columns "^1.1.6" - -parse5-htmlparser2-tree-adapter@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-5.1.1.tgz#e8c743d4e92194d5293ecde2b08be31e67461cbc" - integrity sha512-CF+TKjXqoqyDwHqBhFQ+3l5t83xYi6fVT1tQNg+Ye0JRLnTxWvIroCjEp1A0k4lneHNBGnICUf0cfYVYGEazqw== - dependencies: - parse5 "^5.1.1" - -parse5@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== - 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" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= - dependencies: - find-up "^1.0.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - -pnp-webpack-plugin@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" - integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== - dependencies: - ts-pnp "^1.1.6" - -portfinder@^1.0.26: - version "1.0.26" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.26.tgz#475658d56ca30bed72ac7f1378ed350bd1b64e70" - integrity sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.1" - -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" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-calc@^7.0.1: - version "7.0.2" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" - integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== - dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-load-config@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" - integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - dependencies: - postcss "^7.0.5" - -postcss-modules-local-by-default@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" - integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== - dependencies: - icss-utils "^4.1.1" - postcss "^7.0.16" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.0" - -postcss-modules-scope@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-values@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" - integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== - dependencies: - icss-utils "^4.0.0" - postcss "^7.0.6" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" - integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" - integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== - dependencies: - is-svg "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.0.3, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.27, postcss@^7.0.30, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.31" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.31.tgz#332af45cb73e26c0ee2614d7c7fb02dfcc2bd6dd" - integrity sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.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" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -prettier@^1.18.2: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== - -pretty-error@^2.0.2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= - dependencies: - renderkid "^2.0.1" - utila "~0.4" - -private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - 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" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - 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" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" - integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - 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" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -read-pkg@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - 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" - -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" - integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== - dependencies: - picomatch "^2.2.1" - -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== - -regenerator-runtime@^0.13.4: - version "0.13.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" - integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== - -regenerator-transform@^0.14.2: - version "0.14.4" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" - integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== - dependencies: - "@babel/runtime" "^7.8.4" - private "^0.1.8" - -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" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpu-core@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" - integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regjsgen@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - -regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== - dependencies: - jsesc "~0.5.0" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -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" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" - integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== - dependencies: - css-select "^1.1.0" - dom-converter "^0.2" - htmlparser2 "^3.3.0" - strip-ansi "^3.0.0" - utila "^0.4.0" - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== - dependencies: - lodash "^4.17.15" - -request-promise-native@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== - dependencies: - request-promise-core "1.1.3" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.8.1: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -rxjs@^6.5.3: - version "6.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" - integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== - dependencies: - tslib "^1.9.0" - -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" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.6.6: - version "2.6.6" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.6.tgz#299fe6bd4a3365dc23d99fd446caff8f1d6c330c" - integrity sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA== - dependencies: - ajv "^6.12.0" - ajv-keywords "^3.4.1" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.10.7: - version "1.10.7" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" - integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== - dependencies: - node-forge "0.9.0" - -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - 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.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== - -serialize-javascript@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.0.0.tgz#492e489a2d77b7b804ad391a5f5d97870952548e" - integrity sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw== - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - 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" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -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" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.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" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.6.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - 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" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - 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" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - 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" - -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - -sockjs@0.3.20: - version "0.3.20" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" - integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== - dependencies: - faye-websocket "^0.10.0" - uuid "^3.4.0" - websocket-driver "0.6.5" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - 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.5.12: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -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" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.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" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - 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" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" - -ssri@^7.0.0, ssri@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" - integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== - dependencies: - figgy-pudding "^3.5.1" - minipass "^3.1.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stackframe@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.1.1.tgz#ffef0a3318b1b60c3b58564989aca5660729ec71" - integrity sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.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" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - 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" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -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" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-width@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.trimend@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimleft@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" - integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimstart "^1.0.0" - -string.prototype.trimright@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" - integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimend "^1.0.0" - -string.prototype.trimstart@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - 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" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - 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" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= - -strip-json-comments@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" - integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== - dependencies: - has-flag "^4.0.0" - -svg-tags@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" - integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= - -svgo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -terser-webpack-plugin@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" - integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^2.1.2" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser-webpack-plugin@^2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.6.tgz#a4014b311a61f87c6a1b217ef4f5a75bd0665a69" - integrity sha512-I8IDsQwZrqjdmOicNeE8L/MhwatAap3mUrtcAKJuilsemUNcX+Hier/eAzwStVqhlCxq0aG3ni9bK/0BESXkTg== - dependencies: - cacache "^13.0.1" - find-cache-dir "^3.3.1" - jest-worker "^25.4.0" - p-limit "^2.3.0" - schema-utils "^2.6.6" - serialize-javascript "^3.0.0" - source-map "^0.6.1" - terser "^4.6.12" - webpack-sources "^1.4.3" - -terser@^4.1.2, terser@^4.6.12: - version "4.7.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.7.0.tgz#15852cf1a08e3256a80428e865a2fa893ffba006" - integrity sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.0" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" - integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= - dependencies: - any-promise "^1.0.0" - -thread-loader@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-2.1.3.tgz#cbd2c139fc2b2de6e9d28f62286ab770c1acbdda" - integrity sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg== - dependencies: - loader-runner "^2.3.1" - loader-utils "^1.1.0" - neo-async "^2.6.0" - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -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" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - 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" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -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" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -toposort@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= - -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tryer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" - integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== - -ts-pnp@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" - integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== - -tslib@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== - dependencies: - commander "~2.19.0" - source-map "~0.6.1" - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-loader@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" - integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== - dependencies: - loader-utils "^1.2.3" - mime "^2.4.4" - schema-utils "^2.5.0" - -url-parse@^1.4.3: - version "1.4.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" - integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utila@^0.4.0, utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.3.2, uuid@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -v8-compile-cache@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" - integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -vue-eslint-parser@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz#9cdbcc823e656b087507a1911732b867ac101e83" - integrity sha512-Kr21uPfthDc63nDl27AGQEhtt9VrZ9nkYk/NTftJ2ws9XiJwzJJCnCr3AITQ2jpRMA0XPGDECxYH8E027qMK9Q== - dependencies: - debug "^4.1.1" - eslint-scope "^5.0.0" - eslint-visitor-keys "^1.1.0" - espree "^6.2.1" - esquery "^1.0.1" - lodash "^4.17.15" - -vue-hot-reload-api@^2.3.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" - integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== - -vue-loader@^15.9.2: - version "15.9.2" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.2.tgz#ae01f5f4c9c6a04bff4483912e72ef91a402c1ae" - integrity sha512-oXBubaY//CYEISBlHX+c2YPJbmOH68xXPXjFv4MAgPqQvUsnjrBAjCJi8HXZ/r/yfn0tPL5VZj1Zcp8mJPI8VA== - dependencies: - "@vue/component-compiler-utils" "^3.1.0" - hash-sum "^1.0.2" - loader-utils "^1.1.0" - vue-hot-reload-api "^2.3.0" - vue-style-loader "^4.1.0" - -vue-style-loader@^4.1.0, vue-style-loader@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.2.tgz#dedf349806f25ceb4e64f3ad7c0a44fba735fcf8" - integrity sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ== - dependencies: - hash-sum "^1.0.2" - loader-utils "^1.0.2" - -vue-template-compiler@^2.6.11: - version "2.6.11" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz#c04704ef8f498b153130018993e56309d4698080" - integrity sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA== - dependencies: - de-indent "^1.0.2" - he "^1.1.0" - -vue-template-es2015-compiler@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" - integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== - -vue@^2.6.11: - version "2.6.11" - resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.11.tgz#76594d877d4b12234406e84e35275c6d514125c5" - integrity sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ== - -watchpack-chokidar2@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" - integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.6.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa" - integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.0" - watchpack-chokidar2 "^2.0.0" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -webpack-bundle-analyzer@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz#ce6b3f908daf069fd1f7266f692cbb3bded9ba16" - integrity sha512-PODQhAYVEourCcOuU+NiYI7WdR8QyELZGgPvB1y2tjbUpbmcQOt5Q7jEK+ttd5se0KSBKD9SXHCEozS++Wllmw== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - bfj "^6.1.1" - chalk "^2.4.1" - commander "^2.18.0" - ejs "^2.6.1" - express "^4.16.3" - filesize "^3.6.1" - gzip-size "^5.0.0" - lodash "^4.17.15" - mkdirp "^0.5.1" - opener "^1.5.1" - ws "^6.0.0" - -webpack-chain@^6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-6.4.0.tgz#22f0b27b6a9bc9ee3cba4f9e6513cf66394034e2" - integrity sha512-f97PYqxU+9/u0IUqp/ekAHRhBD1IQwhBv3wlJo2nvyELpr2vNnUqO3XQEk+qneg0uWGP54iciotszpjfnEExFA== - dependencies: - deepmerge "^1.5.2" - javascript-stringify "^2.0.1" - -webpack-dev-middleware@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" - integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" - integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.3.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.8" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.26" - schema-utils "^1.0.0" - selfsigned "^1.10.7" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "0.3.20" - sockjs-client "1.4.0" - spdy "^4.0.2" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "^13.3.2" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-merge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@^4.0.0: - version "4.43.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6" - integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.6.1" - webpack-sources "^1.4.1" - -websocket-driver@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" - integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= - dependencies: - websocket-extensions ">=0.1.1" - -websocket-driver@>=0.5.1: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" - integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - -ws@^6.0.0, ws@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== - dependencies: - async-limiter "~1.0.0" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^18.1.1: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yargs@^15.0.0: - version "15.3.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" - integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.1" - -yorkie@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yorkie/-/yorkie-2.0.0.tgz#92411912d435214e12c51c2ae1093e54b6bb83d9" - integrity sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw== - dependencies: - execa "^0.8.0" - is-ci "^1.0.10" - normalize-path "^1.0.0" - strip-indent "^2.0.0" diff --git a/examples/vue/hello-world/package-lock.json b/examples/vue/package-lock.json similarity index 92% rename from examples/vue/hello-world/package-lock.json rename to examples/vue/package-lock.json index 46739acd43..a807e3fed8 100644 --- a/examples/vue/hello-world/package-lock.json +++ b/examples/vue/package-lock.json @@ -5,18 +5,18 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.1" } }, "@babel/compat-data": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.0.tgz", - "integrity": "sha512-H59nKm/7ATMfocMobbSk4PkeAerKqoxk+EYBT0kV5sol0e8GBpGNHseZNNYX0VOItKngIf6GgUpEOAlOLIUvDA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.1.tgz", + "integrity": "sha512-CHvCj7So7iCkGKPRFUfryXIkU2gSBw7VSZFYLsqVhrS47269VK2Hfi9S/YcublPMW8k1u2bQBlbDruoQEm4fgw==", "dev": true, "requires": { "browserslist": "^4.12.0", @@ -25,19 +25,19 @@ } }, "@babel/core": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.0.tgz", - "integrity": "sha512-FGgV2XyPoVtYDvbFXlukEWt13Afka4mBRQ2CoTsHxpgVGO6XfgtT6eI+WyjQRGGTL90IDkIVmme8riFCLZ8lUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.10.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.10.0", - "@babel/parser": "^7.10.0", - "@babel/template": "^7.10.0", - "@babel/traverse": "^7.10.0", - "@babel/types": "^7.10.0", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.2.tgz", + "integrity": "sha512-KQmV9yguEjQsXqyOUGKjS4+3K8/DlOCE2pZcq4augdQmtTy5iv5EHtmMSJ7V4c1BIPjuwtZYqYLCq9Ga+hGBRQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.2", + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helpers": "^7.10.1", + "@babel/parser": "^7.10.2", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.2", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", @@ -46,46 +46,48 @@ "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" - } - }, - "@babel/generator": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.0.tgz", - "integrity": "sha512-ThoWCJHlgukbtCP79nAK4oLqZt5fVo70AHUni/y8Jotyg5rtJiG2FVl+iJjRNKIyl4hppqztLyAoEWcCvqyOFQ==", - "dev": true, - "requires": { - "@babel/types": "^7.10.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", + "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + } } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz", + "integrity": "sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.1" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.1.tgz", + "integrity": "sha512-cQpVq48EkYxUU0xozpGCLla3wlkdRRqLWu1ksFMXA9CM5KQmyyRpSEsYXbao7JUkOw/tAaYKCaYyZq6HOFYtyw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-compilation-targets": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.0.tgz", - "integrity": "sha512-PW5Hlc1cQ8bLzY7YsLJP6PQ7GR6ZD8Av4JlP3DZk6QaZJvptsXNDn4Su64EjKAetLTJhVPDp8AEC+j2O6b/Gpg==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz", + "integrity": "sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA==", "dev": true, "requires": { - "@babel/compat-data": "^7.10.0", + "@babel/compat-data": "^7.10.1", "browserslist": "^4.12.0", "invariant": "^2.2.4", "levenary": "^1.1.1", @@ -93,348 +95,348 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.0.tgz", - "integrity": "sha512-n4tPJaI0iuLRayriXTQ8brP3fMA/fNmxpxswfNuhe4qXQbcCWzeAqm6SeR/KExIOcdCvOh/KkPQVgBsjcb0oqA==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.2.tgz", + "integrity": "sha512-5C/QhkGFh1vqcziq1vAL6SI9ymzUp8BCYjFpvYVhWP4DlATIb3u5q3iUd35mvlyGs8fO7hckkW7i0tmH+5+bvQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-member-expression-to-functions": "^7.10.0", - "@babel/helper-optimise-call-expression": "^7.10.0", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.10.0", - "@babel/helper-split-export-declaration": "^7.8.3" + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", - "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz", + "integrity": "sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-regex": "^7.8.3", + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-regex": "^7.10.1", "regexpu-core": "^4.7.0" } }, "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz", + "integrity": "sha512-+5odWpX+OnvkD0Zmq7panrMuAGQBu6aPUgvMzuMGo4R+jUOvealEj2hiqI6WhxgKrTpFoFj0+VdsuA8KDxHBDg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", + "@babel/helper-function-name": "^7.10.1", + "@babel/types": "^7.10.1", "lodash": "^4.17.13" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.1.tgz", + "integrity": "sha512-vcUJ3cDjLjvkKzt6rHrl767FeE7pMEYfPanq5L16GRtrXIoznc0HykNW2aEYkcnP76P0isoqJ34dDMFZwzEpJg==", "dev": true, "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.1" } }, "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.1.tgz", + "integrity": "sha512-vLm5srkU8rI6X3+aQ1rQJyfjvCBLXP8cAGeuw04zeAM2ItKb1e7pmVmLyHb4sDaAYnLL13RHOZPLEtcGZ5xvjg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.1" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.0.tgz", - "integrity": "sha512-xKLTpbMkJcvwEsDaTfs9h0IlfUiBLPFfybxaPpPPsQDsZTRg+UKh+86oK7sctHF3OUiRQkb10oS9MXSqgyV6/g==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz", + "integrity": "sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g==", "dev": true, "requires": { - "@babel/types": "^7.10.0" + "@babel/types": "^7.10.1" } }, "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz", + "integrity": "sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.1" } }, "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz", + "integrity": "sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1", "lodash": "^4.17.13" } }, "@babel/helper-optimise-call-expression": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.0.tgz", - "integrity": "sha512-HgMd8QKA8wMJs5uK/DYKdyzJAEuGt1zyDp9wLMlMR6LitTQTHPUE+msC82ZsEDwq+U3/yHcIXIngRm9MS4IcIg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz", + "integrity": "sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg==", "dev": true, "requires": { - "@babel/types": "^7.10.0" + "@babel/types": "^7.10.1" } }, "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", "dev": true }, "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.1.tgz", + "integrity": "sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g==", "dev": true, "requires": { "lodash": "^4.17.13" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.1.tgz", + "integrity": "sha512-RfX1P8HqsfgmJ6CwaXGKMAqbYdlleqglvVtht0HGPMSsy2V6MqLlOJVF/0Qyb/m2ZCi2z3q3+s6Pv7R/dQuZ6A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-wrap-function": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-replace-supers": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.0.tgz", - "integrity": "sha512-erl4iVeiANf14JszXP7b69bSrz3e3+qW09pVvEmTWwzRQEOoyb1WFlYCA8d/VjVZGYW8+nGpLh7swf9CifH5wg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", + "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.0", - "@babel/helper-optimise-call-expression": "^7.10.0", - "@babel/traverse": "^7.10.0", - "@babel/types": "^7.10.0" + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", + "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.1" } }, "@babel/helper-validator-identifier": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", - "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz", + "integrity": "sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-function-name": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helpers": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.0.tgz", - "integrity": "sha512-lQtFJoDZAGf/t2PgR6Z59Q2MwjvOGGsxZ0BAlsrgyDhKuMbe63EfbQmVmcLfyTBj8J4UtiadQimcotvYVg/kVQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.1.tgz", + "integrity": "sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw==", "dev": true, "requires": { - "@babel/template": "^7.10.0", - "@babel/traverse": "^7.10.0", - "@babel/types": "^7.10.0" + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", + "@babel/helper-validator-identifier": "^7.10.1", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.0.tgz", - "integrity": "sha512-fnDUl1Uy2gThM4IFVW4ISNHqr3cJrCsRkSCasFgx0XDO9JcttDS5ytyBc4Cu4X1+fjoo3IVvFbRD6TeFlHJlEQ==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.1.tgz", + "integrity": "sha512-vzZE12ZTdB336POZjmpblWfNNRpMSua45EYnRigE2XsZxcXcIyly2ixnTJasJE4Zq3U7t2d8rRF7XRUuzHxbOw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-remap-async-to-generator": "^7.10.1", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", - "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz", + "integrity": "sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-proposal-decorators": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.0.tgz", - "integrity": "sha512-PTlxQfx0fZjOYlLe+gAhpb6Lph3zr03lpzqnzI8bWtcxDo/98rhO2adxe87F7OHg1G65nXxQ9ChPvB/0A3qSAg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.1.tgz", + "integrity": "sha512-xBfteh352MTke2U1NpclzMDmAmCdQ2fBZjhZQQfGTjXw6qcRYMkt528sA1U8o0ThDCSeuETXIj5bOGdxN+5gkw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.0", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-decorators": "^7.8.3" + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-decorators": "^7.10.1" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz", + "integrity": "sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.0.tgz", - "integrity": "sha512-n4oQLAAXTFj0OusjIbr6bcvVQf8oH6QziwAK8QNtKhjJAg71+hnU2rZDZYkYMmfOZ46dCWf+ybbHJ7hxfrzFlw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz", + "integrity": "sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.1", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz", + "integrity": "sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.1", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", - "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz", + "integrity": "sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-numeric-separator": "^7.10.1" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.0.tgz", - "integrity": "sha512-DOD+4TqMcRKJdAfN08+v9cciK5d0HW5hwTndOoKZEfEzU/mRrKboheD5mnWU4Q96VOnDdAj86kKjZhoQyG6s+A==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz", + "integrity": "sha512-Z+Qri55KiQkHh7Fc4BW6o+QBuTagbOp9txE+4U1i79u9oWlf2npkiDx+Rf3iK3lbcHBuNy9UOkwuR5wOMH3LIQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.1", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.9.5" + "@babel/plugin-transform-parameters": "^7.10.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz", + "integrity": "sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.1", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.0.tgz", - "integrity": "sha512-bn+9XT8Y6FJCO37ewj4E1gIirR35nDm+mGcqQV4dM3LKSVp3QTAU3f65Z0ld4y6jdfAlv2VKzCh4mezhRnl+6Q==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.1.tgz", + "integrity": "sha512-dqQj475q8+/avvok72CF3AOSV/SGEcH29zT5hhohqqvvZ2+boQoOr7iGldBG5YXTO2qgCgc2B3WvVLUdbeMlGA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.8.3.tgz", - "integrity": "sha512-ysLAper960yy1TVXa2lMYdCQIGqtUXo8sVb+zYE7UTiZSLs6/wbZ0PrrXEKESJcK3SgFWrF8WpsaDzdslhuoZA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz", + "integrity": "sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", - "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz", + "integrity": "sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-syntax-async-generators": { @@ -447,21 +449,21 @@ } }, "@babel/plugin-syntax-class-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz", - "integrity": "sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz", + "integrity": "sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-syntax-decorators": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz", - "integrity": "sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.1.tgz", + "integrity": "sha512-a9OAbQhKOwSle1Vr0NJu/ISg1sPfdEkfRKWpgPuzhnWWzForou2gIeUIIwjAMHRekhhpJ7eulZlYs0H14Cbi+g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-syntax-dynamic-import": { @@ -483,12 +485,12 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz", - "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz", + "integrity": "sha512-+OxyOArpVFXQeXKLO9o+r2I4dIoVoy6+Uu0vKELrlweDM3QJADZj+Z+5ERansZqIZBcLj42vHnDI8Rz9BnRIuQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-syntax-nullish-coalescing-operator": { @@ -501,12 +503,12 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", - "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz", + "integrity": "sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -537,196 +539,196 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", - "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz", + "integrity": "sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz", + "integrity": "sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz", + "integrity": "sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-remap-async-to-generator": "^7.10.1" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz", + "integrity": "sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.0.tgz", - "integrity": "sha512-AoMn0D3nLG9i71useuBrZZTnHbjnhcaTXCckUtOx3JPuhGGJdOUYMwOV9niPJ+nZCk52dfLLqbmV3pBMCRQLNw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz", + "integrity": "sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.1", "lodash": "^4.17.13" } }, "@babel/plugin-transform-classes": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz", - "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-split-export-declaration": "^7.8.3", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz", + "integrity": "sha512-P9V0YIh+ln/B3RStPoXpEQ/CoAxQIhRSUn7aXqQ+FZJ2u8+oCtjIXR3+X0vsSD8zv+mb56K7wZW1XiDTDGiDRQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-define-map": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz", + "integrity": "sha512-mqSrGjp3IefMsXIenBfGcPXxJxweQe2hEIwMQvjtiDQ9b1IBvDUjkAtV/HMXX47/vXf14qDNedXsIiNd1FmkaQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-destructuring": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.0.tgz", - "integrity": "sha512-yKoghHpYbC0eM+6o6arPUJT9BQBvOOn8iOCEHwFvkJ5gjAxYmoUaAuLwaoA9h2YvC6dzcRI0KPQOpRXr8qQTxQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz", + "integrity": "sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz", + "integrity": "sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz", + "integrity": "sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz", + "integrity": "sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-for-of": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.0.tgz", - "integrity": "sha512-0ldl5xEe9kbuhB1cDqs17JiBPEm1+6/LH7loo29+MAJOyB/xbpLI/u6mRzDPjr0nYL7z0S14FPT4hs2gH8Im9Q==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz", + "integrity": "sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz", + "integrity": "sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz", + "integrity": "sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz", + "integrity": "sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz", - "integrity": "sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz", + "integrity": "sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz", - "integrity": "sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz", + "integrity": "sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.0.tgz", - "integrity": "sha512-L/1xADoyJeb01fqKiHhl4ghAJOnFcHvx2JQA7bc8zdaDFDU4k62CJmXqDtNtJUNiOwlHZLWg1l7/Twf1aWARQw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz", + "integrity": "sha512-ewNKcj1TQZDL3YnO85qh9zo1YF1CHgmSTlRQgHqe63oTrMI85cthKtZjAiZSsSNjPQ5NCaYo5QkbYqEw1ZBgZA==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-hoist-variables": "^7.10.1", + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", - "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz", + "integrity": "sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-named-capturing-groups-regex": { @@ -739,204 +741,204 @@ } }, "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz", + "integrity": "sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz", + "integrity": "sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz", - "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz", + "integrity": "sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz", + "integrity": "sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.1.tgz", + "integrity": "sha512-B3+Y2prScgJ2Bh/2l9LJxKbb8C8kRfsG4AdPT+n7ixBHIxJaIG8bi8tgjxUMege1+WqSJ+7gu1YeoMVO3gPWzw==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz", + "integrity": "sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-runtime": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.0.tgz", - "integrity": "sha512-SWIc5IJnoLHk9qVRvvpebUW5lafStcKlLcqELMiNOApVIxPbCtkQfLRMCdaEKw4X92JItFKdoBxv2udiyGwFtg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.1.tgz", + "integrity": "sha512-4w2tcglDVEwXJ5qxsY++DgWQdNJcCCsPxfT34wCUwIf2E7dI7pMpH8JczkMBbgBTNzBX62SZlNJ9H+De6Zebaw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", "resolve": "^1.8.1", "semver": "^5.5.1" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz", + "integrity": "sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-spread": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.0.tgz", - "integrity": "sha512-P3Zj04ylqumJBjmjylNl05ZHRo4j4gFNG7P70loys0//q5BTe30E8xIj6PnqEWAfsPYu2sdIPcJeeQdclqlM6A==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz", + "integrity": "sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz", + "integrity": "sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-regex": "^7.10.1" } }, "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz", + "integrity": "sha512-t7B/3MQf5M1T9hPCRG28DNGZUuxAuDqLYS03rJrIk2prj/UV7Z6FOneijhQhnv/Xa039vidXeVbvjK2SK5f7Gg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz", + "integrity": "sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.0.tgz", - "integrity": "sha512-6DwSPQzJ9kSRI1kNFfVAeYdeH7sUH0c1NOYSBGnpJ1ZUZ7mxPY1hxeAqzcrO5NKlOx7ghcy4nAbfFWTPx5IVEg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz", + "integrity": "sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz", + "integrity": "sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/preset-env": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.0.tgz", - "integrity": "sha512-UOZNyiZRvIGvIudjCB8Y8OVkpAvlslec4qgwC73yEvx3Puz0c/xc28Yru36y5K+StOkPPM+VldTsmXPht5LpSg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.10.0", - "@babel/helper-compilation-targets": "^7.10.0", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-class-properties": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.10.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.10.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.10.0", - "@babel/plugin-proposal-private-methods": "^7.8.3", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.2.tgz", + "integrity": "sha512-MjqhX0RZaEgK/KueRzh+3yPSk30oqDKJ5HP5tqTSB1e2gzGS3PLy7K0BIpnp78+0anFuSwOeuCf1zZO7RzRvEA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.1", + "@babel/helper-compilation-targets": "^7.10.2", + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-proposal-async-generator-functions": "^7.10.1", + "@babel/plugin-proposal-class-properties": "^7.10.1", + "@babel/plugin-proposal-dynamic-import": "^7.10.1", + "@babel/plugin-proposal-json-strings": "^7.10.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", + "@babel/plugin-proposal-numeric-separator": "^7.10.1", + "@babel/plugin-proposal-object-rest-spread": "^7.10.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.1", + "@babel/plugin-proposal-optional-chaining": "^7.10.1", + "@babel/plugin-proposal-private-methods": "^7.10.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.1", "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.10.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0", "@babel/plugin-syntax-json-strings": "^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.1", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.10.0", - "@babel/plugin-transform-classes": "^7.9.5", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.10.0", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.10.0", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.9.6", - "@babel/plugin-transform-modules-commonjs": "^7.9.6", - "@babel/plugin-transform-modules-systemjs": "^7.10.0", - "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-syntax-top-level-await": "^7.10.1", + "@babel/plugin-transform-arrow-functions": "^7.10.1", + "@babel/plugin-transform-async-to-generator": "^7.10.1", + "@babel/plugin-transform-block-scoped-functions": "^7.10.1", + "@babel/plugin-transform-block-scoping": "^7.10.1", + "@babel/plugin-transform-classes": "^7.10.1", + "@babel/plugin-transform-computed-properties": "^7.10.1", + "@babel/plugin-transform-destructuring": "^7.10.1", + "@babel/plugin-transform-dotall-regex": "^7.10.1", + "@babel/plugin-transform-duplicate-keys": "^7.10.1", + "@babel/plugin-transform-exponentiation-operator": "^7.10.1", + "@babel/plugin-transform-for-of": "^7.10.1", + "@babel/plugin-transform-function-name": "^7.10.1", + "@babel/plugin-transform-literals": "^7.10.1", + "@babel/plugin-transform-member-expression-literals": "^7.10.1", + "@babel/plugin-transform-modules-amd": "^7.10.1", + "@babel/plugin-transform-modules-commonjs": "^7.10.1", + "@babel/plugin-transform-modules-systemjs": "^7.10.1", + "@babel/plugin-transform-modules-umd": "^7.10.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.9.5", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.7", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.10.0", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.4", - "@babel/plugin-transform-unicode-escapes": "^7.10.0", - "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.10.1", + "@babel/plugin-transform-object-super": "^7.10.1", + "@babel/plugin-transform-parameters": "^7.10.1", + "@babel/plugin-transform-property-literals": "^7.10.1", + "@babel/plugin-transform-regenerator": "^7.10.1", + "@babel/plugin-transform-reserved-words": "^7.10.1", + "@babel/plugin-transform-shorthand-properties": "^7.10.1", + "@babel/plugin-transform-spread": "^7.10.1", + "@babel/plugin-transform-sticky-regex": "^7.10.1", + "@babel/plugin-transform-template-literals": "^7.10.1", + "@babel/plugin-transform-typeof-symbol": "^7.10.1", + "@babel/plugin-transform-unicode-escapes": "^7.10.1", + "@babel/plugin-transform-unicode-regex": "^7.10.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.10.0", + "@babel/types": "^7.10.2", "browserslist": "^4.12.0", "core-js-compat": "^3.6.2", "invariant": "^2.2.2", @@ -958,57 +960,71 @@ } }, "@babel/runtime": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.0.tgz", - "integrity": "sha512-tgYb3zVApHbLHYOPWtVwg25sBqHhfBXRKeKoTIyoheIxln1nA7oBl7SfHfiTG2GhDPI8EUBkOD/0wJCP/3HN4Q==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.0.tgz", - "integrity": "sha512-aMLEQn5tcG49LEWrsEwxiRTdaJmvLem3+JMCMSeCy2TILau0IDVyWdm/18ACx7XOCady64FLt6KkHy28tkDQHQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.10.0", - "@babel/types": "^7.10.0" + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/traverse": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.0.tgz", - "integrity": "sha512-NZsFleMaLF1zX3NxbtXI/JCs2RPOdpGru6UBdGsfhdsDsP+kFF+h2QQJnMJglxk0kc69YmMFs4A44OJY0tKo5g==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", + "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.10.0", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.10.0", - "@babel/types": "^7.10.0", + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/generator": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", + "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + } } }, "@babel/types": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.0.tgz", - "integrity": "sha512-t41W8yWFyQFPOAAvPvjyRhejcLGnJTA3iRpFcDbEKwVJ3UnHQePFzLk8GagTsucJlImyNwrGikGsYURrWbQG8w==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.5", + "@babel/helper-validator-identifier": "^7.10.1", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } }, "@bazel/bazelisk": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@bazel/bazelisk/-/bazelisk-1.4.0.tgz", - "integrity": "sha512-VNI/jF7baQiBy4x+u8gmSDsFehqaAuzMyLuCj0j6/aZCZSw2OssytJVj73m8sFYbXgj67D8iYEQ0gbuoafDk6w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@bazel/bazelisk/-/bazelisk-1.5.0.tgz", + "integrity": "sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg==", "dev": true }, "@bazel/ibazel": { @@ -1170,9 +1186,9 @@ } }, "@soda/get-current-script": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@soda/get-current-script/-/get-current-script-1.0.0.tgz", - "integrity": "sha512-9GvTek+7cVw7r+L7TNGOG1astZJWXz2h5q4BqMXl28KN+24iSCm1xo+RhZOZvwdT3bzNe9hD7riJc/lBoO7mgg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@soda/get-current-script/-/get-current-script-1.0.1.tgz", + "integrity": "sha512-zeOomWIE52M9JpYXlsR3iOf7TXTTmNQHnSbqjMsQZ5phzfAenHzL/1+vQ0ZoJfagocK11LNf8vnn2JG0ufRMUQ==", "dev": true }, "@types/color-name": { @@ -1181,23 +1197,22 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true - }, "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", "dev": true, "requires": { - "@types/events": "*", "@types/minimatch": "*", "@types/node": "*" } }, + "@types/json-schema": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", + "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", + "dev": true + }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -1205,9 +1220,9 @@ "dev": true }, "@types/node": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.5.tgz", - "integrity": "sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA==", + "version": "14.0.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.11.tgz", + "integrity": "sha512-lCvvI24L21ZVeIiyIUHZ5Oflv1hhHQ5E1S25IRlKIXaRkVgmXpJMI3wUJkmym2bTbCe+WoIibQnMVAU3FguaOg==", "dev": true }, "@types/normalize-package-data": { @@ -1557,10 +1572,13 @@ "dev": true }, "serialize-javascript": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", - "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "source-map": { "version": "0.6.1", @@ -1579,9 +1597,9 @@ } }, "terser-webpack-plugin": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.6.tgz", - "integrity": "sha512-I8IDsQwZrqjdmOicNeE8L/MhwatAap3mUrtcAKJuilsemUNcX+Hier/eAzwStVqhlCxq0aG3ni9bK/0BESXkTg==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.7.tgz", + "integrity": "sha512-xzYyaHUNhzgaAdBsXxk2Yvo/x1NJdslUaussK3fdpBbvttm1iIwU+c26dj9UxJcwk2c5UWt5F55MUTIA8BE7Dg==", "dev": true, "requires": { "cacache": "^13.0.1", @@ -1589,7 +1607,7 @@ "jest-worker": "^25.4.0", "p-limit": "^2.3.0", "schema-utils": "^2.6.6", - "serialize-javascript": "^3.0.0", + "serialize-javascript": "^3.1.0", "source-map": "^0.6.1", "terser": "^4.6.12", "webpack-sources": "^1.4.3" @@ -2349,6 +2367,16 @@ "dev": true, "optional": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -2833,9 +2861,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001066", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001066.tgz", - "integrity": "sha512-Gfj/WAastBtfxLws0RCh2sDbTK/8rJuSeZMecrSkNGYxPcv7EzblmDGfWQCFEQcSqYE2BRgQiJh8HOD07N5hIw==", + "version": "1.0.30001078", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001078.tgz", + "integrity": "sha512-sF12qXe9VMm32IEf/+NDvmTpwJaaU7N1igpiH2FdI4DyABJSsOqG3ZAcFvszLkoLoo1y6VJLMYivukUAxaMASw==", "dev": true }, "case-sensitive-paths-webpack-plugin": { @@ -3676,9 +3704,9 @@ } }, "css-what": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", - "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", + "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", "dev": true }, "cssesc": { @@ -4305,9 +4333,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.453", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.453.tgz", - "integrity": "sha512-IQbCfjJR0NDDn/+vojTlq7fPSREcALtF8M1n01gw7nQghCtfFYrJ2dfhsp8APr8bANoFC8vRTFVXMOGpT0eetw==", + "version": "1.3.462", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.462.tgz", + "integrity": "sha512-HST/xWLOeA0LGUhxBqvcPDDUGHjB6rn99VBgPWmaHv+zqwXgOaZO5RnRcd5owjRE7nh+z1c0SwcK8qP8o7sofg==", "dev": true }, "elliptic": { @@ -4384,9 +4412,9 @@ } }, "entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.2.tgz", - "integrity": "sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", "dev": true }, "errno": { @@ -4504,9 +4532,9 @@ }, "dependencies": { "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -4605,9 +4633,9 @@ } }, "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.2.0.tgz", + "integrity": "sha512-WFb4ihckKil6hu3Dp798xdzSfddwKKU3+nGniKF6HfeW6OLd2OUDEPP7TcHtB5+QXOKg2s6B2DaMPE1Nn/kxKQ==", "dev": true }, "espree": { @@ -5049,6 +5077,13 @@ "schema-utils": "^2.5.0" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "filesize": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", @@ -6134,9 +6169,9 @@ "dev": true }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-ci": { @@ -6312,12 +6347,12 @@ } }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, "is-resolvable": { @@ -6854,9 +6889,9 @@ "dev": true }, "merge2": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", - "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, "methods": { @@ -6905,9 +6940,9 @@ } }, "mime": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", - "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", "dev": true }, "mime-db": { @@ -7140,6 +7175,13 @@ "thenify-all": "^1.0.0" } }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "dev": true, + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -7249,9 +7291,9 @@ } }, "node-releases": { - "version": "1.1.56", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.56.tgz", - "integrity": "sha512-EVo605FhWLygH8a64TjgpjyHYOihkxECwX1bHHr8tETJKWEiWS2YJjPbvsX2jFjnjTNEgBCmk9mLjKG1Mf11cw==", + "version": "1.1.58", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz", + "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==", "dev": true }, "normalize-package-data": { @@ -7764,9 +7806,9 @@ } }, "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -7911,9 +7953,9 @@ "dev": true }, "postcss": { - "version": "7.0.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.31.tgz", - "integrity": "sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA==", + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -8757,9 +8799,9 @@ } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", "dev": true }, "regenerate-unicode-properties": { @@ -9133,12 +9175,13 @@ "dev": true }, "schema-utils": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", - "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dev": true, "requires": { - "ajv": "^6.12.0", + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", "ajv-keywords": "^3.4.1" } }, @@ -9754,9 +9797,9 @@ "dev": true }, "stackframe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.1.1.tgz", - "integrity": "sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", + "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==", "dev": true }, "static-extend": { @@ -10612,9 +10655,9 @@ "dev": true }, "v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", "dev": true }, "validate-npm-package-license": { @@ -10676,9 +10719,9 @@ }, "dependencies": { "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -10826,7 +10869,11 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", @@ -11131,7 +11178,11 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", @@ -11388,9 +11439,9 @@ } }, "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, "which": { diff --git a/examples/vue/hello-world/package.json b/examples/vue/package.json similarity index 85% rename from examples/vue/hello-world/package.json rename to examples/vue/package.json index cecb2cecf6..130e6c2813 100644 --- a/examples/vue/hello-world/package.json +++ b/examples/vue/package.json @@ -3,8 +3,9 @@ "version": "0.1.0", "private": true, "scripts": { - "serve": "vue-cli-service serve", - "build": "vue-cli-service build", + "serve": "bazel run :serve", + "build": "bazel build :build", + "test": "bazel test //...", "lint": "vue-cli-service lint" }, "dependencies": { @@ -12,7 +13,7 @@ "vue": "^2.6.11" }, "devDependencies": { - "@bazel/bazelisk": "^1.4.0", + "@bazel/bazelisk": "^1.5.0", "@bazel/ibazel": "^0.13.1", "@vue/cli-plugin-babel": "~4.4.0", "@vue/cli-plugin-eslint": "~4.4.0", diff --git a/examples/vue/hello-world/public/favicon.ico b/examples/vue/public/favicon.ico similarity index 100% rename from examples/vue/hello-world/public/favicon.ico rename to examples/vue/public/favicon.ico diff --git a/examples/vue/hello-world/public/index.html b/examples/vue/public/index.html similarity index 100% rename from examples/vue/hello-world/public/index.html rename to examples/vue/public/index.html diff --git a/examples/vue/smoke.test.js b/examples/vue/smoke.test.js new file mode 100644 index 0000000000..3a049378b9 --- /dev/null +++ b/examples/vue/smoke.test.js @@ -0,0 +1,6 @@ +const assert = require('assert'); +const fs = require('fs'); +const path = require('path'); + +process.chdir(path.join(__dirname, 'dist')); +assert.ok(fs.readFileSync('index.html', 'utf-8').match(/href=\/js\/app/)); diff --git a/examples/vue/hello-world/src/App.vue b/examples/vue/src/App.vue similarity index 100% rename from examples/vue/hello-world/src/App.vue rename to examples/vue/src/App.vue diff --git a/examples/vue/src/BUILD.bazel b/examples/vue/src/BUILD.bazel new file mode 100644 index 0000000000..d7e4511b84 --- /dev/null +++ b/examples/vue/src/BUILD.bazel @@ -0,0 +1,5 @@ +filegroup( + name = "src", + srcs = glob(["**/**"]), + visibility = ["//visibility:public"], +) diff --git a/examples/vue/hello-world/src/assets/logo.png b/examples/vue/src/assets/logo.png similarity index 100% rename from examples/vue/hello-world/src/assets/logo.png rename to examples/vue/src/assets/logo.png diff --git a/examples/vue/hello-world/src/components/HelloWorld.vue b/examples/vue/src/components/HelloWorld.vue similarity index 100% rename from examples/vue/hello-world/src/components/HelloWorld.vue rename to examples/vue/src/components/HelloWorld.vue diff --git a/examples/vue/src/main.js b/examples/vue/src/main.js new file mode 100644 index 0000000000..77f35b631c --- /dev/null +++ b/examples/vue/src/main.js @@ -0,0 +1,8 @@ +import Vue from 'vue'; +import App from './App.vue'; + +Vue.config.productionTip = false; + +new Vue({ + render: h => h(App), +}).$mount('#app'); From 0bd9b7e7201ce4635880a0c278f88ebe875d2cfd Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Thu, 9 Jul 2020 10:45:47 -0700 Subject: [PATCH 0743/1134] fix(builtin): fix node patches subprocess sandbox propogation (#2017) Two fixes here. Set --preserve-symlinks --preserve-symlinks-main in the generated _node_bin/node which comes from ${process.env.NODE_REPOSITORY_ARGS}. This will prevent the --require /path/to/node_patches.js from being resolved to its location outside of the sandbox. However, if preserve_symlinks=false, which is still an option, the 2nd fix is to honour the value of NP_SUBPROCESS_NODE_DIR when running node_patches.js for the subprocess. Even if node_patches.js is resolved to outside of the sandbox for the subprocess and run from there, it will still look for _node_bin/node within the sandbox. --- internal/node/launcher.sh | 14 ++--- internal/node/node_patches.js | 55 ++++++++++--------- internal/node/node_repositories.bzl | 7 +-- internal/node/test/empty_args_fail.js | 1 + packages/node-patches/register.ts | 5 +- packages/node-patches/src/subprocess.ts | 48 ++++++++-------- packages/node-patches/test/subprocess/test.ts | 27 +++------ 7 files changed, 74 insertions(+), 83 deletions(-) diff --git a/internal/node/launcher.sh b/internal/node/launcher.sh index f9c6c5814a..723486f563 100644 --- a/internal/node/launcher.sh +++ b/internal/node/launcher.sh @@ -165,9 +165,9 @@ readonly lcov_merger_script=$(rlocation "TEMPLATED_lcov_merger_script") source $repository_args ARGS=() -LAUNCHER_NODE_OPTIONS=() +LAUNCHER_NODE_OPTIONS=($NODE_REPOSITORY_ARGS) USER_NODE_OPTIONS=() -ALL_ARGS=(TEMPLATED_args $NODE_REPOSITORY_ARGS "$@") +ALL_ARGS=(TEMPLATED_args "$@") STDOUT_CAPTURE="" STDERR_CAPTURE="" EXIT_CODE_CAPTURE="" @@ -176,7 +176,7 @@ RUN_LINKER=true NODE_PATCHES=true # TODO(alex): change the default to false PATCH_REQUIRE=true -for ARG in "${ALL_ARGS[@]:-}"; do +for ARG in ${ALL_ARGS[@]+"${ALL_ARGS[@]}"}; do case "$ARG" in # Supply custom linker arguments for first-party dependencies --bazel_node_modules_manifest=*) MODULES_MANIFEST="${ARG#--bazel_node_modules_manifest=}" ;; @@ -316,13 +316,13 @@ _int() { set +e if [[ -n "${STDOUT_CAPTURE}" ]] && [[ -n "${STDERR_CAPTURE}" ]]; then - "${node}" "${LAUNCHER_NODE_OPTIONS[@]:-}" "${USER_NODE_OPTIONS[@]:-}" "${MAIN}" ${ARGS[@]+"${ARGS[@]}"} <&0 >$STDOUT_CAPTURE 2>$STDERR_CAPTURE & + "${node}" ${LAUNCHER_NODE_OPTIONS[@]+"${LAUNCHER_NODE_OPTIONS[@]}"} ${USER_NODE_OPTIONS[@]+"${USER_NODE_OPTIONS[@]}"} "${MAIN}" ${ARGS[@]+"${ARGS[@]}"} <&0 >$STDOUT_CAPTURE 2>$STDERR_CAPTURE & elif [[ -n "${STDOUT_CAPTURE}" ]]; then - "${node}" "${LAUNCHER_NODE_OPTIONS[@]:-}" "${USER_NODE_OPTIONS[@]:-}" "${MAIN}" ${ARGS[@]+"${ARGS[@]}"} <&0 >$STDOUT_CAPTURE & + "${node}" ${LAUNCHER_NODE_OPTIONS[@]+"${LAUNCHER_NODE_OPTIONS[@]}"} ${USER_NODE_OPTIONS[@]+"${USER_NODE_OPTIONS[@]}"} "${MAIN}" ${ARGS[@]+"${ARGS[@]}"} <&0 >$STDOUT_CAPTURE & elif [[ -n "${STDERR_CAPTURE}" ]]; then - "${node}" "${LAUNCHER_NODE_OPTIONS[@]:-}" "${USER_NODE_OPTIONS[@]:-}" "${MAIN}" ${ARGS[@]+"${ARGS[@]}"} <&0 2>$STDERR_CAPTURE & + "${node}" ${LAUNCHER_NODE_OPTIONS[@]+"${LAUNCHER_NODE_OPTIONS[@]}"} ${USER_NODE_OPTIONS[@]+"${USER_NODE_OPTIONS[@]}"} "${MAIN}" ${ARGS[@]+"${ARGS[@]}"} <&0 2>$STDERR_CAPTURE & else - "${node}" "${LAUNCHER_NODE_OPTIONS[@]:-}" "${USER_NODE_OPTIONS[@]:-}" "${MAIN}" ${ARGS[@]+"${ARGS[@]}"} <&0 & + "${node}" ${LAUNCHER_NODE_OPTIONS[@]+"${LAUNCHER_NODE_OPTIONS[@]}"} ${USER_NODE_OPTIONS[@]+"${USER_NODE_OPTIONS[@]}"} "${MAIN}" ${ARGS[@]+"${ARGS[@]}"} <&0 & fi readonly child=$! diff --git a/internal/node/node_patches.js b/internal/node/node_patches.js index 2318e6cdf6..ad98f2ecec 100644 --- a/internal/node/node_patches.js +++ b/internal/node/node_patches.js @@ -551,39 +551,41 @@ Object.defineProperty(exports, "__esModule", { value: true }); // but adds support to ensure the registered loader is included in all nested executions of nodejs. -exports.patcher = (requireScriptName, binDir) => { +exports.patcher = (requireScriptName, nodeDir) => { requireScriptName = path.resolve(requireScriptName); - const dir = path.dirname(requireScriptName); + nodeDir = nodeDir || path.join(path.dirname(requireScriptName), '_node_bin'); const file = path.basename(requireScriptName); - const nodeDir = path.join(binDir || dir, '_node_bin'); - if (!process.env.NP_PATCHED_NODEJS) { - // TODO: WINDOWS. - try { - fs$1.mkdirSync(nodeDir, { recursive: true }); - } - catch (e) { - // with node versions that don't have recursive mkdir this may throw an error. - if (e.code !== 'EEXIST') { - throw e; - } + try { + fs$1.mkdirSync(nodeDir, { recursive: true }); + } + catch (e) { + // with node versions that don't have recursive mkdir this may throw an error. + if (e.code !== 'EEXIST') { + throw e; } - if (process.platform == 'win32') { - fs$1.writeFileSync(path.join(nodeDir, 'node.bat'), `@if not defined DEBUG_HELPER @ECHO OFF -set NP_PATCHED_NODEJS=${nodeDir} + } + if (process.platform == 'win32') { + const nodeEntry = path.join(nodeDir, 'node.bat'); + if (!fs$1.existsSync(nodeEntry)) { + fs$1.writeFileSync(nodeEntry, `@if not defined DEBUG_HELPER @ECHO OFF +set NP_SUBPROCESS_NODE_DIR=${nodeDir} set Path=${nodeDir};%Path% -"${process.execPath}" --require "${requireScriptName}" %* - `); +"${process.execPath}" ${process.env.NODE_REPOSITORY_ARGS} --require "${requireScriptName}" %* +`); } - else { - fs$1.writeFileSync(path.join(nodeDir, 'node'), `#!/bin/bash -export NP_PATCHED_NODEJS="${nodeDir}" + } + else { + const nodeEntry = path.join(nodeDir, 'node'); + if (!fs$1.existsSync(nodeEntry)) { + fs$1.writeFileSync(nodeEntry, `#!/bin/bash +export NP_SUBPROCESS_NODE_DIR="${nodeDir}" export PATH="${nodeDir}":\$PATH if [[ ! "\${@}" =~ "${file}" ]]; then - exec ${process.execPath} --require "${requireScriptName}" "$@" + exec ${process.execPath} ${process.env.NODE_REPOSITORY_ARGS} --require "${requireScriptName}" "$@" else - exec ${process.execPath} "$@" + exec ${process.execPath} ${process.env.NODE_REPOSITORY_ARGS} "$@" fi - `, { mode: 0o777 }); +`, { mode: 0o777 }); } } if (!process.env.PATH) { @@ -659,8 +661,7 @@ var src_2 = src.subprocess; * @fileoverview Description of this file. */ -// todo auto detect bazel env vars instead of adding a new one. -const { BAZEL_PATCH_ROOT, BAZEL_PATCH_GUARDS, NP_SUBPROCESS_BIN_DIR, VERBOSE_LOGS } = process.env; +const { BAZEL_PATCH_ROOT, BAZEL_PATCH_GUARDS, NP_SUBPROCESS_NODE_DIR, VERBOSE_LOGS } = process.env; if (BAZEL_PATCH_ROOT) { const guards = BAZEL_PATCH_GUARDS ? BAZEL_PATCH_GUARDS.split(',') : []; if (VERBOSE_LOGS) @@ -671,7 +672,7 @@ if (BAZEL_PATCH_ROOT) { else if (VERBOSE_LOGS) { console.error(`bazel node patches disabled. set environment BAZEL_PATCH_ROOT`); } -src.subprocess(__filename, NP_SUBPROCESS_BIN_DIR); +src.subprocess(__filename, NP_SUBPROCESS_NODE_DIR); var register = { diff --git a/internal/node/node_repositories.bzl b/internal/node/node_repositories.bzl index d7ce68be30..7a700a8298 100644 --- a/internal/node/node_repositories.bzl +++ b/internal/node/node_repositories.bzl @@ -439,13 +439,10 @@ def _prepare_node(repository_ctx): preserve_symlinks_main_support = check_version(repository_ctx.attr.node_version, "10.2.0") if preserve_symlinks_main_support: node_args = "--preserve-symlinks --preserve-symlinks-main" - node_repo_args = "\"--node_options=--preserve-symlinks --node_options=--preserve-symlinks-main\"" else: node_args = "--preserve-symlinks" - node_repo_args = "--node_options=--preserve-symlinks" else: node_args = "" - node_repo_args = "" # The entry points for node for osx/linux and windows if not is_windows: @@ -476,8 +473,8 @@ CALL "%SCRIPT_DIR%\\{node}" {args} %* # Immediately exit if any command fails. set -e # Generated by node_repositories.bzl -export NODE_REPOSITORY_ARGS={args} -""".format(args = node_repo_args), executable = True) +export NODE_REPOSITORY_ARGS="{args}" +""".format(args = node_args), executable = True) # The entry points for npm for osx/linux and windows # Runs npm using appropriate node entry point diff --git a/internal/node/test/empty_args_fail.js b/internal/node/test/empty_args_fail.js index 6f4b8c0f5a..bd598e3473 100644 --- a/internal/node/test/empty_args_fail.js +++ b/internal/node/test/empty_args_fail.js @@ -6,5 +6,6 @@ var theArgs = process.argv.slice(2); if (theArgs.length != 0) { // Non-zero exit code if the argument list is not empty + console.error(theArgs) process.exit(42) } diff --git a/packages/node-patches/register.ts b/packages/node-patches/register.ts index 876408ad78..534b9c4d65 100644 --- a/packages/node-patches/register.ts +++ b/packages/node-patches/register.ts @@ -18,8 +18,7 @@ * @fileoverview Description of this file. */ const patcher = require('./src'); -// todo auto detect bazel env vars instead of adding a new one. -const {BAZEL_PATCH_ROOT, BAZEL_PATCH_GUARDS, NP_SUBPROCESS_BIN_DIR, VERBOSE_LOGS} = process.env; +const {BAZEL_PATCH_ROOT, BAZEL_PATCH_GUARDS, NP_SUBPROCESS_NODE_DIR, VERBOSE_LOGS} = process.env; if (BAZEL_PATCH_ROOT) { const guards = BAZEL_PATCH_GUARDS ? BAZEL_PATCH_GUARDS.split(',') : []; @@ -32,4 +31,4 @@ if (BAZEL_PATCH_ROOT) { console.error(`bazel node patches disabled. set environment BAZEL_PATCH_ROOT`); } -patcher.subprocess(__filename, NP_SUBPROCESS_BIN_DIR); +patcher.subprocess(__filename, NP_SUBPROCESS_NODE_DIR); diff --git a/packages/node-patches/src/subprocess.ts b/packages/node-patches/src/subprocess.ts index 9715dcbebd..8242f734c2 100644 --- a/packages/node-patches/src/subprocess.ts +++ b/packages/node-patches/src/subprocess.ts @@ -3,39 +3,41 @@ const fs = require('fs'); const path = require('path'); -export const patcher = (requireScriptName: string, binDir?: string) => { +export const patcher = (requireScriptName: string, nodeDir?: string) => { requireScriptName = path.resolve(requireScriptName); - const dir = path.dirname(requireScriptName); + nodeDir = nodeDir || path.join(path.dirname(requireScriptName), '_node_bin'); const file = path.basename(requireScriptName); - const nodeDir = path.join(binDir || dir, '_node_bin'); - if (!process.env.NP_PATCHED_NODEJS) { - // TODO: WINDOWS. - try { - fs.mkdirSync(nodeDir, {recursive: true}); - } catch (e) { - // with node versions that don't have recursive mkdir this may throw an error. - if (e.code !== 'EEXIST') { - throw e; - } + try { + fs.mkdirSync(nodeDir, {recursive: true}); + } catch (e) { + // with node versions that don't have recursive mkdir this may throw an error. + if (e.code !== 'EEXIST') { + throw e; } - if (process.platform == 'win32') { - fs.writeFileSync(path.join(nodeDir, 'node.bat'), `@if not defined DEBUG_HELPER @ECHO OFF -set NP_PATCHED_NODEJS=${nodeDir} + } + if (process.platform == 'win32') { + const nodeEntry = path.join(nodeDir, 'node.bat'); + if (!fs.existsSync(nodeEntry)) { + fs.writeFileSync(nodeEntry, `@if not defined DEBUG_HELPER @ECHO OFF +set NP_SUBPROCESS_NODE_DIR=${nodeDir} set Path=${nodeDir};%Path% -"${process.execPath}" --require "${requireScriptName}" %* - `) - } else { +"${process.execPath}" ${process.env.NODE_REPOSITORY_ARGS} --require "${requireScriptName}" %* +`); + } + } else { + const nodeEntry = path.join(nodeDir, 'node'); + if (!fs.existsSync(nodeEntry)) { fs.writeFileSync( - path.join(nodeDir, 'node'), `#!/bin/bash -export NP_PATCHED_NODEJS="${nodeDir}" + nodeEntry, `#!/bin/bash +export NP_SUBPROCESS_NODE_DIR="${nodeDir}" export PATH="${nodeDir}":\$PATH if [[ ! "\${@}" =~ "${file}" ]]; then - exec ${process.execPath} --require "${requireScriptName}" "$@" + exec ${process.execPath} ${process.env.NODE_REPOSITORY_ARGS} --require "${requireScriptName}" "$@" else - exec ${process.execPath} "$@" + exec ${process.execPath} ${process.env.NODE_REPOSITORY_ARGS} "$@" fi - `, +`, {mode: 0o777}); } } diff --git a/packages/node-patches/test/subprocess/test.ts b/packages/node-patches/test/subprocess/test.ts index 620873a7ae..0335ff3077 100644 --- a/packages/node-patches/test/subprocess/test.ts +++ b/packages/node-patches/test/subprocess/test.ts @@ -1,27 +1,22 @@ import * as assert from 'assert'; import * as cp from 'child_process'; -import * as fs from 'fs'; import * as os from 'os'; import * as path from 'path'; import * as rimraf from 'rimraf'; -import {patcher} from '../../src/subprocess'; - const requireScript = path.resolve(path.join(__dirname, '..', '..', 'register.js')); -const tmp = path.join(os.tmpdir(), 'node-patches-test-tmp'); +const nodeDir = path.join(os.tmpdir(), 'node-patches-test-tmp', '_node_bin'); // tslint:disable-next-line:no-any function assertPatched(prefix: string, arr: any) { - const binDir = path.join(tmp, '_node_bin'); - const [execPath, execArgv, argv, pathEnv] = arr; assert.deepStrictEqual( - path.join(binDir, 'node'), execPath, + path.join(nodeDir, 'node'), execPath, prefix + ' exec path has been rewritten to subprocess proxy'); assert.deepStrictEqual( - path.join(binDir, 'node'), argv[0], + path.join(nodeDir, 'node'), argv[0], prefix + ' argv[0] has been rewritten to subprocess proxy'); let found = false; @@ -38,23 +33,19 @@ function assertPatched(prefix: string, arr: any) { // something. assert.deepStrictEqual( - binDir, pathEnv.split(path.delimiter)[0], + nodeDir, pathEnv.split(path.delimiter)[0], prefix + ' the highest priority directory in the PATH must be the node shim dir.'); } describe('spawning child processes', () => { - before(() => { - fs.mkdirSync(tmp, {recursive: true}); - }); - it('get patched if run as shell script.', () => { - const res = cp.execSync(`NP_SUBPROCESS_BIN_DIR=${tmp} node -r ${ + const res = cp.execSync(`NP_SUBPROCESS_NODE_DIR=${nodeDir} node -r ${ requireScript} -e 'console.log(JSON.stringify([process.execPath,process.execArgv,process.argv,process.env.PATH]))'`); assertPatched('', JSON.parse(res + '')); }); it('overwrites spawn related variables correctly.', () => { - const res = cp.execSync(`NP_SUBPROCESS_BIN_DIR=${tmp} node -r ${requireScript} ${ + const res = cp.execSync(`NP_SUBPROCESS_NODE_DIR=${nodeDir} node -r ${requireScript} ${ path.join(__dirname, 'worker-threads-script.js')}`); const {mainThread, worker} = JSON.parse(res + ''); @@ -64,7 +55,7 @@ describe('spawning child processes', () => { }); it('can spawn node from the shell', () => { - const res = cp.execSync(`NP_SUBPROCESS_BIN_DIR=${tmp} node -r ${requireScript} ${ + const res = cp.execSync(`NP_SUBPROCESS_NODE_DIR=${nodeDir} node -r ${requireScript} ${ path.join(__dirname, 'shell-script.js')}`); // TODO: this is broken if no environment is passed and a new bash is executed // reading only the rc files to build the environment. @@ -77,7 +68,7 @@ describe('spawning child processes', () => { it('can spawn node from spawn', () => { const res = cp.execSync( - `NP_SUBPROCESS_BIN_DIR=${tmp} node -r ${requireScript} ${ + `NP_SUBPROCESS_NODE_DIR=${nodeDir} node -r ${requireScript} ${ path.join(__dirname, 'spawn-script.js')}`, {env: process.env}); @@ -86,6 +77,6 @@ describe('spawning child processes', () => { }); after(() => { - rimraf.sync(tmp); + rimraf.sync(nodeDir); }); }); From 5ee130341756ecca29d995023b23a786066feba8 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Thu, 9 Jul 2020 20:54:34 -0700 Subject: [PATCH 0744/1134] chore(release): 2.0.0-rc.2 --- CHANGELOG.md | 9 +++++++++ docs/install.md | 2 +- e2e/bazel_managed_deps/WORKSPACE | 4 ++-- e2e/fine_grained_symlinks/WORKSPACE | 4 ++-- e2e/jasmine/WORKSPACE | 4 ++-- e2e/node_loader_no_preserve_symlinks/WORKSPACE | 4 ++-- e2e/node_loader_preserve_symlinks/WORKSPACE | 4 ++-- e2e/packages/WORKSPACE | 4 ++-- e2e/ts_devserver/WORKSPACE | 4 ++-- e2e/typescript/WORKSPACE | 4 ++-- e2e/webapp/WORKSPACE | 4 ++-- examples/angular/WORKSPACE | 4 ++-- examples/angular_bazel_architect/WORKSPACE | 4 ++-- examples/angular_view_engine/WORKSPACE | 4 ++-- examples/app/WORKSPACE | 4 ++-- examples/closure/WORKSPACE | 4 ++-- examples/cypress/WORKSPACE | 4 ++-- examples/jest/WORKSPACE | 4 ++-- examples/kotlin/WORKSPACE | 4 ++-- examples/nestjs/WORKSPACE | 4 ++-- examples/parcel/WORKSPACE | 4 ++-- examples/protocol_buffers/WORKSPACE | 4 ++-- examples/react_webpack/WORKSPACE | 4 ++-- examples/vendored_node/WORKSPACE | 4 ++-- examples/vendored_node_and_yarn/WORKSPACE | 4 ++-- examples/vue/WORKSPACE | 4 ++-- examples/web_testing/WORKSPACE | 4 ++-- examples/webapp/WORKSPACE | 4 ++-- examples/worker/WORKSPACE | 4 ++-- package.json | 2 +- packages/create/index.js | 2 +- 31 files changed, 66 insertions(+), 57 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e3918e857..3462a393f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +# [2.0.0-rc.2](https://github.com/bazelbuild/rules_nodejs/compare/2.0.0-rc.1...2.0.0-rc.2) (2020-07-10) + + +### Bug Fixes + +* **builtin:** fix node patches subprocess sandbox propogation ([#2017](https://github.com/bazelbuild/rules_nodejs/issues/2017)) ([0bd9b7e](https://github.com/bazelbuild/rules_nodejs/commit/0bd9b7e)) + + + # [2.0.0-rc.1](https://github.com/bazelbuild/rules_nodejs/compare/2.0.0-rc.0...2.0.0-rc.1) (2020-07-06) diff --git a/docs/install.md b/docs/install.md index 720342265c..371da70f6d 100644 --- a/docs/install.md +++ b/docs/install.md @@ -31,7 +31,7 @@ containing: load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], ) diff --git a/e2e/bazel_managed_deps/WORKSPACE b/e2e/bazel_managed_deps/WORKSPACE index cd03c62e9c..a557efea2c 100644 --- a/e2e/bazel_managed_deps/WORKSPACE +++ b/e2e/bazel_managed_deps/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/fine_grained_symlinks/WORKSPACE b/e2e/fine_grained_symlinks/WORKSPACE index e298411f9c..daf4fbf76a 100644 --- a/e2e/fine_grained_symlinks/WORKSPACE +++ b/e2e/fine_grained_symlinks/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") diff --git a/e2e/jasmine/WORKSPACE b/e2e/jasmine/WORKSPACE index 27997b9ccc..3384e86abd 100644 --- a/e2e/jasmine/WORKSPACE +++ b/e2e/jasmine/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/node_loader_no_preserve_symlinks/WORKSPACE b/e2e/node_loader_no_preserve_symlinks/WORKSPACE index 0259e49450..94d6fdf44f 100644 --- a/e2e/node_loader_no_preserve_symlinks/WORKSPACE +++ b/e2e/node_loader_no_preserve_symlinks/WORKSPACE @@ -9,8 +9,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") diff --git a/e2e/node_loader_preserve_symlinks/WORKSPACE b/e2e/node_loader_preserve_symlinks/WORKSPACE index 48d58ce18b..161f76b06e 100644 --- a/e2e/node_loader_preserve_symlinks/WORKSPACE +++ b/e2e/node_loader_preserve_symlinks/WORKSPACE @@ -9,8 +9,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/packages/WORKSPACE b/e2e/packages/WORKSPACE index 54f093b655..ba0b31abc6 100644 --- a/e2e/packages/WORKSPACE +++ b/e2e/packages/WORKSPACE @@ -4,8 +4,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "check_rules_nodejs_version", "node_repositories", "npm_install", "yarn_install") diff --git a/e2e/ts_devserver/WORKSPACE b/e2e/ts_devserver/WORKSPACE index 2050f2a4f9..bc1445c606 100644 --- a/e2e/ts_devserver/WORKSPACE +++ b/e2e/ts_devserver/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/typescript/WORKSPACE b/e2e/typescript/WORKSPACE index 5ad9a770ae..0b3018ed47 100644 --- a/e2e/typescript/WORKSPACE +++ b/e2e/typescript/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/webapp/WORKSPACE b/e2e/webapp/WORKSPACE index 45314bb92c..3addb702ce 100644 --- a/e2e/webapp/WORKSPACE +++ b/e2e/webapp/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/angular/WORKSPACE b/examples/angular/WORKSPACE index cdeaa26749..6d66b5eed7 100644 --- a/examples/angular/WORKSPACE +++ b/examples/angular/WORKSPACE @@ -16,8 +16,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch rules_nodejs so we can install our npm dependencies http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) # Fetch sass rules for compiling sass files diff --git a/examples/angular_bazel_architect/WORKSPACE b/examples/angular_bazel_architect/WORKSPACE index 23b185bc7c..dddeea04de 100644 --- a/examples/angular_bazel_architect/WORKSPACE +++ b/examples/angular_bazel_architect/WORKSPACE @@ -12,8 +12,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) # The yarn_install rule runs yarn anytime the package.json or yarn.lock file changes. diff --git a/examples/angular_view_engine/WORKSPACE b/examples/angular_view_engine/WORKSPACE index a310167ebd..c49f3aab53 100644 --- a/examples/angular_view_engine/WORKSPACE +++ b/examples/angular_view_engine/WORKSPACE @@ -16,8 +16,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch rules_nodejs so we can install our npm dependencies http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) # Fetch sass rules for compiling sass files diff --git a/examples/app/WORKSPACE b/examples/app/WORKSPACE index f737734cef..88cd924722 100644 --- a/examples/app/WORKSPACE +++ b/examples/app/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/closure/WORKSPACE b/examples/closure/WORKSPACE index 6b50cb8e51..d5d80c55b8 100644 --- a/examples/closure/WORKSPACE +++ b/examples/closure/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/cypress/WORKSPACE b/examples/cypress/WORKSPACE index 763a3350f0..70e8c3efe0 100644 --- a/examples/cypress/WORKSPACE +++ b/examples/cypress/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/jest/WORKSPACE b/examples/jest/WORKSPACE index 2ed27949dd..539be8080a 100644 --- a/examples/jest/WORKSPACE +++ b/examples/jest/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/kotlin/WORKSPACE b/examples/kotlin/WORKSPACE index 6da5938e55..200748abc0 100644 --- a/examples/kotlin/WORKSPACE +++ b/examples/kotlin/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) # Install external npm dependencies diff --git a/examples/nestjs/WORKSPACE b/examples/nestjs/WORKSPACE index 71579804e6..59159ca28f 100644 --- a/examples/nestjs/WORKSPACE +++ b/examples/nestjs/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/parcel/WORKSPACE b/examples/parcel/WORKSPACE index d80a8daa4a..f0736a68c4 100644 --- a/examples/parcel/WORKSPACE +++ b/examples/parcel/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "npm_install") diff --git a/examples/protocol_buffers/WORKSPACE b/examples/protocol_buffers/WORKSPACE index a53e931431..37711ae037 100644 --- a/examples/protocol_buffers/WORKSPACE +++ b/examples/protocol_buffers/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) http_archive( diff --git a/examples/react_webpack/WORKSPACE b/examples/react_webpack/WORKSPACE index d0fef6fcc7..ec22588c50 100644 --- a/examples/react_webpack/WORKSPACE +++ b/examples/react_webpack/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/vendored_node/WORKSPACE b/examples/vendored_node/WORKSPACE index 761f08cb87..b30440b1c3 100644 --- a/examples/vendored_node/WORKSPACE +++ b/examples/vendored_node/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) http_archive( diff --git a/examples/vendored_node_and_yarn/WORKSPACE b/examples/vendored_node_and_yarn/WORKSPACE index efd407acfe..0fac082113 100644 --- a/examples/vendored_node_and_yarn/WORKSPACE +++ b/examples/vendored_node_and_yarn/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) http_archive( diff --git a/examples/vue/WORKSPACE b/examples/vue/WORKSPACE index 346ecaec5a..638a02c4b3 100644 --- a/examples/vue/WORKSPACE +++ b/examples/vue/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "f9e7b9f42ae202cc2d2ce6d698ccb49a9f7f7ea572a78fd451696d03ef2ee116", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/1.6.0/rules_nodejs-1.6.0.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "npm_install") diff --git a/examples/web_testing/WORKSPACE b/examples/web_testing/WORKSPACE index 8e9561eef3..efc71b558f 100644 --- a/examples/web_testing/WORKSPACE +++ b/examples/web_testing/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/webapp/WORKSPACE b/examples/webapp/WORKSPACE index 5f9e2c359e..07f597a1bb 100644 --- a/examples/webapp/WORKSPACE +++ b/examples/webapp/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/worker/WORKSPACE b/examples/worker/WORKSPACE index 37b73961a8..ceb6c88032 100644 --- a/examples/worker/WORKSPACE +++ b/examples/worker/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.1/rules_nodejs-2.0.0-rc.1.tar.gz"], + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/package.json b/package.json index 7803b80ee3..a9ab5df635 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@bazel/javascript", "description": "Build JavaScript with Bazel", - "version": "2.0.0-rc.1", + "version": "2.0.0-rc.2", "keywords": [ "javascript", "bazel" diff --git a/packages/create/index.js b/packages/create/index.js index d2fc3901c5..8f9744b037 100644 --- a/packages/create/index.js +++ b/packages/create/index.js @@ -157,7 +157,7 @@ workspace( load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "aa0b0a71afd4e1f203b7092c3284a6606a5bfac77e0bd31f071b37bcac0f7cf3", + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], ) From 9180eea85253d3142fde5a6641f6c0b80bbec93c Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Thu, 9 Jul 2020 21:27:22 -0700 Subject: [PATCH 0745/1134] chore: update lock files for release --- e2e/bazel_managed_deps/package.json | 2 +- e2e/bazel_managed_deps/yarn.lock | 8 +-- e2e/jasmine/package.json | 2 +- e2e/jasmine/yarn.lock | 8 +-- e2e/ts_devserver/package.json | 4 +- e2e/ts_devserver/yarn.lock | 18 +++---- e2e/typescript/package.json | 4 +- e2e/typescript/yarn.lock | 16 +++--- e2e/webapp/package.json | 4 +- e2e/webapp/yarn.lock | 16 +++--- examples/angular/package.json | 12 ++--- examples/angular/yarn.lock | 54 +++++++++---------- examples/angular_view_engine/package.json | 10 ++-- examples/angular_view_engine/yarn.lock | 46 ++++++++-------- examples/app/package.json | 8 +-- examples/app/yarn.lock | 38 ++++++------- examples/cypress/package.json | 4 +- examples/cypress/yarn.lock | 16 +++--- examples/kotlin/package-lock.json | 18 +++---- examples/kotlin/package.json | 6 +-- examples/nestjs/package.json | 4 +- examples/nestjs/yarn.lock | 16 +++--- examples/protocol_buffers/package.json | 12 ++--- examples/protocol_buffers/yarn.lock | 56 ++++++++++---------- examples/react_webpack/package.json | 2 +- examples/react_webpack/yarn.lock | 8 +-- examples/vendored_node/package-lock.json | 6 +-- examples/vendored_node/package.json | 2 +- examples/vendored_node_and_yarn/package.json | 2 +- examples/vendored_node_and_yarn/yarn.lock | 8 +-- examples/vue/package-lock.json | 6 +-- examples/web_testing/package.json | 4 +- examples/web_testing/yarn.lock | 16 +++--- examples/webapp/package.json | 8 +-- examples/webapp/yarn.lock | 38 ++++++------- examples/worker/package.json | 2 +- examples/worker/yarn.lock | 8 +-- scripts/update_nested_lock_files.sh | 4 ++ 38 files changed, 250 insertions(+), 246 deletions(-) diff --git a/e2e/bazel_managed_deps/package.json b/e2e/bazel_managed_deps/package.json index 4ac44d5070..f8133f621c 100644 --- a/e2e/bazel_managed_deps/package.json +++ b/e2e/bazel_managed_deps/package.json @@ -1,7 +1,7 @@ { "description": "runtime dependencies for bazel_managed_deps example", "devDependencies": { - "@bazel/jasmine": "^2.0.0-rc.1", + "@bazel/jasmine": "^2.0.0-rc.2", "jasmine": "^3.5.0", "typescript": "^3.0.1" }, diff --git a/e2e/bazel_managed_deps/yarn.lock b/e2e/bazel_managed_deps/yarn.lock index 7d422c3a23..f4a4267526 100644 --- a/e2e/bazel_managed_deps/yarn.lock +++ b/e2e/bazel_managed_deps/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.1.tgz#6031872e35b29774209105b5c58e54b2a74cdb75" - integrity sha512-xQdwUvM0CYMxC8iZCLtvOd2DO02Wvl37x1Go7pKpLMyhy7wBM3JM4bsIZLo9Idwf9T5VuCOzXUAPvb0xmIA6sQ== +"@bazel/jasmine@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.2.tgz#6946c7d6825fc89e92f03b0f5cc253d9ddb39021" + integrity sha512-xIi6O04XxiWxdcBosQ4SiuUSVLB+ZqVjxz1MYCsh+LEdXu5mBk1WY2HhaQ8T6Lvj3zzfg1TL3n+e0/rO/oAHFQ== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/e2e/jasmine/package.json b/e2e/jasmine/package.json index c009ef84e4..77347f3db3 100644 --- a/e2e/jasmine/package.json +++ b/e2e/jasmine/package.json @@ -1,7 +1,7 @@ { "name": "e2e-jasmine", "dependencies": { - "@bazel/jasmine": "^2.0.0-rc.1", + "@bazel/jasmine": "^2.0.0-rc.2", "zone.js": "0.8.29" }, "//": "Include an incompatible jasmine as a devDependency to verify that jasmine_node_test works regardless", diff --git a/e2e/jasmine/yarn.lock b/e2e/jasmine/yarn.lock index 41b985bd8c..85771d9a4b 100644 --- a/e2e/jasmine/yarn.lock +++ b/e2e/jasmine/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.1.tgz#6031872e35b29774209105b5c58e54b2a74cdb75" - integrity sha512-xQdwUvM0CYMxC8iZCLtvOd2DO02Wvl37x1Go7pKpLMyhy7wBM3JM4bsIZLo9Idwf9T5VuCOzXUAPvb0xmIA6sQ== +"@bazel/jasmine@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.2.tgz#6946c7d6825fc89e92f03b0f5cc253d9ddb39021" + integrity sha512-xIi6O04XxiWxdcBosQ4SiuUSVLB+ZqVjxz1MYCsh+LEdXu5mBk1WY2HhaQ8T6Lvj3zzfg1TL3n+e0/rO/oAHFQ== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/e2e/ts_devserver/package.json b/e2e/ts_devserver/package.json index 18c3b28b35..1439bf4d01 100644 --- a/e2e/ts_devserver/package.json +++ b/e2e/ts_devserver/package.json @@ -1,7 +1,7 @@ { "dependencies": { - "@bazel/protractor": "^2.0.0-rc.1", - "@bazel/typescript": "^2.0.0-rc.1", + "@bazel/protractor": "^2.0.0-rc.2", + "@bazel/typescript": "^2.0.0-rc.2", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "date-fns": "1.30.1", diff --git a/e2e/ts_devserver/yarn.lock b/e2e/ts_devserver/yarn.lock index 151ee4e8ef..52e413445b 100644 --- a/e2e/ts_devserver/yarn.lock +++ b/e2e/ts_devserver/yarn.lock @@ -2,15 +2,15 @@ # yarn lockfile v1 -"@bazel/protractor@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.1.tgz#a616adecfe5fd9a7f35c2ed30c47caeeb9866f97" - integrity sha512-E/xS2Dwc8BFjeVLVxciTLnMRT93OfBeE+zANK388gf7n6tggcJkRiiRqQ1gKiGHirL/zrTiir13SoDuQf1msBA== - -"@bazel/typescript@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" - integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== +"@bazel/protractor@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.2.tgz#237c1c98fd5d918a703f0f32fd3580ee7314c351" + integrity sha512-JR68nnLSOui70GLUijWdUirgwQmfGdfiSWWuF7fxkhiPMMk22pju1/vph62AOY8O4mXpHXrsIBSvlcKznrB3Sw== + +"@bazel/typescript@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" + integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/e2e/typescript/package.json b/e2e/typescript/package.json index f811923017..af016e3bbb 100644 --- a/e2e/typescript/package.json +++ b/e2e/typescript/package.json @@ -1,7 +1,7 @@ { "dependencies": { - "@bazel/jasmine": "^2.0.0-rc.1", - "@bazel/typescript": "^2.0.0-rc.1", + "@bazel/jasmine": "^2.0.0-rc.2", + "@bazel/typescript": "^2.0.0-rc.2", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "date-fns": "^1.30.1", diff --git a/e2e/typescript/yarn.lock b/e2e/typescript/yarn.lock index e958be192b..59ba594924 100644 --- a/e2e/typescript/yarn.lock +++ b/e2e/typescript/yarn.lock @@ -2,18 +2,18 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.1.tgz#6031872e35b29774209105b5c58e54b2a74cdb75" - integrity sha512-xQdwUvM0CYMxC8iZCLtvOd2DO02Wvl37x1Go7pKpLMyhy7wBM3JM4bsIZLo9Idwf9T5VuCOzXUAPvb0xmIA6sQ== +"@bazel/jasmine@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.2.tgz#6946c7d6825fc89e92f03b0f5cc253d9ddb39021" + integrity sha512-xIi6O04XxiWxdcBosQ4SiuUSVLB+ZqVjxz1MYCsh+LEdXu5mBk1WY2HhaQ8T6Lvj3zzfg1TL3n+e0/rO/oAHFQ== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" -"@bazel/typescript@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" - integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== +"@bazel/typescript@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" + integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/e2e/webapp/package.json b/e2e/webapp/package.json index 89dfbcecfc..7172cd1f62 100644 --- a/e2e/webapp/package.json +++ b/e2e/webapp/package.json @@ -2,8 +2,8 @@ "name": "e2e-terser", "private": true, "devDependencies": { - "@bazel/rollup": "^2.0.0-rc.1", - "@bazel/terser": "^2.0.0-rc.1", + "@bazel/rollup": "^2.0.0-rc.2", + "@bazel/terser": "^2.0.0-rc.2", "rollup": "1.20.3", "terser": "4.3.1" }, diff --git a/e2e/webapp/yarn.lock b/e2e/webapp/yarn.lock index acb1368067..40c3315d4f 100644 --- a/e2e/webapp/yarn.lock +++ b/e2e/webapp/yarn.lock @@ -2,15 +2,15 @@ # yarn lockfile v1 -"@bazel/rollup@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.1.tgz#6a4aec69347c7b7c9866b1def84aaef1c6c520fa" - integrity sha512-PvFvLRsctrdrljsYAD+IfDhpYVgedYx9xxH+q6gOZV63qlC45lCC/AAb4dw/TvjbeYK8IJ4pepJHd9NFTJFt6g== +"@bazel/rollup@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.2.tgz#86600a3bc73ab587210be5eb060ff39a3f3922d8" + integrity sha512-40QkDxNBHEtYtPVDzhkChPM0v/xU9IacfRx70eHUD1iKY3SrIGdFN79uXHRqU4OY8llKwTPVlOMqtLqzdSRLBw== -"@bazel/terser@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.1.tgz#b42ee3619f67788257a10cc4fea420a800381ce7" - integrity sha512-htQ7ETuHtKWji9ERYAgmarzAeU1w8iiIVtUAr2C0Ka1H76DhIa8fX/AkIgIr2f+5tDahyRZZirc02M8fEqIr/g== +"@bazel/terser@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.2.tgz#d0794577681f6ccc00036ca417247963d2396117" + integrity sha512-LN5H46UPaOAbzfHqFQgkDnGSdiTYBc37+XafjelUS54jtKAsMX2Fb7Qu4JcO6W2HdK3uWcOIdUCrRyT2yCAAUA== "@types/estree@0.0.39": version "0.0.39" diff --git a/examples/angular/package.json b/examples/angular/package.json index fee3f96da0..d764aca4b2 100644 --- a/examples/angular/package.json +++ b/examples/angular/package.json @@ -33,16 +33,16 @@ "@babel/cli": "^7.6.0", "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", - "@bazel/angular": "^2.0.0-rc.1", + "@bazel/angular": "^2.0.0-rc.2", "@bazel/bazelisk": "^1.5.0", "@bazel/benchmark-runner": "^0.1.0", "@bazel/buildifier": "^3.3.0", "@bazel/ibazel": "^0.13.1", - "@bazel/karma": "^2.0.0-rc.1", - "@bazel/protractor": "^2.0.0-rc.1", - "@bazel/rollup": "^2.0.0-rc.1", - "@bazel/terser": "^2.0.0-rc.1", - "@bazel/typescript": "^2.0.0-rc.1", + "@bazel/karma": "^2.0.0-rc.2", + "@bazel/protractor": "^2.0.0-rc.2", + "@bazel/rollup": "^2.0.0-rc.2", + "@bazel/terser": "^2.0.0-rc.2", + "@bazel/typescript": "^2.0.0-rc.2", "@types/jasmine": "3.4.0", "@types/node": "6.14.6", "core-js": "2.6.9", diff --git a/examples/angular/yarn.lock b/examples/angular/yarn.lock index c02075b9b9..e2fb8cb448 100644 --- a/examples/angular/yarn.lock +++ b/examples/angular/yarn.lock @@ -827,10 +827,10 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/angular@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/angular/-/angular-2.0.0-rc.1.tgz#41733f661a30ba1c286066f1ca579b35910dfcfc" - integrity sha512-lxj74Zqy32hFXvgzj4KkpePgN7GbXN7api8kzUiaDo4XrP5Nx7K+j0NITyBCFigP/BTmNJgD+LiV8BXvuh7esQ== +"@bazel/angular@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/angular/-/angular-2.0.0-rc.2.tgz#7218e8f5be9f75428c9d9be59d7ea64c72bd6213" + integrity sha512-sjZtWJ6Xl55Ya5T+CC3H5HQrDth5xZDcCRbqPNEWiJBHgAUNkGqoaayXSOPbayaQUciZd9QnYz3AiYOpI3caMw== dependencies: "@angular-devkit/architect" "^0.901.7" "@bazel/bazelisk" "^1.4.0" @@ -871,32 +871,32 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/karma@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.1.tgz#889e2c5fbc07f2c9021e0074f7cad37c2b697c5b" - integrity sha512-cJkv4UPy1Nj2Jgw47dviU222a5eeeRhaZa/cJApB6/hvEGAwKdTW3l3C8B29aonzO5K8skPDqw2urzhgJ3q2lA== +"@bazel/karma@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.2.tgz#e41e70ae4984b37ebf02e9319f8d65a325bfa7bc" + integrity sha512-S09z/lz1qE2n1aMuHRWa6rgt3SH8K00msl6EHe9RX6t4C5SOZnZa01gwDL24qbTIR++u2hw27CAd1un0dpQgyA== dependencies: tmp "0.1.0" -"@bazel/protractor@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.1.tgz#a616adecfe5fd9a7f35c2ed30c47caeeb9866f97" - integrity sha512-E/xS2Dwc8BFjeVLVxciTLnMRT93OfBeE+zANK388gf7n6tggcJkRiiRqQ1gKiGHirL/zrTiir13SoDuQf1msBA== - -"@bazel/rollup@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.1.tgz#6a4aec69347c7b7c9866b1def84aaef1c6c520fa" - integrity sha512-PvFvLRsctrdrljsYAD+IfDhpYVgedYx9xxH+q6gOZV63qlC45lCC/AAb4dw/TvjbeYK8IJ4pepJHd9NFTJFt6g== - -"@bazel/terser@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.1.tgz#b42ee3619f67788257a10cc4fea420a800381ce7" - integrity sha512-htQ7ETuHtKWji9ERYAgmarzAeU1w8iiIVtUAr2C0Ka1H76DhIa8fX/AkIgIr2f+5tDahyRZZirc02M8fEqIr/g== - -"@bazel/typescript@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" - integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== +"@bazel/protractor@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.2.tgz#237c1c98fd5d918a703f0f32fd3580ee7314c351" + integrity sha512-JR68nnLSOui70GLUijWdUirgwQmfGdfiSWWuF7fxkhiPMMk22pju1/vph62AOY8O4mXpHXrsIBSvlcKznrB3Sw== + +"@bazel/rollup@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.2.tgz#86600a3bc73ab587210be5eb060ff39a3f3922d8" + integrity sha512-40QkDxNBHEtYtPVDzhkChPM0v/xU9IacfRx70eHUD1iKY3SrIGdFN79uXHRqU4OY8llKwTPVlOMqtLqzdSRLBw== + +"@bazel/terser@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.2.tgz#d0794577681f6ccc00036ca417247963d2396117" + integrity sha512-LN5H46UPaOAbzfHqFQgkDnGSdiTYBc37+XafjelUS54jtKAsMX2Fb7Qu4JcO6W2HdK3uWcOIdUCrRyT2yCAAUA== + +"@bazel/typescript@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" + integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/angular_view_engine/package.json b/examples/angular_view_engine/package.json index 524147a9f1..e8a0af71b1 100644 --- a/examples/angular_view_engine/package.json +++ b/examples/angular_view_engine/package.json @@ -36,11 +36,11 @@ "@bazel/benchmark-runner": "^0.1.0", "@bazel/buildifier": "^3.3.0", "@bazel/ibazel": "^0.13.1", - "@bazel/karma": "^2.0.0-rc.1", - "@bazel/protractor": "^2.0.0-rc.1", - "@bazel/rollup": "^2.0.0-rc.1", - "@bazel/terser": "^2.0.0-rc.1", - "@bazel/typescript": "^2.0.0-rc.1", + "@bazel/karma": "^2.0.0-rc.2", + "@bazel/protractor": "^2.0.0-rc.2", + "@bazel/rollup": "^2.0.0-rc.2", + "@bazel/terser": "^2.0.0-rc.2", + "@bazel/typescript": "^2.0.0-rc.2", "@types/jasmine": "3.4.0", "@types/node": "6.14.6", "core-js": "2.6.9", diff --git a/examples/angular_view_engine/yarn.lock b/examples/angular_view_engine/yarn.lock index 2af1f17b9e..50aacba1a7 100644 --- a/examples/angular_view_engine/yarn.lock +++ b/examples/angular_view_engine/yarn.lock @@ -833,32 +833,32 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/karma@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.1.tgz#889e2c5fbc07f2c9021e0074f7cad37c2b697c5b" - integrity sha512-cJkv4UPy1Nj2Jgw47dviU222a5eeeRhaZa/cJApB6/hvEGAwKdTW3l3C8B29aonzO5K8skPDqw2urzhgJ3q2lA== +"@bazel/karma@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.2.tgz#e41e70ae4984b37ebf02e9319f8d65a325bfa7bc" + integrity sha512-S09z/lz1qE2n1aMuHRWa6rgt3SH8K00msl6EHe9RX6t4C5SOZnZa01gwDL24qbTIR++u2hw27CAd1un0dpQgyA== dependencies: tmp "0.1.0" -"@bazel/protractor@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.1.tgz#a616adecfe5fd9a7f35c2ed30c47caeeb9866f97" - integrity sha512-E/xS2Dwc8BFjeVLVxciTLnMRT93OfBeE+zANK388gf7n6tggcJkRiiRqQ1gKiGHirL/zrTiir13SoDuQf1msBA== - -"@bazel/rollup@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.1.tgz#6a4aec69347c7b7c9866b1def84aaef1c6c520fa" - integrity sha512-PvFvLRsctrdrljsYAD+IfDhpYVgedYx9xxH+q6gOZV63qlC45lCC/AAb4dw/TvjbeYK8IJ4pepJHd9NFTJFt6g== - -"@bazel/terser@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.1.tgz#b42ee3619f67788257a10cc4fea420a800381ce7" - integrity sha512-htQ7ETuHtKWji9ERYAgmarzAeU1w8iiIVtUAr2C0Ka1H76DhIa8fX/AkIgIr2f+5tDahyRZZirc02M8fEqIr/g== - -"@bazel/typescript@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" - integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== +"@bazel/protractor@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.2.tgz#237c1c98fd5d918a703f0f32fd3580ee7314c351" + integrity sha512-JR68nnLSOui70GLUijWdUirgwQmfGdfiSWWuF7fxkhiPMMk22pju1/vph62AOY8O4mXpHXrsIBSvlcKznrB3Sw== + +"@bazel/rollup@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.2.tgz#86600a3bc73ab587210be5eb060ff39a3f3922d8" + integrity sha512-40QkDxNBHEtYtPVDzhkChPM0v/xU9IacfRx70eHUD1iKY3SrIGdFN79uXHRqU4OY8llKwTPVlOMqtLqzdSRLBw== + +"@bazel/terser@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.2.tgz#d0794577681f6ccc00036ca417247963d2396117" + integrity sha512-LN5H46UPaOAbzfHqFQgkDnGSdiTYBc37+XafjelUS54jtKAsMX2Fb7Qu4JcO6W2HdK3uWcOIdUCrRyT2yCAAUA== + +"@bazel/typescript@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" + integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/app/package.json b/examples/app/package.json index 568c54d778..ca1b386a90 100644 --- a/examples/app/package.json +++ b/examples/app/package.json @@ -1,9 +1,9 @@ { "devDependencies": { - "@bazel/protractor": "^2.0.0-rc.1", - "@bazel/rollup": "^2.0.0-rc.1", - "@bazel/terser": "^2.0.0-rc.1", - "@bazel/typescript": "^2.0.0-rc.1", + "@bazel/protractor": "^2.0.0-rc.2", + "@bazel/rollup": "^2.0.0-rc.2", + "@bazel/terser": "^2.0.0-rc.2", + "@bazel/typescript": "^2.0.0-rc.2", "@types/jasmine": "3.3.15", "html-insert-assets": "^0.6.0", "http-server": "^0.11.1", diff --git a/examples/app/yarn.lock b/examples/app/yarn.lock index 5c4f6c45f3..03e2d2e7d7 100644 --- a/examples/app/yarn.lock +++ b/examples/app/yarn.lock @@ -2,25 +2,25 @@ # yarn lockfile v1 -"@bazel/protractor@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.1.tgz#a616adecfe5fd9a7f35c2ed30c47caeeb9866f97" - integrity sha512-E/xS2Dwc8BFjeVLVxciTLnMRT93OfBeE+zANK388gf7n6tggcJkRiiRqQ1gKiGHirL/zrTiir13SoDuQf1msBA== - -"@bazel/rollup@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.1.tgz#6a4aec69347c7b7c9866b1def84aaef1c6c520fa" - integrity sha512-PvFvLRsctrdrljsYAD+IfDhpYVgedYx9xxH+q6gOZV63qlC45lCC/AAb4dw/TvjbeYK8IJ4pepJHd9NFTJFt6g== - -"@bazel/terser@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.1.tgz#b42ee3619f67788257a10cc4fea420a800381ce7" - integrity sha512-htQ7ETuHtKWji9ERYAgmarzAeU1w8iiIVtUAr2C0Ka1H76DhIa8fX/AkIgIr2f+5tDahyRZZirc02M8fEqIr/g== - -"@bazel/typescript@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" - integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== +"@bazel/protractor@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.2.tgz#237c1c98fd5d918a703f0f32fd3580ee7314c351" + integrity sha512-JR68nnLSOui70GLUijWdUirgwQmfGdfiSWWuF7fxkhiPMMk22pju1/vph62AOY8O4mXpHXrsIBSvlcKznrB3Sw== + +"@bazel/rollup@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.2.tgz#86600a3bc73ab587210be5eb060ff39a3f3922d8" + integrity sha512-40QkDxNBHEtYtPVDzhkChPM0v/xU9IacfRx70eHUD1iKY3SrIGdFN79uXHRqU4OY8llKwTPVlOMqtLqzdSRLBw== + +"@bazel/terser@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.2.tgz#d0794577681f6ccc00036ca417247963d2396117" + integrity sha512-LN5H46UPaOAbzfHqFQgkDnGSdiTYBc37+XafjelUS54jtKAsMX2Fb7Qu4JcO6W2HdK3uWcOIdUCrRyT2yCAAUA== + +"@bazel/typescript@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" + integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/cypress/package.json b/examples/cypress/package.json index 4826883604..7e8d9b3949 100644 --- a/examples/cypress/package.json +++ b/examples/cypress/package.json @@ -6,9 +6,9 @@ }, "devDependencies": { "@bazel/bazelisk": "^1.5.0", - "@bazel/cypress": "^2.0.0-rc.1", + "@bazel/cypress": "^2.0.0-rc.2", "@bazel/ibazel": "^0.13.1", - "@bazel/typescript": "^2.0.0-rc.1", + "@bazel/typescript": "^2.0.0-rc.2", "@cypress/browserify-preprocessor": "^3.0.0", "@types/node": "14.0.13", "cypress": "^4.8.0", diff --git a/examples/cypress/yarn.lock b/examples/cypress/yarn.lock index 213ad414df..e27f4a7026 100644 --- a/examples/cypress/yarn.lock +++ b/examples/cypress/yarn.lock @@ -749,20 +749,20 @@ resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.5.0.tgz#61f583ed93be138b47be7180403938ea4057f54b" integrity sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg== -"@bazel/cypress@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/cypress/-/cypress-2.0.0-rc.1.tgz#d1a70349dca1030ba98f293ab952c413d4ee7806" - integrity sha512-MQXYy/OgVqeISKmjlTtR6E8wHIul9P1fFjauHzxcYgmrk6ZRvC4glK+r2DN4FLAOGg7/fDtAf1wT5r93332pxQ== +"@bazel/cypress@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/cypress/-/cypress-2.0.0-rc.2.tgz#f00e48f3108337df1e0044aa25e1b84de4f7f10c" + integrity sha512-4+lZY0vJVa/BwrsWGeE1iDVQFHSb4Wvh35gVfyHq17QA1BNdZyZZFJSJhAr3LZCl3REz3aAhiIvq+kyBy03cwg== "@bazel/ibazel@^0.13.1": version "0.13.1" resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/typescript@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" - integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== +"@bazel/typescript@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" + integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/kotlin/package-lock.json b/examples/kotlin/package-lock.json index e1c035a759..50691ee5ff 100644 --- a/examples/kotlin/package-lock.json +++ b/examples/kotlin/package-lock.json @@ -14,9 +14,9 @@ } }, "@bazel/jasmine": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0-rc.1.tgz", - "integrity": "sha512-xQdwUvM0CYMxC8iZCLtvOd2DO02Wvl37x1Go7pKpLMyhy7wBM3JM4bsIZLo9Idwf9T5VuCOzXUAPvb0xmIA6sQ==", + "version": "2.0.0-rc.2", + "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0-rc.2.tgz", + "integrity": "sha512-xIi6O04XxiWxdcBosQ4SiuUSVLB+ZqVjxz1MYCsh+LEdXu5mBk1WY2HhaQ8T6Lvj3zzfg1TL3n+e0/rO/oAHFQ==", "dev": true, "requires": { "c8": "~7.1.0", @@ -24,15 +24,15 @@ } }, "@bazel/rollup": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@bazel/rollup/-/rollup-2.0.0-rc.1.tgz", - "integrity": "sha512-PvFvLRsctrdrljsYAD+IfDhpYVgedYx9xxH+q6gOZV63qlC45lCC/AAb4dw/TvjbeYK8IJ4pepJHd9NFTJFt6g==", + "version": "2.0.0-rc.2", + "resolved": "https://registry.npmjs.org/@bazel/rollup/-/rollup-2.0.0-rc.2.tgz", + "integrity": "sha512-40QkDxNBHEtYtPVDzhkChPM0v/xU9IacfRx70eHUD1iKY3SrIGdFN79uXHRqU4OY8llKwTPVlOMqtLqzdSRLBw==", "dev": true }, "@bazel/terser": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@bazel/terser/-/terser-2.0.0-rc.1.tgz", - "integrity": "sha512-htQ7ETuHtKWji9ERYAgmarzAeU1w8iiIVtUAr2C0Ka1H76DhIa8fX/AkIgIr2f+5tDahyRZZirc02M8fEqIr/g==", + "version": "2.0.0-rc.2", + "resolved": "https://registry.npmjs.org/@bazel/terser/-/terser-2.0.0-rc.2.tgz", + "integrity": "sha512-LN5H46UPaOAbzfHqFQgkDnGSdiTYBc37+XafjelUS54jtKAsMX2Fb7Qu4JcO6W2HdK3uWcOIdUCrRyT2yCAAUA==", "dev": true }, "@bcoe/v8-coverage": { diff --git a/examples/kotlin/package.json b/examples/kotlin/package.json index 89dded982b..643c83233b 100644 --- a/examples/kotlin/package.json +++ b/examples/kotlin/package.json @@ -2,9 +2,9 @@ "name": "kotlin_example", "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.0-rc.1", - "@bazel/rollup": "^2.0.0-rc.1", - "@bazel/terser": "^2.0.0-rc.1", + "@bazel/jasmine": "^2.0.0-rc.2", + "@bazel/rollup": "^2.0.0-rc.2", + "@bazel/terser": "^2.0.0-rc.2", "domino": "^2.1.3", "http-server": "^0.11.1", "jasmine": "^3.5.0", diff --git a/examples/nestjs/package.json b/examples/nestjs/package.json index 0f722656aa..77398b5fde 100644 --- a/examples/nestjs/package.json +++ b/examples/nestjs/package.json @@ -3,7 +3,7 @@ "dependencies": { "@bazel/bazelisk": "^1.5.0", "@bazel/ibazel": "^0.13.1", - "@bazel/jasmine": "^2.0.0-rc.1", + "@bazel/jasmine": "^2.0.0-rc.2", "@nestjs/common": "6.5.2", "@nestjs/core": "6.5.2", "@nestjs/platform-express": "6.5.2", @@ -17,7 +17,7 @@ "supertest": "^4.0.2" }, "devDependencies": { - "@bazel/typescript": "^2.0.0-rc.1", + "@bazel/typescript": "^2.0.0-rc.2", "@types/node": "12.6.3", "typescript": "3.5.3" }, diff --git a/examples/nestjs/yarn.lock b/examples/nestjs/yarn.lock index da7187aab6..b0aefe6072 100644 --- a/examples/nestjs/yarn.lock +++ b/examples/nestjs/yarn.lock @@ -12,18 +12,18 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/jasmine@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.1.tgz#6031872e35b29774209105b5c58e54b2a74cdb75" - integrity sha512-xQdwUvM0CYMxC8iZCLtvOd2DO02Wvl37x1Go7pKpLMyhy7wBM3JM4bsIZLo9Idwf9T5VuCOzXUAPvb0xmIA6sQ== +"@bazel/jasmine@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.2.tgz#6946c7d6825fc89e92f03b0f5cc253d9ddb39021" + integrity sha512-xIi6O04XxiWxdcBosQ4SiuUSVLB+ZqVjxz1MYCsh+LEdXu5mBk1WY2HhaQ8T6Lvj3zzfg1TL3n+e0/rO/oAHFQ== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" -"@bazel/typescript@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" - integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== +"@bazel/typescript@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" + integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/protocol_buffers/package.json b/examples/protocol_buffers/package.json index 5cb54c2c39..c5bb3dc524 100644 --- a/examples/protocol_buffers/package.json +++ b/examples/protocol_buffers/package.json @@ -1,11 +1,11 @@ { "devDependencies": { - "@bazel/karma": "^2.0.0-rc.1", - "@bazel/labs": "^2.0.0-rc.1", - "@bazel/protractor": "^2.0.0-rc.1", - "@bazel/rollup": "^2.0.0-rc.1", - "@bazel/terser": "^2.0.0-rc.1", - "@bazel/typescript": "^2.0.0-rc.1", + "@bazel/karma": "^2.0.0-rc.2", + "@bazel/labs": "^2.0.0-rc.2", + "@bazel/protractor": "^2.0.0-rc.2", + "@bazel/rollup": "^2.0.0-rc.2", + "@bazel/terser": "^2.0.0-rc.2", + "@bazel/typescript": "^2.0.0-rc.2", "@types/jasmine": "2.8.2", "@types/long": "^4.0.0", "@types/node": "11.11.1", diff --git a/examples/protocol_buffers/yarn.lock b/examples/protocol_buffers/yarn.lock index c8c775e61c..7c4ed2948e 100644 --- a/examples/protocol_buffers/yarn.lock +++ b/examples/protocol_buffers/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@bazel/karma@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.1.tgz#889e2c5fbc07f2c9021e0074f7cad37c2b697c5b" - integrity sha512-cJkv4UPy1Nj2Jgw47dviU222a5eeeRhaZa/cJApB6/hvEGAwKdTW3l3C8B29aonzO5K8skPDqw2urzhgJ3q2lA== +"@bazel/karma@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.2.tgz#e41e70ae4984b37ebf02e9319f8d65a325bfa7bc" + integrity sha512-S09z/lz1qE2n1aMuHRWa6rgt3SH8K00msl6EHe9RX6t4C5SOZnZa01gwDL24qbTIR++u2hw27CAd1un0dpQgyA== dependencies: tmp "0.1.0" -"@bazel/labs@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/labs/-/labs-2.0.0-rc.1.tgz#876472b93fd9806dc7a26f8e73cee40bba37dc0a" - integrity sha512-GfhmsACdYnNpfuQ2eDWHJ9ArTr7ABTZ31ca1ekVEKDSSbQtT1AaUeRLk8lgHRbbMfkn4NL1uPZWPAXmNOUBaiw== - -"@bazel/protractor@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.1.tgz#a616adecfe5fd9a7f35c2ed30c47caeeb9866f97" - integrity sha512-E/xS2Dwc8BFjeVLVxciTLnMRT93OfBeE+zANK388gf7n6tggcJkRiiRqQ1gKiGHirL/zrTiir13SoDuQf1msBA== - -"@bazel/rollup@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.1.tgz#6a4aec69347c7b7c9866b1def84aaef1c6c520fa" - integrity sha512-PvFvLRsctrdrljsYAD+IfDhpYVgedYx9xxH+q6gOZV63qlC45lCC/AAb4dw/TvjbeYK8IJ4pepJHd9NFTJFt6g== - -"@bazel/terser@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.1.tgz#b42ee3619f67788257a10cc4fea420a800381ce7" - integrity sha512-htQ7ETuHtKWji9ERYAgmarzAeU1w8iiIVtUAr2C0Ka1H76DhIa8fX/AkIgIr2f+5tDahyRZZirc02M8fEqIr/g== - -"@bazel/typescript@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" - integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== +"@bazel/labs@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/labs/-/labs-2.0.0-rc.2.tgz#c4012eb5df731f03686ab6490ffcacc63915550d" + integrity sha512-BJ0OaGsiFIu0HJvpIVLW/z/PqBQwVPzZEKDw6ngqwLU18Vr8a/Bz7Di8KJ7UVroralCmaFeD9X2qPgcXw/6jFg== + +"@bazel/protractor@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.2.tgz#237c1c98fd5d918a703f0f32fd3580ee7314c351" + integrity sha512-JR68nnLSOui70GLUijWdUirgwQmfGdfiSWWuF7fxkhiPMMk22pju1/vph62AOY8O4mXpHXrsIBSvlcKznrB3Sw== + +"@bazel/rollup@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.2.tgz#86600a3bc73ab587210be5eb060ff39a3f3922d8" + integrity sha512-40QkDxNBHEtYtPVDzhkChPM0v/xU9IacfRx70eHUD1iKY3SrIGdFN79uXHRqU4OY8llKwTPVlOMqtLqzdSRLBw== + +"@bazel/terser@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.2.tgz#d0794577681f6ccc00036ca417247963d2396117" + integrity sha512-LN5H46UPaOAbzfHqFQgkDnGSdiTYBc37+XafjelUS54jtKAsMX2Fb7Qu4JcO6W2HdK3uWcOIdUCrRyT2yCAAUA== + +"@bazel/typescript@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" + integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/react_webpack/package.json b/examples/react_webpack/package.json index 695a829db4..0d643f8c3f 100644 --- a/examples/react_webpack/package.json +++ b/examples/react_webpack/package.json @@ -4,7 +4,7 @@ "@bazel/bazelisk": "^1.5.0", "@bazel/buildifier": "^3.3.0", "@bazel/ibazel": "^0.13.1", - "@bazel/typescript": "^2.0.0-rc.1", + "@bazel/typescript": "^2.0.0-rc.2", "@types/react": "^16.9.5", "@types/react-dom": "^16.9.1", "css-loader": "^3.2.0", diff --git a/examples/react_webpack/yarn.lock b/examples/react_webpack/yarn.lock index 349d903a93..966ff061a5 100644 --- a/examples/react_webpack/yarn.lock +++ b/examples/react_webpack/yarn.lock @@ -17,10 +17,10 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/typescript@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" - integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== +"@bazel/typescript@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" + integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/vendored_node/package-lock.json b/examples/vendored_node/package-lock.json index 1b313388cc..c14927a6b5 100644 --- a/examples/vendored_node/package-lock.json +++ b/examples/vendored_node/package-lock.json @@ -13,9 +13,9 @@ } }, "@bazel/jasmine": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0-rc.1.tgz", - "integrity": "sha512-xQdwUvM0CYMxC8iZCLtvOd2DO02Wvl37x1Go7pKpLMyhy7wBM3JM4bsIZLo9Idwf9T5VuCOzXUAPvb0xmIA6sQ==", + "version": "2.0.0-rc.2", + "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0-rc.2.tgz", + "integrity": "sha512-xIi6O04XxiWxdcBosQ4SiuUSVLB+ZqVjxz1MYCsh+LEdXu5mBk1WY2HhaQ8T6Lvj3zzfg1TL3n+e0/rO/oAHFQ==", "dev": true, "requires": { "c8": "~7.1.0", diff --git a/examples/vendored_node/package.json b/examples/vendored_node/package.json index 2107193345..201cc13587 100644 --- a/examples/vendored_node/package.json +++ b/examples/vendored_node/package.json @@ -1,7 +1,7 @@ { "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.0-rc.1", + "@bazel/jasmine": "^2.0.0-rc.2", "jasmine": "^3.5.0" }, "scripts": { diff --git a/examples/vendored_node_and_yarn/package.json b/examples/vendored_node_and_yarn/package.json index 2107193345..201cc13587 100644 --- a/examples/vendored_node_and_yarn/package.json +++ b/examples/vendored_node_and_yarn/package.json @@ -1,7 +1,7 @@ { "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.0-rc.1", + "@bazel/jasmine": "^2.0.0-rc.2", "jasmine": "^3.5.0" }, "scripts": { diff --git a/examples/vendored_node_and_yarn/yarn.lock b/examples/vendored_node_and_yarn/yarn.lock index c98a04c44e..61def5a97f 100644 --- a/examples/vendored_node_and_yarn/yarn.lock +++ b/examples/vendored_node_and_yarn/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.1.tgz#6031872e35b29774209105b5c58e54b2a74cdb75" - integrity sha512-xQdwUvM0CYMxC8iZCLtvOd2DO02Wvl37x1Go7pKpLMyhy7wBM3JM4bsIZLo9Idwf9T5VuCOzXUAPvb0xmIA6sQ== +"@bazel/jasmine@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.2.tgz#6946c7d6825fc89e92f03b0f5cc253d9ddb39021" + integrity sha512-xIi6O04XxiWxdcBosQ4SiuUSVLB+ZqVjxz1MYCsh+LEdXu5mBk1WY2HhaQ8T6Lvj3zzfg1TL3n+e0/rO/oAHFQ== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/examples/vue/package-lock.json b/examples/vue/package-lock.json index a807e3fed8..7a1e85a08a 100644 --- a/examples/vue/package-lock.json +++ b/examples/vue/package-lock.json @@ -6721,9 +6721,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true }, "lodash.defaultsdeep": { diff --git a/examples/web_testing/package.json b/examples/web_testing/package.json index 7697c48f0b..21ef48b1a0 100644 --- a/examples/web_testing/package.json +++ b/examples/web_testing/package.json @@ -1,7 +1,7 @@ { "devDependencies": { - "@bazel/karma": "^2.0.0-rc.1", - "@bazel/typescript": "^2.0.0-rc.1", + "@bazel/karma": "^2.0.0-rc.2", + "@bazel/typescript": "^2.0.0-rc.2", "@types/jasmine": "2.8.2", "@types/node": "11.11.1", "karma": "~4.1.0", diff --git a/examples/web_testing/yarn.lock b/examples/web_testing/yarn.lock index 53423b41ac..a5a3233b7c 100644 --- a/examples/web_testing/yarn.lock +++ b/examples/web_testing/yarn.lock @@ -2,17 +2,17 @@ # yarn lockfile v1 -"@bazel/karma@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.1.tgz#889e2c5fbc07f2c9021e0074f7cad37c2b697c5b" - integrity sha512-cJkv4UPy1Nj2Jgw47dviU222a5eeeRhaZa/cJApB6/hvEGAwKdTW3l3C8B29aonzO5K8skPDqw2urzhgJ3q2lA== +"@bazel/karma@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.2.tgz#e41e70ae4984b37ebf02e9319f8d65a325bfa7bc" + integrity sha512-S09z/lz1qE2n1aMuHRWa6rgt3SH8K00msl6EHe9RX6t4C5SOZnZa01gwDL24qbTIR++u2hw27CAd1un0dpQgyA== dependencies: tmp "0.1.0" -"@bazel/typescript@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" - integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== +"@bazel/typescript@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" + integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/webapp/package.json b/examples/webapp/package.json index 351531feaf..fae50df74c 100644 --- a/examples/webapp/package.json +++ b/examples/webapp/package.json @@ -4,10 +4,10 @@ "@babel/cli": "^7.6.0", "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", - "@bazel/protractor": "^2.0.0-rc.1", - "@bazel/rollup": "^2.0.0-rc.1", - "@bazel/terser": "^2.0.0-rc.1", - "@bazel/typescript": "^2.0.0-rc.1", + "@bazel/protractor": "^2.0.0-rc.2", + "@bazel/rollup": "^2.0.0-rc.2", + "@bazel/terser": "^2.0.0-rc.2", + "@bazel/typescript": "^2.0.0-rc.2", "http-server": "^0.11.1", "mocha": "^6.2.1", "protractor": "^5.4.2", diff --git a/examples/webapp/yarn.lock b/examples/webapp/yarn.lock index d4c88e0e10..58cf447254 100644 --- a/examples/webapp/yarn.lock +++ b/examples/webapp/yarn.lock @@ -655,25 +655,25 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/protractor@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.1.tgz#a616adecfe5fd9a7f35c2ed30c47caeeb9866f97" - integrity sha512-E/xS2Dwc8BFjeVLVxciTLnMRT93OfBeE+zANK388gf7n6tggcJkRiiRqQ1gKiGHirL/zrTiir13SoDuQf1msBA== - -"@bazel/rollup@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.1.tgz#6a4aec69347c7b7c9866b1def84aaef1c6c520fa" - integrity sha512-PvFvLRsctrdrljsYAD+IfDhpYVgedYx9xxH+q6gOZV63qlC45lCC/AAb4dw/TvjbeYK8IJ4pepJHd9NFTJFt6g== - -"@bazel/terser@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.1.tgz#b42ee3619f67788257a10cc4fea420a800381ce7" - integrity sha512-htQ7ETuHtKWji9ERYAgmarzAeU1w8iiIVtUAr2C0Ka1H76DhIa8fX/AkIgIr2f+5tDahyRZZirc02M8fEqIr/g== - -"@bazel/typescript@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.1.tgz#1fe868d403bd303a6d9a2340ba6b95ecf8fdec2d" - integrity sha512-BbD3540jpOsflSiCmxuN2whs4+UndjAHtB/6BiA0r5adls0Prqw+JZaACZccvi00FTMTQEJz9P4PeD2Codv3Tw== +"@bazel/protractor@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.2.tgz#237c1c98fd5d918a703f0f32fd3580ee7314c351" + integrity sha512-JR68nnLSOui70GLUijWdUirgwQmfGdfiSWWuF7fxkhiPMMk22pju1/vph62AOY8O4mXpHXrsIBSvlcKznrB3Sw== + +"@bazel/rollup@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.2.tgz#86600a3bc73ab587210be5eb060ff39a3f3922d8" + integrity sha512-40QkDxNBHEtYtPVDzhkChPM0v/xU9IacfRx70eHUD1iKY3SrIGdFN79uXHRqU4OY8llKwTPVlOMqtLqzdSRLBw== + +"@bazel/terser@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.2.tgz#d0794577681f6ccc00036ca417247963d2396117" + integrity sha512-LN5H46UPaOAbzfHqFQgkDnGSdiTYBc37+XafjelUS54jtKAsMX2Fb7Qu4JcO6W2HdK3uWcOIdUCrRyT2yCAAUA== + +"@bazel/typescript@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" + integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/worker/package.json b/examples/worker/package.json index b8c2626288..ecf57ca891 100644 --- a/examples/worker/package.json +++ b/examples/worker/package.json @@ -1,6 +1,6 @@ { "private": true, "devDependencies": { - "@bazel/worker": "^2.0.0-rc.1" + "@bazel/worker": "^2.0.0-rc.2" } } diff --git a/examples/worker/yarn.lock b/examples/worker/yarn.lock index bf2f88f2b3..094df42899 100644 --- a/examples/worker/yarn.lock +++ b/examples/worker/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/worker@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-2.0.0-rc.1.tgz#1941a2f9ac006a53e0be3594df49857c657c0161" - integrity sha512-IwmEZuEyu0IAgbiCP4aQ4bmBzN/2bhB1NbIZh4mnd1LfGLR9tjgml1FTXhFYkI+EOUlXsOaf6kKvkp5Q6urcUQ== +"@bazel/worker@^2.0.0-rc.2": + version "2.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-2.0.0-rc.2.tgz#6690fbee4b1d0d5ef20a62399ba27a801d354951" + integrity sha512-65P2C8P12bYpt9jtmxuzdRCiP7e5Vt0KxCXRy7fMiz/0Lxduf7Z7a3bEa5dTQ5w05IJqzHbmKMGgqXnO26NzhA== dependencies: protobufjs "6.8.8" diff --git a/scripts/update_nested_lock_files.sh b/scripts/update_nested_lock_files.sh index b24a049f07..3afba90dba 100755 --- a/scripts/update_nested_lock_files.sh +++ b/scripts/update_nested_lock_files.sh @@ -17,6 +17,10 @@ for workspaceRoot in ${workspaceRoots[@]} ; do for workspaceFile in ${workspaceFiles[@]} ; do ( readonly workspaceDir=$(dirname ${workspaceFile}) + if [ ${workspaceDir} == "./examples/vue" ]; then + # vue 'npm ci' has issues but there are no deps there so we skip it for now + continue + fi printf "\n============================================\nupdating ${workspaceDir}\n============================================\n\n" cd ${workspaceDir} readonly packages=$(cat package.json | grep \"@bazel/ | awk -F: '{ print $1 }' | sed 's/[",]//g' | tr -d ' ') From ee584f8ade54b11e42b97ded3e261a4688e06900 Mon Sep 17 00:00:00 2001 From: Richard Wang Date: Fri, 10 Jul 2020 19:07:25 +1000 Subject: [PATCH 0746/1134] feat: add depset support to run_node inputs, matching ctx.action.run --- internal/providers/node_runtime_deps_info.bzl | 14 +++++-- internal/providers/test/BUILD.bazel | 7 ++++ internal/providers/test/js-clone-file.js | 9 +++++ internal/providers/test/run_node_test.bzl | 39 +++++++++++++++++++ 4 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 internal/providers/test/js-clone-file.js diff --git a/internal/providers/node_runtime_deps_info.bzl b/internal/providers/node_runtime_deps_info.bzl index 6a7920ae3f..154117f571 100644 --- a/internal/providers/node_runtime_deps_info.bzl +++ b/internal/providers/node_runtime_deps_info.bzl @@ -67,10 +67,10 @@ def run_node(ctx, inputs, arguments, executable, **kwargs): exec_exec = getattr(ctx.executable, executable) outputs = kwargs.pop("outputs", []) - extra_inputs = [] + extra_inputs = depset() link_data = [] if (NodeRuntimeDepsInfo in exec_attr): - extra_inputs = exec_attr[NodeRuntimeDepsInfo].deps.to_list() + extra_inputs = exec_attr[NodeRuntimeDepsInfo].deps link_data = exec_attr[NodeRuntimeDepsInfo].pkgs mnemonic = kwargs.get("mnemonic") @@ -114,9 +114,17 @@ def run_node(ctx, inputs, arguments, executable, **kwargs): env[var] = ctx.configuration.default_shell_env[var] env["BAZEL_NODE_MODULES_ROOT"] = _compute_node_modules_root(ctx) + # ctx.actions.run accepts both lists and a depset for inputs. Coerce the original inputs to a + # depset if they're a list, so that extra inputs can be combined in a performant manner. + inputs_depset = depset(transitive = [ + depset(direct = inputs) if type(inputs) == "list" else inputs, + extra_inputs, + depset(direct = [modules_manifest]), + ]) + ctx.actions.run( outputs = outputs, - inputs = inputs + extra_inputs + [modules_manifest], + inputs = inputs_depset, arguments = arguments, executable = exec_exec, env = env, diff --git a/internal/providers/test/BUILD.bazel b/internal/providers/test/BUILD.bazel index 2bfaad61bd..e3322dedab 100644 --- a/internal/providers/test/BUILD.bazel +++ b/internal/providers/test/BUILD.bazel @@ -17,6 +17,11 @@ nodejs_binary( entry_point = "js-write-file.js", ) +nodejs_binary( + name = "cloner_bin", + entry_point = "js-clone-file.js", +) + js_write_file( name = "write_file", content = "test file content", @@ -32,5 +37,7 @@ js_write_file( for file in [ "out", "out2", + "out3", + "out4", ] ] diff --git a/internal/providers/test/js-clone-file.js b/internal/providers/test/js-clone-file.js new file mode 100644 index 0000000000..c199d91196 --- /dev/null +++ b/internal/providers/test/js-clone-file.js @@ -0,0 +1,9 @@ +const readFileSync = require('fs').readFileSync; +const writeFileSync = require('fs').writeFileSync; + +const inputPath = process.argv[2]; +const outputPath = process.argv[3]; + +const content = readFileSync(inputPath, 'utf8'); + +writeFileSync(outputPath, content, {encoding: 'utf8'}); diff --git a/internal/providers/test/run_node_test.bzl b/internal/providers/test/run_node_test.bzl index 2c6f0cc8bf..07161cb162 100644 --- a/internal/providers/test/run_node_test.bzl +++ b/internal/providers/test/run_node_test.bzl @@ -31,14 +31,53 @@ def _js_write_file_impl(ctx): outputs = [ctx.outputs.out2], ) + content_txt = ctx.actions.declare_file("content.txt") + ctx.actions.write( + output = content_txt, + content = ctx.attr.content, + ) + + run_node( + ctx = ctx, + executable = "_clone", + mnemonic = "cloner", + # Pass inputs as a list. + inputs = [content_txt], + arguments = [ + content_txt.path, + ctx.outputs.out3.path, + ], + outputs = [ctx.outputs.out3], + ) + + run_node( + ctx = ctx, + executable = "_clone", + mnemonic = "cloner", + # Pass inputs as a depset. + inputs = depset(direct = [content_txt]), + arguments = [ + content_txt.path, + ctx.outputs.out4.path, + ], + outputs = [ctx.outputs.out4], + ) + js_write_file = rule( implementation = _js_write_file_impl, outputs = { "out": "out.txt", "out2": "out2.txt", + "out3": "out3.txt", + "out4": "out4.txt", }, attrs = { "content": attr.string(), + "_clone": attr.label( + default = Label("//internal/providers/test:cloner_bin"), + cfg = "host", + executable = True, + ), "_writer": attr.label( default = Label("//internal/providers/test:writer_bin"), cfg = "host", From 102d40260f1caa55ad178616a3f7e8983e36487e Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Fri, 10 Jul 2020 14:53:50 -0700 Subject: [PATCH 0747/1134] chore: remove flag that no longer has effect --- common.bazelrc | 6 ------ 1 file changed, 6 deletions(-) diff --git a/common.bazelrc b/common.bazelrc index 0f94d61c26..37c3e66b0a 100644 --- a/common.bazelrc +++ b/common.bazelrc @@ -61,12 +61,6 @@ build:debug --compilation_mode=dbg # This prevents accidentally depending on this feature, which Bazel will remove. build --nolegacy_external_runfiles -# Turn on the "Managed Directories" feature. -# This allows Bazel to share the same node_modules directory with other tools -# NB: this option was introduced in Bazel 0.26 -# See https://docs.bazel.build/versions/master/command-line-reference.html#flag--experimental_allow_incremental_repository_updates -common --experimental_allow_incremental_repository_updates - # Turn on --incompatible_strict_action_env which was on by default # in Bazel 0.21.0 but turned off again in 0.22.0. Follow # https://github.com/bazelbuild/bazel/issues/7026 for more details. From 4ed2e92f99f0792260446bd957c4b595f07c1b44 Mon Sep 17 00:00:00 2001 From: Matt Mackay Date: Sat, 11 Jul 2020 08:18:51 -0400 Subject: [PATCH 0748/1134] test: use multi_sass_binary for building multiple scss files for one Angular component (#2025) --- examples/angular/src/app/hello-world/BUILD.bazel | 10 +++++++--- .../src/app/hello-world/hello-world.component.ts | 2 +- .../angular/src/app/hello-world/secondary-styles.scss | 3 +++ 3 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 examples/angular/src/app/hello-world/secondary-styles.scss diff --git a/examples/angular/src/app/hello-world/BUILD.bazel b/examples/angular/src/app/hello-world/BUILD.bazel index 6d4c3469b5..d25c978c1d 100644 --- a/examples/angular/src/app/hello-world/BUILD.bazel +++ b/examples/angular/src/app/hello-world/BUILD.bazel @@ -1,13 +1,17 @@ -load("@io_bazel_rules_sass//:defs.bzl", "sass_binary") +load("@io_bazel_rules_sass//:defs.bzl", "multi_sass_binary") load("@npm//@bazel/karma:index.bzl", "karma_web_test_suite") load("@npm//@bazel/typescript:index.bzl", "ts_library") load("//tools:angular_ts_library.bzl", "ng_ts_library") package(default_visibility = ["//:__subpackages__"]) -sass_binary( +# multi_sass_binary can be used to build multiple scss files within one rule +multi_sass_binary( name = "hello-world-styles", - src = "hello-world.component.scss", + srcs = [ + "hello-world.component.scss", + "secondary-styles.scss", + ], ) ng_ts_library( diff --git a/examples/angular/src/app/hello-world/hello-world.component.ts b/examples/angular/src/app/hello-world/hello-world.component.ts index 3e5c792e4e..de1a35100d 100644 --- a/examples/angular/src/app/hello-world/hello-world.component.ts +++ b/examples/angular/src/app/hello-world/hello-world.component.ts @@ -5,7 +5,7 @@ import {format} from 'date-fns'; @Component({ selector: 'hello-world', templateUrl: 'hello-world.component.html', - styleUrls: ['./hello-world.component.scss'] + styleUrls: ['./hello-world.component.scss', './secondary-styles.scss'] }) export class HelloWorldComponent { name: string = shorten('Adolph Blaine Wolfeschlegelsteinhausenbergerdorff, Senior ', 15); diff --git a/examples/angular/src/app/hello-world/secondary-styles.scss b/examples/angular/src/app/hello-world/secondary-styles.scss new file mode 100644 index 0000000000..09622a32fe --- /dev/null +++ b/examples/angular/src/app/hello-world/secondary-styles.scss @@ -0,0 +1,3 @@ +#greeting { + color: darkgreen; +} From 255892a3efecbcef9256276eabbf73fee022c577 Mon Sep 17 00:00:00 2001 From: Matt Mackay Date: Sat, 11 Jul 2020 14:10:24 -0400 Subject: [PATCH 0749/1134] docs: update generated builtin docs to include aspects and providers --- docs/BUILD.bazel | 18 +++++++++++++++-- internal/providers/declaration_info.bzl | 11 +++++----- internal/providers/js_providers.bzl | 14 ++++++------- internal/providers/linkable_package_info.bzl | 4 ++-- internal/providers/node_runtime_deps_info.bzl | 11 +++++++++- providers.bzl | 4 +++- tools/stardoc/templates/aspect.vm | 20 ++++++++++++++++++- tools/stardoc/templates/provider.vm | 14 ++++++++++++- 8 files changed, 75 insertions(+), 21 deletions(-) diff --git a/docs/BUILD.bazel b/docs/BUILD.bazel index ba58c61df3..a0a7cd2797 100644 --- a/docs/BUILD.bazel +++ b/docs/BUILD.bazel @@ -25,6 +25,16 @@ stardoc( ], ) +stardoc( + name = "providers", + out = "providers.api", + input = "//:providers.bzl", + tags = ["fix-windows"], + deps = [ + "//:bzl", + ], +) + _BUILTINS_README = "# Built-in rules\n\nThese rules are available without any npm installation, via the `WORKSPACE` install of the `build_bazel_rules_nodejs` workspace. This is necessary to bootstrap Bazel to run the package manager to download other rules from NPM.\n\n" # Ugly genrule depending on local linux environment to build the README out of skylark doc generation. @@ -32,10 +42,14 @@ _BUILTINS_README = "# Built-in rules\n\nThese rules are available without any np # TODO: This ought to be possible with stardoc alone. Need to coordinate with Chris Parsons. genrule( name = "builtins_md", - srcs = [":builtins.api"], + srcs = [ + ":builtins.api", + ":providers.api", + ], outs = ["builtins.doc"], cmd = "echo '%s' > $@;" % _BUILTINS_README + - "cat $< | sed 's/^##/\\\n##/' >> $@", + "cat $(location :builtins.api) | sed 's/^##/\\\n##/' >> $@ &&" + + "cat $(location :providers.api) | sed 's/^##/\\\n##/' >> $@", tags = ["fix-windows"], ) diff --git a/internal/providers/declaration_info.bzl b/internal/providers/declaration_info.bzl index 4f53e83383..609fb3e903 100644 --- a/internal/providers/declaration_info.bzl +++ b/internal/providers/declaration_info.bzl @@ -15,15 +15,13 @@ """This module contains a provider for TypeScript typings files (.d.ts)""" DeclarationInfo = provider( - doc = """The DeclarationInfo provider allows JS rules to communicate typing information. -TypeScript's .d.ts files are used as the interop format for describing types. + doc = """The DeclarationInfo provider allows JS rules to communicate typing information. TypeScript's .d.ts files are used as the interop format for describing types. Do not create DeclarationInfo instances directly, instead use the declaration_info factory function. -TODO(alexeagle): The ts_library#deps attribute should require that this provider is attached. - Note: historically this was a subset of the string-typed "typescript" provider. """, + # TODO(alexeagle): The ts_library#deps attribute should require that this provider is attached. # TODO: if we ever enable --declarationMap we will have .d.ts.map files too fields = { "declarations": "A depset of .d.ts files produced by this rule", @@ -36,14 +34,15 @@ This prevents needing an aspect in rules that consume the typings, which improve def declaration_info(declarations, deps = []): """Constructs a DeclarationInfo including all transitive declarations from DeclarationInfo providers in a list of deps. - # TODO: add some checking actions to ensure the declarations are well-formed and don't have semantic diagnostics - Args: declarations: list of .d.ts files deps: list of labels of dependencies where we should collect their DeclarationInfo to pass transitively + Returns: a single DeclarationInfo provider """ + + # TODO: add some checking actions to ensure the declarations are well-formed and don't have semantic diagnostics transitive_depsets = [declarations] for dep in deps: if DeclarationInfo in dep: diff --git a/internal/providers/js_providers.bzl b/internal/providers/js_providers.bzl index 929a7cf4d5..4d507b35cc 100644 --- a/internal/providers/js_providers.bzl +++ b/internal/providers/js_providers.bzl @@ -47,8 +47,8 @@ JSModuleInfo = provider( def js_module_info(sources, deps = []): """Constructs a JSModuleInfo including all transitive sources from JSModuleInfo providers in a list of deps. -Returns a single JSModuleInfo. -""" + Returns a single JSModuleInfo. + """ transitive_depsets = [sources] for dep in deps: if JSModuleInfo in dep: @@ -78,8 +78,8 @@ Historical note: this was the typescript.es5_sources output. def js_named_module_info(sources, deps = []): """Constructs a JSNamedModuleInfo including all transitive sources from JSNamedModuleInfo providers in a list of deps. -Returns a single JSNamedModuleInfo. -""" + Returns a single JSNamedModuleInfo. + """ transitive_depsets = [sources] for dep in deps: if JSNamedModuleInfo in dep: @@ -95,9 +95,9 @@ JSEcmaScriptModuleInfo = provider( They should use modern syntax and ESModules. These files should typically be named "foo.mjs" -TODO: should we require that? Historical note: this was the typescript.es6_sources output""", + # TODO: should we require that these are ESModules with the mjs extension? fields = { "direct_sources": "Depset of direct JavaScript files and sourcemaps", "sources": "Depset of direct and transitive JavaScript files and sourcemaps", @@ -107,8 +107,8 @@ Historical note: this was the typescript.es6_sources output""", def js_ecma_script_module_info(sources, deps = []): """Constructs a JSEcmaScriptModuleInfo including all transitive sources from JSEcmaScriptModuleInfo providers in a list of deps. -Returns a single JSEcmaScriptModuleInfo. -""" + Returns a single JSEcmaScriptModuleInfo. + """ transitive_depsets = [sources] for dep in deps: if JSEcmaScriptModuleInfo in dep: diff --git a/internal/providers/linkable_package_info.bzl b/internal/providers/linkable_package_info.bzl index ad450debc2..dc821c17bf 100644 --- a/internal/providers/linkable_package_info.bzl +++ b/internal/providers/linkable_package_info.bzl @@ -12,11 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""A docstring +"""LinkablePackageInfo module """ LinkablePackageInfo = provider( - doc = "A doc string", + doc = "The LinkablePackageInfo provider provides information to the linker for linking pkg_npm built packages", fields = { "files": "Depset of files in this package (must all be contained within path)", "package_name": """The package name. diff --git a/internal/providers/node_runtime_deps_info.bzl b/internal/providers/node_runtime_deps_info.bzl index 154117f571..4c94d9b525 100644 --- a/internal/providers/node_runtime_deps_info.bzl +++ b/internal/providers/node_runtime_deps_info.bzl @@ -58,7 +58,16 @@ def _compute_node_modules_root(ctx): def run_node(ctx, inputs, arguments, executable, **kwargs): """Helper to replace ctx.actions.run - This calls node programs with a node_modules directory in place""" + + This calls node programs with a node_modules directory in place + + Args: + ctx: rule context from the calling rule implementation function + inputs: list or depset of inputs to the action + arguments: list or ctx.actions.Args object containing arguments to pass to the executable + executable: stringy representation of the executable this action will run, eg eg. "my_executable" rather than ctx.executable.my_executable + kwargs: all other args accepted by ctx.actions.run + """ if (type(executable) != "string"): fail("""run_node requires that executable be provided as a string, eg. my_executable rather than ctx.executable.my_executable diff --git a/providers.bzl b/providers.bzl index 89ad8117d9..082ea8bbc8 100644 --- a/providers.bzl +++ b/providers.bzl @@ -61,7 +61,9 @@ LinkablePackageInfo = _LinkablePackageInfo #Modelled after _GoContextData in rules_go/go/private/context.bzl NodeContextInfo = provider( doc = "Provides data about the build context, like config_setting's", - fields = ["stamp"], + fields = { + "stamp": "If stamping is enabled", + }, ) NodeRuntimeDepsInfo = _NodeRuntimeDepsInfo diff --git a/tools/stardoc/templates/aspect.vm b/tools/stardoc/templates/aspect.vm index 54294d7ea3..023de1757e 100644 --- a/tools/stardoc/templates/aspect.vm +++ b/tools/stardoc/templates/aspect.vm @@ -1 +1,19 @@ -ASPECT TODO \ No newline at end of file +#[[##]]# ${aspectName} + +#[[###]]# Usage + +``` +$aspectName(#foreach( $attr in $aspectInfo.getAttributeList() )$attr.name#if( $foreach.hasNext ), #end#end) +``` + +#if (!$aspectInfo.getAttributeList().isEmpty()) +#foreach ($attribute in $aspectInfo.getAttributeList()) + +#[[####]]# `${attribute.name}` +(*#if ($attribute.type == "NAME")[name]#elseif( $attribute.type == "LABEL" )[label]#elseif( $attribute.type == "LABEL_LIST" )[labels]#else${util.attributeTypeString($attribute)}#end#if( $attribute.mandatory ), mandatory#end*)#if (!$attribute.docString.isEmpty()): ${attribute.docString.trim()}#end +#if( !$attribute.defaultValue.isEmpty() ) + + +Defaults to `$attribute.defaultValue`#end +#end +#end diff --git a/tools/stardoc/templates/provider.vm b/tools/stardoc/templates/provider.vm index 07cb4635e5..b64e8f87a7 100644 --- a/tools/stardoc/templates/provider.vm +++ b/tools/stardoc/templates/provider.vm @@ -1 +1,13 @@ -PROVIDER TODO \ No newline at end of file +#[[##]]# ${providerName} + +${providerInfo.docString} + +#if (!$providerInfo.fieldInfoList.isEmpty()) +#foreach ($field in $providerInfo.fieldInfoList) + +#[[####]]# `${field.name}` +${field.docString} + +#end + +#end From 4e53157816282a8d29cae609f6a4ef493efacf61 Mon Sep 17 00:00:00 2001 From: Long Ho Date: Sat, 11 Jul 2020 16:11:25 -0400 Subject: [PATCH 0750/1134] docs(typescript): add jest snapshot update rule --- examples/jest/BUILD.bazel | 2 +- examples/jest/__snapshots__/index.test.js.snap | 3 +++ examples/jest/index.test.js | 4 ++++ examples/jest/jest.bzl | 10 +++++++++- 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 examples/jest/__snapshots__/index.test.js.snap diff --git a/examples/jest/BUILD.bazel b/examples/jest/BUILD.bazel index 664056f62d..95bf5050b5 100644 --- a/examples/jest/BUILD.bazel +++ b/examples/jest/BUILD.bazel @@ -8,7 +8,7 @@ jest_test( "index.js", "index.test.js", "index2.test.js", - ], + ] + glob(["__snapshots__/*.snap"]), jest_config = ":jest.config.js", tags = [ # Need to set the pwd to avoid jest needing a runfiles helper diff --git a/examples/jest/__snapshots__/index.test.js.snap b/examples/jest/__snapshots__/index.test.js.snap new file mode 100644 index 0000000000..17045e1d44 --- /dev/null +++ b/examples/jest/__snapshots__/index.test.js.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`snapshot 1`] = `"test"`; diff --git a/examples/jest/index.test.js b/examples/jest/index.test.js index ab9250ddcf..8e3124654e 100644 --- a/examples/jest/index.test.js +++ b/examples/jest/index.test.js @@ -3,3 +3,7 @@ import indexfile from './index.js'; test('it should work', () => { expect(indexfile).toBe('test'); }); + +test('snapshot', function() { + expect(indexfile).toMatchSnapshot(); +}) diff --git a/examples/jest/jest.bzl b/examples/jest/jest.bzl index ebb0ddf87c..54dd5823e4 100644 --- a/examples/jest/jest.bzl +++ b/examples/jest/jest.bzl @@ -1,6 +1,6 @@ "Shows how you might create a macro for the autogeneratd Jest rule" -load("@npm//jest-cli:index.bzl", _jest_test = "jest_test") +load("@npm//jest-cli:index.bzl", "jest", _jest_test = "jest_test") def jest_test(name, srcs, deps, jest_config, **kwargs): "A macro around the autogenerated jest_test rule" @@ -19,3 +19,11 @@ def jest_test(name, srcs, deps, jest_config, **kwargs): templated_args = templated_args, **kwargs ) + + # This rule is used specifically to update snapshots via `bazel run` + jest( + name = "%s.update" % name, + data = [jest_config] + srcs + deps, + templated_args = templated_args + ["-u"], + **kwargs + ) From 3e2567f78789616d7502e366854d8b854f97bea2 Mon Sep 17 00:00:00 2001 From: Long Ho Date: Sat, 11 Jul 2020 20:21:01 -0400 Subject: [PATCH 0751/1134] docs(typescript): add custom jest reporter for bazel --- examples/jest/jest-reporter.js | 13 +++++++++++++ examples/jest/jest.bzl | 6 ++++-- examples/jest/jest.config.js | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 examples/jest/jest-reporter.js diff --git a/examples/jest/jest-reporter.js b/examples/jest/jest-reporter.js new file mode 100644 index 0000000000..7c52061b81 --- /dev/null +++ b/examples/jest/jest-reporter.js @@ -0,0 +1,13 @@ +class BazelReporter { + onRunComplete(_, results) { + if (results.numFailedTests && results.snapshot.failure) { + console.log(`================================================================================ + + Snapshot failed, you can update the snapshot by running + bazel run ${process.env['TEST_TARGET'].replace(/_bin$/, '')}.update + `); + } + } +} + +module.exports = BazelReporter; diff --git a/examples/jest/jest.bzl b/examples/jest/jest.bzl index 54dd5823e4..38e4808953 100644 --- a/examples/jest/jest.bzl +++ b/examples/jest/jest.bzl @@ -8,14 +8,16 @@ def jest_test(name, srcs, deps, jest_config, **kwargs): "--no-cache", "--no-watchman", "--ci", + "--colors", ] templated_args.extend(["--config", "$(rootpath %s)" % jest_config]) for src in srcs: templated_args.extend(["--runTestsByPath", "$(rootpath %s)" % src]) + data = [jest_config] + srcs + deps + ["jest-reporter.js"] _jest_test( name = name, - data = [jest_config] + srcs + deps, + data = data, templated_args = templated_args, **kwargs ) @@ -23,7 +25,7 @@ def jest_test(name, srcs, deps, jest_config, **kwargs): # This rule is used specifically to update snapshots via `bazel run` jest( name = "%s.update" % name, - data = [jest_config] + srcs + deps, + data = data, templated_args = templated_args + ["-u"], **kwargs ) diff --git a/examples/jest/jest.config.js b/examples/jest/jest.config.js index 4c8c84f89c..f9511f9913 100644 --- a/examples/jest/jest.config.js +++ b/examples/jest/jest.config.js @@ -1,6 +1,6 @@ module.exports = { testEnvironment: 'node', - + reporters: ['default', './jest-reporter'], transform: {'^.+\\.jsx?$': 'babel-jest'}, testMatch: ['**/*.test.js'] }; From 07d9bb8042543833771d9c2e97ee7cf509bf1956 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 13 Jul 2020 07:46:31 -0700 Subject: [PATCH 0752/1134] chore: remove ts_setup_workspace This has been a no-op since 1.0 when we vendored requirejs for ts_devserver in https://github.com/bazelbuild/rules_nodejs/pull/1159/files#diff-fe375cd73fb89504b9b9a9a751518849 We should never add WORKSPACE dependencies so I don't see a value in users carrying this weight. BREAKING CHANGE: ts_setup_workspace was a no-op and has been removed. Simply remove it from your WORKSPACE file. Fixes #2033 --- WORKSPACE | 4 --- e2e/ts_devserver/WORKSPACE | 4 --- e2e/typescript/WORKSPACE | 4 --- examples/angular/WORKSPACE | 5 ---- examples/angular_view_engine/WORKSPACE | 5 ---- examples/app/WORKSPACE | 4 --- examples/protocol_buffers/WORKSPACE | 4 --- examples/user_managed_deps/WORKSPACE | 4 --- examples/web_testing/WORKSPACE | 4 --- packages/create/index.js | 6 ----- packages/create/test.js | 4 --- packages/typescript/index.bzl | 2 -- packages/typescript/index.docs.bzl | 2 -- packages/typescript/install.md | 8 ------ packages/typescript/internal/BUILD.bazel | 1 - .../internal/internal_ts_repositories.bzl | 5 ---- .../typescript/internal/ts_repositories.bzl | 27 ------------------- 17 files changed, 93 deletions(-) delete mode 100644 packages/typescript/internal/ts_repositories.bzl diff --git a/WORKSPACE b/WORKSPACE index 3e3ae85d48..c4c8edc836 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -130,10 +130,6 @@ load("@build_bazel_rules_typescript//internal:ts_repositories.bzl", "ts_setup_de ts_setup_dev_workspace() -load("//packages/typescript/internal:ts_repositories.bzl", "ts_setup_workspace") - -ts_setup_workspace() - # # Install @bazel/cypress dependencies # diff --git a/e2e/ts_devserver/WORKSPACE b/e2e/ts_devserver/WORKSPACE index bc1445c606..0635c4bcf2 100644 --- a/e2e/ts_devserver/WORKSPACE +++ b/e2e/ts_devserver/WORKSPACE @@ -33,10 +33,6 @@ yarn_install( yarn_lock = "//:yarn.lock", ) -load("@npm//@bazel/typescript:index.bzl", "ts_setup_workspace") - -ts_setup_workspace() - load("@npm//@bazel/protractor:package.bzl", "npm_bazel_protractor_dependencies") npm_bazel_protractor_dependencies() diff --git a/e2e/typescript/WORKSPACE b/e2e/typescript/WORKSPACE index 0b3018ed47..17d9e21f50 100644 --- a/e2e/typescript/WORKSPACE +++ b/e2e/typescript/WORKSPACE @@ -32,7 +32,3 @@ yarn_install( package_json = "//:package.json", yarn_lock = "//:yarn.lock", ) - -load("@npm//@bazel/typescript:index.bzl", "ts_setup_workspace") - -ts_setup_workspace() diff --git a/examples/angular/WORKSPACE b/examples/angular/WORKSPACE index 6d66b5eed7..df608243b0 100644 --- a/examples/angular/WORKSPACE +++ b/examples/angular/WORKSPACE @@ -63,11 +63,6 @@ browser_repositories( firefox = True, ) -# Setup the rules_typescript tooolchain -load("@npm//@bazel/typescript:index.bzl", "ts_setup_workspace") - -ts_setup_workspace() - # Setup the rules_sass toolchain load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") diff --git a/examples/angular_view_engine/WORKSPACE b/examples/angular_view_engine/WORKSPACE index c49f3aab53..7e1dba8f19 100644 --- a/examples/angular_view_engine/WORKSPACE +++ b/examples/angular_view_engine/WORKSPACE @@ -70,11 +70,6 @@ browser_repositories( firefox = True, ) -# Setup the rules_typescript tooolchain -load("@npm//@bazel/typescript:index.bzl", "ts_setup_workspace") - -ts_setup_workspace() - # Setup the rules_sass toolchain load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories") diff --git a/examples/app/WORKSPACE b/examples/app/WORKSPACE index 88cd924722..a1da81c8ee 100644 --- a/examples/app/WORKSPACE +++ b/examples/app/WORKSPACE @@ -33,10 +33,6 @@ yarn_install( yarn_lock = "//:yarn.lock", ) -load("@npm//@bazel/typescript:index.bzl", "ts_setup_workspace") - -ts_setup_workspace() - load("@npm//@bazel/protractor:package.bzl", "npm_bazel_protractor_dependencies") npm_bazel_protractor_dependencies() diff --git a/examples/protocol_buffers/WORKSPACE b/examples/protocol_buffers/WORKSPACE index 37711ae037..7d50e2766c 100644 --- a/examples/protocol_buffers/WORKSPACE +++ b/examples/protocol_buffers/WORKSPACE @@ -78,10 +78,6 @@ browser_repositories( firefox = True, ) -load("@npm//@bazel/typescript:index.bzl", "ts_setup_workspace") - -ts_setup_workspace() - load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps") protobuf_deps() diff --git a/examples/user_managed_deps/WORKSPACE b/examples/user_managed_deps/WORKSPACE index 0aeef0bd3a..4d39f66122 100644 --- a/examples/user_managed_deps/WORKSPACE +++ b/examples/user_managed_deps/WORKSPACE @@ -63,7 +63,3 @@ go_register_toolchains() load("@build_bazel_rules_typescript//internal:ts_repositories.bzl", "ts_setup_dev_workspace") ts_setup_dev_workspace() - -load("@build_bazel_rules_nodejs//packages/typescript/internal:ts_repositories.bzl", "ts_setup_workspace") - -ts_setup_workspace() diff --git a/examples/web_testing/WORKSPACE b/examples/web_testing/WORKSPACE index efc71b558f..52e1e1c893 100644 --- a/examples/web_testing/WORKSPACE +++ b/examples/web_testing/WORKSPACE @@ -47,7 +47,3 @@ browser_repositories( chromium = True, firefox = True, ) - -load("@npm//@bazel/typescript:index.bzl", "ts_setup_workspace") - -ts_setup_workspace() diff --git a/packages/create/index.js b/packages/create/index.js index 8f9744b037..24f1bcfba1 100644 --- a/packages/create/index.js +++ b/packages/create/index.js @@ -162,13 +162,7 @@ http_archive( ) ${pkgMgr === 'yarn' ? yarnInstallCmd : npmInstallCmd}`; - if (args['typescript']) { - workspaceContent += ` -# Setup TypeScript toolchain -load("//packages/typescript:index.bzl", "ts_setup_workspace") -ts_setup_workspace()`; - } write('WORKSPACE.bazel', workspaceContent); write('.bazelignore', `node_modules dist diff --git a/packages/create/test.js b/packages/create/test.js index 4055d9c957..105d69c9f7 100644 --- a/packages/create/test.js +++ b/packages/create/test.js @@ -77,7 +77,3 @@ let pkgContent = read('with_ts/package.json'); if (pkgContent.indexOf('"@bazel/typescript": "latest"') < 0) { fail('should install @bazel/typescript dependency', pkgContent); } -wkspContent = read('with_ts/WORKSPACE.bazel'); -if (wkspContent.indexOf('ts_setup_workspace(') < 0) { - fail('should install extra TS repositories'); -} diff --git a/packages/typescript/index.bzl b/packages/typescript/index.bzl index 2eff491f78..de754f0f9a 100644 --- a/packages/typescript/index.bzl +++ b/packages/typescript/index.bzl @@ -20,10 +20,8 @@ Users should not load files under "/internal" load("//packages/typescript/internal:build_defs.bzl", _ts_library = "ts_library_macro") load("//packages/typescript/internal:ts_config.bzl", _ts_config = "ts_config") load("//packages/typescript/internal:ts_project.bzl", _ts_project = "ts_project_macro") -load("//packages/typescript/internal:ts_repositories.bzl", _ts_setup_workspace = "ts_setup_workspace") load("//packages/typescript/internal/devserver:ts_devserver.bzl", _ts_devserver = "ts_devserver_macro") -ts_setup_workspace = _ts_setup_workspace ts_library = _ts_library ts_config = _ts_config ts_devserver = _ts_devserver diff --git a/packages/typescript/index.docs.bzl b/packages/typescript/index.docs.bzl index e218625549..75b6d1ed48 100644 --- a/packages/typescript/index.docs.bzl +++ b/packages/typescript/index.docs.bzl @@ -21,10 +21,8 @@ So this is a copy of index.bzl with macro indirection removed. load("//packages/typescript/internal:build_defs.bzl", _ts_library = "ts_library") load("//packages/typescript/internal:ts_config.bzl", _ts_config = "ts_config") load("//packages/typescript/internal:ts_project.bzl", _ts_project = "ts_project_macro") -load("//packages/typescript/internal:ts_repositories.bzl", _ts_setup_workspace = "ts_setup_workspace") load("//packages/typescript/internal/devserver:ts_devserver.bzl", _ts_devserver = "ts_devserver") -ts_setup_workspace = _ts_setup_workspace ts_library = _ts_library ts_config = _ts_config ts_project = _ts_project diff --git a/packages/typescript/install.md b/packages/typescript/install.md index 6e12ec0c3c..edf4532d62 100644 --- a/packages/typescript/install.md +++ b/packages/typescript/install.md @@ -42,14 +42,6 @@ $ npm install --save-dev @bazel/typescript Watch for any peerDependency warnings - we assume you have already installed the `typescript` package from npm. -Some rules require you to add this to your `WORKSPACE` file: - -```python -# Set up TypeScript toolchain -load("@npm//@bazel/typescript:index.bzl", "ts_setup_workspace") -ts_setup_workspace() -``` - Create a `BUILD.bazel` file in your workspace root. If your `tsconfig.json` file is in the root, use ```python diff --git a/packages/typescript/internal/BUILD.bazel b/packages/typescript/internal/BUILD.bazel index 97a9f0b454..0a95c526ff 100644 --- a/packages/typescript/internal/BUILD.bazel +++ b/packages/typescript/internal/BUILD.bazel @@ -63,7 +63,6 @@ filegroup( "build_defs.bzl", "ts_config.bzl", "ts_project.bzl", - "ts_repositories.bzl", "//packages/typescript/internal/devserver:package_contents", ], visibility = ["//packages/typescript:__subpackages__"], diff --git a/packages/typescript/internal/internal_ts_repositories.bzl b/packages/typescript/internal/internal_ts_repositories.bzl index ed04fe3bad..01dfe7f45d 100644 --- a/packages/typescript/internal/internal_ts_repositories.bzl +++ b/packages/typescript/internal/internal_ts_repositories.bzl @@ -20,13 +20,8 @@ load("@bazel_gazelle//:deps.bzl", "go_repository") def ts_setup_dev_workspace(): """ Setup the toolchain needed for local development, but not needed by users. - - These needs to be in a separate file from ts_setup_workspace() so as not - to leak load statements. """ - ts_setup_workspace() - go_repository( name = "com_github_kylelemons_godebug", commit = "9ff306d4fbead574800b66369df5b6144732d58e", # v1.1.0 diff --git a/packages/typescript/internal/ts_repositories.bzl b/packages/typescript/internal/ts_repositories.bzl deleted file mode 100644 index 7c1519efbd..0000000000 --- a/packages/typescript/internal/ts_repositories.bzl +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"Install toolchain dependencies" - -load("@build_bazel_rules_nodejs//:index.bzl", "check_rules_nodejs_version") - -def ts_setup_workspace(): - """This repository rule should be called from your WORKSPACE file. - - It creates some additional Bazel external repositories that are used internally - by the TypeScript rules. - """ - - # 0.16.8: ng_package fix for packaging binary files - check_rules_nodejs_version("0.16.8") From bc8853660d7608cb13bcb2c428493b0e040e4646 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 14 Jul 2020 15:17:40 +0100 Subject: [PATCH 0753/1134] feat(typescript): support for rootdir on ts_project --- .gitignore | 1 + packages/typescript/internal/ts_project.bzl | 22 +++++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 092aec1f66..c818f24aa8 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ node_modules !/third_party/npm/node_modules yarn-error.log internal/node/_node_bin +.DS_Store \ No newline at end of file diff --git a/packages/typescript/internal/ts_project.bzl b/packages/typescript/internal/ts_project.bzl index 3f1f0f901d..63de42f51c 100644 --- a/packages/typescript/internal/ts_project.bzl +++ b/packages/typescript/internal/ts_project.bzl @@ -14,6 +14,7 @@ _ATTRS = { "deps": attr.label_list(providers = [DeclarationInfo]), "extends": attr.label_list(allow_files = [".json"]), "outdir": attr.string(), + "rootdir": attr.string(), # NB: no restriction on extensions here, because tsc sometimes adds type-check support # for more file kinds (like require('some.json')) and also # if you swap out the `compiler` attribute (like with ngtsc) @@ -56,9 +57,8 @@ def _ts_project_impl(ctx): ctx.file.tsconfig.path, "--outDir", _join(ctx.bin_dir.path, ctx.label.package, ctx.attr.outdir), - # Make sure TypeScript writes outputs to same directory structure as inputs "--rootDir", - ctx.label.package if ctx.label.package else ".", + _join(ctx.label.package, ctx.attr.rootdir) if ctx.label.package else ".", ]) if len(ctx.outputs.typings_outs) > 0: arguments.add_all([ @@ -211,8 +211,9 @@ validate_options = rule( }, ) -def _out_paths(srcs, outdir, ext): - return [_join(outdir, f[:f.rindex(".")] + ext) for f in srcs if not f.endswith(".d.ts") and not f.endswith(".json")] +def _out_paths(srcs, outdir, rootdir, ext): + rootdir_replace_pattern = rootdir + "/" if rootdir else "" + return [_join(outdir, f[:f.rindex(".")].replace(rootdir_replace_pattern, "") + ext) for f in srcs if not f.endswith(".d.ts") and not f.endswith(".json")] def ts_project_macro( name = "tsconfig", @@ -230,6 +231,7 @@ def ts_project_macro( tsc = None, validate = True, outdir = None, + rootdir = None, **kwargs): """Compiles one TypeScript project using `tsc --project` @@ -360,6 +362,9 @@ def ts_project_macro( so if your rule appears in path/to/my/package/BUILD.bazel and outdir = "foo" then the .js files will appear in bazel-out/[arch]/bin/path/to/my/package/foo/*.js + rootdir: a string specifying a subdirectory under the input package which should be consider the + root directory of all the input files. + declaration: if the `declaration` bit is set in the tsconfig. Instructs Bazel to expect a `.d.ts` output for each `.ts` source. source_map: if the `sourceMap` bit is set in the tsconfig. @@ -405,10 +410,11 @@ def ts_project_macro( tsconfig = tsconfig, extends = extends, outdir = outdir, - js_outs = _out_paths(srcs, outdir, ".js") if not emit_declaration_only else [], - map_outs = _out_paths(srcs, outdir, ".js.map") if source_map and not emit_declaration_only else [], - typings_outs = _out_paths(srcs, outdir, ".d.ts") if declaration or composite else [], - typing_maps_outs = _out_paths(srcs, outdir, ".d.ts.map") if declaration_map else [], + rootdir = rootdir, + js_outs = _out_paths(srcs, outdir, rootdir, ".js") if not emit_declaration_only else [], + map_outs = _out_paths(srcs, outdir, rootdir, ".js.map") if source_map and not emit_declaration_only else [], + typings_outs = _out_paths(srcs, outdir, rootdir, ".d.ts") if declaration or composite else [], + typing_maps_outs = _out_paths(srcs, outdir, rootdir, ".d.ts.map") if declaration_map else [], buildinfo_out = tsconfig[:-5] + ".tsbuildinfo" if composite or incremental else None, tsc = tsc, **kwargs From 752b33bc382da202144ad7f2ee1791d215fa419f Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 14 Jul 2020 16:00:08 +0100 Subject: [PATCH 0754/1134] test(typescript): add test case for rootdir_with_value --- .../ts_project/rootdir_with_value/BUILD.bazel | 24 +++++++++++++++++++ .../ts_project/rootdir_with_value/subdir/a.ts | 1 + .../rootdir_with_value/tsconfig.json | 5 ++++ .../ts_project/rootdir_with_value/verify.js | 4 ++++ 4 files changed, 34 insertions(+) create mode 100644 packages/typescript/test/ts_project/rootdir_with_value/BUILD.bazel create mode 100644 packages/typescript/test/ts_project/rootdir_with_value/subdir/a.ts create mode 100644 packages/typescript/test/ts_project/rootdir_with_value/tsconfig.json create mode 100644 packages/typescript/test/ts_project/rootdir_with_value/verify.js diff --git a/packages/typescript/test/ts_project/rootdir_with_value/BUILD.bazel b/packages/typescript/test/ts_project/rootdir_with_value/BUILD.bazel new file mode 100644 index 0000000000..9742ae01a4 --- /dev/null +++ b/packages/typescript/test/ts_project/rootdir_with_value/BUILD.bazel @@ -0,0 +1,24 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_test") +load("//packages/typescript:index.bzl", "ts_project") + +# Ensure that subdir/a.ts produces outDir/a.js +SRCS = [ + "subdir/a.ts", +] + +ts_project( + name = "tsconfig", + srcs = SRCS, + rootdir = "subdir", +) + +nodejs_test( + name = "test", + data = [ + ":tsconfig", + ], + entry_point = "verify.js", + templated_args = [ + "$(locations :tsconfig)", + ], +) diff --git a/packages/typescript/test/ts_project/rootdir_with_value/subdir/a.ts b/packages/typescript/test/ts_project/rootdir_with_value/subdir/a.ts new file mode 100644 index 0000000000..a668b7e336 --- /dev/null +++ b/packages/typescript/test/ts_project/rootdir_with_value/subdir/a.ts @@ -0,0 +1 @@ +export const a: string = 'hello'; diff --git a/packages/typescript/test/ts_project/rootdir_with_value/tsconfig.json b/packages/typescript/test/ts_project/rootdir_with_value/tsconfig.json new file mode 100644 index 0000000000..e98f617914 --- /dev/null +++ b/packages/typescript/test/ts_project/rootdir_with_value/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "types": [] + } +} \ No newline at end of file diff --git a/packages/typescript/test/ts_project/rootdir_with_value/verify.js b/packages/typescript/test/ts_project/rootdir_with_value/verify.js new file mode 100644 index 0000000000..3ac11b00c9 --- /dev/null +++ b/packages/typescript/test/ts_project/rootdir_with_value/verify.js @@ -0,0 +1,4 @@ +const assert = require('assert'); + +const files = process.argv.slice(2); +assert.ok(files.some(f => f.endsWith('rootdir_with_value/a.js')), 'Missing a.js'); From 025875ada3ceca4332b33c82cb339789b4849a11 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 14 Jul 2020 16:02:44 +0100 Subject: [PATCH 0755/1134] chore(typescript): add missing empty finish line for .gitignore and rootdir_with_value/tsconfig.json --- .gitignore | 2 +- .../typescript/test/ts_project/rootdir_with_value/tsconfig.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index c818f24aa8..216f929a0c 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,4 @@ node_modules !/third_party/npm/node_modules yarn-error.log internal/node/_node_bin -.DS_Store \ No newline at end of file +.DS_Store diff --git a/packages/typescript/test/ts_project/rootdir_with_value/tsconfig.json b/packages/typescript/test/ts_project/rootdir_with_value/tsconfig.json index e98f617914..56d9d8ed34 100644 --- a/packages/typescript/test/ts_project/rootdir_with_value/tsconfig.json +++ b/packages/typescript/test/ts_project/rootdir_with_value/tsconfig.json @@ -2,4 +2,4 @@ "compilerOptions": { "types": [] } -} \ No newline at end of file +} From b7bdab7d345842a1bab8a28a944b0b4c7e219704 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Fri, 10 Jul 2020 15:04:26 -0700 Subject: [PATCH 0756/1134] feat(examples): add a vanilla cra app simply ran npx create-react-app@latest --typescript create-react-app --- examples/create-react-app/.gitignore | 23 + examples/create-react-app/README.md | 44 + examples/create-react-app/package.json | 39 + examples/create-react-app/public/favicon.ico | Bin 0 -> 3150 bytes examples/create-react-app/public/index.html | 43 + examples/create-react-app/public/logo192.png | Bin 0 -> 5347 bytes examples/create-react-app/public/logo512.png | Bin 0 -> 9664 bytes .../create-react-app/public/manifest.json | 25 + examples/create-react-app/public/robots.txt | 3 + examples/create-react-app/src/App.css | 38 + examples/create-react-app/src/App.test.tsx | 9 + examples/create-react-app/src/App.tsx | 26 + examples/create-react-app/src/index.css | 13 + examples/create-react-app/src/index.tsx | 17 + examples/create-react-app/src/logo.svg | 7 + .../create-react-app/src/react-app-env.d.ts | 1 + .../create-react-app/src/serviceWorker.ts | 134 + examples/create-react-app/src/setupTests.ts | 5 + examples/create-react-app/tsconfig.json | 25 + examples/create-react-app/yarn.lock | 10891 ++++++++++++++++ 20 files changed, 11343 insertions(+) create mode 100644 examples/create-react-app/.gitignore create mode 100644 examples/create-react-app/README.md create mode 100644 examples/create-react-app/package.json create mode 100644 examples/create-react-app/public/favicon.ico create mode 100644 examples/create-react-app/public/index.html create mode 100644 examples/create-react-app/public/logo192.png create mode 100644 examples/create-react-app/public/logo512.png create mode 100644 examples/create-react-app/public/manifest.json create mode 100644 examples/create-react-app/public/robots.txt create mode 100644 examples/create-react-app/src/App.css create mode 100644 examples/create-react-app/src/App.test.tsx create mode 100644 examples/create-react-app/src/App.tsx create mode 100644 examples/create-react-app/src/index.css create mode 100644 examples/create-react-app/src/index.tsx create mode 100644 examples/create-react-app/src/logo.svg create mode 100644 examples/create-react-app/src/react-app-env.d.ts create mode 100644 examples/create-react-app/src/serviceWorker.ts create mode 100644 examples/create-react-app/src/setupTests.ts create mode 100644 examples/create-react-app/tsconfig.json create mode 100644 examples/create-react-app/yarn.lock diff --git a/examples/create-react-app/.gitignore b/examples/create-react-app/.gitignore new file mode 100644 index 0000000000..4d29575de8 --- /dev/null +++ b/examples/create-react-app/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/examples/create-react-app/README.md b/examples/create-react-app/README.md new file mode 100644 index 0000000000..64e343e184 --- /dev/null +++ b/examples/create-react-app/README.md @@ -0,0 +1,44 @@ +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `yarn start` + +Runs the app in the development mode.
+Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.
+You will also see any lint errors in the console. + +### `yarn test` + +Launches the test runner in the interactive watch mode.
+See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `yarn build` + +Builds the app for production to the `build` folder.
+It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.
+Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `yarn eject` + +**Note: this is a one-way operation. Once you `eject`, you can’t go back!** + +If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. + +You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). diff --git a/examples/create-react-app/package.json b/examples/create-react-app/package.json new file mode 100644 index 0000000000..17d4e45c91 --- /dev/null +++ b/examples/create-react-app/package.json @@ -0,0 +1,39 @@ +{ + "name": "create-react-app", + "version": "0.1.0", + "private": true, + "dependencies": { + "@testing-library/jest-dom": "^4.2.4", + "@testing-library/react": "^9.3.2", + "@testing-library/user-event": "^7.1.2", + "@types/jest": "^24.0.0", + "@types/node": "^12.0.0", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "react": "^16.13.1", + "react-dom": "^16.13.1", + "react-scripts": "3.4.1", + "typescript": "~3.7.2" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": "react-app" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/examples/create-react-app/public/favicon.ico b/examples/create-react-app/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bcd5dfd67cd0361b78123e95c2dd96031f27f743 GIT binary patch literal 3150 zcmaKtc{Ei0AIGn;MZ^<@lHD*OV;K7~W1q3jSjJcqNywTkMOhP*k~Oj?GO|6{m(*C2 zC7JA+hN%%Bp7T4;J@?%2_x=5zbI<2~->=X60stMr0B~{wzpi9D0MG|# zyuANt7z6;uz%?PEfAnimLl^)6h5ARwGXemG2>?hqQv-I^Gpyh$JH}Ag92}3{$a#z& zd`il2Sb#$U&e&4#^4R|GTgk!Qs+x*PCL{2+`uB5mqtnqLaaw`*H2oqJ?XF(zUACc2 zSibBrdQzcidqv*TK}rpEv1ie&;Famq2IK5%4c}1Jt2b1x_{y1C!?EU)@`_F)yN*NK z)(u03@%g%uDawwXGAMm%EnP9FgoucUedioDwL~{6RVO@A-Q$+pwVRR%WYR>{K3E&Q zzqzT!EEZ$_NHGYM6&PK#CGUV$pTWsiI5#~m>htoJ!vbc0=gm3H8sz8KzIiVN5xdCT z%;}`UH2Pc8))1VS-unh?v4*H*NIy5On{MRKw7BTmOO9oE2UApwkCl9Z?^dod9M^#w z51tEZhf+#dpTo#GDDy#kuzoIjMjZ?%v*h$ z*vwUMOjGc?R0(FjLWkMD)kca4z6~H45FIzQ!Zzu&-yWyMdCBsDr2`l}Q{8fH$H@O< z$&snNzbqLk?(GIe?!PVh?F~2qk4z^rMcp$P^hw^rUPjyCyoNTRw%;hNOwrCoN?G0E z!wT^=4Loa9@O{t;Wk(Nj=?ms1Z?UN_;21m%sUm?uib=pg&x|u)8pP#l--$;B9l47n zUUnMV0sXLe*@Gvy>XWjRoqc2tOzgYn%?g@Lb8C&WsxV1Kjssh^ZBs*Ysr+E6%tsC_ zCo-)hkYY=Bn?wMB4sqm?WS>{kh<6*DO)vXnQpQ9`-_qF6!#b;3Nf@;#B>e2j$yokl6F|9p1<($2 z=WSr%)Z?^|r6njhgbuMrIN>8JE05u0x5t@_dEfbGn9r0hK4c2vp>(*$GXsjeLL_uz zWpyfUgdv!~-2N;llVzik#s2*XB*%7u8(^sJv&T3pzaR&<9({17Zs~UY>#ugZZkHBs zD+>0_an$?}utGp$dcXtyFHnTQZJ}SF=oZ}X07dz~K>^o(vjTzw8ZQc!Fw1W=&Z?9% zv63|~l}70sJbY?H8ON8j)w5=6OpXuaZ}YT03`2%u8{;B0Vafo_iY7&BiQTbRkdJBYL}?%ATfmc zLG$uXt$@3j#OIjALdT&Ut$=9F8cgV{w_f5eS)PjoVi z&oemp-SKJ~UuGuCP1|iY?J^S&P z)-IG?O-*=z6kfZrX5H*G=aQ{ZaqnOqP@&+_;nq@mA>EcjgxrYX8EK|Iq4&E&rxR?R z8N$QOdRwY zr{P`O)=87>YLHtFfGXW z6P)ucrhj~It_9w<^v5>T6N1U}+BkS))=WX*2JY=}^b2czGhH<`?`(}}qMcpPx_%>M zM|fs(+I1m&_h(zqp-HgP>re$2O^o$q)xu#fl0ivOJE({duU)a*OD(eYgSi^cdTn}pqcPM(;S)2%1By^Wh%-CaC%>d9hi`7J zaxL7@;nhA>PE%s99&;z{8>VFgf{u!(-B-x7Of6ueme+ScryL`h(^qKE)DtieWY>-7 zgB)VJESQS4*1LU(2&@pgLvSt{(((C?K_V(rQk``i&5}ZPG;G^FiPlZ$7|-vEmMWlU z5lQ%iK2nu=h2wd_7>gK@vX=*AG+u~rQP$NwPC`ZA?4nh{3tui1x@bT6-;Rk3yDQ>d z?3qRD#+PeV7#FAa>s`Xwxsx_oRFcN$StW2=CW`=qObsT?SD^#^jM1Yk}PSPxJ zG@-_mnNU_)vM|iLRSI>UMp|hatyS}17R{10IuL0TLlupt>9dRs_SPQbv7BLYyC#qv16E-y@XZ= z-!p7I%#r-BVi$nQq3&ssRc_IC%R6$tA&^s_l46880~Wst3@>(|EO<}T4~ci~#!=e; zD)B>o%1+$ksURD1p7I-<3ehlFyVkqrySf&gg>Bp0Z9?JaG|gyTZ{Cb8SdvAWVmFX7v2ohs!OCc!Udk zUITUpmZ33rKLI#(&lDj}cKA#dpL4Fil=$5pu_wi1XJR!llw` zSItPBDEdMHk2>c7#%lBxZHHvtVUOZ$}v?=?AT~9!Jcqa@IJGuMg(s^7r>pcTrd)pS`{5Cu8WPey` z9)!!OUUY@L%9Q+bZa*S5`3f_|lFCPN6kdp_M2>{le8;cn^XUsPa+TUk47qd6)IBR% zk*&Ip?!Ge_gmmdj)BX}P_5o@VI2*wbZ^>UhFju}0gQZh!pP%4XT9{@w;G#b3XK8sN zF(7i$Jv(IM$8Akys9dhP^^~H2(7BfJp}yDW1#@!CL-!mGcSCnJ599WK9MV@yo_u$v MDeX2GIKR{Qf5okjU;qFB literal 0 HcmV?d00001 diff --git a/examples/create-react-app/public/index.html b/examples/create-react-app/public/index.html new file mode 100644 index 0000000000..aa069f27cb --- /dev/null +++ b/examples/create-react-app/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + React App + + + +
+ + + diff --git a/examples/create-react-app/public/logo192.png b/examples/create-react-app/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 zcmZWtbyO6NvR-oO24RV%BvuJ&=?+<7=`LvyB&A_#M7mSDYw1v6DJkiYl9XjT!%$dLEBTQ8R9|wd3008in6lFF3GV-6mLi?MoP_y~}QUnaDCHI#t z7w^m$@6DI)|C8_jrT?q=f8D?0AM?L)Z}xAo^e^W>t$*Y0KlT5=@bBjT9kxb%-KNdk zeOS1tKO#ChhG7%{ApNBzE2ZVNcxbrin#E1TiAw#BlUhXllzhN$qWez5l;h+t^q#Eav8PhR2|T}y5kkflaK`ba-eoE+Z2q@o6P$)=&` z+(8}+-McnNO>e#$Rr{32ngsZIAX>GH??tqgwUuUz6kjns|LjsB37zUEWd|(&O!)DY zQLrq%Y>)Y8G`yYbYCx&aVHi@-vZ3|ebG!f$sTQqMgi0hWRJ^Wc+Ibv!udh_r%2|U) zPi|E^PK?UE!>_4`f`1k4hqqj_$+d!EB_#IYt;f9)fBOumGNyglU(ofY`yHq4Y?B%- zp&G!MRY<~ajTgIHErMe(Z8JG*;D-PJhd@RX@QatggM7+G(Lz8eZ;73)72Hfx5KDOE zkT(m}i2;@X2AT5fW?qVp?@WgN$aT+f_6eo?IsLh;jscNRp|8H}Z9p_UBO^SJXpZew zEK8fz|0Th%(Wr|KZBGTM4yxkA5CFdAj8=QSrT$fKW#tweUFqr0TZ9D~a5lF{)%-tTGMK^2tz(y2v$i%V8XAxIywrZCp=)83p(zIk6@S5AWl|Oa2hF`~~^W zI;KeOSkw1O#TiQ8;U7OPXjZM|KrnN}9arP)m0v$c|L)lF`j_rpG(zW1Qjv$=^|p*f z>)Na{D&>n`jOWMwB^TM}slgTEcjxTlUby89j1)|6ydRfWERn3|7Zd2&e7?!K&5G$x z`5U3uFtn4~SZq|LjFVrz$3iln-+ucY4q$BC{CSm7Xe5c1J<=%Oagztj{ifpaZk_bQ z9Sb-LaQMKp-qJA*bP6DzgE3`}*i1o3GKmo2pn@dj0;He}F=BgINo};6gQF8!n0ULZ zL>kC0nPSFzlcB7p41doao2F7%6IUTi_+!L`MM4o*#Y#0v~WiO8uSeAUNp=vA2KaR&=jNR2iVwG>7t%sG2x_~yXzY)7K& zk3p+O0AFZ1eu^T3s};B%6TpJ6h-Y%B^*zT&SN7C=N;g|#dGIVMSOru3iv^SvO>h4M=t-N1GSLLDqVTcgurco6)3&XpU!FP6Hlrmj}f$ zp95;b)>M~`kxuZF3r~a!rMf4|&1=uMG$;h^g=Kl;H&Np-(pFT9FF@++MMEx3RBsK?AU0fPk-#mdR)Wdkj)`>ZMl#^<80kM87VvsI3r_c@_vX=fdQ`_9-d(xiI z4K;1y1TiPj_RPh*SpDI7U~^QQ?%0&!$Sh#?x_@;ag)P}ZkAik{_WPB4rHyW#%>|Gs zdbhyt=qQPA7`?h2_8T;-E6HI#im9K>au*(j4;kzwMSLgo6u*}-K`$_Gzgu&XE)udQ zmQ72^eZd|vzI)~!20JV-v-T|<4@7ruqrj|o4=JJPlybwMg;M$Ud7>h6g()CT@wXm` zbq=A(t;RJ^{Xxi*Ff~!|3!-l_PS{AyNAU~t{h;(N(PXMEf^R(B+ZVX3 z8y0;0A8hJYp@g+c*`>eTA|3Tgv9U8#BDTO9@a@gVMDxr(fVaEqL1tl?md{v^j8aUv zm&%PX4^|rX|?E4^CkplWWNv*OKM>DxPa z!RJ)U^0-WJMi)Ksc!^ixOtw^egoAZZ2Cg;X7(5xZG7yL_;UJ#yp*ZD-;I^Z9qkP`} zwCTs0*%rIVF1sgLervtnUo&brwz?6?PXRuOCS*JI-WL6GKy7-~yi0giTEMmDs_-UX zo=+nFrW_EfTg>oY72_4Z0*uG>MnXP=c0VpT&*|rvv1iStW;*^={rP1y?Hv+6R6bxFMkxpWkJ>m7Ba{>zc_q zEefC3jsXdyS5??Mz7IET$Kft|EMNJIv7Ny8ZOcKnzf`K5Cd)&`-fTY#W&jnV0l2vt z?Gqhic}l}mCv1yUEy$%DP}4AN;36$=7aNI^*AzV(eYGeJ(Px-j<^gSDp5dBAv2#?; zcMXv#aj>%;MiG^q^$0MSg-(uTl!xm49dH!{X0){Ew7ThWV~Gtj7h%ZD zVN-R-^7Cf0VH!8O)uUHPL2mO2tmE*cecwQv_5CzWeh)ykX8r5Hi`ehYo)d{Jnh&3p z9ndXT$OW51#H5cFKa76c<%nNkP~FU93b5h-|Cb}ScHs@4Q#|}byWg;KDMJ#|l zE=MKD*F@HDBcX@~QJH%56eh~jfPO-uKm}~t7VkHxHT;)4sd+?Wc4* z>CyR*{w@4(gnYRdFq=^(#-ytb^5ESD?x<0Skhb%Pt?npNW1m+Nv`tr9+qN<3H1f<% zZvNEqyK5FgPsQ`QIu9P0x_}wJR~^CotL|n zk?dn;tLRw9jJTur4uWoX6iMm914f0AJfB@C74a;_qRrAP4E7l890P&{v<}>_&GLrW z)klculcg`?zJO~4;BBAa=POU%aN|pmZJn2{hA!d!*lwO%YSIzv8bTJ}=nhC^n}g(ld^rn#kq9Z3)z`k9lvV>y#!F4e{5c$tnr9M{V)0m(Z< z#88vX6-AW7T2UUwW`g<;8I$Jb!R%z@rCcGT)-2k7&x9kZZT66}Ztid~6t0jKb&9mm zpa}LCb`bz`{MzpZR#E*QuBiZXI#<`5qxx=&LMr-UUf~@dRk}YI2hbMsAMWOmDzYtm zjof16D=mc`^B$+_bCG$$@R0t;e?~UkF?7<(vkb70*EQB1rfUWXh$j)R2)+dNAH5%R zEBs^?N;UMdy}V};59Gu#0$q53$}|+q7CIGg_w_WlvE}AdqoS<7DY1LWS9?TrfmcvT zaypmplwn=P4;a8-%l^e?f`OpGb}%(_mFsL&GywhyN(-VROj`4~V~9bGv%UhcA|YW% zs{;nh@aDX11y^HOFXB$a7#Sr3cEtNd4eLm@Y#fc&j)TGvbbMwze zXtekX_wJqxe4NhuW$r}cNy|L{V=t#$%SuWEW)YZTH|!iT79k#?632OFse{+BT_gau zJwQcbH{b}dzKO?^dV&3nTILYlGw{27UJ72ZN){BILd_HV_s$WfI2DC<9LIHFmtyw? zQ;?MuK7g%Ym+4e^W#5}WDLpko%jPOC=aN)3!=8)s#Rnercak&b3ESRX3z{xfKBF8L z5%CGkFmGO@x?_mPGlpEej!3!AMddChabyf~nJNZxx!D&{@xEb!TDyvqSj%Y5@A{}9 zRzoBn0?x}=krh{ok3Nn%e)#~uh;6jpezhA)ySb^b#E>73e*frBFu6IZ^D7Ii&rsiU z%jzygxT-n*joJpY4o&8UXr2s%j^Q{?e-voloX`4DQyEK+DmrZh8A$)iWL#NO9+Y@!sO2f@rI!@jN@>HOA< z?q2l{^%mY*PNx2FoX+A7X3N}(RV$B`g&N=e0uvAvEN1W^{*W?zT1i#fxuw10%~))J zjx#gxoVlXREWZf4hRkgdHx5V_S*;p-y%JtGgQ4}lnA~MBz-AFdxUxU1RIT$`sal|X zPB6sEVRjGbXIP0U+?rT|y5+ev&OMX*5C$n2SBPZr`jqzrmpVrNciR0e*Wm?fK6DY& zl(XQZ60yWXV-|Ps!A{EF;=_z(YAF=T(-MkJXUoX zI{UMQDAV2}Ya?EisdEW;@pE6dt;j0fg5oT2dxCi{wqWJ<)|SR6fxX~5CzblPGr8cb zUBVJ2CQd~3L?7yfTpLNbt)He1D>*KXI^GK%<`bq^cUq$Q@uJifG>p3LU(!H=C)aEL zenk7pVg}0{dKU}&l)Y2Y2eFMdS(JS0}oZUuVaf2+K*YFNGHB`^YGcIpnBlMhO7d4@vV zv(@N}(k#REdul8~fP+^F@ky*wt@~&|(&&meNO>rKDEnB{ykAZ}k>e@lad7to>Ao$B zz<1(L=#J*u4_LB=8w+*{KFK^u00NAmeNN7pr+Pf+N*Zl^dO{LM-hMHyP6N!~`24jd zXYP|Ze;dRXKdF2iJG$U{k=S86l@pytLx}$JFFs8e)*Vi?aVBtGJ3JZUj!~c{(rw5>vuRF$`^p!P8w1B=O!skwkO5yd4_XuG^QVF z`-r5K7(IPSiKQ2|U9+`@Js!g6sfJwAHVd|s?|mnC*q zp|B|z)(8+mxXyxQ{8Pg3F4|tdpgZZSoU4P&9I8)nHo1@)9_9u&NcT^FI)6|hsAZFk zZ+arl&@*>RXBf-OZxhZerOr&dN5LW9@gV=oGFbK*J+m#R-|e6(Loz(;g@T^*oO)0R zN`N=X46b{7yk5FZGr#5&n1!-@j@g02g|X>MOpF3#IjZ_4wg{dX+G9eqS+Es9@6nC7 zD9$NuVJI}6ZlwtUm5cCAiYv0(Yi{%eH+}t)!E^>^KxB5^L~a`4%1~5q6h>d;paC9c zTj0wTCKrhWf+F#5>EgX`sl%POl?oyCq0(w0xoL?L%)|Q7d|Hl92rUYAU#lc**I&^6p=4lNQPa0 znQ|A~i0ip@`B=FW-Q;zh?-wF;Wl5!+q3GXDu-x&}$gUO)NoO7^$BeEIrd~1Dh{Tr` z8s<(Bn@gZ(mkIGnmYh_ehXnq78QL$pNDi)|QcT*|GtS%nz1uKE+E{7jdEBp%h0}%r zD2|KmYGiPa4;md-t_m5YDz#c*oV_FqXd85d@eub?9N61QuYcb3CnVWpM(D-^|CmkL z(F}L&N7qhL2PCq)fRh}XO@U`Yn<?TNGR4L(mF7#4u29{i~@k;pLsgl({YW5`Mo+p=zZn3L*4{JU;++dG9 X@eDJUQo;Ye2mwlRs?y0|+_a0zY+Zo%Dkae}+MySoIppb75o?vUW_?)>@g{U2`ERQIXV zeY$JrWnMZ$QC<=ii4X|@0H8`si75jB(ElJb00HAB%>SlLR{!zO|C9P3zxw_U8?1d8uRZ=({Ga4shyN}3 zAK}WA(ds|``G4jA)9}Bt2Hy0+f3rV1E6b|@?hpGA=PI&r8)ah|)I2s(P5Ic*Ndhn^ z*T&j@gbCTv7+8rpYbR^Ty}1AY)YH;p!m948r#%7x^Z@_-w{pDl|1S4`EM3n_PaXvK z1JF)E3qy$qTj5Xs{jU9k=y%SQ0>8E$;x?p9ayU0bZZeo{5Z@&FKX>}s!0+^>C^D#z z>xsCPvxD3Z=dP}TTOSJhNTPyVt14VCQ9MQFN`rn!c&_p?&4<5_PGm4a;WS&1(!qKE z_H$;dDdiPQ!F_gsN`2>`X}$I=B;={R8%L~`>RyKcS$72ai$!2>d(YkciA^J0@X%G4 z4cu!%Ps~2JuJ8ex`&;Fa0NQOq_nDZ&X;^A=oc1&f#3P1(!5il>6?uK4QpEG8z0Rhu zvBJ+A9RV?z%v?!$=(vcH?*;vRs*+PPbOQ3cdPr5=tOcLqmfx@#hOqX0iN)wTTO21jH<>jpmwRIAGw7`a|sl?9y9zRBh>(_%| zF?h|P7}~RKj?HR+q|4U`CjRmV-$mLW>MScKnNXiv{vD3&2@*u)-6P@h0A`eeZ7}71 zK(w%@R<4lLt`O7fs1E)$5iGb~fPfJ?WxhY7c3Q>T-w#wT&zW522pH-B%r5v#5y^CF zcC30Se|`D2mY$hAlIULL%-PNXgbbpRHgn<&X3N9W!@BUk@9g*P5mz-YnZBb*-$zMM z7Qq}ic0mR8n{^L|=+diODdV}Q!gwr?y+2m=3HWwMq4z)DqYVg0J~^}-%7rMR@S1;9 z7GFj6K}i32X;3*$SmzB&HW{PJ55kT+EI#SsZf}bD7nW^Haf}_gXciYKX{QBxIPSx2Ma? zHQqgzZq!_{&zg{yxqv3xq8YV+`S}F6A>Gtl39_m;K4dA{pP$BW0oIXJ>jEQ!2V3A2 zdpoTxG&V=(?^q?ZTj2ZUpDUdMb)T?E$}CI>r@}PFPWD9@*%V6;4Ag>D#h>!s)=$0R zRXvdkZ%|c}ubej`jl?cS$onl9Tw52rBKT)kgyw~Xy%z62Lr%V6Y=f?2)J|bZJ5(Wx zmji`O;_B+*X@qe-#~`HFP<{8$w@z4@&`q^Q-Zk8JG3>WalhnW1cvnoVw>*R@c&|o8 zZ%w!{Z+MHeZ*OE4v*otkZqz11*s!#s^Gq>+o`8Z5 z^i-qzJLJh9!W-;SmFkR8HEZJWiXk$40i6)7 zZpr=k2lp}SasbM*Nbn3j$sn0;rUI;%EDbi7T1ZI4qL6PNNM2Y%6{LMIKW+FY_yF3) zSKQ2QSujzNMSL2r&bYs`|i2Dnn z=>}c0>a}>|uT!IiMOA~pVT~R@bGlm}Edf}Kq0?*Af6#mW9f9!}RjW7om0c9Qlp;yK z)=XQs(|6GCadQbWIhYF=rf{Y)sj%^Id-ARO0=O^Ad;Ph+ z0?$eE1xhH?{T$QI>0JP75`r)U_$#%K1^BQ8z#uciKf(C701&RyLQWBUp*Q7eyn76} z6JHpC9}R$J#(R0cDCkXoFSp;j6{x{b&0yE@P7{;pCEpKjS(+1RQy38`=&Yxo%F=3y zCPeefABp34U-s?WmU#JJw23dcC{sPPFc2#J$ZgEN%zod}J~8dLm*fx9f6SpO zn^Ww3bt9-r0XaT2a@Wpw;C23XM}7_14#%QpubrIw5aZtP+CqIFmsG4`Cm6rfxl9n5 z7=r2C-+lM2AB9X0T_`?EW&Byv&K?HS4QLoylJ|OAF z`8atBNTzJ&AQ!>sOo$?^0xj~D(;kS$`9zbEGd>f6r`NC3X`tX)sWgWUUOQ7w=$TO&*j;=u%25ay-%>3@81tGe^_z*C7pb9y*Ed^H3t$BIKH2o+olp#$q;)_ zfpjCb_^VFg5fU~K)nf*d*r@BCC>UZ!0&b?AGk_jTPXaSnCuW110wjHPPe^9R^;jo3 zwvzTl)C`Zl5}O2}3lec=hZ*$JnkW#7enKKc)(pM${_$9Hc=Sr_A9Biwe*Y=T?~1CK z6eZ9uPICjy-sMGbZl$yQmpB&`ouS8v{58__t0$JP%i3R&%QR3ianbZqDs<2#5FdN@n5bCn^ZtH992~5k(eA|8|@G9u`wdn7bnpg|@{m z^d6Y`*$Zf2Xr&|g%sai#5}Syvv(>Jnx&EM7-|Jr7!M~zdAyjt*xl;OLhvW-a%H1m0 z*x5*nb=R5u><7lyVpNAR?q@1U59 zO+)QWwL8t zyip?u_nI+K$uh{y)~}qj?(w0&=SE^8`_WMM zTybjG=999h38Yes7}-4*LJ7H)UE8{mE(6;8voE+TYY%33A>S6`G_95^5QHNTo_;Ao ztIQIZ_}49%{8|=O;isBZ?=7kfdF8_@azfoTd+hEJKWE!)$)N%HIe2cplaK`ry#=pV z0q{9w-`i0h@!R8K3GC{ivt{70IWG`EP|(1g7i_Q<>aEAT{5(yD z=!O?kq61VegV+st@XCw475j6vS)_z@efuqQgHQR1T4;|-#OLZNQJPV4k$AX1Uk8Lm z{N*b*ia=I+MB}kWpupJ~>!C@xEN#Wa7V+7{m4j8c?)ChV=D?o~sjT?0C_AQ7B-vxqX30s0I_`2$in86#`mAsT-w?j{&AL@B3$;P z31G4(lV|b}uSDCIrjk+M1R!X7s4Aabn<)zpgT}#gE|mIvV38^ODy@<&yflpCwS#fRf9ZX3lPV_?8@C5)A;T zqmouFLFk;qIs4rA=hh=GL~sCFsXHsqO6_y~*AFt939UYVBSx1s(=Kb&5;j7cSowdE;7()CC2|-i9Zz+_BIw8#ll~-tyH?F3{%`QCsYa*b#s*9iCc`1P1oC26?`g<9))EJ3%xz+O!B3 zZ7$j~To)C@PquR>a1+Dh>-a%IvH_Y7^ys|4o?E%3`I&ADXfC8++hAdZfzIT#%C+Jz z1lU~K_vAm0m8Qk}K$F>|>RPK%<1SI0(G+8q~H zAsjezyP+u!Se4q3GW)`h`NPSRlMoBjCzNPesWJwVTY!o@G8=(6I%4XHGaSiS3MEBK zhgGFv6Jc>L$4jVE!I?TQuwvz_%CyO!bLh94nqK11C2W$*aa2ueGopG8DnBICVUORP zgytv#)49fVXDaR$SukloYC3u7#5H)}1K21=?DKj^U)8G;MS)&Op)g^zR2($<>C*zW z;X7`hLxiIO#J`ANdyAOJle4V%ppa*(+0i3w;8i*BA_;u8gOO6)MY`ueq7stBMJTB; z-a0R>hT*}>z|Gg}@^zDL1MrH+2hsR8 zHc}*9IvuQC^Ju)^#Y{fOr(96rQNPNhxc;mH@W*m206>Lo<*SaaH?~8zg&f&%YiOEG zGiz?*CP>Bci}!WiS=zj#K5I}>DtpregpP_tfZtPa(N<%vo^#WCQ5BTv0vr%Z{)0q+ z)RbfHktUm|lg&U3YM%lMUM(fu}i#kjX9h>GYctkx9Mt_8{@s%!K_EI zScgwy6%_fR?CGJQtmgNAj^h9B#zmaMDWgH55pGuY1Gv7D z;8Psm(vEPiwn#MgJYu4Ty9D|h!?Rj0ddE|&L3S{IP%H4^N!m`60ZwZw^;eg4sk6K{ ziA^`Sbl_4~f&Oo%n;8Ye(tiAdlZKI!Z=|j$5hS|D$bDJ}p{gh$KN&JZYLUjv4h{NY zBJ>X9z!xfDGY z+oh_Z&_e#Q(-}>ssZfm=j$D&4W4FNy&-kAO1~#3Im;F)Nwe{(*75(p=P^VI?X0GFakfh+X-px4a%Uw@fSbmp9hM1_~R>?Z8+ ziy|e9>8V*`OP}4x5JjdWp}7eX;lVxp5qS}0YZek;SNmm7tEeSF*-dI)6U-A%m6YvCgM(}_=k#a6o^%-K4{`B1+}O4x zztDT%hVb;v#?j`lTvlFQ3aV#zkX=7;YFLS$uIzb0E3lozs5`Xy zi~vF+%{z9uLjKvKPhP%x5f~7-Gj+%5N`%^=yk*Qn{`> z;xj&ROY6g`iy2a@{O)V(jk&8#hHACVDXey5a+KDod_Z&}kHM}xt7}Md@pil{2x7E~ zL$k^d2@Ec2XskjrN+IILw;#7((abu;OJii&v3?60x>d_Ma(onIPtcVnX@ELF0aL?T zSmWiL3(dOFkt!x=1O!_0n(cAzZW+3nHJ{2S>tgSK?~cFha^y(l@-Mr2W$%MN{#af8J;V*>hdq!gx=d0h$T7l}>91Wh07)9CTX zh2_ZdQCyFOQ)l(}gft0UZG`Sh2`x-w`5vC2UD}lZs*5 zG76$akzn}Xi))L3oGJ75#pcN=cX3!=57$Ha=hQ2^lwdyU#a}4JJOz6ddR%zae%#4& za)bFj)z=YQela(F#Y|Q#dp}PJghITwXouVaMq$BM?K%cXn9^Y@g43$=O)F&ZlOUom zJiad#dea;-eywBA@e&D6Pdso1?2^(pXiN91?jvcaUyYoKUmvl5G9e$W!okWe*@a<^ z8cQQ6cNSf+UPDx%?_G4aIiybZHHagF{;IcD(dPO!#=u zWfqLcPc^+7Uu#l(Bpxft{*4lv#*u7X9AOzDO z1D9?^jIo}?%iz(_dwLa{ex#T}76ZfN_Z-hwpus9y+4xaUu9cX}&P{XrZVWE{1^0yw zO;YhLEW!pJcbCt3L8~a7>jsaN{V3>tz6_7`&pi%GxZ=V3?3K^U+*ryLSb)8^IblJ0 zSRLNDvIxt)S}g30?s_3NX>F?NKIGrG_zB9@Z>uSW3k2es_H2kU;Rnn%j5qP)!XHKE zPB2mHP~tLCg4K_vH$xv`HbRsJwbZMUV(t=ez;Ec(vyHH)FbfLg`c61I$W_uBB>i^r z&{_P;369-&>23R%qNIULe=1~T$(DA`ev*EWZ6j(B$(te}x1WvmIll21zvygkS%vwG zzkR6Z#RKA2!z!C%M!O>!=Gr0(J0FP=-MN=5t-Ir)of50y10W}j`GtRCsXBakrKtG& zazmITDJMA0C51&BnLY)SY9r)NVTMs);1<=oosS9g31l{4ztjD3#+2H7u_|66b|_*O z;Qk6nalpqdHOjx|K&vUS_6ITgGll;TdaN*ta=M_YtyC)I9Tmr~VaPrH2qb6sd~=AcIxV+%z{E&0@y=DPArw zdV7z(G1hBx7hd{>(cr43^WF%4Y@PXZ?wPpj{OQ#tvc$pABJbvPGvdR`cAtHn)cSEV zrpu}1tJwQ3y!mSmH*uz*x0o|CS<^w%&KJzsj~DU0cLQUxk5B!hWE>aBkjJle8z~;s z-!A=($+}Jq_BTK5^B!`R>!MulZN)F=iXXeUd0w5lUsE5VP*H*oCy(;?S$p*TVvTxwAeWFB$jHyb0593)$zqalVlDX=GcCN1gU0 zlgU)I$LcXZ8Oyc2TZYTPu@-;7<4YYB-``Qa;IDcvydIA$%kHhJKV^m*-zxcvU4viy&Kr5GVM{IT>WRywKQ9;>SEiQD*NqplK-KK4YR`p0@JW)n_{TU3bt0 zim%;(m1=#v2}zTps=?fU5w^(*y)xT%1vtQH&}50ZF!9YxW=&7*W($2kgKyz1mUgfs zfV<*XVVIFnohW=|j+@Kfo!#liQR^x>2yQdrG;2o8WZR+XzU_nG=Ed2rK?ntA;K5B{ z>M8+*A4!Jm^Bg}aW?R?6;@QG@uQ8&oJ{hFixcfEnJ4QH?A4>P=q29oDGW;L;= z9-a0;g%c`C+Ai!UmK$NC*4#;Jp<1=TioL=t^YM)<<%u#hnnfSS`nq63QKGO1L8RzX z@MFDqs1z ztYmxDl@LU)5acvHk)~Z`RW7=aJ_nGD!mOSYD>5Odjn@TK#LY{jf?+piB5AM-CAoT_ z?S-*q7}wyLJzK>N%eMPuFgN)Q_otKP;aqy=D5f!7<=n(lNkYRXVpkB{TAYLYg{|(jtRqYmg$xH zjmq?B(RE4 zQx^~Pt}gxC2~l=K$$-sYy_r$CO(d=+b3H1MB*y_5g6WLaWTXn+TKQ|hNY^>Mp6k*$ zwkovomhu776vQATqT4blf~g;TY(MWCrf^^yfWJvSAB$p5l;jm@o#=!lqw+Lqfq>X= z$6~kxfm7`3q4zUEB;u4qa#BdJxO!;xGm)wwuisj{0y2x{R(IGMrsIzDY9LW>m!Y`= z04sx3IjnYvL<4JqxQ8f7qYd0s2Ig%`ytYPEMKI)s(LD}D@EY>x`VFtqvnADNBdeao zC96X+MxnwKmjpg{U&gP3HE}1=s!lv&D{6(g_lzyF3A`7Jn*&d_kL<;dAFx!UZ>hB8 z5A*%LsAn;VLp>3${0>M?PSQ)9s3}|h2e?TG4_F{}{Cs>#3Q*t$(CUc}M)I}8cPF6% z=+h(Kh^8)}gj(0}#e7O^FQ6`~fd1#8#!}LMuo3A0bN`o}PYsm!Y}sdOz$+Tegc=qT z8x`PH$7lvnhJp{kHWb22l;@7B7|4yL4UOOVM0MP_>P%S1Lnid)+k9{+3D+JFa#Pyf zhVc#&df87APl4W9X)F3pGS>@etfl=_E5tBcVoOfrD4hmVeTY-cj((pkn%n@EgN{0f zwb_^Rk0I#iZuHK!l*lN`ceJn(sI{$Fq6nN& zE<-=0_2WN}m+*ivmIOxB@#~Q-cZ>l136w{#TIJe478`KE7@=a{>SzPHsKLzYAyBQO zAtuuF$-JSDy_S@6GW0MOE~R)b;+0f%_NMrW(+V#c_d&U8Z9+ec4=HmOHw?gdjF(Lu zzra83M_BoO-1b3;9`%&DHfuUY)6YDV21P$C!Rc?mv&{lx#f8oc6?0?x zK08{WP65?#>(vPfA-c=MCY|%*1_<3D4NX zeVTi-JGl2uP_2@0F{G({pxQOXt_d{g_CV6b?jNpfUG9;8yle-^4KHRvZs-_2siata zt+d_T@U$&t*xaD22(fH(W1r$Mo?3dc%Tncm=C6{V9y{v&VT#^1L04vDrLM9qBoZ4@ z6DBN#m57hX7$C(=#$Y5$bJmwA$T8jKD8+6A!-IJwA{WOfs%s}yxUw^?MRZjF$n_KN z6`_bGXcmE#5e4Ym)aQJ)xg3Pg0@k`iGuHe?f(5LtuzSq=nS^5z>vqU0EuZ&75V%Z{ zYyhRLN^)$c6Ds{f7*FBpE;n5iglx5PkHfWrj3`x^j^t z7ntuV`g!9Xg#^3!x)l*}IW=(Tz3>Y5l4uGaB&lz{GDjm2D5S$CExLT`I1#n^lBH7Y zDgpMag@`iETKAI=p<5E#LTkwzVR@=yY|uBVI1HG|8h+d;G-qfuj}-ZR6fN>EfCCW z9~wRQoAPEa#aO?3h?x{YvV*d+NtPkf&4V0k4|L=uj!U{L+oLa(z#&iuhJr3-PjO3R z5s?=nn_5^*^Rawr>>Nr@K(jwkB#JK-=+HqwfdO<+P5byeim)wvqGlP-P|~Nse8=XF zz`?RYB|D6SwS}C+YQv+;}k6$-%D(@+t14BL@vM z2q%q?f6D-A5s$_WY3{^G0F131bbh|g!}#BKw=HQ7mx;Dzg4Z*bTLQSfo{ed{4}NZW zfrRm^Ca$rlE{Ue~uYv>R9{3smwATcdM_6+yWIO z*ZRH~uXE@#p$XTbCt5j7j2=86e{9>HIB6xDzV+vAo&B?KUiMP|ttOElepnl%|DPqL b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/examples/create-react-app/public/manifest.json b/examples/create-react-app/public/manifest.json new file mode 100644 index 0000000000..080d6c77ac --- /dev/null +++ b/examples/create-react-app/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/examples/create-react-app/public/robots.txt b/examples/create-react-app/public/robots.txt new file mode 100644 index 0000000000..e9e57dc4d4 --- /dev/null +++ b/examples/create-react-app/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/examples/create-react-app/src/App.css b/examples/create-react-app/src/App.css new file mode 100644 index 0000000000..74b5e05345 --- /dev/null +++ b/examples/create-react-app/src/App.css @@ -0,0 +1,38 @@ +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/examples/create-react-app/src/App.test.tsx b/examples/create-react-app/src/App.test.tsx new file mode 100644 index 0000000000..4db7ebc25c --- /dev/null +++ b/examples/create-react-app/src/App.test.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import App from './App'; + +test('renders learn react link', () => { + const { getByText } = render(); + const linkElement = getByText(/learn react/i); + expect(linkElement).toBeInTheDocument(); +}); diff --git a/examples/create-react-app/src/App.tsx b/examples/create-react-app/src/App.tsx new file mode 100644 index 0000000000..a53698aab3 --- /dev/null +++ b/examples/create-react-app/src/App.tsx @@ -0,0 +1,26 @@ +import React from 'react'; +import logo from './logo.svg'; +import './App.css'; + +function App() { + return ( +
+
+ logo +

+ Edit src/App.tsx and save to reload. +

+ + Learn React + +
+
+ ); +} + +export default App; diff --git a/examples/create-react-app/src/index.css b/examples/create-react-app/src/index.css new file mode 100644 index 0000000000..ec2585e8c0 --- /dev/null +++ b/examples/create-react-app/src/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/examples/create-react-app/src/index.tsx b/examples/create-react-app/src/index.tsx new file mode 100644 index 0000000000..f5185c1ec7 --- /dev/null +++ b/examples/create-react-app/src/index.tsx @@ -0,0 +1,17 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import './index.css'; +import App from './App'; +import * as serviceWorker from './serviceWorker'; + +ReactDOM.render( + + + , + document.getElementById('root') +); + +// If you want your app to work offline and load faster, you can change +// unregister() to register() below. Note this comes with some pitfalls. +// Learn more about service workers: https://bit.ly/CRA-PWA +serviceWorker.unregister(); diff --git a/examples/create-react-app/src/logo.svg b/examples/create-react-app/src/logo.svg new file mode 100644 index 0000000000..6b60c1042f --- /dev/null +++ b/examples/create-react-app/src/logo.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/examples/create-react-app/src/react-app-env.d.ts b/examples/create-react-app/src/react-app-env.d.ts new file mode 100644 index 0000000000..6431bc5fc6 --- /dev/null +++ b/examples/create-react-app/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/examples/create-react-app/src/serviceWorker.ts b/examples/create-react-app/src/serviceWorker.ts new file mode 100644 index 0000000000..d60c835a62 --- /dev/null +++ b/examples/create-react-app/src/serviceWorker.ts @@ -0,0 +1,134 @@ +// This optional code is used to register a service worker. +// register() is not called by default. + +// This lets the app load faster on subsequent visits in production, and gives +// it offline capabilities. However, it also means that developers (and users) +// will only see deployed updates on subsequent visits to a page, after all the +// existing tabs open on the page have been closed, since previously cached +// resources are updated in the background. + +// To learn more about the benefits of this model and instructions on how to +// opt-in, read https://bit.ly/CRA-PWA + +const isLocalhost = Boolean( + window.location.hostname === 'localhost' || + // [::1] is the IPv6 localhost address. + window.location.hostname === '[::1]' || + // 127.0.0.0/8 are considered localhost for IPv4. + window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)); + +type Config = { + onSuccess?: (registration: ServiceWorkerRegistration) => void; + onUpdate?: (registration: ServiceWorkerRegistration) => void; +}; + +export function register(config?: Config) { + if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { + // The URL constructor is available in all browsers that support SW. + const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href); + if (publicUrl.origin !== window.location.origin) { + // Our service worker won't work if PUBLIC_URL is on a different origin + // from what our page is served on. This might happen if a CDN is used to + // serve assets; see https://github.com/facebook/create-react-app/issues/2374 + return; + } + + window.addEventListener('load', () => { + const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; + + if (isLocalhost) { + // This is running on localhost. Let's check if a service worker still exists or not. + checkValidServiceWorker(swUrl, config); + + // Add some additional logging to localhost, pointing developers to the + // service worker/PWA documentation. + navigator.serviceWorker.ready.then(() => { + console.log( + 'This web app is being served cache-first by a service ' + + 'worker. To learn more, visit https://bit.ly/CRA-PWA'); + }); + } else { + // Is not localhost. Just register service worker + registerValidSW(swUrl, config); + } + }); + } +} + +function registerValidSW(swUrl: string, config?: Config) { + navigator.serviceWorker.register(swUrl) + .then(registration => { + registration.onupdatefound = () => { + const installingWorker = registration.installing; + if (installingWorker == null) { + return; + } + installingWorker.onstatechange = () => { + if (installingWorker.state === 'installed') { + if (navigator.serviceWorker.controller) { + // At this point, the updated precached content has been fetched, + // but the previous service worker will still serve the older + // content until all client tabs are closed. + console.log( + 'New content is available and will be used when all ' + + 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'); + + // Execute callback + if (config && config.onUpdate) { + config.onUpdate(registration); + } + } else { + // At this point, everything has been precached. + // It's the perfect time to display a + // "Content is cached for offline use." message. + console.log('Content is cached for offline use.'); + + // Execute callback + if (config && config.onSuccess) { + config.onSuccess(registration); + } + } + } + }; + }; + }) + .catch(error => { + console.error('Error during service worker registration:', error); + }); +} + +function checkValidServiceWorker(swUrl: string, config?: Config) { + // Check if the service worker can be found. If it can't reload the page. + fetch(swUrl, {headers: {'Service-Worker': 'script'}}) + .then(response => { + // Ensure service worker exists, and that we really are getting a JS file. + const contentType = response.headers.get('content-type'); + if (response.status === 404 || + (contentType != null && contentType.indexOf('javascript') === -1)) { + // No service worker found. Probably a different app. Reload the page. + navigator.serviceWorker.ready.then(registration => { + registration.unregister().then(() => { + window.location.reload(); + }); + }); + } else { + // Service worker found. Proceed as normal. + registerValidSW(swUrl, config); + } + }) + .catch(() => { + console.log('No internet connection found. App is running in offline mode.'); + }); +} + +export function unregister() { + if ('serviceWorker' in navigator) { + navigator.serviceWorker.ready + .then(registration => { + registration.unregister(); + }) + .catch(error => { + console.error(error.message); + }); + } +} diff --git a/examples/create-react-app/src/setupTests.ts b/examples/create-react-app/src/setupTests.ts new file mode 100644 index 0000000000..74b1a275a0 --- /dev/null +++ b/examples/create-react-app/src/setupTests.ts @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom/extend-expect'; diff --git a/examples/create-react-app/tsconfig.json b/examples/create-react-app/tsconfig.json new file mode 100644 index 0000000000..f2850b7161 --- /dev/null +++ b/examples/create-react-app/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react" + }, + "include": [ + "src" + ] +} diff --git a/examples/create-react-app/yarn.lock b/examples/create-react-app/yarn.lock new file mode 100644 index 0000000000..97d2aa0cd1 --- /dev/null +++ b/examples/create-react-app/yarn.lock @@ -0,0 +1,10891 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.8.3", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/code-frame@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" + integrity sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g== + dependencies: + browserslist "^4.9.1" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@7.9.0", "@babel/core@^7.1.0", "@babel/core@^7.4.5": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.4.tgz#e49eeed9fe114b62fa5b181856a43a5e32f5f243" + integrity sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng== + dependencies: + "@babel/types" "^7.10.4" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/generator@^7.4.0", "@babel/generator@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.0.tgz#0f67adea4ec39dad6e63345f70eec33014d78c89" + integrity sha512-onl4Oy46oGCzymOXtKMQpI7VXtCbTSHK1kqBydZ6AmzuNcacEVqGk9tZtAS+48IA9IstZcDCgIg8hQKnb7suRw== + dependencies: + "@babel/types" "^7.9.0" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-builder-react-jsx-experimental@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.0.tgz#066d80262ade488f9c1b1823ce5db88a4cedaa43" + integrity sha512-3xJEiyuYU4Q/Ar9BsHisgdxZsRlsShMe90URZ0e6przL26CCs8NJbDoxH94kKT17PcxlMhsCAwZd90evCo26VQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-module-imports" "^7.8.3" + "@babel/types" "^7.9.0" + +"@babel/helper-builder-react-jsx@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz#16bf391990b57732700a3278d4d9a81231ea8d32" + integrity sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/types" "^7.9.0" + +"@babel/helper-call-delegate@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz#28a279c2e6c622a6233da548127f980751324cab" + integrity sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.7" + +"@babel/helper-compilation-targets@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" + integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== + dependencies: + "@babel/compat-data" "^7.8.6" + browserslist "^4.9.1" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz#2d4015d0136bd314103a70d84a7183e4b344a355" + integrity sha512-9raUiOsXPxzzLjCXeosApJItoMnX3uyT4QdM2UldffuGApNrF8e938MwNpDCK9CPoyxrEoCgT+hObJc3mZa6lQ== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-create-class-features-plugin@^7.8.3": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz#243a5b46e2f8f0f674dc1387631eb6b28b851de0" + integrity sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + +"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== + dependencies: + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-member-expression-to-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz#7cd04b57dfcf82fce9aeae7d4e4452fa31b8c7c4" + integrity sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-plugin-utils@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-replace-supers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" + integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" + integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-split-export-declaration@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" + integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/helper-validator-identifier@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" + integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== + +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helpers@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.0.tgz#ab2c1bc4821af766cab51d4868a5038874ea5a12" + integrity sha512-/9GvfYTCG1NWCNwDj9e+XlnSCmWW/r9T794Xi58vPF9WCcnZCAZ0kWLSn54oqP40SUvh1T2G6VwKmFO5AOlW3A== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/highlight@^7.8.3": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.0.tgz#f821b32313f07ee570976d3f6238e8d2d66e0a8e" + integrity sha512-Iwyp00CZsypoNJcpXCbq3G4tcDgphtlMwMVrMhhZ//XBkqjXF7LW6V511yk0+pBX3ZwwGnPea+pTKNJiqA7pUg== + +"@babel/parser@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64" + integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA== + +"@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-proposal-decorators@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" + integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-decorators" "^7.8.3" + +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" + integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@7.8.3", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@7.8.3", "@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + +"@babel/plugin-proposal-object-rest-spread@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz#a28993699fc13df165995362693962ba6b061d6f" + integrity sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@7.9.0", "@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" + integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.8" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-decorators@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz#8d2c15a9f1af624b0025f961682a9d53d3001bda" + integrity sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-flow@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz#f2c883bd61a6316f2c89380ae5122f923ba4527f" + integrity sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" + integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-typescript@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz#2f55e770d3501e83af217d782cb7517d7bb34d25" + integrity sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + +"@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-block-scoping@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.0.tgz#ab89c175ecf5b4c8911194aa8657966615324ce9" + integrity sha512-xt/0CuBRBsBkqfk95ILxf0ge3gnXjEhOHrNxIiS8fdzSWgecuf9Vq2ogLUfaozJgt3LDO49ThMVWiyezGkei7A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-destructuring@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz#fadb2bc8e90ccaf5658de6f8d4d22ff6272a2f4b" + integrity sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz#8a3538aa40434e000b8f44a3c5c9ac7229bd2392" + integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" + integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-modules-amd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4" + integrity sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-commonjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940" + integrity sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-systemjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90" + integrity sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-umd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" + integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + +"@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.8.tgz#0381de466c85d5404565243660c4496459525daf" + integrity sha512-hC4Ld/Ulpf1psQciWWwdnUspQoQco2bMzSrwU6TmzRlvoYQe4rQFy9vnCZDTlVeCQj0JPfL+1RX0V8hCJvkgBA== + dependencies: + "@babel/helper-call-delegate" "^7.8.7" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-constant-elements@^7.0.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.9.0.tgz#a75abc936a3819edec42d3386d9f1c93f28d9d9e" + integrity sha512-wXMXsToAUOxJuBBEHajqKLFWcCkOSLshTI2ChCFFj1zDd7od4IOxiwLCOObNUvOpkxLpjIuaIdBMmNt6ocCPAw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-display-name@7.8.3", "@babel/plugin-transform-react-display-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" + integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-jsx-development@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz#3c2a130727caf00c2a293f0aed24520825dbf754" + integrity sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw== + dependencies: + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx-self@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz#f4f26a325820205239bb915bad8e06fcadabb49b" + integrity sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx-source@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz#89ef93025240dd5d17d3122294a093e5e0183de0" + integrity sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx@^7.9.1": + version "7.9.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.1.tgz#d03af29396a6dc51bfa24eefd8005a9fd381152a" + integrity sha512-+xIZ6fPoix7h57CNO/ZeYADchg1tFyX9NDsnmNFFua8e1JNPln156mzS+8AQe1On2X2GLlANHJWHIXbMCqWDkQ== + dependencies: + "@babel/helper-builder-react-jsx" "^7.9.0" + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-regenerator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-runtime@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b" + integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + +"@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" + integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typescript@^7.9.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.4.tgz#8b01cb8d77f795422277cc3fcf45af72bc68ba78" + integrity sha512-3WpXIKDJl/MHoAN0fNkSr7iHdUMHZoppXjf2HJ9/ed5Xht5wNIsXllJXdityKOxeA3Z8heYRb1D3p2H5rfCdPw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-typescript" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/preset-env@7.9.0", "@babel/preset-env@^7.4.5": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" + integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== + dependencies: + "@babel/compat-data" "^7.9.0" + "@babel/helper-compilation-targets" "^7.8.7" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.0" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.7" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.0" + browserslist "^4.9.1" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@7.9.1", "@babel/preset-react@^7.0.0": + version "7.9.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.1.tgz#b346403c36d58c3bb544148272a0cefd9c28677a" + integrity sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-react-display-name" "^7.8.3" + "@babel/plugin-transform-react-jsx" "^7.9.1" + "@babel/plugin-transform-react-jsx-development" "^7.9.0" + "@babel/plugin-transform-react-jsx-self" "^7.9.0" + "@babel/plugin-transform-react-jsx-source" "^7.9.0" + +"@babel/preset-typescript@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz#87705a72b1f0d59df21c179f7c3d2ef4b16ce192" + integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-typescript" "^7.9.0" + +"@babel/runtime-corejs3@^7.10.2": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz#f29fc1990307c4c57b10dbd6ce667b27159d9e0d" + integrity sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime-corejs3@^7.8.3": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.9.0.tgz#0d4119c44ad05bfa0ca16f2f4f91cde430056c08" + integrity sha512-Fe3z3yVZNCUTaOFBAofwkEtFiYi7a7Gg2F5S1QX+mqP403i2iKJtyHJYEp/PV2ijUheT0PiKWbmXcqtwLhmBzg== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@7.9.0", "@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b" + integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.5.1": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.4.tgz#a6724f1a6b8d2f6ea5236dbfe58c7d7ea9c5eb99" + integrity sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" + integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/traverse@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818" + integrity sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7", "@babel/types@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" + integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@babel/types@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.4.tgz#369517188352e18219981efd156bfdb199fff1ee" + integrity sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@csstools/normalize.css@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== + +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== + +"@hapi/joi@^15.0.0": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== + dependencies: + "@hapi/hoek" "^8.3.0" + +"@jest/console@^24.7.1", "@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + realpath-native "^1.1.0" + rimraf "^2.5.4" + slash "^2.0.0" + strip-ansi "^5.0.0" + +"@jest/environment@^24.3.0", "@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + node-notifier "^5.4.2" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== + dependencies: + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + +"@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.3.0", "@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + +"@jest/types@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@sheerun/mutationobserver-shim@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#5405ee8e444ed212db44e79351f0c70a582aae25" + integrity sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw== + +"@svgr/babel-plugin-add-jsx-attribute@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" + integrity sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig== + +"@svgr/babel-plugin-remove-jsx-attribute@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz#297550b9a8c0c7337bea12bdfc8a80bb66f85abc" + integrity sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz#c196302f3e68eab6a05e98af9ca8570bc13131c7" + integrity sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" + integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== + +"@svgr/babel-plugin-svg-dynamic-title@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz#2cdedd747e5b1b29ed4c241e46256aac8110dd93" + integrity sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w== + +"@svgr/babel-plugin-svg-em-dimensions@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz#9a94791c9a288108d20a9d2cc64cac820f141391" + integrity sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w== + +"@svgr/babel-plugin-transform-react-native-svg@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz#151487322843359a1ca86b21a3815fd21a88b717" + integrity sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw== + +"@svgr/babel-plugin-transform-svg-component@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" + integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== + +"@svgr/babel-preset@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.3.tgz#a75d8c2f202ac0e5774e6bfc165d028b39a1316c" + integrity sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" + "@svgr/babel-plugin-svg-dynamic-title" "^4.3.3" + "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" + "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" + "@svgr/babel-plugin-transform-svg-component" "^4.2.0" + +"@svgr/core@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" + integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== + dependencies: + "@svgr/plugin-jsx" "^4.3.3" + camelcase "^5.3.1" + cosmiconfig "^5.2.1" + +"@svgr/hast-util-to-babel-ast@^4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz#1d5a082f7b929ef8f1f578950238f630e14532b8" + integrity sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg== + dependencies: + "@babel/types" "^7.4.4" + +"@svgr/plugin-jsx@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" + integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== + dependencies: + "@babel/core" "^7.4.5" + "@svgr/babel-preset" "^4.3.3" + "@svgr/hast-util-to-babel-ast" "^4.3.2" + svg-parser "^2.0.0" + +"@svgr/plugin-svgo@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz#daac0a3d872e3f55935c6588dd370336865e9e32" + integrity sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w== + dependencies: + cosmiconfig "^5.2.1" + merge-deep "^3.0.2" + svgo "^1.2.2" + +"@svgr/webpack@4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" + integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== + dependencies: + "@babel/core" "^7.4.5" + "@babel/plugin-transform-react-constant-elements" "^7.0.0" + "@babel/preset-env" "^7.4.5" + "@babel/preset-react" "^7.0.0" + "@svgr/core" "^4.3.3" + "@svgr/plugin-jsx" "^4.3.3" + "@svgr/plugin-svgo" "^4.3.1" + loader-utils "^1.2.3" + +"@testing-library/dom@*": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.20.0.tgz#2bab85e90f0221a56256c5d4741c2a36b7c45f4d" + integrity sha512-TywaC+qDGm/Ro34kRYkFQPdT+pxSF4UjZGLIqcGfFQH5IGR43Y7sGLPnkieIW/GNsu337oxNsLUAgpI0JWhXHw== + dependencies: + "@babel/runtime" "^7.10.3" + "@types/aria-query" "^4.2.0" + aria-query "^4.2.2" + dom-accessibility-api "^0.4.5" + pretty-format "^25.5.0" + +"@testing-library/dom@^6.15.0": + version "6.16.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-6.16.0.tgz#04ada27ed74ad4c0f0d984a1245bb29b1fd90ba9" + integrity sha512-lBD88ssxqEfz0wFL6MeUyyWZfV/2cjEZZV3YRpb2IoJRej/4f1jB0TzqIOznTpfR1r34CNesrubxwIlAQ8zgPA== + dependencies: + "@babel/runtime" "^7.8.4" + "@sheerun/mutationobserver-shim" "^0.3.2" + "@types/testing-library__dom" "^6.12.1" + aria-query "^4.0.2" + dom-accessibility-api "^0.3.0" + pretty-format "^25.1.0" + wait-for-expect "^3.0.2" + +"@testing-library/jest-dom@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-4.2.4.tgz#00dfa0cbdd837d9a3c2a7f3f0a248ea6e7b89742" + integrity sha512-j31Bn0rQo12fhCWOUWy9fl7wtqkp7In/YP2p5ZFyRuiiB9Qs3g+hS4gAmDWONbAHcRmVooNJ5eOHQDCOmUFXHg== + dependencies: + "@babel/runtime" "^7.5.1" + chalk "^2.4.1" + css "^2.2.3" + css.escape "^1.5.1" + jest-diff "^24.0.0" + jest-matcher-utils "^24.0.0" + lodash "^4.17.11" + pretty-format "^24.0.0" + redent "^3.0.0" + +"@testing-library/react@^9.3.2": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.5.0.tgz#71531655a7890b61e77a1b39452fbedf0472ca5e" + integrity sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg== + dependencies: + "@babel/runtime" "^7.8.4" + "@testing-library/dom" "^6.15.0" + "@types/testing-library__react" "^9.1.2" + +"@testing-library/user-event@^7.1.2": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-7.2.1.tgz#2ad4e844175a3738cb9e7064be5ea070b8863a1c" + integrity sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA== + +"@types/aria-query@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" + integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== + +"@types/babel__core@^7.1.0": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.6.tgz#16ff42a5ae203c9af1c6e190ed1f30f83207b610" + integrity sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.9.tgz#be82fab304b141c3eee81a4ce3b034d0eba1590a" + integrity sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw== + dependencies: + "@babel/types" "^7.3.0" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" + integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/jest@^24.0.0": + version "24.9.1" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.9.1.tgz#02baf9573c78f1b9974a5f36778b366aa77bd534" + integrity sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q== + dependencies: + jest-diff "^24.3.0" + +"@types/json-schema@^7.0.3": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" + integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "13.9.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349" + integrity sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg== + +"@types/node@^12.0.0": + version "12.12.50" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.50.tgz#e9b2e85fafc15f2a8aa8fdd41091b983da5fd6ee" + integrity sha512-5ImO01Fb8YsEOYpV+aeyGYztcYcjGsBvN4D7G5r1ef2cuQOpymjWNQi5V0rKHE6PC2ru3HkoUr/Br2/8GUA84w== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + +"@types/q@^1.5.1": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== + +"@types/react-dom@*", "@types/react-dom@^16.9.0": + version "16.9.8" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" + integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^16.9.0": + version "16.9.42" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.42.tgz#9776508d59c1867bbf9bd7f036dab007fdaa1cb7" + integrity sha512-iGy6HwfVfotqJ+PfRZ4eqPHPP5NdPZgQlr0lTs8EfkODRBV9cYy8QMKcC9qPCe1JrESC1Im6SrCFR6tQgg74ag== + dependencies: + "@types/prop-types" "*" + csstype "^2.2.0" + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/testing-library__dom@*": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-7.5.0.tgz#e0a00dd766983b1d6e9d10d33e708005ce6ad13e" + integrity sha512-mj1aH4cj3XUpMEgVpognma5kHVtbm6U6cHZmEFzCRiXPvKkuHrFr3+yXdGLXvfFRBaQIVshPGHI+hGTOJlhS/g== + dependencies: + "@testing-library/dom" "*" + +"@types/testing-library__dom@^6.12.1": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz#1aede831cb4ed4a398448df5a2c54b54a365644e" + integrity sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA== + dependencies: + pretty-format "^24.3.0" + +"@types/testing-library__react@^9.1.2": + version "9.1.3" + resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-9.1.3.tgz#35eca61cc6ea923543796f16034882a1603d7302" + integrity sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w== + dependencies: + "@types/react-dom" "*" + "@types/testing-library__dom" "*" + pretty-format "^25.1.0" + +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^13.0.0": + version "13.0.8" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.8.tgz#a38c22def2f1c2068f8971acb3ea734eb3c64a99" + integrity sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^15.0.0": + version "15.0.5" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" + integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^2.10.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.24.0.tgz#a86cf618c965a462cddf3601f594544b134d6d68" + integrity sha512-wJRBeaMeT7RLQ27UQkDFOu25MqFOBus8PtOa9KaT5ZuxC1kAsd7JEHqWt4YXuY9eancX0GK9C68i5OROnlIzBA== + dependencies: + "@typescript-eslint/experimental-utils" "2.24.0" + eslint-utils "^1.4.3" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@2.24.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.24.0.tgz#a5cb2ed89fedf8b59638dc83484eb0c8c35e1143" + integrity sha512-DXrwuXTdVh3ycNCMYmWhUzn/gfqu9N0VzNnahjiDJvcyhfBy4gb59ncVZVxdp5XzBC77dCncu0daQgOkbvPwBw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.24.0" + eslint-scope "^5.0.0" + +"@typescript-eslint/parser@^2.10.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.24.0.tgz#2cf0eae6e6dd44d162486ad949c126b887f11eb8" + integrity sha512-H2Y7uacwSSg8IbVxdYExSI3T7uM1DzmOn2COGtCahCC3g8YtM1xYAPi2MAHyfPs61VKxP/J/UiSctcRgw4G8aw== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "2.24.0" + "@typescript-eslint/typescript-estree" "2.24.0" + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/typescript-estree@2.24.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.24.0.tgz#38bbc8bb479790d2f324797ffbcdb346d897c62a" + integrity sha512-RJ0yMe5owMSix55qX7Mi9V6z2FDuuDpN6eR5fzRJrp+8in9UF41IGNQHbg5aMK4/PjVaEQksLvz0IA8n+Mr/FA== + dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^6.3.0" + tsutils "^3.17.1" + +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== + +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== + +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== + +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== + +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== + +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== + +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-globals@^4.1.0, acorn-globals@^4.3.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^5.5.3: + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +acorn@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== + +address@1.1.2, address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +adjust-sourcemap-loader@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" + integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== + dependencies: + assert "1.4.1" + camelcase "5.0.0" + loader-utils "1.2.3" + object-path "0.11.4" + regex-parser "2.2.10" + +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: + version "6.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" + integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + +aria-query@^4.0.2, aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + dependencies: + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" + +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" + integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.0.3, array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +array.prototype.flat@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= + dependencies: + util "0.10.3" + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + 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" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@0.0.7, ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9.6.1: + version "9.7.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" + integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== + dependencies: + browserslist "^4.8.3" + caniuse-lite "^1.0.30001020" + chalk "^2.4.2" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.26" + postcss-value-parser "^4.0.2" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + +axobject-query@^2.0.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.1.2.tgz#2bdffc0371e643e5f03ba99065d5179b9ca79799" + integrity sha512-ICt34ZmrVt8UQnvPl6TVyDTkmhXmAyAT4Jh5ugfGUX4MOrZ+U/ZY6/sdylRw3qGNr9Ub5AJsaHeDMzNLehRdOQ== + +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-eslint@10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-extract-comments@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" + integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== + dependencies: + babylon "^6.18.0" + +babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== + dependencies: + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.9.0" + chalk "^2.4.2" + slash "^2.0.0" + +babel-loader@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" + +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== + dependencies: + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-named-asset-import@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz#c9750a1b38d85112c9e166bf3ef7c5dbc605f4be" + integrity sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA== + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= + +babel-plugin-transform-object-rest-spread@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-remove-prop-types@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" + +babel-preset-react-app@^9.1.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz#54775d976588a8a6d1a99201a702befecaf48030" + integrity sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA== + dependencies: + "@babel/core" "7.9.0" + "@babel/plugin-proposal-class-properties" "7.8.3" + "@babel/plugin-proposal-decorators" "7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "7.8.3" + "@babel/plugin-proposal-numeric-separator" "7.8.3" + "@babel/plugin-proposal-optional-chaining" "7.9.0" + "@babel/plugin-transform-flow-strip-types" "7.9.0" + "@babel/plugin-transform-react-display-name" "7.8.3" + "@babel/plugin-transform-runtime" "7.9.0" + "@babel/preset-env" "7.9.0" + "@babel/preset-react" "7.9.1" + "@babel/preset-typescript" "7.9.0" + "@babel/runtime" "7.9.0" + babel-plugin-macros "2.8.0" + babel-plugin-transform-react-remove-prop-types "0.4.24" + +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + 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" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +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" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + 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" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + 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" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + 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" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + 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" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + 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" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.10.0, browserslist@^4.0.0, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.8.3, browserslist@^4.9.1: + version "4.10.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" + integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== + dependencies: + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.378" + node-releases "^1.1.52" + pkg-up "^3.1.0" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + 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" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^12.0.2: + version "12.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" + integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" + integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + 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" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" + integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== + dependencies: + pascal-case "^3.1.1" + tslib "^1.10.0" + +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001035: + version "1.0.30001035" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" + integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +case-sensitive-paths-webpack-plugin@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + 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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +chokidar@^2.0.2, chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" + integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.3.0" + optionalDependencies: + fsevents "~2.1.2" + +chownr@^1.1.1, chownr@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +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" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone-deep@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" + integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= + dependencies: + for-own "^0.1.3" + is-plain-object "^2.0.1" + kind-of "^3.0.2" + lazy-cache "^1.0.3" + shallow-clone "^0.1.2" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + 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" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.11.0, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +common-tags@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compose-function@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" + integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= + dependencies: + arity-n "^1.0.4" + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +confusing-browser-globals@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" + integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js-compat@^3.6.2: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" + integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== + dependencies: + browserslist "^4.8.3" + semver "7.0.0" + +core-js-pure@^3.0.0: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a" + integrity sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw== + +core-js@^2.4.0: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-js@^3.5.0: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" + integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== + +core-util-is@1.0.2, 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" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + 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" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + 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" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + 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@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + 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" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + 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-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-color-names@0.0.4, 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" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" + integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.23" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.1.1" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.2" + schema-utils "^2.6.0" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= + +css@^2.0.0, css@^2.2.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.2.tgz#e5f81ab3a56b8eefb7f0092ce7279329f454de3d" + integrity sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg== + dependencies: + css-tree "1.0.0-alpha.37" + +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^1.0.0, cssstyle@^1.1.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== + dependencies: + cssom "0.3.x" + +csstype@^2.2.0: + version "2.6.11" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.11.tgz#452f4d024149ecf260a852b025e36562a253ffc5" + integrity sha512-l8YyEC9NBkSm783PFTvh0FmJy7s5pFKrDp49ZL7zBGX3fWkO+N4EEyan1qqp8cwPLDcD0OSdyY6hAMoxp34JFw== + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^1.0.0, data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +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" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + 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" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + 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" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + 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" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +detect-port-alt@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-accessibility-api@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz#511e5993dd673b97c87ea47dba0e3892f7e0c983" + integrity sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA== + +dom-accessibility-api@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.4.5.tgz#d9c1cefa89f509d8cf132ab5d250004d755e76e3" + integrity sha512-HcPDilI95nKztbVikaN2vzwvmv0sE8Y2ZJFODy/m15n7mGXLeOKGiys9qWVbFbh+aq/KYj2lqMLybBOkYAEXqg== + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" + integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + dependencies: + is-obj "^2.0.0" + +dotenv-expand@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.3.378: + version "1.3.379" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.379.tgz#81dc5e82a3e72bbb830d93e15bc35eda2bbc910e" + integrity sha512-NK9DBBYEBb5f9D7zXI0hiE941gq3wkBeQmXs1ingigA/jnTg5mhwY2Z5egwA+ZI8OLGKCx0h1Cl8/xeuIBuLlg== + +elliptic@^6.0.0: + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + 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" + +emoji-regex@^7.0.1, emoji-regex@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" + integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" + integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" + integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +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" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^1.11.0, escodegen@^1.9.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" + integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df" + integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ== + dependencies: + confusing-browser-globals "^1.0.9" + +eslint-import-resolver-node@^0.3.2: + version "0.3.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" + integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-loader@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.3.tgz#e018e3d2722381d982b1201adb56819c73b480ca" + integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw== + dependencies: + fs-extra "^8.1.0" + loader-fs-cache "^1.0.2" + loader-utils "^1.2.3" + object-hash "^2.0.1" + schema-utils "^2.6.1" + +eslint-module-utils@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" + integrity sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-flowtype@4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz#82b2bd6f21770e0e5deede0228e456cb35308451" + integrity sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ== + dependencies: + lodash "^4.17.15" + +eslint-plugin-import@2.20.1: + version "2.20.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" + integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== + dependencies: + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.1" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.12.0" + +eslint-plugin-jsx-a11y@6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" + integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== + dependencies: + "@babel/runtime" "^7.4.5" + aria-query "^3.0.0" + array-includes "^3.0.3" + ast-types-flow "^0.0.7" + axobject-query "^2.0.2" + damerau-levenshtein "^1.0.4" + emoji-regex "^7.0.2" + has "^1.0.3" + jsx-ast-utils "^2.2.1" + +eslint-plugin-react-hooks@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" + integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== + +eslint-plugin-react@7.19.0: + version "7.19.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" + integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== + dependencies: + array-includes "^3.1.1" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.2.3" + object.entries "^1.1.1" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.15.1" + semver "^6.3.0" + string.prototype.matchall "^4.0.2" + xregexp "^4.3.0" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + +eslint@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48" + integrity sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q== + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" + integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== + +events@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +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" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-sh@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + 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" + +expect@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== + dependencies: + "@jest/types" "^24.9.0" + ansi-styles "^3.2.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" + +express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + 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" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + 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" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + +fast-glob@^2.0.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +figgy-pudding@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" + integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== + dependencies: + loader-utils "^1.2.3" + schema-utils "^2.5.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filesize@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" + integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@4.1.0, find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" + integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.0.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.10.0.tgz#01f5263aee921c6a54fb91667f08f4155ce169eb" + integrity sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ== + dependencies: + debug "^3.0.0" + +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +fork-ts-checker-webpack-plugin@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" + integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== + dependencies: + babel-code-frame "^6.22.0" + chalk "^2.4.1" + chokidar "^3.3.0" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + 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" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@2.1.2, fsevents@~2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + +fsevents@^1.2.7: + version "1.2.12" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" + integrity sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +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" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.0.0, glob-parent@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" + integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + 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" + +global-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globby@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" + integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== + dependencies: + array-union "^1.0.1" + dir-glob "2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +gzip-size@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handle-thing@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" + integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +harmony-reflect@^1.4.6: + version "1.6.1" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" + integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + 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" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + 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" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +html-entities@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= + +html-escaper@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491" + integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig== + +html-minifier-terser@^5.0.1: + version "5.0.4" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.0.4.tgz#e8cc02748acb983bd7912ea9660bd31c0702ec32" + integrity sha512-fHwmKQ+GzhlqdxEtwrqLT7MSuheiA+rif5/dZgbz3GjoMXJzcRzy1L9NXoiiyxrnap+q5guSiv8Tz5lrh9g42g== + dependencies: + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" + +html-webpack-plugin@4.0.0-beta.11: + version "4.0.0-beta.11" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz#3059a69144b5aecef97708196ca32f9e68677715" + integrity sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg== + dependencies: + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" + +htmlparser2@^3.3.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +"http-parser-js@>=0.4.0 <0.4.11": + version "0.4.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" + integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" + integrity sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +iconv-lite@0.4.24, iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +identity-obj-proxy@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + dependencies: + harmony-reflect "^1.4.6" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +immer@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" + integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +inquirer@7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" + integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.2" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.2.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +inquirer@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" + integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +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" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +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" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + 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" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +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" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.0.2, is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^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" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + 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" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + 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" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" + integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== + +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" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + 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" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +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" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + 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" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + 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" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +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" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +is-regex@^1.0.4, is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-root@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" + integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== + +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" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + 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" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" + +istanbul-lib-report@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== + dependencies: + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" + +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" + +istanbul-reports@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== + dependencies: + html-escaper "^2.0.0" + +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== + dependencies: + "@jest/types" "^24.9.0" + execa "^1.0.0" + throat "^4.0.0" + +jest-cli@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== + dependencies: + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^13.3.0" + +jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + micromatch "^3.1.10" + pretty-format "^24.9.0" + realpath-native "^1.1.0" + +jest-diff@^24.0.0, jest-diff@^24.3.0, jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== + dependencies: + chalk "^2.0.1" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-docblock@^24.3.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== + dependencies: + detect-newline "^2.1.0" + +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== + dependencies: + "@jest/types" "^24.9.0" + chalk "^2.0.1" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + +jest-environment-jsdom-fourteen@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz#4cd0042f58b4ab666950d96532ecb2fc188f96fb" + integrity sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q== + dependencies: + "@jest/environment" "^24.3.0" + "@jest/fake-timers" "^24.3.0" + "@jest/types" "^24.3.0" + jest-mock "^24.0.0" + jest-util "^24.0.0" + jsdom "^14.1.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + jsdom "^11.5.1" + +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== + dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^24.9.0" + is-generator-fn "^2.0.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + throat "^4.0.0" + +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== + dependencies: + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-matcher-utils@^24.0.0, jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== + dependencies: + chalk "^2.0.1" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + +jest-mock@^24.0.0, jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + +jest-pnp-resolver@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" + integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== + +jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== + dependencies: + "@jest/types" "^24.9.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.9.0" + +jest-resolve@24.9.0, jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== + dependencies: + "@jest/types" "^24.9.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.4.2" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + source-map-support "^0.5.6" + throat "^4.0.0" + +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + realpath-native "^1.1.0" + slash "^2.0.0" + strip-bom "^3.0.0" + yargs "^13.3.0" + +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== + +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^24.9.0" + semver "^6.2.0" + +jest-util@^24.0.0, jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + +jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== + dependencies: + "@jest/types" "^24.9.0" + camelcase "^5.3.1" + chalk "^2.0.1" + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" + +jest-watch-typeahead@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" + integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.1" + jest-regex-util "^24.9.0" + jest-watcher "^24.3.0" + slash "^3.0.0" + string-length "^3.1.0" + strip-ansi "^5.0.0" + +jest-watcher@^24.3.0, jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== + dependencies: + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + jest-util "^24.9.0" + string-length "^2.0.0" + +jest-worker@^24.6.0, jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest-worker@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.1.0.tgz#75d038bad6fdf58eba0d2ec1835856c497e3907a" + integrity sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== + dependencies: + import-local "^2.0.0" + jest-cli "^24.9.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^11.5.1: + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + +jsdom@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" + integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== + dependencies: + abab "^2.0.0" + acorn "^6.0.4" + acorn-globals "^4.3.0" + array-equal "^1.0.0" + cssom "^0.3.4" + cssstyle "^1.1.1" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.0" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.1.3" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.5" + saxes "^3.1.9" + symbol-tree "^3.2.2" + tough-cookie "^2.5.0" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^6.1.2" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" + integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== + dependencies: + minimist "^1.2.5" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" + integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== + dependencies: + array-includes "^3.0.3" + object.assign "^4.1.0" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" + integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= + dependencies: + is-buffer "^1.0.2" + +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" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + 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" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + 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" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +lazy-cache@^0.2.3: + version "0.2.7" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" + integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +loader-fs-cache@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz#54cedf6b727e1779fd8f01205f05f6e88706f086" + integrity sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw== + dependencies: + find-cache-dir "^0.1.1" + mkdirp "0.5.1" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.template@^4.4.0, lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +loglevel@^1.6.6: + version "1.6.7" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56" + integrity sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" + integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== + dependencies: + tslib "^1.10.0" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" + integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + dependencies: + semver "^6.0.0" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-deep@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.2.tgz#f39fa100a4f1bd34ff29f7d2bf4508fbb8d83ad2" + integrity sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA== + dependencies: + arr-union "^3.1.0" + clone-deep "^0.2.4" + kind-of "^3.0.2" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + 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" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== + dependencies: + mime-db "1.43.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" + integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== + +mimic-fn@^2.0.0, mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +mini-css-extract-plugin@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" + integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +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" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + 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" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz#3dcb6bb4a546e32969c7ad710f2c79a86abba93a" + integrity sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" + integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w== + dependencies: + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + +mkdirp@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" + integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== + dependencies: + minimist "^1.2.5" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nan@^2.12.1: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + 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-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" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" + integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw== + dependencies: + lower-case "^2.0.1" + tslib "^1.10.0" + +node-forge@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" + integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + 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 "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + 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.11.0" + vm-browserify "^1.0.1" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^5.4.2: + version "5.4.3" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" + integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== + dependencies: + growly "^1.3.0" + is-wsl "^1.1.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + +node-releases@^1.1.52: + version "1.1.52" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" + integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== + dependencies: + semver "^6.3.0" + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +nth-check@^1.0.2, nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + 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" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +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" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +nwsapi@^2.0.7, nwsapi@^2.1.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +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" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea" + integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg== + +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-is@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" + integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-path@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" + integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.entries@^1.1.0, object.entries@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" + integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +object.fromentries@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" + integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0, object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/open/-/open-7.0.3.tgz#db551a1af9c7ab4c7af664139930826138531c48" + integrity sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimize-css-assets-webpack-plugin@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" + integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.1, optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" + integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA== + dependencies: + dot-case "^3.0.3" + tslib "^1.10.0" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0: + version "5.1.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + 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" + safe-buffer "^5.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" + integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + 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" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.0.7: + version "2.2.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" + integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= + dependencies: + find-up "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@3.1.0, pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +portfinder@^1.0.25: + version "1.0.25" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" + integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" + +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" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== + dependencies: + postcss "^7" + +postcss-calc@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" + integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-flexbugs-fixes@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz#e094a9df1783e2200b7b19f875dcad3b3aff8b20" + integrity sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA== + dependencies: + postcss "^7.0.0" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" + integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" + +postcss-modules-scope@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" + integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== + dependencies: + "@csstools/normalize.css" "^10.1.0" + browserslist "^4.6.2" + postcss "^7.0.17" + postcss-browser-comments "^3.0.0" + sanitize.css "^10.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-safe-parser@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea" + integrity sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ== + dependencies: + postcss "^7.0.0" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" + integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" + integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@7.0.21: + version "7.0.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" + integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.27" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" + integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.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" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +pretty-bytes@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" + integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg== + +pretty-error@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +pretty-format@^24.0.0, pretty-format@^24.3.0, pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== + dependencies: + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + +pretty-format@^25.1.0, pretty-format@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== + dependencies: + "@jest/types" "^25.5.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise@^8.0.3: + version "8.1.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" + integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== + dependencies: + asap "~2.0.6" + +prompts@^2.0.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" + integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.4" + +prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +psl@^1.1.28: + version "1.7.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" + integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + 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" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + 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" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== + +raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + 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" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-app-polyfill@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0" + integrity sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g== + dependencies: + core-js "^3.5.0" + object-assign "^4.1.1" + promise "^8.0.3" + raf "^3.4.1" + regenerator-runtime "^0.13.3" + whatwg-fetch "^3.0.0" + +react-dev-utils@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" + integrity sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ== + dependencies: + "@babel/code-frame" "7.8.3" + address "1.1.2" + browserslist "4.10.0" + chalk "2.4.2" + cross-spawn "7.0.1" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.0.1" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "3.1.1" + global-modules "2.0.0" + globby "8.0.2" + gzip-size "5.1.1" + immer "1.10.0" + inquirer "7.0.4" + is-root "2.1.0" + loader-utils "1.2.3" + open "^7.0.2" + pkg-up "3.1.0" + react-error-overlay "^6.0.7" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" + +react-dom@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" + integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.19.1" + +react-error-overlay@^6.0.7: + version "6.0.7" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108" + integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA== + +react-is@^16.12.0, react-is@^16.8.1, react-is@^16.8.4: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-scripts@3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.4.1.tgz#f551298b5c71985cc491b9acf3c8e8c0ae3ada0a" + integrity sha512-JpTdi/0Sfd31mZA6Ukx+lq5j1JoKItX7qqEK4OiACjVQletM1P38g49d9/D0yTxp9FrSF+xpJFStkGgKEIRjlQ== + dependencies: + "@babel/core" "7.9.0" + "@svgr/webpack" "4.3.3" + "@typescript-eslint/eslint-plugin" "^2.10.0" + "@typescript-eslint/parser" "^2.10.0" + babel-eslint "10.1.0" + babel-jest "^24.9.0" + babel-loader "8.1.0" + babel-plugin-named-asset-import "^0.3.6" + babel-preset-react-app "^9.1.2" + camelcase "^5.3.1" + case-sensitive-paths-webpack-plugin "2.3.0" + css-loader "3.4.2" + dotenv "8.2.0" + dotenv-expand "5.1.0" + eslint "^6.6.0" + eslint-config-react-app "^5.2.1" + eslint-loader "3.0.3" + eslint-plugin-flowtype "4.6.0" + eslint-plugin-import "2.20.1" + eslint-plugin-jsx-a11y "6.2.3" + eslint-plugin-react "7.19.0" + eslint-plugin-react-hooks "^1.6.1" + file-loader "4.3.0" + fs-extra "^8.1.0" + html-webpack-plugin "4.0.0-beta.11" + identity-obj-proxy "3.0.0" + jest "24.9.0" + jest-environment-jsdom-fourteen "1.0.1" + jest-resolve "24.9.0" + jest-watch-typeahead "0.4.2" + mini-css-extract-plugin "0.9.0" + optimize-css-assets-webpack-plugin "5.0.3" + pnp-webpack-plugin "1.6.4" + postcss-flexbugs-fixes "4.1.0" + postcss-loader "3.0.0" + postcss-normalize "8.0.1" + postcss-preset-env "6.7.0" + postcss-safe-parser "4.0.1" + react-app-polyfill "^1.0.6" + react-dev-utils "^10.2.1" + resolve "1.15.0" + resolve-url-loader "3.1.1" + sass-loader "8.0.2" + semver "6.3.0" + style-loader "0.23.1" + terser-webpack-plugin "2.3.5" + ts-pnp "1.1.6" + url-loader "2.3.0" + webpack "4.42.0" + webpack-dev-server "3.10.3" + webpack-manifest-plugin "2.2.0" + workbox-webpack-plugin "4.3.1" + optionalDependencies: + fsevents "2.1.2" + +react@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" + integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + 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" + +readable-stream@^3.0.6, readable-stream@^3.1.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" + integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== + dependencies: + picomatch "^2.0.7" + +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + +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" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regex-parser@2.2.10: + version "2.2.10" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" + integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" + integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== + +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +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" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" + integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== + dependencies: + css-select "^1.1.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + dependencies: + lodash "^4.17.15" + +request-promise-native@^1.0.5: + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + dependencies: + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.87.0, request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url-loader@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" + integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== + dependencies: + adjust-sourcemap-loader "2.0.0" + camelcase "5.3.1" + compose-function "3.0.3" + convert-source-map "1.7.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.21" + rework "1.0.1" + rework-visit "1.0.0" + source-map "0.6.1" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" + integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw== + dependencies: + path-parse "^1.0.6" + +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.3.2, resolve@^1.8.1: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== + dependencies: + path-parse "^1.0.6" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +rework-visit@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" + integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= + +rework@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" + integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= + dependencies: + convert-source-map "^0.3.3" + css "^2.0.0" + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +run-async@^2.2.0, run-async@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" + integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== + dependencies: + is-promise "^2.1.0" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rxjs@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== + dependencies: + tslib "^1.9.0" + +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" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +sanitize.css@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" + integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== + +sass-loader@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" + integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== + dependencies: + clone-deep "^4.0.1" + loader-utils "^1.2.3" + neo-async "^2.6.1" + schema-utils "^2.6.1" + semver "^6.3.0" + +sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^3.1.9: + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== + dependencies: + xmlchars "^2.1.1" + +scheduler@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.4, schema-utils@^2.6.5: + version "2.6.5" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.5.tgz#c758f0a7e624263073d396e29cd40aa101152d8a" + integrity sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ== + dependencies: + ajv "^6.12.0" + ajv-keywords "^3.4.1" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.7: + version "1.10.7" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" + integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== + dependencies: + node-forge "0.9.0" + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@6.3.0, semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + 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.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + 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" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +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" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" + integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= + dependencies: + is-extendable "^0.1.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + mixin-object "^2.0.1" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.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" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + 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" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + 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" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + 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" + +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.19: + version "0.3.19" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.0.1" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + 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.5.6, source-map-support@~0.5.12: + version "0.5.16" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" + integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +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" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" + integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.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" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + 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" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== + dependencies: + figgy-pudding "^3.5.1" + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.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" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + 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" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +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" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== + dependencies: + astral-regex "^1.0.0" + strip-ansi "^5.2.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.matchall@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" + integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@6.0.0, strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.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" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + 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" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-comments@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" + integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== + dependencies: + babel-extract-comments "^1.0.0" + babel-plugin-transform-object-rest-spread "^6.26.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + +style-loader@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== + dependencies: + loader-utils "^1.1.0" + schema-utils "^1.0.0" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +svg-parser@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.0.0, svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-tree@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +terser-webpack-plugin@2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz#5ad971acce5c517440ba873ea4f09687de2f4a81" + integrity sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w== + dependencies: + cacache "^13.0.1" + find-cache-dir "^3.2.0" + jest-worker "^25.1.0" + p-limit "^2.2.2" + schema-utils "^2.6.4" + serialize-javascript "^2.1.2" + source-map "^0.6.1" + terser "^4.4.3" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^2.1.2" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2, terser@^4.4.3, terser@^4.6.3: + version "4.6.7" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.7.tgz#478d7f9394ec1907f0e488c5f6a6a9a2bad55e72" + integrity sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timers-browserify@^2.0.4: + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +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" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + 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" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +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" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +ts-pnp@1.1.6, ts-pnp@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a" + integrity sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ== + +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: + version "1.11.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" + integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== + +tsutils@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@~3.7.2: + version "3.7.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" + integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" + integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== + dependencies: + loader-utils "^1.2.3" + mime "^2.4.4" + schema-utils "^2.5.0" + +url-parse@^1.4.3: + version "1.4.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util.promisify@^1.0.0, util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@^0.4.0, utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.0.1, uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +w3c-hr-time@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + +wait-for-expect@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-3.0.2.tgz#d2f14b2f7b778c9b82144109c8fa89ceaadaa463" + integrity sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag== + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +watchpack@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== + dependencies: + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@3.10.3: + version "3.10.3" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0" + integrity sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.2.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.6" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.25" + schema-utils "^1.0.0" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.19" + sockjs-client "1.4.0" + spdy "^4.0.1" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "12.0.5" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-manifest-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" + integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== + dependencies: + fs-extra "^7.0.0" + lodash ">=3.5 <5" + object.entries "^1.1.0" + tapable "^1.0.0" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@4.42.0: + version "4.42.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" + integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.0" + webpack-sources "^1.4.1" + +websocket-driver@>=0.5.1: + version "0.7.3" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" + integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== + dependencies: + http-parser-js ">=0.4.0 <0.4.11" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9, which@^1.3.0, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +workbox-background-sync@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" + integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg== + dependencies: + workbox-core "^4.3.1" + +workbox-broadcast-update@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz#e2c0280b149e3a504983b757606ad041f332c35b" + integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA== + dependencies: + workbox-core "^4.3.1" + +workbox-build@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" + integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== + dependencies: + "@babel/runtime" "^7.3.4" + "@hapi/joi" "^15.0.0" + common-tags "^1.8.0" + fs-extra "^4.0.2" + glob "^7.1.3" + lodash.template "^4.4.0" + pretty-bytes "^5.1.0" + stringify-object "^3.3.0" + strip-comments "^1.0.2" + workbox-background-sync "^4.3.1" + workbox-broadcast-update "^4.3.1" + workbox-cacheable-response "^4.3.1" + workbox-core "^4.3.1" + workbox-expiration "^4.3.1" + workbox-google-analytics "^4.3.1" + workbox-navigation-preload "^4.3.1" + workbox-precaching "^4.3.1" + workbox-range-requests "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" + workbox-streams "^4.3.1" + workbox-sw "^4.3.1" + workbox-window "^4.3.1" + +workbox-cacheable-response@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz#f53e079179c095a3f19e5313b284975c91428c91" + integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw== + dependencies: + workbox-core "^4.3.1" + +workbox-core@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-4.3.1.tgz#005d2c6a06a171437afd6ca2904a5727ecd73be6" + integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg== + +workbox-expiration@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-4.3.1.tgz#d790433562029e56837f341d7f553c4a78ebe921" + integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw== + dependencies: + workbox-core "^4.3.1" + +workbox-google-analytics@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz#9eda0183b103890b5c256e6f4ea15a1f1548519a" + integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg== + dependencies: + workbox-background-sync "^4.3.1" + workbox-core "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" + +workbox-navigation-preload@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz#29c8e4db5843803b34cd96dc155f9ebd9afa453d" + integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw== + dependencies: + workbox-core "^4.3.1" + +workbox-precaching@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-4.3.1.tgz#9fc45ed122d94bbe1f0ea9584ff5940960771cba" + integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ== + dependencies: + workbox-core "^4.3.1" + +workbox-range-requests@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz#f8a470188922145cbf0c09a9a2d5e35645244e74" + integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA== + dependencies: + workbox-core "^4.3.1" + +workbox-routing@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-4.3.1.tgz#a675841af623e0bb0c67ce4ed8e724ac0bed0cda" + integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g== + dependencies: + workbox-core "^4.3.1" + +workbox-strategies@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-4.3.1.tgz#d2be03c4ef214c115e1ab29c9c759c9fe3e9e646" + integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw== + dependencies: + workbox-core "^4.3.1" + +workbox-streams@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-4.3.1.tgz#0b57da70e982572de09c8742dd0cb40a6b7c2cc3" + integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA== + dependencies: + workbox-core "^4.3.1" + +workbox-sw@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" + integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== + +workbox-webpack-plugin@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz#47ff5ea1cc074b6c40fb5a86108863a24120d4bd" + integrity sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ== + dependencies: + "@babel/runtime" "^7.0.0" + json-stable-stringify "^1.0.1" + workbox-build "^4.3.1" + +workbox-window@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-4.3.1.tgz#ee6051bf10f06afa5483c9b8dfa0531994ede0f3" + integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg== + dependencies: + workbox-core "^4.3.1" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.1.2, ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xregexp@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" + integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== + dependencies: + "@babel/runtime-corejs3" "^7.8.3" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.7.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.2.tgz#a29c03f578faafd57dcb27055f9a5d569cb0c3d9" + integrity sha512-omakb0d7FjMo3R1D2EbTKVIk6dAVLRxFXdLZMEUToeAvuqgG/YuHMuQOZ5fgk+vQ8cx+cnGKwyg+8g8PNT0xQg== + dependencies: + "@babel/runtime" "^7.8.7" + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@^13.3.0: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" From 52455e01ba0ee4c7f6c20a2c87bed9343286e725 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Fri, 10 Jul 2020 15:09:16 -0700 Subject: [PATCH 0757/1134] feat(examples): show the create-react-app converted to bazel build --- docs/examples.md | 28 ++++++++++++++++-- examples/create-react-app/BUILD.bazel | 41 ++++++++++++++++++++++++++ examples/create-react-app/README.md | 19 +++--------- examples/create-react-app/WORKSPACE | 30 +++++++++++++++++++ examples/create-react-app/package.json | 8 +++-- examples/create-react-app/yarn.lock | 5 ++++ 6 files changed, 111 insertions(+), 20 deletions(-) create mode 100644 examples/create-react-app/BUILD.bazel create mode 100644 examples/create-react-app/WORKSPACE diff --git a/docs/examples.md b/docs/examples.md index d90f432528..69787db4da 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -25,9 +25,33 @@ Example: [examples/angular_view_engine](https://github.com/bazelbuild/rules_node ## React -There is a basic example at [examples/react_webpack](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/react_webpack) +Similar to the explanation above for Angular, Bazel is agnostic to what tools you choose to run on your project. +However, the benefits of using Bazel are unlocked as you adopt it as your build system. +We think the following examples show a typical migration of adopting Bazel: -We are likely to add more, as the rules_nodejs core maintainers are working on some React projects. +**create-react-app**: If you run `create-react-app`, it will install a build system called `react-scripts`. +As a first step into Bazel, you can simply ask Bazel to wrap the existing build system. +This guarantees compatibility with your current code, and if your objective is just to include a frontend app into +a bigger full-stack Bazel build, this might be the final step in the migration. +However it will run `react-scripts` as a single Bazel action, which means that you gain no incrementality benefit. +So we expect for most applications this is just a first step. + +The [create-react-app example](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/create-react-app) +shows how this will look. We suggest reading the README in that example, and also look at the commit history to that +directory as an illustration of how we started from create-react-app and added Bazel bits. + +**cra-eject**: As a next step to make our Build more incremental and performant, we follow the create-react-app suggestion +of "ejecting" the configuration. This means the `react-scripts` build system is gone, and Bazel can take its place. + +TODO(alexeagle): build an example illustrating how this looks + +**custom**: If you really know your JS build tools, Bazel is the perfect way to assemble all the myriad individual tools +into a custom toolchain. This allows you to unlock any part of the JS ecosystem without waiting for it to be integrated +for you by maintainers of a project like create-react-app, who have a very high bar for adding features since the +maintenance and support burden falls on them. However you'll need to understand both the tools as well as Bazel to +successfully build your own toolchain. + +There is a basic example at [examples/react_webpack](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/react_webpack) but it needs a lot more work to show everything that is possible! ## Vue diff --git a/examples/create-react-app/BUILD.bazel b/examples/create-react-app/BUILD.bazel new file mode 100644 index 0000000000..c9dbfb830b --- /dev/null +++ b/examples/create-react-app/BUILD.bazel @@ -0,0 +1,41 @@ +load("@bazel_skylib//rules:write_file.bzl", "write_file") +load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin") +load("@npm//react-scripts:index.bzl", "react_scripts") + +# We don't want to teach react-scripts to include from multiple directories +# So we copy everything it wants to read to the output "bin" directory +copy_to_bin( + name = "copy_static_files", + srcs = glob([ + "public/*", + "src/*", + ]) + [ + "package.json", + "tsconfig.json", + ], +) + +# react-scripts can only work if the working directory is the root of the application. +# So we'll need to chdir before it runs. +write_file( + name = "write_chdir_script", + out = "chdir.js", + content = ["process.chdir(__dirname)"], +) + +react_scripts( + # Note: this must be named "build" since react-scripts hard-codes that as the output dir + name = "build", + args = [ + "--node_options=--require=./$(execpath chdir.js)", + "build", + ], + data = [ + "chdir.js", + "copy_static_files", + "@npm//@types", + "@npm//react", + "@npm//react-dom", + ], + output_dir = True, +) diff --git a/examples/create-react-app/README.md b/examples/create-react-app/README.md index 64e343e184..a2fe640a29 100644 --- a/examples/create-react-app/README.md +++ b/examples/create-react-app/README.md @@ -1,4 +1,8 @@ This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). +Then Bazel configuration was added in `WORKSPACE` and `BUILD.bazel` + +See the [examples guide](https://bazelbuild.github.io/rules_nodejs/examples#react) for a comparison of the several +approaches you can take to build and test your React app with Bazel. ## Available Scripts @@ -27,18 +31,3 @@ Your app is ready to be deployed! See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. -### `yarn eject` - -**Note: this is a one-way operation. Once you `eject`, you can’t go back!** - -If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. - -You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). diff --git a/examples/create-react-app/WORKSPACE b/examples/create-react-app/WORKSPACE new file mode 100644 index 0000000000..45b821a965 --- /dev/null +++ b/examples/create-react-app/WORKSPACE @@ -0,0 +1,30 @@ +workspace( + name = "create_react_app", + managed_directories = {"@npm": ["node_modules"]}, +) + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "build_bazel_rules_nodejs", + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], +) + +http_archive( + name = "bazel_skylib", + sha256 = "97e70364e9249702246c0e9444bccdc4b847bed1eb03c5a3ece4f83dfe6abc44", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.0.2/bazel-skylib-1.0.2.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.2/bazel-skylib-1.0.2.tar.gz", + ], +) + +load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") + +yarn_install( + # Name this npm so that Bazel Label references look like @npm//package + name = "npm", + package_json = "//:package.json", + yarn_lock = "//:yarn.lock", +) diff --git a/examples/create-react-app/package.json b/examples/create-react-app/package.json index 17d4e45c91..a9e2d3f58c 100644 --- a/examples/create-react-app/package.json +++ b/examples/create-react-app/package.json @@ -15,11 +15,13 @@ "react-scripts": "3.4.1", "typescript": "~3.7.2" }, + "devDependencies": { + "@bazel/bazelisk": "^1.5.0" + }, "scripts": { "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" + "build": "bazel build //:build", + "test": "react-scripts test" }, "eslintConfig": { "extends": "react-app" diff --git a/examples/create-react-app/yarn.lock b/examples/create-react-app/yarn.lock index 97d2aa0cd1..9ca2b682a2 100644 --- a/examples/create-react-app/yarn.lock +++ b/examples/create-react-app/yarn.lock @@ -1078,6 +1078,11 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@bazel/bazelisk@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.5.0.tgz#61f583ed93be138b47be7180403938ea4057f54b" + integrity sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg== + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" From 146e52226bd5a80773f814d747ca4b80b7ac1b70 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Fri, 10 Jul 2020 15:46:36 -0700 Subject: [PATCH 0758/1134] feat(examples): convert create-react-app example to bazel test --- examples/create-react-app/.bazelignore | 1 + examples/create-react-app/.bazelrc | 1 + examples/create-react-app/BUILD.bazel | 54 +++++++++++++++++-- examples/create-react-app/package.json | 8 +-- .../patches/jest-haste-map+24.9.0.patch | 17 ++++++ examples/create-react-app/yarn.lock | 47 +++++++++++++++- 6 files changed, 118 insertions(+), 10 deletions(-) create mode 100644 examples/create-react-app/.bazelignore create mode 100644 examples/create-react-app/.bazelrc create mode 100644 examples/create-react-app/patches/jest-haste-map+24.9.0.patch diff --git a/examples/create-react-app/.bazelignore b/examples/create-react-app/.bazelignore new file mode 100644 index 0000000000..3c3629e647 --- /dev/null +++ b/examples/create-react-app/.bazelignore @@ -0,0 +1 @@ +node_modules diff --git a/examples/create-react-app/.bazelrc b/examples/create-react-app/.bazelrc new file mode 100644 index 0000000000..b98fc09774 --- /dev/null +++ b/examples/create-react-app/.bazelrc @@ -0,0 +1 @@ +test --test_output=errors diff --git a/examples/create-react-app/BUILD.bazel b/examples/create-react-app/BUILD.bazel index c9dbfb830b..9131689519 100644 --- a/examples/create-react-app/BUILD.bazel +++ b/examples/create-react-app/BUILD.bazel @@ -1,20 +1,39 @@ load("@bazel_skylib//rules:write_file.bzl", "write_file") load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin") -load("@npm//react-scripts:index.bzl", "react_scripts") +load("@npm//react-scripts:index.bzl", "react_scripts", "react_scripts_test") + +# Filename conventions described at +# https://create-react-app.dev/docs/running-tests#filename-conventions +_TESTS = [ + "src/**/*.test.js*", + "src/**/*.test.ts*", + "src/**/*.spec.js*", + "src/**/*.test.ts*", + "src/**/__tests__/**/*.js*", + "src/**/__tests__/**/*.ts*", +] # We don't want to teach react-scripts to include from multiple directories # So we copy everything it wants to read to the output "bin" directory copy_to_bin( name = "copy_static_files", - srcs = glob([ - "public/*", - "src/*", - ]) + [ + srcs = glob( + [ + "public/*", + "src/**/*", + ], + exclude = _TESTS, + ) + [ "package.json", "tsconfig.json", ], ) +copy_to_bin( + name = "copy_test_files", + srcs = glob(_TESTS), +) + # react-scripts can only work if the working directory is the root of the application. # So we'll need to chdir before it runs. write_file( @@ -39,3 +58,28 @@ react_scripts( ], output_dir = True, ) + +react_scripts_test( + name = "test", + args = [ + "--node_options=--require=$(rootpath chdir.js)", + "test", + # ibazel is the watch mode for Bazel when running tests + # Because Bazel is really a CI system that runs locally + "--watchAll=false", + "--no-cache", + "--no-watchman", + "--ci", + ], + data = [ + "chdir.js", + "copy_static_files", + "copy_test_files", + "@npm//@testing-library/dom", + "@npm//@testing-library/jest-dom", + "@npm//@testing-library/react", + "@npm//@testing-library/user-event", + "@npm//react", + "@npm//react-dom", + ], +) diff --git a/examples/create-react-app/package.json b/examples/create-react-app/package.json index a9e2d3f58c..a19f06e297 100644 --- a/examples/create-react-app/package.json +++ b/examples/create-react-app/package.json @@ -16,12 +16,14 @@ "typescript": "~3.7.2" }, "devDependencies": { - "@bazel/bazelisk": "^1.5.0" + "@bazel/bazelisk": "^1.5.0", + "@bazel/ibazel": "^0.13.1", + "patch-package": "^6.2.2" }, "scripts": { - "start": "react-scripts start", + "start": "ibazel run //:start", "build": "bazel build //:build", - "test": "react-scripts test" + "test": "ibazel test //:test" }, "eslintConfig": { "extends": "react-app" diff --git a/examples/create-react-app/patches/jest-haste-map+24.9.0.patch b/examples/create-react-app/patches/jest-haste-map+24.9.0.patch new file mode 100644 index 0000000000..3ba9ec10ee --- /dev/null +++ b/examples/create-react-app/patches/jest-haste-map+24.9.0.patch @@ -0,0 +1,17 @@ +diff --git a/node_modules/jest-haste-map/build/crawlers/node.js b/node_modules/jest-haste-map/build/crawlers/node.js +index 23985ae..182c7e8 100644 +--- a/node_modules/jest-haste-map/build/crawlers/node.js ++++ b/node_modules/jest-haste-map/build/crawlers/node.js +@@ -166,7 +166,12 @@ function find(roots, extensions, ignore, callback) { + + function findNative(roots, extensions, ignore, callback) { + const args = Array.from(roots); ++ args.push('('); + args.push('-type', 'f'); ++ args.push('-o'); ++ args.push('-type', 'l'); ++ args.push(')'); ++ + + if (extensions.length) { + args.push('('); diff --git a/examples/create-react-app/yarn.lock b/examples/create-react-app/yarn.lock index 9ca2b682a2..c82deae7f6 100644 --- a/examples/create-react-app/yarn.lock +++ b/examples/create-react-app/yarn.lock @@ -1083,6 +1083,11 @@ resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.5.0.tgz#61f583ed93be138b47be7180403938ea4057f54b" integrity sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg== +"@bazel/ibazel@^0.13.1": + version "0.13.1" + resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" + integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -1850,6 +1855,11 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + abab@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" @@ -4578,6 +4588,14 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" +find-yarn-workspace-root@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" + integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== + dependencies: + fs-extra "^4.0.3" + micromatch "^3.1.4" + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -4682,7 +4700,7 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-extra@^4.0.2: +fs-extra@^4.0.2, fs-extra@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== @@ -4691,7 +4709,7 @@ fs-extra@^4.0.2: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^7.0.0: +fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== @@ -6365,6 +6383,13 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -7475,6 +7500,24 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +patch-package@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.2.2.tgz#71d170d650c65c26556f0d0fbbb48d92b6cc5f39" + integrity sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^2.4.2" + cross-spawn "^6.0.5" + find-yarn-workspace-root "^1.2.1" + fs-extra "^7.0.1" + is-ci "^2.0.0" + klaw-sync "^6.0.0" + minimist "^1.2.0" + rimraf "^2.6.3" + semver "^5.6.0" + slash "^2.0.0" + tmp "^0.0.33" + path-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" From a8ff87241ddb0e139d4a0a327c146d5aeb13f904 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Fri, 10 Jul 2020 16:39:12 -0700 Subject: [PATCH 0759/1134] feat(examples): convert create-react-app example to bazel run --- examples/create-react-app/BUILD.bazel | 38 ++++++++++++++++----------- examples/create-react-app/README.md | 6 +++-- examples/create-react-app/src/App.tsx | 2 +- 3 files changed, 28 insertions(+), 18 deletions(-) diff --git a/examples/create-react-app/BUILD.bazel b/examples/create-react-app/BUILD.bazel index 9131689519..12734586fe 100644 --- a/examples/create-react-app/BUILD.bazel +++ b/examples/create-react-app/BUILD.bazel @@ -29,11 +29,6 @@ copy_to_bin( ], ) -copy_to_bin( - name = "copy_test_files", - srcs = glob(_TESTS), -) - # react-scripts can only work if the working directory is the root of the application. # So we'll need to chdir before it runs. write_file( @@ -42,6 +37,13 @@ write_file( content = ["process.chdir(__dirname)"], ) +_RUNTIME_DEPS = [ + "chdir.js", + "copy_static_files", + "@npm//react", + "@npm//react-dom", +] + react_scripts( # Note: this must be named "build" since react-scripts hard-codes that as the output dir name = "build", @@ -49,16 +51,17 @@ react_scripts( "--node_options=--require=./$(execpath chdir.js)", "build", ], - data = [ - "chdir.js", - "copy_static_files", + data = _RUNTIME_DEPS + [ "@npm//@types", - "@npm//react", - "@npm//react-dom", ], output_dir = True, ) +copy_to_bin( + name = "copy_test_files", + srcs = glob(_TESTS), +) + react_scripts_test( name = "test", args = [ @@ -71,15 +74,20 @@ react_scripts_test( "--no-watchman", "--ci", ], - data = [ - "chdir.js", - "copy_static_files", + data = _RUNTIME_DEPS + [ "copy_test_files", "@npm//@testing-library/dom", "@npm//@testing-library/jest-dom", "@npm//@testing-library/react", "@npm//@testing-library/user-event", - "@npm//react", - "@npm//react-dom", ], ) + +react_scripts( + name = "start", + args = [ + "--node_options=--require=$(rootpath chdir.js)", + "start", + ], + data = _RUNTIME_DEPS, +) diff --git a/examples/create-react-app/README.md b/examples/create-react-app/README.md index a2fe640a29..91b0995f44 100644 --- a/examples/create-react-app/README.md +++ b/examples/create-react-app/README.md @@ -6,7 +6,7 @@ approaches you can take to build and test your React app with Bazel. ## Available Scripts -In the project directory, you can run: +Just like with stock create-react-app, we have the same developer workflow. In the project directory, you can run: ### `yarn start` @@ -19,7 +19,9 @@ You will also see any lint errors in the console. ### `yarn test` Launches the test runner in the interactive watch mode.
-See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. +Note that it restarts Jest on each change, so there's a large time penalty on each re-run. +This can be solved by making Jest ibazel-aware as we did with Karma. +See https://github.com/bazelbuild/rules_nodejs/issues/2028 ### `yarn build` diff --git a/examples/create-react-app/src/App.tsx b/examples/create-react-app/src/App.tsx index a53698aab3..58f096550b 100644 --- a/examples/create-react-app/src/App.tsx +++ b/examples/create-react-app/src/App.tsx @@ -8,7 +8,7 @@ function App() {
logo

- Edit src/App.tsx and save to reload. + Edit src/App.tsx and saverate to reload.

Date: Fri, 10 Jul 2020 16:51:51 -0700 Subject: [PATCH 0760/1134] ci: add testing for create-react-app example --- .bazelrc | 4 ++-- examples/BUILD.bazel | 4 ++++ examples/create-react-app/BUILD.bazel | 12 +++++++++++- examples/create-react-app/build_smoke_test.js | 7 +++++++ examples/create-react-app/package.json | 3 ++- 5 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 examples/create-react-app/build_smoke_test.js diff --git a/.bazelrc b/.bazelrc index c5eb17cfe0..16ddc4b614 100644 --- a/.bazelrc +++ b/.bazelrc @@ -5,8 +5,8 @@ import %workspace%/common.bazelrc # This lets us glob() up all the files inside the examples to make them inputs to tests # To update these lines, just run `yarn bazel:update-deleted-packages` # (Note, we cannot use common --deleted_packages because the bazel version command doesn't support it) -build --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp -query --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp +build --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp +query --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp # Mock versioning command to test the --stamp behavior build --workspace_status_command="echo BUILD_SCM_VERSION 1.2.3" diff --git a/examples/BUILD.bazel b/examples/BUILD.bazel index 1e3d369376..60339daacd 100644 --- a/examples/BUILD.bazel +++ b/examples/BUILD.bazel @@ -63,6 +63,10 @@ example_integration_test( tags = ["no-bazelci-windows"], ) +example_integration_test( + name = "examples_create-react-app", +) + example_integration_test( name = "examples_react_webpack", # TODO: add some tests in the example diff --git a/examples/create-react-app/BUILD.bazel b/examples/create-react-app/BUILD.bazel index 12734586fe..38167d0669 100644 --- a/examples/create-react-app/BUILD.bazel +++ b/examples/create-react-app/BUILD.bazel @@ -1,5 +1,5 @@ load("@bazel_skylib//rules:write_file.bzl", "write_file") -load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin") +load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin", "nodejs_test") load("@npm//react-scripts:index.bzl", "react_scripts", "react_scripts_test") # Filename conventions described at @@ -57,6 +57,12 @@ react_scripts( output_dir = True, ) +nodejs_test( + name = "build_smoke_test", + data = ["build"], + entry_point = "build_smoke_test.js", +) + copy_to_bin( name = "copy_test_files", srcs = glob(_TESTS), @@ -81,6 +87,10 @@ react_scripts_test( "@npm//@testing-library/react", "@npm//@testing-library/user-event", ], + # Need to set the pwd to avoid jest needing a runfiles helper + # Windows users with permissions can use --enable_runfiles + # to make this test work + tags = ["no-bazelci-windows"], ) react_scripts( diff --git a/examples/create-react-app/build_smoke_test.js b/examples/create-react-app/build_smoke_test.js new file mode 100644 index 0000000000..40172bf3d5 --- /dev/null +++ b/examples/create-react-app/build_smoke_test.js @@ -0,0 +1,7 @@ +const assert = require('assert'); +const fs = require('fs'); +const runfiles = require(process.env['BAZEL_NODE_RUNFILES_HELPER']); + +// Make sure there's a file like build/static/js/main.12345678.chunk.js +const jsDir = runfiles.resolvePackageRelative('build/static/js'); +assert.ok(fs.readdirSync(jsDir).some(f => /main\.[0-9a-f]{8}\.chunk\.js/.test(f))); diff --git a/examples/create-react-app/package.json b/examples/create-react-app/package.json index a19f06e297..fa923fe818 100644 --- a/examples/create-react-app/package.json +++ b/examples/create-react-app/package.json @@ -23,7 +23,8 @@ "scripts": { "start": "ibazel run //:start", "build": "bazel build //:build", - "test": "ibazel test //:test" + "test": "ibazel test //:test", + "postinstall": "patch-package" }, "eslintConfig": { "extends": "react-app" From 2335347ce9893d5b990b72674b04be711e633367 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 13 Jul 2020 14:13:55 -0700 Subject: [PATCH 0761/1134] chore: cleanup patch which was merged upstream --- bazel-integration-testing.patch | 54 --------------------------------- package.bzl | 8 ++--- 2 files changed, 3 insertions(+), 59 deletions(-) delete mode 100644 bazel-integration-testing.patch diff --git a/bazel-integration-testing.patch b/bazel-integration-testing.patch deleted file mode 100644 index 9cfbcd98d4..0000000000 --- a/bazel-integration-testing.patch +++ /dev/null @@ -1,54 +0,0 @@ -diff tools/repositories.bzl tools/repositories.bzl -index 8364dac..42e998d 100644 ---- tools/repositories.bzl -+++ tools/repositories.bzl -@@ -15,11 +15,6 @@ - load("//tools:bazel_hash_dict.bzl", "BAZEL_HASH_DICT") - load(":common.bzl", "BAZEL_VERSIONS") - --_BAZEL_BINARY_PACKAGES = [ -- "http://releases.bazel.build/{version}/release/bazel-{version}{installer}-{platform}.{extension}", -- "https://github.com/bazelbuild/bazel/releases/download/{version}/bazel-{version}{installer}-{platform}.{extension}", --] -- - def _get_platform_name(rctx): - os_name = rctx.os.name.lower() - -@@ -45,7 +40,36 @@ def _get_installer(rctx): - extension = "sh" - installer = "-installer" - -- urls = [url.format(version=version, installer=installer, platform=platform, extension=extension) for url in _BAZEL_BINARY_PACKAGES] -+ filename = "bazel-{version}{installer}-{platform}.{extension}".format( -+ version = version, -+ installer = installer, -+ platform = platform, -+ extension = extension, -+ ) -+ -+ kind = "release" -+ # Mimics determineURL in github.com/bazelbuild/bazelisk/bazelisk.go -+ enabled_packages = [ -+ "https://releases.bazel.build/{version}/{kind}/{filename}", -+ ] -+ -+ if "rc" in version: -+ version_components = version.split("rc") -+ version = version_components[0] -+ kind = "rc" + version_components[1] -+ else: -+ enabled_packages.append( -+ "https://github.com/{fork}/bazel/releases/download/{version}/{filename}") -+ urls = [ -+ url.format( -+ # TODO: support other forks like bazelisk does -+ fork = "bazelbuild", -+ version=version, -+ kind = kind, -+ filename = filename, -+ ) -+ for url in enabled_packages -+ ] - args = {"url": urls, "type": "zip"} - if version in BAZEL_HASH_DICT and platform in BAZEL_HASH_DICT[version]: - args["sha256"] = BAZEL_HASH_DICT[version][platform] diff --git a/package.bzl b/package.bzl index 06218e03e4..19f60e74fc 100644 --- a/package.bzl +++ b/package.bzl @@ -87,13 +87,11 @@ def rules_nodejs_dev_dependencies(): http_archive( name = "build_bazel_integration_testing", - patches = ["//:bazel-integration-testing.patch"], urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-integration-testing/archive/922d2b04bfb9721ab14ff6d26d4a8a6ab847aa07.zip", - "https://github.com/bazelbuild/bazel-integration-testing/archive/922d2b04bfb9721ab14ff6d26d4a8a6ab847aa07.zip", + "https://github.com/bazelbuild/bazel-integration-testing/archive/165440b2dbda885f8d1ccb8d0f417e6cf8c54f17.zip", ], - strip_prefix = "bazel-integration-testing-922d2b04bfb9721ab14ff6d26d4a8a6ab847aa07", - sha256 = "490554b98da4ce6e3e1e074e01b81e8440b760d4f086fccf50085a25528bf5cd", + strip_prefix = "bazel-integration-testing-165440b2dbda885f8d1ccb8d0f417e6cf8c54f17", + sha256 = "2401b1369ef44cc42f91dc94443ef491208dbd06da1e1e10b702d8c189f098e3", ) http_archive( From 092bfbc605c4518ec8ba484f18ae022e6eed4933 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Wed, 15 Jul 2020 15:08:19 -0700 Subject: [PATCH 0762/1134] chore: add missing @angular_deps managed directory (#2041) --- WORKSPACE | 1 + 1 file changed, 1 insertion(+) diff --git a/WORKSPACE b/WORKSPACE index c4c8edc836..80404712f7 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -15,6 +15,7 @@ workspace( name = "build_bazel_rules_nodejs", managed_directories = { + "@angular_deps": ["packages/angular/node_modules"], # cypress_deps must be a managed directory to ensure it is downloaded before cypress_repository is run. "@cypress_deps": ["packages/cypress/test/node_modules"], "@npm": ["node_modules"], From d8d62714578e705381538e33fb82bda118dee6c0 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Wed, 15 Jul 2020 21:20:08 -0700 Subject: [PATCH 0763/1134] test: add nodejs_image e2e test --- .bazelci/presubmit.yml | 4 +- .bazelrc | 4 +- .circleci/config.yml | 2 +- .../ci => .circleci}/run_integration_tests.sh | 2 +- e2e/BUILD.bazel | 15 +++++++ e2e/nodejs_image/.bazelrc | 1 + e2e/nodejs_image/BUILD.bazel | 20 +++++++++ e2e/nodejs_image/WORKSPACE | 42 +++++++++++++++++++ e2e/nodejs_image/main.js | 1 + e2e/nodejs_image/nodejs_image.yaml | 9 ++++ 10 files changed, 94 insertions(+), 6 deletions(-) rename {scripts/ci => .circleci}/run_integration_tests.sh (91%) create mode 100644 e2e/nodejs_image/.bazelrc create mode 100644 e2e/nodejs_image/BUILD.bazel create mode 100644 e2e/nodejs_image/WORKSPACE create mode 100644 e2e/nodejs_image/main.js create mode 100644 e2e/nodejs_image/nodejs_image.yaml diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml index bb248843f1..5e2c576ec9 100644 --- a/.bazelci/presubmit.yml +++ b/.bazelci/presubmit.yml @@ -310,7 +310,7 @@ tasks: # We control Bazel version in integration tests, so we don't need USE_BAZEL_VERSION for tests. skip_use_bazel_version_for_test: true test_flags: - - "--test_tag_filters=e2e" + - "--test_tag_filters=e2e,-no-bazelci-mac" - "--local_ram_resources=792" # test_args will be passed to the nested bazel process # TODO(gregmagolan): fix frequent flake with multiple cores in nested bazel (osx buildkite & local) @@ -414,7 +414,7 @@ tasks: # We control Bazel version in integration tests, so we don't need USE_BAZEL_VERSION for tests. skip_use_bazel_version_for_test: true test_flags: - - "--test_tag_filters=e2e,-fix-windows" + - "--test_tag_filters=e2e,-fix-windows,-no-bazelci-windows" - "--local_ram_resources=792" # test_args will be passed to the nested bazel process - "--test_arg=--local_ram_resources=13288" diff --git a/.bazelrc b/.bazelrc index 16ddc4b614..298bb4bea6 100644 --- a/.bazelrc +++ b/.bazelrc @@ -5,8 +5,8 @@ import %workspace%/common.bazelrc # This lets us glob() up all the files inside the examples to make them inputs to tests # To update these lines, just run `yarn bazel:update-deleted-packages` # (Note, we cannot use common --deleted_packages because the bazel version command doesn't support it) -build --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp -query --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp +build --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp +query --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp # Mock versioning command to test the --stamp behavior build --workspace_status_command="echo BUILD_SCM_VERSION 1.2.3" diff --git a/.circleci/config.yml b/.circleci/config.yml index 3700dc8f8e..c4421f0fb5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -175,7 +175,7 @@ jobs: - *init_bazel - *hide_node_and_yarn_local_binaries - run: - command: ./scripts/ci/run_integration_tests.sh ${CIRCLE_NODE_INDEX} ${CIRCLE_NODE_TOTAL} + command: ./.circleci/run_integration_tests.sh ${CIRCLE_NODE_INDEX} ${CIRCLE_NODE_TOTAL} no_output_timeout: 30m test_integration_manual: diff --git a/scripts/ci/run_integration_tests.sh b/.circleci/run_integration_tests.sh similarity index 91% rename from scripts/ci/run_integration_tests.sh rename to .circleci/run_integration_tests.sh index ee4492275e..00bf0b23ad 100755 --- a/scripts/ci/run_integration_tests.sh +++ b/.circleci/run_integration_tests.sh @@ -10,7 +10,7 @@ readonly MAX_SHARDS=${2:-1} # Get a sorted list of all test targets. We sort to ensure that each shard gets the same list # incase there is any inconstencies with bazel query on different shards. -readonly QUERY_RESULT=$(bazel query 'kind("bazel_integration_test", //examples/... union //e2e/...)') +readonly QUERY_RESULT=$(bazel query 'kind("bazel_integration_test", //examples/... union //e2e/...) except attr("tags", "no-circleci", //examples/... union //e2e/...)') declare TEST_TARGETS_ARRAY=() for target in ${QUERY_RESULT}; do TEST_TARGETS_ARRAY+=("${target}") diff --git a/e2e/BUILD.bazel b/e2e/BUILD.bazel index 4b0b1624f6..4e1300a259 100644 --- a/e2e/BUILD.bazel +++ b/e2e/BUILD.bazel @@ -40,6 +40,21 @@ e2e_integration_test( name = "e2e_node_loader_preserve_symlinks", ) +e2e_integration_test( + name = "e2e_nodejs_image", + bazel_commands = [ + "info", + "test ...", + "run --platforms=@build_bazel_rules_nodejs//toolchains/node:linux_amd64 //:nodejs_image", + ], + # Only run on buildkite linux as other CI platforms have no docker available + tags = [ + "no-bazelci-mac", + "no-bazelci-windows", + "no-circleci", + ], +) + e2e_integration_test( name = "e2e_packages", # TODO(alex): figure out why this is broken by turning on linker diff --git a/e2e/nodejs_image/.bazelrc b/e2e/nodejs_image/.bazelrc new file mode 100644 index 0000000000..3431057af6 --- /dev/null +++ b/e2e/nodejs_image/.bazelrc @@ -0,0 +1 @@ +import %workspace%/../../common.bazelrc diff --git a/e2e/nodejs_image/BUILD.bazel b/e2e/nodejs_image/BUILD.bazel new file mode 100644 index 0000000000..2e37a7e24b --- /dev/null +++ b/e2e/nodejs_image/BUILD.bazel @@ -0,0 +1,20 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary") +load("@io_bazel_rules_docker//contrib:test.bzl", "container_test") +load("@io_bazel_rules_docker//nodejs:image.bzl", "nodejs_image") + +nodejs_binary( + name = "main", + entry_point = "main.js", +) + +# bazel run --platforms=@build_bazel_rules_nodejs//toolchains/node:linux_amd64 //:nodejs_image +nodejs_image( + name = "nodejs_image", + binary = ":main", +) + +container_test( + name = "nodejs_image_test", + configs = [":nodejs_image.yaml"], + image = ":nodejs_image", +) diff --git a/e2e/nodejs_image/WORKSPACE b/e2e/nodejs_image/WORKSPACE new file mode 100644 index 0000000000..b0ad0c0ab6 --- /dev/null +++ b/e2e/nodejs_image/WORKSPACE @@ -0,0 +1,42 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +workspace(name = "e2e_nodejs_image") + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "build_bazel_rules_nodejs", + sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], +) + +load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories") + +node_repositories() + +http_archive( + name = "io_bazel_rules_docker", + sha256 = "6287241e033d247e9da5ff705dd6ef526bac39ae82f3d17de1b69f8cb313f9cd", + strip_prefix = "rules_docker-0.14.3", + urls = ["https://github.com/bazelbuild/rules_docker/releases/download/v0.14.3/rules_docker-v0.14.3.tar.gz"], +) + +load("@io_bazel_rules_docker//repositories:repositories.bzl", container_repositories = "repositories") + +container_repositories() + +load("@io_bazel_rules_docker//nodejs:image.bzl", nodejs_image_repositories = "repositories") + +nodejs_image_repositories() diff --git a/e2e/nodejs_image/main.js b/e2e/nodejs_image/main.js new file mode 100644 index 0000000000..5893f9d0d5 --- /dev/null +++ b/e2e/nodejs_image/main.js @@ -0,0 +1 @@ +console.log('hello world'); \ No newline at end of file diff --git a/e2e/nodejs_image/nodejs_image.yaml b/e2e/nodejs_image/nodejs_image.yaml new file mode 100644 index 0000000000..8b92a1e9a5 --- /dev/null +++ b/e2e/nodejs_image/nodejs_image.yaml @@ -0,0 +1,9 @@ +schemaVersion: 2.0.0 + +metadataTest: + cmd: [] + env: + - key: PATH + value: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + entrypoint: ['/app//main'] + workdir: "/app//main.runfiles/e2e_nodejs_image" From f3fd5946205c3b4512ed390aa4e9e0e970ef9c14 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Wed, 15 Jul 2020 21:56:09 -0700 Subject: [PATCH 0764/1134] test: add nodejs_binary as data test --- internal/node/test/binary_as_data/BUILD.bazel | 12 +++++++++++ internal/node/test/binary_as_data/main.js | 1 + internal/node/test/binary_as_data/test.js | 21 +++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 internal/node/test/binary_as_data/BUILD.bazel create mode 100644 internal/node/test/binary_as_data/main.js create mode 100644 internal/node/test/binary_as_data/test.js diff --git a/internal/node/test/binary_as_data/BUILD.bazel b/internal/node/test/binary_as_data/BUILD.bazel new file mode 100644 index 0000000000..2220436925 --- /dev/null +++ b/internal/node/test/binary_as_data/BUILD.bazel @@ -0,0 +1,12 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary", "nodejs_test") + +nodejs_binary( + name = "main_bin", + entry_point = "main.js", +) + +nodejs_test( + name = "main_bin_data_test", + data = [":main_bin"], + entry_point = "test.js", +) diff --git a/internal/node/test/binary_as_data/main.js b/internal/node/test/binary_as_data/main.js new file mode 100644 index 0000000000..5893f9d0d5 --- /dev/null +++ b/internal/node/test/binary_as_data/main.js @@ -0,0 +1 @@ +console.log('hello world'); \ No newline at end of file diff --git a/internal/node/test/binary_as_data/test.js b/internal/node/test/binary_as_data/test.js new file mode 100644 index 0000000000..a6aab1620f --- /dev/null +++ b/internal/node/test/binary_as_data/test.js @@ -0,0 +1,21 @@ +const os = require('os'); +const child_process = require('child_process'); + +const nodejsBinaryExt = os.platform() === 'win32' ? '.bat' : '.sh'; +const mainBin = require.resolve(`./main_bin${nodejsBinaryExt}`); + +function runBinary(binary) { + console.log(`Running ${binary} in ${process.env.TEST_TMPDIR}`); + const spawnedProcess = child_process.spawnSync(binary, [], { + stdio: 'inherit', + cwd: process.env.TEST_TMPDIR, + env: {...process.env}, + }); + + if (spawnedProcess.status !== 0) { + console.error(`Command ${binary} failed. See error above.`); + process.exit(1); + } +}; + +runBinary(mainBin); \ No newline at end of file From 4d2000bf3e34825ba27e3c1ccca2d28f91a672a2 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Wed, 15 Jul 2020 23:45:51 -0700 Subject: [PATCH 0765/1134] chore: update circleci image to node:12.8.2-browsers which contains chrome 84 --- .circleci/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c4421f0fb5..bb4d017da3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,9 +9,9 @@ ## IMPORTANT # If you change the `default_docker_image` version, also change the `cache_key` version -var_1: &default_docker_image circleci/node:12.16 -var_2: &browsers_docker_image circleci/node:12.16-browsers -var_3: &cache_key node-12.16-{{ checksum "yarn.lock" }} +var_1: &default_docker_image circleci/node:12.18.2 +var_2: &browsers_docker_image circleci/node:12.18.2-browsers +var_3: &cache_key node-12.18.2-{{ checksum "yarn.lock" }} var_4: &init_environment run: From b187d5064a7fda0e7aff433311077e7c3323f97b Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Thu, 16 Jul 2020 00:13:17 -0700 Subject: [PATCH 0766/1134] fix(builtin): linker fix for when not running in execroot --- internal/linker/index.js | 6 ++++-- internal/linker/link_node_modules.ts | 16 ++++++++++++++-- internal/node/launcher.sh | 6 ++++-- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/internal/linker/index.js b/internal/linker/index.js index 1500fe1230..0adba74cde 100644 --- a/internal/linker/index.js +++ b/internal/linker/index.js @@ -126,8 +126,10 @@ function resolveRoot(root, startCwd, isExecroot, runfiles) { } const match = startCwd.match(/(\/bazel-out\/|\/bazel-~1\/x64_wi~1\/)/); if (!match) { - panic(`No 'bazel-out' folder found in path '${startCwd}'!`); - return ''; + if (!root) { + return `${startCwd}/node_modules`; + } + return path.resolve(`${startCwd}/../${root}`); } const symlinkRoot = startCwd.slice(0, match.index); process.chdir(symlinkRoot); diff --git a/internal/linker/link_node_modules.ts b/internal/linker/link_node_modules.ts index f196f8f668..e4e7f92f89 100644 --- a/internal/linker/link_node_modules.ts +++ b/internal/linker/link_node_modules.ts @@ -179,9 +179,21 @@ async function resolveRoot( // c:/b/ojvxx6nx/execroot/build_~1/bazel-~1/x64_wi~1/bin/internal/npm_in~1/test const match = startCwd.match(/(\/bazel-out\/|\/bazel-~1\/x64_wi~1\/)/); if (!match) { - panic(`No 'bazel-out' folder found in path '${startCwd}'!`); - return ''; + // No execroot found. This can happen if we are inside a nodejs_image or a nodejs_binary is + // run manually. + + if (!root) { + // If there is no root, which will be the case if there are no third-party modules + // dependencies for this target, simply link to node_modules at the cwd. + return `${startCwd}/node_modules`; + } + + // If there is a root then attempt to symlink as if we are in runfiles in a sandbox. This will + // be the case for nodejs_image. + return path.resolve(`${startCwd}/../${root}`) } + + // We've found the execroot const symlinkRoot = startCwd.slice(0, match.index); process.chdir(symlinkRoot); diff --git a/internal/node/launcher.sh b/internal/node/launcher.sh index 723486f563..4baa55ecac 100644 --- a/internal/node/launcher.sh +++ b/internal/node/launcher.sh @@ -276,9 +276,11 @@ if [[ "$PWD" == *"/bazel-out/"* ]]; then readonly execroot=${PWD:0:${index}} export BAZEL_PATCH_GUARDS="${execroot}/node_modules" else - # We are in execroot, linker node_modules is in the PWD + # We are in execroot or in some other context all together such as a nodejs_image or a manually + # run nodejs_binary. If this is execroot then linker node_modules is in the PWD. If this another + # context then it is safe to assume the node_modules are there and guard that directory if it exists. export BAZEL_PATCH_GUARDS="${PWD}/node_modules" -fi +fi if [[ -n "${BAZEL_NODE_MODULES_ROOT:-}" ]]; then if [[ "${BAZEL_NODE_MODULES_ROOT}" != "${BAZEL_WORKSPACE}/node_modules" ]]; then # If BAZEL_NODE_MODULES_ROOT is set and it is not , add it to the list of bazel patch guards From 75f7a61a660c012a187bf38241463e0e2b814dac Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Thu, 16 Jul 2020 08:34:32 -0700 Subject: [PATCH 0767/1134] test: update e2e/nodejs_image test to include 1st party & 3rd party npm deps to link --- .bazelrc | 4 ++-- e2e/nodejs_image/BUILD.bazel | 6 ++++++ e2e/nodejs_image/WORKSPACE | 13 ++++++++++--- e2e/nodejs_image/foolib/BUILD.bazel | 8 ++++++++ e2e/nodejs_image/foolib/index.js | 5 +++++ e2e/nodejs_image/main.js | 6 +++++- e2e/nodejs_image/nodejs_image.yaml | 4 ---- e2e/nodejs_image/package.json | 9 +++++++++ e2e/nodejs_image/yarn.lock | 8 ++++++++ 9 files changed, 53 insertions(+), 10 deletions(-) create mode 100644 e2e/nodejs_image/foolib/BUILD.bazel create mode 100644 e2e/nodejs_image/foolib/index.js create mode 100644 e2e/nodejs_image/package.json create mode 100644 e2e/nodejs_image/yarn.lock diff --git a/.bazelrc b/.bazelrc index 298bb4bea6..e6b49732af 100644 --- a/.bazelrc +++ b/.bazelrc @@ -5,8 +5,8 @@ import %workspace%/common.bazelrc # This lets us glob() up all the files inside the examples to make them inputs to tests # To update these lines, just run `yarn bazel:update-deleted-packages` # (Note, we cannot use common --deleted_packages because the bazel version command doesn't support it) -build --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp -query --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp +build --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/nodejs_image/foolib,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp +query --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/nodejs_image/foolib,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp # Mock versioning command to test the --stamp behavior build --workspace_status_command="echo BUILD_SCM_VERSION 1.2.3" diff --git a/e2e/nodejs_image/BUILD.bazel b/e2e/nodejs_image/BUILD.bazel index 2e37a7e24b..c2f9c6b35e 100644 --- a/e2e/nodejs_image/BUILD.bazel +++ b/e2e/nodejs_image/BUILD.bazel @@ -4,7 +4,13 @@ load("@io_bazel_rules_docker//nodejs:image.bzl", "nodejs_image") nodejs_binary( name = "main", + data = [ + "//foolib", + "@npm//date-fns", + ], entry_point = "main.js", + # Turn off require() monkey patches so linker is required to run inside docker container + templated_args = ["--nobazel_patch_module_resolver"], ) # bazel run --platforms=@build_bazel_rules_nodejs//toolchains/node:linux_amd64 //:nodejs_image diff --git a/e2e/nodejs_image/WORKSPACE b/e2e/nodejs_image/WORKSPACE index b0ad0c0ab6..dec80fc709 100644 --- a/e2e/nodejs_image/WORKSPACE +++ b/e2e/nodejs_image/WORKSPACE @@ -12,7 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "e2e_nodejs_image") +workspace( + name = "e2e_nodejs_image", + managed_directories = {"@npm": ["node_modules"]}, +) load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") @@ -22,9 +25,13 @@ http_archive( urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], ) -load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories") +load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") -node_repositories() +yarn_install( + name = "npm", + package_json = "//:package.json", + yarn_lock = "//:yarn.lock", +) http_archive( name = "io_bazel_rules_docker", diff --git a/e2e/nodejs_image/foolib/BUILD.bazel b/e2e/nodejs_image/foolib/BUILD.bazel new file mode 100644 index 0000000000..d005051922 --- /dev/null +++ b/e2e/nodejs_image/foolib/BUILD.bazel @@ -0,0 +1,8 @@ +load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") + +js_library( + name = "foolib", + package_name = "@foo/lib", + srcs = ["index.js"], + visibility = ["//visibility:public"], +) diff --git a/e2e/nodejs_image/foolib/index.js b/e2e/nodejs_image/foolib/index.js new file mode 100644 index 0000000000..5b264e52d8 --- /dev/null +++ b/e2e/nodejs_image/foolib/index.js @@ -0,0 +1,5 @@ +function foo(str) { + return `foo_${str}`; +} + +exports.foo = foo; \ No newline at end of file diff --git a/e2e/nodejs_image/main.js b/e2e/nodejs_image/main.js index 5893f9d0d5..441b92cdb2 100644 --- a/e2e/nodejs_image/main.js +++ b/e2e/nodejs_image/main.js @@ -1 +1,5 @@ -console.log('hello world'); \ No newline at end of file +const format = require('date-fns').format; +const foo = require('@foo/lib').foo; + +const date = format(new Date(2019, 4, 7), 'MMMM d, yyyy'); +console.log(foo('lib'), date); \ No newline at end of file diff --git a/e2e/nodejs_image/nodejs_image.yaml b/e2e/nodejs_image/nodejs_image.yaml index 8b92a1e9a5..203e93a968 100644 --- a/e2e/nodejs_image/nodejs_image.yaml +++ b/e2e/nodejs_image/nodejs_image.yaml @@ -1,9 +1,5 @@ schemaVersion: 2.0.0 metadataTest: - cmd: [] - env: - - key: PATH - value: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" entrypoint: ['/app//main'] workdir: "/app//main.runfiles/e2e_nodejs_image" diff --git a/e2e/nodejs_image/package.json b/e2e/nodejs_image/package.json new file mode 100644 index 0000000000..e654f2f21f --- /dev/null +++ b/e2e/nodejs_image/package.json @@ -0,0 +1,9 @@ +{ + "private": true, + "devDependencies": { + "date-fns": "2.14.0" + }, + "scripts": { + "test": "bazel test ... && bazel un --platforms=@build_bazel_rules_nodejs//toolchains/node:linux_amd64 //:nodejs_image" + } +} diff --git a/e2e/nodejs_image/yarn.lock b/e2e/nodejs_image/yarn.lock new file mode 100644 index 0000000000..a5723f4881 --- /dev/null +++ b/e2e/nodejs_image/yarn.lock @@ -0,0 +1,8 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +date-fns@2.14.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.14.0.tgz#359a87a265bb34ef2e38f93ecf63ac453f9bc7ba" + integrity sha512-1zD+68jhFgDIM0rF05rcwYO8cExdNqxjq4xP1QKM60Q45mnO6zaMWB4tOzrIr4M4GSLntsKeE4c9Bdl2jhL/yw== From c6643093685529b8dc49e36bf0e6977c5e8e3f2f Mon Sep 17 00:00:00 2001 From: pwng Date: Mon, 22 Jun 2020 16:48:29 -0700 Subject: [PATCH 0768/1134] Make error code of `ConformancePatternRule` configurable. PiperOrigin-RevId: 317762152 --- .../tsetse/rules/conformance_pattern_rule.ts | 13 ++++++++----- .../rules/conformance_pattern_rule_test.ts | 4 +++- .../tsetse/util/absolute_matcher_test.ts | 19 ++++++++++++++++++- .../internal/tsetse/util/ast_tools_test.ts | 3 ++- .../internal/tsetse/util/fixer_test.ts | 3 ++- .../internal/tsetse/util/pattern_config.ts | 16 ++++++++++++---- .../util/pattern_engines/name_engine.ts | 4 ++-- .../util/pattern_engines/name_engine_test.ts | 5 ++++- .../util/pattern_engines/pattern_engine.ts | 9 +++++---- .../util/pattern_engines/property_engine.ts | 3 +-- .../pattern_engines/property_engine_test.ts | 4 +++- .../property_non_constant_write_engine.ts | 3 +-- ...property_non_constant_write_engine_test.ts | 3 ++- .../pattern_engines/property_write_engine.ts | 3 +-- .../property_write_engine_test.ts | 5 ++++- .../tsetse/util/property_matcher_test.ts | 9 +++++++-- .../internal/tsetse/util/whitelist_test.ts | 3 ++- 17 files changed, 77 insertions(+), 32 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts index 714c0e7433..d620b87261 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule.ts @@ -2,7 +2,7 @@ import {Checker} from '../checker'; import {ErrorCode} from '../error_code'; import {AbstractRule} from '../rule'; import {Fixer} from '../util/fixer'; -import {Config, PatternKind} from '../util/pattern_config'; +import {PatternKind, PatternRuleConfig} from '../util/pattern_config'; import {NameEngine} from '../util/pattern_engines/name_engine'; import {PatternEngine} from '../util/pattern_engines/pattern_engine'; import {PropertyEngine} from '../util/pattern_engines/property_engine'; @@ -19,11 +19,14 @@ import {PropertyWriteEngine} from '../util/pattern_engines/property_write_engine */ export class ConformancePatternRule implements AbstractRule { readonly ruleName: string; - readonly code = ErrorCode.CONFORMANCE_PATTERN; - + readonly code: number; private readonly engine: PatternEngine; - constructor(config: Config, fixer?: Fixer) { + constructor(config: PatternRuleConfig, fixer?: Fixer) { + this.code = config.errorCode; + // Avoid empty rule names. + this.ruleName = config.name || `conformance-pattern-${config.kind}`; + switch (config.kind) { case PatternKind.BANNED_PROPERTY: this.engine = new PropertyEngine(config, fixer); @@ -40,7 +43,6 @@ export class ConformancePatternRule implements AbstractRule { default: throw new Error('Config type not recognized, or not implemented yet.'); } - this.ruleName = config.name || `conformance-pattern-${config.kind}`; } register(checker: Checker) { @@ -55,3 +57,4 @@ export class ConformancePatternRule implements AbstractRule { * https://github.com/google/closure-compiler/wiki/JS-Conformance-Framework). */ export {PatternKind}; +export {ErrorCode}; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule_test.ts index 9d7eaa08b5..15508124c5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/conformance_pattern_rule_test.ts @@ -1,10 +1,12 @@ import 'jasmine'; -import {ConformancePatternRule, PatternKind} from './conformance_pattern_rule'; + import {customMatchers} from '../util/testing/test_support'; +import {ConformancePatternRule, ErrorCode, PatternKind} from './conformance_pattern_rule'; describe('ConformancePatternRule creation', () => { describe('naming', () => { const baseConfig = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'do not cite', kind: PatternKind.BANNED_PROPERTY_WRITE, values: ['HTMLQuoteElement.prototype.cite'], diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher_test.ts index 3617aad748..9f612c60ba 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/absolute_matcher_test.ts @@ -1,5 +1,5 @@ import 'jasmine'; -import {ConformancePatternRule, PatternKind} from '../rules/conformance_pattern_rule'; +import {ConformancePatternRule, ErrorCode, PatternKind} from '../rules/conformance_pattern_rule'; import {compileAndCheck, customMatchers} from './testing/test_support'; describe('AbsoluteMatcher', () => { @@ -9,6 +9,7 @@ describe('AbsoluteMatcher', () => { it('requires a matcher scope', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned name with no scope', kind: PatternKind.BANNED_NAME, values: ['exec'] @@ -24,6 +25,7 @@ describe('AbsoluteMatcher', () => { describe('file scope', () => { it('matches a file path', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned name with file path', kind: PatternKind.BANNED_NAME, values: ['./file_0|Foo.bar'] @@ -42,6 +44,7 @@ describe('AbsoluteMatcher', () => { it('ignores an exported symbol defined in an unmatched file path', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned name with file path', kind: PatternKind.BANNED_NAME, values: ['./file_0|Foo.bar'] @@ -63,6 +66,7 @@ describe('AbsoluteMatcher', () => { it('ignores an un-exported symbol defined in an unmatched file path', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned name with file path', kind: PatternKind.BANNED_NAME, values: ['./file_0|Foo.bar'] @@ -84,6 +88,7 @@ describe('AbsoluteMatcher', () => { it('matches a local exported definition', () => { // This is a match because Foo.bar is an exported symbol. const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned name with file path', kind: PatternKind.BANNED_NAME, values: ['./file_0|Foo.bar'] @@ -100,6 +105,7 @@ describe('AbsoluteMatcher', () => { it('matches names in import statement', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned name with file path', kind: PatternKind.BANNED_NAME, values: ['./file_0|foo', 'ANY_SYMBOL|bar'] @@ -126,6 +132,7 @@ describe('AbsoluteMatcher', () => { describe('global scope', () => { it('matches an in-stock library method', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned ambient name', kind: PatternKind.BANNED_NAME, values: ['GLOBAL|eval'] @@ -140,6 +147,7 @@ describe('AbsoluteMatcher', () => { it('does not match a custom exported method with the same name', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned ambient name', kind: PatternKind.BANNED_NAME, values: ['GLOBAL|eval'] @@ -155,6 +163,7 @@ describe('AbsoluteMatcher', () => { it('does not match a custom non-exported method with the same name', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned global name', kind: PatternKind.BANNED_NAME, values: ['GLOBAL|Foo.bar'] @@ -168,6 +177,7 @@ describe('AbsoluteMatcher', () => { it('matches an initializer in a named declaration', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned ambient name', kind: PatternKind.BANNED_NAME, values: ['GLOBAL|open'], @@ -184,6 +194,7 @@ describe('AbsoluteMatcher', () => { describe('properties', () => { it('matches a static property', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned name with file path', kind: PatternKind.BANNED_NAME, values: ['./file_0|Foo.s'] @@ -203,6 +214,7 @@ describe('AbsoluteMatcher', () => { it('does not match a property with a name overlapping an in-stock library', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned name without file path', kind: PatternKind.BANNED_NAME, values: ['GLOBAL|open'] @@ -224,6 +236,7 @@ describe('AbsoluteMatcher', () => { it('matches an inherited static property', () => { // This is a match because Moo inherits s from Foo. const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned name with file path', kind: PatternKind.BANNED_NAME, values: ['./file_0|Foo.s'] @@ -245,6 +258,7 @@ describe('AbsoluteMatcher', () => { it('matches an inherited static method', () => { // This is a match because Moo inherits bar from Foo. const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned name with file path', kind: PatternKind.BANNED_NAME, values: ['./file_0|Foo.bar'] @@ -266,6 +280,7 @@ describe('AbsoluteMatcher', () => { it('does not match a redefined inherited static property', () => { // This is not a match because Moo redefines s. const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned name with file path', kind: PatternKind.BANNED_NAME, values: ['./file_0|Foo.s'] @@ -286,6 +301,7 @@ describe('AbsoluteMatcher', () => { it('does not match a redefined inherited static method', () => { // This is not a match because Moo redefines bar. const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned name with file path', kind: PatternKind.BANNED_NAME, values: ['./file_0|Foo.bar'] @@ -306,6 +322,7 @@ describe('AbsoluteMatcher', () => { // This is not a match because even though bar specified is interface Moo, // its actual definition is in class Boo. const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'banned name with file path', kind: PatternKind.BANNED_NAME, values: ['./file_1|Moo.bar'] diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools_test.ts index 7ce342065f..6b0a62ecfd 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools_test.ts @@ -1,5 +1,5 @@ import 'jasmine'; -import {ConformancePatternRule, PatternKind} from '../rules/conformance_pattern_rule'; +import {ConformancePatternRule, ErrorCode, PatternKind} from '../rules/conformance_pattern_rule'; import {setDebug} from './ast_tools'; import {compileAndCheck} from './testing/test_support'; @@ -7,6 +7,7 @@ describe('Debug output', () => { it('turns on and off', () => { const source = `location.href = 'foo';`; const rule = new ConformancePatternRule({ + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'does not matter', kind: PatternKind.BANNED_PROPERTY_WRITE, values: ['Location.prototype.href'] diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer_test.ts index 8ad3eb99a2..470ffce47c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/fixer_test.ts @@ -1,7 +1,7 @@ import 'jasmine'; import * as ts from 'typescript'; import {Failure, Fix} from '../failure'; -import {ConformancePatternRule, PatternKind} from '../rules/conformance_pattern_rule'; +import {ConformancePatternRule, ErrorCode, PatternKind} from '../rules/conformance_pattern_rule'; import {buildReplacementFixer, Fixer, maybeAddNamedImport, maybeAddNamespaceImport} from './fixer'; import {compile, compileAndCheck, customMatchers} from './testing/test_support'; @@ -24,6 +24,7 @@ const uppercaseFixerBuilt: Fixer = buildReplacementFixer((node: ts.Node) => { // The initial config and source off which we run those checks. const baseConfig = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'found citation', kind: PatternKind.BANNED_PROPERTY_WRITE, values: ['HTMLQuoteElement.prototype.cite'], diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index 041fd9d5a6..49e884b59d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -23,11 +23,9 @@ export enum PatternKind { } /** - * A config for ConformancePatternRule. + * A config for `PatternEngine`. */ -export interface Config { - kind: PatternKind; - +export interface PatternEngineConfig { /** * Values have a pattern-specific syntax. * @@ -36,11 +34,21 @@ export interface Config { */ values: string[]; + /** The error code assigned to this pattern. */ + errorCode: number; + /** The error message this pattern will create. */ errorMessage: string; /** A list of whitelist blocks. */ whitelistEntries?: WhitelistEntry[]; +} + +/** + * A config for `ConformancePatternRule`. + */ +export interface PatternRuleConfig extends PatternEngineConfig { + kind: PatternKind; /** * An optional name for that rule, which will be the rule's `ruleName`. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts index aac2a9cf2c..43cf527e30 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts @@ -4,7 +4,6 @@ import {ErrorCode} from '../../error_code'; import {AbsoluteMatcher} from '../absolute_matcher'; import {debugLog} from '../ast_tools'; import {Fixer} from '../fixer'; -import {Config} from '../pattern_config'; import {PatternEngine} from './pattern_engine'; function checkId( @@ -18,6 +17,7 @@ function checkId( return n; } +/** Engine for the BANNED_NAME pattern */ export class NameEngine extends PatternEngine { register(checker: Checker) { for (const value of this.config.values) { @@ -31,7 +31,7 @@ export class NameEngine extends PatternEngine { bannedIdName, this.wrapCheckWithWhitelistingAndFixer( (tc, n: ts.Identifier) => checkId(tc, n, matcher)), - ErrorCode.CONFORMANCE_PATTERN); + this.config.errorCode); } } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine_test.ts index 0a0eeaf552..ce39875463 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine_test.ts @@ -1,10 +1,11 @@ import 'jasmine'; -import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; +import {ConformancePatternRule, ErrorCode, PatternKind} from '../../rules/conformance_pattern_rule'; import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; describe('BANNED_NAME', () => { it('matches simple example of globals', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'no Infinity', kind: PatternKind.BANNED_NAME, values: ['GLOBAL|Infinity'] @@ -18,6 +19,7 @@ describe('BANNED_NAME', () => { it('matches namespaced globals', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'no blob url', kind: PatternKind.BANNED_NAME, values: ['GLOBAL|URL.createObjectURL'] @@ -37,6 +39,7 @@ describe('BANNED_NAME', () => { // not acceptable (the typechecker will throw). const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'should not trigger', kind: PatternKind.BANNED_NAME, values: ['ANY_SYMBOL|whatever'] diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts index a53fae44dc..d6f6a97f00 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts @@ -3,7 +3,7 @@ import * as ts from 'typescript'; import {Checker} from '../../checker'; import {Fix} from '../../failure'; import {Fixer} from '../../util/fixer'; -import {Config} from '../../util/pattern_config'; +import {PatternEngineConfig} from '../../util/pattern_config'; import {Whitelist} from '../../util/whitelist'; import {shouldExamineNode} from '../ast_tools'; @@ -14,15 +14,16 @@ export abstract class PatternEngine { private readonly whitelist: Whitelist; constructor( - protected readonly config: Config, protected readonly fixer?: Fixer) { + protected readonly config: PatternEngineConfig, + protected readonly fixer?: Fixer) { this.whitelist = new Whitelist(config.whitelistEntries); } /** * `register` will be called by the ConformanceRule to tell Tsetse the * PatternEngine will handle matching. Implementations should use - *`checkAndFilterResults` as a wrapper for `check`. - **/ + * `checkAndFilterResults` as a wrapper for `check`. + */ abstract register(checker: Checker): void; /** diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts index 922ac255a5..5fb280bcbf 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts @@ -4,7 +4,6 @@ import {Checker} from '../../checker'; import {ErrorCode} from '../../error_code'; import {debugLog} from '../ast_tools'; import {Fixer} from '../fixer'; -import {Config} from '../pattern_config'; import {PatternEngine} from '../pattern_engines/pattern_engine'; import {PropertyMatcher} from '../property_matcher'; @@ -35,7 +34,7 @@ export class PropertyEngine extends PatternEngine { this.wrapCheckWithWhitelistingAndFixer( (tc, n: ts.PropertyAccessExpression) => checkPropAccessExpr(tc, n, matcher)), - ErrorCode.CONFORMANCE_PATTERN); + this.config.errorCode); } } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine_test.ts index 7993415e1b..e3dcd3cba5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine_test.ts @@ -1,5 +1,6 @@ import 'jasmine'; -import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; + +import {ConformancePatternRule, ErrorCode, PatternKind} from '../../rules/conformance_pattern_rule'; import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; describe('BANNED_PROPERTY', () => { @@ -9,6 +10,7 @@ describe('BANNED_PROPERTY', () => { it('matches a trivial example', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'No Location#href access', kind: PatternKind.BANNED_PROPERTY, values: ['Location.prototype.href'], diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts index 0a672147d8..ece4044f96 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts @@ -5,7 +5,6 @@ import {ErrorCode} from '../../error_code'; import {debugLog, isPropertyWriteExpression} from '../ast_tools'; import {Fixer} from '../fixer'; import {isLiteral} from '../is_literal'; -import {Config} from '../pattern_config'; import {PropertyMatcher} from '../property_matcher'; import {PatternEngine} from './pattern_engine'; @@ -42,7 +41,7 @@ export class PropertyNonConstantWriteEngine extends PatternEngine { ts.SyntaxKind.BinaryExpression, this.wrapCheckWithWhitelistingAndFixer( (tc, n: ts.BinaryExpression) => checkBinExpr(tc, n, matcher)), - ErrorCode.CONFORMANCE_PATTERN); + this.config.errorCode); } } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine_test.ts index 753e08a4fc..fcfabe1963 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine_test.ts @@ -1,5 +1,5 @@ import 'jasmine'; -import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; +import {ConformancePatternRule, ErrorCode, PatternKind} from '../../rules/conformance_pattern_rule'; import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; describe('BANNED_PROPERTY_NON_CONSTANT_WRITE', () => { @@ -8,6 +8,7 @@ describe('BANNED_PROPERTY_NON_CONSTANT_WRITE', () => { `q.cite = 'some example string';\n` + // literal `q.cite = window.name;\n`; // non-literal const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'do not cite dynamically', kind: PatternKind.BANNED_PROPERTY_NON_CONSTANT_WRITE, values: ['HTMLQuoteElement.prototype.cite'] diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts index d0a9e2bb45..58f230e00c 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts @@ -4,7 +4,6 @@ import {Checker} from '../../checker'; import {ErrorCode} from '../../error_code'; import {debugLog, isPropertyWriteExpression} from '../ast_tools'; import {Fixer} from '../fixer'; -import {Config} from '../pattern_config'; import {PatternEngine} from '../pattern_engines/pattern_engine'; import {PropertyMatcher} from '../property_matcher'; @@ -43,7 +42,7 @@ export class PropertyWriteEngine extends PatternEngine { this.wrapCheckWithWhitelistingAndFixer( (tc, n: ts.PropertyAccessExpression) => checkPropAccessExpr(tc, n, matcher)), - ErrorCode.CONFORMANCE_PATTERN); + this.config.errorCode); } } } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine_test.ts index 5aa9f5640f..6956025cd8 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine_test.ts @@ -1,10 +1,11 @@ import 'jasmine'; -import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule'; +import {ConformancePatternRule, ErrorCode, PatternKind} from '../../rules/conformance_pattern_rule'; import {compileAndCheck, customMatchers} from '../../util/testing/test_support'; describe('BANNED_PROPERTY_WRITE', () => { describe('simpler matcher tests', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'do not cite', kind: PatternKind.BANNED_PROPERTY_WRITE, values: ['HTMLQuoteElement.prototype.cite'] @@ -99,6 +100,7 @@ describe('BANNED_PROPERTY_WRITE', () => { it('banning Parent.x matches (instance of Child).x', () => { const configOnParent = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'found write to x', kind: PatternKind.BANNED_PROPERTY_WRITE, values: ['Parent.prototype.x'] @@ -111,6 +113,7 @@ describe('BANNED_PROPERTY_WRITE', () => { it('banning Child.x matches x defined on Parent', () => { const configOnChild = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'found write to x', kind: PatternKind.BANNED_PROPERTY_WRITE, values: ['Child.prototype.x'] diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/property_matcher_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/property_matcher_test.ts index e4fea908da..4fa55aa595 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/property_matcher_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/property_matcher_test.ts @@ -1,5 +1,5 @@ import 'jasmine'; -import {ConformancePatternRule, PatternKind} from '../rules/conformance_pattern_rule'; +import {ConformancePatternRule, ErrorCode, PatternKind} from '../rules/conformance_pattern_rule'; import {compileAndCheck, customMatchers} from './testing/test_support'; describe('PropertyMatcher', () => { @@ -9,6 +9,7 @@ describe('PropertyMatcher', () => { it('matches simple property access on dom properties', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'No Location#href access', kind: PatternKind.BANNED_PROPERTY, values: ['Location.prototype.href'], @@ -25,6 +26,7 @@ describe('PropertyMatcher', () => { it('matches simple property access on properties of TS built-in types', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'No Array#map access', kind: PatternKind.BANNED_PROPERTY, values: ['Array.prototype.map'], @@ -43,6 +45,7 @@ describe('PropertyMatcher', () => { it('matches simple property access on properties of user-defined global types', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'No Ty#foo access', kind: PatternKind.BANNED_PROPERTY, values: ['Ty.prototype.foo'], @@ -78,13 +81,14 @@ describe('PropertyMatcher', () => { it('does not match in-module defined type', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'No Location#replace access', kind: PatternKind.BANNED_PROPERTY, values: ['Location.prototype.location'], }; const source = `export {}; // export makes the file a module class Location { replace(x: string) {} } - new Location().replace('a');` + new Location().replace('a');`; const results = compileAndCheck(new ConformancePatternRule(config), source); expect(results).toHaveNoFailures(); @@ -92,6 +96,7 @@ describe('PropertyMatcher', () => { it('does not match properties after fancy type casts', () => { const config = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'No Location#href access', kind: PatternKind.BANNED_PROPERTY, values: ['Location.prototype.replace'], diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist_test.ts index b94ea80590..5ed51f60ca 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist_test.ts @@ -1,6 +1,6 @@ import 'jasmine'; -import {ConformancePatternRule, PatternKind} from '../rules/conformance_pattern_rule'; +import {ConformancePatternRule, ErrorCode, PatternKind} from '../rules/conformance_pattern_rule'; import {compileAndCheck, customMatchers, getTempDirForWhitelist} from './testing/test_support'; import {WhitelistReason} from './whitelist'; @@ -18,6 +18,7 @@ describe('ConformancePatternRule', () => { // The initial config off which we run those checks. const baseConfig = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, errorMessage: 'do not cite', kind: PatternKind.BANNED_PROPERTY_WRITE, values: ['HTMLQuoteElement.prototype.cite'], From bfc913bdc9c6f5db08a756d59e40a8f1aa9421aa Mon Sep 17 00:00:00 2001 From: pwng Date: Wed, 24 Jun 2020 14:52:24 -0700 Subject: [PATCH 0769/1134] Rename whitelist -> allowlist. PiperOrigin-RevId: 318146166 --- .../internal/tsetse/util/allowlist.ts | 96 +++++++++++++++++++ .../{whitelist_test.ts => allowlist_test.ts} | 70 +++++++------- .../internal/tsetse/util/ast_tools.ts | 4 +- .../internal/tsetse/util/pattern_config.ts | 6 +- .../util/pattern_engines/name_engine.ts | 2 +- .../util/pattern_engines/pattern_engine.ts | 10 +- .../util/pattern_engines/property_engine.ts | 2 +- .../property_non_constant_write_engine.ts | 2 +- .../pattern_engines/property_write_engine.ts | 2 +- .../tsetse/util/testing/test_support.ts | 2 +- .../internal/tsetse/util/whitelist.ts | 96 ------------------- 11 files changed, 146 insertions(+), 146 deletions(-) create mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/allowlist.ts rename third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/{whitelist_test.ts => allowlist_test.ts} (67%) delete mode 100644 third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist.ts diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/allowlist.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/allowlist.ts new file mode 100644 index 0000000000..07f64e9407 --- /dev/null +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/allowlist.ts @@ -0,0 +1,96 @@ +/** + * An exemption list entry, corresponding to a logical exemption rule. Use these + * to distinguish between various logical reasons for exempting something: + * for instance, tie these to particular bugs that needed to be exempted, per + * legacy project, manually reviewed entries, and so on. + * + * Exemption lists are based on the file paths provided by the TS compiler, with + * both regexp-based checks and prefix-based checks. + * + * + * Follows the logic in + * https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/conformance.proto. + */ +export interface AllowlistEntry { + /** The category corresponding to this entry. */ + readonly reason: ExemptionReason; + /** Why is this okay to be exempted?. */ + readonly explanation?: string; + + /** + * Regexps for the paths of files that will be ignored by the + * ConformancePattern. Beware, escaping can be tricky. + */ + readonly regexp?: readonly string[]; + /** + * Prefixes for the paths of files that will be ignored by the + * ConformancePattern. + */ + readonly prefix?: readonly string[]; +} + +/** + * The categories of exemption entries. + */ +export enum ExemptionReason { + /** No reason. */ + UNSPECIFIED, + /** Code that has to be grandfathered in (no guarantees). */ + LEGACY, + /** + * Code that does not enter the scope of this particular check (no + * guarantees). + */ + OUT_OF_SCOPE, + /** Manually reviewed exceptions (supposedly okay). */ + MANUALLY_REVIEWED +} + +/** + * A complete allowlist with all related AllowlistEntry grouped together, with + * ExemptionReason ignored since it is purely for documentary purposes. + */ +export class Allowlist { + private readonly allowlistedPrefixes: readonly string[] = []; + private readonly allowlistedRegExps: readonly RegExp[] = []; + // To avoid repeated computation for allowlisting queries with the same file + // path, create a memoizer to cache known results. This is useful in watch + // mode (and possible in language service) when the same files can be compiled + // repeatedly. + private readonly allowlistMemoizer = new Map(); + + constructor(allowlistEntries?: AllowlistEntry[]) { + if (allowlistEntries) { + for (const e of allowlistEntries) { + if (e.prefix) { + this.allowlistedPrefixes = + this.allowlistedPrefixes.concat(...e.prefix); + } + if (e.regexp) { + this.allowlistedRegExps = this.allowlistedRegExps.concat( + ...e.regexp.map(r => new RegExp(r))); + } + } + } + } + + isAllowlisted(filePath: string): boolean { + if (this.allowlistMemoizer.has(filePath)) { + return this.allowlistMemoizer.get(filePath)!; + } + for (const p of this.allowlistedPrefixes) { + if (filePath.startsWith(p)) { + this.allowlistMemoizer.set(filePath, true); + return true; + } + } + for (const re of this.allowlistedRegExps) { + if (re.test(filePath)) { + this.allowlistMemoizer.set(filePath, true); + return true; + } + } + this.allowlistMemoizer.set(filePath, false); + return false; + } +} diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/allowlist_test.ts similarity index 67% rename from third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist_test.ts rename to third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/allowlist_test.ts index 5ed51f60ca..8324c078b5 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/allowlist_test.ts @@ -2,16 +2,16 @@ import 'jasmine'; import {ConformancePatternRule, ErrorCode, PatternKind} from '../rules/conformance_pattern_rule'; -import {compileAndCheck, customMatchers, getTempDirForWhitelist} from './testing/test_support'; -import {WhitelistReason} from './whitelist'; +import {ExemptionReason} from './allowlist'; +import {compileAndCheck, customMatchers, getTempDirForAllowlist} from './testing/test_support'; -const tmpPrefixForWhitelist = getTempDirForWhitelist(); -const tmpRegexpForWhitelist = - `^(?:${getTempDirForWhitelist().replace(/\\/g, '\\\\')})`; +const tmpPrefixForAllowlist = getTempDirForAllowlist(); +const tmpRegexpForAllowlist = + `^(?:${getTempDirForAllowlist().replace(/\\/g, '\\\\')})`; describe('ConformancePatternRule', () => { - describe('whitelist handling', () => { + describe('allowlist handling', () => { const source = `export {};\n` + `const q = document.createElement('q');\n` + `q.cite = 'some example string';\n`; @@ -24,19 +24,19 @@ describe('ConformancePatternRule', () => { values: ['HTMLQuoteElement.prototype.cite'], }; - it('matches if no whitelist (sanity check)', () => { - const config = {...baseConfig, whitelistEntries: []}; + it('matches if no allowlist (sanity check)', () => { + const config = {...baseConfig, allowlistEntries: []}; const rule = new ConformancePatternRule(config); const results = compileAndCheck(rule, source); expect(results).toHaveNFailures(1); }); - it('matches if there is an empty whitelist group', () => { + it('matches if there is an empty allowlist group', () => { const config = { ...baseConfig, - whitelistEntries: [{ - reason: WhitelistReason.UNSPECIFIED, + allowlistEntries: [{ + reason: ExemptionReason.UNSPECIFIED, }] }; const rule = new ConformancePatternRule(config); @@ -45,12 +45,12 @@ describe('ConformancePatternRule', () => { expect(results).toHaveNFailures(1); }); - it('respects prefix-based whitelists (matching test)', () => { + it('respects prefix-based allowlists (matching test)', () => { const config = { ...baseConfig, - whitelistEntries: [{ - reason: WhitelistReason.UNSPECIFIED, - prefix: [tmpPrefixForWhitelist], + allowlistEntries: [{ + reason: ExemptionReason.UNSPECIFIED, + prefix: [tmpPrefixForAllowlist], }] }; const rule = new ConformancePatternRule(config); @@ -59,11 +59,11 @@ describe('ConformancePatternRule', () => { expect(results).toHaveNoFailures(); }); - it('respects prefix-based whitelists (non-matching test)', () => { + it('respects prefix-based allowlists (non-matching test)', () => { const config = { ...baseConfig, - whitelistEntries: [{ - reason: WhitelistReason.UNSPECIFIED, + allowlistEntries: [{ + reason: ExemptionReason.UNSPECIFIED, prefix: ['/nowhere in particular/'], }] }; @@ -73,12 +73,12 @@ describe('ConformancePatternRule', () => { expect(results).toHaveNFailures(1); }); - it('respects regex-based whitelists', () => { + it('respects regex-based allowlists', () => { const config = { ...baseConfig, - whitelistEntries: [{ - reason: WhitelistReason.UNSPECIFIED, - regexp: [`${tmpRegexpForWhitelist}.+/file_0\\.ts`] + allowlistEntries: [{ + reason: ExemptionReason.UNSPECIFIED, + regexp: [`${tmpRegexpForAllowlist}.+/file_0\\.ts`] }] }; const rule = new ConformancePatternRule(config); @@ -87,14 +87,14 @@ describe('ConformancePatternRule', () => { expect(results).toHaveNoFailures(); }); - it('accepts several regex-based whitelists', () => { + it('accepts several regex-based allowlists', () => { const config = { ...baseConfig, - whitelistEntries: [{ - reason: WhitelistReason.UNSPECIFIED, + allowlistEntries: [{ + reason: ExemptionReason.UNSPECIFIED, regexp: [ - `${tmpRegexpForWhitelist}.+/file_0\\.ts`, - `${tmpRegexpForWhitelist}.+/file_1\\.ts` + `${tmpRegexpForAllowlist}.+/file_0\\.ts`, + `${tmpRegexpForAllowlist}.+/file_1\\.ts` ] }] }; @@ -108,8 +108,8 @@ describe('ConformancePatternRule', () => { it('throws on creation of invalid regexps', () => { const config = { ...baseConfig, - whitelistEntries: [{ - reason: WhitelistReason.UNSPECIFIED, + allowlistEntries: [{ + reason: ExemptionReason.UNSPECIFIED, regexp: ['(', '/tmp/', 'foo'], }] }; @@ -122,10 +122,10 @@ describe('ConformancePatternRule', () => { it('test memoizer hit', () => { const config = { ...baseConfig, - whitelistEntries: [{ - reason: WhitelistReason.UNSPECIFIED, + allowlistEntries: [{ + reason: ExemptionReason.UNSPECIFIED, regexp: [ - `${tmpRegexpForWhitelist}.+/file_0\\.ts`, + `${tmpRegexpForAllowlist}.+/file_0\\.ts`, ] }] }; @@ -141,10 +141,10 @@ describe('ConformancePatternRule', () => { it('test memoizer miss', () => { const config = { ...baseConfig, - whitelistEntries: [{ - reason: WhitelistReason.UNSPECIFIED, + allowlistEntries: [{ + reason: ExemptionReason.UNSPECIFIED, regexp: [ - `${tmpRegexpForWhitelist}.+/file_1\\.ts`, + `${tmpRegexpForAllowlist}.+/file_1\\.ts`, ], prefix: ['###PrefixNotExist###'], }] diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts index 191e854d2e..1118699b3d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/ast_tools.ts @@ -119,7 +119,7 @@ export function isPartOfImportStatement(n: ts.Node) { p => p.kind === ts.SyntaxKind.ImportDeclaration); } -function isWhitelistedNamedDeclaration(n: ts.Node): +function isAllowlistedNamedDeclaration(n: ts.Node): n is ts.VariableDeclaration|ts.ClassDeclaration|ts.FunctionDeclaration| ts.MethodDeclaration|ts.PropertyDeclaration|ts.InterfaceDeclaration| ts.TypeAliasDeclaration|ts.EnumDeclaration|ts.ModuleDeclaration| @@ -140,7 +140,7 @@ export function isNameInDeclaration(n: ts.Node): boolean { const p = n.parent; if (p === undefined) return false; - return (isWhitelistedNamedDeclaration(p) && p.name === n) || + return (isAllowlistedNamedDeclaration(p) && p.name === n) || // TODO(pwng) Double-check if these two cases are needed ts.isVariableDeclarationList(p) || ts.isImportDeclaration(p); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts index 49e884b59d..7d0aa3981d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_config.ts @@ -1,4 +1,4 @@ -import {WhitelistEntry} from './whitelist'; +import {AllowlistEntry} from './allowlist'; /** * The list of supported patterns useable in ConformancePatternRule. The @@ -40,8 +40,8 @@ export interface PatternEngineConfig { /** The error message this pattern will create. */ errorMessage: string; - /** A list of whitelist blocks. */ - whitelistEntries?: WhitelistEntry[]; + /** A list of allowlist blocks. */ + allowlistEntries?: AllowlistEntry[]; } /** diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts index 43cf527e30..27c97c2d1b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/name_engine.ts @@ -29,7 +29,7 @@ export class NameEngine extends PatternEngine { const bannedIdName = matcher.bannedName.split('.').pop()!; checker.onNamedIdentifier( bannedIdName, - this.wrapCheckWithWhitelistingAndFixer( + this.wrapCheckWithAllowlistingAndFixer( (tc, n: ts.Identifier) => checkId(tc, n, matcher)), this.config.errorCode); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts index d6f6a97f00..1b61df2087 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts @@ -2,21 +2,21 @@ import * as ts from 'typescript'; import {Checker} from '../../checker'; import {Fix} from '../../failure'; +import {Allowlist} from '../../util/allowlist'; import {Fixer} from '../../util/fixer'; import {PatternEngineConfig} from '../../util/pattern_config'; -import {Whitelist} from '../../util/whitelist'; import {shouldExamineNode} from '../ast_tools'; /** * A patternEngine is the logic that handles a specific PatternKind. */ export abstract class PatternEngine { - private readonly whitelist: Whitelist; + private readonly allowlist: Allowlist; constructor( protected readonly config: PatternEngineConfig, protected readonly fixer?: Fixer) { - this.whitelist = new Whitelist(config.whitelistEntries); + this.allowlist = new Allowlist(config.allowlistEntries); } /** @@ -32,7 +32,7 @@ export abstract class PatternEngine { * subclass-specific logic afterwards. Subclasses should transform their * checking logic with this composer before registered on the checker. */ - protected wrapCheckWithWhitelistingAndFixer( + protected wrapCheckWithAllowlistingAndFixer( checkFunction: (tc: ts.TypeChecker, n: T) => ts.Node | undefined): (c: Checker, n: T) => void { return (c: Checker, n: T) => { @@ -41,7 +41,7 @@ export abstract class PatternEngine { return; } const matchedNode = checkFunction(c.typeChecker, n); - if (matchedNode && !this.whitelist.isWhitelisted(sf.fileName)) { + if (matchedNode && !this.allowlist.isAllowlisted(sf.fileName)) { const fix: Fix|undefined = this.fixer ? this.fixer.getFixForFlaggedNode(matchedNode) : undefined; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts index 5fb280bcbf..adef087b1e 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_engine.ts @@ -31,7 +31,7 @@ export class PropertyEngine extends PatternEngine { // requires refactoring `PropertyMatcher` or adding new types of matchers. checker.onNamedPropertyAccess( matcher.bannedProperty, - this.wrapCheckWithWhitelistingAndFixer( + this.wrapCheckWithAllowlistingAndFixer( (tc, n: ts.PropertyAccessExpression) => checkPropAccessExpr(tc, n, matcher)), this.config.errorCode); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts index ece4044f96..e89a079067 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_non_constant_write_engine.ts @@ -39,7 +39,7 @@ export class PropertyNonConstantWriteEngine extends PatternEngine { checker.on( ts.SyntaxKind.BinaryExpression, - this.wrapCheckWithWhitelistingAndFixer( + this.wrapCheckWithAllowlistingAndFixer( (tc, n: ts.BinaryExpression) => checkBinExpr(tc, n, matcher)), this.config.errorCode); } diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts index 58f230e00c..56654e1cf6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/property_write_engine.ts @@ -39,7 +39,7 @@ export class PropertyWriteEngine extends PatternEngine { checker.onNamedPropertyAccess( matcher.bannedProperty, - this.wrapCheckWithWhitelistingAndFixer( + this.wrapCheckWithAllowlistingAndFixer( (tc, n: ts.PropertyAccessExpression) => checkPropAccessExpr(tc, n, matcher)), this.config.errorCode); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts index ece3695f9d..f80b7a7cf7 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts @@ -77,7 +77,7 @@ export function toFileName(f: Failure) { * Returns the location the temp directory for that platform (with forward * slashes). */ -export function getTempDirForWhitelist() { +export function getTempDirForAllowlist() { // TS uses forward slashes on Windows ¯\_(ツ)_/¯ return os.platform() === 'win32' ? os.tmpdir().replace(/\\/g, '/') : os.tmpdir(); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist.ts deleted file mode 100644 index 6bedc15712..0000000000 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/whitelist.ts +++ /dev/null @@ -1,96 +0,0 @@ -/** - * A whitelist entry, corresponding to a logical whitelisting rule. Use these - * to distinguish between various logical reasons for whitelisting something: - * for instance, tie these to particular bugs that needed whitelisting, per - * legacy project, manually reviewed entries, and so on. - * - * Whitelists are based on the file paths provided by the TS compiler, with - * both regexp-based checks and prefix-based checks. - * - * - * Follows the logic in - * https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/conformance.proto. - */ -export interface WhitelistEntry { - /** The category corresponding to this entry. */ - readonly reason: WhitelistReason; - /** Why is this okay to whitelist. */ - readonly explanation?: string; - - /** - * Regexps for the paths of files that will be ignored by the - * ConformancePattern. Beware, escaping can be tricky. - */ - readonly regexp?: readonly string[]; - /** - * Prefixes for the paths of files that will be ignored by the - * ConformancePattern. - */ - readonly prefix?: readonly string[]; -} - -/** - * The categories of whitelist entries. - */ -export enum WhitelistReason { - /** No reason. */ - UNSPECIFIED, - /** Code that has to be grandfathered in (no guarantees). */ - LEGACY, - /** - * Code that does not enter the scope of this particular check (no - * guarantees). - */ - OUT_OF_SCOPE, - /** Manually reviewed exceptions (supposedly okay). */ - MANUALLY_REVIEWED -} - -/** - * A complete whitelist with all related WhitelistEntry grouped together, with - * WhitelistReason ignored since it is purely for documentary purposes. - */ -export class Whitelist { - private readonly whitelistedPrefixes: readonly string[] = []; - private readonly whitelistedRegExps: readonly RegExp[] = []; - // To avoid repeated computation for whitelisting queries with the same file - // path, create a memoizer to cache known results. This is useful in watch - // mode (and possible in language service) when the same files can be compiled - // repeatedly. - private readonly whitelistMemoizer: Map = new Map(); - - constructor(whitelistEntries?: WhitelistEntry[]) { - if (whitelistEntries) { - for (const e of whitelistEntries) { - if (e.prefix) { - this.whitelistedPrefixes = - this.whitelistedPrefixes.concat(...e.prefix); - } - if (e.regexp) { - this.whitelistedRegExps = this.whitelistedRegExps.concat( - ...e.regexp.map(r => new RegExp(r))); - } - } - } - } - - isWhitelisted(filePath: string): boolean { - if (this.whitelistMemoizer.has(filePath)) { - return this.whitelistMemoizer.get(filePath)!; - } - for (const p of this.whitelistedPrefixes) { - if (filePath.startsWith(p)) { - this.whitelistMemoizer.set(filePath, true); - return true; - } - } - for (const re of this.whitelistedRegExps) { - if (re.test(filePath)) { - this.whitelistMemoizer.set(filePath, true); - return true; - } - } - this.whitelistMemoizer.set(filePath, false); - return false; - } -} From 8301781e44334d355bdb96b092b7849a044176df Mon Sep 17 00:00:00 2001 From: pwng Date: Fri, 26 Jun 2020 10:41:14 -0700 Subject: [PATCH 0770/1134] Normalize source file paths before querying the whitelist. PiperOrigin-RevId: 318500332 --- .../internal/tsetse/util/allowlist_test.ts | 289 +++++++++--------- .../util/pattern_engines/pattern_engine.ts | 4 +- .../tsetse/util/testing/test_support.ts | 3 +- 3 files changed, 147 insertions(+), 149 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/allowlist_test.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/allowlist_test.ts index 8324c078b5..d451c76640 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/allowlist_test.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/allowlist_test.ts @@ -9,155 +9,152 @@ const tmpPrefixForAllowlist = getTempDirForAllowlist(); const tmpRegexpForAllowlist = `^(?:${getTempDirForAllowlist().replace(/\\/g, '\\\\')})`; +describe('ConformancePatternRule allowlist handling', () => { + const source = `export {};\n` + + `const q = document.createElement('q');\n` + + `q.cite = 'some example string';\n`; + + // The initial config off which we run those checks. + const baseConfig = { + errorCode: ErrorCode.CONFORMANCE_PATTERN, + errorMessage: 'do not cite', + kind: PatternKind.BANNED_PROPERTY_WRITE, + values: ['HTMLQuoteElement.prototype.cite'], + }; + + it('matches if no allowlist (sanity check)', () => { + const config = {...baseConfig, allowlistEntries: []}; + const rule = new ConformancePatternRule(config); + const results = compileAndCheck(rule, source); + + expect(results).toHaveNFailures(1); + }); + + it('matches if there is an empty allowlist group', () => { + const config = { + ...baseConfig, + allowlistEntries: [{ + reason: ExemptionReason.UNSPECIFIED, + }] + }; + const rule = new ConformancePatternRule(config); + const results = compileAndCheck(rule, source); + + expect(results).toHaveNFailures(1); + }); + + it('respects prefix-based allowlists (matching test)', () => { + const config = { + ...baseConfig, + allowlistEntries: [{ + reason: ExemptionReason.UNSPECIFIED, + prefix: [tmpPrefixForAllowlist], + }] + }; + const rule = new ConformancePatternRule(config); + const results = compileAndCheck(rule, source); -describe('ConformancePatternRule', () => { - describe('allowlist handling', () => { - const source = `export {};\n` + - `const q = document.createElement('q');\n` + - `q.cite = 'some example string';\n`; - - // The initial config off which we run those checks. - const baseConfig = { - errorCode: ErrorCode.CONFORMANCE_PATTERN, - errorMessage: 'do not cite', - kind: PatternKind.BANNED_PROPERTY_WRITE, - values: ['HTMLQuoteElement.prototype.cite'], + expect(results).toHaveNoFailures(); + }); + + it('respects prefix-based allowlists (non-matching test)', () => { + const config = { + ...baseConfig, + allowlistEntries: [{ + reason: ExemptionReason.UNSPECIFIED, + prefix: ['/nowhere in particular/'], + }] }; + const rule = new ConformancePatternRule(config); + const results = compileAndCheck(rule, source); + + expect(results).toHaveNFailures(1); + }); - it('matches if no allowlist (sanity check)', () => { - const config = {...baseConfig, allowlistEntries: []}; - const rule = new ConformancePatternRule(config); - const results = compileAndCheck(rule, source); - - expect(results).toHaveNFailures(1); - }); - - it('matches if there is an empty allowlist group', () => { - const config = { - ...baseConfig, - allowlistEntries: [{ - reason: ExemptionReason.UNSPECIFIED, - }] - }; - const rule = new ConformancePatternRule(config); - const results = compileAndCheck(rule, source); - - expect(results).toHaveNFailures(1); - }); - - it('respects prefix-based allowlists (matching test)', () => { - const config = { - ...baseConfig, - allowlistEntries: [{ - reason: ExemptionReason.UNSPECIFIED, - prefix: [tmpPrefixForAllowlist], - }] - }; - const rule = new ConformancePatternRule(config); - const results = compileAndCheck(rule, source); - - expect(results).toHaveNoFailures(); - }); - - it('respects prefix-based allowlists (non-matching test)', () => { - const config = { - ...baseConfig, - allowlistEntries: [{ - reason: ExemptionReason.UNSPECIFIED, - prefix: ['/nowhere in particular/'], - }] - }; - const rule = new ConformancePatternRule(config); - const results = compileAndCheck(rule, source); - - expect(results).toHaveNFailures(1); - }); - - it('respects regex-based allowlists', () => { - const config = { - ...baseConfig, - allowlistEntries: [{ - reason: ExemptionReason.UNSPECIFIED, - regexp: [`${tmpRegexpForAllowlist}.+/file_0\\.ts`] - }] - }; - const rule = new ConformancePatternRule(config); - const results = compileAndCheck(rule, source); - - expect(results).toHaveNoFailures(); - }); - - it('accepts several regex-based allowlists', () => { - const config = { - ...baseConfig, - allowlistEntries: [{ - reason: ExemptionReason.UNSPECIFIED, - regexp: [ - `${tmpRegexpForAllowlist}.+/file_0\\.ts`, - `${tmpRegexpForAllowlist}.+/file_1\\.ts` - ] - }] - }; - const rule = new ConformancePatternRule(config); - // Testing two times the same file so that both regexps match. - const results = compileAndCheck(rule, source, source); - - expect(results).toHaveNoFailures(); - }); - - it('throws on creation of invalid regexps', () => { - const config = { - ...baseConfig, - allowlistEntries: [{ - reason: ExemptionReason.UNSPECIFIED, - regexp: ['(', '/tmp/', 'foo'], - }] - }; - expect(() => { - // tslint:disable-next-line:no-unused-expression - new ConformancePatternRule(config); - }).toThrowError(/Invalid regular expression/); - }); - - it('test memoizer hit', () => { - const config = { - ...baseConfig, - allowlistEntries: [{ - reason: ExemptionReason.UNSPECIFIED, - regexp: [ - `${tmpRegexpForAllowlist}.+/file_0\\.ts`, - ] - }] - }; - const rule = new ConformancePatternRule(config); - // Compile the same file twice to make sure memoizer doesn't - // break things. - let results = compileAndCheck(rule, source); - results = results.concat(compileAndCheck(rule, source)); - - expect(results).toHaveNoFailures(); - }); - - it('test memoizer miss', () => { - const config = { - ...baseConfig, - allowlistEntries: [{ - reason: ExemptionReason.UNSPECIFIED, - regexp: [ - `${tmpRegexpForAllowlist}.+/file_1\\.ts`, - ], - prefix: ['###PrefixNotExist###'], - }] - }; - const rule = new ConformancePatternRule(config); - // Compile the same file twice to make sure memoizer doesn't - // break things. - let results = compileAndCheck(rule, source); - expect(results).toHaveNFailures(1); - - results = compileAndCheck(rule, source); - expect(results).toHaveNFailures(1); - }); + it('respects regex-based allowlists', () => { + const config = { + ...baseConfig, + allowlistEntries: [{ + reason: ExemptionReason.UNSPECIFIED, + regexp: [`${tmpRegexpForAllowlist}.+[\\\\/]file_0\\.ts`] + }] + }; + const rule = new ConformancePatternRule(config); + const results = compileAndCheck(rule, source); + + expect(results).toHaveNoFailures(); + }); + + it('accepts several regex-based allowlists', () => { + const config = { + ...baseConfig, + allowlistEntries: [{ + reason: ExemptionReason.UNSPECIFIED, + regexp: [ + `${tmpRegexpForAllowlist}.+[\\\\/]file_0\\.ts`, + `${tmpRegexpForAllowlist}.+[\\\\/]file_1\\.ts` + ] + }] + }; + const rule = new ConformancePatternRule(config); + // Testing two times the same file so that both regexps match. + const results = compileAndCheck(rule, source, source); + + expect(results).toHaveNoFailures(); + }); + + it('throws on creation of invalid regexps', () => { + const config = { + ...baseConfig, + allowlistEntries: [{ + reason: ExemptionReason.UNSPECIFIED, + regexp: ['(', '/tmp/', 'foo'], + }] + }; + expect(() => { + // tslint:disable-next-line:no-unused-expression + new ConformancePatternRule(config); + }).toThrowError(/Invalid regular expression/); + }); + + it('test memoizer hit', () => { + const config = { + ...baseConfig, + allowlistEntries: [{ + reason: ExemptionReason.UNSPECIFIED, + regexp: [ + `${tmpRegexpForAllowlist}.+[\\\\/]file_0\\.ts`, + ] + }] + }; + const rule = new ConformancePatternRule(config); + // Compile the same file twice to make sure memoizer doesn't + // break things. + let results = compileAndCheck(rule, source); + results = results.concat(compileAndCheck(rule, source)); + + expect(results).toHaveNoFailures(); + }); + + it('test memoizer miss', () => { + const config = { + ...baseConfig, + allowlistEntries: [{ + reason: ExemptionReason.UNSPECIFIED, + regexp: [ + `${tmpRegexpForAllowlist}.+[\\\\/]file_1\\.ts`, + ], + prefix: ['###PrefixNotExist###'], + }] + }; + const rule = new ConformancePatternRule(config); + // Compile the same file twice to make sure memoizer doesn't + // break things. + let results = compileAndCheck(rule, source); + expect(results).toHaveNFailures(1); + + results = compileAndCheck(rule, source); + expect(results).toHaveNFailures(1); }); }); diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts index 1b61df2087..df15ab5d1b 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/pattern_engines/pattern_engine.ts @@ -1,3 +1,4 @@ +import * as path from 'path'; import * as ts from 'typescript'; import {Checker} from '../../checker'; @@ -41,7 +42,8 @@ export abstract class PatternEngine { return; } const matchedNode = checkFunction(c.typeChecker, n); - if (matchedNode && !this.allowlist.isAllowlisted(sf.fileName)) { + if (matchedNode && + !this.allowlist.isAllowlisted(path.resolve(sf.fileName))) { const fix: Fix|undefined = this.fixer ? this.fixer.getFixForFlaggedNode(matchedNode) : undefined; diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts index f80b7a7cf7..a3c32d39e3 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/util/testing/test_support.ts @@ -79,8 +79,7 @@ export function toFileName(f: Failure) { */ export function getTempDirForAllowlist() { // TS uses forward slashes on Windows ¯\_(ツ)_/¯ - return os.platform() === 'win32' ? os.tmpdir().replace(/\\/g, '/') : - os.tmpdir(); + return os.platform() === 'win32' ? os.tmpdir() : os.tmpdir(); } interface FailureExpectations { From 333c35401614d9aeab48de1a636444f561ee0ac1 Mon Sep 17 00:00:00 2001 From: pwng Date: Tue, 30 Jun 2020 11:12:34 -0700 Subject: [PATCH 0771/1134] Add a static property RULE_NAME to every rule class so that the rules can be refered to by names before an instance is created. PiperOrigin-RevId: 319058760 --- .../internal/tsetse/rules/ban_expect_truthy_promise_rule.ts | 3 ++- .../internal/tsetse/rules/ban_mutable_exports_rule.ts | 3 ++- .../internal/tsetse/rules/ban_promise_as_condition_rule.ts | 3 ++- .../internal/tsetse/rules/ban_string_initialized_sets_rule.ts | 3 ++- .../internal/tsetse/rules/check_return_value_rule.ts | 3 ++- .../rules_typescript/internal/tsetse/rules/equals_nan_rule.ts | 3 ++- .../internal/tsetse/rules/must_use_promises_rule.ts | 3 ++- .../internal/tsetse/rules/property_renaming_safe.ts | 3 ++- 8 files changed, 16 insertions(+), 8 deletions(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_expect_truthy_promise_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_expect_truthy_promise_rule.ts index d1e79c0208..6bee264151 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_expect_truthy_promise_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_expect_truthy_promise_rule.ts @@ -12,7 +12,8 @@ import {ErrorCode} from '../error_code'; import {AbstractRule} from '../rule'; export class Rule extends AbstractRule { - readonly ruleName = 'ban-expect-truthy-promise'; + static readonly RULE_NAME = 'ban-expect-truthy-promise'; + readonly ruleName = Rule.RULE_NAME; readonly code = ErrorCode.BAN_EXPECT_TRUTHY_PROMISE; register(checker: Checker) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_mutable_exports_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_mutable_exports_rule.ts index a4dc132c63..df9de96629 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_mutable_exports_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_mutable_exports_rule.ts @@ -10,7 +10,8 @@ import {ErrorCode} from '../error_code'; import {AbstractRule} from '../rule'; export class Rule extends AbstractRule { - readonly ruleName = 'ban-mutable-exports'; + static readonly RULE_NAME = 'ban-mutable-exports'; + readonly ruleName = Rule.RULE_NAME; readonly code = ErrorCode.BAN_MUTABLE_EXPORTS; register(checker: Checker) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_promise_as_condition_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_promise_as_condition_rule.ts index a58461a808..a9da23e30d 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_promise_as_condition_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_promise_as_condition_rule.ts @@ -12,7 +12,8 @@ import {ErrorCode} from '../error_code'; import {AbstractRule} from '../rule'; export class Rule extends AbstractRule { - readonly ruleName = 'ban-promise-as-condition'; + static readonly RULE_NAME = 'ban-promise-as-condition'; + readonly ruleName = Rule.RULE_NAME; readonly code = ErrorCode.BAN_PROMISE_AS_CONDITION; register(checker: Checker) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_string_initialized_sets_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_string_initialized_sets_rule.ts index 44087baf28..dfef1b88a6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_string_initialized_sets_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/ban_string_initialized_sets_rule.ts @@ -16,7 +16,8 @@ const errorMsg = 'Value passed to Set constructor is a string. This will' + ' create an Iterable, eg: new Set(myStr as Iterable).'; export class Rule extends AbstractRule { - readonly ruleName = 'ban-string-initialized-sets'; + static readonly RULE_NAME = 'ban-string-initialized-sets'; + readonly ruleName = Rule.RULE_NAME; readonly code = ErrorCode.BAN_STRING_INITIALIZED_SETS; register(checker: Checker) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts index 7863cf5e1e..35e6b19540 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/check_return_value_rule.ts @@ -42,7 +42,8 @@ const METHODS_TO_CHECK = new Set([ /** A rule to ensure required return values from common functions are used. */ export class Rule extends AbstractRule { - readonly ruleName = 'check-return-value'; + static readonly RULE_NAME = 'check-return-value'; + readonly ruleName = Rule.RULE_NAME; readonly code = ErrorCode.CHECK_RETURN_VALUE; // registers checkCallExpression() function on ts.CallExpression node. diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/equals_nan_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/equals_nan_rule.ts index 38b01d5029..ea6d8e88e6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/equals_nan_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/equals_nan_rule.ts @@ -10,7 +10,8 @@ import {ErrorCode} from '../error_code'; import {AbstractRule} from '../rule'; export class Rule extends AbstractRule { - readonly ruleName = 'equals-nan'; + static readonly RULE_NAME = 'equals-nan'; + readonly ruleName = Rule.RULE_NAME; readonly code = ErrorCode.EQUALS_NAN; register(checker: Checker) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/must_use_promises_rule.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/must_use_promises_rule.ts index f58357440b..293ea4ba06 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/must_use_promises_rule.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/must_use_promises_rule.ts @@ -16,7 +16,8 @@ const FAILURE_STRING = /** A rule to ensure promises in async functions are awaited or used. */ export class Rule extends AbstractRule { - readonly ruleName = 'must-use-promises'; + static readonly RULE_NAME = 'must-use-promises'; + readonly ruleName = Rule.RULE_NAME; readonly code = ErrorCode.MUST_USE_PROMISES; register(checker: Checker) { diff --git a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/property_renaming_safe.ts b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/property_renaming_safe.ts index 7b842442b6..ce8b95df02 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/property_renaming_safe.ts +++ b/third_party/github.com/bazelbuild/rules_typescript/internal/tsetse/rules/property_renaming_safe.ts @@ -12,7 +12,8 @@ import {AbstractRule} from '../rule'; * Note: This rule can have false positives. */ export class Rule extends AbstractRule { - readonly ruleName = 'property-renaming-safe'; + static readonly RULE_NAME = 'property-renaming-safe'; + readonly ruleName = Rule.RULE_NAME; readonly code = ErrorCode.PROPERTY_RENAMING_SAFE; register(checker: Checker) { From 89e04753b2e795d27afadd3b3a8f54931041edc6 Mon Sep 17 00:00:00 2001 From: Matt Mackay Date: Thu, 16 Jul 2020 15:41:27 -0400 Subject: [PATCH 0772/1134] refactor: remove deprecated defs.bzl --- defs.bzl | 47 ----------------------------------------------- 1 file changed, 47 deletions(-) delete mode 100644 defs.bzl diff --git a/defs.bzl b/defs.bzl deleted file mode 100644 index c6960e9f9b..0000000000 --- a/defs.bzl +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""No longer usable - you must load from index.bzl -""" - -def _error(*args, **kwargs): - fail(""" -ERROR: defs.bzl has been removed from build_bazel_rules_nodejs - -Please update your load statements to use index.bzl instead. - -See https://github.com/bazelbuild/rules_nodejs/wiki#migrating-off-build_bazel_rules_nodejsdefsbzl for help. -""") - -check_bazel_version = _error -nodejs_binary = _error -nodejs_test = _error -node_repositories = _error -jasmine_node_test = _error -npm_package = _error -pkg_npm = _error -npm_package_bin = _error -# ANY RULES ADDED HERE SHOULD BE DOCUMENTED, see index.for_docs.bzl - -def node_modules_filegroup(packages, patterns = [], **kwargs): - _error() - -def npm_install(**kwargs): - _error() - -def yarn_install(**kwargs): - _error() - -def check_rules_nodejs_version(minimum_version_string): - _error() From 2d4ed37180179661e22ed8105de40295568245af Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 16 Jul 2020 11:54:47 -0700 Subject: [PATCH 0773/1134] chore: stop reporting custom bazel build version Fixes #1646 --- internal/common/check_bazel_version.bzl | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/internal/common/check_bazel_version.bzl b/internal/common/check_bazel_version.bzl index 199ab4c810..ace77fcae8 100644 --- a/internal/common/check_bazel_version.bzl +++ b/internal/common/check_bazel_version.bzl @@ -43,11 +43,7 @@ def check_bazel_version(minimum_bazel_version, message = ""): if "bazel_version" not in dir(native): fail("\nCurrent Bazel version is lower than 0.2.1, expected at least %s\n" % minimum_bazel_version) - elif not native.bazel_version: - print("\nCurrent Bazel is not a release version, cannot check for " + - "compatibility.") - print("Make sure that you are running at least Bazel %s.\n" % minimum_bazel_version) - elif not check_version(native.bazel_version, minimum_bazel_version): + elif native.bazel_version and not check_version(native.bazel_version, minimum_bazel_version): fail("\nCurrent Bazel version is {}, expected at least {}\n{}".format( native.bazel_version, minimum_bazel_version, From 355bb01c6d4f4e18e85b013806c69592893edfcc Mon Sep 17 00:00:00 2001 From: Matt Mackay Date: Thu, 25 Jun 2020 07:51:03 -0400 Subject: [PATCH 0774/1134] test: add repro case for run_node with ts_library built executable --- .../typescript/test/some_module/BUILD.bazel | 28 +++++++++++++++++ .../test/some_module/run_node_test.bzl | 30 +++++++++++++++++++ .../typescript/test/some_module/writer.ts | 6 ++++ 3 files changed, 64 insertions(+) create mode 100644 packages/typescript/test/some_module/run_node_test.bzl create mode 100644 packages/typescript/test/some_module/writer.ts diff --git a/packages/typescript/test/some_module/BUILD.bazel b/packages/typescript/test/some_module/BUILD.bazel index 41cd206c64..a474e43bcf 100644 --- a/packages/typescript/test/some_module/BUILD.bazel +++ b/packages/typescript/test/some_module/BUILD.bazel @@ -1,5 +1,6 @@ load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary") load("//packages/typescript:index.bzl", "ts_library") +load("//packages/typescript/test/some_module:run_node_test.bzl", "ts_write_file") # We compile this library with the module name "sm" to make it possible to # use `import {} from 'sm';` both at type-check time (we include the mapping in @@ -34,3 +35,30 @@ sh_test( "@build_bazel_rules_nodejs//third_party/github.com/bazelbuild/bazel/tools/bash/runfiles", ], ) + +# ts_library for compiling the tool +ts_library( + name = "writer", + srcs = ["writer.ts"], + deps = ["@npm//@types/node"], +) + +# nodejs_binary for generating an executable for the tool :writer +nodejs_binary( + name = "writer_bin", + data = [ + ":writer", + ], + entry_point = ":writer.ts", +) + +# custom rule using the executable above via run_node +# invoked via bazel build //packages/typescript/test/some_module:test +# as --nobazel_patch_module_resolver is added by default by run_node, the entry_point on the executable is resolved +# to the ts file - writer.ts +# this works for bazel run //packages/typescript/test/some_module:writer_bin as this will patch require and resolve the +# ts to js +ts_write_file( + name = "test", + content = "hello world", +) diff --git a/packages/typescript/test/some_module/run_node_test.bzl b/packages/typescript/test/some_module/run_node_test.bzl new file mode 100644 index 0000000000..46be9ce207 --- /dev/null +++ b/packages/typescript/test/some_module/run_node_test.bzl @@ -0,0 +1,30 @@ +"""Contrived custom rule for writing some content to a file using run_node""" + +load("//:providers.bzl", "run_node") + +def _ts_write_file_impl(ctx): + run_node( + ctx = ctx, + executable = "_writer", + inputs = [], + arguments = [ + ctx.attr.content, + ctx.outputs.out.path, + ], + outputs = [ctx.outputs.out], + ) + +ts_write_file = rule( + implementation = _ts_write_file_impl, + outputs = { + "out": "out.txt", + }, + attrs = { + "content": attr.string(), + "_writer": attr.label( + default = Label("//packages/typescript/test/some_module:writer_bin"), + cfg = "host", + executable = True, + ), + }, +) diff --git a/packages/typescript/test/some_module/writer.ts b/packages/typescript/test/some_module/writer.ts new file mode 100644 index 0000000000..794200b90e --- /dev/null +++ b/packages/typescript/test/some_module/writer.ts @@ -0,0 +1,6 @@ +import {writeFileSync} from 'fs'; + +const content = process.argv[2]; +const outputPath = process.argv[3]; + +writeFileSync(outputPath, content, {encoding: 'utf8'}); From 8cc044f8ef71de00e55e61ea06a061a0a06999ff Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 16 Jul 2020 16:57:30 -0700 Subject: [PATCH 0775/1134] fix(builtin): perform the ts-to-js entry_point rewrite This was happening when the loader.js script is used (when --bazel_patch_module_resolver is on) but was not happening otherwise. --- internal/node/node.bzl | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/internal/node/node.bzl b/internal/node/node.bzl index 60166ceee4..56c6d3dd71 100644 --- a/internal/node/node.bzl +++ b/internal/node/node.bzl @@ -105,18 +105,26 @@ def _write_require_patch_script(ctx, node_modules_root): is_executable = True, ) -def _write_loader_script(ctx): - if len(ctx.attr.entry_point.files.to_list()) != 1: - fail("labels in entry_point must contain exactly one file") +def _ts_to_js(entry_point_path): + """If the entry point specified is a typescript file then set it to .js. - entry_point_path = _to_manifest_path(ctx, ctx.file.entry_point) + Workaround for #1974 + ts_library doesn't give labels for its .js outputs so users are forced to give .ts labels - # If the entry point specified is a typescript file then set the entry - # point to the corresponding .js file + Args: + entry_point_path: a file path + """ if entry_point_path.endswith(".ts"): - entry_point_path = entry_point_path[:-3] + ".js" + return entry_point_path[:-3] + ".js" elif entry_point_path.endswith(".tsx"): - entry_point_path = entry_point_path[:-4] + ".js" + return entry_point_path[:-4] + ".js" + return entry_point_path + +def _write_loader_script(ctx): + if len(ctx.attr.entry_point.files.to_list()) != 1: + fail("labels in entry_point must contain exactly one file") + + entry_point_path = _ts_to_js(_to_manifest_path(ctx, ctx.file.entry_point)) ctx.actions.expand_template( template = ctx.file._loader_template, @@ -269,8 +277,8 @@ fi #else: # substitutions["TEMPLATED_script_path"] = "$(rlocation \"%s\")" % _to_manifest_path(ctx, ctx.file.entry_point) # For now we need to look in both places - substitutions["TEMPLATED_entry_point_execroot_path"] = "\"%s\"" % _to_execroot_path(ctx, ctx.file.entry_point) - substitutions["TEMPLATED_entry_point_manifest_path"] = "$(rlocation \"%s\")" % _to_manifest_path(ctx, ctx.file.entry_point) + substitutions["TEMPLATED_entry_point_execroot_path"] = "\"%s\"" % _ts_to_js(_to_execroot_path(ctx, ctx.file.entry_point)) + substitutions["TEMPLATED_entry_point_manifest_path"] = "$(rlocation \"%s\")" % _ts_to_js(_to_manifest_path(ctx, ctx.file.entry_point)) ctx.actions.expand_template( template = ctx.file._launcher_template, From 154273f501f38f9113ca6611825b7f506f32674e Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Thu, 16 Jul 2020 17:56:14 -0700 Subject: [PATCH 0776/1134] chore: update examples/angular_view_engine to @angular/bazel 9.0.5 (#2040) Updating @angular/bazel past 9.0.5 breaks ViewEngine which is only supported by ng_module due to https://github.com/angular/angular pull/35841. It is recommended that Angular + Bazel users switch to Ivy and use ts_library with use_angular_plugin. See examples angular. --- examples/angular_view_engine/package.json | 2 +- ...rc.10.patch => @angular+bazel+9.0.5.patch} | 11 +- examples/angular_view_engine/yarn.lock | 143 ++++++++++-------- 3 files changed, 83 insertions(+), 73 deletions(-) rename examples/angular_view_engine/patches/{@angular+bazel+9.0.0-rc.10.patch => @angular+bazel+9.0.5.patch} (93%) diff --git a/examples/angular_view_engine/package.json b/examples/angular_view_engine/package.json index e8a0af71b1..1b60631287 100644 --- a/examples/angular_view_engine/package.json +++ b/examples/angular_view_engine/package.json @@ -25,7 +25,7 @@ "zone.js": "0.10.2" }, "devDependencies": { - "@angular/bazel": "9.0.0-rc.10", + "@angular/bazel": "9.0.5", "@angular/cli": "8.3.12", "@angular/compiler": "8.2.14", "@angular/compiler-cli": "8.2.14", diff --git a/examples/angular_view_engine/patches/@angular+bazel+9.0.0-rc.10.patch b/examples/angular_view_engine/patches/@angular+bazel+9.0.5.patch similarity index 93% rename from examples/angular_view_engine/patches/@angular+bazel+9.0.0-rc.10.patch rename to examples/angular_view_engine/patches/@angular+bazel+9.0.5.patch index 81766c7757..75cda84485 100644 --- a/examples/angular_view_engine/patches/@angular+bazel+9.0.0-rc.10.patch +++ b/examples/angular_view_engine/patches/@angular+bazel+9.0.5.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/@angular/bazel/src/external.bzl b/node_modules/@angular/bazel/src/external.bzl -index 32b640a..84d37b3 100755 +index 32b640a..a787bbb 100755 --- a/node_modules/@angular/bazel/src/external.bzl +++ b/node_modules/@angular/bazel/src/external.bzl @@ -2,11 +2,11 @@ @@ -16,7 +16,7 @@ index 32b640a..84d37b3 100755 _COMMON_ATTRIBUTES = "COMMON_ATTRIBUTES", _COMMON_OUTPUTS = "COMMON_OUTPUTS", _DEPS_ASPECTS = "DEPS_ASPECTS", -@@ -14,7 +14,7 @@ load( +@@ -14,17 +14,19 @@ load( _ts_providers_dict_to_struct = "ts_providers_dict_to_struct", ) load( @@ -24,9 +24,6 @@ index 32b640a..84d37b3 100755 + "@npm//@bazel/typescript/internal:ts_config.bzl", _TsConfigInfo = "TsConfigInfo", ) - load( -@@ -19,12 +19,14 @@ load( - ) load( "@build_bazel_rules_nodejs//:providers.bzl", + _LinkablePackageInfo = "LinkablePackageInfo", @@ -41,7 +38,7 @@ index 32b640a..84d37b3 100755 node_modules_aspect = _node_modules_aspect diff --git a/node_modules/@angular/bazel/src/ng_module.bzl b/node_modules/@angular/bazel/src/ng_module.bzl -index 9480c4b..0f67f18 100755 +index a38f6a8..436d83b 100755 --- a/node_modules/@angular/bazel/src/ng_module.bzl +++ b/node_modules/@angular/bazel/src/ng_module.bzl @@ -13,6 +13,7 @@ load( @@ -52,7 +49,7 @@ index 9480c4b..0f67f18 100755 "NpmPackageInfo", "TsConfigInfo", "compile_ts", -@@ -631,6 +632,15 @@ def _ng_module_impl(ctx): +@@ -629,6 +630,15 @@ def _ng_module_impl(ctx): # once it is no longer needed. ]) diff --git a/examples/angular_view_engine/yarn.lock b/examples/angular_view_engine/yarn.lock index 50aacba1a7..ce1cc7f611 100644 --- a/examples/angular_view_engine/yarn.lock +++ b/examples/angular_view_engine/yarn.lock @@ -36,10 +36,10 @@ dependencies: tslib "^1.9.0" -"@angular/bazel@9.0.0-rc.10": - version "9.0.0-rc.10" - resolved "https://registry.yarnpkg.com/@angular/bazel/-/bazel-9.0.0-rc.10.tgz#49b3b798ebf213cbac8e0371a3c4acfa00c617b6" - integrity sha512-pneDQbD/Yl0tGujqFuHNyGunvukUtBzAFRutIaJ5lS6fANXBwW02ufePLoHiF1HYeupGfW9H01oVBjtLH8HhyQ== +"@angular/bazel@9.0.5": + version "9.0.5" + resolved "https://registry.yarnpkg.com/@angular/bazel/-/bazel-9.0.5.tgz#51f0795de912df7da94cf1a797697c19cf8f86f6" + integrity sha512-vFNilcGokEXo94SHIN848cYcgKkjsY+M3JjM1bZdnRNmzKY57tq2TCGIHRSZRdkAIMxsAw02A02KQZGGJjOi4g== dependencies: "@microsoft/api-extractor" "^7.3.9" shelljs "0.8.2" @@ -877,53 +877,34 @@ mkdirp "^0.5.1" pure-utilities "^1.1.4" -"@microsoft/api-extractor-model@7.5.1": - version "7.5.1" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.5.1.tgz#54732ab60cc0761784a54fc00eaaf96145724160" - integrity sha512-qzgmJeoqpJqYDS1yj9YTPdd/+9OWGFwfzGFyr6kVarexomdPSltcoQYIS5JnrB/RFNeUgTNUlwn5mYdyp2Xv6A== +"@microsoft/api-extractor-model@7.8.12": + version "7.8.12" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.8.12.tgz#d089193ef29275b8b20802498c6bdfab80dcef59" + integrity sha512-lE9xcNStS2hf5K+ZQy4L9DQ9Xd62bNsMqW+SyPQWXuQ5HJqUBSXJ2yxCWXP/+rcAkFCvZrikbql9M8Z88nKvwQ== dependencies: - "@microsoft/node-core-library" "3.15.1" - "@microsoft/tsdoc" "0.12.14" + "@microsoft/tsdoc" "0.12.19" + "@rushstack/node-core-library" "3.25.0" "@microsoft/api-extractor@^7.3.9": - version "7.4.6" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.4.6.tgz#024f3944ae658e4cba7494e2fc001a67afb8cf2a" - integrity sha512-v/6v4tS/WzVGOhLyjgNsmJBnRN4gnW99FeCKTKgDeCZiRIdbemi+g/+ZZnS5YaNu6Yp6DfRR9558WV4RVS2vbA== - dependencies: - "@microsoft/api-extractor-model" "7.5.1" - "@microsoft/node-core-library" "3.15.1" - "@microsoft/ts-command-line" "4.3.2" - "@microsoft/tsdoc" "0.12.14" + version "7.9.2" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.9.2.tgz#3bb8c93f4280fcb94171e4214d714e1639f4fbd4" + integrity sha512-R4b3zXlYdicoS8bRLXEChTKLPyhUHrG1cb0GDtOX0zdoxlovU1p0JaPt97A/vC7N3Gm2E8gd2qsDWElKU3/wKQ== + dependencies: + "@microsoft/api-extractor-model" "7.8.12" + "@microsoft/tsdoc" "0.12.19" + "@rushstack/node-core-library" "3.25.0" + "@rushstack/ts-command-line" "4.4.6" colors "~1.2.1" lodash "~4.17.15" - resolve "1.8.1" + resolve "~1.17.0" + semver "~7.3.0" source-map "~0.6.1" - typescript "~3.5.3" + typescript "~3.9.5" -"@microsoft/node-core-library@3.15.1": - version "3.15.1" - resolved "https://registry.yarnpkg.com/@microsoft/node-core-library/-/node-core-library-3.15.1.tgz#78f6249493b09e9a5c39df9e55c5401d69f23f19" - integrity sha512-fUrcgu+w40k2GW8fiOUFby7jaKAAuDKaTrQuFQ3j+0Pg3ANnJ2uKtVf3bgFiNu+uVKpwVtLo4CPS8TwFduJRow== - dependencies: - "@types/node" "8.10.54" - colors "~1.2.1" - fs-extra "~7.0.1" - jju "~1.4.0" - z-schema "~3.18.3" - -"@microsoft/ts-command-line@4.3.2": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@microsoft/ts-command-line/-/ts-command-line-4.3.2.tgz#87341de2e24f279259297ebd38530300a9f97bc3" - integrity sha512-2QeyilabCe6IpBylPXuY6dCA1S9ym3Ii0zakXVPpyfjSj1NesnyuUeuh6e8kyIqzqJ+3LYjfPG63XzUBtwGqqw== - dependencies: - "@types/argparse" "1.0.33" - argparse "~1.0.9" - colors "~1.2.1" - -"@microsoft/tsdoc@0.12.14": - version "0.12.14" - resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.12.14.tgz#0e0810a0a174e50e22dfe8edb30599840712f22d" - integrity sha512-518yewjSga1jLdiLrcmpMFlaba5P+50b0TWNFUpC+SL9Yzf0kMi57qw+bMl+rQ08cGqH1vLx4eg9YFUbZXgZ0Q== +"@microsoft/tsdoc@0.12.19": + version "0.12.19" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.12.19.tgz#2173ccb92469aaf62031fa9499d21b16d07f9b57" + integrity sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A== "@ngrx/store@8.3.0": version "8.3.0" @@ -983,6 +964,28 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= +"@rushstack/node-core-library@3.25.0": + version "3.25.0" + resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.25.0.tgz#ba40bc1b188ab5d31f5705999cd2b3b56b8a32cf" + integrity sha512-e2NCFtAu/eu14b8nlzRX6ZrE9Sb3J2wVt+pninQmTn/IgfnRLAtM0D4PzUO4+ktZwF9fCnpqrOGokLzw6RSVNw== + dependencies: + "@types/node" "10.17.13" + colors "~1.2.1" + fs-extra "~7.0.1" + jju "~1.4.0" + semver "~7.3.0" + timsort "~0.3.0" + z-schema "~3.18.3" + +"@rushstack/ts-command-line@4.4.6": + version "4.4.6" + resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.4.6.tgz#7818f19e444274e68564a756ef62a2b4e0ced0f8" + integrity sha512-ue3p2m773Yea/s4Ef2Q3gEyLd9T0NDjXCl+PlodGTrJHgxoiRwbROSWHAdYJL/LceGWa6Biqizu9qxUDEWFweQ== + dependencies: + "@types/argparse" "1.0.38" + argparse "~1.0.9" + colors "~1.2.1" + "@schematics/angular@8.3.12": version "8.3.12" resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-8.3.12.tgz#3f31d668bc694773c8fd9a1b5efde0c81d86ae28" @@ -1005,10 +1008,10 @@ semver "6.3.0" semver-intersect "1.4.0" -"@types/argparse@1.0.33": - version "1.0.33" - resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.33.tgz#2728669427cdd74a99e53c9f457ca2866a37c52d" - integrity sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ== +"@types/argparse@1.0.38": + version "1.0.38" + resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" + integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== "@types/estree@*", "@types/estree@0.0.39": version "0.0.39" @@ -1030,16 +1033,16 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.9.tgz#da0210f91096aa67138cf5afd04c4d629f8a406a" integrity sha512-P57oKTJ/vYivL2BCfxCC5tQjlS8qW31pbOL6qt99Yrjm95YdHgNZwjrTTjMBh+C2/y6PXIX4oz253+jUzxKKfQ== +"@types/node@10.17.13": + version "10.17.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.13.tgz#ccebcdb990bd6139cd16e84c39dc2fb1023ca90c" + integrity sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg== + "@types/node@6.14.6": version "6.14.6" resolved "https://registry.yarnpkg.com/@types/node/-/node-6.14.6.tgz#31df045b4c7618ff74d84f542fc3d29445dd566b" integrity sha512-rFs9zCFtSHuseiNXxYxFlun8ibu+jtZPgRM+2ILCmeLiGeGLiIGxuOzD+cNyHegI1GD+da3R/cIbs9+xCLp13w== -"@types/node@8.10.54": - version "8.10.54" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.54.tgz#1c88eb253ac1210f1a5876953fb70f7cc4928402" - integrity sha512-kaYyLYf6ICn6/isAyD4K1MyWWd5Q3JgH6bnMN089LUx88+s4W8GvK9Q6JMBVu5vsFFp7pMdSxdKmlBXwH/VFRg== - "@types/node@^10.1.0": version "10.14.21" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.21.tgz#4a9db7ef1d1671c0015e632c5fa3d46c86c58c1e" @@ -5401,7 +5404,7 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -path-parse@^1.0.5, path-parse@^1.0.6: +path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== @@ -5900,13 +5903,6 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" - integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== - dependencies: - path-parse "^1.0.5" - resolve@^1.1.6: version "1.10.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.1.tgz#664842ac960795bbe758221cdccda61fb64b5f18" @@ -5928,6 +5924,13 @@ resolve@^1.11.0, resolve@^1.11.1, resolve@^1.3.2: dependencies: path-parse "^1.0.6" +resolve@~1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" @@ -6167,6 +6170,11 @@ semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semve resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +semver@~7.3.0: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -6798,6 +6806,11 @@ timers-ext@^0.1.5: es5-ext "~0.10.46" next-tick "1" +timsort@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + tmp@0.0.30: version "0.0.30" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" @@ -6949,10 +6962,10 @@ typescript@3.4.5: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.4.5.tgz#2d2618d10bb566572b8d7aad5180d84257d70a99" integrity sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw== -typescript@~3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" - integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== +typescript@~3.9.5: + version "3.9.6" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.6.tgz#8f3e0198a34c3ae17091b35571d3afd31999365a" + integrity sha512-Pspx3oKAPJtjNwE92YS05HQoY7z2SFyOpHo9MqJor3BXAGNaPUs83CuVp9VISFkSjyRfiTpmKuAYGJB7S7hOxw== ultron@~1.1.0: version "1.1.1" From 6c311ea26259e2daada23482a977275a614b88ab Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Thu, 16 Jul 2020 18:00:34 -0700 Subject: [PATCH 0777/1134] docs: update docs for release --- docs/Built-ins.md | 400 +++++++++++++++++++++++++++++++++++++++++++++ docs/TypeScript.md | 30 +--- 2 files changed, 407 insertions(+), 23 deletions(-) diff --git a/docs/Built-ins.md b/docs/Built-ins.md index db25d00d66..365e33c0a7 100755 --- a/docs/Built-ins.md +++ b/docs/Built-ins.md @@ -1485,3 +1485,403 @@ Defaults to `"auto"` +[name]: https://bazel.build/docs/build-ref.html#name +[label]: https://bazel.build/docs/build-ref.html#labels +[labels]: https://bazel.build/docs/build-ref.html#labels + + +## DeclarationInfo + +The DeclarationInfo provider allows JS rules to communicate typing information. TypeScript's .d.ts files are used as the interop format for describing types. + +Do not create DeclarationInfo instances directly, instead use the declaration_info factory function. + +Note: historically this was a subset of the string-typed "typescript" provider. + + + + +#### `declarations` +A depset of .d.ts files produced by this rule + + + +#### `transitive_declarations` +A depset of .d.ts files produced by this rule and all its transitive dependencies. +This prevents needing an aspect in rules that consume the typings, which improves performance. + + + +#### `type_blacklisted_declarations` +A depset of .d.ts files that we should not use to infer JSCompiler types (via tsickle) + + + + + +## JSEcmaScriptModuleInfo + +JavaScript files (and sourcemaps) that are intended to be consumed by downstream tooling. + +They should use modern syntax and ESModules. +These files should typically be named "foo.mjs" + +Historical note: this was the typescript.es6_sources output + + + +#### `direct_sources` +Depset of direct JavaScript files and sourcemaps + + + +#### `sources` +Depset of direct and transitive JavaScript files and sourcemaps + + + + + +## JSModuleInfo + +JavaScript files and sourcemaps. + + + +#### `direct_sources` +Depset of direct JavaScript files and sourcemaps + + + +#### `sources` +Depset of direct and transitive JavaScript files and sourcemaps + + + + + +## JSNamedModuleInfo + +JavaScript files whose module name is self-contained. + +For example named AMD/UMD or goog.module format. +These files can be efficiently served with the concatjs bundler. +These outputs should be named "foo.umd.js" +(note that renaming it from "foo.js" doesn't affect the module id) + +Historical note: this was the typescript.es5_sources output. + + + + +#### `direct_sources` +Depset of direct JavaScript files and sourcemaps + + + +#### `sources` +Depset of direct and transitive JavaScript files and sourcemaps + + + + + +## LinkablePackageInfo + +The LinkablePackageInfo provider provides information to the linker for linking pkg_npm built packages + + + +#### `files` +Depset of files in this package (must all be contained within path) + + + +#### `package_name` +The package name. + +Should be the same as name field in the package's package.json. + +In the future, the linker may validate that the names match the name in a package.json file. + + + + +#### `path` +The path to link to. + +Path must be relative to execroot/wksp. It can either an output dir path such as, + +'bazel-out/-/bin/path/to/package' or +'bazel-out/-/bin/external//path/to/package' + +or a source file path such as, + +'path/to/package' or +'external//path/to/package' + + + + +#### `_tslibrary` +For internal use only + + + + + +## NodeContextInfo + +Provides data about the build context, like config_setting's + + + +#### `stamp` +If stamping is enabled + + + + + +## NodeRuntimeDepsInfo + +Stores runtime dependencies of a nodejs_binary or nodejs_test + +These are files that need to be found by the node module resolver at runtime. + +Historically these files were passed using the Runfiles mechanism. +However runfiles has a big performance penalty of creating a symlink forest +with FS API calls for every file in node_modules. +It also causes there to be separate node_modules trees under each binary. This +prevents user-contributed modules passed as deps[] to a particular action from +being found by node module resolver, which expects everything in one tree. + +In node, this resolution is done dynamically by assuming a node_modules +tree will exist on disk, so we assume node actions/binary/test executions will +do the same. + + + + +#### `deps` +depset of runtime dependency labels + + + +#### `pkgs` +list of labels of packages that provide NpmPackageInfo + + + + + +## NpmPackageInfo + +Provides information about npm dependencies + + + +#### `direct_sources` +Depset of direct source files in this npm package + + + +#### `sources` +Depset of direct & transitive source files in this npm package and in its dependencies + + + +#### `workspace` +The workspace name that this npm package is provided from + + + + + +## declaration_info + +Constructs a DeclarationInfo including all transitive declarations from DeclarationInfo providers in a list of deps. + + +### Usage + +``` +declaration_info(declarations, deps) +``` + + + +#### `declarations` + +list of .d.ts files + + + + +#### `deps` + +list of labels of dependencies where we should collect their DeclarationInfo to pass transitively + +Defaults to `[]` + + + + + +## js_ecma_script_module_info + +Constructs a JSEcmaScriptModuleInfo including all transitive sources from JSEcmaScriptModuleInfo providers in a list of deps. + +Returns a single JSEcmaScriptModuleInfo. + + +### Usage + +``` +js_ecma_script_module_info(sources, deps) +``` + + + +#### `sources` + + + + + +#### `deps` + + +Defaults to `[]` + + + + + +## js_module_info + +Constructs a JSModuleInfo including all transitive sources from JSModuleInfo providers in a list of deps. + +Returns a single JSModuleInfo. + + +### Usage + +``` +js_module_info(sources, deps) +``` + + + +#### `sources` + + + + + +#### `deps` + + +Defaults to `[]` + + + + + +## js_named_module_info + +Constructs a JSNamedModuleInfo including all transitive sources from JSNamedModuleInfo providers in a list of deps. + +Returns a single JSNamedModuleInfo. + + +### Usage + +``` +js_named_module_info(sources, deps) +``` + + + +#### `sources` + + + + + +#### `deps` + + +Defaults to `[]` + + + + + +## run_node + +Helper to replace ctx.actions.run + +This calls node programs with a node_modules directory in place + + + +### Usage + +``` +run_node(ctx, inputs, arguments, executable, kwargs) +``` + + + +#### `ctx` + +rule context from the calling rule implementation function + + + + +#### `inputs` + +list or depset of inputs to the action + + + + +#### `arguments` + +list or ctx.actions.Args object containing arguments to pass to the executable + + + + +#### `executable` + +stringy representation of the executable this action will run, eg eg. "my_executable" rather than ctx.executable.my_executable + + + + +#### `kwargs` + +all other args accepted by ctx.actions.run + + + + + + +## node_modules_aspect + + +### Usage + +``` +node_modules_aspect(name) +``` + + + +#### `name` +(*[name], mandatory*): A unique name for this target. + diff --git a/docs/TypeScript.md b/docs/TypeScript.md index 659e7cc955..307d31099f 100755 --- a/docs/TypeScript.md +++ b/docs/TypeScript.md @@ -55,14 +55,6 @@ $ npm install --save-dev @bazel/typescript Watch for any peerDependency warnings - we assume you have already installed the `typescript` package from npm. -Some rules require you to add this to your `WORKSPACE` file: - -```python -# Set up TypeScript toolchain -load("@npm//@bazel/typescript:index.bzl", "ts_setup_workspace") -ts_setup_workspace() -``` - Create a `BUILD.bazel` file in your workspace root. If your `tsconfig.json` file is in the root, use ```python @@ -808,7 +800,7 @@ observe these problems which require workarounds: ### Usage ``` -ts_project(name, tsconfig, srcs, args, deps, extends, declaration, source_map, declaration_map, composite, incremental, emit_declaration_only, tsc, validate, outdir, kwargs) +ts_project(name, tsconfig, srcs, args, deps, extends, declaration, source_map, declaration_map, composite, incremental, emit_declaration_only, tsc, validate, outdir, rootdir, kwargs) ``` @@ -953,27 +945,19 @@ Defaults to `None` -#### `kwargs` +#### `rootdir` +a string specifying a subdirectory under the input package which should be consider the + root directory of all the input files. +Defaults to `None` +#### `kwargs` + -## ts_setup_workspace - -This repository rule should be called from your WORKSPACE file. - -It creates some additional Bazel external repositories that are used internally -by the TypeScript rules. - - -### Usage - -``` -ts_setup_workspace() -``` From 51fa32c66fcbd81642184daa7ca4c8dd51e1409b Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Thu, 16 Jul 2020 18:02:38 -0700 Subject: [PATCH 0778/1134] chore(release): 2.0.0-rc.3 --- CHANGELOG.md | 30 +++++++++++++++++++ docs/install.md | 2 +- e2e/bazel_managed_deps/WORKSPACE | 4 +-- e2e/fine_grained_symlinks/WORKSPACE | 4 +-- e2e/jasmine/WORKSPACE | 4 +-- .../WORKSPACE | 4 +-- e2e/node_loader_preserve_symlinks/WORKSPACE | 4 +-- e2e/nodejs_image/WORKSPACE | 4 +-- e2e/packages/WORKSPACE | 4 +-- e2e/ts_devserver/WORKSPACE | 4 +-- e2e/typescript/WORKSPACE | 4 +-- e2e/webapp/WORKSPACE | 4 +-- examples/angular/WORKSPACE | 4 +-- examples/angular_bazel_architect/WORKSPACE | 4 +-- examples/angular_view_engine/WORKSPACE | 4 +-- examples/app/WORKSPACE | 4 +-- examples/closure/WORKSPACE | 4 +-- examples/create-react-app/WORKSPACE | 4 +-- examples/cypress/WORKSPACE | 4 +-- examples/jest/WORKSPACE | 4 +-- examples/kotlin/WORKSPACE | 4 +-- examples/nestjs/WORKSPACE | 4 +-- examples/parcel/WORKSPACE | 4 +-- examples/protocol_buffers/WORKSPACE | 4 +-- examples/react_webpack/WORKSPACE | 4 +-- examples/vendored_node/WORKSPACE | 4 +-- examples/vendored_node_and_yarn/WORKSPACE | 4 +-- examples/vue/WORKSPACE | 4 +-- examples/web_testing/WORKSPACE | 4 +-- examples/webapp/WORKSPACE | 4 +-- examples/worker/WORKSPACE | 4 +-- package.json | 2 +- packages/create/index.js | 2 +- version.bzl | 2 +- 34 files changed, 92 insertions(+), 62 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3462a393f4..69c89c7080 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,33 @@ +# [2.0.0-rc.3](https://github.com/bazelbuild/rules_nodejs/compare/2.0.0-rc.2...2.0.0-rc.3) (2020-07-17) + + +### Bug Fixes + +* **builtin:** linker fix for when not running in execroot ([b187d50](https://github.com/bazelbuild/rules_nodejs/commit/b187d50)) +* **builtin:** perform the ts-to-js entry_point rewrite ([8cc044f](https://github.com/bazelbuild/rules_nodejs/commit/8cc044f)) + + +### chore + +* remove ts_setup_workspace ([07d9bb8](https://github.com/bazelbuild/rules_nodejs/commit/07d9bb8)), closes [/github.com/bazelbuild/rules_nodejs/pull/1159/files#diff-fe375cd73fb89504b9b9a9a751518849](https://github.com//github.com/bazelbuild/rules_nodejs/pull/1159/files/issues/diff-fe375cd73fb89504b9b9a9a751518849) [#2033](https://github.com/bazelbuild/rules_nodejs/issues/2033) + + +### Features + +* **examples:** add a vanilla cra app ([b7bdab7](https://github.com/bazelbuild/rules_nodejs/commit/b7bdab7)) +* **examples:** convert create-react-app example to bazel run ([a8ff872](https://github.com/bazelbuild/rules_nodejs/commit/a8ff872)) +* **examples:** convert create-react-app example to bazel test ([146e522](https://github.com/bazelbuild/rules_nodejs/commit/146e522)) +* **examples:** show the create-react-app converted to bazel build ([52455e0](https://github.com/bazelbuild/rules_nodejs/commit/52455e0)) +* **typescript:** support for rootdir on ts_project ([bc88536](https://github.com/bazelbuild/rules_nodejs/commit/bc88536)) +* add depset support to run_node inputs, matching ctx.action.run ([ee584f8](https://github.com/bazelbuild/rules_nodejs/commit/ee584f8)) + + +### BREAKING CHANGES + +* ts_setup_workspace was a no-op and has been removed. Simply remove it from your WORKSPACE file. + + + # [2.0.0-rc.2](https://github.com/bazelbuild/rules_nodejs/compare/2.0.0-rc.1...2.0.0-rc.2) (2020-07-10) diff --git a/docs/install.md b/docs/install.md index 371da70f6d..ca74facf91 100644 --- a/docs/install.md +++ b/docs/install.md @@ -31,7 +31,7 @@ containing: load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], ) diff --git a/e2e/bazel_managed_deps/WORKSPACE b/e2e/bazel_managed_deps/WORKSPACE index a557efea2c..87371e77ca 100644 --- a/e2e/bazel_managed_deps/WORKSPACE +++ b/e2e/bazel_managed_deps/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/fine_grained_symlinks/WORKSPACE b/e2e/fine_grained_symlinks/WORKSPACE index daf4fbf76a..3b001905b8 100644 --- a/e2e/fine_grained_symlinks/WORKSPACE +++ b/e2e/fine_grained_symlinks/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") diff --git a/e2e/jasmine/WORKSPACE b/e2e/jasmine/WORKSPACE index 3384e86abd..9c0914b042 100644 --- a/e2e/jasmine/WORKSPACE +++ b/e2e/jasmine/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/node_loader_no_preserve_symlinks/WORKSPACE b/e2e/node_loader_no_preserve_symlinks/WORKSPACE index 94d6fdf44f..559d20cd56 100644 --- a/e2e/node_loader_no_preserve_symlinks/WORKSPACE +++ b/e2e/node_loader_no_preserve_symlinks/WORKSPACE @@ -9,8 +9,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") diff --git a/e2e/node_loader_preserve_symlinks/WORKSPACE b/e2e/node_loader_preserve_symlinks/WORKSPACE index 161f76b06e..b0ba0e6151 100644 --- a/e2e/node_loader_preserve_symlinks/WORKSPACE +++ b/e2e/node_loader_preserve_symlinks/WORKSPACE @@ -9,8 +9,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/nodejs_image/WORKSPACE b/e2e/nodejs_image/WORKSPACE index dec80fc709..463a741049 100644 --- a/e2e/nodejs_image/WORKSPACE +++ b/e2e/nodejs_image/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/packages/WORKSPACE b/e2e/packages/WORKSPACE index ba0b31abc6..060d1eb959 100644 --- a/e2e/packages/WORKSPACE +++ b/e2e/packages/WORKSPACE @@ -4,8 +4,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "check_rules_nodejs_version", "node_repositories", "npm_install", "yarn_install") diff --git a/e2e/ts_devserver/WORKSPACE b/e2e/ts_devserver/WORKSPACE index 0635c4bcf2..640cc801cb 100644 --- a/e2e/ts_devserver/WORKSPACE +++ b/e2e/ts_devserver/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/typescript/WORKSPACE b/e2e/typescript/WORKSPACE index 17d9e21f50..a06a78cf29 100644 --- a/e2e/typescript/WORKSPACE +++ b/e2e/typescript/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/webapp/WORKSPACE b/e2e/webapp/WORKSPACE index 3addb702ce..408aa30cda 100644 --- a/e2e/webapp/WORKSPACE +++ b/e2e/webapp/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/angular/WORKSPACE b/examples/angular/WORKSPACE index df608243b0..dea0b0fb2d 100644 --- a/examples/angular/WORKSPACE +++ b/examples/angular/WORKSPACE @@ -16,8 +16,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch rules_nodejs so we can install our npm dependencies http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) # Fetch sass rules for compiling sass files diff --git a/examples/angular_bazel_architect/WORKSPACE b/examples/angular_bazel_architect/WORKSPACE index dddeea04de..87a8998128 100644 --- a/examples/angular_bazel_architect/WORKSPACE +++ b/examples/angular_bazel_architect/WORKSPACE @@ -12,8 +12,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) # The yarn_install rule runs yarn anytime the package.json or yarn.lock file changes. diff --git a/examples/angular_view_engine/WORKSPACE b/examples/angular_view_engine/WORKSPACE index 7e1dba8f19..df98edb55e 100644 --- a/examples/angular_view_engine/WORKSPACE +++ b/examples/angular_view_engine/WORKSPACE @@ -16,8 +16,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch rules_nodejs so we can install our npm dependencies http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) # Fetch sass rules for compiling sass files diff --git a/examples/app/WORKSPACE b/examples/app/WORKSPACE index a1da81c8ee..eb8ae13025 100644 --- a/examples/app/WORKSPACE +++ b/examples/app/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/closure/WORKSPACE b/examples/closure/WORKSPACE index d5d80c55b8..683f7ee59d 100644 --- a/examples/closure/WORKSPACE +++ b/examples/closure/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/create-react-app/WORKSPACE b/examples/create-react-app/WORKSPACE index 45b821a965..796a9e08de 100644 --- a/examples/create-react-app/WORKSPACE +++ b/examples/create-react-app/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) http_archive( diff --git a/examples/cypress/WORKSPACE b/examples/cypress/WORKSPACE index 70e8c3efe0..4af603804a 100644 --- a/examples/cypress/WORKSPACE +++ b/examples/cypress/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/jest/WORKSPACE b/examples/jest/WORKSPACE index 539be8080a..0d86fcfaab 100644 --- a/examples/jest/WORKSPACE +++ b/examples/jest/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/kotlin/WORKSPACE b/examples/kotlin/WORKSPACE index 200748abc0..05ee287120 100644 --- a/examples/kotlin/WORKSPACE +++ b/examples/kotlin/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) # Install external npm dependencies diff --git a/examples/nestjs/WORKSPACE b/examples/nestjs/WORKSPACE index 59159ca28f..6bd309256a 100644 --- a/examples/nestjs/WORKSPACE +++ b/examples/nestjs/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/parcel/WORKSPACE b/examples/parcel/WORKSPACE index f0736a68c4..e9a9405951 100644 --- a/examples/parcel/WORKSPACE +++ b/examples/parcel/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "npm_install") diff --git a/examples/protocol_buffers/WORKSPACE b/examples/protocol_buffers/WORKSPACE index 7d50e2766c..92159fcf01 100644 --- a/examples/protocol_buffers/WORKSPACE +++ b/examples/protocol_buffers/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) http_archive( diff --git a/examples/react_webpack/WORKSPACE b/examples/react_webpack/WORKSPACE index ec22588c50..902ad84559 100644 --- a/examples/react_webpack/WORKSPACE +++ b/examples/react_webpack/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/vendored_node/WORKSPACE b/examples/vendored_node/WORKSPACE index b30440b1c3..34546cd786 100644 --- a/examples/vendored_node/WORKSPACE +++ b/examples/vendored_node/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) http_archive( diff --git a/examples/vendored_node_and_yarn/WORKSPACE b/examples/vendored_node_and_yarn/WORKSPACE index 0fac082113..7f05ea05ed 100644 --- a/examples/vendored_node_and_yarn/WORKSPACE +++ b/examples/vendored_node_and_yarn/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) http_archive( diff --git a/examples/vue/WORKSPACE b/examples/vue/WORKSPACE index 638a02c4b3..27188d2b98 100644 --- a/examples/vue/WORKSPACE +++ b/examples/vue/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "npm_install") diff --git a/examples/web_testing/WORKSPACE b/examples/web_testing/WORKSPACE index 52e1e1c893..c64a941dcb 100644 --- a/examples/web_testing/WORKSPACE +++ b/examples/web_testing/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/webapp/WORKSPACE b/examples/webapp/WORKSPACE index 07f597a1bb..0f15c949a9 100644 --- a/examples/webapp/WORKSPACE +++ b/examples/webapp/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/worker/WORKSPACE b/examples/worker/WORKSPACE index ceb6c88032..edadbf87f0 100644 --- a/examples/worker/WORKSPACE +++ b/examples/worker/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.2/rules_nodejs-2.0.0-rc.2.tar.gz"], + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/package.json b/package.json index a9ab5df635..bb5d859b51 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@bazel/javascript", "description": "Build JavaScript with Bazel", - "version": "2.0.0-rc.2", + "version": "2.0.0-rc.3", "keywords": [ "javascript", "bazel" diff --git a/packages/create/index.js b/packages/create/index.js index 24f1bcfba1..90ed768295 100644 --- a/packages/create/index.js +++ b/packages/create/index.js @@ -157,7 +157,7 @@ workspace( load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "cb6d92c93a1769205d6573c21363bdbdcf5831af114a7fbc3f800b8598207dee", + sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], ) diff --git a/version.bzl b/version.bzl index 4936348979..a2c9f167c1 100644 --- a/version.bzl +++ b/version.bzl @@ -19,4 +19,4 @@ # It will be automatically synced via the npm "version" script # that is run when running `npm version` during the release # process. See `Releasing` section in README.md. -VERSION = "2.0.0-rc.0" +VERSION = "2.0.0-rc.3" From 9dcfed98a06ce1402b0b17872b1ad5677567c846 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Thu, 16 Jul 2020 18:15:02 -0700 Subject: [PATCH 0779/1134] chore: update lock files for release --- e2e/bazel_managed_deps/package.json | 2 +- e2e/bazel_managed_deps/yarn.lock | 8 +-- e2e/jasmine/package.json | 2 +- e2e/jasmine/yarn.lock | 8 +-- e2e/ts_devserver/package.json | 4 +- e2e/ts_devserver/yarn.lock | 18 ++--- e2e/typescript/package.json | 4 +- e2e/typescript/yarn.lock | 16 ++--- e2e/webapp/package.json | 4 +- e2e/webapp/yarn.lock | 16 ++--- examples/angular/package.json | 12 ++-- examples/angular/yarn.lock | 54 +++++++------- examples/angular_view_engine/package.json | 10 +-- examples/angular_view_engine/yarn.lock | 46 ++++++------ examples/app/package.json | 8 +-- examples/app/yarn.lock | 38 +++++----- examples/cypress/package.json | 4 +- examples/cypress/yarn.lock | 16 ++--- examples/kotlin/package-lock.json | 76 +++++--------------- examples/kotlin/package.json | 6 +- examples/nestjs/package.json | 4 +- examples/nestjs/yarn.lock | 16 ++--- examples/protocol_buffers/package.json | 12 ++-- examples/protocol_buffers/yarn.lock | 56 +++++++-------- examples/react_webpack/package.json | 2 +- examples/react_webpack/yarn.lock | 8 +-- examples/vendored_node/package-lock.json | 64 +++-------------- examples/vendored_node/package.json | 2 +- examples/vendored_node_and_yarn/package.json | 2 +- examples/vendored_node_and_yarn/yarn.lock | 8 +-- examples/web_testing/package.json | 4 +- examples/web_testing/yarn.lock | 16 ++--- examples/webapp/package.json | 8 +-- examples/webapp/yarn.lock | 38 +++++----- examples/worker/package.json | 2 +- examples/worker/yarn.lock | 8 +-- 36 files changed, 259 insertions(+), 343 deletions(-) diff --git a/e2e/bazel_managed_deps/package.json b/e2e/bazel_managed_deps/package.json index f8133f621c..f80a78e49f 100644 --- a/e2e/bazel_managed_deps/package.json +++ b/e2e/bazel_managed_deps/package.json @@ -1,7 +1,7 @@ { "description": "runtime dependencies for bazel_managed_deps example", "devDependencies": { - "@bazel/jasmine": "^2.0.0-rc.2", + "@bazel/jasmine": "^2.0.0-rc.3", "jasmine": "^3.5.0", "typescript": "^3.0.1" }, diff --git a/e2e/bazel_managed_deps/yarn.lock b/e2e/bazel_managed_deps/yarn.lock index f4a4267526..fa2e174327 100644 --- a/e2e/bazel_managed_deps/yarn.lock +++ b/e2e/bazel_managed_deps/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.2.tgz#6946c7d6825fc89e92f03b0f5cc253d9ddb39021" - integrity sha512-xIi6O04XxiWxdcBosQ4SiuUSVLB+ZqVjxz1MYCsh+LEdXu5mBk1WY2HhaQ8T6Lvj3zzfg1TL3n+e0/rO/oAHFQ== +"@bazel/jasmine@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.3.tgz#b40e5ee3b10c2d8f610dd77ee5d6e91cd3fb43e6" + integrity sha512-8N4dZgN7FaHjeGxMy+B1mcUbXlVEwLRkcedDIZARR6oSRriw5k+hsbKYSm8+sH7Wc9RsyxJNWMglzAGwoMEH1Q== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/e2e/jasmine/package.json b/e2e/jasmine/package.json index 77347f3db3..f7e9d49b15 100644 --- a/e2e/jasmine/package.json +++ b/e2e/jasmine/package.json @@ -1,7 +1,7 @@ { "name": "e2e-jasmine", "dependencies": { - "@bazel/jasmine": "^2.0.0-rc.2", + "@bazel/jasmine": "^2.0.0-rc.3", "zone.js": "0.8.29" }, "//": "Include an incompatible jasmine as a devDependency to verify that jasmine_node_test works regardless", diff --git a/e2e/jasmine/yarn.lock b/e2e/jasmine/yarn.lock index 85771d9a4b..2de727f351 100644 --- a/e2e/jasmine/yarn.lock +++ b/e2e/jasmine/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.2.tgz#6946c7d6825fc89e92f03b0f5cc253d9ddb39021" - integrity sha512-xIi6O04XxiWxdcBosQ4SiuUSVLB+ZqVjxz1MYCsh+LEdXu5mBk1WY2HhaQ8T6Lvj3zzfg1TL3n+e0/rO/oAHFQ== +"@bazel/jasmine@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.3.tgz#b40e5ee3b10c2d8f610dd77ee5d6e91cd3fb43e6" + integrity sha512-8N4dZgN7FaHjeGxMy+B1mcUbXlVEwLRkcedDIZARR6oSRriw5k+hsbKYSm8+sH7Wc9RsyxJNWMglzAGwoMEH1Q== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/e2e/ts_devserver/package.json b/e2e/ts_devserver/package.json index 1439bf4d01..cb37e86500 100644 --- a/e2e/ts_devserver/package.json +++ b/e2e/ts_devserver/package.json @@ -1,7 +1,7 @@ { "dependencies": { - "@bazel/protractor": "^2.0.0-rc.2", - "@bazel/typescript": "^2.0.0-rc.2", + "@bazel/protractor": "^2.0.0-rc.3", + "@bazel/typescript": "^2.0.0-rc.3", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "date-fns": "1.30.1", diff --git a/e2e/ts_devserver/yarn.lock b/e2e/ts_devserver/yarn.lock index 52e413445b..f4b6a4e660 100644 --- a/e2e/ts_devserver/yarn.lock +++ b/e2e/ts_devserver/yarn.lock @@ -2,15 +2,15 @@ # yarn lockfile v1 -"@bazel/protractor@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.2.tgz#237c1c98fd5d918a703f0f32fd3580ee7314c351" - integrity sha512-JR68nnLSOui70GLUijWdUirgwQmfGdfiSWWuF7fxkhiPMMk22pju1/vph62AOY8O4mXpHXrsIBSvlcKznrB3Sw== - -"@bazel/typescript@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" - integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== +"@bazel/protractor@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.3.tgz#fa48a1ca604ad0c647c0aed6e2dde56a4eaf5251" + integrity sha512-8Wf8ZdkA02zyx9q3h3+i7VxXpm4SDEXGB4vMefZZZP742t1foZNxbsCFABWeepG68IRnHgJkxoncckRr2w+LKQ== + +"@bazel/typescript@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" + integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/e2e/typescript/package.json b/e2e/typescript/package.json index af016e3bbb..becf4c3853 100644 --- a/e2e/typescript/package.json +++ b/e2e/typescript/package.json @@ -1,7 +1,7 @@ { "dependencies": { - "@bazel/jasmine": "^2.0.0-rc.2", - "@bazel/typescript": "^2.0.0-rc.2", + "@bazel/jasmine": "^2.0.0-rc.3", + "@bazel/typescript": "^2.0.0-rc.3", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "date-fns": "^1.30.1", diff --git a/e2e/typescript/yarn.lock b/e2e/typescript/yarn.lock index 59ba594924..34670c8d86 100644 --- a/e2e/typescript/yarn.lock +++ b/e2e/typescript/yarn.lock @@ -2,18 +2,18 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.2.tgz#6946c7d6825fc89e92f03b0f5cc253d9ddb39021" - integrity sha512-xIi6O04XxiWxdcBosQ4SiuUSVLB+ZqVjxz1MYCsh+LEdXu5mBk1WY2HhaQ8T6Lvj3zzfg1TL3n+e0/rO/oAHFQ== +"@bazel/jasmine@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.3.tgz#b40e5ee3b10c2d8f610dd77ee5d6e91cd3fb43e6" + integrity sha512-8N4dZgN7FaHjeGxMy+B1mcUbXlVEwLRkcedDIZARR6oSRriw5k+hsbKYSm8+sH7Wc9RsyxJNWMglzAGwoMEH1Q== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" -"@bazel/typescript@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" - integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== +"@bazel/typescript@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" + integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/e2e/webapp/package.json b/e2e/webapp/package.json index 7172cd1f62..34f8179beb 100644 --- a/e2e/webapp/package.json +++ b/e2e/webapp/package.json @@ -2,8 +2,8 @@ "name": "e2e-terser", "private": true, "devDependencies": { - "@bazel/rollup": "^2.0.0-rc.2", - "@bazel/terser": "^2.0.0-rc.2", + "@bazel/rollup": "^2.0.0-rc.3", + "@bazel/terser": "^2.0.0-rc.3", "rollup": "1.20.3", "terser": "4.3.1" }, diff --git a/e2e/webapp/yarn.lock b/e2e/webapp/yarn.lock index 40c3315d4f..643a8337a8 100644 --- a/e2e/webapp/yarn.lock +++ b/e2e/webapp/yarn.lock @@ -2,15 +2,15 @@ # yarn lockfile v1 -"@bazel/rollup@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.2.tgz#86600a3bc73ab587210be5eb060ff39a3f3922d8" - integrity sha512-40QkDxNBHEtYtPVDzhkChPM0v/xU9IacfRx70eHUD1iKY3SrIGdFN79uXHRqU4OY8llKwTPVlOMqtLqzdSRLBw== +"@bazel/rollup@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.3.tgz#6b27da7d9640a7267f65340b217ba4c76201edd1" + integrity sha512-Ome9L/UaQZueHansa1ueJdIDa3Wcy5Dp2NvWWSayZDUegCem7NN72iTD0VFJyh9cPUNamk1c7BF0Vhyxhj0rPw== -"@bazel/terser@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.2.tgz#d0794577681f6ccc00036ca417247963d2396117" - integrity sha512-LN5H46UPaOAbzfHqFQgkDnGSdiTYBc37+XafjelUS54jtKAsMX2Fb7Qu4JcO6W2HdK3uWcOIdUCrRyT2yCAAUA== +"@bazel/terser@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.3.tgz#bbe342411bda953a729cb0daba0835bb9c4c826a" + integrity sha512-pLyki1SSYrfhFK50gD50jYRUYHkzqHGMgY3pkP5zDI8TAa06rLmpfPJU6ote06oJ25QIW7vmiZ/vAX0KZmkmAA== "@types/estree@0.0.39": version "0.0.39" diff --git a/examples/angular/package.json b/examples/angular/package.json index d764aca4b2..3e8aceb096 100644 --- a/examples/angular/package.json +++ b/examples/angular/package.json @@ -33,16 +33,16 @@ "@babel/cli": "^7.6.0", "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", - "@bazel/angular": "^2.0.0-rc.2", + "@bazel/angular": "^2.0.0-rc.3", "@bazel/bazelisk": "^1.5.0", "@bazel/benchmark-runner": "^0.1.0", "@bazel/buildifier": "^3.3.0", "@bazel/ibazel": "^0.13.1", - "@bazel/karma": "^2.0.0-rc.2", - "@bazel/protractor": "^2.0.0-rc.2", - "@bazel/rollup": "^2.0.0-rc.2", - "@bazel/terser": "^2.0.0-rc.2", - "@bazel/typescript": "^2.0.0-rc.2", + "@bazel/karma": "^2.0.0-rc.3", + "@bazel/protractor": "^2.0.0-rc.3", + "@bazel/rollup": "^2.0.0-rc.3", + "@bazel/terser": "^2.0.0-rc.3", + "@bazel/typescript": "^2.0.0-rc.3", "@types/jasmine": "3.4.0", "@types/node": "6.14.6", "core-js": "2.6.9", diff --git a/examples/angular/yarn.lock b/examples/angular/yarn.lock index e2fb8cb448..3f04bfa93e 100644 --- a/examples/angular/yarn.lock +++ b/examples/angular/yarn.lock @@ -827,10 +827,10 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/angular@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/angular/-/angular-2.0.0-rc.2.tgz#7218e8f5be9f75428c9d9be59d7ea64c72bd6213" - integrity sha512-sjZtWJ6Xl55Ya5T+CC3H5HQrDth5xZDcCRbqPNEWiJBHgAUNkGqoaayXSOPbayaQUciZd9QnYz3AiYOpI3caMw== +"@bazel/angular@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/angular/-/angular-2.0.0-rc.3.tgz#36373f47ebd889a7ae6fb9e188a5ad681e540a2e" + integrity sha512-NV6TRRODpqdVTSdHODtEI78ZKnzwJmrAC0IhgXqMaM8q+tQdkgnX4d1W6sfwH/bO5Z0vlVlQQkfLa68lxiX5JQ== dependencies: "@angular-devkit/architect" "^0.901.7" "@bazel/bazelisk" "^1.4.0" @@ -871,32 +871,32 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/karma@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.2.tgz#e41e70ae4984b37ebf02e9319f8d65a325bfa7bc" - integrity sha512-S09z/lz1qE2n1aMuHRWa6rgt3SH8K00msl6EHe9RX6t4C5SOZnZa01gwDL24qbTIR++u2hw27CAd1un0dpQgyA== +"@bazel/karma@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.3.tgz#0488a077832b3a9c09fda70b7b1b80755144ad64" + integrity sha512-IoNXMVpDYnNejEIercM5l2RHKCUuQd5SW6MGXwGCJkQ3PyhvV1+YPs8lrzQfBhUw+Xs7T4q7UgPP68MAsOex3Q== dependencies: tmp "0.1.0" -"@bazel/protractor@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.2.tgz#237c1c98fd5d918a703f0f32fd3580ee7314c351" - integrity sha512-JR68nnLSOui70GLUijWdUirgwQmfGdfiSWWuF7fxkhiPMMk22pju1/vph62AOY8O4mXpHXrsIBSvlcKznrB3Sw== - -"@bazel/rollup@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.2.tgz#86600a3bc73ab587210be5eb060ff39a3f3922d8" - integrity sha512-40QkDxNBHEtYtPVDzhkChPM0v/xU9IacfRx70eHUD1iKY3SrIGdFN79uXHRqU4OY8llKwTPVlOMqtLqzdSRLBw== - -"@bazel/terser@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.2.tgz#d0794577681f6ccc00036ca417247963d2396117" - integrity sha512-LN5H46UPaOAbzfHqFQgkDnGSdiTYBc37+XafjelUS54jtKAsMX2Fb7Qu4JcO6W2HdK3uWcOIdUCrRyT2yCAAUA== - -"@bazel/typescript@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" - integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== +"@bazel/protractor@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.3.tgz#fa48a1ca604ad0c647c0aed6e2dde56a4eaf5251" + integrity sha512-8Wf8ZdkA02zyx9q3h3+i7VxXpm4SDEXGB4vMefZZZP742t1foZNxbsCFABWeepG68IRnHgJkxoncckRr2w+LKQ== + +"@bazel/rollup@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.3.tgz#6b27da7d9640a7267f65340b217ba4c76201edd1" + integrity sha512-Ome9L/UaQZueHansa1ueJdIDa3Wcy5Dp2NvWWSayZDUegCem7NN72iTD0VFJyh9cPUNamk1c7BF0Vhyxhj0rPw== + +"@bazel/terser@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.3.tgz#bbe342411bda953a729cb0daba0835bb9c4c826a" + integrity sha512-pLyki1SSYrfhFK50gD50jYRUYHkzqHGMgY3pkP5zDI8TAa06rLmpfPJU6ote06oJ25QIW7vmiZ/vAX0KZmkmAA== + +"@bazel/typescript@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" + integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/angular_view_engine/package.json b/examples/angular_view_engine/package.json index 1b60631287..1862e12957 100644 --- a/examples/angular_view_engine/package.json +++ b/examples/angular_view_engine/package.json @@ -36,11 +36,11 @@ "@bazel/benchmark-runner": "^0.1.0", "@bazel/buildifier": "^3.3.0", "@bazel/ibazel": "^0.13.1", - "@bazel/karma": "^2.0.0-rc.2", - "@bazel/protractor": "^2.0.0-rc.2", - "@bazel/rollup": "^2.0.0-rc.2", - "@bazel/terser": "^2.0.0-rc.2", - "@bazel/typescript": "^2.0.0-rc.2", + "@bazel/karma": "^2.0.0-rc.3", + "@bazel/protractor": "^2.0.0-rc.3", + "@bazel/rollup": "^2.0.0-rc.3", + "@bazel/terser": "^2.0.0-rc.3", + "@bazel/typescript": "^2.0.0-rc.3", "@types/jasmine": "3.4.0", "@types/node": "6.14.6", "core-js": "2.6.9", diff --git a/examples/angular_view_engine/yarn.lock b/examples/angular_view_engine/yarn.lock index ce1cc7f611..11d3b77ac9 100644 --- a/examples/angular_view_engine/yarn.lock +++ b/examples/angular_view_engine/yarn.lock @@ -833,32 +833,32 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/karma@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.2.tgz#e41e70ae4984b37ebf02e9319f8d65a325bfa7bc" - integrity sha512-S09z/lz1qE2n1aMuHRWa6rgt3SH8K00msl6EHe9RX6t4C5SOZnZa01gwDL24qbTIR++u2hw27CAd1un0dpQgyA== +"@bazel/karma@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.3.tgz#0488a077832b3a9c09fda70b7b1b80755144ad64" + integrity sha512-IoNXMVpDYnNejEIercM5l2RHKCUuQd5SW6MGXwGCJkQ3PyhvV1+YPs8lrzQfBhUw+Xs7T4q7UgPP68MAsOex3Q== dependencies: tmp "0.1.0" -"@bazel/protractor@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.2.tgz#237c1c98fd5d918a703f0f32fd3580ee7314c351" - integrity sha512-JR68nnLSOui70GLUijWdUirgwQmfGdfiSWWuF7fxkhiPMMk22pju1/vph62AOY8O4mXpHXrsIBSvlcKznrB3Sw== - -"@bazel/rollup@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.2.tgz#86600a3bc73ab587210be5eb060ff39a3f3922d8" - integrity sha512-40QkDxNBHEtYtPVDzhkChPM0v/xU9IacfRx70eHUD1iKY3SrIGdFN79uXHRqU4OY8llKwTPVlOMqtLqzdSRLBw== - -"@bazel/terser@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.2.tgz#d0794577681f6ccc00036ca417247963d2396117" - integrity sha512-LN5H46UPaOAbzfHqFQgkDnGSdiTYBc37+XafjelUS54jtKAsMX2Fb7Qu4JcO6W2HdK3uWcOIdUCrRyT2yCAAUA== - -"@bazel/typescript@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" - integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== +"@bazel/protractor@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.3.tgz#fa48a1ca604ad0c647c0aed6e2dde56a4eaf5251" + integrity sha512-8Wf8ZdkA02zyx9q3h3+i7VxXpm4SDEXGB4vMefZZZP742t1foZNxbsCFABWeepG68IRnHgJkxoncckRr2w+LKQ== + +"@bazel/rollup@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.3.tgz#6b27da7d9640a7267f65340b217ba4c76201edd1" + integrity sha512-Ome9L/UaQZueHansa1ueJdIDa3Wcy5Dp2NvWWSayZDUegCem7NN72iTD0VFJyh9cPUNamk1c7BF0Vhyxhj0rPw== + +"@bazel/terser@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.3.tgz#bbe342411bda953a729cb0daba0835bb9c4c826a" + integrity sha512-pLyki1SSYrfhFK50gD50jYRUYHkzqHGMgY3pkP5zDI8TAa06rLmpfPJU6ote06oJ25QIW7vmiZ/vAX0KZmkmAA== + +"@bazel/typescript@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" + integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/app/package.json b/examples/app/package.json index ca1b386a90..907c91dcab 100644 --- a/examples/app/package.json +++ b/examples/app/package.json @@ -1,9 +1,9 @@ { "devDependencies": { - "@bazel/protractor": "^2.0.0-rc.2", - "@bazel/rollup": "^2.0.0-rc.2", - "@bazel/terser": "^2.0.0-rc.2", - "@bazel/typescript": "^2.0.0-rc.2", + "@bazel/protractor": "^2.0.0-rc.3", + "@bazel/rollup": "^2.0.0-rc.3", + "@bazel/terser": "^2.0.0-rc.3", + "@bazel/typescript": "^2.0.0-rc.3", "@types/jasmine": "3.3.15", "html-insert-assets": "^0.6.0", "http-server": "^0.11.1", diff --git a/examples/app/yarn.lock b/examples/app/yarn.lock index 03e2d2e7d7..2c29438aef 100644 --- a/examples/app/yarn.lock +++ b/examples/app/yarn.lock @@ -2,25 +2,25 @@ # yarn lockfile v1 -"@bazel/protractor@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.2.tgz#237c1c98fd5d918a703f0f32fd3580ee7314c351" - integrity sha512-JR68nnLSOui70GLUijWdUirgwQmfGdfiSWWuF7fxkhiPMMk22pju1/vph62AOY8O4mXpHXrsIBSvlcKznrB3Sw== - -"@bazel/rollup@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.2.tgz#86600a3bc73ab587210be5eb060ff39a3f3922d8" - integrity sha512-40QkDxNBHEtYtPVDzhkChPM0v/xU9IacfRx70eHUD1iKY3SrIGdFN79uXHRqU4OY8llKwTPVlOMqtLqzdSRLBw== - -"@bazel/terser@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.2.tgz#d0794577681f6ccc00036ca417247963d2396117" - integrity sha512-LN5H46UPaOAbzfHqFQgkDnGSdiTYBc37+XafjelUS54jtKAsMX2Fb7Qu4JcO6W2HdK3uWcOIdUCrRyT2yCAAUA== - -"@bazel/typescript@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" - integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== +"@bazel/protractor@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.3.tgz#fa48a1ca604ad0c647c0aed6e2dde56a4eaf5251" + integrity sha512-8Wf8ZdkA02zyx9q3h3+i7VxXpm4SDEXGB4vMefZZZP742t1foZNxbsCFABWeepG68IRnHgJkxoncckRr2w+LKQ== + +"@bazel/rollup@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.3.tgz#6b27da7d9640a7267f65340b217ba4c76201edd1" + integrity sha512-Ome9L/UaQZueHansa1ueJdIDa3Wcy5Dp2NvWWSayZDUegCem7NN72iTD0VFJyh9cPUNamk1c7BF0Vhyxhj0rPw== + +"@bazel/terser@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.3.tgz#bbe342411bda953a729cb0daba0835bb9c4c826a" + integrity sha512-pLyki1SSYrfhFK50gD50jYRUYHkzqHGMgY3pkP5zDI8TAa06rLmpfPJU6ote06oJ25QIW7vmiZ/vAX0KZmkmAA== + +"@bazel/typescript@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" + integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/cypress/package.json b/examples/cypress/package.json index 7e8d9b3949..74bddbddde 100644 --- a/examples/cypress/package.json +++ b/examples/cypress/package.json @@ -6,9 +6,9 @@ }, "devDependencies": { "@bazel/bazelisk": "^1.5.0", - "@bazel/cypress": "^2.0.0-rc.2", + "@bazel/cypress": "^2.0.0-rc.3", "@bazel/ibazel": "^0.13.1", - "@bazel/typescript": "^2.0.0-rc.2", + "@bazel/typescript": "^2.0.0-rc.3", "@cypress/browserify-preprocessor": "^3.0.0", "@types/node": "14.0.13", "cypress": "^4.8.0", diff --git a/examples/cypress/yarn.lock b/examples/cypress/yarn.lock index e27f4a7026..9610d02934 100644 --- a/examples/cypress/yarn.lock +++ b/examples/cypress/yarn.lock @@ -749,20 +749,20 @@ resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.5.0.tgz#61f583ed93be138b47be7180403938ea4057f54b" integrity sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg== -"@bazel/cypress@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/cypress/-/cypress-2.0.0-rc.2.tgz#f00e48f3108337df1e0044aa25e1b84de4f7f10c" - integrity sha512-4+lZY0vJVa/BwrsWGeE1iDVQFHSb4Wvh35gVfyHq17QA1BNdZyZZFJSJhAr3LZCl3REz3aAhiIvq+kyBy03cwg== +"@bazel/cypress@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/cypress/-/cypress-2.0.0-rc.3.tgz#33d717dec8399793b6368dd793ee14926363a4d0" + integrity sha512-3gX80qPosNamovKj/l9tWNojn7UdvgfscH2+fX44VDr+GI2mG82ujIIg9GPqiQFxSBZp/gISBSjqXNlgZ3XFyQ== "@bazel/ibazel@^0.13.1": version "0.13.1" resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/typescript@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" - integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== +"@bazel/typescript@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" + integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/kotlin/package-lock.json b/examples/kotlin/package-lock.json index 50691ee5ff..d65b039a09 100644 --- a/examples/kotlin/package-lock.json +++ b/examples/kotlin/package-lock.json @@ -3,20 +3,10 @@ "requires": true, "lockfileVersion": 1, "dependencies": { - "@babel/runtime-corejs3": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz", - "integrity": "sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw==", - "dev": true, - "requires": { - "core-js-pure": "^3.0.0", - "regenerator-runtime": "^0.13.4" - } - }, "@bazel/jasmine": { - "version": "2.0.0-rc.2", - "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0-rc.2.tgz", - "integrity": "sha512-xIi6O04XxiWxdcBosQ4SiuUSVLB+ZqVjxz1MYCsh+LEdXu5mBk1WY2HhaQ8T6Lvj3zzfg1TL3n+e0/rO/oAHFQ==", + "version": "2.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0-rc.3.tgz", + "integrity": "sha512-8N4dZgN7FaHjeGxMy+B1mcUbXlVEwLRkcedDIZARR6oSRriw5k+hsbKYSm8+sH7Wc9RsyxJNWMglzAGwoMEH1Q==", "dev": true, "requires": { "c8": "~7.1.0", @@ -24,15 +14,15 @@ } }, "@bazel/rollup": { - "version": "2.0.0-rc.2", - "resolved": "https://registry.npmjs.org/@bazel/rollup/-/rollup-2.0.0-rc.2.tgz", - "integrity": "sha512-40QkDxNBHEtYtPVDzhkChPM0v/xU9IacfRx70eHUD1iKY3SrIGdFN79uXHRqU4OY8llKwTPVlOMqtLqzdSRLBw==", + "version": "2.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@bazel/rollup/-/rollup-2.0.0-rc.3.tgz", + "integrity": "sha512-Ome9L/UaQZueHansa1ueJdIDa3Wcy5Dp2NvWWSayZDUegCem7NN72iTD0VFJyh9cPUNamk1c7BF0Vhyxhj0rPw==", "dev": true }, "@bazel/terser": { - "version": "2.0.0-rc.2", - "resolved": "https://registry.npmjs.org/@bazel/terser/-/terser-2.0.0-rc.2.tgz", - "integrity": "sha512-LN5H46UPaOAbzfHqFQgkDnGSdiTYBc37+XafjelUS54jtKAsMX2Fb7Qu4JcO6W2HdK3uWcOIdUCrRyT2yCAAUA==", + "version": "2.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@bazel/terser/-/terser-2.0.0-rc.3.tgz", + "integrity": "sha512-pLyki1SSYrfhFK50gD50jYRUYHkzqHGMgY3pkP5zDI8TAa06rLmpfPJU6ote06oJ25QIW7vmiZ/vAX0KZmkmAA==", "dev": true }, "@bcoe/v8-coverage": { @@ -222,12 +212,6 @@ "safe-buffer": "~5.1.1" } }, - "core-js-pure": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", - "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", - "dev": true - }, "corser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", @@ -255,13 +239,10 @@ } }, "decamelize": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-3.2.0.tgz", - "integrity": "sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw==", - "dev": true, - "requires": { - "xregexp": "^4.2.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "domino": { "version": "2.1.3", @@ -701,12 +682,6 @@ "integrity": "sha1-6eha2+ddoLvkyOBHaghikPhjtAQ=", "dev": true }, - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", - "dev": true - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -979,15 +954,6 @@ "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", "dev": true }, - "xregexp": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", - "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", - "dev": true, - "requires": { - "@babel/runtime-corejs3": "^7.8.3" - } - }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", @@ -995,13 +961,13 @@ "dev": true }, "yargs": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.0.tgz", - "integrity": "sha512-D3fRFnZwLWp8jVAAhPZBsmeIHY8tTsb8ItV9KaAaopmC6wde2u6Yw29JBIZHXw14kgkRnYmDgmQU4FVMDlIsWw==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "requires": { "cliui": "^6.0.0", - "decamelize": "^3.2.0", + "decamelize": "^1.2.0", "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", @@ -1021,14 +987,6 @@ "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" - }, - "dependencies": { - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - } } } } diff --git a/examples/kotlin/package.json b/examples/kotlin/package.json index 643c83233b..08f6e8bd81 100644 --- a/examples/kotlin/package.json +++ b/examples/kotlin/package.json @@ -2,9 +2,9 @@ "name": "kotlin_example", "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.0-rc.2", - "@bazel/rollup": "^2.0.0-rc.2", - "@bazel/terser": "^2.0.0-rc.2", + "@bazel/jasmine": "^2.0.0-rc.3", + "@bazel/rollup": "^2.0.0-rc.3", + "@bazel/terser": "^2.0.0-rc.3", "domino": "^2.1.3", "http-server": "^0.11.1", "jasmine": "^3.5.0", diff --git a/examples/nestjs/package.json b/examples/nestjs/package.json index 77398b5fde..1672168599 100644 --- a/examples/nestjs/package.json +++ b/examples/nestjs/package.json @@ -3,7 +3,7 @@ "dependencies": { "@bazel/bazelisk": "^1.5.0", "@bazel/ibazel": "^0.13.1", - "@bazel/jasmine": "^2.0.0-rc.2", + "@bazel/jasmine": "^2.0.0-rc.3", "@nestjs/common": "6.5.2", "@nestjs/core": "6.5.2", "@nestjs/platform-express": "6.5.2", @@ -17,7 +17,7 @@ "supertest": "^4.0.2" }, "devDependencies": { - "@bazel/typescript": "^2.0.0-rc.2", + "@bazel/typescript": "^2.0.0-rc.3", "@types/node": "12.6.3", "typescript": "3.5.3" }, diff --git a/examples/nestjs/yarn.lock b/examples/nestjs/yarn.lock index b0aefe6072..3f1738b71b 100644 --- a/examples/nestjs/yarn.lock +++ b/examples/nestjs/yarn.lock @@ -12,18 +12,18 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/jasmine@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.2.tgz#6946c7d6825fc89e92f03b0f5cc253d9ddb39021" - integrity sha512-xIi6O04XxiWxdcBosQ4SiuUSVLB+ZqVjxz1MYCsh+LEdXu5mBk1WY2HhaQ8T6Lvj3zzfg1TL3n+e0/rO/oAHFQ== +"@bazel/jasmine@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.3.tgz#b40e5ee3b10c2d8f610dd77ee5d6e91cd3fb43e6" + integrity sha512-8N4dZgN7FaHjeGxMy+B1mcUbXlVEwLRkcedDIZARR6oSRriw5k+hsbKYSm8+sH7Wc9RsyxJNWMglzAGwoMEH1Q== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" -"@bazel/typescript@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" - integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== +"@bazel/typescript@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" + integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/protocol_buffers/package.json b/examples/protocol_buffers/package.json index c5bb3dc524..76f15e77a4 100644 --- a/examples/protocol_buffers/package.json +++ b/examples/protocol_buffers/package.json @@ -1,11 +1,11 @@ { "devDependencies": { - "@bazel/karma": "^2.0.0-rc.2", - "@bazel/labs": "^2.0.0-rc.2", - "@bazel/protractor": "^2.0.0-rc.2", - "@bazel/rollup": "^2.0.0-rc.2", - "@bazel/terser": "^2.0.0-rc.2", - "@bazel/typescript": "^2.0.0-rc.2", + "@bazel/karma": "^2.0.0-rc.3", + "@bazel/labs": "^2.0.0-rc.3", + "@bazel/protractor": "^2.0.0-rc.3", + "@bazel/rollup": "^2.0.0-rc.3", + "@bazel/terser": "^2.0.0-rc.3", + "@bazel/typescript": "^2.0.0-rc.3", "@types/jasmine": "2.8.2", "@types/long": "^4.0.0", "@types/node": "11.11.1", diff --git a/examples/protocol_buffers/yarn.lock b/examples/protocol_buffers/yarn.lock index 7c4ed2948e..261ca90ad5 100644 --- a/examples/protocol_buffers/yarn.lock +++ b/examples/protocol_buffers/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@bazel/karma@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.2.tgz#e41e70ae4984b37ebf02e9319f8d65a325bfa7bc" - integrity sha512-S09z/lz1qE2n1aMuHRWa6rgt3SH8K00msl6EHe9RX6t4C5SOZnZa01gwDL24qbTIR++u2hw27CAd1un0dpQgyA== +"@bazel/karma@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.3.tgz#0488a077832b3a9c09fda70b7b1b80755144ad64" + integrity sha512-IoNXMVpDYnNejEIercM5l2RHKCUuQd5SW6MGXwGCJkQ3PyhvV1+YPs8lrzQfBhUw+Xs7T4q7UgPP68MAsOex3Q== dependencies: tmp "0.1.0" -"@bazel/labs@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/labs/-/labs-2.0.0-rc.2.tgz#c4012eb5df731f03686ab6490ffcacc63915550d" - integrity sha512-BJ0OaGsiFIu0HJvpIVLW/z/PqBQwVPzZEKDw6ngqwLU18Vr8a/Bz7Di8KJ7UVroralCmaFeD9X2qPgcXw/6jFg== - -"@bazel/protractor@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.2.tgz#237c1c98fd5d918a703f0f32fd3580ee7314c351" - integrity sha512-JR68nnLSOui70GLUijWdUirgwQmfGdfiSWWuF7fxkhiPMMk22pju1/vph62AOY8O4mXpHXrsIBSvlcKznrB3Sw== - -"@bazel/rollup@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.2.tgz#86600a3bc73ab587210be5eb060ff39a3f3922d8" - integrity sha512-40QkDxNBHEtYtPVDzhkChPM0v/xU9IacfRx70eHUD1iKY3SrIGdFN79uXHRqU4OY8llKwTPVlOMqtLqzdSRLBw== - -"@bazel/terser@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.2.tgz#d0794577681f6ccc00036ca417247963d2396117" - integrity sha512-LN5H46UPaOAbzfHqFQgkDnGSdiTYBc37+XafjelUS54jtKAsMX2Fb7Qu4JcO6W2HdK3uWcOIdUCrRyT2yCAAUA== - -"@bazel/typescript@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" - integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== +"@bazel/labs@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/labs/-/labs-2.0.0-rc.3.tgz#bb9f9a164e8add3d0be4c313d3ea48a837235253" + integrity sha512-Nhj9eepkWuckTKhBd+aDclV/G543V38W9FoBt8nqTHJq1PGlvsFUgJbUxbFyjSLWIUsPA73DHZCcWYqVIw6lUA== + +"@bazel/protractor@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.3.tgz#fa48a1ca604ad0c647c0aed6e2dde56a4eaf5251" + integrity sha512-8Wf8ZdkA02zyx9q3h3+i7VxXpm4SDEXGB4vMefZZZP742t1foZNxbsCFABWeepG68IRnHgJkxoncckRr2w+LKQ== + +"@bazel/rollup@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.3.tgz#6b27da7d9640a7267f65340b217ba4c76201edd1" + integrity sha512-Ome9L/UaQZueHansa1ueJdIDa3Wcy5Dp2NvWWSayZDUegCem7NN72iTD0VFJyh9cPUNamk1c7BF0Vhyxhj0rPw== + +"@bazel/terser@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.3.tgz#bbe342411bda953a729cb0daba0835bb9c4c826a" + integrity sha512-pLyki1SSYrfhFK50gD50jYRUYHkzqHGMgY3pkP5zDI8TAa06rLmpfPJU6ote06oJ25QIW7vmiZ/vAX0KZmkmAA== + +"@bazel/typescript@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" + integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/react_webpack/package.json b/examples/react_webpack/package.json index 0d643f8c3f..46c6067cbb 100644 --- a/examples/react_webpack/package.json +++ b/examples/react_webpack/package.json @@ -4,7 +4,7 @@ "@bazel/bazelisk": "^1.5.0", "@bazel/buildifier": "^3.3.0", "@bazel/ibazel": "^0.13.1", - "@bazel/typescript": "^2.0.0-rc.2", + "@bazel/typescript": "^2.0.0-rc.3", "@types/react": "^16.9.5", "@types/react-dom": "^16.9.1", "css-loader": "^3.2.0", diff --git a/examples/react_webpack/yarn.lock b/examples/react_webpack/yarn.lock index 966ff061a5..bda22b9c24 100644 --- a/examples/react_webpack/yarn.lock +++ b/examples/react_webpack/yarn.lock @@ -17,10 +17,10 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/typescript@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" - integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== +"@bazel/typescript@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" + integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/vendored_node/package-lock.json b/examples/vendored_node/package-lock.json index c14927a6b5..53027af5d3 100644 --- a/examples/vendored_node/package-lock.json +++ b/examples/vendored_node/package-lock.json @@ -2,20 +2,10 @@ "requires": true, "lockfileVersion": 1, "dependencies": { - "@babel/runtime-corejs3": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz", - "integrity": "sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw==", - "dev": true, - "requires": { - "core-js-pure": "^3.0.0", - "regenerator-runtime": "^0.13.4" - } - }, "@bazel/jasmine": { - "version": "2.0.0-rc.2", - "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0-rc.2.tgz", - "integrity": "sha512-xIi6O04XxiWxdcBosQ4SiuUSVLB+ZqVjxz1MYCsh+LEdXu5mBk1WY2HhaQ8T6Lvj3zzfg1TL3n+e0/rO/oAHFQ==", + "version": "2.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0-rc.3.tgz", + "integrity": "sha512-8N4dZgN7FaHjeGxMy+B1mcUbXlVEwLRkcedDIZARR6oSRriw5k+hsbKYSm8+sH7Wc9RsyxJNWMglzAGwoMEH1Q==", "dev": true, "requires": { "c8": "~7.1.0", @@ -152,12 +142,6 @@ "safe-buffer": "~5.1.1" } }, - "core-js-pure": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", - "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", - "dev": true - }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -170,13 +154,10 @@ } }, "decamelize": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-3.2.0.tgz", - "integrity": "sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw==", - "dev": true, - "requires": { - "xregexp": "^4.2.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "emoji-regex": { "version": "8.0.0", @@ -432,12 +413,6 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", - "dev": true - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -593,15 +568,6 @@ "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", "dev": true }, - "xregexp": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", - "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", - "dev": true, - "requires": { - "@babel/runtime-corejs3": "^7.8.3" - } - }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", @@ -609,13 +575,13 @@ "dev": true }, "yargs": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.0.tgz", - "integrity": "sha512-D3fRFnZwLWp8jVAAhPZBsmeIHY8tTsb8ItV9KaAaopmC6wde2u6Yw29JBIZHXw14kgkRnYmDgmQU4FVMDlIsWw==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "requires": { "cliui": "^6.0.0", - "decamelize": "^3.2.0", + "decamelize": "^1.2.0", "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", @@ -635,14 +601,6 @@ "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" - }, - "dependencies": { - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - } } } } diff --git a/examples/vendored_node/package.json b/examples/vendored_node/package.json index 201cc13587..8eab253a68 100644 --- a/examples/vendored_node/package.json +++ b/examples/vendored_node/package.json @@ -1,7 +1,7 @@ { "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.0-rc.2", + "@bazel/jasmine": "^2.0.0-rc.3", "jasmine": "^3.5.0" }, "scripts": { diff --git a/examples/vendored_node_and_yarn/package.json b/examples/vendored_node_and_yarn/package.json index 201cc13587..8eab253a68 100644 --- a/examples/vendored_node_and_yarn/package.json +++ b/examples/vendored_node_and_yarn/package.json @@ -1,7 +1,7 @@ { "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.0-rc.2", + "@bazel/jasmine": "^2.0.0-rc.3", "jasmine": "^3.5.0" }, "scripts": { diff --git a/examples/vendored_node_and_yarn/yarn.lock b/examples/vendored_node_and_yarn/yarn.lock index 61def5a97f..d86a7f9c46 100644 --- a/examples/vendored_node_and_yarn/yarn.lock +++ b/examples/vendored_node_and_yarn/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.2.tgz#6946c7d6825fc89e92f03b0f5cc253d9ddb39021" - integrity sha512-xIi6O04XxiWxdcBosQ4SiuUSVLB+ZqVjxz1MYCsh+LEdXu5mBk1WY2HhaQ8T6Lvj3zzfg1TL3n+e0/rO/oAHFQ== +"@bazel/jasmine@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.3.tgz#b40e5ee3b10c2d8f610dd77ee5d6e91cd3fb43e6" + integrity sha512-8N4dZgN7FaHjeGxMy+B1mcUbXlVEwLRkcedDIZARR6oSRriw5k+hsbKYSm8+sH7Wc9RsyxJNWMglzAGwoMEH1Q== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/examples/web_testing/package.json b/examples/web_testing/package.json index 21ef48b1a0..019d86d7d7 100644 --- a/examples/web_testing/package.json +++ b/examples/web_testing/package.json @@ -1,7 +1,7 @@ { "devDependencies": { - "@bazel/karma": "^2.0.0-rc.2", - "@bazel/typescript": "^2.0.0-rc.2", + "@bazel/karma": "^2.0.0-rc.3", + "@bazel/typescript": "^2.0.0-rc.3", "@types/jasmine": "2.8.2", "@types/node": "11.11.1", "karma": "~4.1.0", diff --git a/examples/web_testing/yarn.lock b/examples/web_testing/yarn.lock index a5a3233b7c..d6216966ab 100644 --- a/examples/web_testing/yarn.lock +++ b/examples/web_testing/yarn.lock @@ -2,17 +2,17 @@ # yarn lockfile v1 -"@bazel/karma@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.2.tgz#e41e70ae4984b37ebf02e9319f8d65a325bfa7bc" - integrity sha512-S09z/lz1qE2n1aMuHRWa6rgt3SH8K00msl6EHe9RX6t4C5SOZnZa01gwDL24qbTIR++u2hw27CAd1un0dpQgyA== +"@bazel/karma@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.3.tgz#0488a077832b3a9c09fda70b7b1b80755144ad64" + integrity sha512-IoNXMVpDYnNejEIercM5l2RHKCUuQd5SW6MGXwGCJkQ3PyhvV1+YPs8lrzQfBhUw+Xs7T4q7UgPP68MAsOex3Q== dependencies: tmp "0.1.0" -"@bazel/typescript@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" - integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== +"@bazel/typescript@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" + integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/webapp/package.json b/examples/webapp/package.json index fae50df74c..7b79faafa2 100644 --- a/examples/webapp/package.json +++ b/examples/webapp/package.json @@ -4,10 +4,10 @@ "@babel/cli": "^7.6.0", "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", - "@bazel/protractor": "^2.0.0-rc.2", - "@bazel/rollup": "^2.0.0-rc.2", - "@bazel/terser": "^2.0.0-rc.2", - "@bazel/typescript": "^2.0.0-rc.2", + "@bazel/protractor": "^2.0.0-rc.3", + "@bazel/rollup": "^2.0.0-rc.3", + "@bazel/terser": "^2.0.0-rc.3", + "@bazel/typescript": "^2.0.0-rc.3", "http-server": "^0.11.1", "mocha": "^6.2.1", "protractor": "^5.4.2", diff --git a/examples/webapp/yarn.lock b/examples/webapp/yarn.lock index 58cf447254..7fa5cce579 100644 --- a/examples/webapp/yarn.lock +++ b/examples/webapp/yarn.lock @@ -655,25 +655,25 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/protractor@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.2.tgz#237c1c98fd5d918a703f0f32fd3580ee7314c351" - integrity sha512-JR68nnLSOui70GLUijWdUirgwQmfGdfiSWWuF7fxkhiPMMk22pju1/vph62AOY8O4mXpHXrsIBSvlcKznrB3Sw== - -"@bazel/rollup@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.2.tgz#86600a3bc73ab587210be5eb060ff39a3f3922d8" - integrity sha512-40QkDxNBHEtYtPVDzhkChPM0v/xU9IacfRx70eHUD1iKY3SrIGdFN79uXHRqU4OY8llKwTPVlOMqtLqzdSRLBw== - -"@bazel/terser@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.2.tgz#d0794577681f6ccc00036ca417247963d2396117" - integrity sha512-LN5H46UPaOAbzfHqFQgkDnGSdiTYBc37+XafjelUS54jtKAsMX2Fb7Qu4JcO6W2HdK3uWcOIdUCrRyT2yCAAUA== - -"@bazel/typescript@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.2.tgz#36f3153c0cb42e09a174471e93deedc059e91b7c" - integrity sha512-NFsPToZcyj+h4YOMqC3KyOjJpGrHVK6Evmx3AaoWjv4u+3kRnZBZewlM5A4pq1WUNdVXQnMrroXCyddvW0plbA== +"@bazel/protractor@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.3.tgz#fa48a1ca604ad0c647c0aed6e2dde56a4eaf5251" + integrity sha512-8Wf8ZdkA02zyx9q3h3+i7VxXpm4SDEXGB4vMefZZZP742t1foZNxbsCFABWeepG68IRnHgJkxoncckRr2w+LKQ== + +"@bazel/rollup@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.3.tgz#6b27da7d9640a7267f65340b217ba4c76201edd1" + integrity sha512-Ome9L/UaQZueHansa1ueJdIDa3Wcy5Dp2NvWWSayZDUegCem7NN72iTD0VFJyh9cPUNamk1c7BF0Vhyxhj0rPw== + +"@bazel/terser@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.3.tgz#bbe342411bda953a729cb0daba0835bb9c4c826a" + integrity sha512-pLyki1SSYrfhFK50gD50jYRUYHkzqHGMgY3pkP5zDI8TAa06rLmpfPJU6ote06oJ25QIW7vmiZ/vAX0KZmkmAA== + +"@bazel/typescript@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" + integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/worker/package.json b/examples/worker/package.json index ecf57ca891..3297581422 100644 --- a/examples/worker/package.json +++ b/examples/worker/package.json @@ -1,6 +1,6 @@ { "private": true, "devDependencies": { - "@bazel/worker": "^2.0.0-rc.2" + "@bazel/worker": "^2.0.0-rc.3" } } diff --git a/examples/worker/yarn.lock b/examples/worker/yarn.lock index 094df42899..5155b3363b 100644 --- a/examples/worker/yarn.lock +++ b/examples/worker/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/worker@^2.0.0-rc.2": - version "2.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-2.0.0-rc.2.tgz#6690fbee4b1d0d5ef20a62399ba27a801d354951" - integrity sha512-65P2C8P12bYpt9jtmxuzdRCiP7e5Vt0KxCXRy7fMiz/0Lxduf7Z7a3bEa5dTQ5w05IJqzHbmKMGgqXnO26NzhA== +"@bazel/worker@^2.0.0-rc.3": + version "2.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-2.0.0-rc.3.tgz#6ab5920b1b8b0af69a920d150a06195385c71b39" + integrity sha512-jLKH0Vz2MfDPe7Ogt8squTgL4h8ha5+z8LJrSMX9NbeVcuOX7+J102j1iuusdZi1OCyYtY8uzD87VTxCye1YAA== dependencies: protobufjs "6.8.8" From 8a8e5120a249448c7c43387d8c73fbfda357c6cb Mon Sep 17 00:00:00 2001 From: Carl Leduc-Benoit Date: Fri, 17 Jul 2020 11:20:21 -0400 Subject: [PATCH 0780/1134] Fix launcher_template.sh pointing to npm/bazel instead of npm/@bazel which caused the devserver to not find the some runfiles. --- packages/typescript/internal/devserver/launcher_template.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/typescript/internal/devserver/launcher_template.sh b/packages/typescript/internal/devserver/launcher_template.sh index 53ffca4754..e88e32cbd2 100644 --- a/packages/typescript/internal/devserver/launcher_template.sh +++ b/packages/typescript/internal/devserver/launcher_template.sh @@ -43,9 +43,9 @@ esac case "${machine}" in # The following paths must match up with //packages/typescript/devserver binaries # FIXME: we shouldn't hardcode "npm" repository name here - darwin) readonly platform_main_manifest="npm/bazel/typescript/devserver/devserver-darwin_x64" ;; - windows) readonly platform_main_manifest="npm/bazel/typescript/devserver/devserver-windows_x64.exe" ;; - *) readonly platform_main_manifest="npm/bazel/typescript/devserver/devserver-linux_x64" ;; + darwin) readonly platform_main_manifest="npm/@bazel/typescript/devserver/devserver-darwin_x64" ;; + windows) readonly platform_main_manifest="npm/@bazel/typescript/devserver/devserver-windows_x64.exe" ;; + *) readonly platform_main_manifest="npm/@bazel/typescript/devserver/devserver-linux_x64" ;; esac readonly platform_main=$(rlocation "${platform_main_manifest}") From 981e7c1ab431c79dd83bcf5d495fefc4a0e02e45 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 17 Jul 2020 23:08:49 +0100 Subject: [PATCH 0781/1134] feat(typescript): support for declarationdir on ts_project (#2048) * feat(typescript): support for declarationdir on ts_project * refactor: rename ts_library attributes to the snake_case version of their TypeScript names --outDir == out_dir --declarationDir == declaration_dir --rootDir == root_dir Note this is non-breaking since none of these attributes are on the 1.x branch --- packages/typescript/internal/ts_project.bzl | 58 ++++++++++++------- .../ts_project/declarationdir/BUILD.bazel | 36 ++++++++++++ .../ts_project/declarationdir/subdir/a.ts | 1 + .../ts_project/declarationdir/tsconfig.json | 8 +++ .../test/ts_project/declarationdir/verify.js | 8 +++ .../declarationdir_with_value/BUILD.bazel | 37 ++++++++++++ .../declarationdir_with_value/subdir/a.ts | 1 + .../declarationdir_with_value/tsconfig.json | 8 +++ .../declarationdir_with_value/verify.js | 15 +++++ .../test/ts_project/json/BUILD.bazel | 2 +- .../test/ts_project/outdir/BUILD.bazel | 2 +- .../ts_project/rootdir_with_value/BUILD.bazel | 2 +- 12 files changed, 154 insertions(+), 24 deletions(-) create mode 100644 packages/typescript/test/ts_project/declarationdir/BUILD.bazel create mode 100644 packages/typescript/test/ts_project/declarationdir/subdir/a.ts create mode 100644 packages/typescript/test/ts_project/declarationdir/tsconfig.json create mode 100644 packages/typescript/test/ts_project/declarationdir/verify.js create mode 100644 packages/typescript/test/ts_project/declarationdir_with_value/BUILD.bazel create mode 100644 packages/typescript/test/ts_project/declarationdir_with_value/subdir/a.ts create mode 100644 packages/typescript/test/ts_project/declarationdir_with_value/tsconfig.json create mode 100644 packages/typescript/test/ts_project/declarationdir_with_value/verify.js diff --git a/packages/typescript/internal/ts_project.bzl b/packages/typescript/internal/ts_project.bzl index 63de42f51c..4060f15e87 100644 --- a/packages/typescript/internal/ts_project.bzl +++ b/packages/typescript/internal/ts_project.bzl @@ -11,10 +11,11 @@ _DEFAULT_TSC = ( _ATTRS = { "args": attr.string_list(), + "declaration_dir": attr.string(), "deps": attr.label_list(providers = [DeclarationInfo]), "extends": attr.label_list(allow_files = [".json"]), - "outdir": attr.string(), - "rootdir": attr.string(), + "out_dir": attr.string(), + "root_dir": attr.string(), # NB: no restriction on extensions here, because tsc sometimes adds type-check support # for more file kinds (like require('some.json')) and also # if you swap out the `compiler` attribute (like with ngtsc) @@ -56,14 +57,15 @@ def _ts_project_impl(ctx): "--project", ctx.file.tsconfig.path, "--outDir", - _join(ctx.bin_dir.path, ctx.label.package, ctx.attr.outdir), + _join(ctx.bin_dir.path, ctx.label.package, ctx.attr.out_dir), "--rootDir", - _join(ctx.label.package, ctx.attr.rootdir) if ctx.label.package else ".", + _join(ctx.label.package, ctx.attr.root_dir) if ctx.label.package else ".", ]) if len(ctx.outputs.typings_outs) > 0: + declaration_dir = ctx.attr.declaration_dir if ctx.attr.declaration_dir else ctx.attr.out_dir arguments.add_all([ "--declarationDir", - _join(ctx.bin_dir.path, ctx.label.package, ctx.attr.outdir), + _join(ctx.bin_dir.path, ctx.label.package, declaration_dir), ]) # When users report problems, we can ask them to re-build with @@ -98,13 +100,13 @@ def _ts_project_impl(ctx): inputs.extend(ctx.files.extends) # We do not try to predeclare json_outs, because their output locations generally conflict with their path in the source tree. - # (The exception is when outdir is used, then the .json output is a different path than the input.) + # (The exception is when out_dir is used, then the .json output is a different path than the input.) # However tsc will copy .json srcs to the output tree so we want to declare these outputs to include along with .js Default outs # NB: We don't have emit_declaration_only setting here, so use presence of any JS outputs as an equivalent. # tsc will only produce .json if it also produces .js if len(ctx.outputs.js_outs): json_outs = [ - ctx.actions.declare_file(_join(ctx.attr.outdir, src.short_path[len(ctx.label.package) + 1:])) + ctx.actions.declare_file(_join(ctx.attr.out_dir, src.short_path[len(ctx.label.package) + 1:])) for src in ctx.files.srcs if src.basename.endswith(".json") ] @@ -115,7 +117,7 @@ def _ts_project_impl(ctx): if ctx.outputs.buildinfo_out: outputs.append(ctx.outputs.buildinfo_out) runtime_outputs = depset(json_outs + ctx.outputs.js_outs + ctx.outputs.map_outs) - typings_outputs = ctx.outputs.typings_outs + [s for s in ctx.files.srcs if s.path.endswith(".d.ts")] + typings_outputs = ctx.outputs.typings_outs + ctx.outputs.typing_maps_outs + [s for s in ctx.files.srcs if s.path.endswith(".d.ts")] if len(outputs) > 0: run_node( @@ -230,8 +232,9 @@ def ts_project_macro( emit_declaration_only = False, tsc = None, validate = True, - outdir = None, - rootdir = None, + declaration_dir = None, + out_dir = None, + root_dir = None, **kwargs): """Compiles one TypeScript project using `tsc --project` @@ -357,13 +360,21 @@ def ts_project_macro( validate: boolean; whether to check that the tsconfig settings match the attributes. - outdir: a string specifying a subdirectory under the bazel-out folder where outputs are written. + root_dir: a string specifying a subdirectory under the input package which should be consider the + root directory of all the input files. + Equivalent to the TypeScript --rootDir option. + By default it is '.', meaning the source directory where the BUILD file lives. + + out_dir: a string specifying a subdirectory under the bazel-out folder where outputs are written. + Equivalent to the TypeScript --outDir option. Note that Bazel always requires outputs be written under a subdirectory matching the input package, - so if your rule appears in path/to/my/package/BUILD.bazel and outdir = "foo" then the .js files - will appear in bazel-out/[arch]/bin/path/to/my/package/foo/*.js + so if your rule appears in path/to/my/package/BUILD.bazel and out_dir = "foo" then the .js files + will appear in bazel-out/[arch]/bin/path/to/my/package/foo/*.js. + By default the out_dir is '.', meaning the packages folder in bazel-out. - rootdir: a string specifying a subdirectory under the input package which should be consider the - root directory of all the input files. + declaration_dir: a string specifying a subdirectory under the bazel-out folder where generated declaration + outputs are written. Equivalent to the TypeScript --declarationDir option. + By default declarations are written to the out_dir. declaration: if the `declaration` bit is set in the tsconfig. Instructs Bazel to expect a `.d.ts` output for each `.ts` source. @@ -377,6 +388,8 @@ def ts_project_macro( Instructs Bazel to expect a `.tsbuildinfo` output. emit_declaration_only: if the `emitDeclarationOnly` bit is set in the tsconfig. Instructs Bazel *not* to expect `.js` or `.js.map` outputs for `.ts` sources. + + **kwargs: passed through to underlying rule, allows eg. visibility, tags """ if srcs == None: @@ -402,6 +415,8 @@ def ts_project_macro( ) extra_deps.append("_validate_%s_options" % name) + typings_out_dir = declaration_dir if declaration_dir else out_dir + ts_project( name = name, srcs = srcs, @@ -409,12 +424,13 @@ def ts_project_macro( deps = deps + extra_deps, tsconfig = tsconfig, extends = extends, - outdir = outdir, - rootdir = rootdir, - js_outs = _out_paths(srcs, outdir, rootdir, ".js") if not emit_declaration_only else [], - map_outs = _out_paths(srcs, outdir, rootdir, ".js.map") if source_map and not emit_declaration_only else [], - typings_outs = _out_paths(srcs, outdir, rootdir, ".d.ts") if declaration or composite else [], - typing_maps_outs = _out_paths(srcs, outdir, rootdir, ".d.ts.map") if declaration_map else [], + declaration_dir = declaration_dir, + out_dir = out_dir, + root_dir = root_dir, + js_outs = _out_paths(srcs, out_dir, root_dir, ".js") if not emit_declaration_only else [], + map_outs = _out_paths(srcs, out_dir, root_dir, ".js.map") if source_map and not emit_declaration_only else [], + typings_outs = _out_paths(srcs, typings_out_dir, root_dir, ".d.ts") if declaration or composite else [], + typing_maps_outs = _out_paths(srcs, typings_out_dir, root_dir, ".d.ts.map") if declaration_map else [], buildinfo_out = tsconfig[:-5] + ".tsbuildinfo" if composite or incremental else None, tsc = tsc, **kwargs diff --git a/packages/typescript/test/ts_project/declarationdir/BUILD.bazel b/packages/typescript/test/ts_project/declarationdir/BUILD.bazel new file mode 100644 index 0000000000..67bed1bbf9 --- /dev/null +++ b/packages/typescript/test/ts_project/declarationdir/BUILD.bazel @@ -0,0 +1,36 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_test") +load("//packages/typescript:index.bzl", "ts_project") + +# Ensure that subdir/a.ts produces outDir/a.js and outDir/a.d.ts +SRCS = [ + "subdir/a.ts", +] + +ts_project( + name = "tsconfig", + srcs = SRCS, + declaration = True, + declaration_map = True, + out_dir = "out", + root_dir = "subdir", + source_map = True, +) + +filegroup( + name = "types", + srcs = [":tsconfig"], + output_group = "types", +) + +nodejs_test( + name = "test", + data = [ + ":tsconfig", + ":types", + ], + entry_point = "verify.js", + templated_args = [ + "$(locations :types)", + "$(locations :tsconfig)", + ], +) diff --git a/packages/typescript/test/ts_project/declarationdir/subdir/a.ts b/packages/typescript/test/ts_project/declarationdir/subdir/a.ts new file mode 100644 index 0000000000..a668b7e336 --- /dev/null +++ b/packages/typescript/test/ts_project/declarationdir/subdir/a.ts @@ -0,0 +1 @@ +export const a: string = 'hello'; diff --git a/packages/typescript/test/ts_project/declarationdir/tsconfig.json b/packages/typescript/test/ts_project/declarationdir/tsconfig.json new file mode 100644 index 0000000000..098887abfd --- /dev/null +++ b/packages/typescript/test/ts_project/declarationdir/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "sourceMap": true, + "declaration": true, + "declarationMap": true, + "types": [] + } +} diff --git a/packages/typescript/test/ts_project/declarationdir/verify.js b/packages/typescript/test/ts_project/declarationdir/verify.js new file mode 100644 index 0000000000..93dd5c6c4f --- /dev/null +++ b/packages/typescript/test/ts_project/declarationdir/verify.js @@ -0,0 +1,8 @@ +const assert = require('assert'); + +const types_files = process.argv.slice(2, 4); +const code_files = process.argv.slice(4, 6); +assert.ok(types_files.some(f => f.endsWith('declarationdir/out/a.d.ts')), 'Missing a.d.ts'); +assert.ok(types_files.some(f => f.endsWith('declarationdir/out/a.d.ts.map')), 'Missing a.d.ts.map'); +assert.ok(code_files.some(f => f.endsWith('declarationdir/out/a.js')), 'Missing a.js'); +assert.ok(code_files.some(f => f.endsWith('declarationdir/out/a.js.map')), 'Missing a.js.map'); diff --git a/packages/typescript/test/ts_project/declarationdir_with_value/BUILD.bazel b/packages/typescript/test/ts_project/declarationdir_with_value/BUILD.bazel new file mode 100644 index 0000000000..ecb94da512 --- /dev/null +++ b/packages/typescript/test/ts_project/declarationdir_with_value/BUILD.bazel @@ -0,0 +1,37 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_test") +load("//packages/typescript:index.bzl", "ts_project") + +# Ensure that subdir/a.ts produces outDir/a.js and declarationDir/a.d.ts +SRCS = [ + "subdir/a.ts", +] + +ts_project( + name = "tsconfig", + srcs = SRCS, + declaration = True, + declaration_dir = "out/types", + declaration_map = True, + out_dir = "out/code", + root_dir = "subdir", + source_map = True, +) + +filegroup( + name = "types", + srcs = [":tsconfig"], + output_group = "types", +) + +nodejs_test( + name = "test", + data = [ + ":tsconfig", + ":types", + ], + entry_point = "verify.js", + templated_args = [ + "$(locations :types)", + "$(locations :tsconfig)", + ], +) diff --git a/packages/typescript/test/ts_project/declarationdir_with_value/subdir/a.ts b/packages/typescript/test/ts_project/declarationdir_with_value/subdir/a.ts new file mode 100644 index 0000000000..a668b7e336 --- /dev/null +++ b/packages/typescript/test/ts_project/declarationdir_with_value/subdir/a.ts @@ -0,0 +1 @@ +export const a: string = 'hello'; diff --git a/packages/typescript/test/ts_project/declarationdir_with_value/tsconfig.json b/packages/typescript/test/ts_project/declarationdir_with_value/tsconfig.json new file mode 100644 index 0000000000..098887abfd --- /dev/null +++ b/packages/typescript/test/ts_project/declarationdir_with_value/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "sourceMap": true, + "declaration": true, + "declarationMap": true, + "types": [] + } +} diff --git a/packages/typescript/test/ts_project/declarationdir_with_value/verify.js b/packages/typescript/test/ts_project/declarationdir_with_value/verify.js new file mode 100644 index 0000000000..6755a1b301 --- /dev/null +++ b/packages/typescript/test/ts_project/declarationdir_with_value/verify.js @@ -0,0 +1,15 @@ +const assert = require('assert'); + +const types_files = process.argv.slice(2, 4); +const code_files = process.argv.slice(4, 6); +assert.ok( + types_files.some(f => f.endsWith('declarationdir_with_value/out/types/a.d.ts')), + 'Missing a.d.ts'); +assert.ok( + types_files.some(f => f.endsWith('declarationdir_with_value/out/types/a.d.ts.map')), + 'Missing a.d.ts.map'); +assert.ok( + code_files.some(f => f.endsWith('declarationdir_with_value/out/code/a.js')), 'Missing a.js'); +assert.ok( + code_files.some(f => f.endsWith('declarationdir_with_value/out/code/a.js.map')), + 'Missing a.js.map'); diff --git a/packages/typescript/test/ts_project/json/BUILD.bazel b/packages/typescript/test/ts_project/json/BUILD.bazel index badbe241a5..af6f4b4736 100644 --- a/packages/typescript/test/ts_project/json/BUILD.bazel +++ b/packages/typescript/test/ts_project/json/BUILD.bazel @@ -10,7 +10,7 @@ SRCS = [ ts_project( name = "tsconfig", srcs = SRCS, - outdir = "foobar", + out_dir = "foobar", ) ts_project( diff --git a/packages/typescript/test/ts_project/outdir/BUILD.bazel b/packages/typescript/test/ts_project/outdir/BUILD.bazel index 3e23905763..80ec6c4340 100644 --- a/packages/typescript/test/ts_project/outdir/BUILD.bazel +++ b/packages/typescript/test/ts_project/outdir/BUILD.bazel @@ -10,7 +10,7 @@ load("//packages/typescript:index.bzl", "ts_project") format, ], # Write the output files to an extra nested directory - outdir = format, + out_dir = format, tsconfig = "tsconfig.json", ) for format in [ diff --git a/packages/typescript/test/ts_project/rootdir_with_value/BUILD.bazel b/packages/typescript/test/ts_project/rootdir_with_value/BUILD.bazel index 9742ae01a4..7a66fc6293 100644 --- a/packages/typescript/test/ts_project/rootdir_with_value/BUILD.bazel +++ b/packages/typescript/test/ts_project/rootdir_with_value/BUILD.bazel @@ -9,7 +9,7 @@ SRCS = [ ts_project( name = "tsconfig", srcs = SRCS, - rootdir = "subdir", + root_dir = "subdir", ) nodejs_test( From d9ce5e8893a301238a7024899d850258e73c9ebf Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Sun, 19 Jul 2020 20:21:52 -0700 Subject: [PATCH 0782/1134] chore: change our devdeps to use _maybe This allows users to consume the rules from source without colliding with a matching ruleset they already installed. Note that rules_typescript devdeps were already using _maybe --- package.bzl | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/package.bzl b/package.bzl index 19f60e74fc..e02e8c27f5 100644 --- a/package.bzl +++ b/package.bzl @@ -28,7 +28,8 @@ def rules_nodejs_dev_dependencies(): """ # Dependencies for generating documentation - http_archive( + _maybe( + http_archive, name = "io_bazel_rules_sass", sha256 = "c78be58f5e0a29a04686b628cf54faaee0094322ae0ac99da5a8a8afca59a647", strip_prefix = "rules_sass-1.25.0", @@ -39,7 +40,8 @@ def rules_nodejs_dev_dependencies(): ) # Needed for com_google_protobuf - http_archive( + _maybe( + http_archive, name = "zlib", build_file = "@com_google_protobuf//:third_party/zlib.BUILD", sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1", @@ -50,7 +52,8 @@ def rules_nodejs_dev_dependencies(): ], ) - http_archive( + _maybe( + http_archive, name = "io_bazel_stardoc", # Workaround for https://github.com/bazelbuild/stardoc/issues/43 patches = ["@build_bazel_rules_nodejs//:stardoc.patch"], @@ -63,7 +66,8 @@ def rules_nodejs_dev_dependencies(): ) # bazel-skylib master 2019.05.03 to get support for https://github.com/bazelbuild/bazel-skylib/pull/140 - http_archive( + _maybe( + http_archive, name = "bazel_skylib", sha256 = "afbe4d9d033c007940acd24bb9becf1580a0280ae0b2ebbb5a7cb12912d2c115", strip_prefix = "bazel-skylib-ffad33e9bfc60bdfa98292ca655a4e7035792046", @@ -75,7 +79,8 @@ def rules_nodejs_dev_dependencies(): # Needed for Remote Build Execution # See https://releases.bazel.build/bazel-toolchains.html - http_archive( + _maybe( + http_archive, name = "bazel_toolchains", sha256 = "db48eed61552e25d36fe051a65d2a329cc0fb08442627e8f13960c5ab087a44e", strip_prefix = "bazel-toolchains-3.2.0", @@ -85,7 +90,8 @@ def rules_nodejs_dev_dependencies(): ], ) - http_archive( + _maybe( + http_archive, name = "build_bazel_integration_testing", urls = [ "https://github.com/bazelbuild/bazel-integration-testing/archive/165440b2dbda885f8d1ccb8d0f417e6cf8c54f17.zip", @@ -94,7 +100,8 @@ def rules_nodejs_dev_dependencies(): sha256 = "2401b1369ef44cc42f91dc94443ef491208dbd06da1e1e10b702d8c189f098e3", ) - http_archive( + _maybe( + http_archive, name = "rules_codeowners", patches = ["@build_bazel_rules_nodejs//:rules_codeowners_pr27.patch"], strip_prefix = "rules_codeowners-bdc2f987cd0e15ebfa9b76689a4c9a472730a6f0", @@ -104,7 +111,8 @@ def rules_nodejs_dev_dependencies(): ], ) - http_archive( + _maybe( + http_archive, name = "rules_pkg", urls = [ "https://github.com/bazelbuild/rules_pkg/releases/download/0.2.6-1/rules_pkg-0.2.6.tar.gz", From 093cf0fa344821a451b2badeeb1c907f4d8b7747 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 20 Jul 2020 10:38:39 -0700 Subject: [PATCH 0783/1134] chore: remove patch that was merged upstream (#2057) --- package.bzl | 7 +++---- rules_codeowners_pr27.patch | 31 ------------------------------- 2 files changed, 3 insertions(+), 35 deletions(-) delete mode 100644 rules_codeowners_pr27.patch diff --git a/package.bzl b/package.bzl index e02e8c27f5..adfd69707f 100644 --- a/package.bzl +++ b/package.bzl @@ -103,11 +103,10 @@ def rules_nodejs_dev_dependencies(): _maybe( http_archive, name = "rules_codeowners", - patches = ["@build_bazel_rules_nodejs//:rules_codeowners_pr27.patch"], - strip_prefix = "rules_codeowners-bdc2f987cd0e15ebfa9b76689a4c9a472730a6f0", - sha256 = "efd4aba15e25de49e9e68b1517d789c53104b2cf0b05212ce206ed0d44835952", + strip_prefix = "rules_codeowners-27fe3bbe6e5b0df196e360fc9e081835f22a10be", + sha256 = "0aada1d5df72cb13161a78dff965e02575930f3ea9550e778f6fa45f3f4e2537", urls = [ - "https://github.com/zegl/rules_codeowners/archive/bdc2f987cd0e15ebfa9b76689a4c9a472730a6f0.zip", + "https://github.com/zegl/rules_codeowners/archive/27fe3bbe6e5b0df196e360fc9e081835f22a10be.zip", ], ) diff --git a/rules_codeowners_pr27.patch b/rules_codeowners_pr27.patch deleted file mode 100644 index dcbaa9d88f..0000000000 --- a/rules_codeowners_pr27.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff tools/codeowners.bzl tools/codeowners.bzl -index e6387a3..93a8cdd 100644 ---- tools/codeowners.bzl -+++ tools/codeowners.bzl -@@ -98,8 +98,7 @@ skip_empty_rows () { - grep -v -E '^$' - } - --echo "# This file was generated by rules_codeowners / Bazel" >> "$OUTFILE" --echo "# Don't edit it directly" >> "$OUTFILE" -+echo "_GENERATED_COMMENT_" >> "$OUTFILE" - echo "" >> "$OUTFILE" - - while [ "$#" -gt 0 ]; do -@@ -113,7 +112,7 @@ while [ "$#" -gt 0 ]; do - skip_empty_rows | \ - prevent_malicios_input "$must_have_prefix" >> "$OUTFILE" - done -- """, -+ """.replace("_GENERATED_COMMENT_", ctx.attr.generated_comment), - ) - - generate_codeowners = rule( -@@ -122,6 +121,7 @@ generate_codeowners = rule( - Creates a GitHub-compatible CODEOWNERS file based on the `owners`. - """, - attrs = { -+ "generated_comment": attr.string(default = "# This file was generated by rules_codeowners / Bazel\n# Don't edit it directly"), - "owners": attr.label_list(mandatory = True, doc = "A list of codeowners and generate_codeowners. One generate_codeowners can include another generate_codeonwers to effective acheive nested rules."), - }, - outputs = { From 3bd53bb14fb43a490b71fa0f31d8519a9759dfdc Mon Sep 17 00:00:00 2001 From: Matt Mackay Date: Sun, 19 Jul 2020 17:33:52 -0400 Subject: [PATCH 0784/1134] docs: example of using the rules from source --- .bazelrc | 4 +- .circleci/config.yml | 1 + WORKSPACE | 19 --- examples/from_source/BUILD | 55 +++++++ examples/from_source/WORKSPACE | 44 +++++ examples/from_source/index.bzl | 22 +++ examples/from_source/main.ts | 1 + examples/from_source/out.golden | 1 + examples/from_source/package.json | 16 ++ examples/from_source/tsconfig.json | 8 + examples/from_source/yarn.lock | 251 +++++++++++++++++++++++++++++ package.bzl | 14 ++ 12 files changed, 415 insertions(+), 21 deletions(-) create mode 100644 examples/from_source/BUILD create mode 100644 examples/from_source/WORKSPACE create mode 100644 examples/from_source/index.bzl create mode 100644 examples/from_source/main.ts create mode 100644 examples/from_source/out.golden create mode 100644 examples/from_source/package.json create mode 100644 examples/from_source/tsconfig.json create mode 100644 examples/from_source/yarn.lock diff --git a/.bazelrc b/.bazelrc index e6b49732af..d4bd44376c 100644 --- a/.bazelrc +++ b/.bazelrc @@ -5,8 +5,8 @@ import %workspace%/common.bazelrc # This lets us glob() up all the files inside the examples to make them inputs to tests # To update these lines, just run `yarn bazel:update-deleted-packages` # (Note, we cannot use common --deleted_packages because the bazel version command doesn't support it) -build --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/nodejs_image/foolib,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp -query --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/nodejs_image/foolib,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp +build --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/from_source,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/nodejs_image/foolib,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp +query --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/from_source,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/nodejs_image/foolib,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp # Mock versioning command to test the --stamp behavior build --workspace_status_command="echo BUILD_SCM_VERSION 1.2.3" diff --git a/.circleci/config.yml b/.circleci/config.yml index bb4d017da3..080f55e40b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -188,6 +188,7 @@ jobs: - run: cd e2e/symlinked_node_modules_npm && yarn test && bazel clean - run: cd e2e/symlinked_node_modules_yarn && yarn test && bazel clean - run: cd examples/user_managed_deps && yarn install && bazel test ... + - run: cd examples/from_source && bazel test //... workflows: version: 2 diff --git a/WORKSPACE b/WORKSPACE index 80404712f7..ca7f5fb3ad 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -23,7 +23,6 @@ workspace( }, ) -load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") load("//:index.bzl", "BAZEL_VERSION", "SUPPORTED_BAZEL_VERSIONS") # @@ -94,24 +93,6 @@ load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") install_bazel_dependencies(suppress_warning = True) -# -# Install @bazel/typescript dependencies -# - -# We use git_repository since Renovate knows how to update it. -# With http_archive it only sees releases/download/*.tar.gz urls -git_repository( - name = "build_bazel_rules_typescript", - commit = "10a5a86885f95ab788fd841ade47b6a16e0c13d6", - patches = [ - "//:rules_typescript_pr_494.patch", - "//:rules_typescript_pr_496.patch", - "//:rules_typescript_pr_499.patch", - ], - remote = "http://github.com/bazelbuild/rules_typescript.git", - shallow_since = "1582757372 -0800", -) - # We have a source dependency on build_bazel_rules_typescript # so we must repeat its transitive toolchain deps load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dev_dependencies") diff --git a/examples/from_source/BUILD b/examples/from_source/BUILD new file mode 100644 index 0000000000..1c0682070f --- /dev/null +++ b/examples/from_source/BUILD @@ -0,0 +1,55 @@ +load("@bazel_skylib//:bzl_library.bzl", "bzl_library") +load("@build_bazel_rules_nodejs//:index.bzl", "generated_file_test", "nodejs_binary", "npm_package_bin") +load("@io_bazel_stardoc//stardoc:stardoc.bzl", "stardoc") +load("//:index.bzl", "custom_ts_library") + +# thin macro around ts_library that sets some implicit dependencies +# while passing though all other attributes +# is used here to show how to generate stardoc for rules that consume rules_nodejs from source +custom_ts_library( + name = "main", + srcs = ["main.ts"], +) + +nodejs_binary( + name = "bin", + data = [ + ":main", + ], + entry_point = ":main.ts", +) + +bzl_library( + name = "bzl", + srcs = [ + "index.bzl", + ], + deps = [ + "@build_bazel_rules_nodejs//packages/typescript:bzl", + "@build_bazel_rules_typescript//internal:bzl", + ], +) + +# generation of the docs for the custom_ts_library macro used above +stardoc( + name = "docs", + out = "docs.md", + input = "index.bzl", + deps = [ + ":bzl", + ], +) + +# simple set of tests to ensure this process works as expected +npm_package_bin( + name = "capture", + testonly = True, + stdout = "out", + tool = ":bin", +) + +generated_file_test( + name = "output_test", + src = "out.golden", + generated = ":out", +) diff --git a/examples/from_source/WORKSPACE b/examples/from_source/WORKSPACE new file mode 100644 index 0000000000..3b4501d7ac --- /dev/null +++ b/examples/from_source/WORKSPACE @@ -0,0 +1,44 @@ +workspace( + name = "from_source", + managed_directories = {"@npm": ["node_modules"]}, +) + +# In your code, you'd fetch this repository with a `git_repository` call. +# We do this local repository only because this example lives in the same +# repository with the rules_nodejs code and we want to test them together. +local_repository( + name = "build_bazel_rules_nodejs", + path = "../../", +) + +load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dev_dependencies") + +rules_nodejs_dev_dependencies() + +load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dev_dependencies") + +rules_typescript_dev_dependencies() + +load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") + +go_rules_dependencies() + +go_register_toolchains() + +load("@io_bazel_stardoc//:setup.bzl", "stardoc_repositories") + +stardoc_repositories() + +load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") + +node_repositories( + node_version = "12.13.0", + package_json = ["//:package.json"], + yarn_version = "1.19.1", +) + +yarn_install( + name = "npm", + package_json = "//:package.json", + yarn_lock = "//:yarn.lock", +) diff --git a/examples/from_source/index.bzl b/examples/from_source/index.bzl new file mode 100644 index 0000000000..f25a7da0a6 --- /dev/null +++ b/examples/from_source/index.bzl @@ -0,0 +1,22 @@ +"""Example package for generating stardoc from rules_nodejs at source""" + +load("@build_bazel_rules_nodejs//packages/typescript:index.bzl", "ts_library") + +def custom_ts_library(name, deps = [], **kwargs): + """ + Helper wrapper around ts_library adding default attributes and dependencies + + Args: + name: The name that should be given the this rule + deps: A list of dependencies for this rule + kwargs: All other attrs are passed to ts_library + """ + + ts_library( + name = name, + deps = [ + "@npm//tsutils", + "@npm//@types/node", + ] + deps, + **kwargs + ) diff --git a/examples/from_source/main.ts b/examples/from_source/main.ts new file mode 100644 index 0000000000..368f64c40d --- /dev/null +++ b/examples/from_source/main.ts @@ -0,0 +1 @@ +console.log('rules_nodejs from source example'); diff --git a/examples/from_source/out.golden b/examples/from_source/out.golden new file mode 100644 index 0000000000..fb72ae7892 --- /dev/null +++ b/examples/from_source/out.golden @@ -0,0 +1 @@ +rules_nodejs from source example diff --git a/examples/from_source/package.json b/examples/from_source/package.json new file mode 100644 index 0000000000..bfb9bd8a32 --- /dev/null +++ b/examples/from_source/package.json @@ -0,0 +1,16 @@ +{ + "name": "rules_nodejs_from_source_example", + "private": true, + "devDependencies": { + "@types/node": "12.12.50", + "protobufjs": "6.10.1", + "rollup": "2.22.1", + "rollup-plugin-commonjs": "10.1.0", + "rollup-plugin-node-resolve": "5.2.0", + "source-map-support": "0.5.19", + "tsickle": "0.39.1", + "tsutils": "3.17.1", + "typescript": "3.9.7", + "unidiff": "1.0.2" + } +} diff --git a/examples/from_source/tsconfig.json b/examples/from_source/tsconfig.json new file mode 100644 index 0000000000..e2f80e11a9 --- /dev/null +++ b/examples/from_source/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "lib": [ + "ES2017" + ], + "types": [] + } +} diff --git a/examples/from_source/yarn.lock b/examples/from_source/yarn.lock new file mode 100644 index 0000000000..72bb0a9eaa --- /dev/null +++ b/examples/from_source/yarn.lock @@ -0,0 +1,251 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@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" + integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78= + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A= + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E= + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= + +"@types/estree@*": + version "0.0.45" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" + integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== + +"@types/long@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" + integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== + +"@types/node@*": + version "14.0.23" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.23.tgz#676fa0883450ed9da0bb24156213636290892806" + integrity sha512-Z4U8yDAl5TFkmYsZdFPdjeMa57NOvnaf1tljHzhouaPEp7LCj2JKkejpI1ODviIAQuW4CcQmxkQ77rnLsOOoKw== + +"@types/node@12.12.50": + version "12.12.50" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.50.tgz#e9b2e85fafc15f2a8aa8fdd41091b983da5fd6ee" + integrity sha512-5ImO01Fb8YsEOYpV+aeyGYztcYcjGsBvN4D7G5r1ef2cuQOpymjWNQi5V0rKHE6PC2ru3HkoUr/Br2/8GUA84w== + +"@types/node@^13.7.0": + version "13.13.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.14.tgz#20cd7d2a98f0c3b08d379f4ea9e6b315d2019529" + integrity sha512-Az3QsOt1U/K1pbCQ0TXGELTuTkPLOiFIQf3ILzbOyo0FqgV9SxRnxbxM5QlAveERZMHpZY+7u3Jz2tKyl+yg6g== + +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +builtin-modules@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== + +diff@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99" + integrity sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k= + +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +is-reference@^1.1.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +magic-string@^0.25.2: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +protobufjs@6.10.1: + version "6.10.1" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.10.1.tgz#e6a484dd8f04b29629e9053344e3970cccf13cd2" + integrity sha512-pb8kTchL+1Ceg4lFd5XUpK8PdWacbvV5SK2ULH2ebrYtl4GjJmS24m6CKME67jzV53tbJxHlnNOSqQHbTsR9JQ== + 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" "^4.0.1" + "@types/node" "^13.7.0" + long "^4.0.0" + +resolve@^1.11.0, resolve@^1.11.1: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +rollup-plugin-commonjs@10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" + integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q== + dependencies: + estree-walker "^0.6.1" + is-reference "^1.1.2" + magic-string "^0.25.2" + resolve "^1.11.0" + rollup-pluginutils "^2.8.1" + +rollup-plugin-node-resolve@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" + integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== + dependencies: + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" + is-module "^1.0.0" + resolve "^1.11.1" + rollup-pluginutils "^2.8.1" + +rollup-pluginutils@^2.8.1: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@2.22.1: + version "2.22.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.22.1.tgz#8700522aa5feb12c6bd51810df8a276699d136b1" + integrity sha512-K9AUQUCJkVqC+A7uUDacfhmpEeAjc2uOmSpvGI5xaYsm8pXgy4ZWEM8wHPfKj11xvCwFZppkRDo8a0RESJXCnw== + optionalDependencies: + fsevents "~2.1.2" + +source-map-support@0.5.19: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + 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" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sourcemap-codec@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +tsickle@0.39.1: + version "0.39.1" + resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.39.1.tgz#7ccf672cde5b430f5dd0b281ee49e170ef390ff9" + integrity sha512-CCc9cZhZbKoNizVM+K3Uqgit/go8GacjpqTv1cpwG/n2P0gB9GMoWZbxrUULDE9Wz26Lh86CGf6QyIPUVV1lnQ== + +tslib@^1.8.1: + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + +tsutils@3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + dependencies: + tslib "^1.8.1" + +typescript@3.9.7: + version "3.9.7" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" + integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== + +unidiff@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unidiff/-/unidiff-1.0.2.tgz#8706eb36e4aa182a6ca699ecd2f8877f4b906ce0" + integrity sha512-2sbEzki5fBmjgAqoafwxRenfMcumMlmVAoJDwYJa3CI4ZVugkdR6qjTw5sVsl29/4JfBBXhWEAd5ars8nRdqXg== + dependencies: + diff "^2.2.2" diff --git a/package.bzl b/package.bzl index adfd69707f..e156f47367 100644 --- a/package.bzl +++ b/package.bzl @@ -17,6 +17,7 @@ Fulfills similar role as the package.json file. """ +load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") def rules_nodejs_dev_dependencies(): @@ -120,6 +121,19 @@ def rules_nodejs_dev_dependencies(): sha256 = "aeca78988341a2ee1ba097641056d168320ecc51372ef7ff8e64b139516a4937", ) + _maybe( + git_repository, + name = "build_bazel_rules_typescript", + commit = "10a5a86885f95ab788fd841ade47b6a16e0c13d6", + patches = [ + "@build_bazel_rules_nodejs//:rules_typescript_pr_494.patch", + "@build_bazel_rules_nodejs//:rules_typescript_pr_496.patch", + "@build_bazel_rules_nodejs//:rules_typescript_pr_499.patch", + ], + remote = "http://github.com/bazelbuild/rules_typescript.git", + shallow_since = "1582757372 -0800", + ) + def _maybe(repo_rule, name, **kwargs): if name not in native.existing_rules(): repo_rule(name = name, **kwargs) From 93484ba339895654f5f69d59f778fe32121a058a Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Sun, 19 Jul 2020 10:21:12 -0700 Subject: [PATCH 0785/1134] ci: repro #2044 where typings cannot be resolved Error now is: ERROR: /Users/alex.eagle/Projects/rules_nodejs/packages/typescript/test/ts_project/b/BUILD.bazel:6:1: Compiling TypeScript project //packages/typescript/test/ts_project/b:tsconfig [tsc -p packages/typescript/test/ts_project/b/tsconfig.json] failed (Exit 2) tsc.sh failed: error executing command bazel-out/host/bin/external/npm/typescript/bin/tsc.sh --emitBOM --project packages/typescript/test/ts_project/b/tsconfig.json --outDir ... (remaining 7 argument(s) skipped) Use --sandbox_debug to see verbose messages from the sandbox bazel-out/darwin-fastbuild/bin/packages/typescript/test/ts_project/a/a.d.ts(2,41): error TS2307: Cannot find module '@babel/parser'. --- packages/typescript/test/ts_project/a/BUILD.bazel | 6 ++++++ packages/typescript/test/ts_project/a/a.ts | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/packages/typescript/test/ts_project/a/BUILD.bazel b/packages/typescript/test/ts_project/a/BUILD.bazel index 8643ea490c..847c10d6f5 100644 --- a/packages/typescript/test/ts_project/a/BUILD.bazel +++ b/packages/typescript/test/ts_project/a/BUILD.bazel @@ -10,4 +10,10 @@ ts_project( # source_map = True, validate = False, visibility = ["//packages/typescript/test:__subpackages__"], + # Use @babel/parser since the package.json is required to resolve "typings" field + # Repro of #2044 + deps = [ + "@npm//@babel/parser", + "@npm//@babel/types", + ], ) diff --git a/packages/typescript/test/ts_project/a/a.ts b/packages/typescript/test/ts_project/a/a.ts index a668b7e336..67f0808668 100644 --- a/packages/typescript/test/ts_project/a/a.ts +++ b/packages/typescript/test/ts_project/a/a.ts @@ -1 +1,5 @@ export const a: string = 'hello'; + +// Repro #2044 +import {DecoratorsPluginOptions} from '@babel/parser'; +export const o: DecoratorsPluginOptions = {}; From 1c706569c8eed354f453338f375507383764ca8e Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Sun, 19 Jul 2020 10:27:24 -0700 Subject: [PATCH 0786/1134] fix(typescript): include package.json in third-party DeclarationInfo It may be needed in transitive compilations to resolve the "typings" key Fixes #2044 --- internal/npm_install/node_module_library.bzl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/internal/npm_install/node_module_library.bzl b/internal/npm_install/node_module_library.bzl index 7273c5b0ff..ccedaa2f9e 100644 --- a/internal/npm_install/node_module_library.bzl +++ b/internal/npm_install/node_module_library.bzl @@ -26,7 +26,11 @@ def _node_module_library_impl(ctx): declarations = depset([ f for f in ctx.files.srcs - if f.path.endswith(".d.ts") and + if ( + f.path.endswith(".d.ts") or + # package.json may be required to resolve "typings" key + f.path.endswith("/package.json") + ) and # exclude eg. external/npm/node_modules/protobufjs/node_modules/@types/node/index.d.ts # these would be duplicates of the typings provided directly in another dependency. # also exclude all /node_modules/typescript/lib/lib.*.d.ts files as these are determined by From 16cbc6fcf759e68482293ff674164064280a93f4 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Sun, 19 Jul 2020 10:51:52 -0700 Subject: [PATCH 0787/1134] fix(typescript): exclude package.json from tsconfig#files --- internal/providers/declaration_info.bzl | 14 ++++++++------ packages/typescript/internal/build_defs.bzl | 4 +++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/internal/providers/declaration_info.bzl b/internal/providers/declaration_info.bzl index 609fb3e903..07fc7085bd 100644 --- a/internal/providers/declaration_info.bzl +++ b/internal/providers/declaration_info.bzl @@ -12,10 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""This module contains a provider for TypeScript typings files (.d.ts)""" +"""This module contains a provider for TypeScript typings (*.d.ts and package.json#typings)""" DeclarationInfo = provider( - doc = """The DeclarationInfo provider allows JS rules to communicate typing information. TypeScript's .d.ts files are used as the interop format for describing types. + doc = """The DeclarationInfo provider allows JS rules to communicate typing information. +TypeScript's .d.ts files are used as the interop format for describing types. +package.json files are included as well, as TypeScript needs to read the "typings" property. Do not create DeclarationInfo instances directly, instead use the declaration_info factory function. @@ -24,18 +26,18 @@ Note: historically this was a subset of the string-typed "typescript" provider. # TODO(alexeagle): The ts_library#deps attribute should require that this provider is attached. # TODO: if we ever enable --declarationMap we will have .d.ts.map files too fields = { - "declarations": "A depset of .d.ts files produced by this rule", - "transitive_declarations": """A depset of .d.ts files produced by this rule and all its transitive dependencies. + "declarations": "A depset of typings files produced by this rule", + "transitive_declarations": """A depset of typings files produced by this rule and all its transitive dependencies. This prevents needing an aspect in rules that consume the typings, which improves performance.""", "type_blacklisted_declarations": """A depset of .d.ts files that we should not use to infer JSCompiler types (via tsickle)""", }, ) def declaration_info(declarations, deps = []): - """Constructs a DeclarationInfo including all transitive declarations from DeclarationInfo providers in a list of deps. + """Constructs a DeclarationInfo including all transitive files needed to type-check from DeclarationInfo providers in a list of deps. Args: - declarations: list of .d.ts files + declarations: list of typings files deps: list of labels of dependencies where we should collect their DeclarationInfo to pass transitively Returns: diff --git a/packages/typescript/internal/build_defs.bzl b/packages/typescript/internal/build_defs.bzl index fc425c2fa6..a534e87e6f 100644 --- a/packages/typescript/internal/build_defs.bzl +++ b/packages/typescript/internal/build_defs.bzl @@ -244,7 +244,9 @@ def tsc_wrapped_tsconfig( node_modules_root = _compute_node_modules_root(ctx) config = create_tsconfig( ctx, - files, + # Filter out package.json files that are included in DeclarationInfo + # tsconfig files=[] property should only be .ts/.d.ts + [f for f in files if f.path.endswith(".ts")], srcs, devmode_manifest = devmode_manifest, node_modules_root = node_modules_root, From 91ca17b184f2319191aa199fee14db97b3f85f75 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Mon, 20 Jul 2020 13:55:23 -0700 Subject: [PATCH 0788/1134] docs: update docs for release --- docs/Built-ins.md | 12 +++++++----- docs/TypeScript.md | 25 ++++++++++++++++++++----- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/docs/Built-ins.md b/docs/Built-ins.md index 365e33c0a7..2195ed6a56 100755 --- a/docs/Built-ins.md +++ b/docs/Built-ins.md @@ -1492,7 +1492,9 @@ Defaults to `"auto"` ## DeclarationInfo -The DeclarationInfo provider allows JS rules to communicate typing information. TypeScript's .d.ts files are used as the interop format for describing types. +The DeclarationInfo provider allows JS rules to communicate typing information. +TypeScript's .d.ts files are used as the interop format for describing types. +package.json files are included as well, as TypeScript needs to read the "typings" property. Do not create DeclarationInfo instances directly, instead use the declaration_info factory function. @@ -1502,12 +1504,12 @@ Note: historically this was a subset of the string-typed "typescript" provider. #### `declarations` -A depset of .d.ts files produced by this rule +A depset of typings files produced by this rule #### `transitive_declarations` -A depset of .d.ts files produced by this rule and all its transitive dependencies. +A depset of typings files produced by this rule and all its transitive dependencies. This prevents needing an aspect in rules that consume the typings, which improves performance. @@ -1700,7 +1702,7 @@ The workspace name that this npm package is provided from ## declaration_info -Constructs a DeclarationInfo including all transitive declarations from DeclarationInfo providers in a list of deps. +Constructs a DeclarationInfo including all transitive files needed to type-check from DeclarationInfo providers in a list of deps. ### Usage @@ -1713,7 +1715,7 @@ declaration_info(declarations, deps) #### `declarations` -list of .d.ts files +list of typings files diff --git a/docs/TypeScript.md b/docs/TypeScript.md index 307d31099f..a78cc0a8a2 100755 --- a/docs/TypeScript.md +++ b/docs/TypeScript.md @@ -800,7 +800,7 @@ observe these problems which require workarounds: ### Usage ``` -ts_project(name, tsconfig, srcs, args, deps, extends, declaration, source_map, declaration_map, composite, incremental, emit_declaration_only, tsc, validate, outdir, rootdir, kwargs) +ts_project(name, tsconfig, srcs, args, deps, extends, declaration, source_map, declaration_map, composite, incremental, emit_declaration_only, tsc, validate, declaration_dir, out_dir, root_dir, kwargs) ``` @@ -934,21 +934,35 @@ Defaults to `True` -#### `outdir` +#### `declaration_dir` + +a string specifying a subdirectory under the bazel-out folder where generated declaration + outputs are written. Equivalent to the TypeScript --declarationDir option. + By default declarations are written to the out_dir. + +Defaults to `None` + + + +#### `out_dir` a string specifying a subdirectory under the bazel-out folder where outputs are written. + Equivalent to the TypeScript --outDir option. Note that Bazel always requires outputs be written under a subdirectory matching the input package, - so if your rule appears in path/to/my/package/BUILD.bazel and outdir = "foo" then the .js files - will appear in bazel-out/[arch]/bin/path/to/my/package/foo/*.js + so if your rule appears in path/to/my/package/BUILD.bazel and out_dir = "foo" then the .js files + will appear in bazel-out/[arch]/bin/path/to/my/package/foo/*.js. + By default the out_dir is '.', meaning the packages folder in bazel-out. Defaults to `None` -#### `rootdir` +#### `root_dir` a string specifying a subdirectory under the input package which should be consider the root directory of all the input files. + Equivalent to the TypeScript --rootDir option. + By default it is '.', meaning the source directory where the BUILD file lives. Defaults to `None` @@ -956,6 +970,7 @@ Defaults to `None` #### `kwargs` +passed through to underlying rule, allows eg. visibility, tags From e09c2a584aa751c49efddf2ed79a35afade47a88 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Mon, 20 Jul 2020 13:57:16 -0700 Subject: [PATCH 0789/1134] chore(release): 2.0.0 --- CHANGELOG.md | 15 +++++++++++++++ docs/install.md | 2 +- e2e/bazel_managed_deps/WORKSPACE | 4 ++-- e2e/fine_grained_symlinks/WORKSPACE | 4 ++-- e2e/jasmine/WORKSPACE | 4 ++-- e2e/node_loader_no_preserve_symlinks/WORKSPACE | 4 ++-- e2e/node_loader_preserve_symlinks/WORKSPACE | 4 ++-- e2e/nodejs_image/WORKSPACE | 4 ++-- e2e/packages/WORKSPACE | 4 ++-- e2e/ts_devserver/WORKSPACE | 4 ++-- e2e/typescript/WORKSPACE | 4 ++-- e2e/webapp/WORKSPACE | 4 ++-- examples/angular/WORKSPACE | 4 ++-- examples/angular_bazel_architect/WORKSPACE | 4 ++-- examples/angular_view_engine/WORKSPACE | 4 ++-- examples/app/WORKSPACE | 4 ++-- examples/closure/WORKSPACE | 4 ++-- examples/create-react-app/WORKSPACE | 4 ++-- examples/cypress/WORKSPACE | 4 ++-- examples/jest/WORKSPACE | 4 ++-- examples/kotlin/WORKSPACE | 4 ++-- examples/nestjs/WORKSPACE | 4 ++-- examples/parcel/WORKSPACE | 4 ++-- examples/protocol_buffers/WORKSPACE | 4 ++-- examples/react_webpack/WORKSPACE | 4 ++-- examples/vendored_node/WORKSPACE | 4 ++-- examples/vendored_node_and_yarn/WORKSPACE | 4 ++-- examples/vue/WORKSPACE | 4 ++-- examples/web_testing/WORKSPACE | 4 ++-- examples/webapp/WORKSPACE | 4 ++-- examples/worker/WORKSPACE | 4 ++-- package.json | 2 +- packages/create/index.js | 2 +- version.bzl | 2 +- 34 files changed, 77 insertions(+), 62 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 69c89c7080..80f3965abc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,18 @@ +# [2.0.0](https://github.com/bazelbuild/rules_nodejs/compare/2.0.0-rc.3...2.0.0) (2020-07-20) + + +### Bug Fixes + +* **typescript:** exclude package.json from tsconfig#files ([16cbc6f](https://github.com/bazelbuild/rules_nodejs/commit/16cbc6f)) +* **typescript:** include package.json in third-party DeclarationInfo ([1c70656](https://github.com/bazelbuild/rules_nodejs/commit/1c70656)), closes [#2044](https://github.com/bazelbuild/rules_nodejs/issues/2044) + + +### Features + +* **typescript:** support for declarationdir on ts_project ([#2048](https://github.com/bazelbuild/rules_nodejs/issues/2048)) ([981e7c1](https://github.com/bazelbuild/rules_nodejs/commit/981e7c1)) + + + # [2.0.0-rc.3](https://github.com/bazelbuild/rules_nodejs/compare/2.0.0-rc.2...2.0.0-rc.3) (2020-07-17) diff --git a/docs/install.md b/docs/install.md index ca74facf91..2f20745cb0 100644 --- a/docs/install.md +++ b/docs/install.md @@ -31,7 +31,7 @@ containing: load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], ) diff --git a/e2e/bazel_managed_deps/WORKSPACE b/e2e/bazel_managed_deps/WORKSPACE index 87371e77ca..660422426e 100644 --- a/e2e/bazel_managed_deps/WORKSPACE +++ b/e2e/bazel_managed_deps/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/fine_grained_symlinks/WORKSPACE b/e2e/fine_grained_symlinks/WORKSPACE index 3b001905b8..5a544b82d1 100644 --- a/e2e/fine_grained_symlinks/WORKSPACE +++ b/e2e/fine_grained_symlinks/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") diff --git a/e2e/jasmine/WORKSPACE b/e2e/jasmine/WORKSPACE index 9c0914b042..5ff70df0f5 100644 --- a/e2e/jasmine/WORKSPACE +++ b/e2e/jasmine/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/node_loader_no_preserve_symlinks/WORKSPACE b/e2e/node_loader_no_preserve_symlinks/WORKSPACE index 559d20cd56..f9e2fcd6af 100644 --- a/e2e/node_loader_no_preserve_symlinks/WORKSPACE +++ b/e2e/node_loader_no_preserve_symlinks/WORKSPACE @@ -9,8 +9,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") diff --git a/e2e/node_loader_preserve_symlinks/WORKSPACE b/e2e/node_loader_preserve_symlinks/WORKSPACE index b0ba0e6151..b43726f263 100644 --- a/e2e/node_loader_preserve_symlinks/WORKSPACE +++ b/e2e/node_loader_preserve_symlinks/WORKSPACE @@ -9,8 +9,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/nodejs_image/WORKSPACE b/e2e/nodejs_image/WORKSPACE index 463a741049..d4c34df147 100644 --- a/e2e/nodejs_image/WORKSPACE +++ b/e2e/nodejs_image/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/packages/WORKSPACE b/e2e/packages/WORKSPACE index 060d1eb959..8f8628e78f 100644 --- a/e2e/packages/WORKSPACE +++ b/e2e/packages/WORKSPACE @@ -4,8 +4,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "check_rules_nodejs_version", "node_repositories", "npm_install", "yarn_install") diff --git a/e2e/ts_devserver/WORKSPACE b/e2e/ts_devserver/WORKSPACE index 640cc801cb..706c38a842 100644 --- a/e2e/ts_devserver/WORKSPACE +++ b/e2e/ts_devserver/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/typescript/WORKSPACE b/e2e/typescript/WORKSPACE index a06a78cf29..759dbc79ba 100644 --- a/e2e/typescript/WORKSPACE +++ b/e2e/typescript/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/webapp/WORKSPACE b/e2e/webapp/WORKSPACE index 408aa30cda..9e820085b9 100644 --- a/e2e/webapp/WORKSPACE +++ b/e2e/webapp/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/angular/WORKSPACE b/examples/angular/WORKSPACE index dea0b0fb2d..77519ac808 100644 --- a/examples/angular/WORKSPACE +++ b/examples/angular/WORKSPACE @@ -16,8 +16,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch rules_nodejs so we can install our npm dependencies http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) # Fetch sass rules for compiling sass files diff --git a/examples/angular_bazel_architect/WORKSPACE b/examples/angular_bazel_architect/WORKSPACE index 87a8998128..b54b65ed5c 100644 --- a/examples/angular_bazel_architect/WORKSPACE +++ b/examples/angular_bazel_architect/WORKSPACE @@ -12,8 +12,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) # The yarn_install rule runs yarn anytime the package.json or yarn.lock file changes. diff --git a/examples/angular_view_engine/WORKSPACE b/examples/angular_view_engine/WORKSPACE index df98edb55e..f203f5ddca 100644 --- a/examples/angular_view_engine/WORKSPACE +++ b/examples/angular_view_engine/WORKSPACE @@ -16,8 +16,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch rules_nodejs so we can install our npm dependencies http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) # Fetch sass rules for compiling sass files diff --git a/examples/app/WORKSPACE b/examples/app/WORKSPACE index eb8ae13025..06d82ea0c5 100644 --- a/examples/app/WORKSPACE +++ b/examples/app/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/closure/WORKSPACE b/examples/closure/WORKSPACE index 683f7ee59d..6a684334ba 100644 --- a/examples/closure/WORKSPACE +++ b/examples/closure/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/create-react-app/WORKSPACE b/examples/create-react-app/WORKSPACE index 796a9e08de..7b3a2cb870 100644 --- a/examples/create-react-app/WORKSPACE +++ b/examples/create-react-app/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) http_archive( diff --git a/examples/cypress/WORKSPACE b/examples/cypress/WORKSPACE index 4af603804a..3bfc8f2510 100644 --- a/examples/cypress/WORKSPACE +++ b/examples/cypress/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/jest/WORKSPACE b/examples/jest/WORKSPACE index 0d86fcfaab..45c927b687 100644 --- a/examples/jest/WORKSPACE +++ b/examples/jest/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/kotlin/WORKSPACE b/examples/kotlin/WORKSPACE index 05ee287120..2fa391e11c 100644 --- a/examples/kotlin/WORKSPACE +++ b/examples/kotlin/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) # Install external npm dependencies diff --git a/examples/nestjs/WORKSPACE b/examples/nestjs/WORKSPACE index 6bd309256a..fe44944796 100644 --- a/examples/nestjs/WORKSPACE +++ b/examples/nestjs/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/parcel/WORKSPACE b/examples/parcel/WORKSPACE index e9a9405951..9294aba1cb 100644 --- a/examples/parcel/WORKSPACE +++ b/examples/parcel/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "npm_install") diff --git a/examples/protocol_buffers/WORKSPACE b/examples/protocol_buffers/WORKSPACE index 92159fcf01..a72d80e876 100644 --- a/examples/protocol_buffers/WORKSPACE +++ b/examples/protocol_buffers/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) http_archive( diff --git a/examples/react_webpack/WORKSPACE b/examples/react_webpack/WORKSPACE index 902ad84559..ed569177b7 100644 --- a/examples/react_webpack/WORKSPACE +++ b/examples/react_webpack/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/vendored_node/WORKSPACE b/examples/vendored_node/WORKSPACE index 34546cd786..3323dee8d5 100644 --- a/examples/vendored_node/WORKSPACE +++ b/examples/vendored_node/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) http_archive( diff --git a/examples/vendored_node_and_yarn/WORKSPACE b/examples/vendored_node_and_yarn/WORKSPACE index 7f05ea05ed..95ea82830f 100644 --- a/examples/vendored_node_and_yarn/WORKSPACE +++ b/examples/vendored_node_and_yarn/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) http_archive( diff --git a/examples/vue/WORKSPACE b/examples/vue/WORKSPACE index 27188d2b98..6c5fc60348 100644 --- a/examples/vue/WORKSPACE +++ b/examples/vue/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "npm_install") diff --git a/examples/web_testing/WORKSPACE b/examples/web_testing/WORKSPACE index c64a941dcb..07cbf491bd 100644 --- a/examples/web_testing/WORKSPACE +++ b/examples/web_testing/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/webapp/WORKSPACE b/examples/webapp/WORKSPACE index 0f15c949a9..7aaccec873 100644 --- a/examples/webapp/WORKSPACE +++ b/examples/webapp/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/worker/WORKSPACE b/examples/worker/WORKSPACE index edadbf87f0..eb4bf95c25 100644 --- a/examples/worker/WORKSPACE +++ b/examples/worker/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.3/rules_nodejs-2.0.0-rc.3.tar.gz"], + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/package.json b/package.json index bb5d859b51..fbfa6794a4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@bazel/javascript", "description": "Build JavaScript with Bazel", - "version": "2.0.0-rc.3", + "version": "2.0.0", "keywords": [ "javascript", "bazel" diff --git a/packages/create/index.js b/packages/create/index.js index 90ed768295..78a7ef8510 100644 --- a/packages/create/index.js +++ b/packages/create/index.js @@ -157,7 +157,7 @@ workspace( load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "41b5d9796db19a022bc4a4ca7e9e9f72d92195643ccd875dff325c5e980ee470", + sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], ) diff --git a/version.bzl b/version.bzl index a2c9f167c1..b70058852f 100644 --- a/version.bzl +++ b/version.bzl @@ -19,4 +19,4 @@ # It will be automatically synced via the npm "version" script # that is run when running `npm version` during the release # process. See `Releasing` section in README.md. -VERSION = "2.0.0-rc.3" +VERSION = "2.0.0" From 065922b6963f1f9401c8a7638ef11c0709635886 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Tue, 21 Jul 2020 10:17:11 -0700 Subject: [PATCH 0790/1134] fix(typescript): ts_library should accept .tsx inputs These were accidentally filtered out of the generated tsconfig in 16cbc6fcf759e68482293ff674164064280a93f4 --- packages/typescript/internal/build_defs.bzl | 2 +- packages/typescript/test/ts_library_esm_with_jest/BUILD.bazel | 2 +- .../test/ts_library_esm_with_jest/{lib.ts => lib.tsx} | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename packages/typescript/test/ts_library_esm_with_jest/{lib.ts => lib.tsx} (96%) diff --git a/packages/typescript/internal/build_defs.bzl b/packages/typescript/internal/build_defs.bzl index a534e87e6f..b4f202ee27 100644 --- a/packages/typescript/internal/build_defs.bzl +++ b/packages/typescript/internal/build_defs.bzl @@ -246,7 +246,7 @@ def tsc_wrapped_tsconfig( ctx, # Filter out package.json files that are included in DeclarationInfo # tsconfig files=[] property should only be .ts/.d.ts - [f for f in files if f.path.endswith(".ts")], + [f for f in files if f.path.endswith(".ts") or f.path.endswith(".tsx")], srcs, devmode_manifest = devmode_manifest, node_modules_root = node_modules_root, diff --git a/packages/typescript/test/ts_library_esm_with_jest/BUILD.bazel b/packages/typescript/test/ts_library_esm_with_jest/BUILD.bazel index 2b8d30426a..7e790ea3a4 100644 --- a/packages/typescript/test/ts_library_esm_with_jest/BUILD.bazel +++ b/packages/typescript/test/ts_library_esm_with_jest/BUILD.bazel @@ -5,7 +5,7 @@ load(":ts_jest_test.bzl", "ts_jest_test") ts_library( name = "lib", srcs = [ - "lib.ts", + "lib.tsx", ], # NB: hacky hidden configuration setting so that es6_sources does not include tsickle # .externs.js outputs diff --git a/packages/typescript/test/ts_library_esm_with_jest/lib.ts b/packages/typescript/test/ts_library_esm_with_jest/lib.tsx similarity index 96% rename from packages/typescript/test/ts_library_esm_with_jest/lib.ts rename to packages/typescript/test/ts_library_esm_with_jest/lib.tsx index d7318214c4..1ff5973187 100644 --- a/packages/typescript/test/ts_library_esm_with_jest/lib.ts +++ b/packages/typescript/test/ts_library_esm_with_jest/lib.tsx @@ -1,3 +1,3 @@ export function doStuff(a: string): string { return a -} \ No newline at end of file +} From 6eafd9a85b40a6a92d58737a399e144a0d7e764f Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Mon, 20 Jul 2020 14:09:37 -0700 Subject: [PATCH 0791/1134] chore: update lock files for release --- e2e/bazel_managed_deps/package.json | 2 +- e2e/bazel_managed_deps/yarn.lock | 8 +-- e2e/jasmine/package.json | 2 +- e2e/jasmine/yarn.lock | 8 +-- e2e/ts_devserver/package.json | 4 +- e2e/ts_devserver/yarn.lock | 18 +++---- e2e/typescript/package.json | 4 +- e2e/typescript/yarn.lock | 16 +++--- e2e/webapp/package.json | 4 +- e2e/webapp/yarn.lock | 16 +++--- examples/angular/package.json | 12 ++--- examples/angular/yarn.lock | 54 +++++++++---------- examples/angular_view_engine/package.json | 10 ++-- examples/angular_view_engine/yarn.lock | 46 ++++++++-------- examples/app/package.json | 8 +-- examples/app/yarn.lock | 38 ++++++------- examples/cypress/package.json | 4 +- examples/cypress/yarn.lock | 16 +++--- examples/kotlin/package-lock.json | 18 +++---- examples/kotlin/package.json | 6 +-- examples/nestjs/package.json | 4 +- examples/nestjs/yarn.lock | 16 +++--- examples/protocol_buffers/package.json | 12 ++--- examples/protocol_buffers/yarn.lock | 56 ++++++++++---------- examples/react_webpack/package.json | 2 +- examples/react_webpack/yarn.lock | 8 +-- examples/vendored_node/package-lock.json | 6 +-- examples/vendored_node/package.json | 2 +- examples/vendored_node_and_yarn/package.json | 2 +- examples/vendored_node_and_yarn/yarn.lock | 8 +-- examples/web_testing/package.json | 4 +- examples/web_testing/yarn.lock | 16 +++--- examples/webapp/package.json | 8 +-- examples/webapp/yarn.lock | 38 ++++++------- examples/worker/package.json | 2 +- examples/worker/yarn.lock | 8 +-- 36 files changed, 243 insertions(+), 243 deletions(-) diff --git a/e2e/bazel_managed_deps/package.json b/e2e/bazel_managed_deps/package.json index f80a78e49f..055e15580e 100644 --- a/e2e/bazel_managed_deps/package.json +++ b/e2e/bazel_managed_deps/package.json @@ -1,7 +1,7 @@ { "description": "runtime dependencies for bazel_managed_deps example", "devDependencies": { - "@bazel/jasmine": "^2.0.0-rc.3", + "@bazel/jasmine": "^2.0.0", "jasmine": "^3.5.0", "typescript": "^3.0.1" }, diff --git a/e2e/bazel_managed_deps/yarn.lock b/e2e/bazel_managed_deps/yarn.lock index fa2e174327..8e84de99a5 100644 --- a/e2e/bazel_managed_deps/yarn.lock +++ b/e2e/bazel_managed_deps/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.3.tgz#b40e5ee3b10c2d8f610dd77ee5d6e91cd3fb43e6" - integrity sha512-8N4dZgN7FaHjeGxMy+B1mcUbXlVEwLRkcedDIZARR6oSRriw5k+hsbKYSm8+sH7Wc9RsyxJNWMglzAGwoMEH1Q== +"@bazel/jasmine@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0.tgz#e466ba8eb386eb777f8c4e502b8760ee3d173d1d" + integrity sha512-9RLgNAy10PRkLLP0+8YJr1I8vsVE8rZIfz467/SxROZq7zmIx3lErX101t0KHLmukXT+GusrkXIlB/Vwa8DN9Q== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/e2e/jasmine/package.json b/e2e/jasmine/package.json index f7e9d49b15..ccf7c35a3f 100644 --- a/e2e/jasmine/package.json +++ b/e2e/jasmine/package.json @@ -1,7 +1,7 @@ { "name": "e2e-jasmine", "dependencies": { - "@bazel/jasmine": "^2.0.0-rc.3", + "@bazel/jasmine": "^2.0.0", "zone.js": "0.8.29" }, "//": "Include an incompatible jasmine as a devDependency to verify that jasmine_node_test works regardless", diff --git a/e2e/jasmine/yarn.lock b/e2e/jasmine/yarn.lock index 2de727f351..777f950146 100644 --- a/e2e/jasmine/yarn.lock +++ b/e2e/jasmine/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.3.tgz#b40e5ee3b10c2d8f610dd77ee5d6e91cd3fb43e6" - integrity sha512-8N4dZgN7FaHjeGxMy+B1mcUbXlVEwLRkcedDIZARR6oSRriw5k+hsbKYSm8+sH7Wc9RsyxJNWMglzAGwoMEH1Q== +"@bazel/jasmine@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0.tgz#e466ba8eb386eb777f8c4e502b8760ee3d173d1d" + integrity sha512-9RLgNAy10PRkLLP0+8YJr1I8vsVE8rZIfz467/SxROZq7zmIx3lErX101t0KHLmukXT+GusrkXIlB/Vwa8DN9Q== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/e2e/ts_devserver/package.json b/e2e/ts_devserver/package.json index cb37e86500..2f148a89c2 100644 --- a/e2e/ts_devserver/package.json +++ b/e2e/ts_devserver/package.json @@ -1,7 +1,7 @@ { "dependencies": { - "@bazel/protractor": "^2.0.0-rc.3", - "@bazel/typescript": "^2.0.0-rc.3", + "@bazel/protractor": "^2.0.0", + "@bazel/typescript": "^2.0.0", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "date-fns": "1.30.1", diff --git a/e2e/ts_devserver/yarn.lock b/e2e/ts_devserver/yarn.lock index f4b6a4e660..02bf3e1bd2 100644 --- a/e2e/ts_devserver/yarn.lock +++ b/e2e/ts_devserver/yarn.lock @@ -2,15 +2,15 @@ # yarn lockfile v1 -"@bazel/protractor@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.3.tgz#fa48a1ca604ad0c647c0aed6e2dde56a4eaf5251" - integrity sha512-8Wf8ZdkA02zyx9q3h3+i7VxXpm4SDEXGB4vMefZZZP742t1foZNxbsCFABWeepG68IRnHgJkxoncckRr2w+LKQ== - -"@bazel/typescript@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" - integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== +"@bazel/protractor@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0.tgz#1b67a2f61c7124a25ae4322b585f91a26592458b" + integrity sha512-mr+Jkg/Ta5cp1FQevbV9DqXidDmScX3vy82HjAIew1Y1aQMT9SJ5RVopSSQFe/pIx/zodpAiW1D6lynPiwS1Cw== + +"@bazel/typescript@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" + integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/e2e/typescript/package.json b/e2e/typescript/package.json index becf4c3853..6fd6624521 100644 --- a/e2e/typescript/package.json +++ b/e2e/typescript/package.json @@ -1,7 +1,7 @@ { "dependencies": { - "@bazel/jasmine": "^2.0.0-rc.3", - "@bazel/typescript": "^2.0.0-rc.3", + "@bazel/jasmine": "^2.0.0", + "@bazel/typescript": "^2.0.0", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "date-fns": "^1.30.1", diff --git a/e2e/typescript/yarn.lock b/e2e/typescript/yarn.lock index 34670c8d86..86ed87bb87 100644 --- a/e2e/typescript/yarn.lock +++ b/e2e/typescript/yarn.lock @@ -2,18 +2,18 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.3.tgz#b40e5ee3b10c2d8f610dd77ee5d6e91cd3fb43e6" - integrity sha512-8N4dZgN7FaHjeGxMy+B1mcUbXlVEwLRkcedDIZARR6oSRriw5k+hsbKYSm8+sH7Wc9RsyxJNWMglzAGwoMEH1Q== +"@bazel/jasmine@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0.tgz#e466ba8eb386eb777f8c4e502b8760ee3d173d1d" + integrity sha512-9RLgNAy10PRkLLP0+8YJr1I8vsVE8rZIfz467/SxROZq7zmIx3lErX101t0KHLmukXT+GusrkXIlB/Vwa8DN9Q== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" -"@bazel/typescript@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" - integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== +"@bazel/typescript@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" + integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/e2e/webapp/package.json b/e2e/webapp/package.json index 34f8179beb..a76c85aee5 100644 --- a/e2e/webapp/package.json +++ b/e2e/webapp/package.json @@ -2,8 +2,8 @@ "name": "e2e-terser", "private": true, "devDependencies": { - "@bazel/rollup": "^2.0.0-rc.3", - "@bazel/terser": "^2.0.0-rc.3", + "@bazel/rollup": "^2.0.0", + "@bazel/terser": "^2.0.0", "rollup": "1.20.3", "terser": "4.3.1" }, diff --git a/e2e/webapp/yarn.lock b/e2e/webapp/yarn.lock index 643a8337a8..5ac2ac003c 100644 --- a/e2e/webapp/yarn.lock +++ b/e2e/webapp/yarn.lock @@ -2,15 +2,15 @@ # yarn lockfile v1 -"@bazel/rollup@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.3.tgz#6b27da7d9640a7267f65340b217ba4c76201edd1" - integrity sha512-Ome9L/UaQZueHansa1ueJdIDa3Wcy5Dp2NvWWSayZDUegCem7NN72iTD0VFJyh9cPUNamk1c7BF0Vhyxhj0rPw== +"@bazel/rollup@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0.tgz#1980cb3f6922227659260bfdca99c457889a5bc1" + integrity sha512-mifUfCZbD1RIhfowh4N8E4881ag3FChz7F4z35wxMOP52g1q3+6Bvh5wv9iysFQopxGmS5jNEj3Dq/CWtSoOnw== -"@bazel/terser@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.3.tgz#bbe342411bda953a729cb0daba0835bb9c4c826a" - integrity sha512-pLyki1SSYrfhFK50gD50jYRUYHkzqHGMgY3pkP5zDI8TAa06rLmpfPJU6ote06oJ25QIW7vmiZ/vAX0KZmkmAA== +"@bazel/terser@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0.tgz#a841db8aefd7c51c216b34a26bc02a6c93d5e56a" + integrity sha512-6mBYcfzP6pWxycYZ8r4Lz5kgiWZ7n08bVHZBIRExFeqs7Yy92dD92LPeA9FZIzFiX00IuR9Q1Lqy23xH5q7FeQ== "@types/estree@0.0.39": version "0.0.39" diff --git a/examples/angular/package.json b/examples/angular/package.json index 3e8aceb096..1fbda80020 100644 --- a/examples/angular/package.json +++ b/examples/angular/package.json @@ -33,16 +33,16 @@ "@babel/cli": "^7.6.0", "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", - "@bazel/angular": "^2.0.0-rc.3", + "@bazel/angular": "^2.0.0", "@bazel/bazelisk": "^1.5.0", "@bazel/benchmark-runner": "^0.1.0", "@bazel/buildifier": "^3.3.0", "@bazel/ibazel": "^0.13.1", - "@bazel/karma": "^2.0.0-rc.3", - "@bazel/protractor": "^2.0.0-rc.3", - "@bazel/rollup": "^2.0.0-rc.3", - "@bazel/terser": "^2.0.0-rc.3", - "@bazel/typescript": "^2.0.0-rc.3", + "@bazel/karma": "^2.0.0", + "@bazel/protractor": "^2.0.0", + "@bazel/rollup": "^2.0.0", + "@bazel/terser": "^2.0.0", + "@bazel/typescript": "^2.0.0", "@types/jasmine": "3.4.0", "@types/node": "6.14.6", "core-js": "2.6.9", diff --git a/examples/angular/yarn.lock b/examples/angular/yarn.lock index 3f04bfa93e..dd89d130e9 100644 --- a/examples/angular/yarn.lock +++ b/examples/angular/yarn.lock @@ -827,10 +827,10 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/angular@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/angular/-/angular-2.0.0-rc.3.tgz#36373f47ebd889a7ae6fb9e188a5ad681e540a2e" - integrity sha512-NV6TRRODpqdVTSdHODtEI78ZKnzwJmrAC0IhgXqMaM8q+tQdkgnX4d1W6sfwH/bO5Z0vlVlQQkfLa68lxiX5JQ== +"@bazel/angular@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/angular/-/angular-2.0.0.tgz#fe010d546641accb3cde29730ff686ce04c1de6b" + integrity sha512-ZY8sDsfdl77CHuoJ2pMR4C1yuSvP66gc375EU0kSMZQOnStOksZ7g9ZxtGyBPyXH/kWCUE7uEncEZdj/+TZoAA== dependencies: "@angular-devkit/architect" "^0.901.7" "@bazel/bazelisk" "^1.4.0" @@ -871,32 +871,32 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/karma@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.3.tgz#0488a077832b3a9c09fda70b7b1b80755144ad64" - integrity sha512-IoNXMVpDYnNejEIercM5l2RHKCUuQd5SW6MGXwGCJkQ3PyhvV1+YPs8lrzQfBhUw+Xs7T4q7UgPP68MAsOex3Q== +"@bazel/karma@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0.tgz#a386ba334716e6d94c667c9b40423955a727c896" + integrity sha512-VR/qzsH9/G1eJ0xqicoT7ea6FdiQGW0gd6FzPNecJnqm7OQjhKn7htRWvTONTNXoWl4qCIHTtW+RJ9piH1zU3Q== dependencies: tmp "0.1.0" -"@bazel/protractor@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.3.tgz#fa48a1ca604ad0c647c0aed6e2dde56a4eaf5251" - integrity sha512-8Wf8ZdkA02zyx9q3h3+i7VxXpm4SDEXGB4vMefZZZP742t1foZNxbsCFABWeepG68IRnHgJkxoncckRr2w+LKQ== - -"@bazel/rollup@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.3.tgz#6b27da7d9640a7267f65340b217ba4c76201edd1" - integrity sha512-Ome9L/UaQZueHansa1ueJdIDa3Wcy5Dp2NvWWSayZDUegCem7NN72iTD0VFJyh9cPUNamk1c7BF0Vhyxhj0rPw== - -"@bazel/terser@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.3.tgz#bbe342411bda953a729cb0daba0835bb9c4c826a" - integrity sha512-pLyki1SSYrfhFK50gD50jYRUYHkzqHGMgY3pkP5zDI8TAa06rLmpfPJU6ote06oJ25QIW7vmiZ/vAX0KZmkmAA== - -"@bazel/typescript@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" - integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== +"@bazel/protractor@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0.tgz#1b67a2f61c7124a25ae4322b585f91a26592458b" + integrity sha512-mr+Jkg/Ta5cp1FQevbV9DqXidDmScX3vy82HjAIew1Y1aQMT9SJ5RVopSSQFe/pIx/zodpAiW1D6lynPiwS1Cw== + +"@bazel/rollup@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0.tgz#1980cb3f6922227659260bfdca99c457889a5bc1" + integrity sha512-mifUfCZbD1RIhfowh4N8E4881ag3FChz7F4z35wxMOP52g1q3+6Bvh5wv9iysFQopxGmS5jNEj3Dq/CWtSoOnw== + +"@bazel/terser@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0.tgz#a841db8aefd7c51c216b34a26bc02a6c93d5e56a" + integrity sha512-6mBYcfzP6pWxycYZ8r4Lz5kgiWZ7n08bVHZBIRExFeqs7Yy92dD92LPeA9FZIzFiX00IuR9Q1Lqy23xH5q7FeQ== + +"@bazel/typescript@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" + integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/angular_view_engine/package.json b/examples/angular_view_engine/package.json index 1862e12957..68e17ccc6e 100644 --- a/examples/angular_view_engine/package.json +++ b/examples/angular_view_engine/package.json @@ -36,11 +36,11 @@ "@bazel/benchmark-runner": "^0.1.0", "@bazel/buildifier": "^3.3.0", "@bazel/ibazel": "^0.13.1", - "@bazel/karma": "^2.0.0-rc.3", - "@bazel/protractor": "^2.0.0-rc.3", - "@bazel/rollup": "^2.0.0-rc.3", - "@bazel/terser": "^2.0.0-rc.3", - "@bazel/typescript": "^2.0.0-rc.3", + "@bazel/karma": "^2.0.0", + "@bazel/protractor": "^2.0.0", + "@bazel/rollup": "^2.0.0", + "@bazel/terser": "^2.0.0", + "@bazel/typescript": "^2.0.0", "@types/jasmine": "3.4.0", "@types/node": "6.14.6", "core-js": "2.6.9", diff --git a/examples/angular_view_engine/yarn.lock b/examples/angular_view_engine/yarn.lock index 11d3b77ac9..4d75ef8a03 100644 --- a/examples/angular_view_engine/yarn.lock +++ b/examples/angular_view_engine/yarn.lock @@ -833,32 +833,32 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/karma@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.3.tgz#0488a077832b3a9c09fda70b7b1b80755144ad64" - integrity sha512-IoNXMVpDYnNejEIercM5l2RHKCUuQd5SW6MGXwGCJkQ3PyhvV1+YPs8lrzQfBhUw+Xs7T4q7UgPP68MAsOex3Q== +"@bazel/karma@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0.tgz#a386ba334716e6d94c667c9b40423955a727c896" + integrity sha512-VR/qzsH9/G1eJ0xqicoT7ea6FdiQGW0gd6FzPNecJnqm7OQjhKn7htRWvTONTNXoWl4qCIHTtW+RJ9piH1zU3Q== dependencies: tmp "0.1.0" -"@bazel/protractor@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.3.tgz#fa48a1ca604ad0c647c0aed6e2dde56a4eaf5251" - integrity sha512-8Wf8ZdkA02zyx9q3h3+i7VxXpm4SDEXGB4vMefZZZP742t1foZNxbsCFABWeepG68IRnHgJkxoncckRr2w+LKQ== - -"@bazel/rollup@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.3.tgz#6b27da7d9640a7267f65340b217ba4c76201edd1" - integrity sha512-Ome9L/UaQZueHansa1ueJdIDa3Wcy5Dp2NvWWSayZDUegCem7NN72iTD0VFJyh9cPUNamk1c7BF0Vhyxhj0rPw== - -"@bazel/terser@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.3.tgz#bbe342411bda953a729cb0daba0835bb9c4c826a" - integrity sha512-pLyki1SSYrfhFK50gD50jYRUYHkzqHGMgY3pkP5zDI8TAa06rLmpfPJU6ote06oJ25QIW7vmiZ/vAX0KZmkmAA== - -"@bazel/typescript@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" - integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== +"@bazel/protractor@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0.tgz#1b67a2f61c7124a25ae4322b585f91a26592458b" + integrity sha512-mr+Jkg/Ta5cp1FQevbV9DqXidDmScX3vy82HjAIew1Y1aQMT9SJ5RVopSSQFe/pIx/zodpAiW1D6lynPiwS1Cw== + +"@bazel/rollup@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0.tgz#1980cb3f6922227659260bfdca99c457889a5bc1" + integrity sha512-mifUfCZbD1RIhfowh4N8E4881ag3FChz7F4z35wxMOP52g1q3+6Bvh5wv9iysFQopxGmS5jNEj3Dq/CWtSoOnw== + +"@bazel/terser@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0.tgz#a841db8aefd7c51c216b34a26bc02a6c93d5e56a" + integrity sha512-6mBYcfzP6pWxycYZ8r4Lz5kgiWZ7n08bVHZBIRExFeqs7Yy92dD92LPeA9FZIzFiX00IuR9Q1Lqy23xH5q7FeQ== + +"@bazel/typescript@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" + integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/app/package.json b/examples/app/package.json index 907c91dcab..1a0b1743fc 100644 --- a/examples/app/package.json +++ b/examples/app/package.json @@ -1,9 +1,9 @@ { "devDependencies": { - "@bazel/protractor": "^2.0.0-rc.3", - "@bazel/rollup": "^2.0.0-rc.3", - "@bazel/terser": "^2.0.0-rc.3", - "@bazel/typescript": "^2.0.0-rc.3", + "@bazel/protractor": "^2.0.0", + "@bazel/rollup": "^2.0.0", + "@bazel/terser": "^2.0.0", + "@bazel/typescript": "^2.0.0", "@types/jasmine": "3.3.15", "html-insert-assets": "^0.6.0", "http-server": "^0.11.1", diff --git a/examples/app/yarn.lock b/examples/app/yarn.lock index 2c29438aef..4018b07e33 100644 --- a/examples/app/yarn.lock +++ b/examples/app/yarn.lock @@ -2,25 +2,25 @@ # yarn lockfile v1 -"@bazel/protractor@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.3.tgz#fa48a1ca604ad0c647c0aed6e2dde56a4eaf5251" - integrity sha512-8Wf8ZdkA02zyx9q3h3+i7VxXpm4SDEXGB4vMefZZZP742t1foZNxbsCFABWeepG68IRnHgJkxoncckRr2w+LKQ== - -"@bazel/rollup@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.3.tgz#6b27da7d9640a7267f65340b217ba4c76201edd1" - integrity sha512-Ome9L/UaQZueHansa1ueJdIDa3Wcy5Dp2NvWWSayZDUegCem7NN72iTD0VFJyh9cPUNamk1c7BF0Vhyxhj0rPw== - -"@bazel/terser@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.3.tgz#bbe342411bda953a729cb0daba0835bb9c4c826a" - integrity sha512-pLyki1SSYrfhFK50gD50jYRUYHkzqHGMgY3pkP5zDI8TAa06rLmpfPJU6ote06oJ25QIW7vmiZ/vAX0KZmkmAA== - -"@bazel/typescript@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" - integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== +"@bazel/protractor@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0.tgz#1b67a2f61c7124a25ae4322b585f91a26592458b" + integrity sha512-mr+Jkg/Ta5cp1FQevbV9DqXidDmScX3vy82HjAIew1Y1aQMT9SJ5RVopSSQFe/pIx/zodpAiW1D6lynPiwS1Cw== + +"@bazel/rollup@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0.tgz#1980cb3f6922227659260bfdca99c457889a5bc1" + integrity sha512-mifUfCZbD1RIhfowh4N8E4881ag3FChz7F4z35wxMOP52g1q3+6Bvh5wv9iysFQopxGmS5jNEj3Dq/CWtSoOnw== + +"@bazel/terser@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0.tgz#a841db8aefd7c51c216b34a26bc02a6c93d5e56a" + integrity sha512-6mBYcfzP6pWxycYZ8r4Lz5kgiWZ7n08bVHZBIRExFeqs7Yy92dD92LPeA9FZIzFiX00IuR9Q1Lqy23xH5q7FeQ== + +"@bazel/typescript@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" + integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/cypress/package.json b/examples/cypress/package.json index 74bddbddde..c9d5aa26c8 100644 --- a/examples/cypress/package.json +++ b/examples/cypress/package.json @@ -6,9 +6,9 @@ }, "devDependencies": { "@bazel/bazelisk": "^1.5.0", - "@bazel/cypress": "^2.0.0-rc.3", + "@bazel/cypress": "^2.0.0", "@bazel/ibazel": "^0.13.1", - "@bazel/typescript": "^2.0.0-rc.3", + "@bazel/typescript": "^2.0.0", "@cypress/browserify-preprocessor": "^3.0.0", "@types/node": "14.0.13", "cypress": "^4.8.0", diff --git a/examples/cypress/yarn.lock b/examples/cypress/yarn.lock index 9610d02934..4ddd5608bf 100644 --- a/examples/cypress/yarn.lock +++ b/examples/cypress/yarn.lock @@ -749,20 +749,20 @@ resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.5.0.tgz#61f583ed93be138b47be7180403938ea4057f54b" integrity sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg== -"@bazel/cypress@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/cypress/-/cypress-2.0.0-rc.3.tgz#33d717dec8399793b6368dd793ee14926363a4d0" - integrity sha512-3gX80qPosNamovKj/l9tWNojn7UdvgfscH2+fX44VDr+GI2mG82ujIIg9GPqiQFxSBZp/gISBSjqXNlgZ3XFyQ== +"@bazel/cypress@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/cypress/-/cypress-2.0.0.tgz#b93a811d2d692212c6de79993727f8a955011f1e" + integrity sha512-CrJu1WCfaQX1V6T8sGcpxGsP0U0ip8LPwWye70OrXOS/0R1p6Lk68Z22unDiPScBTTiXygDhTKLbRHREvkcdRA== "@bazel/ibazel@^0.13.1": version "0.13.1" resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/typescript@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" - integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== +"@bazel/typescript@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" + integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/kotlin/package-lock.json b/examples/kotlin/package-lock.json index d65b039a09..d1c844792a 100644 --- a/examples/kotlin/package-lock.json +++ b/examples/kotlin/package-lock.json @@ -4,9 +4,9 @@ "lockfileVersion": 1, "dependencies": { "@bazel/jasmine": { - "version": "2.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0-rc.3.tgz", - "integrity": "sha512-8N4dZgN7FaHjeGxMy+B1mcUbXlVEwLRkcedDIZARR6oSRriw5k+hsbKYSm8+sH7Wc9RsyxJNWMglzAGwoMEH1Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0.tgz", + "integrity": "sha512-9RLgNAy10PRkLLP0+8YJr1I8vsVE8rZIfz467/SxROZq7zmIx3lErX101t0KHLmukXT+GusrkXIlB/Vwa8DN9Q==", "dev": true, "requires": { "c8": "~7.1.0", @@ -14,15 +14,15 @@ } }, "@bazel/rollup": { - "version": "2.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@bazel/rollup/-/rollup-2.0.0-rc.3.tgz", - "integrity": "sha512-Ome9L/UaQZueHansa1ueJdIDa3Wcy5Dp2NvWWSayZDUegCem7NN72iTD0VFJyh9cPUNamk1c7BF0Vhyxhj0rPw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@bazel/rollup/-/rollup-2.0.0.tgz", + "integrity": "sha512-mifUfCZbD1RIhfowh4N8E4881ag3FChz7F4z35wxMOP52g1q3+6Bvh5wv9iysFQopxGmS5jNEj3Dq/CWtSoOnw==", "dev": true }, "@bazel/terser": { - "version": "2.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@bazel/terser/-/terser-2.0.0-rc.3.tgz", - "integrity": "sha512-pLyki1SSYrfhFK50gD50jYRUYHkzqHGMgY3pkP5zDI8TAa06rLmpfPJU6ote06oJ25QIW7vmiZ/vAX0KZmkmAA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@bazel/terser/-/terser-2.0.0.tgz", + "integrity": "sha512-6mBYcfzP6pWxycYZ8r4Lz5kgiWZ7n08bVHZBIRExFeqs7Yy92dD92LPeA9FZIzFiX00IuR9Q1Lqy23xH5q7FeQ==", "dev": true }, "@bcoe/v8-coverage": { diff --git a/examples/kotlin/package.json b/examples/kotlin/package.json index 08f6e8bd81..c9c7fac4f2 100644 --- a/examples/kotlin/package.json +++ b/examples/kotlin/package.json @@ -2,9 +2,9 @@ "name": "kotlin_example", "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.0-rc.3", - "@bazel/rollup": "^2.0.0-rc.3", - "@bazel/terser": "^2.0.0-rc.3", + "@bazel/jasmine": "^2.0.0", + "@bazel/rollup": "^2.0.0", + "@bazel/terser": "^2.0.0", "domino": "^2.1.3", "http-server": "^0.11.1", "jasmine": "^3.5.0", diff --git a/examples/nestjs/package.json b/examples/nestjs/package.json index 1672168599..d6e327a333 100644 --- a/examples/nestjs/package.json +++ b/examples/nestjs/package.json @@ -3,7 +3,7 @@ "dependencies": { "@bazel/bazelisk": "^1.5.0", "@bazel/ibazel": "^0.13.1", - "@bazel/jasmine": "^2.0.0-rc.3", + "@bazel/jasmine": "^2.0.0", "@nestjs/common": "6.5.2", "@nestjs/core": "6.5.2", "@nestjs/platform-express": "6.5.2", @@ -17,7 +17,7 @@ "supertest": "^4.0.2" }, "devDependencies": { - "@bazel/typescript": "^2.0.0-rc.3", + "@bazel/typescript": "^2.0.0", "@types/node": "12.6.3", "typescript": "3.5.3" }, diff --git a/examples/nestjs/yarn.lock b/examples/nestjs/yarn.lock index 3f1738b71b..f35a1baefa 100644 --- a/examples/nestjs/yarn.lock +++ b/examples/nestjs/yarn.lock @@ -12,18 +12,18 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/jasmine@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.3.tgz#b40e5ee3b10c2d8f610dd77ee5d6e91cd3fb43e6" - integrity sha512-8N4dZgN7FaHjeGxMy+B1mcUbXlVEwLRkcedDIZARR6oSRriw5k+hsbKYSm8+sH7Wc9RsyxJNWMglzAGwoMEH1Q== +"@bazel/jasmine@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0.tgz#e466ba8eb386eb777f8c4e502b8760ee3d173d1d" + integrity sha512-9RLgNAy10PRkLLP0+8YJr1I8vsVE8rZIfz467/SxROZq7zmIx3lErX101t0KHLmukXT+GusrkXIlB/Vwa8DN9Q== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" -"@bazel/typescript@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" - integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== +"@bazel/typescript@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" + integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/protocol_buffers/package.json b/examples/protocol_buffers/package.json index 76f15e77a4..b71604ad12 100644 --- a/examples/protocol_buffers/package.json +++ b/examples/protocol_buffers/package.json @@ -1,11 +1,11 @@ { "devDependencies": { - "@bazel/karma": "^2.0.0-rc.3", - "@bazel/labs": "^2.0.0-rc.3", - "@bazel/protractor": "^2.0.0-rc.3", - "@bazel/rollup": "^2.0.0-rc.3", - "@bazel/terser": "^2.0.0-rc.3", - "@bazel/typescript": "^2.0.0-rc.3", + "@bazel/karma": "^2.0.0", + "@bazel/labs": "^2.0.0", + "@bazel/protractor": "^2.0.0", + "@bazel/rollup": "^2.0.0", + "@bazel/terser": "^2.0.0", + "@bazel/typescript": "^2.0.0", "@types/jasmine": "2.8.2", "@types/long": "^4.0.0", "@types/node": "11.11.1", diff --git a/examples/protocol_buffers/yarn.lock b/examples/protocol_buffers/yarn.lock index 261ca90ad5..fad1885275 100644 --- a/examples/protocol_buffers/yarn.lock +++ b/examples/protocol_buffers/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@bazel/karma@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.3.tgz#0488a077832b3a9c09fda70b7b1b80755144ad64" - integrity sha512-IoNXMVpDYnNejEIercM5l2RHKCUuQd5SW6MGXwGCJkQ3PyhvV1+YPs8lrzQfBhUw+Xs7T4q7UgPP68MAsOex3Q== +"@bazel/karma@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0.tgz#a386ba334716e6d94c667c9b40423955a727c896" + integrity sha512-VR/qzsH9/G1eJ0xqicoT7ea6FdiQGW0gd6FzPNecJnqm7OQjhKn7htRWvTONTNXoWl4qCIHTtW+RJ9piH1zU3Q== dependencies: tmp "0.1.0" -"@bazel/labs@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/labs/-/labs-2.0.0-rc.3.tgz#bb9f9a164e8add3d0be4c313d3ea48a837235253" - integrity sha512-Nhj9eepkWuckTKhBd+aDclV/G543V38W9FoBt8nqTHJq1PGlvsFUgJbUxbFyjSLWIUsPA73DHZCcWYqVIw6lUA== - -"@bazel/protractor@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.3.tgz#fa48a1ca604ad0c647c0aed6e2dde56a4eaf5251" - integrity sha512-8Wf8ZdkA02zyx9q3h3+i7VxXpm4SDEXGB4vMefZZZP742t1foZNxbsCFABWeepG68IRnHgJkxoncckRr2w+LKQ== - -"@bazel/rollup@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.3.tgz#6b27da7d9640a7267f65340b217ba4c76201edd1" - integrity sha512-Ome9L/UaQZueHansa1ueJdIDa3Wcy5Dp2NvWWSayZDUegCem7NN72iTD0VFJyh9cPUNamk1c7BF0Vhyxhj0rPw== - -"@bazel/terser@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.3.tgz#bbe342411bda953a729cb0daba0835bb9c4c826a" - integrity sha512-pLyki1SSYrfhFK50gD50jYRUYHkzqHGMgY3pkP5zDI8TAa06rLmpfPJU6ote06oJ25QIW7vmiZ/vAX0KZmkmAA== - -"@bazel/typescript@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" - integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== +"@bazel/labs@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/labs/-/labs-2.0.0.tgz#e03d0967be6eb21e3b70f64dc14e5cb78b7c2e9f" + integrity sha512-gyP/vRDzuiZIxlXS1yMZ3yfGSG8BqF8XwMQLZi94nXRGY0zEISnrf0Ztf2yVPA8LWyvU5NugS1QRi1AF6xZqqA== + +"@bazel/protractor@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0.tgz#1b67a2f61c7124a25ae4322b585f91a26592458b" + integrity sha512-mr+Jkg/Ta5cp1FQevbV9DqXidDmScX3vy82HjAIew1Y1aQMT9SJ5RVopSSQFe/pIx/zodpAiW1D6lynPiwS1Cw== + +"@bazel/rollup@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0.tgz#1980cb3f6922227659260bfdca99c457889a5bc1" + integrity sha512-mifUfCZbD1RIhfowh4N8E4881ag3FChz7F4z35wxMOP52g1q3+6Bvh5wv9iysFQopxGmS5jNEj3Dq/CWtSoOnw== + +"@bazel/terser@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0.tgz#a841db8aefd7c51c216b34a26bc02a6c93d5e56a" + integrity sha512-6mBYcfzP6pWxycYZ8r4Lz5kgiWZ7n08bVHZBIRExFeqs7Yy92dD92LPeA9FZIzFiX00IuR9Q1Lqy23xH5q7FeQ== + +"@bazel/typescript@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" + integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/react_webpack/package.json b/examples/react_webpack/package.json index 46c6067cbb..430c36bbee 100644 --- a/examples/react_webpack/package.json +++ b/examples/react_webpack/package.json @@ -4,7 +4,7 @@ "@bazel/bazelisk": "^1.5.0", "@bazel/buildifier": "^3.3.0", "@bazel/ibazel": "^0.13.1", - "@bazel/typescript": "^2.0.0-rc.3", + "@bazel/typescript": "^2.0.0", "@types/react": "^16.9.5", "@types/react-dom": "^16.9.1", "css-loader": "^3.2.0", diff --git a/examples/react_webpack/yarn.lock b/examples/react_webpack/yarn.lock index bda22b9c24..4be9d87486 100644 --- a/examples/react_webpack/yarn.lock +++ b/examples/react_webpack/yarn.lock @@ -17,10 +17,10 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/typescript@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" - integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== +"@bazel/typescript@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" + integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/vendored_node/package-lock.json b/examples/vendored_node/package-lock.json index 53027af5d3..8573863141 100644 --- a/examples/vendored_node/package-lock.json +++ b/examples/vendored_node/package-lock.json @@ -3,9 +3,9 @@ "lockfileVersion": 1, "dependencies": { "@bazel/jasmine": { - "version": "2.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0-rc.3.tgz", - "integrity": "sha512-8N4dZgN7FaHjeGxMy+B1mcUbXlVEwLRkcedDIZARR6oSRriw5k+hsbKYSm8+sH7Wc9RsyxJNWMglzAGwoMEH1Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0.tgz", + "integrity": "sha512-9RLgNAy10PRkLLP0+8YJr1I8vsVE8rZIfz467/SxROZq7zmIx3lErX101t0KHLmukXT+GusrkXIlB/Vwa8DN9Q==", "dev": true, "requires": { "c8": "~7.1.0", diff --git a/examples/vendored_node/package.json b/examples/vendored_node/package.json index 8eab253a68..ab1403c486 100644 --- a/examples/vendored_node/package.json +++ b/examples/vendored_node/package.json @@ -1,7 +1,7 @@ { "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.0-rc.3", + "@bazel/jasmine": "^2.0.0", "jasmine": "^3.5.0" }, "scripts": { diff --git a/examples/vendored_node_and_yarn/package.json b/examples/vendored_node_and_yarn/package.json index 8eab253a68..ab1403c486 100644 --- a/examples/vendored_node_and_yarn/package.json +++ b/examples/vendored_node_and_yarn/package.json @@ -1,7 +1,7 @@ { "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.0-rc.3", + "@bazel/jasmine": "^2.0.0", "jasmine": "^3.5.0" }, "scripts": { diff --git a/examples/vendored_node_and_yarn/yarn.lock b/examples/vendored_node_and_yarn/yarn.lock index d86a7f9c46..058f96bf8c 100644 --- a/examples/vendored_node_and_yarn/yarn.lock +++ b/examples/vendored_node_and_yarn/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0-rc.3.tgz#b40e5ee3b10c2d8f610dd77ee5d6e91cd3fb43e6" - integrity sha512-8N4dZgN7FaHjeGxMy+B1mcUbXlVEwLRkcedDIZARR6oSRriw5k+hsbKYSm8+sH7Wc9RsyxJNWMglzAGwoMEH1Q== +"@bazel/jasmine@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0.tgz#e466ba8eb386eb777f8c4e502b8760ee3d173d1d" + integrity sha512-9RLgNAy10PRkLLP0+8YJr1I8vsVE8rZIfz467/SxROZq7zmIx3lErX101t0KHLmukXT+GusrkXIlB/Vwa8DN9Q== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/examples/web_testing/package.json b/examples/web_testing/package.json index 019d86d7d7..605c6b276d 100644 --- a/examples/web_testing/package.json +++ b/examples/web_testing/package.json @@ -1,7 +1,7 @@ { "devDependencies": { - "@bazel/karma": "^2.0.0-rc.3", - "@bazel/typescript": "^2.0.0-rc.3", + "@bazel/karma": "^2.0.0", + "@bazel/typescript": "^2.0.0", "@types/jasmine": "2.8.2", "@types/node": "11.11.1", "karma": "~4.1.0", diff --git a/examples/web_testing/yarn.lock b/examples/web_testing/yarn.lock index d6216966ab..e132b5103c 100644 --- a/examples/web_testing/yarn.lock +++ b/examples/web_testing/yarn.lock @@ -2,17 +2,17 @@ # yarn lockfile v1 -"@bazel/karma@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0-rc.3.tgz#0488a077832b3a9c09fda70b7b1b80755144ad64" - integrity sha512-IoNXMVpDYnNejEIercM5l2RHKCUuQd5SW6MGXwGCJkQ3PyhvV1+YPs8lrzQfBhUw+Xs7T4q7UgPP68MAsOex3Q== +"@bazel/karma@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0.tgz#a386ba334716e6d94c667c9b40423955a727c896" + integrity sha512-VR/qzsH9/G1eJ0xqicoT7ea6FdiQGW0gd6FzPNecJnqm7OQjhKn7htRWvTONTNXoWl4qCIHTtW+RJ9piH1zU3Q== dependencies: tmp "0.1.0" -"@bazel/typescript@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" - integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== +"@bazel/typescript@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" + integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/webapp/package.json b/examples/webapp/package.json index 7b79faafa2..46dd8143b9 100644 --- a/examples/webapp/package.json +++ b/examples/webapp/package.json @@ -4,10 +4,10 @@ "@babel/cli": "^7.6.0", "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", - "@bazel/protractor": "^2.0.0-rc.3", - "@bazel/rollup": "^2.0.0-rc.3", - "@bazel/terser": "^2.0.0-rc.3", - "@bazel/typescript": "^2.0.0-rc.3", + "@bazel/protractor": "^2.0.0", + "@bazel/rollup": "^2.0.0", + "@bazel/terser": "^2.0.0", + "@bazel/typescript": "^2.0.0", "http-server": "^0.11.1", "mocha": "^6.2.1", "protractor": "^5.4.2", diff --git a/examples/webapp/yarn.lock b/examples/webapp/yarn.lock index 7fa5cce579..f4a164e0f8 100644 --- a/examples/webapp/yarn.lock +++ b/examples/webapp/yarn.lock @@ -655,25 +655,25 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/protractor@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0-rc.3.tgz#fa48a1ca604ad0c647c0aed6e2dde56a4eaf5251" - integrity sha512-8Wf8ZdkA02zyx9q3h3+i7VxXpm4SDEXGB4vMefZZZP742t1foZNxbsCFABWeepG68IRnHgJkxoncckRr2w+LKQ== - -"@bazel/rollup@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0-rc.3.tgz#6b27da7d9640a7267f65340b217ba4c76201edd1" - integrity sha512-Ome9L/UaQZueHansa1ueJdIDa3Wcy5Dp2NvWWSayZDUegCem7NN72iTD0VFJyh9cPUNamk1c7BF0Vhyxhj0rPw== - -"@bazel/terser@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0-rc.3.tgz#bbe342411bda953a729cb0daba0835bb9c4c826a" - integrity sha512-pLyki1SSYrfhFK50gD50jYRUYHkzqHGMgY3pkP5zDI8TAa06rLmpfPJU6ote06oJ25QIW7vmiZ/vAX0KZmkmAA== - -"@bazel/typescript@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0-rc.3.tgz#d982e56c2cf7eefde1b6ef4a8767603ce9c9d364" - integrity sha512-4xNupCgj5PPHfxhZAnQ4RxdVRtPEfKnJWYCZDetGACSMYeyEfUTkzovPA2u+EnaF4KRHUiYCeZmjDABdPgvZgA== +"@bazel/protractor@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0.tgz#1b67a2f61c7124a25ae4322b585f91a26592458b" + integrity sha512-mr+Jkg/Ta5cp1FQevbV9DqXidDmScX3vy82HjAIew1Y1aQMT9SJ5RVopSSQFe/pIx/zodpAiW1D6lynPiwS1Cw== + +"@bazel/rollup@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0.tgz#1980cb3f6922227659260bfdca99c457889a5bc1" + integrity sha512-mifUfCZbD1RIhfowh4N8E4881ag3FChz7F4z35wxMOP52g1q3+6Bvh5wv9iysFQopxGmS5jNEj3Dq/CWtSoOnw== + +"@bazel/terser@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0.tgz#a841db8aefd7c51c216b34a26bc02a6c93d5e56a" + integrity sha512-6mBYcfzP6pWxycYZ8r4Lz5kgiWZ7n08bVHZBIRExFeqs7Yy92dD92LPeA9FZIzFiX00IuR9Q1Lqy23xH5q7FeQ== + +"@bazel/typescript@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" + integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/worker/package.json b/examples/worker/package.json index 3297581422..8cacd64432 100644 --- a/examples/worker/package.json +++ b/examples/worker/package.json @@ -1,6 +1,6 @@ { "private": true, "devDependencies": { - "@bazel/worker": "^2.0.0-rc.3" + "@bazel/worker": "^2.0.0" } } diff --git a/examples/worker/yarn.lock b/examples/worker/yarn.lock index 5155b3363b..2e8d12e500 100644 --- a/examples/worker/yarn.lock +++ b/examples/worker/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/worker@^2.0.0-rc.3": - version "2.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-2.0.0-rc.3.tgz#6ab5920b1b8b0af69a920d150a06195385c71b39" - integrity sha512-jLKH0Vz2MfDPe7Ogt8squTgL4h8ha5+z8LJrSMX9NbeVcuOX7+J102j1iuusdZi1OCyYtY8uzD87VTxCye1YAA== +"@bazel/worker@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-2.0.0.tgz#904de1708198b68cf90f088b43d1a7eb0a9cc252" + integrity sha512-YKlEbKOZ51QIngN5FKZAsT9xRoZfeQGsb1ZDUqn8G7GnfzMuqlqzKEXFU8D3RwEO5rwJ8d7zhYqEKBjA9XfA8Q== dependencies: protobufjs "6.8.8" From e00fd599a7ccfe870814eff541725fc14992ab33 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Jul 2020 14:27:29 +0000 Subject: [PATCH 0792/1134] build(deps): bump npm-registry-fetch from 4.0.2 to 4.0.5 Bumps [npm-registry-fetch](https://github.com/npm/registry-fetch) from 4.0.2 to 4.0.5. - [Release notes](https://github.com/npm/registry-fetch/releases) - [Changelog](https://github.com/npm/npm-registry-fetch/blob/latest/CHANGELOG.md) - [Commits](https://github.com/npm/registry-fetch/commits) Signed-off-by: dependabot[bot] --- yarn.lock | 127 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 80 insertions(+), 47 deletions(-) diff --git a/yarn.lock b/yarn.lock index 61fd40fd64..86b23a4d55 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2238,12 +2238,7 @@ blocking-proxy@^1.0.0: dependencies: minimist "^1.2.0" -bluebird@^3.3.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.0.tgz#56a6a886e03f6ae577cffedeb524f8f2450293cf" - integrity sha512-aBQ1FxIa7kSWCcmKHlcHFlT2jt6J/l4FzC7KcPELkOJOsPOb/bccdhmIrKDfXhwFrmc7vDoDrrepFvGqjyXGJg== - -bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: +bluebird@^3.3.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -2418,7 +2413,28 @@ c8@7.1.0: yargs "^15.0.0" yargs-parser "^16.0.0" -cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: +cacache@^12.0.0: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^12.0.2, cacache@^12.0.3: version "12.0.3" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== @@ -2623,7 +2639,12 @@ chokidar@^3.0.0: optionalDependencies: fsevents "~2.1.2" -chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.3: +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^1.1.2, chownr@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== @@ -3595,26 +3616,19 @@ encodeurl@~1.0.2: integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: - iconv-lite "~0.4.13" + iconv-lite "^0.6.2" -end-of-stream@^1.0.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== - dependencies: - once "^1.4.0" - engine.io-client@~3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" @@ -4029,9 +4043,9 @@ fb-watchman@^2.0.0: bser "2.1.1" figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" - integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== figlet@^1.1.1: version "1.2.3" @@ -4467,7 +4481,7 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.0.0, glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== @@ -4479,7 +4493,7 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.4: +glob@^7.1.3, glob@^7.1.4: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -4537,21 +4551,21 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6: +graceful-fs@^4.1.11, graceful-fs@^4.1.3, graceful-fs@^4.1.6: version "4.2.2" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== -graceful-fs@^4.1.15, graceful-fs@^4.2.2, graceful-fs@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== - -graceful-fs@^4.2.4: +graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +graceful-fs@^4.2.2, graceful-fs@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -4695,7 +4709,12 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546" integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ== -hosted-git-info@^2.7.1, hosted-git-info@^2.8.5: +hosted-git-info@^2.7.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +hosted-git-info@^2.8.5: version "2.8.5" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== @@ -4823,13 +4842,20 @@ husky@1.3.1: run-node "^1.0.0" slash "^2.0.0" -iconv-lite@0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" + integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" @@ -6769,13 +6795,20 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" +mkdirp@^0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + mock-socket@~9.0.3: version "9.0.3" resolved "https://registry.yarnpkg.com/mock-socket/-/mock-socket-9.0.3.tgz#4bc6d2aea33191e4fed5ec71f039e2bbeb95e414" @@ -6892,9 +6925,9 @@ nise@^1.5.1: path-to-regexp "^1.7.0" node-fetch-npm@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" - integrity sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw== + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" + integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg== dependencies: encoding "^0.1.11" json-parse-better-errors "^1.0.0" @@ -7107,9 +7140,9 @@ npm-profile@^4.0.2: npm-registry-fetch "^4.0.0" npm-registry-fetch@^4.0.0, npm-registry-fetch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.2.tgz#2b1434f93ccbe6b6385f8e45f45db93e16921d7a" - integrity sha512-Z0IFtPEozNdeZRPh3aHHxdG+ZRpzcbQaJLthsm3VhNf6DScicTFRHZzK82u8RsJUsUHkX+QH/zcB/5pmd20H4A== + version "4.0.5" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.5.tgz#cb87cf7f25bfb048d6c3ee19d115bebf93ea5bfa" + integrity sha512-yQ0/U4fYpCCqmueB2g8sc+89ckQ3eXpmU4+Yi2j5o/r0WkKvE2+Y0tK3DEILAtn2UaQTkjTHxIXe2/CSdit+/Q== dependencies: JSONStream "^1.3.4" bluebird "^3.5.1" @@ -8174,7 +8207,7 @@ read@1, read@~1.0.1, read@~1.0.7: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -8196,7 +8229,7 @@ read@1, read@~1.0.1, read@~1.0.7: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@~2.3.6: +readable-stream@^2.0.2, readable-stream@^2.0.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -8630,9 +8663,9 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-regex@^1.1.0: version "1.1.0" @@ -8641,7 +8674,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== From 1b40827ebe9e8fb9968c2ddb70f1fc3f2877ee7d Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Tue, 21 Jul 2020 18:51:02 -0700 Subject: [PATCH 0793/1134] chore: architect example ng upgrade to 10 --- .../{browserslist => .browserslistrc} | 0 examples/angular_bazel_architect/BUILD.bazel | 34 +- .../angular_bazel_architect/e2e/tsconfig.json | 4 +- examples/angular_bazel_architect/package.json | 56 +- .../projects/frontend-lib/BUILD.bazel | 6 +- .../projects/frontend-lib/package.json | 6 +- .../projects/frontend-lib/tsconfig.lib.json | 2 +- .../projects/frontend-lib/tsconfig.spec.json | 2 +- .../angular_bazel_architect/tsconfig.app.json | 2 +- .../tsconfig.base.json | 26 + .../angular_bazel_architect/tsconfig.json | 47 +- .../tsconfig.spec.json | 2 +- examples/angular_bazel_architect/tslint.json | 66 +- examples/angular_bazel_architect/yarn.lock | 4375 ++++++++++------- 14 files changed, 2702 insertions(+), 1926 deletions(-) rename examples/angular_bazel_architect/{browserslist => .browserslistrc} (100%) create mode 100644 examples/angular_bazel_architect/tsconfig.base.json diff --git a/examples/angular_bazel_architect/browserslist b/examples/angular_bazel_architect/.browserslistrc similarity index 100% rename from examples/angular_bazel_architect/browserslist rename to examples/angular_bazel_architect/.browserslistrc diff --git a/examples/angular_bazel_architect/BUILD.bazel b/examples/angular_bazel_architect/BUILD.bazel index d55162342e..d030cf0efc 100644 --- a/examples/angular_bazel_architect/BUILD.bazel +++ b/examples/angular_bazel_architect/BUILD.bazel @@ -1,9 +1,14 @@ load("@npm//@angular-devkit/architect-cli:index.bzl", "architect", "architect_test") -exports_files([ - "tsconfig.json", - "angular.json", -]) +# These dependencies are needed for any ng command +filegroup( + name = "common_deps", + srcs = [ + "angular.json", + "tsconfig.base.json", + ], + visibility = ["//:__subpackages__"], +) architect( name = "build", @@ -21,10 +26,9 @@ architect( "src/test.ts", ], ) + [ - "angular.json", - "browserslist", + "//:common_deps", + ".browserslistrc", "tsconfig.app.json", - "tsconfig.json", "@npm//mime", "@npm//zone.js", "@npm//tslib", @@ -47,10 +51,9 @@ architect_test( data = glob([ "src/**/*", ]) + [ - "angular.json", + "//:common_deps", "karma.conf.js", "tsconfig.spec.json", - "tsconfig.json", "@npm//@types/jasmine", "@npm//@types/node", "@npm//@angular/cli", @@ -92,10 +95,9 @@ architect_test( "e2e/*", "e2e/**", ]) + [ - "angular.json", - "browserslist", + "//:common_deps", + ".browserslistrc", "tsconfig.app.json", - "tsconfig.json", "@npm//mime", "@npm//@angular/cli", "@npm//@angular/core", @@ -131,8 +133,7 @@ architect( "src/**/*", "e2e/src/**/*", ]) + [ - "angular.json", - "tsconfig.json", + "//:common_deps", "tsconfig.spec.json", "tsconfig.app.json", "tslint.json", @@ -160,10 +161,9 @@ architect( "src/test.ts", ], ) + [ - "angular.json", - "browserslist", + "//:common_deps", + ".browserslistrc", "tsconfig.app.json", - "tsconfig.json", "@npm//mime", "@npm//@angular/cli", "@npm//@angular/core", diff --git a/examples/angular_bazel_architect/e2e/tsconfig.json b/examples/angular_bazel_architect/e2e/tsconfig.json index 39b800f789..6b87cc425b 100644 --- a/examples/angular_bazel_architect/e2e/tsconfig.json +++ b/examples/angular_bazel_architect/e2e/tsconfig.json @@ -1,9 +1,9 @@ { - "extends": "../tsconfig.json", + "extends": "../tsconfig.base.json", "compilerOptions": { "outDir": "../out-tsc/e2e", "module": "commonjs", - "target": "es5", + "target": "es2018", "types": [ "jasmine", "jasminewd2", diff --git a/examples/angular_bazel_architect/package.json b/examples/angular_bazel_architect/package.json index 240577b9f7..e14ea9e080 100644 --- a/examples/angular_bazel_architect/package.json +++ b/examples/angular_bazel_architect/package.json @@ -13,45 +13,45 @@ "private": true, "dependencies": { "@angular-devkit/architect-cli": "0.900.1", - "@angular/animations": "9.0.0", - "@angular/common": "9.0.0", - "@angular/compiler": "9.0.0", - "@angular/core": "9.0.0", - "@angular/forms": "9.0.0", - "@angular/platform-browser": "9.0.0", - "@angular/platform-browser-dynamic": "9.0.0", - "@angular/router": "9.0.0", + "@angular/animations": "10.0.4", + "@angular/common": "10.0.4", + "@angular/compiler": "10.0.4", + "@angular/core": "10.0.4", + "@angular/forms": "10.0.4", + "@angular/platform-browser": "10.0.4", + "@angular/platform-browser-dynamic": "10.0.4", + "@angular/router": "10.0.4", "mime": "^2.4.4", "patch-package": "^6.2.0", "rxjs": "~6.5.0", - "tslib": "^1.10.0", - "zone.js": "~0.10.1" + "tslib": "^2.0.0", + "zone.js": "~0.10.3" }, "devDependencies": { - "@angular-devkit/build-angular": "0.900.1", - "@angular-devkit/build-ng-packagr": "0.900.1", - "@angular/cli": "9.0.1", - "@angular/compiler-cli": "9.0.0", - "@angular/language-service": "9.0.0", + "@angular-devkit/build-angular": "0.1000.3", + "@angular-devkit/build-ng-packagr": "0.1000.3", + "@angular/cli": "10.0.3", + "@angular/compiler-cli": "10.0.4", + "@angular/language-service": "10.0.4", "@bazel/bazelisk": "^1.5.0", "@bazel/buildifier": "^3.3.0", "@bazel/ibazel": "^0.13.1", "@types/jasmine": "~3.3.8", "@types/jasminewd2": "~2.0.3", "@types/node": "12.12.6", - "codelyzer": "^5.0.0", + "codelyzer": "^6.0.0", "html-webpack-plugin": "^3.2.0", - "jasmine-core": "~3.4.0", - "jasmine-spec-reporter": "~4.2.1", - "karma": "~4.1.0", - "karma-chrome-launcher": "~2.2.0", - "karma-coverage-istanbul-reporter": "~2.0.1", - "karma-jasmine": "~2.0.1", - "karma-jasmine-html-reporter": "^1.4.0", - "ng-packagr": "^9.0.0", - "protractor": "~5.4.0", + "jasmine-core": "~3.5.0", + "jasmine-spec-reporter": "~5.0.0", + "karma": "~5.0.0", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage-istanbul-reporter": "~3.0.2", + "karma-jasmine": "~3.3.0", + "karma-jasmine-html-reporter": "^1.5.0", + "ng-packagr": "^10.0.0", + "protractor": "~7.0.0", "ts-node": "~7.0.0", - "tslint": "~5.15.0", - "typescript": "~3.6.3" + "tslint": "~6.1.0", + "typescript": "~3.9.7" } -} +} \ No newline at end of file diff --git a/examples/angular_bazel_architect/projects/frontend-lib/BUILD.bazel b/examples/angular_bazel_architect/projects/frontend-lib/BUILD.bazel index 59ef163a22..bab7cfd43a 100644 --- a/examples/angular_bazel_architect/projects/frontend-lib/BUILD.bazel +++ b/examples/angular_bazel_architect/projects/frontend-lib/BUILD.bazel @@ -19,12 +19,11 @@ architect( "src/test.ts", ], ) + [ + "//:common_deps", "ng-package.js", "package.json", "tsconfig.lib.json", "tsconfig.lib.prod.json", - "@angular_bazel_architect//:angular.json", - "@angular_bazel_architect//:tsconfig.json", "@npm//@angular/cli", "@npm//@angular/core", "@npm//zone.js", @@ -42,10 +41,9 @@ architect_test( data = glob([ "src/**/*", ]) + [ + "//:common_deps", "karma.conf.js", "tsconfig.spec.json", - "@angular_bazel_architect//:angular.json", - "@angular_bazel_architect//:tsconfig.json", "@npm//@types/jasmine", "@npm//@types/node", "@npm//@angular/cli", diff --git a/examples/angular_bazel_architect/projects/frontend-lib/package.json b/examples/angular_bazel_architect/projects/frontend-lib/package.json index d80eb9d0d4..45b5ae6769 100644 --- a/examples/angular_bazel_architect/projects/frontend-lib/package.json +++ b/examples/angular_bazel_architect/projects/frontend-lib/package.json @@ -3,7 +3,9 @@ "version": "0.0.1", "peerDependencies": { "@angular/common": "^9.0.0", - "@angular/core": "^9.0.0", - "tslib": "^1.10.0" + "@angular/core": "^9.0.0" +}, + "dependencies": { + "tslib": "^2.0.0" } } \ No newline at end of file diff --git a/examples/angular_bazel_architect/projects/frontend-lib/tsconfig.lib.json b/examples/angular_bazel_architect/projects/frontend-lib/tsconfig.lib.json index 4b5d4afd4f..29a368d527 100644 --- a/examples/angular_bazel_architect/projects/frontend-lib/tsconfig.lib.json +++ b/examples/angular_bazel_architect/projects/frontend-lib/tsconfig.lib.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.json", + "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "../../out-tsc/lib", "target": "es2015", diff --git a/examples/angular_bazel_architect/projects/frontend-lib/tsconfig.spec.json b/examples/angular_bazel_architect/projects/frontend-lib/tsconfig.spec.json index 16da33db07..a9ea5ea114 100644 --- a/examples/angular_bazel_architect/projects/frontend-lib/tsconfig.spec.json +++ b/examples/angular_bazel_architect/projects/frontend-lib/tsconfig.spec.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.json", + "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "../../out-tsc/spec", "types": [ diff --git a/examples/angular_bazel_architect/tsconfig.app.json b/examples/angular_bazel_architect/tsconfig.app.json index f758d9820d..44795bd55a 100644 --- a/examples/angular_bazel_architect/tsconfig.app.json +++ b/examples/angular_bazel_architect/tsconfig.app.json @@ -1,5 +1,5 @@ { - "extends": "./tsconfig.json", + "extends": "./tsconfig.base.json", "compilerOptions": { "outDir": "./out-tsc/app", "types": [] diff --git a/examples/angular_bazel_architect/tsconfig.base.json b/examples/angular_bazel_architect/tsconfig.base.json new file mode 100644 index 0000000000..a409145307 --- /dev/null +++ b/examples/angular_bazel_architect/tsconfig.base.json @@ -0,0 +1,26 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "module": "es2020", + "moduleResolution": "node", + "importHelpers": true, + "target": "es2015", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2018", + "dom" + ] + }, + "angularCompilerOptions": { + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true + } +} diff --git a/examples/angular_bazel_architect/tsconfig.json b/examples/angular_bazel_architect/tsconfig.json index 30956ae7ea..0a6241d4db 100644 --- a/examples/angular_bazel_architect/tsconfig.json +++ b/examples/angular_bazel_architect/tsconfig.json @@ -1,26 +1,23 @@ +/* + This is a "Solution Style" tsconfig.json file, and is used by editors and TypeScript’s language server to improve development experience. + It is not intended to be used to perform a compilation. + + To learn more about this file see: https://angular.io/config/solution-tsconfig. +*/ { - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, - "experimentalDecorators": true, - "module": "esnext", - "moduleResolution": "node", - "importHelpers": true, - "target": "es2015", - "typeRoots": [ - "node_modules/@types" - ], - "lib": [ - "es2018", - "dom" - ] - }, - "angularCompilerOptions": { - "fullTemplateTypeCheck": true, - "strictInjectionParameters": true - } -} + "files": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + }, + { + "path": "./projects/frontend-lib/tsconfig.lib.json" + }, + { + "path": "./projects/frontend-lib/tsconfig.spec.json" + } + ] +} \ No newline at end of file diff --git a/examples/angular_bazel_architect/tsconfig.spec.json b/examples/angular_bazel_architect/tsconfig.spec.json index 6400fde7d5..1db2e6ee9c 100644 --- a/examples/angular_bazel_architect/tsconfig.spec.json +++ b/examples/angular_bazel_architect/tsconfig.spec.json @@ -1,5 +1,5 @@ { - "extends": "./tsconfig.json", + "extends": "./tsconfig.base.json", "compilerOptions": { "outDir": "./out-tsc/spec", "types": [ diff --git a/examples/angular_bazel_architect/tslint.json b/examples/angular_bazel_architect/tslint.json index c8d70f1520..58a97b08a5 100644 --- a/examples/angular_bazel_architect/tslint.json +++ b/examples/angular_bazel_architect/tslint.json @@ -1,8 +1,16 @@ { "extends": "tslint:recommended", "rules": { + "align": { + "options": [ + "parameters", + "statements" + ] + }, "array-type": false, "arrow-parens": false, + "arrow-return-shorthand": true, + "curly": true, "deprecation": { "severity": "warning" }, @@ -21,10 +29,17 @@ "app", "kebab-case" ], + "eofline": true, "import-blacklist": [ true, "rxjs/Rx" ], + "import-spacing": true, + "indent": { + "options": [ + "spaces" + ] + }, "interface-name": false, "max-classes-per-file": false, "max-line-length": [ @@ -71,6 +86,20 @@ true, "single" ], + "semicolon": { + "options": [ + "always" + ] + }, + "space-before-function-paren": { + "options": { + "anonymous": "never", + "asyncArrow": "always", + "constructor": "never", + "method": "never", + "named": "never" + } + }, "trailing-comma": false, "no-conflicting-lifecycle": true, "no-host-metadata-property": true, @@ -82,9 +111,44 @@ "no-outputs-metadata-property": true, "template-banana-in-box": true, "template-no-negated-async": true, + "typedef-whitespace": { + "options": [ + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + }, + { + "call-signature": "onespace", + "index-signature": "onespace", + "parameter": "onespace", + "property-declaration": "onespace", + "variable-declaration": "onespace" + } + ] + }, "use-lifecycle-interface": true, "use-pipe-transform-interface": true - }, + , "variable-name": { + "options": [ + "ban-keywords", + "check-format", + "allow-pascal-case" + ] + }, + "whitespace": { + "options": [ + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type", + "check-typecast" + ] + } +}, "rulesDirectory": [ "codelyzer" ] diff --git a/examples/angular_bazel_architect/yarn.lock b/examples/angular_bazel_architect/yarn.lock index cea9c0b0a9..83a8d4aac5 100644 --- a/examples/angular_bazel_architect/yarn.lock +++ b/examples/angular_bazel_architect/yarn.lock @@ -14,6 +14,14 @@ rxjs "6.5.3" symbol-observable "1.2.0" +"@angular-devkit/architect@0.1000.3": + version "0.1000.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1000.3.tgz#f23ea9d370edac8b0dd979d2574b12aa9923c3d4" + integrity sha512-8ZszTAkRvGGMXERFvyLT6SJPfJXjNNfHamA76uDPTBXy+EijJ1XVTUr1+SYEe73E4ovtxqxAnsApEFxS7/Ni5w== + dependencies: + "@angular-devkit/core" "10.0.3" + rxjs "6.5.5" + "@angular-devkit/architect@0.900.1": version "0.900.1" resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.900.1.tgz#60a39a388d1af24b64f01c16d852777e955d76da" @@ -22,100 +30,114 @@ "@angular-devkit/core" "9.0.1" rxjs "6.5.3" -"@angular-devkit/build-angular@0.900.1": - version "0.900.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.900.1.tgz#84e989e98d25b87c06c5fb852fa6a3f4fc723db1" - integrity sha512-e1/EiNI9UAKJxI9+7KA59A15Rkx2QA86evb9iUuwxWGvIsTsN/sg/oXUZA//nTUQTAht+qWJp3I2amd/nyQZLQ== - dependencies: - "@angular-devkit/architect" "0.900.1" - "@angular-devkit/build-optimizer" "0.900.1" - "@angular-devkit/build-webpack" "0.900.1" - "@angular-devkit/core" "9.0.1" - "@babel/core" "7.7.7" - "@babel/generator" "7.7.7" - "@babel/preset-env" "7.7.7" - "@ngtools/webpack" "9.0.1" - ajv "6.10.2" - autoprefixer "9.7.1" - babel-loader "8.0.6" - browserslist "4.8.3" - cacache "13.0.1" - caniuse-lite "1.0.30001020" +"@angular-devkit/build-angular@0.1000.3": + version "0.1000.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.1000.3.tgz#c5af97a1868adb2d0be9cb97e5d8b3c3c8428d4d" + integrity sha512-r3KJj39AwkYYzbixSM095l4fOGvhyByr0XvmAEu0l5dGGdL4tNXywvgXkNhEVRDo0jZYpTMegiTqzOik/9YCDw== + dependencies: + "@angular-devkit/architect" "0.1000.3" + "@angular-devkit/build-optimizer" "0.1000.3" + "@angular-devkit/build-webpack" "0.1000.3" + "@angular-devkit/core" "10.0.3" + "@babel/core" "7.9.6" + "@babel/generator" "7.9.6" + "@babel/plugin-transform-runtime" "7.9.6" + "@babel/preset-env" "7.9.6" + "@babel/runtime" "7.9.6" + "@babel/template" "7.8.6" + "@jsdevtools/coverage-istanbul-loader" "3.0.3" + "@ngtools/webpack" "10.0.3" + ajv "6.12.2" + autoprefixer "9.8.0" + babel-loader "8.1.0" + browserslist "^4.9.1" + cacache "15.0.3" + caniuse-lite "^1.0.30001032" circular-dependency-plugin "5.2.0" - copy-webpack-plugin "5.1.1" - core-js "3.6.0" - coverage-istanbul-loader "2.0.3" + copy-webpack-plugin "6.0.3" + core-js "3.6.4" + css-loader "3.5.3" cssnano "4.1.10" - file-loader "4.2.0" - find-cache-dir "3.0.0" - glob "7.1.5" - jest-worker "24.9.0" + file-loader "6.0.0" + find-cache-dir "3.3.1" + glob "7.1.6" + jest-worker "26.0.0" karma-source-map-support "1.4.0" - less "3.10.3" - less-loader "5.0.0" - license-webpack-plugin "2.1.3" - loader-utils "1.2.3" - magic-string "0.25.4" - mini-css-extract-plugin "0.8.0" + less-loader "6.1.0" + license-webpack-plugin "2.2.0" + loader-utils "2.0.0" + mini-css-extract-plugin "0.9.0" minimatch "3.0.4" - open "7.0.0" + open "7.0.4" parse5 "4.0.0" - postcss "7.0.21" + pnp-webpack-plugin "1.6.4" + postcss "7.0.31" postcss-import "12.0.1" postcss-loader "3.0.0" - raw-loader "3.1.0" - regenerator-runtime "0.13.3" - rimraf "3.0.0" - rollup "1.25.2" - rxjs "6.5.3" - sass "1.23.3" - sass-loader "8.0.0" - semver "6.3.0" + raw-loader "4.0.1" + regenerator-runtime "0.13.5" + resolve-url-loader "3.1.1" + rimraf "3.0.2" + rollup "2.10.9" + rxjs "6.5.5" + sass "1.26.5" + sass-loader "8.0.2" + semver "7.3.2" source-map "0.7.3" - source-map-loader "0.2.4" - source-map-support "0.5.16" - speed-measure-webpack-plugin "1.3.1" - style-loader "1.0.0" + source-map-loader "1.0.0" + source-map-support "0.5.19" + speed-measure-webpack-plugin "1.3.3" + style-loader "1.2.1" stylus "0.54.7" stylus-loader "3.0.2" - terser "4.5.1" - terser-webpack-plugin "2.3.3" + terser "4.7.0" + terser-webpack-plugin "3.0.1" tree-kill "1.2.2" - webpack "4.41.2" + webpack "4.43.0" webpack-dev-middleware "3.7.2" - webpack-dev-server "3.9.0" + webpack-dev-server "3.11.0" webpack-merge "4.2.2" webpack-sources "1.4.3" - webpack-subresource-integrity "1.3.4" - worker-plugin "3.2.0" + webpack-subresource-integrity "1.4.1" + worker-plugin "4.0.3" -"@angular-devkit/build-ng-packagr@0.900.1": - version "0.900.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-ng-packagr/-/build-ng-packagr-0.900.1.tgz#43eb41fba926aea7c46e3b4c497cb4d63f361e4e" - integrity sha512-4gUbQUot8WaqWcUX+FOJiAHoFgD+oyKL5Y2p+3DI0qJHcFPmI9z210Fk4az1Ifp00g9TFxf0YJW3YmZP0oi10A== +"@angular-devkit/build-ng-packagr@0.1000.3": + version "0.1000.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-ng-packagr/-/build-ng-packagr-0.1000.3.tgz#b9f10e6e1fcc821c7b35a07903f6f7e6e3f41f97" + integrity sha512-k5dEjx8g+ZLLwlViue7931PNxbAbePJ1NdAmXodg2U0W4l5g22egiUFG1DGsMm7p/3LlZGv3q9Kwdg8Ox1acVg== dependencies: - "@angular-devkit/architect" "0.900.1" - rxjs "6.5.3" + "@angular-devkit/architect" "0.1000.3" + rxjs "6.5.5" -"@angular-devkit/build-optimizer@0.900.1": - version "0.900.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.900.1.tgz#b9621a8e6234d3233b61ba9ba86e5d64b8e412b5" - integrity sha512-EnIU+ogiJrUPf8+fuPE5xQ+j/qUZDZ/SmLs8XAOmvoOBpZ0vPNedrHBHCxmV+ACbCxHGmIKQ/ZL29XUYVasteg== +"@angular-devkit/build-optimizer@0.1000.3": + version "0.1000.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1000.3.tgz#05f7a853a5907ad3381a598896a2e053e47e925d" + integrity sha512-6mFoubg08UCWC0fE2mGoawEt2R1VlGStvUNAP2PRCjoj1ZySa1NnVYoKk65cyAAA3K2o7vSoDZesNq1uABjZbg== dependencies: - loader-utils "1.2.3" + loader-utils "2.0.0" source-map "0.7.3" - tslib "1.10.0" - typescript "3.6.4" + tslib "2.0.0" webpack-sources "1.4.3" -"@angular-devkit/build-webpack@0.900.1": - version "0.900.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.900.1.tgz#1b90c9c87ec26fa8b471ecc17175c5bc5f6c74a4" - integrity sha512-GwV+jht42S2XZZbvy07mXqZ5us9ppbIi/gCL5SiUh+xtSdZGbfE6RoFZXmeOuxBn9FY0vUMTFtKCK5Mx8O3WYg== +"@angular-devkit/build-webpack@0.1000.3": + version "0.1000.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1000.3.tgz#2709ccfc5201c2be9301551ef1d815c6aafedfbc" + integrity sha512-+vmn9d9THFubSWS28K1+nElUfOrhT576ptVZMd0a5S24momV8loW3J8iBOBfnGal/P86ZCAyP46kSirlAzH9Jg== dependencies: - "@angular-devkit/architect" "0.900.1" - "@angular-devkit/core" "9.0.1" - rxjs "6.5.3" + "@angular-devkit/architect" "0.1000.3" + "@angular-devkit/core" "10.0.3" + rxjs "6.5.5" + +"@angular-devkit/core@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.0.3.tgz#7654766c9f2d3c510beaad8bca3e2a71643c6b8e" + integrity sha512-m27ogjq44j80x64RnEswSvy8UewUqeCVJBbEuY6fzrWoaiCf12sgPlrSCwjwfhtQrLgl1e/i9zYA7U6ulGRXyg== + dependencies: + ajv "6.12.2" + fast-json-stable-stringify "2.1.0" + magic-string "0.25.7" + rxjs "6.5.5" + source-map "0.7.3" "@angular-devkit/core@9.0.1": version "9.0.1" @@ -128,55 +150,59 @@ rxjs "6.5.3" source-map "0.7.3" -"@angular-devkit/schematics@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-9.0.1.tgz#a27a2ba2b5fec92b33564bc5078c5f13c969931a" - integrity sha512-Cuub9eJm1TWygKTOowRbxMASA8QWeHWzNEU2V3TqUF1Tqy/iPf4cpuMijkFysXjTn2bi2HA9t26AwQkwymbliA== +"@angular-devkit/schematics@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-10.0.3.tgz#84e1a337692ba36cbae145b5e678592878df722f" + integrity sha512-TjA2ZSPCgUK9l4FiRTIQY7DceXMAvNzOMWffy9o3kv2HPtxG9kuBrQXk++Z99zpylK0cAsugV7t/5ANpUkrIiA== dependencies: - "@angular-devkit/core" "9.0.1" - ora "4.0.2" - rxjs "6.5.3" + "@angular-devkit/core" "10.0.3" + ora "4.0.4" + rxjs "6.5.5" -"@angular/animations@9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-9.0.0.tgz#8d2b852c5273bcc161d13f82faaf3566ab562951" - integrity sha512-jB8+SC3vMztW5zt5UYVmtVwqIWE33UyEjbP5JPba3I3bLRK5E059LcJmN1rSdJHItgIAdG9Y1I0WJ6aiSFyp4Q== +"@angular/animations@10.0.4": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-10.0.4.tgz#179e4e63e3f2468ee1fe961c12eb143dd8350b23" + integrity sha512-UzQiWhDHY6wixS1Nh+Jwpzq1weiLGXJPt3Pa4pETpt3Hg7MIUu62dik6OFWuGYQPbn9DJYH+CH+sRxN1GCVjww== + dependencies: + tslib "^2.0.0" -"@angular/cli@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-9.0.1.tgz#399cdc4f85256074b808738ba3a4dec4167df53a" - integrity sha512-/nykTIqZq1plxaXVoMzAqjnExGhkYoSoq88AE4Mb31d6n/SW2DFh62C3hze+atI6YLqeFaPhYuA5zG+z3oOXbQ== +"@angular/cli@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-10.0.3.tgz#0b8c5e263deaa63d05b6efda790a2000b8a24a85" + integrity sha512-ONK8YG20KuakQetY0lPKDAOA3uBoLurdpSfFspFkcECyDimwJYSEydi3FUnCxEexeoKvrQWcol+q+u9YPoHCyg== dependencies: - "@angular-devkit/architect" "0.900.1" - "@angular-devkit/core" "9.0.1" - "@angular-devkit/schematics" "9.0.1" - "@schematics/angular" "9.0.1" - "@schematics/update" "0.900.1" + "@angular-devkit/architect" "0.1000.3" + "@angular-devkit/core" "10.0.3" + "@angular-devkit/schematics" "10.0.3" + "@schematics/angular" "10.0.3" + "@schematics/update" "0.1000.3" "@yarnpkg/lockfile" "1.1.0" ansi-colors "4.1.1" - debug "^4.1.1" + debug "4.1.1" ini "1.3.5" - inquirer "7.0.0" - npm-package-arg "6.1.1" - npm-pick-manifest "3.0.2" - open "7.0.0" - pacote "9.5.8" + inquirer "7.1.0" + npm-package-arg "8.0.1" + npm-pick-manifest "6.1.0" + open "7.0.4" + pacote "9.5.12" read-package-tree "5.3.1" - rimraf "3.0.0" - semver "6.3.0" + rimraf "3.0.2" + semver "7.3.2" symbol-observable "1.2.0" - universal-analytics "^0.4.20" - uuid "^3.3.2" + universal-analytics "0.4.20" + uuid "8.1.0" -"@angular/common@9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-9.0.0.tgz#0e3b2452d42f87d1825a448a31ad72c593ee0785" - integrity sha512-ZMmEClGtUNJwV5CBlqcSHPIsNyz6WU/GvKWFzJ5VZc68oeg1e7lqfNMNIC47TjyolNJ7VSpNlyrKjzfdBlmqVw== +"@angular/common@10.0.4": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-10.0.4.tgz#f585e0b1ef723bb96e54af831138184999490e3d" + integrity sha512-9DJMD8GgHz7i2fMz0f1IHZlDSIz83uE6fcH8SIq1iCSWT2dubRRpCX000VpIyhAgfkCgdNCYXQ7VGNsZceoagQ== + dependencies: + tslib "^2.0.0" -"@angular/compiler-cli@9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-9.0.0.tgz#ecce680820725885fed298af69946bdaa12d73d3" - integrity sha512-6L3swd3Z2ceAapmioml6z7yu3bYC2aVm3/rgK7eCoZtPcevuvTpGnXcFSVvNgByV51GntgInThPbMx0xY23Rvw== +"@angular/compiler-cli@10.0.4": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-10.0.4.tgz#b241f8d41ca01dfed67b5ed4928ab0f13e2879af" + integrity sha512-uZKk6Ab4Pw8qcaXhpORuEoCbPSHWx3TWcs9OXIKIhzOOoMMe9OSt2SzOkHCrySSaik1IhQODnHww7sGRw5mxwQ== dependencies: canonical-path "1.0.0" chokidar "^3.0.0" @@ -188,50 +214,81 @@ reflect-metadata "^0.1.2" semver "^6.3.0" source-map "^0.6.1" - yargs "13.1.0" + sourcemap-codec "^1.4.8" + tslib "^2.0.0" + yargs "15.3.0" + +"@angular/compiler@10.0.4": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-10.0.4.tgz#786a5c1653a429233bee9f53614b5a82c62841ce" + integrity sha512-1rnEmSHJtrKC1QD+PyF36xwMnSqG4Slgi5+PYk3BxIa5vbWBibrYijtd/uCNhscfPSpfb06MVM2mRsrc+BmbQg== + dependencies: + tslib "^2.0.0" "@angular/compiler@9.0.0": version "9.0.0" resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-9.0.0.tgz#87e0bef4c369b6cadae07e3a4295778fc93799d5" integrity sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ== +"@angular/core@10.0.4": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-10.0.4.tgz#700eda7711b50796298679d245e091cb54155071" + integrity sha512-lA8RDagJ/O0gUX95h00+nnUZs/1QmmhAVWVtHcuI12ueC836tJhLtPGnEx9ib9NXrgRyNwb8lO1xJPmmuQgdQQ== + dependencies: + tslib "^2.0.0" + "@angular/core@9.0.0": version "9.0.0" resolved "https://registry.yarnpkg.com/@angular/core/-/core-9.0.0.tgz#227dc53e1ac81824f998c6e76000b7efc522641e" integrity sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w== -"@angular/forms@9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-9.0.0.tgz#2017e4ddee101fa57dc5dc9ba1139b1f02499422" - integrity sha512-SIYJc0Rgaihow1t+iiwSFGEvvRgssgUuxwIYbMfCp1Sx513K+JX9nVFXqU+dcGj/eF1u5wwYwbvlVyuMQLzmXg== +"@angular/forms@10.0.4": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-10.0.4.tgz#d37fe47d5c91b0ef249066e904338905b2687847" + integrity sha512-SJSYZCfHua9fi/dks1q+ad9OGBblRUn3Q1V4B7r99fJYr39qRiIHcegikhY4h8H3Wk1bJRGJG7iXmxJhjWXK3Q== + dependencies: + tslib "^2.0.0" -"@angular/language-service@9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-9.0.0.tgz#24ba63ae5db566b70f7c40bb148dc37a77aaa373" - integrity sha512-tOMtXY8DFpTWMF77BOTXZmMMtqvdy6fbyOkJSccn6VatcPrNXOs5rKur+KNwdSlK+djjss6Y+LA8fQAvjNvUqw== +"@angular/language-service@10.0.4": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-10.0.4.tgz#fe61e5a82c494a3aaabcca4997aff94fa891d12e" + integrity sha512-m5dWL1Lg9M4kDA/kjpdyKsrx9arbIebrgsSzr/QG7cPon6SQMRs9ECZBM+3GalkQghrPO1mLgnrUwFBUH2QNPw== -"@angular/platform-browser-dynamic@9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.0.0.tgz#1b87355c20d0b2a046c1914085701a3d5ced52da" - integrity sha512-F1kbEpmDottTemRPEOAz2Te5ABVJ7wypfzBllxqXbdxPHvYLfL8db2dXyiGqABQ3ZFHPLNilrkUTy0sbuuU4OA== +"@angular/platform-browser-dynamic@10.0.4": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.4.tgz#77844511154eeb5eec5e68566767c215654f34e8" + integrity sha512-RoUMqYhUwF6+Mvk/aH0IZQ1D0SDEi9k5EZlx9CJ3RvNuKygk7to+S4vMWVpGxFQlwdS3bytRLKi+Kki6f4nLkg== + dependencies: + tslib "^2.0.0" -"@angular/platform-browser@9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-9.0.0.tgz#b9454f29d8edaf024668baa9e07083eef73deac2" - integrity sha512-2PR/o57HjZvKEnAF8ODeqxmeC90oth9dLTMrJNoI5MET0IeErKeI/9Sl5cLQuXC+lSVN5rOMCvDb74VWSno5yw== +"@angular/platform-browser@10.0.4": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-10.0.4.tgz#58131215e414be7ee9d4024e47f61b4a02166b28" + integrity sha512-iaZ8pFS5XUgPCO6/C47TzSFPzlzgleayq099cVOOx9z0t/SwUCSKt4AdAVhyQ8RTnx6l1JmmwBgRaXpScZlqzg== + dependencies: + tslib "^2.0.0" -"@angular/router@9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-9.0.0.tgz#11784fc8ce9cb3314c7ec1083ff9be7c611181c2" - integrity sha512-yyOcStpgN5t8wGRNO85mo0jplXkntP+v2tmSxNx45pahqmofSFm+QCEFa2zHQuMr7NoiGERhd0Tae7NDCCjtjA== +"@angular/router@10.0.4": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-10.0.4.tgz#d68c2711b53f3bdc1508d9b7e90b181b4e09f42c" + integrity sha512-iDLWdmltU5pZ6M/fBKC5Kg2o9Aqb1YJ+oHXFu186BQAl2RNeNCmMQ0VaCxjpMgD/MoSxpuRuGQ6rRrCSFCxtcQ== + dependencies: + tslib "^2.0.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": +"@babel/code-frame@^7.0.0": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== dependencies: "@babel/highlight" "^7.0.0" +"@babel/code-frame@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + "@babel/code-frame@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" @@ -239,21 +296,32 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/core@7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.7.tgz#ee155d2e12300bcc0cff6a8ad46f2af5063803e9" - integrity sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.7" - "@babel/helpers" "^7.7.4" - "@babel/parser" "^7.7.7" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" +"@babel/compat-data@^7.10.4", "@babel/compat-data@^7.9.6": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.5.tgz#d38425e67ea96b1480a3f50404d1bf85676301a6" + integrity sha512-mPVoWNzIpYJHbWje0if7Ck36bpbtTvIxOi9+6WSK9wjGEXearAqlwBoTQvVjsAY2VIwgcs8V940geY3okzRCEw== + dependencies: + browserslist "^4.12.0" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" + integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.6" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.6" + "@babel/parser" "^7.9.6" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" convert-source-map "^1.7.0" debug "^4.1.0" - json5 "^2.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" lodash "^4.17.13" resolve "^1.3.2" semver "^5.4.1" @@ -280,17 +348,26 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@7.7.7", "@babel/generator@^7.4.0", "@babel/generator@^7.7.4": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.7.tgz#859ac733c44c74148e1a72980a64ec84b85f4f45" - integrity sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ== +"@babel/generator@7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" + integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.9.6" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" -"@babel/generator@^7.7.7", "@babel/generator@^7.8.3": +"@babel/generator@^7.10.5", "@babel/generator@^7.9.6": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.5.tgz#1b903554bc8c583ee8d25f1e8969732e6b829a69" + integrity sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig== + dependencies: + "@babel/types" "^7.10.5" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/generator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.3.tgz#0e22c005b0a94c1c74eafe19ef78ce53a4d45c03" integrity sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug== @@ -300,63 +377,66 @@ lodash "^4.17.13" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" - integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== +"@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" + integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.10.4" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" - integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" + integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== dependencies: - "@babel/helper-explode-assignable-expression" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-call-delegate@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz#de82619898aa605d409c42be6ffb8d7204579692" - integrity sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A== +"@babel/helper-compilation-targets@^7.9.6": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" + integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== dependencies: - "@babel/helper-hoist-variables" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/compat-data" "^7.10.4" + browserslist "^4.12.0" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" -"@babel/helper-create-regexp-features-plugin@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz#c774268c95ec07ee92476a3862b75cc2839beb79" - integrity sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q== +"@babel/helper-create-regexp-features-plugin@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" + integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== dependencies: - "@babel/helper-regex" "^7.8.3" - regexpu-core "^4.6.0" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + regexpu-core "^4.7.0" -"@babel/helper-define-map@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" - integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== +"@babel/helper-define-map@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" + integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/types" "^7.8.3" - lodash "^4.17.13" + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" -"@babel/helper-explode-assignable-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" - integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz#40a1cd917bff1288f699a94a75b37a1a2dbd8c7c" + integrity sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A== dependencies: - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-function-name@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e" - integrity sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ== +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== dependencies: - "@babel/helper-get-function-arity" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" "@babel/helper-function-name@^7.8.3": version "7.8.3" @@ -367,12 +447,12 @@ "@babel/template" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-get-function-arity@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz#cb46348d2f8808e632f0ab048172130e636005f0" - integrity sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA== +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.10.4" "@babel/helper-get-function-arity@^7.8.3": version "7.8.3" @@ -381,26 +461,26 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-hoist-variables@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" - integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== +"@babel/helper-hoist-variables@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" + integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.10.4" -"@babel/helper-member-expression-to-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" - integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== +"@babel/helper-member-expression-to-functions@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz#172f56e7a63e78112f3a04055f24365af702e7ee" + integrity sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.10.5" -"@babel/helper-module-imports@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz#e5a92529f8888bf319a6376abfbd1cebc491ad91" - integrity sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ== +"@babel/helper-module-imports@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" + integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.10.4" "@babel/helper-module-imports@^7.8.3": version "7.8.3" @@ -409,77 +489,83 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-module-transforms@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz#d305e35d02bee720fbc2c3c3623aa0c316c01590" - integrity sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q== +"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.9.0": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz#120c271c0b3353673fcdfd8c053db3c544a260d6" + integrity sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA== dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-simple-access" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - lodash "^4.17.13" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" -"@babel/helper-optimise-call-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" - integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.10.4" "@babel/helper-plugin-utils@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== +"@babel/helper-plugin-utils@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== -"@babel/helper-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" - integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== +"@babel/helper-regex@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" + integrity sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg== dependencies: - lodash "^4.17.13" + lodash "^4.17.19" -"@babel/helper-remap-async-to-generator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" - integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== +"@babel/helper-remap-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz#fce8bea4e9690bbe923056ded21e54b4e8b68ed5" + integrity sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg== dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-wrap-function" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-replace-supers@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz#91192d25f6abbcd41da8a989d4492574fb1530bc" - integrity sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA== +"@babel/helper-replace-supers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" + integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== dependencies: - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-simple-access@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" - integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== +"@babel/helper-simple-access@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" + integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== dependencies: - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-split-export-declaration@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8" - integrity sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug== +"@babel/helper-split-export-declaration@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" + integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.10.4" "@babel/helper-split-export-declaration@^7.8.3": version "7.8.3" @@ -488,17 +574,22 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-wrap-function@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" - integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/helper-wrap-function@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" + integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helpers@^7.7.4", "@babel/helpers@^7.8.3": +"@babel/helpers@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.3.tgz#382fbb0382ce7c4ce905945ab9641d688336ce85" integrity sha512-LmU3q9Pah/XyZU89QvBgGt+BCsTPoQa+73RxAQh8fb8qkDyIfeQnmgs+hvzhTCKTzqOyk7JTkS3MS1S8Mq5yrQ== @@ -507,6 +598,15 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helpers@^7.9.6": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" + integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + "@babel/highlight@^7.0.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" @@ -516,6 +616,15 @@ esutils "^2.0.2" js-tokens "^4.0.0" +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/highlight@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" @@ -525,71 +634,89 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.4.3", "@babel/parser@^7.7.4": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.7.tgz#1b886595419cf92d811316d5b715a53ff38b4937" - integrity sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw== +"@babel/parser@^7.10.4", "@babel/parser@^7.10.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.5.tgz#e7c6bf5a7deff957cec9f04b551e2762909d826b" + integrity sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ== -"@babel/parser@^7.7.5", "@babel/parser@^7.7.7", "@babel/parser@^7.8.3": +"@babel/parser@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.3.tgz#790874091d2001c9be6ec426c2eed47bc7679081" integrity sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ== -"@babel/plugin-proposal-async-generator-functions@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" - integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== +"@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558" + integrity sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/plugin-proposal-dynamic-import@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" - integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" + integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/plugin-proposal-json-strings@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" - integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== +"@babel/plugin-proposal-json-strings@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" + integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-object-rest-spread@^7.7.7": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" - integrity sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" + integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" + integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.9.6": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" + integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.10.4" -"@babel/plugin-proposal-optional-catch-binding@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" - integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== +"@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" + integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-unicode-property-regex@^7.7.7": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz#b646c3adea5f98800c9ab45105ac34d06cd4a47f" - integrity sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ== +"@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz#750f1255e930a1f82d8cdde45031f81a0d0adff7" + integrity sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-syntax-async-generators@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz#331aaf310a10c80c44a66b238b6e49132bd3c889" - integrity sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g== +"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" + integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-async-generators@^7.8.0": version "7.8.4" @@ -598,13 +725,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-dynamic-import@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz#29ca3b4415abfe4a5ec381e903862ad1a54c3aec" - integrity sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-dynamic-import@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" @@ -612,13 +732,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-json-strings@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz#86e63f7d2e22f9e27129ac4e83ea989a382e86cc" - integrity sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" @@ -626,12 +739,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-object-rest-spread@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz#47cf220d19d6d0d7b154304701f468fc1cc6ff46" - integrity sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg== +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.0": version "7.8.3" @@ -640,13 +760,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz#a3e38f59f4b6233867b4a92dcb0ee05b2c334aa6" - integrity sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" @@ -654,323 +767,381 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.7.4": +"@babel/plugin-syntax-optional-chaining@^7.8.0": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" - integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-arrow-functions@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" - integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" + integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-async-to-generator@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" - integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== +"@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" + integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-block-scoped-functions@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" - integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== +"@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" + integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" -"@babel/plugin-transform-block-scoping@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" - integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== +"@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" + integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - lodash "^4.17.13" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-classes@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz#46fd7a9d2bb9ea89ce88720477979fe0d71b21b8" - integrity sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w== +"@babel/plugin-transform-block-scoping@^7.8.3": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.5.tgz#b81b8aafefbfe68f0f65f7ef397b9ece68a6037d" + integrity sha512-6Ycw3hjpQti0qssQcA6AMSFDHeNJ++R6dIMnpRqUjFeBBTmTDPa8zgF90OVfTvAo11mXZTlVUViY1g8ffrURLg== dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-define-map" "^7.8.3" - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-classes@^7.9.5": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" + integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" - integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== +"@babel/plugin-transform-computed-properties@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" + integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-destructuring@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz#20ddfbd9e4676906b1056ee60af88590cc7aaa0b" - integrity sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ== +"@babel/plugin-transform-destructuring@^7.9.5": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" + integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-dotall-regex@^7.7.7": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" - integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== +"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" + integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-duplicate-keys@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" - integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" + integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-exponentiation-operator@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" - integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== +"@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" + integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-for-of@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.3.tgz#15f17bce2fc95c7d59a24b299e83e81cedc22e18" - integrity sha512-ZjXznLNTxhpf4Q5q3x1NsngzGA38t9naWH8Gt+0qYZEJAcvPI9waSStSh56u19Ofjr7QmD0wUsQ8hw8s/p1VnA== +"@babel/plugin-transform-for-of@^7.9.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" + integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-function-name@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" - integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== +"@babel/plugin-transform-function-name@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" + integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-literals@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" - integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== +"@babel/plugin-transform-literals@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" + integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" - integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== +"@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" + integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-amd@^7.7.5": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz#65606d44616b50225e76f5578f33c568a0b876a5" - integrity sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ== +"@babel/plugin-transform-modules-amd@^7.9.6": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1" + integrity sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw== dependencies: - "@babel/helper-module-transforms" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.7.5": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz#df251706ec331bd058a34bdd72613915f82928a5" - integrity sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg== +"@babel/plugin-transform-modules-commonjs@^7.9.6": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" + integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== dependencies: - "@babel/helper-module-transforms" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-simple-access" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz#d8bbf222c1dbe3661f440f2f00c16e9bb7d0d420" - integrity sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg== +"@babel/plugin-transform-modules-systemjs@^7.9.6": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz#6270099c854066681bae9e05f87e1b9cadbe8c85" + integrity sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw== dependencies: - "@babel/helper-hoist-variables" "^7.8.3" - "@babel/helper-module-transforms" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz#592d578ce06c52f5b98b02f913d653ffe972661a" - integrity sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw== +"@babel/plugin-transform-modules-umd@^7.9.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" + integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== dependencies: - "@babel/helper-module-transforms" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-named-capturing-groups-regex@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" - integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" + integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-create-regexp-features-plugin" "^7.10.4" -"@babel/plugin-transform-new-target@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" - integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== +"@babel/plugin-transform-new-target@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" + integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-object-super@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" - integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== +"@babel/plugin-transform-object-super@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" + integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" -"@babel/plugin-transform-parameters@^7.7.7": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.3.tgz#7890576a13b17325d8b7d44cb37f21dc3bbdda59" - integrity sha512-/pqngtGb54JwMBZ6S/D3XYylQDFtGjWrnoCF4gXZOUpFV/ujbxnoNGNvDGu6doFWRPBveE72qTx/RRU44j5I/Q== +"@babel/plugin-transform-parameters@^7.10.4", "@babel/plugin-transform-parameters@^7.9.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz#59d339d58d0b1950435f4043e74e2510005e2c4a" + integrity sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw== dependencies: - "@babel/helper-call-delegate" "^7.8.3" - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-property-literals@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" - integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== +"@babel/plugin-transform-property-literals@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" + integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-regenerator@^7.7.5": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz#b31031e8059c07495bf23614c97f3d9698bc6ec8" - integrity sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA== +"@babel/plugin-transform-regenerator@^7.8.7": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" + integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== dependencies: - regenerator-transform "^0.14.0" + regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" - integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" + integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-shorthand-properties@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" - integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== +"@babel/plugin-transform-runtime@7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.6.tgz#3ba804438ad0d880a17bca5eaa0cdf1edeedb2fd" + integrity sha512-qcmiECD0mYOjOIt8YHNsAP1SxPooC/rDmfmiSK9BNY72EitdSc7l44WTEklaWuFtbOEBjNhWWyph/kOImbNJ4w== dependencies: + "@babel/helper-module-imports" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" + resolve "^1.8.1" + semver "^5.5.1" -"@babel/plugin-transform-spread@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" - integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== +"@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" + integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-sticky-regex@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" - integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== +"@babel/plugin-transform-spread@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz#4e2c85ea0d6abaee1b24dcfbbae426fe8d674cff" + integrity sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-regex" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-template-literals@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" - integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== +"@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" + integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-regex" "^7.10.4" -"@babel/plugin-transform-typeof-symbol@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.3.tgz#5cffb216fb25c8c64ba6bf5f76ce49d3ab079f4d" - integrity sha512-3TrkKd4LPqm4jHs6nPtSDI/SV9Cm5PRJkHLUgTcqRQQTMAZ44ZaAdDZJtvWFSaRcvT0a1rTmJ5ZA5tDKjleF3g== +"@babel/plugin-transform-template-literals@^7.8.3": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz#78bc5d626a6642db3312d9d0f001f5e7639fde8c" + integrity sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-unicode-regex@^7.7.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" - integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" + integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/preset-env@7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.7.tgz#c294167b91e53e7e36d820e943ece8d0c7fe46ac" - integrity sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg== +"@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" + integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== dependencies: - "@babel/helper-module-imports" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.7.4" - "@babel/plugin-proposal-dynamic-import" "^7.7.4" - "@babel/plugin-proposal-json-strings" "^7.7.4" - "@babel/plugin-proposal-object-rest-spread" "^7.7.7" - "@babel/plugin-proposal-optional-catch-binding" "^7.7.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.7.7" - "@babel/plugin-syntax-async-generators" "^7.7.4" - "@babel/plugin-syntax-dynamic-import" "^7.7.4" - "@babel/plugin-syntax-json-strings" "^7.7.4" - "@babel/plugin-syntax-object-rest-spread" "^7.7.4" - "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" - "@babel/plugin-syntax-top-level-await" "^7.7.4" - "@babel/plugin-transform-arrow-functions" "^7.7.4" - "@babel/plugin-transform-async-to-generator" "^7.7.4" - "@babel/plugin-transform-block-scoped-functions" "^7.7.4" - "@babel/plugin-transform-block-scoping" "^7.7.4" - "@babel/plugin-transform-classes" "^7.7.4" - "@babel/plugin-transform-computed-properties" "^7.7.4" - "@babel/plugin-transform-destructuring" "^7.7.4" - "@babel/plugin-transform-dotall-regex" "^7.7.7" - "@babel/plugin-transform-duplicate-keys" "^7.7.4" - "@babel/plugin-transform-exponentiation-operator" "^7.7.4" - "@babel/plugin-transform-for-of" "^7.7.4" - "@babel/plugin-transform-function-name" "^7.7.4" - "@babel/plugin-transform-literals" "^7.7.4" - "@babel/plugin-transform-member-expression-literals" "^7.7.4" - "@babel/plugin-transform-modules-amd" "^7.7.5" - "@babel/plugin-transform-modules-commonjs" "^7.7.5" - "@babel/plugin-transform-modules-systemjs" "^7.7.4" - "@babel/plugin-transform-modules-umd" "^7.7.4" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.7.4" - "@babel/plugin-transform-new-target" "^7.7.4" - "@babel/plugin-transform-object-super" "^7.7.4" - "@babel/plugin-transform-parameters" "^7.7.7" - "@babel/plugin-transform-property-literals" "^7.7.4" - "@babel/plugin-transform-regenerator" "^7.7.5" - "@babel/plugin-transform-reserved-words" "^7.7.4" - "@babel/plugin-transform-shorthand-properties" "^7.7.4" - "@babel/plugin-transform-spread" "^7.7.4" - "@babel/plugin-transform-sticky-regex" "^7.7.4" - "@babel/plugin-transform-template-literals" "^7.7.4" - "@babel/plugin-transform-typeof-symbol" "^7.7.4" - "@babel/plugin-transform-unicode-regex" "^7.7.4" - "@babel/types" "^7.7.4" - browserslist "^4.6.0" - core-js-compat "^3.6.0" + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.6.tgz#df063b276c6455ec6fcfc6e53aacc38da9b0aea6" + integrity sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ== + dependencies: + "@babel/compat-data" "^7.9.6" + "@babel/helper-compilation-targets" "^7.9.6" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.6" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.5" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.9.5" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.6" + "@babel/plugin-transform-modules-commonjs" "^7.9.6" + "@babel/plugin-transform-modules-systemjs" "^7.9.6" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.9.5" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.6" + browserslist "^4.11.1" + core-js-compat "^3.6.2" invariant "^2.2.2" - js-levenshtein "^1.1.3" + levenary "^1.1.1" semver "^5.5.0" -"@babel/template@^7.4.0", "@babel/template@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b" - integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw== +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/runtime@7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" + integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.8.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.5.tgz#303d8bd440ecd5a491eae6117fd3367698674c5c" + integrity sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/template@^7.10.4", "@babel/template@^7.8.6": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" "@babel/template@^7.8.3": version "7.8.3" @@ -981,20 +1152,20 @@ "@babel/parser" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/traverse@^7.4.3", "@babel/traverse@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558" - integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.4" - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-split-export-declaration" "^7.7.4" - "@babel/parser" "^7.7.4" - "@babel/types" "^7.7.4" +"@babel/traverse@^7.10.4", "@babel/traverse@^7.9.6": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.5.tgz#77ce464f5b258be265af618d8fddf0536f20b564" + integrity sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.5" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/parser" "^7.10.5" + "@babel/types" "^7.10.5" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.13" + lodash "^4.17.19" "@babel/traverse@^7.8.3": version "7.8.3" @@ -1011,13 +1182,13 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.4.0", "@babel/types@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193" - integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA== +"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.4.4", "@babel/types@^7.8.6", "@babel/types@^7.9.6": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.5.tgz#d88ae7e2fde86bfbfe851d4d81afa70a997b5d15" + integrity sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q== dependencies: - esutils "^2.0.2" - lodash "^4.17.13" + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" to-fast-properties "^2.0.0" "@babel/types@^7.8.3": @@ -1049,23 +1220,64 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@ngtools/webpack@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-9.0.1.tgz#36fff5b269959b37eee4c23c8c22bd7686aa4860" - integrity sha512-SG1MDVSC7pIuaX1QYTh94k/YJa6w2OR2RNbghkDXToDzDv6bKnTQYoJPyXk+gwfDTVD4V5z2dKSNbxFzWleFpg== +"@jsdevtools/coverage-istanbul-loader@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.3.tgz#102e414b02ae2f0b3c7fd45a705601e1fd4867c5" + integrity sha512-TAdNkeGB5Fe4Og+ZkAr1Kvn9by2sfL44IAHFtxlh1BA1XJ5cLpO9iSNki5opWESv3l3vSHsZ9BNKuqFKbEbFaA== dependencies: - "@angular-devkit/core" "9.0.1" + convert-source-map "^1.7.0" + istanbul-lib-instrument "^4.0.1" + loader-utils "^1.4.0" + merge-source-map "^1.1.0" + schema-utils "^2.6.4" + +"@ngtools/webpack@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-10.0.3.tgz#2f8b2674108f7c36ffcdfc9e9aa024abfe3c7e04" + integrity sha512-0TuvYMCLtsApLtCHXeDBYGEoAQXzsRLpgFxPM5W7CGcj0ecthZO4NYrMAt+J8ky//KmbxqQSFHWmss2cbirIPA== + dependencies: + "@angular-devkit/core" "10.0.3" enhanced-resolve "4.1.1" - rxjs "6.5.3" + rxjs "6.5.5" webpack-sources "1.4.3" -"@rollup/plugin-commonjs@^11.0.2": - version "11.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-11.0.2.tgz#837cc6950752327cb90177b608f0928a4e60b582" - integrity sha512-MPYGZr0qdbV5zZj8/2AuomVpnRVXRU5XKXb3HVniwRoRCreGlf5kOE081isNWeiLIi6IYkwTX9zE0/c7V8g81g== +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== + dependencies: + "@nodelib/fs.stat" "2.0.3" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + dependencies: + "@nodelib/fs.scandir" "2.1.3" + fastq "^1.6.0" + +"@npmcli/move-file@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" + integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== + dependencies: + mkdirp "^1.0.4" + +"@rollup/plugin-commonjs@^14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-14.0.0.tgz#4285f9ec2db686a31129e5a2b415c94aa1f836f0" + integrity sha512-+PSmD9ePwTAeU106i9FRdc+Zb3XUWyW26mo5Atr2mk82hor8+nPwkztEjFo8/B1fJKfaQDg9aM2bzQkjhi7zOw== dependencies: - "@rollup/pluginutils" "^3.0.0" + "@rollup/pluginutils" "^3.0.8" + commondir "^1.0.1" estree-walker "^1.0.1" + glob "^7.1.2" is-reference "^1.1.2" magic-string "^0.25.2" resolve "^1.11.0" @@ -1077,45 +1289,56 @@ dependencies: "@rollup/pluginutils" "^3.0.4" -"@rollup/plugin-node-resolve@^7.1.0": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.1.tgz#8c6e59c4b28baf9d223028d0e450e06a485bb2b7" - integrity sha512-14ddhD7TnemeHE97a4rLOhobfYvUVcaYuqTnL8Ti7Jxi9V9Jr5LY7Gko4HZ5k4h4vqQM0gBQt6tsp9xXW94WPA== +"@rollup/plugin-node-resolve@^8.0.0": + version "8.4.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz#261d79a680e9dc3d86761c14462f24126ba83575" + integrity sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ== dependencies: - "@rollup/pluginutils" "^3.0.6" - "@types/resolve" "0.0.8" + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" builtin-modules "^3.1.0" + deep-freeze "^0.0.1" + deepmerge "^4.2.2" is-module "^1.0.0" - resolve "^1.14.2" + resolve "^1.17.0" -"@rollup/pluginutils@^3.0.0", "@rollup/pluginutils@^3.0.1", "@rollup/pluginutils@^3.0.4", "@rollup/pluginutils@^3.0.6": +"@rollup/pluginutils@^3.0.4": version "3.0.8" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.0.8.tgz#4e94d128d94b90699e517ef045422960d18c8fde" integrity sha512-rYGeAc4sxcZ+kPG/Tw4/fwJODC3IXHYDH4qusdN/b6aLw5LPUbzpecYbEJh4sVQGPFJxd2dBU4kc1H3oy9/bnw== dependencies: estree-walker "^1.0.1" -"@schematics/angular@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-9.0.1.tgz#1b08c938da4dcee2472b4641f3cbc906d6eb88af" - integrity sha512-lQ8Qc697ef2jvEf1+tElAUsbOnbUAMo3dnOUVw9RlYO90pHeG3/OdWBMH1kjn3jbjuKuvCVZH3voJUUcLDx6eg== +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.0.9", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== dependencies: - "@angular-devkit/core" "9.0.1" - "@angular-devkit/schematics" "9.0.1" + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" -"@schematics/update@0.900.1": - version "0.900.1" - resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.900.1.tgz#4923be88b94b5db0b04cd2c7f3e75e67a4a13688" - integrity sha512-p2xfctTtT5kMAaCTBENxi69m5IhsvdTwwwokb9zVHJYAC6D1K//q1bl30mTe6U2YE3hSPWND2S14ahXw8PyN8g== +"@schematics/angular@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-10.0.3.tgz#a4d54389918a7f9c82345d4f639d930f22b62c6b" + integrity sha512-Or2pCqjpPbAvmbxtfMosGwQbNbSL4xodK5Key7678ZAPGB+rcxrVkBI9yxEJ/qzF/LrmMoKqy0JCmVLK7Grpog== dependencies: - "@angular-devkit/core" "9.0.1" - "@angular-devkit/schematics" "9.0.1" + "@angular-devkit/core" "10.0.3" + "@angular-devkit/schematics" "10.0.3" + +"@schematics/update@0.1000.3": + version "0.1000.3" + resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.1000.3.tgz#d361f23ae49cd3ac9b547b6f4c2470d7ca86aabd" + integrity sha512-Nncdklmzi1tyzkoAh7GlSslxriRhftlmfqPVmFHrrPRttYACtT/QH5qcWsrPgTPpHGINYEHrPjpeljsMoMchBQ== + dependencies: + "@angular-devkit/core" "10.0.3" + "@angular-devkit/schematics" "10.0.3" "@yarnpkg/lockfile" "1.1.0" ini "1.3.5" - npm-package-arg "^7.0.0" - pacote "9.5.8" - rxjs "6.5.3" - semver "6.3.0" + npm-package-arg "^8.0.0" + pacote "9.5.12" + rxjs "6.5.5" + semver "7.3.2" semver-intersect "1.4.0" "@sindresorhus/is@^0.14.0": @@ -1135,11 +1358,6 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== -"@types/estree@*": - version "0.0.41" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.41.tgz#fd90754150b57432b72bf560530500597ff04421" - integrity sha512-rIAmXyJlqw4KEBO7+u9gxZZSQHaCNnIzYrnNmYVpgfJhxTqO0brCX0SYpqUTkVI5mwwUwzmtspLBGBKroMeynA== - "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" @@ -1176,6 +1394,11 @@ dependencies: "@types/jasmine" "*" +"@types/json-schema@^7.0.4": + version "7.0.5" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" + integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -1206,10 +1429,10 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" @@ -1232,150 +1455,149 @@ "@types/source-list-map" "*" source-map "^0.6.1" -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== - -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== - -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== - -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== - dependencies: - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== - -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== - dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" - -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== - -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== - -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" "@xtuc/ieee754@^1.2.0": @@ -1401,6 +1623,11 @@ JSONStream@^1.3.4: jsonparse "^1.2.0" through ">=2.2.7 <3" +abab@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -1409,15 +1636,21 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn@^6.2.1: - version "6.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" - integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== +acorn@^6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== -acorn@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" - integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== +adjust-sourcemap-loader@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" + integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== + dependencies: + assert "1.4.1" + camelcase "5.0.0" + loader-utils "1.2.3" + object-path "0.11.4" + regex-parser "2.2.10" adm-zip@^0.4.9: version "0.4.13" @@ -1478,6 +1711,26 @@ ajv@6.10.2, ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@6.12.2: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^6.12.2: + version "6.12.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" + integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + alphanum-sort@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" @@ -1544,14 +1797,14 @@ ansi-styles@^2.2.1: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= -ansi-styles@^3.2.1: +ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== @@ -1575,17 +1828,10 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -app-root-path@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.2.1.tgz#d0df4a682ee408273583d43f6f79e9892624bc9a" - integrity sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA== - -append-transform@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" - integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw== - dependencies: - default-require-extensions "^2.0.0" +app-root-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.0.0.tgz#210b6f43873227e18a4b810a032283311555d5ad" + integrity sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw== aproba@^1.1.1: version "1.2.0" @@ -1607,6 +1853,11 @@ aria-query@^3.0.0: ast-types-flow "0.0.7" commander "^2.11.0" +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" + integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -1639,6 +1890,11 @@ array-union@^1.0.1: dependencies: array-uniq "^1.0.1" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -1685,6 +1941,13 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +assert@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= + dependencies: + util "0.10.3" + assert@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" @@ -1713,7 +1976,7 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async@^2.5.0, async@^2.6.2: +async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== @@ -1725,23 +1988,28 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@9.7.1: - version "9.7.1" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.1.tgz#9ffc44c55f5ca89253d9bb7186cefb01ef57747f" - integrity sha512-w3b5y1PXWlhYulevrTJ0lizkQ5CyqfeU6BIRDbuhsMupstHQOeb1Ur80tcB1zxSu7AwyY/qCQ7Vvqklh31ZBFw== +autoprefixer@9.8.0: + version "9.8.0" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.0.tgz#68e2d2bef7ba4c3a65436f662d0a56a741e56511" + integrity sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A== dependencies: - browserslist "^4.7.2" - caniuse-lite "^1.0.30001006" + browserslist "^4.12.0" + caniuse-lite "^1.0.30001061" chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.21" - postcss-value-parser "^4.0.2" + postcss "^7.0.30" + postcss-value-parser "^4.1.0" autoprefixer@^9.6.5: version "9.7.4" @@ -1773,29 +2041,21 @@ axobject-query@2.0.2: dependencies: ast-types-flow "0.0.7" -babel-code-frame@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-loader@8.0.6: - version "8.0.6" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" - integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== +babel-loader@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== dependencies: - find-cache-dir "^2.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" pify "^4.0.1" + schema-utils "^2.6.5" -babel-plugin-dynamic-import-node@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" - integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== dependencies: object.assign "^4.1.0" @@ -1819,10 +2079,10 @@ base64-js@^1.0.2: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= +base64id@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== base@^0.11.1: version "0.11.2" @@ -1895,7 +2155,7 @@ blocking-proxy@^1.0.0: dependencies: minimist "^1.2.0" -bluebird@^3.3.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: +bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -1905,7 +2165,7 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== -body-parser@1.19.0, body-parser@^1.16.1: +body-parser@1.19.0, body-parser@^1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== @@ -1989,7 +2249,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@~3.0.2: +braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -2060,15 +2320,6 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.8.3: - version "4.8.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.3.tgz#65802fcd77177c878e015f0e3189f2c4f627ba44" - integrity sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg== - dependencies: - caniuse-lite "^1.0.30001017" - electron-to-chromium "^1.3.322" - node-releases "^1.1.44" - browserslist@^4.0.0, browserslist@^4.8.3: version "4.8.5" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.5.tgz#691af4e327ac877b25e7a3f7ee869c4ef36cdea3" @@ -2078,14 +2329,15 @@ browserslist@^4.0.0, browserslist@^4.8.3: electron-to-chromium "^1.3.338" node-releases "^1.1.46" -browserslist@^4.6.0, browserslist@^4.7.2: - version "4.8.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.2.tgz#b45720ad5fbc8713b7253c20766f701c9a694289" - integrity sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA== +browserslist@^4.11.1, browserslist@^4.12.0, browserslist@^4.8.5, browserslist@^4.9.1: + version "4.13.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.13.0.tgz#42556cba011e1b0a2775b611cba6a8eca18e940d" + integrity sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ== dependencies: - caniuse-lite "^1.0.30001015" - electron-to-chromium "^1.3.322" - node-releases "^1.1.42" + caniuse-lite "^1.0.30001093" + electron-to-chromium "^1.3.488" + escalade "^3.0.1" + node-releases "^1.1.58" browserslist@^4.7.0: version "4.8.6" @@ -2103,24 +2355,6 @@ browserstack@^1.5.1: dependencies: https-proxy-agent "^2.2.1" -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - buffer-from@^1.0.0, buffer-from@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -2175,31 +2409,30 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@13.0.1, cacache@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" - integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== +cacache@15.0.3: + version "15.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.3.tgz#2225c2d1dd8e872339950d6a39c051e0e9334392" + integrity sha512-bc3jKYjqv7k4pWh7I/ixIjfcjPul4V4jme/WbjvwGS5LzoPL/GzXr4C5EgPNLO/QEZl9Oi61iGitYEdwcrwLCQ== dependencies: - chownr "^1.1.2" - figgy-pudding "^3.5.1" + chownr "^2.0.0" fs-minipass "^2.0.0" glob "^7.1.4" - graceful-fs "^4.2.2" infer-owner "^1.0.4" lru-cache "^5.1.1" - minipass "^3.0.0" + minipass "^3.1.1" minipass-collect "^1.0.2" minipass-flush "^1.0.5" minipass-pipeline "^1.2.2" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - p-map "^3.0.0" + mkdirp "^1.0.3" + move-file "^2.0.0" + p-map "^4.0.0" promise-inflight "^1.0.1" - rimraf "^2.7.1" - ssri "^7.0.0" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" unique-filename "^1.1.1" -cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: +cacache@^12.0.0, cacache@^12.0.2: version "12.0.3" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== @@ -2220,6 +2453,29 @@ cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^15.0.3, cacache@^15.0.4: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" + unique-filename "^1.1.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2280,16 +2536,21 @@ camel-case@3.0.x: no-case "^2.2.0" upper-case "^1.1.1" -camelcase@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -2300,26 +2561,21 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@1.0.30001020: - version "1.0.30001020" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001020.tgz#3f04c1737500ffda78be9beb0b5c1e2070e15926" - integrity sha512-yWIvwA68wRHKanAVS1GjN8vajAv7MBFshullKCeq/eKpK7pJBVDgFFEqvgWTkcP2+wIDeQGYFRXECjKZnLkUjA== - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001017, caniuse-lite@^1.0.30001022: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001022: version "1.0.30001023" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001023.tgz#b82155827f3f5009077bdd2df3d8968bcbcc6fc4" integrity sha512-C5TDMiYG11EOhVOA62W1p3UsJ2z4DsHtMBQtjzp3ZsUglcQn62WOUgW0y795c7A5uZ+GCEIvzkMatLIlAsbNTA== -caniuse-lite@^1.0.30001006, caniuse-lite@^1.0.30001015: - version "1.0.30001017" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001017.tgz#d3ad6ec18148b9bd991829958d9d7e562bb78cd6" - integrity sha512-EDnZyOJ6eYh6lHmCvCdHAFbfV4KJ9lSdfv4h/ppEhrU/Yudkl7jujwMZ1we6RX7DXqBfT04pVMQ4J+1wcTlsKA== - caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001023: version "1.0.30001027" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001027.tgz#283e2ef17d94889cc216a22c6f85303d78ca852d" integrity sha512-7xvKeErvXZFtUItTHgNtLgS9RJpVnwBlWX8jSo/BO8VsF6deszemZSkJJJA1KOKrXuzZH4WALpAJdq5EyfgMLg== +caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001061, caniuse-lite@^1.0.30001093: + version "1.0.30001104" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001104.tgz#4e3d5b3b1dd3c3529f10cb7f519c62ba3e579f5d" + integrity sha512-pkpCg7dmI/a7WcqM2yfdOiT4Xx5tzyoHAXWsX5/HxZ3TemwDZs0QXdqbE0UPLPVy/7BeK7693YfzfRYfu1YVpg== + canonical-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/canonical-path/-/canonical-path-1.0.0.tgz#fcb470c23958def85081856be7a86e904f180d1d" @@ -2363,6 +2619,14 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -2383,7 +2647,7 @@ chardet@^0.7.0: optionalDependencies: fsevents "~2.1.2" -chokidar@^2.0.2, chokidar@^2.0.3, chokidar@^2.1.8: +chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -2402,11 +2666,31 @@ chokidar@^2.0.2, chokidar@^2.0.3, chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" +chokidar@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.1.tgz#e905bdecf10eaa0a0b1db0c664481cc4cbc22ba1" + integrity sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" + chownr@^1.1.1, chownr@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" @@ -2454,13 +2738,6 @@ clean-css@4.2.x: dependencies: source-map "~0.6.0" -clean-css@^4.1.11: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -2493,14 +2770,23 @@ cli-width@^2.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" clone-deep@^4.0.1: version "4.0.1" @@ -2523,7 +2809,7 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -clone@^2.1.1, clone@^2.1.2: +clone@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= @@ -2537,25 +2823,25 @@ coa@^2.0.2: chalk "^2.4.1" 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" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -codelyzer@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-5.2.1.tgz#44fd431e128009f38c761828c33ebacba9549d32" - integrity sha512-awBZXFcJUyC5HMYXiHzjr3D24tww2l1D1OqtfA9vUhEtYr32a65A+Gblm/OvsO+HuKLYzn8EDMw1inSM3VbxWA== +codelyzer@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-6.0.0.tgz#50c98581cc2890e0e9a9f93878dc317115d836ed" + integrity sha512-edJIQCIcxD9DhVSyBEdJ38AbLikm515Wl91t5RDGNT88uA6uQdTm4phTWfn9JhzAI8kXNUcfYyAE90lJElpGtA== dependencies: - app-root-path "^2.2.1" + "@angular/compiler" "9.0.0" + "@angular/core" "9.0.0" + app-root-path "^3.0.0" aria-query "^3.0.0" axobject-query "2.0.2" css-selector-tokenizer "^0.7.1" cssauron "^1.4.0" damerau-levenshtein "^1.0.4" + rxjs "^6.5.3" semver-dsl "^1.0.1" source-map "^0.5.7" sprintf-js "^1.1.2" + tslib "^1.10.0" + zone.js "~0.10.3" collection-visit@^1.0.0: version "1.0.0" @@ -2605,12 +2891,7 @@ color@^3.0.0: color-convert "^1.9.1" color-string "^1.5.2" -colors@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= - -colors@^1.1.0: +colors@1.4.0, colors@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -2627,15 +2908,15 @@ commander@2.17.x: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@^2.11.0, commander@^2.12.1, commander@^2.20.0, commander@~2.20.3: +commander@^2.11.0, commander@^2.12.1, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== commander@~2.19.0: version "2.19.0" @@ -2647,11 +2928,6 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= -compare-versions@^3.4.0: - version "3.5.1" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.5.1.tgz#26e1f5cf0d48a77eced5046b9f67b6b61075a393" - integrity sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg== - component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -2662,7 +2938,7 @@ component-emitter@1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= -component-emitter@^1.2.1: +component-emitter@^1.2.1, component-emitter@~1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== @@ -2672,6 +2948,13 @@ component-inherit@0.0.3: resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= +compose-function@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" + integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= + dependencies: + arity-n "^1.0.4" + compressible@~2.0.16: version "2.0.17" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" @@ -2736,7 +3019,7 @@ connect-history-api-fallback@^1.6.0: resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== -connect@^3.6.0: +connect@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== @@ -2768,13 +3051,18 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.5.1, convert-source-map@^1.7.0: +convert-source-map@1.7.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -2807,41 +3095,35 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-webpack-plugin@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" - integrity sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg== - dependencies: - cacache "^12.0.3" - find-cache-dir "^2.1.0" - glob-parent "^3.1.0" - globby "^7.1.1" - is-glob "^4.0.1" - loader-utils "^1.2.3" - minimatch "^3.0.4" +copy-webpack-plugin@6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.0.3.tgz#2b3d2bfc6861b96432a65f0149720adbd902040b" + integrity sha512-q5m6Vz4elsuyVEIUXr7wJdIdePWTubsqVbEMvf1WQnHGv0Q+9yPRu7MtYFPt+GBOXRav9lvIINifTQ1vSCs+eA== + dependencies: + cacache "^15.0.4" + fast-glob "^3.2.4" + find-cache-dir "^3.3.1" + glob-parent "^5.1.1" + globby "^11.0.1" + loader-utils "^2.0.0" normalize-path "^3.0.0" - p-limit "^2.2.1" - schema-utils "^1.0.0" - serialize-javascript "^2.1.2" - webpack-log "^2.0.0" + p-limit "^3.0.1" + schema-utils "^2.7.0" + serialize-javascript "^4.0.0" + webpack-sources "^1.4.3" -core-js-compat@^3.6.0: - version "3.6.4" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" - integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== +core-js-compat@^3.6.2: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== dependencies: - browserslist "^4.8.3" + browserslist "^4.8.5" semver "7.0.0" -core-js@3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.0.tgz#2b854e451de1967d1e29896025cdc13a2518d9ea" - integrity sha512-AHPTNKzyB+YwgDWoSOCaid9PUSEF6781vsfiK8qUz62zRR448/XgK2NtCbpiUGizbep8Lrpt0Du19PpGGZvw3Q== - -core-js@^2.2.0: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== +core-js@3.6.4: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" + integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -2858,17 +3140,6 @@ cosmiconfig@^5.0.0: js-yaml "^3.13.1" parse-json "^4.0.0" -coverage-istanbul-loader@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/coverage-istanbul-loader/-/coverage-istanbul-loader-2.0.3.tgz#87d42f03fa0fd3fa8743ec76945d9d67f105722a" - integrity sha512-LiGRvyIuzVYs3M1ZYK1tF0HekjH0DJ8zFdUwAZq378EJzqOgToyb1690dp3TAUlP6Y+82uu42LRjuROVeJ54CA== - dependencies: - convert-source-map "^1.7.0" - istanbul-lib-instrument "^4.0.0" - loader-utils "^1.2.3" - merge-source-map "^1.1.0" - schema-utils "^2.6.1" - create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -2967,6 +3238,25 @@ css-declaration-sorter@^4.0.1: postcss "^7.0.1" timsort "^0.3.0" +css-loader@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.5.3.tgz#95ac16468e1adcd95c844729e0bb167639eb0bcf" + integrity sha512-UEr9NH5Lmi7+dguAm+/JSPovNjYbm2k3TK58EiwQHzOHH5Jfq1Y+XoP2bQO6TMn7PptMd0opxxedAWcaSTRKHw== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.27" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.3" + schema-utils "^2.6.6" + semver "^6.3.0" + css-parse@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-2.0.0.tgz#a468ee667c16d81ccf05c58c38d2a97c780dbfd4" @@ -3058,6 +3348,11 @@ cssesc@^2.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + cssnano-preset-default@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" @@ -3148,6 +3443,14 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + damerau-levenshtein@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz#780cf7144eb2e8dbd1c3bb83ae31100ccc31a414" @@ -3160,11 +3463,25 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -date-format@^2.0.0: +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +date-format@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/date-format/-/date-format-2.1.0.tgz#31d5b5ea211cf5fd764cd38baf9d033df7e125cf" integrity sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA== +date-format@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-3.0.0.tgz#eb8780365c7d2b1511078fb491e6479780f3ad95" + integrity sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w== + debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3179,20 +3496,20 @@ debug@3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1: +debug@4.1.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" +debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -3232,6 +3549,16 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +deep-freeze@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deep-freeze/-/deep-freeze-0.0.1.tgz#3a0b0005de18672819dfd38cd31f91179c893e84" + integrity sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ= + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + default-gateway@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" @@ -3240,13 +3567,6 @@ default-gateway@^4.2.0: execa "^1.0.0" ip-regex "^2.1.0" -default-require-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" - integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc= - dependencies: - strip-bom "^3.0.0" - defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -3360,11 +3680,16 @@ di@^0.0.1: resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= -diff@^3.1.0, diff@^3.2.0: +diff@^3.1.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -3374,12 +3699,12 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -dir-glob@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: - path-type "^3.0.0" + path-type "^4.0.0" dns-equal@^1.0.0: version "1.0.0" @@ -3408,7 +3733,7 @@ dom-converter@^0.2: dependencies: utila "~0.4" -dom-serialize@^2.2.0: +dom-serialize@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= @@ -3506,11 +3831,6 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.322: - version "1.3.322" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" - integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA== - electron-to-chromium@^1.3.338: version "1.3.341" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.341.tgz#ad4c039bf621715a12dd814a95a7d89ec80b092c" @@ -3521,6 +3841,11 @@ electron-to-chromium@^1.3.341: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.349.tgz#663f26a69d348a462df47b4d7ab162a2f29bbcb7" integrity sha512-uEb2zs6EJ6OZIqaMsCSliYVgzE/f7/s1fLWqtvRtHg/v5KBF2xds974fUnyatfxIDgkqzQVwFtam5KExqywx0Q== +electron-to-chromium@^1.3.488: + version "1.3.502" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.502.tgz#6a55e993ef60a01fbdc2152ef5e47ee00c885c98" + integrity sha512-TIeXOaHAvfP7FemGUtAJxStmOc1YFGWFNqdey/4Nk41L9b1nMmDVDGNMIWhZJvOfJxix6Cv5FGEnBK+yvw3UTg== + elliptic@^6.0.0: version "6.5.2" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" @@ -3549,6 +3874,11 @@ emojis-list@^2.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -3568,27 +3898,27 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -engine.io-client@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" - integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== +engine.io-client@~3.4.0: + version "3.4.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.3.tgz#192d09865403e3097e3575ebfeb3861c4d01a66c" + integrity sha512-0NGY+9hioejTEJCaSJZfWZLk4FPI9dN+1H1C4+wj2iuFba47UgZbJzfWs4aNFajnX/qAaYKbe2lLTfEEWzCmcw== dependencies: - component-emitter "1.2.1" + component-emitter "~1.3.0" component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.1.1" + debug "~4.1.0" + engine.io-parser "~2.2.0" has-cors "1.1.0" indexof "0.0.1" parseqs "0.0.5" parseuri "0.0.5" - ws "~3.3.1" + ws "~6.1.0" xmlhttprequest-ssl "~1.5.4" yeast "0.1.2" -engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6" - integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA== +engine.io-parser@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.0.tgz#312c4894f57d52a02b420868da7b5c1c84af80ed" + integrity sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w== dependencies: after "0.8.2" arraybuffer.slice "~0.0.7" @@ -3596,17 +3926,17 @@ engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: blob "0.0.5" has-binary2 "~1.0.2" -engine.io@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" - integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== +engine.io@~3.4.0: + version "3.4.2" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.4.2.tgz#8fc84ee00388e3e228645e0a7d3dfaeed5bd122c" + integrity sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg== dependencies: accepts "~1.3.4" - base64id "1.0.0" + base64id "2.0.0" cookie "0.3.1" - debug "~3.1.0" - engine.io-parser "~2.1.0" - ws "~3.3.1" + debug "~4.1.0" + engine.io-parser "~2.2.0" + ws "^7.1.2" enhanced-resolve@4.1.1, enhanced-resolve@^4.1.0: version "4.1.1" @@ -3694,6 +4024,24 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + es6-promise@^4.0.3: version "4.2.8" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" @@ -3706,6 +4054,19 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.2.tgz#6a580d70edb87880f22b4c91d0d56078df6962c4" + integrity sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -3861,6 +4222,13 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -3919,12 +4287,29 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.1.1, fast-glob@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" + integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + fast-json-stable-stringify@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.1.0, fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -3934,6 +4319,13 @@ fastparse@^1.1.1: resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== +fastq@^1.6.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" + integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + dependencies: + reusify "^1.0.4" + faye-websocket@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -3960,27 +4352,19 @@ figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" -file-loader@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.2.0.tgz#5fb124d2369d7075d70a9a5abecd12e60a95215e" - integrity sha512-+xZnaK5R8kBJrHK0/6HRlrKNamvVS5rjyuju+rnyxRGuwUJwpAMsVzUl5dz6rK8brkzjV6JpcFNjp6NqV0g1OQ== +file-loader@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.0.0.tgz#97bbfaab7a2460c07bcbd72d3a6922407f67649f" + integrity sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ== dependencies: - loader-utils "^1.2.3" - schema-utils "^2.0.0" + loader-utils "^2.0.0" + schema-utils "^2.6.5" file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -fileset@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" - integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA= - dependencies: - glob "^7.0.3" - minimatch "^3.0.3" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -4011,16 +4395,16 @@ finalhandler@1.1.2, finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.0.0.tgz#cd4b7dd97b7185b7e17dbfe2d6e4115ee3eeb8fc" - integrity sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw== +find-cache-dir@3.3.1, find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== dependencies: commondir "^1.0.1" - make-dir "^3.0.0" + make-dir "^3.0.2" pkg-dir "^4.1.0" -find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: +find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== @@ -4029,15 +4413,6 @@ find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-cache-dir@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.2.0.tgz#e7fe44c1abc1299f516146e563108fd1006c1874" - integrity sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.0" - pkg-dir "^4.1.0" - find-parent-dir@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" @@ -4050,7 +4425,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -4066,10 +4441,10 @@ find-yarn-workspace-root@^1.2.1: fs-extra "^4.0.3" micromatch "^3.1.4" -flatted@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" - integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== +flatted@^2.0.1, flatted@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== flush-write-stream@^1.0.0: version "1.1.1" @@ -4130,13 +4505,6 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-access@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" - integrity sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o= - dependencies: - null-check "^1.0.0" - fs-extra@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b" @@ -4173,6 +4541,16 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" + integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + fs-minipass@^1.2.5: version "1.2.7" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" @@ -4230,11 +4608,6 @@ gensync@^1.0.0-beta.1: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -4279,6 +4652,13 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob-parent@^5.1.0, glob-parent@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + glob-parent@~5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" @@ -4286,19 +4666,7 @@ glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@7.1.5: - version "7.1.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.5.tgz#6714c69bee20f3c3e64c4dd905553e532b40cdc0" - integrity sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ== - 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" - -glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@7.1.6, glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -4329,6 +4697,18 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globby@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" + integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" @@ -4352,18 +4732,6 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" -globby@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" - integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= - dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -4398,27 +4766,21 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== +graceful-fs@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + handle-thing@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== -handlebars@^4.1.2: - version "4.5.3" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" - integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== - dependencies: - neo-async "^2.6.0" - optimist "^0.6.1" - source-map "^0.6.1" - optionalDependencies: - uglify-js "^3.1.4" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -4581,10 +4943,15 @@ html-comment-regex@^1.1.0: resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== -html-entities@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= +html-entities@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" + integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== html-minifier@^3.2.3: version "3.5.21" @@ -4694,7 +5061,7 @@ http-proxy-middleware@0.19.1: lodash "^4.17.11" micromatch "^3.1.10" -http-proxy@^1.13.0, http-proxy@^1.17.0: +http-proxy@^1.17.0: version "1.18.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" integrity sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ== @@ -4703,6 +5070,15 @@ http-proxy@^1.13.0, http-proxy@^1.17.0: follow-redirects "^1.0.0" requires-port "^1.0.0" +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -4739,6 +5115,20 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.5.2.tgz#af6d628dccfb463b7364d97f715e4b74b8c8c2b8" + integrity sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" @@ -4756,10 +5146,10 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== image-size@~0.5.0: version "0.5.5" @@ -4864,23 +5254,23 @@ injection-js@^2.2.1: resolved "https://registry.yarnpkg.com/injection-js/-/injection-js-2.3.0.tgz#56d807282dfaf2f9663f45373c4206d7793c5dd6" integrity sha512-rhS6E5jv603kbaO72ylOt0hGF1LT03oqQ4GU5KOO0qSaRbIWmdUCHjXq+VT79jL6/NmXtw9ccfK6dh/CzjoYjA== -inquirer@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.0.tgz#9e2b032dde77da1db5db804758b8fea3a970519a" - integrity sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ== +inquirer@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" + integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== dependencies: ansi-escapes "^4.2.1" - chalk "^2.4.2" + chalk "^3.0.0" cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" figures "^3.0.0" lodash "^4.17.15" mute-stream "0.0.8" - run-async "^2.2.0" - rxjs "^6.4.0" + run-async "^2.4.0" + rxjs "^6.5.3" string-width "^4.1.0" - strip-ansi "^5.1.0" + strip-ansi "^6.0.0" through "^2.3.6" internal-ip@^4.3.0: @@ -4891,18 +5281,13 @@ internal-ip@^4.3.0: default-gateway "^4.2.0" ipaddr.js "^1.9.0" -invariant@^2.2.2: +invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -5054,6 +5439,11 @@ is-directory@^0.3.1: resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= +is-docker@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" + integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== + 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" @@ -5071,13 +5461,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -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" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - 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" @@ -5215,11 +5598,6 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= - is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" @@ -5283,10 +5661,12 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is-wsl@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" - integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" is-yarn-global@^0.3.0: version "0.3.0" @@ -5303,12 +5683,10 @@ isarray@2.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= -isbinaryfile@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" - integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== - dependencies: - buffer-alloc "^1.2.0" +isbinaryfile@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" + integrity sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg== isexe@^2.0.0: version "2.0.0" @@ -5332,25 +5710,6 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-api@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-2.1.6.tgz#d61702a9d1c66ad89d92e66d401e16b0bda4a35f" - integrity sha512-x0Eicp6KsShG1k1rMgBAi/1GgY7kFGEBwQpw3PXGEmu+rBcBNhqU8g2DgY9mlepAsLPzrzrbqSgCGANnki4POA== - dependencies: - async "^2.6.2" - compare-versions "^3.4.0" - fileset "^2.0.3" - istanbul-lib-coverage "^2.0.5" - istanbul-lib-hook "^2.0.7" - istanbul-lib-instrument "^3.3.0" - istanbul-lib-report "^2.0.8" - istanbul-lib-source-maps "^3.0.6" - istanbul-reports "^2.2.4" - js-yaml "^3.13.1" - make-dir "^2.1.0" - minimatch "^3.0.4" - once "^1.4.0" - istanbul-lib-coverage@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" @@ -5361,47 +5720,24 @@ istanbul-lib-coverage@^3.0.0: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-hook@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz#c95695f383d4f8f60df1f04252a9550e15b5b133" - integrity sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA== - dependencies: - append-transform "^1.0.0" - -istanbul-lib-instrument@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== - dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" - -istanbul-lib-instrument@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.0.tgz#53321a7970f076262fd3292c8f9b2e4ac544aae1" - integrity sha512-Nm4wVHdo7ZXSG30KjZ2Wl5SU/Bw7bDx1PdaiIFzEStdjs0H12mOTncn1GVYuqQSaZxpg87VGBRsVRPGD2cD1AQ== +istanbul-lib-instrument@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== dependencies: "@babel/core" "^7.7.5" - "@babel/parser" "^7.7.5" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" "@istanbuljs/schema" "^0.1.2" istanbul-lib-coverage "^3.0.0" semver "^6.3.0" -istanbul-lib-report@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" - integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - supports-color "^6.1.0" + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" istanbul-lib-source-maps@^3.0.6: version "3.0.6" @@ -5414,14 +5750,15 @@ istanbul-lib-source-maps@^3.0.6: rimraf "^2.6.3" source-map "^0.6.1" -istanbul-reports@^2.2.4: - version "2.2.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" - integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== dependencies: - handlebars "^4.1.2" + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" -jasmine-core@^3.3: +jasmine-core@^3.5.0, jasmine-core@~3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.5.0.tgz#132c23e645af96d85c8bca13c8758b18429fc1e4" integrity sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA== @@ -5431,17 +5768,12 @@ jasmine-core@~2.8.0: resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= -jasmine-core@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.4.0.tgz#2a74618e966026530c3518f03e9f845d26473ce3" - integrity sha512-HU/YxV4i6GcmiH4duATwAbJQMlE0MsDIR5XmSVxURxKHn3aGAdbY1/ZJFmVRbKtnLwIxxMJD7gYaPsypcbYimg== - -jasmine-spec-reporter@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz#1d632aec0341670ad324f92ba84b4b32b35e9e22" - integrity sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg== +jasmine-spec-reporter@~5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.2.tgz#b61288ab074ad440dc2477c4d42840b0e74a6b95" + integrity sha512-6gP1LbVgJ+d7PKksQBc2H0oDGNRQI3gKUsWlswKaQ2fif9X5gzhQcgM5+kiJGCQVurOG09jqNhk7payggyp5+g== dependencies: - colors "1.1.2" + colors "1.4.0" jasmine@2.8.0: version "2.8.0" @@ -5457,38 +5789,28 @@ jasminewd2@^2.1.0: resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" integrity sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4= -jest-worker@24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== +jest-worker@26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.0.0.tgz#4920c7714f0a96c6412464718d0c58a3df3fb066" + integrity sha512-pPaYa2+JnwmiZjK9x7p9BoZht+47ecFCDFA/CJxspHzeDvQcfVBLWzCiWyo+EGrSiQMWZtCFo9iSvMZnAAo8vw== dependencies: merge-stream "^2.0.0" - supports-color "^6.1.0" + supports-color "^7.0.0" -jest-worker@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.1.0.tgz#75d038bad6fdf58eba0d2ec1835856c497e3907a" - integrity sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg== +jest-worker@^26.0.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.1.0.tgz#65d5641af74e08ccd561c240e7db61284f82f33d" + integrity sha512-Z9P5pZ6UC+kakMbNJn+tA2RdVdNX5WH1x+5UCBZ9MxIK24pjYtFt96fK+UwBTrjLYm232g1xz0L3eTh51OW+yQ== dependencies: merge-stream "^2.0.0" supports-color "^7.0.0" -js-levenshtein@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-yaml@^3.13.0, js-yaml@^3.13.1: +js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -5560,6 +5882,13 @@ json5@^2.1.0: dependencies: minimist "^1.2.0" +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -5567,6 +5896,15 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" + integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + dependencies: + universalify "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" @@ -5592,33 +5930,35 @@ jszip@^3.1.3: readable-stream "~2.3.6" set-immediate-shim "~1.0.1" -karma-chrome-launcher@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" - integrity sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w== +karma-chrome-launcher@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz#805a586799a4d05f4e54f72a204979f3f3066738" + integrity sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg== dependencies: - fs-access "^1.0.0" which "^1.2.1" -karma-coverage-istanbul-reporter@~2.0.1: - version "2.0.6" - resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.0.6.tgz#7b6e9c88781447bb87aa6ac24bf74b93e558adc3" - integrity sha512-WFh77RI8bMIKdOvI/1/IBmgnM+Q7NOLhnwG91QJrM8lW+CIXCjTzhhUsT/svLvAkLmR10uWY4RyYbHMLkTglvg== +karma-coverage-istanbul-reporter@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz#f3b5303553aadc8e681d40d360dfdc19bc7e9fe9" + integrity sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw== dependencies: - istanbul-api "^2.1.6" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^3.0.6" + istanbul-reports "^3.0.2" minimatch "^3.0.4" -karma-jasmine-html-reporter@^1.4.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.1.tgz#0fad2d2ac416bc04724318aad29b89bd86f7bfbc" - integrity sha512-LlLqsoGyxT1981z46BRaC1SaY4pTo4EHCA/qZvJEMQXzTtGMyIlmwtxny6FiLO/N/OmZh69eaoNzvBkbHVVFQA== +karma-jasmine-html-reporter@^1.5.0: + version "1.5.4" + resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz#669f33d694d88fce1b0ccfda57111de716cb0192" + integrity sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q== -karma-jasmine@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-2.0.1.tgz#26e3e31f2faf272dd80ebb0e1898914cc3a19763" - integrity sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA== +karma-jasmine@~3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-3.3.1.tgz#c01b1a2ec973e1531c1f6535e1d7d66b8e4275c2" + integrity sha512-Nxh7eX9mOQMyK0VSsMxdod+bcqrR/ikrmEiWj5M6fwuQ7oI+YEF1FckaDsWfs6TIpULm9f0fTKMjF7XcrvWyqQ== dependencies: - jasmine-core "^3.3" + jasmine-core "^3.5.0" karma-source-map-support@1.4.0: version "1.4.0" @@ -5627,38 +5967,35 @@ karma-source-map-support@1.4.0: dependencies: source-map-support "^0.5.5" -karma@~4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-4.1.0.tgz#d07387c9743a575b40faf73e8a3eb5421c2193e1" - integrity sha512-xckiDqyNi512U4dXGOOSyLKPwek6X/vUizSy2f3geYevbLj+UIdvNwbn7IwfUIL2g1GXEPWt/87qFD1fBbl/Uw== +karma@~5.0.0: + version "5.0.9" + resolved "https://registry.yarnpkg.com/karma/-/karma-5.0.9.tgz#11a119b0c763a806fdc471b40c594a2240b5ca13" + integrity sha512-dUA5z7Lo7G4FRSe1ZAXqOINEEWxmCjDBbfRBmU/wYlSMwxUQJP/tEEP90yJt3Uqo03s9rCgVnxtlfq+uDhxSPg== dependencies: - bluebird "^3.3.0" - body-parser "^1.16.1" - braces "^2.3.2" - chokidar "^2.0.3" - colors "^1.1.0" - connect "^3.6.0" - core-js "^2.2.0" + body-parser "^1.19.0" + braces "^3.0.2" + chokidar "^3.0.0" + colors "^1.4.0" + connect "^3.7.0" di "^0.0.1" - dom-serialize "^2.2.0" - flatted "^2.0.0" - glob "^7.1.1" - graceful-fs "^4.1.2" - http-proxy "^1.13.0" - isbinaryfile "^3.0.0" - lodash "^4.17.11" - log4js "^4.0.0" - mime "^2.3.1" - minimatch "^3.0.2" - optimist "^0.6.1" - qjobs "^1.1.4" - range-parser "^1.2.0" - rimraf "^2.6.0" - safe-buffer "^5.0.1" - socket.io "2.1.1" + dom-serialize "^2.2.1" + flatted "^2.0.2" + glob "^7.1.6" + graceful-fs "^4.2.4" + http-proxy "^1.18.1" + isbinaryfile "^4.0.6" + lodash "^4.17.15" + log4js "^6.2.1" + mime "^2.4.5" + minimatch "^3.0.4" + qjobs "^1.2.0" + range-parser "^1.2.1" + rimraf "^3.0.2" + socket.io "^2.3.0" source-map "^0.6.1" - tmp "0.0.33" - useragent "2.3.0" + tmp "0.2.1" + ua-parser-js "0.7.21" + yargs "^15.3.1" keyv@^3.0.0: version "3.1.0" @@ -5717,28 +6054,23 @@ latest-version@^5.0.0: dependencies: package-json "^6.3.0" -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -less-loader@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-5.0.0.tgz#498dde3a6c6c4f887458ee9ed3f086a12ad1b466" - integrity sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg== +less-loader@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-6.1.0.tgz#59fd591df408ced89a40fce11a2aea449b005631" + integrity sha512-/jLzOwLyqJ7Kt3xg5sHHkXtOyShWwFj410K9Si9WO+/h8rmYxxkSR0A3/hFEntWudE20zZnWMtpMYnLzqTVdUA== dependencies: - clone "^2.1.1" - loader-utils "^1.1.0" - pify "^4.0.1" + clone "^2.1.2" + less "^3.11.1" + loader-utils "^2.0.0" + schema-utils "^2.6.6" -less@3.10.3: - version "3.10.3" - resolved "https://registry.yarnpkg.com/less/-/less-3.10.3.tgz#417a0975d5eeecc52cff4bcfa3c09d35781e6792" - integrity sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow== +less@^3.10.3: + version "3.11.1" + resolved "https://registry.yarnpkg.com/less/-/less-3.11.1.tgz#c6bf08e39e02404fe6b307a3dfffafdc55bd36e2" + integrity sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g== dependencies: clone "^2.1.2" + tslib "^1.10.0" optionalDependencies: errno "^0.1.1" graceful-fs "^4.1.2" @@ -5749,27 +6081,37 @@ less@3.10.3: request "^2.83.0" source-map "~0.6.0" -less@^3.10.3: - version "3.11.1" - resolved "https://registry.yarnpkg.com/less/-/less-3.11.1.tgz#c6bf08e39e02404fe6b307a3dfffafdc55bd36e2" - integrity sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g== +less@^3.11.1: + version "3.12.2" + resolved "https://registry.yarnpkg.com/less/-/less-3.12.2.tgz#157e6dd32a68869df8859314ad38e70211af3ab4" + integrity sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q== dependencies: - clone "^2.1.2" tslib "^1.10.0" optionalDependencies: errno "^0.1.1" graceful-fs "^4.1.2" image-size "~0.5.0" + make-dir "^2.1.0" mime "^1.4.1" - mkdirp "^0.5.0" - promise "^7.1.1" - request "^2.83.0" + native-request "^1.0.5" source-map "~0.6.0" -license-webpack-plugin@2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.1.3.tgz#656fa6a8b2e711ee35c27ac8e1659a87240ef7f3" - integrity sha512-vTSY5r9HOq4sxR2BIxdIXWKI+9n3b+DoQkhKHedB3TdSxTfXUDRxKXdAj5iejR+qNXprXsxvEu9W+zOhgGIkAw== +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +license-webpack-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.2.0.tgz#5c964380d7d0e0c27c349d86a6f856c82924590e" + integrity sha512-XPsdL/0brSHf+7dXIlRqotnCQ58RX2au6otkOg4U3dm8uH+Ka/fW4iukEs95uXm+qKe/SBs+s1Ll/aQddKG+tg== dependencies: "@types/webpack-sources" "^0.1.5" webpack-sources "^1.2.0" @@ -5800,6 +6142,15 @@ loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2. emojis-list "^2.0.0" json5 "^1.0.1" +loader-utils@2.0.0, loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + loader-utils@^0.2.16: version "0.2.17" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" @@ -5810,6 +6161,15 @@ loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" +loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -5835,6 +6195,11 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -5845,6 +6210,11 @@ lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +lodash@^4.17.19: + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== + log-symbols@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" @@ -5852,21 +6222,21 @@ log-symbols@^3.0.0: dependencies: chalk "^2.4.2" -log4js@^4.0.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-4.5.1.tgz#e543625e97d9e6f3e6e7c9fc196dd6ab2cae30b5" - integrity sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw== +log4js@^6.2.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.3.0.tgz#10dfafbb434351a3e30277a00b9879446f715bcb" + integrity sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw== dependencies: - date-format "^2.0.0" + date-format "^3.0.0" debug "^4.1.1" - flatted "^2.0.0" + flatted "^2.0.1" rfdc "^1.1.4" - streamroller "^1.0.6" + streamroller "^2.2.4" -loglevel@^1.6.4: - version "1.6.6" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" - integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== +loglevel@^1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" + integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA== loose-envify@^1.0.0: version "1.4.0" @@ -5890,7 +6260,7 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -lru-cache@4.1.x, lru-cache@^4.0.1: +lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -5905,6 +6275,13 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + magic-string@0.25.4, magic-string@^0.25.0: version "0.25.4" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.4.tgz#325b8a0a79fc423db109b77fd5a19183b7ba5143" @@ -5912,6 +6289,13 @@ magic-string@0.25.4, magic-string@^0.25.0: dependencies: sourcemap-codec "^1.4.4" +magic-string@0.25.7: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + magic-string@^0.25.2: version "0.25.6" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.6.tgz#5586387d1242f919c6d223579cc938bf1420795e" @@ -5941,6 +6325,13 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" +make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + make-error@^1.1.1: version "1.3.5" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" @@ -5963,18 +6354,6 @@ make-fetch-happen@^5.0.0: socks-proxy-agent "^4.0.0" ssri "^6.0.0" -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -6006,15 +6385,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -6048,6 +6418,11 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -6072,6 +6447,14 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -6102,7 +6485,12 @@ mime@^2.3.1, mime@^2.4.4: resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== -mimic-fn@^2.0.0, mimic-fn@^2.1.0: +mime@^2.4.5: + version "2.4.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" + integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== + +mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -6112,10 +6500,10 @@ mimic-response@^1.0.0, mimic-response@^1.0.1: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== -mini-css-extract-plugin@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz#81d41ec4fe58c713a96ad7c723cdb2d0bd4d70e1" - integrity sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw== +mini-css-extract-plugin@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" + integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== dependencies: loader-utils "^1.1.0" normalize-url "1.9.1" @@ -6132,7 +6520,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -6149,10 +6537,10 @@ minimist@1.2.0, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== minipass-collect@^1.0.2: version "1.0.2" @@ -6197,6 +6585,14 @@ minizlib@^1.2.1: dependencies: minipass "^2.9.0" +minizlib@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz#fd52c645301ef09a63a2c209697c294c6ce02cf3" + integrity sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -6228,6 +6624,18 @@ mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1, mkdirp@~0.5.x: dependencies: minimist "0.0.8" +mkdirp@^0.5.3: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -6240,6 +6648,13 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" +move-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/move-file/-/move-file-2.0.0.tgz#83ffa309b5d7f69d518b28e1333e2ffadf331e3e" + integrity sha512-cdkdhNCgbP5dvS4tlGxZbD+nloio9GIimP57EjqFhwLcMjnU+XJKAZzlmg/TN/AK1LuNAdTSvm3CPPP4Xkv0iQ== + dependencies: + path-exists "^4.0.0" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -6295,42 +6710,52 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +native-request@^1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/native-request/-/native-request-1.0.7.tgz#ff742dc555b4c8f2f1c14b548639ba174e573856" + integrity sha512-9nRjinI9bmz+S7dgNtf4A70+/vPhnd+2krGpy4SUlADuOuSa24IDkNaZ+R/QT1wQ6S8jBdi6wE7fLekFZNfUpQ== + negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: +neo-async@^2.5.0, neo-async@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== -ng-packagr@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/ng-packagr/-/ng-packagr-9.0.0.tgz#a91d2092f95e51e6746f78a2c9b4fc9badb80d45" - integrity sha512-uK9sdOmjAQJgKh/3UN0/3XmV5IRTmdQt3vRElwbmd+rAl8Z/g/h2CMLIXqhLOfWcLnYzepkhoXlQPbiwpxAw0w== +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +ng-packagr@^10.0.0: + version "10.0.2" + resolved "https://registry.yarnpkg.com/ng-packagr/-/ng-packagr-10.0.2.tgz#31aed1cc373a7b84baaef73c1dae29ccc667a57f" + integrity sha512-nmw6nQLwPBVIdU1M0Omo6BLeg5Iugj3hmq7pd+Un7hZ33T+D8vfB88jXUf/DklRPLIwRWlu+5evQNj76VPhYUw== dependencies: - "@rollup/plugin-commonjs" "^11.0.2" + "@rollup/plugin-commonjs" "^14.0.0" "@rollup/plugin-json" "^4.0.0" - "@rollup/plugin-node-resolve" "^7.1.0" + "@rollup/plugin-node-resolve" "^8.0.0" ajv "^6.10.2" autoprefixer "^9.6.5" browserslist "^4.7.0" - chalk "^3.0.0" + chalk "^4.0.0" chokidar "^3.2.1" - clean-css "^4.1.11" - commander "^4.0.0" - fs-extra "^8.1.0" + commander "^5.0.0" + cssnano-preset-default "^4.0.7" + fs-extra "^9.0.0" glob "^7.1.2" injection-js "^2.2.1" less "^3.10.3" node-sass-tilde-importer "^1.0.0" - postcss "^7.0.18" + postcss "^7.0.29" postcss-url "^8.0.0" read-pkg-up "^5.0.0" rimraf "^3.0.0" - rollup "1.31.0" - rollup-plugin-sourcemaps "^0.5.0" + rollup "^2.8.0" + rollup-plugin-sourcemaps "^0.6.0" rxjs "^6.5.0" sass "^1.23.0" stylus "^0.54.7" @@ -6392,14 +6817,7 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-releases@^1.1.42: - version "1.1.44" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.44.tgz#cd66438a6eb875e3eb012b6a12e48d9f4326ffd7" - integrity sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw== - dependencies: - semver "^6.3.0" - -node-releases@^1.1.44, node-releases@^1.1.46: +node-releases@^1.1.46: version "1.1.47" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.47.tgz#c59ef739a1fd7ecbd9f0b7cf5b7871e8a8b591e4" integrity sha512-k4xjVPx5FpwBUj0Gw7uvFOTF4Ep8Hok1I6qjwL3pLfwe7Y0REQSAqOwwv9TWBCUtMHxcXfY4PgRLRozcChvTcA== @@ -6413,6 +6831,11 @@ node-releases@^1.1.47: dependencies: semver "^6.3.0" +node-releases@^1.1.58: + version "1.1.59" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.59.tgz#4d648330641cec704bff10f8e4fe28e453ab8e8e" + integrity sha512-H3JrdUczbdiwxN5FuJPyCHnGHIFqQ0wWxo+9j1kAXAzqNMAHlo+4I/sYYxpyK0irQ73HgdiyzD32oqQDcU2Osw== + node-sass-tilde-importer@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz#1a15105c153f648323b4347693fdb0f331bad1ce" @@ -6474,12 +6897,28 @@ npm-bundled@^1.0.1: dependencies: npm-normalize-package-bin "^1.0.1" +npm-install-checks@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" + integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== + dependencies: + semver "^7.1.1" + npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@6.1.1, npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: +npm-package-arg@8.0.1, npm-package-arg@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.0.1.tgz#9d76f8d7667b2373ffda60bb801a27ef71e3e270" + integrity sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ== + dependencies: + hosted-git-info "^3.0.2" + semver "^7.0.0" + validate-npm-package-name "^3.0.0" + +npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: version "6.1.1" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== @@ -6489,16 +6928,6 @@ npm-package-arg@6.1.1, npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: semver "^5.6.0" validate-npm-package-name "^3.0.0" -npm-package-arg@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-7.0.0.tgz#52cdf08b491c0c59df687c4c925a89102ef794a5" - integrity sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g== - dependencies: - hosted-git-info "^3.0.2" - osenv "^0.1.5" - semver "^5.6.0" - validate-npm-package-name "^3.0.0" - npm-packlist@^1.1.12: version "1.4.7" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848" @@ -6507,7 +6936,16 @@ npm-packlist@^1.1.12: ignore-walk "^3.0.1" npm-bundled "^1.0.1" -npm-pick-manifest@3.0.2, npm-pick-manifest@^3.0.0: +npm-pick-manifest@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz#2befed87b0fce956790f62d32afb56d7539c022a" + integrity sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw== + dependencies: + npm-install-checks "^4.0.0" + npm-package-arg "^8.0.0" + semver "^7.0.0" + +npm-pick-manifest@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== @@ -6543,21 +6981,11 @@ nth-check@^1.0.2, nth-check@~1.0.1: dependencies: boolbase "~1.0.0" -null-check@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" - integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0= - num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= -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" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -6597,6 +7025,11 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object-path@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" + integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= + object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -6670,12 +7103,13 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -open@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/open/-/open-7.0.0.tgz#7e52999b14eb73f90f0f0807fe93897c4ae73ec9" - integrity sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ== +open@7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/open/-/open-7.0.4.tgz#c28a9d315e5c98340bf979fdcb2e58664aa10d83" + integrity sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ== dependencies: - is-wsl "^2.1.0" + is-docker "^2.0.0" + is-wsl "^2.1.1" opn@^5.5.0: version "5.5.0" @@ -6684,25 +7118,18 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" -optimist@^0.6.1, optimist@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -ora@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.2.tgz#0e1e68fd45b135d28648b27cf08081fa6e8a297d" - integrity sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig== +ora@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.4.tgz#e8da697cc5b6a47266655bf68e0fb588d29a545d" + integrity sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww== dependencies: - chalk "^2.4.2" + chalk "^3.0.0" cli-cursor "^3.1.0" cli-spinners "^2.2.0" is-interactive "^1.0.0" log-symbols "^3.0.0" - strip-ansi "^5.2.0" + mute-stream "0.0.8" + strip-ansi "^6.0.0" wcwidth "^1.0.1" original@^1.0.0: @@ -6722,15 +7149,6 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^3.0.0, os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -6749,32 +7167,29 @@ p-cancelable@^1.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== dependencies: p-try "^2.0.0" -p-limit@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" - integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== +p-limit@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" + integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== dependencies: p-try "^2.0.0" @@ -6797,10 +7212,10 @@ p-map@^2.0.0: resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" @@ -6836,10 +7251,10 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" -pacote@9.5.8: - version "9.5.8" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.8.tgz#23480efdc4fa74515855c9ecf39cf64078f99786" - integrity sha512-0Tl8Oi/K0Lo4MZmH0/6IsT3gpGf9eEAznLXEQPKgPq7FscnbUOyopnVpwXlnQdIbCUaojWy1Wd7VMyqfVsRrIw== +pacote@9.5.12: + version "9.5.12" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.12.tgz#1e11dd7a8d736bcc36b375a9804d41bb0377bf66" + integrity sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ== dependencies: bluebird "^3.5.3" cacache "^12.0.2" @@ -6855,6 +7270,7 @@ pacote@9.5.8: mississippi "^3.0.0" mkdirp "^0.5.1" normalize-package-data "^2.4.0" + npm-normalize-package-bin "^1.0.0" npm-package-arg "^6.1.0" npm-packlist "^1.1.12" npm-pick-manifest "^3.0.0" @@ -7015,12 +7431,10 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pbkdf2@^3.0.3: version "3.0.17" @@ -7043,6 +7457,11 @@ picomatch@^2.0.4, picomatch@^2.0.7: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.1.1.tgz#ecdfbea7704adb5fe6fb47f9866c4c0e15e905c5" integrity sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA== +picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -7084,10 +7503,17 @@ pkg-dir@^4.1.0: dependencies: find-up "^4.0.0" -portfinder@^1.0.25: - version "1.0.25" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" - integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +portfinder@^1.0.26: + version "1.0.27" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.27.tgz#a41333c116b5e5f3d380f9745ac2f35084c4c758" + integrity sha512-bJ3U3MThKnyJ9Dx1Idtm5pQmxXqw08+XOHhi/Lie8OF1OlhVaBFhsntAIhkZYjfDcCzszSr0w1yCbccThhzgxQ== dependencies: async "^2.6.2" debug "^3.1.1" @@ -7245,6 +7671,39 @@ postcss-minify-selectors@^4.0.2: postcss "^7.0.0" postcss-selector-parser "^3.0.0" +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" + +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + postcss-normalize-charset@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" @@ -7373,6 +7832,15 @@ postcss-selector-parser@^5.0.0-rc.4: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + postcss-svgo@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" @@ -7408,6 +7876,11 @@ postcss-value-parser@^3.0.0, postcss-value-parser@^3.2.3, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.3, postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + postcss-value-parser@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" @@ -7422,7 +7895,16 @@ postcss@7.0.21: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.21: +postcss@7.0.31: + version "7.0.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.31.tgz#332af45cb73e26c0ee2614d7c7fb02dfcc2bd6dd" + integrity sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7.0.0, postcss@^7.0.1: version "7.0.25" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.25.tgz#dd2a2a753d50b13bed7a2009b4a18ac14d9db21e" integrity sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg== @@ -7431,7 +7913,16 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.21: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^7.0.18, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.5: +postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.27, postcss@^7.0.29, postcss@^7.0.30, postcss@^7.0.6: + version "7.0.32" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" + integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.5: version "7.0.26" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587" integrity sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA== @@ -7458,11 +7949,6 @@ pretty-error@^2.0.2: renderkid "^2.0.1" utila "~0.4" -private@^0.1.6: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -7505,10 +7991,10 @@ protoduck@^5.0.1: dependencies: genfun "^5.0.0" -protractor@~5.4.0: - version "5.4.2" - resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.4.2.tgz#329efe37f48b2141ab9467799be2d4d12eb48c13" - integrity sha512-zlIj64Cr6IOWP7RwxVeD8O4UskLYPoyIcg0HboWJL9T79F1F0VWtKkGTr/9GN6BKL+/Q/GmM7C9kFVCfDbP5sA== +protractor@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/protractor/-/protractor-7.0.0.tgz#c3e263608bd72e2c2dc802b11a772711a4792d03" + integrity sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw== dependencies: "@types/q" "^0.0.32" "@types/selenium-webdriver" "^3.0.0" @@ -7518,13 +8004,13 @@ protractor@~5.4.0: glob "^7.0.3" jasmine "2.8.0" jasminewd2 "^2.1.0" - optimist "~0.6.0" q "1.4.1" saucelabs "^1.5.0" selenium-webdriver "3.6.0" source-map-support "~0.4.0" webdriver-js-extender "2.1.0" - webdriver-manager "^12.0.6" + webdriver-manager "^12.1.7" + yargs "^15.3.1" proxy-addr@~2.0.5: version "2.0.5" @@ -7596,7 +8082,7 @@ punycode@^1.2.4, punycode@^1.4.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -7611,7 +8097,7 @@ q@^1.1.2, q@^1.4.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qjobs@^1.1.4: +qjobs@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== @@ -7649,7 +8135,7 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -7664,7 +8150,7 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@^1.2.0, range-parser@^1.2.1, range-parser@~1.2.1: +range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== @@ -7679,13 +8165,13 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -raw-loader@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-3.1.0.tgz#5e9d399a5a222cc0de18f42c3bc5e49677532b3f" - integrity sha512-lzUVMuJ06HF4rYveaz9Tv0WRlUMxJ0Y1hgSkkgg+50iEdaI0TthyEDe08KIHb0XsF6rn8WYTqPCaGTZg3sX+qA== +raw-loader@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.1.tgz#14e1f726a359b68437e183d5a5b7d33a3eba6933" + integrity sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A== dependencies: - loader-utils "^1.1.0" - schema-utils "^2.0.1" + loader-utils "^2.0.0" + schema-utils "^2.6.5" rc@^1.0.1, rc@^1.1.6, rc@^1.2.8: version "1.2.8" @@ -7791,15 +8277,22 @@ readdirp@~3.3.0: dependencies: picomatch "^2.0.7" +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + dependencies: + picomatch "^2.2.1" + reflect-metadata@^0.1.2: version "0.1.13" resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== -regenerate-unicode-properties@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" - integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== dependencies: regenerate "^1.4.0" @@ -7808,17 +8301,22 @@ regenerate@^1.2.1, regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== -regenerator-runtime@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" - integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== +regenerator-runtime@0.13.5: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== -regenerator-transform@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" - integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ== +regenerator-runtime@^0.13.4: + version "0.13.6" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.6.tgz#d236043c46ffab2968c1ef651803d8acdea8ed65" + integrity sha512-GmwlGiazQEbOwQWDdbbaP10i15pGtScYWLbMZuu+RKRz0cZ+g8IUONazBnaZqe7j1670IV1HgE4/8iy7CQPf4Q== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== dependencies: - private "^0.1.6" + "@babel/runtime" "^7.8.4" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -7828,6 +8326,11 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regex-parser@2.2.10: + version "2.2.10" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" + integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== + regexp.prototype.flags@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" @@ -7845,17 +8348,17 @@ regexpu-core@^1.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" -regexpu-core@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6" - integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg== +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== dependencies: regenerate "^1.4.0" - regenerate-unicode-properties "^8.1.0" - regjsgen "^0.5.0" - regjsparser "^0.6.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.1.0" + unicode-match-property-value-ecmascript "^1.2.0" registry-auth-token@^3.0.1: version "3.4.0" @@ -7891,10 +8394,10 @@ regjsgen@^0.2.0: resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= -regjsgen@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" - integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== regjsparser@^0.1.4: version "0.1.5" @@ -7903,10 +8406,10 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" -regjsparser@^0.6.0: - version "0.6.2" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.2.tgz#fd62c753991467d9d1ffe0a9f67f27a529024b96" - integrity sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q== +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== dependencies: jsesc "~0.5.0" @@ -7972,11 +8475,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -7999,6 +8497,22 @@ resolve-from@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" integrity sha1-six699nWiBvItuZTM17rywoYh0g= +resolve-url-loader@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" + integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== + dependencies: + adjust-sourcemap-loader "2.0.0" + camelcase "5.3.1" + compose-function "3.0.3" + convert-source-map "1.7.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.21" + rework "1.0.1" + rework-visit "1.0.0" + source-map "0.6.1" + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -8011,13 +8525,20 @@ resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2: dependencies: path-parse "^1.0.6" -resolve@^1.11.0, resolve@^1.14.2: +resolve@^1.11.0: version "1.15.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== dependencies: path-parse "^1.0.6" +resolve@^1.17.0, resolve@^1.8.1: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -8048,6 +8569,24 @@ retry@^0.12.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rework-visit@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" + integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= + +rework@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" + integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= + dependencies: + convert-source-map "^0.3.3" + css "^2.0.0" + rfdc@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2" @@ -8063,27 +8602,20 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.0.tgz#614176d4b3010b75e5c390eb0ee96f6dc0cebb9b" - integrity sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg== +rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" -rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" -rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -8092,38 +8624,37 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rollup-plugin-sourcemaps@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.5.0.tgz#898e8411c9b5b7b524b4d96c3b41d5c43f9da77e" - integrity sha512-xp2vvRvgnYiXydgf/JFFFgYxrqMaQaOrK/g6yZvgwT9R1TSYjD3HKku1pD7iQNjQHkl5yGpokvJLp7cP/lR+aQ== +rollup-plugin-sourcemaps@^0.6.0: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.2.tgz#1eed5a3e07b833dc14c4cdb1e63b300d340f4a74" + integrity sha512-9AwTKg3yRykwzemfLt71ySe0LvrAci+bpsOL1LaTYFk5BX4HF6X7DQfpHa74ANfSja3hyjiQkXCR8goSOnW//Q== dependencies: - "@rollup/pluginutils" "^3.0.1" - source-map-resolve "^0.5.3" + "@rollup/pluginutils" "^3.0.9" + source-map-resolve "^0.6.0" -rollup@1.25.2: - version "1.25.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.25.2.tgz#739f508bd8f7ece52bb6c1fcda83466af82b7f6d" - integrity sha512-+7z6Wab/L45QCPcfpuTZKwKiB0tynj05s/+s2U3F2Bi7rOLPr9UcjUwO7/xpjlPNXA/hwnth6jBExFRGyf3tMg== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" +rollup@2.10.9: + version "2.10.9" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.10.9.tgz#17dcc6753c619efcc1be2cf61d73a87827eebdf9" + integrity sha512-dY/EbjiWC17ZCUSyk14hkxATAMAShkMsD43XmZGWjLrgFj15M3Dw2kEkA9ns64BiLFm9PKN6vTQw8neHwK74eg== + optionalDependencies: + fsevents "~2.1.2" -rollup@1.31.0: - version "1.31.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.31.0.tgz#e2a87212e96aa7850f3eb53fdd02cf89f2d2fe9a" - integrity sha512-9C6ovSyNeEwvuRuUUmsTpJcXac1AwSL1a3x+O5lpmQKZqi5mmrjauLeqIjvREC+yNRR8fPdzByojDng+af3nVw== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" +rollup@^2.8.0: + version "2.22.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.22.1.tgz#8700522aa5feb12c6bd51810df8a276699d136b1" + integrity sha512-K9AUQUCJkVqC+A7uUDacfhmpEeAjc2uOmSpvGI5xaYsm8pXgy4ZWEM8wHPfKj11xvCwFZppkRDo8a0RESJXCnw== + optionalDependencies: + fsevents "~2.1.2" -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= - dependencies: - is-promise "^2.1.0" +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" @@ -8139,13 +8670,27 @@ rxjs@6.5.3: dependencies: tslib "^1.9.0" -rxjs@^6.4.0, rxjs@^6.5.0, rxjs@~6.5.0: +rxjs@6.5.5: + version "6.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" + integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + dependencies: + tslib "^1.9.0" + +rxjs@^6.5.0, rxjs@~6.5.0: version "6.5.4" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== dependencies: tslib "^1.9.0" +rxjs@^6.5.3: + version "6.6.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.0.tgz#af2901eedf02e3a83ffa7f886240ff9018bbec84" + integrity sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg== + dependencies: + tslib "^1.9.0" + 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" @@ -8168,21 +8713,21 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-loader@8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.0.tgz#e7b07a3e357f965e6b03dd45b016b0a9746af797" - integrity sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w== +sass-loader@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" + integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== dependencies: clone-deep "^4.0.1" loader-utils "^1.2.3" neo-async "^2.6.1" - schema-utils "^2.1.0" + schema-utils "^2.6.1" semver "^6.3.0" -sass@1.23.3: - version "1.23.3" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.23.3.tgz#f07503b9e8d2bcf06ef69e8beea5d085589b1620" - integrity sha512-1DKRZxJMOh4Bme16AbWTyYeJAjTlrvw2+fWshHHaepeJfGq2soFZTnt0YhWit+bohtDu4LdyPoEj6VFD4APHog== +sass@1.26.5: + version "1.26.5" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.26.5.tgz#2d7aecfbbabfa298567c8f06615b6e24d2d68099" + integrity sha512-FG2swzaZUiX53YzZSjSakzvGtlds0lcbF+URuU9mxOv7WBh7NhXEVDa4kPKN4hN6fC2TkOTOKqiqp6d53N9X5Q== dependencies: chokidar ">=2.0.0 <4.0.0" @@ -8214,14 +8759,6 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.1.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.1.tgz#eb78f0b945c7bcfa2082b3565e8db3548011dc4f" - integrity sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg== - dependencies: - ajv "^6.10.2" - ajv-keywords "^3.4.1" - schema-utils@^2.6.1, schema-utils@^2.6.4: version "2.6.4" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.4.tgz#a27efbf6e4e78689d91872ee3ccfa57d7bdd0f53" @@ -8230,6 +8767,15 @@ schema-utils@^2.6.1, schema-utils@^2.6.4: ajv "^6.10.2" ajv-keywords "^3.4.1" +schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -8280,21 +8826,26 @@ semver-intersect@1.4.0: dependencies: semver "^5.0.0" -"semver@2 || 3 || 4 || 5", semver@^5.0.0, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.0, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@6.3.0, semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== +semver@7.3.2, semver@^7.0.0, semver@^7.1.1: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -8314,10 +8865,19 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== +serialize-javascript@^3.0.0, serialize-javascript@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" + integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" serve-index@^1.9.1: version "1.9.1" @@ -8416,16 +8976,16 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - slash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + smart-buffer@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" @@ -8466,46 +9026,55 @@ socket.io-adapter@~1.1.0: resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== -socket.io-client@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" - integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== +socket.io-client@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.0.tgz#14d5ba2e00b9bcd145ae443ab96b3f86cbcc1bb4" + integrity sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA== dependencies: backo2 "1.0.2" base64-arraybuffer "0.1.5" component-bind "1.0.0" component-emitter "1.2.1" - debug "~3.1.0" - engine.io-client "~3.2.0" + debug "~4.1.0" + engine.io-client "~3.4.0" has-binary2 "~1.0.2" has-cors "1.1.0" indexof "0.0.1" object-component "0.0.3" parseqs "0.0.5" parseuri "0.0.5" - socket.io-parser "~3.2.0" + socket.io-parser "~3.3.0" to-array "0.1.4" -socket.io-parser@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" - integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== +socket.io-parser@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.0.tgz#2b52a96a509fdf31440ba40fed6094c7d4f1262f" + integrity sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng== dependencies: component-emitter "1.2.1" debug "~3.1.0" isarray "2.0.1" -socket.io@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" - integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== +socket.io-parser@~3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.4.1.tgz#b06af838302975837eab2dc980037da24054d64a" + integrity sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A== dependencies: - debug "~3.1.0" - engine.io "~3.2.0" + component-emitter "1.2.1" + debug "~4.1.0" + isarray "2.0.1" + +socket.io@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.3.0.tgz#cd762ed6a4faeca59bc1f3e243c0969311eb73fb" + integrity sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg== + dependencies: + debug "~4.1.0" + engine.io "~3.4.0" has-binary2 "~1.0.2" socket.io-adapter "~1.1.0" - socket.io-client "2.1.1" - socket.io-parser "~3.2.0" + socket.io-client "2.3.0" + socket.io-parser "~3.4.0" sockjs-client@1.4.0: version "1.4.0" @@ -8519,13 +9088,14 @@ sockjs-client@1.4.0: json3 "^3.3.2" url-parse "^1.4.3" -sockjs@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" - integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== +sockjs@0.3.20: + version "0.3.20" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" + integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== dependencies: faye-websocket "^0.10.0" - uuid "^3.0.1" + uuid "^3.4.0" + websocket-driver "0.6.5" socks-proxy-agent@^4.0.0: version "4.0.2" @@ -8555,15 +9125,18 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-loader@0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-0.2.4.tgz#c18b0dc6e23bf66f6792437557c569a11e072271" - integrity sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ== +source-map-loader@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-1.0.0.tgz#240b88575a9b0d27214aeecbd4e7686af95cfa56" + integrity sha512-ZayyQCSCrQazN50aCvuS84lJT4xc1ZAcykH5blHaBdVveSwjiFK8UGMPvao0ho54DTb0Jf7m57uRRG/YYUZ2Fg== dependencies: - async "^2.5.0" - loader-utils "^1.1.0" + data-urls "^2.0.0" + iconv-lite "^0.5.1" + loader-utils "^2.0.0" + schema-utils "^2.6.6" + source-map "^0.6.0" -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2, source-map-resolve@^0.5.3: +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== @@ -8574,7 +9147,23 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2, source-map-resolve@^0.5.3: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@0.5.16, source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@~0.5.12: +source-map-resolve@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + +source-map-support@0.5.19: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@~0.5.12: version "0.5.16" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== @@ -8594,6 +9183,11 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + source-map@0.7.3, source-map@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" @@ -8604,16 +9198,16 @@ source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - sourcemap-codec@^1.4.4: version "1.4.6" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz#e30a74f0402bad09807640d39e971090a08ce1e9" integrity sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg== +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -8652,10 +9246,10 @@ spdy-transport@^3.0.0: readable-stream "^3.0.6" wbuf "^1.7.3" -spdy@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" - integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== dependencies: debug "^4.1.0" handle-thing "^2.0.0" @@ -8663,10 +9257,10 @@ spdy@^4.0.1: select-hose "^2.0.0" spdy-transport "^3.0.0" -speed-measure-webpack-plugin@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.1.tgz#69840a5cdc08b4638697dac7db037f595d7f36a0" - integrity sha512-qVIkJvbtS9j/UeZumbdfz0vg+QfG/zxonAjzefZrqzkr7xOncLVXkeGbTpzd1gjCBM4PmVNkWlkeTVhgskAGSQ== +speed-measure-webpack-plugin@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.3.tgz#6ff894fc83e8a6310dde3af863a0329cd79da4f5" + integrity sha512-2ljD4Ch/rz2zG3HsLsnPfp23osuPBS0qPuz9sGpkNXTN1Ic4M+W9xB8l8rS8ob2cO4b1L+WTJw/0AJwWYVgcxQ== dependencies: chalk "^2.0.1" @@ -8709,12 +9303,11 @@ ssri@^6.0.0, ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -ssri@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" - integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== +ssri@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" + integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA== dependencies: - figgy-pudding "^3.5.1" minipass "^3.1.1" stable@^0.1.8: @@ -8767,31 +9360,20 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -streamroller@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-1.0.6.tgz#8167d8496ed9f19f05ee4b158d9611321b8cacd9" - integrity sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg== +streamroller@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-2.2.4.tgz#c198ced42db94086a6193608187ce80a5f2b0e53" + integrity sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ== dependencies: - async "^2.6.2" - date-format "^2.0.0" - debug "^3.2.6" - fs-extra "^7.0.1" - lodash "^4.17.14" + date-format "^2.1.0" + debug "^4.1.1" + fs-extra "^8.1.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" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -8800,7 +9382,7 @@ string-width@^2.0.0, string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0: +string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -8809,7 +9391,7 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.0.0, string-width@^4.1.0: +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -8862,7 +9444,7 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -8876,11 +9458,6 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -8891,13 +9468,13 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -style-loader@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.0.0.tgz#1d5296f9165e8e2c85d24eee0b7caf9ec8ca1f82" - integrity sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw== +style-loader@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.2.1.tgz#c5cbbfbf1170d076cfdd86e0109c5bba114baa1a" + integrity sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg== dependencies: - loader-utils "^1.2.3" - schema-utils "^2.0.1" + loader-utils "^2.0.0" + schema-utils "^2.6.6" stylehacks@^4.0.0: version "4.0.3" @@ -8999,6 +9576,18 @@ tar@^4.4.10: safe-buffer "^5.1.2" yallist "^3.0.3" +tar@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.2.tgz#5df17813468a6264ff14f766886c622b84ae2f39" + integrity sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.0" + mkdirp "^1.0.3" + yallist "^4.0.0" + term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -9011,40 +9600,40 @@ term-size@^2.1.0: resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== -terser-webpack-plugin@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.3.tgz#b89043168bd414153bab86f4362ac23d537b78b0" - integrity sha512-gWHkaGzGYjmDoYxksFZynWTzvXOAjQ5dd7xuTMYlv4zpWlLSb6v0QLSZjELzP5dMs1ox30O1BIPs9dgqlMHuLQ== - dependencies: - cacache "^13.0.1" - find-cache-dir "^3.2.0" - jest-worker "^25.1.0" - p-limit "^2.2.2" - schema-utils "^2.6.4" - serialize-javascript "^2.1.2" +terser-webpack-plugin@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-3.0.1.tgz#31928c9330a582fb5ec6f90805337289b85cb8fe" + integrity sha512-eFDtq8qPUEa9hXcUzTwKXTnugIVtlqc1Z/ZVhG8LmRT3lgRY13+pQTnFLY2N7ATB6TKCHuW/IGjoAnZz9wOIqw== + dependencies: + cacache "^15.0.3" + find-cache-dir "^3.3.1" + jest-worker "^26.0.0" + p-limit "^2.3.0" + schema-utils "^2.6.6" + serialize-javascript "^3.0.0" source-map "^0.6.1" - terser "^4.4.3" + terser "^4.6.13" webpack-sources "^1.4.3" -terser-webpack-plugin@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" - integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== +terser-webpack-plugin@^1.4.3: + version "1.4.4" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz#2c63544347324baafa9a56baaddf1634c8abfc2f" + integrity sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA== dependencies: cacache "^12.0.2" find-cache-dir "^2.1.0" is-wsl "^1.1.0" schema-utils "^1.0.0" - serialize-javascript "^2.1.2" + serialize-javascript "^3.1.0" source-map "^0.6.1" terser "^4.1.2" webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.5.1.tgz#63b52d6b6ce344aa6fedcd0ee06a695799eb50bd" - integrity sha512-lH9zLIbX8PRBEFCTvfHGCy0s9HEKnNso1Dx9swSopF3VUnFLB8DpQ61tHxoofovNC/sG0spajJM3EIIRSTByiQ== +terser@4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.7.0.tgz#15852cf1a08e3256a80428e865a2fa893ffba006" + integrity sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -9059,7 +9648,7 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^4.3.8, terser@^4.4.3: +terser@^4.3.8: version "4.6.3" resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.3.tgz#e33aa42461ced5238d352d2df2a67f21921f8d87" integrity sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ== @@ -9068,6 +9657,15 @@ terser@^4.3.8, terser@^4.4.3: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^4.6.13: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -9110,7 +9708,14 @@ tmp@0.0.30: dependencies: os-tmpdir "~1.0.1" -tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33: +tmp@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== @@ -9187,6 +9792,13 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== + dependencies: + punycode "^2.1.1" + tree-kill@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" @@ -9206,28 +9818,38 @@ ts-node@~7.0.0: source-map-support "^0.5.6" yn "^2.0.0" -tslib@1.10.0, tslib@^1.10.0, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: +ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +tslib@2.0.0, tslib@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.0.tgz#18d13fc2dce04051e20f074cc8387fd8089ce4f3" + integrity sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g== + +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== -tslint@~5.15.0: - version "5.15.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.15.0.tgz#6ffb180986d63afa1e531feb2a134dbf961e27d3" - integrity sha512-6bIEujKR21/3nyeoX2uBnE8s+tMXCQXhqMmaIPJpHmXJoBJPTLcI7/VHRtUwMhnLVdwLqqY3zmd8Dxqa5CVdJA== +tslint@~6.1.0: + version "6.1.2" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.2.tgz#2433c248512cc5a7b2ab88ad44a6b1b34c6911cf" + integrity sha512-UyNrLdK3E0fQG/xWNqAFAC5ugtFyPO4JJR1KyyfQAyzR8W0fTRrC91A8Wej4BntFzcvETdCSDa/4PnNYJQLYiA== dependencies: - babel-code-frame "^6.22.0" + "@babel/code-frame" "^7.0.0" builtin-modules "^1.1.1" chalk "^2.3.0" commander "^2.12.1" - diff "^3.2.0" + diff "^4.0.1" glob "^7.1.1" - js-yaml "^3.13.0" + js-yaml "^3.13.1" minimatch "^3.0.4" - mkdirp "^0.5.1" + mkdirp "^0.5.3" resolve "^1.3.2" semver "^5.3.0" - tslib "^1.8.0" + tslib "^1.10.0" tsutils "^2.29.0" tsutils@^2.29.0: @@ -9272,6 +9894,16 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -9284,10 +9916,15 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@3.6.4, typescript@~3.6.3: - version "3.6.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.4.tgz#b18752bb3792bc1a0281335f7f6ebf1bbfc5b91d" - integrity sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg== +typescript@~3.9.7: + version "3.9.7" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" + integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== + +ua-parser-js@0.7.21: + version "0.7.21" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" + integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== uglify-js@3.4.x: version "3.4.10" @@ -9297,19 +9934,6 @@ uglify-js@3.4.x: commander "~2.19.0" source-map "~0.6.1" -uglify-js@^3.1.4: - version "3.7.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.3.tgz#f918fce9182f466d5140f24bb0ff35c2d32dcc6a" - integrity sha512-7tINm46/3puUA4hCkKYo4Xdts+JDaVC9ZPRcG8Xw9R4nhO/gZgUM3TENq8IF4Vatk8qCig4MzP/c8G4u2BkVQg== - dependencies: - commander "~2.20.3" - source-map "~0.6.1" - -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== - unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -9323,10 +9947,10 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" -unicode-match-property-value-ecmascript@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" - integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== unicode-property-aliases-ecmascript@^1.0.4: version "1.0.5" @@ -9381,7 +10005,7 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" -universal-analytics@^0.4.20: +universal-analytics@0.4.20: version "0.4.20" resolved "https://registry.yarnpkg.com/universal-analytics/-/universal-analytics-0.4.20.tgz#d6b64e5312bf74f7c368e3024a922135dbf24b03" integrity sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw== @@ -9395,6 +10019,11 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -9509,14 +10138,6 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -useragent@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" - integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== - dependencies: - lru-cache "4.1.x" - tmp "0.0.x" - util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -9571,11 +10192,21 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.0.0, uuid@^3.0.1, uuid@^3.3.2: +uuid@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.1.0.tgz#6f1536eb43249f473abc6bd58ff983da1ca30d8d" + integrity sha512-CI18flHDznR0lq54xBycOVmphdCYnQLKn8abKn7PXUiKUGdEd+/l9LWNJmugXel4hXq7S+RMNl34ecyC9TntWg== + +uuid@^3.0.0, uuid@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== +uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -9620,14 +10251,23 @@ void-elements@^2.0.0: resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= -watchpack@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" - integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== +watchpack-chokidar2@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" + integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.6.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa" + integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g== dependencies: - chokidar "^2.0.2" graceful-fs "^4.1.2" neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.0" + watchpack-chokidar2 "^2.0.0" wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" @@ -9651,7 +10291,7 @@ webdriver-js-extender@2.1.0: "@types/selenium-webdriver" "^3.0.0" selenium-webdriver "^3.0.1" -webdriver-manager@^12.0.6: +webdriver-manager@^12.1.7: version "12.1.7" resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.1.7.tgz#ed4eaee8f906b33c146e869b55e850553a1b1162" integrity sha512-XINj6b8CYuUYC93SG3xPkxlyUc3IJbD6Vvo75CVGuG9uzsefDzWQrhz0Lq8vbPxtb4d63CZdYophF8k8Or/YiA== @@ -9668,6 +10308,11 @@ webdriver-manager@^12.0.6: semver "^5.3.0" xml2js "^0.4.17" +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + webpack-dev-middleware@3.7.2, webpack-dev-middleware@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" @@ -9679,10 +10324,10 @@ webpack-dev-middleware@3.7.2, webpack-dev-middleware@^3.7.2: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz#27c3b5d0f6b6677c4304465ac817623c8b27b89c" - integrity sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw== +webpack-dev-server@3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" + integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -9692,31 +10337,31 @@ webpack-dev-server@3.9.0: debug "^4.1.1" del "^4.1.1" express "^4.17.1" - html-entities "^1.2.1" + html-entities "^1.3.1" http-proxy-middleware "0.19.1" import-local "^2.0.0" internal-ip "^4.3.0" ip "^1.1.5" is-absolute-url "^3.0.3" killable "^1.0.1" - loglevel "^1.6.4" + loglevel "^1.6.8" opn "^5.5.0" p-retry "^3.0.1" - portfinder "^1.0.25" + portfinder "^1.0.26" schema-utils "^1.0.0" selfsigned "^1.10.7" semver "^6.3.0" serve-index "^1.9.1" - sockjs "0.3.19" + sockjs "0.3.20" sockjs-client "1.4.0" - spdy "^4.0.1" + spdy "^4.0.2" strip-ansi "^3.0.1" supports-color "^6.1.0" url "^0.11.0" webpack-dev-middleware "^3.7.2" webpack-log "^2.0.0" ws "^6.2.1" - yargs "12.0.5" + yargs "^13.3.2" webpack-log@^2.0.0: version "2.0.0" @@ -9741,23 +10386,23 @@ webpack-sources@1.4.3, webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-s source-list-map "^2.0.0" source-map "~0.6.1" -webpack-subresource-integrity@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.3.4.tgz#4554e0c622d6787f880eba009cdb73139c107bad" - integrity sha512-6XbGYzjh30cGQT/NsC+9IAkJP8IL7/t47sbwR5DLSsamiD56Rwv4/+hsgEHsviPvrEFZ0JRAQtCRN3UsR2Pw9g== +webpack-subresource-integrity@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.4.1.tgz#e8bf918b444277df46a66cd84542cbcdc5a6272d" + integrity sha512-XMLFInbGbB1HV7K4vHWANzc1CN0t/c4bBvnlvGxGwV45yE/S/feAXIm8dJsCkzqWtSKnmaEgTp/meyeThxG4Iw== dependencies: webpack-sources "^1.3.0" -webpack@4.41.2: - version "4.41.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.2.tgz#c34ec76daa3a8468c9b61a50336d8e3303dce74e" - integrity sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A== +webpack@4.43.0: + version "4.43.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6" + integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.2.1" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" ajv "^6.10.2" ajv-keywords "^3.4.1" chrome-trace-event "^1.0.2" @@ -9768,15 +10413,22 @@ webpack@4.41.2: loader-utils "^1.2.3" memory-fs "^0.4.1" micromatch "^3.1.10" - mkdirp "^0.5.1" + mkdirp "^0.5.3" neo-async "^2.6.1" node-libs-browser "^2.2.1" schema-utils "^1.0.0" tapable "^1.1.3" - terser-webpack-plugin "^1.4.1" - watchpack "^1.6.0" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.1" webpack-sources "^1.4.1" +websocket-driver@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= + dependencies: + websocket-extensions ">=0.1.1" + websocket-driver@>=0.5.1: version "0.7.3" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" @@ -9791,6 +10443,20 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.1.0.tgz#c628acdcf45b82274ce7281ee31dd3c839791771" + integrity sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^5.0.0" + when@~3.6.x: version "3.6.4" resolved "https://registry.yarnpkg.com/when/-/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e" @@ -9822,11 +10488,6 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" @@ -9834,20 +10495,30 @@ worker-farm@^1.7.0: dependencies: errno "~0.1.7" -worker-plugin@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/worker-plugin/-/worker-plugin-3.2.0.tgz#ddae9f161b76fcbaacf8f54ecd037844584e43e7" - integrity sha512-W5nRkw7+HlbsEt3qRP6MczwDDISjiRj2GYt9+bpe8A2La00TmJdwzG5bpdMXhRt1qcWmwAvl1TiKaHRa+XDS9Q== +worker-plugin@4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/worker-plugin/-/worker-plugin-4.0.3.tgz#7c42e600d5931ad154d3d5f187a32446df64db0f" + integrity sha512-7hFDYWiKcE3yHZvemsoM9lZis/PzurHAEX1ej8PLCu818Rt6QqUAiDdxHPCKZctzmhqzPpcFSgvMCiPbtooqAg== dependencies: loader-utils "^1.1.0" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrappy@1: version "1.0.2" @@ -9880,14 +10551,17 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" -ws@~3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== +ws@^7.1.2: + version "7.3.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" + integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== + +ws@~6.1.0: + version "6.1.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" + integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA== dependencies: async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" xdg-basedir@^3.0.0: version "3.0.0" @@ -9929,7 +10603,7 @@ xxhashjs@^0.2.1: dependencies: cuint "^0.2.2" -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: +y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== @@ -9949,56 +10623,71 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^13.0.0: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== +yargs-parser@^18.1.0, yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== +yargs@15.3.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.0.tgz#403af6edc75b3ae04bf66c94202228ba119f0976" + integrity sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA== dependencies: - cliui "^4.0.0" + cliui "^6.0.0" decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" require-directory "^2.1.1" - require-main-filename "^1.0.1" + require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^2.0.0" + string-width "^4.2.0" which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" + y18n "^4.0.0" + yargs-parser "^18.1.0" -yargs@13.1.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.1.0.tgz#b2729ce4bfc0c584939719514099d8a916ad2301" - integrity sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg== +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== dependencies: - cliui "^4.0.0" + cliui "^5.0.0" find-up "^3.0.0" get-caller-file "^2.0.1" - os-locale "^3.1.0" require-directory "^2.1.1" require-main-filename "^2.0.0" set-blocking "^2.0.0" string-width "^3.0.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.0.0" + yargs-parser "^13.1.2" + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" yeast@0.1.2: version "0.1.2" @@ -10010,7 +10699,7 @@ yn@^2.0.0: resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" integrity sha1-5a2ryKz0CPY4X8dklWhMiOavaJo= -zone.js@~0.10.1: - version "0.10.2" - resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.10.2.tgz#67ca084b3116fc33fc40435e0d5ea40a207e392e" - integrity sha512-UAYfiuvxLN4oyuqhJwd21Uxb4CNawrq6fPS/05Su5L4G+1TN+HVDJMUHNMobVQDFJRir2cLAODXwluaOKB7HFg== +zone.js@~0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.10.3.tgz#3e5e4da03c607c9dcd92e37dd35687a14a140c16" + integrity sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg== From 3af24495881c02ad38798dda92d9e93e9a1aa0c0 Mon Sep 17 00:00:00 2001 From: Matt Mackay Date: Thu, 23 Jul 2020 08:05:35 -0400 Subject: [PATCH 0794/1134] build: set --incompatible_restrict_string_escapes and --incompatible_no_implicit_file_export (#2069) * build: changes to flip --incompatible_no_implicit_file_export #1508 * build: set --incompatible_restrict_string_escapes #1301 --- .bazelrc | 4 ++++ BUILD.bazel | 9 +++++++++ internal/node/BUILD.bazel | 6 ++++++ packages/cypress/BUILD.bazel | 8 ++++++++ packages/jasmine/BUILD.bazel | 2 ++ packages/karma/BUILD.bazel | 2 ++ packages/protractor/BUILD.bazel | 5 +++++ packages/rollup/BUILD.bazel | 5 ++++- packages/terser/BUILD.bazel | 5 +++++ 9 files changed, 45 insertions(+), 1 deletion(-) diff --git a/.bazelrc b/.bazelrc index d4bd44376c..6c5170f5b9 100644 --- a/.bazelrc +++ b/.bazelrc @@ -48,3 +48,7 @@ build:docker-sandbox --experimental_docker_verbose build:docker-sandbox --experimental_enable_docker_sandbox # This is the same image used on BazelCI rbe_ubuntu1604 job build:docker-sandbox --experimental_docker_image=gcr.io/cloud-marketplace/google/rbe-ubuntu16-04 + +# Incompatible flags to run with +build --incompatible_no_implicit_file_export +build --incompatible_restrict_string_escapes diff --git a/BUILD.bazel b/BUILD.bazel index d90464b6df..2736913c2b 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -25,8 +25,17 @@ exports_files([ "tsconfig.json", "package.json", "bootstrap.js", + "LICENSE", ]) +exports_files( + [ + "providers.bzl", + "index.for_docs.bzl", + ], + visibility = ["//docs:__subpackages__"], +) + bzl_library( name = "bzl", srcs = [ diff --git a/internal/node/BUILD.bazel b/internal/node/BUILD.bazel index f739ff9d0a..5e7e5660c0 100644 --- a/internal/node/BUILD.bazel +++ b/internal/node/BUILD.bazel @@ -17,6 +17,12 @@ load("@build_bazel_rules_nodejs//:index.bzl", "generated_file_test") package(default_visibility = ["//visibility:public"]) +exports_files([ + "node_patches.js", + "require_patch.js", + "loader.js", +]) + bzl_library( name = "bzl", srcs = glob(["*.bzl"]), diff --git a/packages/cypress/BUILD.bazel b/packages/cypress/BUILD.bazel index 3d43d0af28..ef7b3dc563 100644 --- a/packages/cypress/BUILD.bazel +++ b/packages/cypress/BUILD.bazel @@ -19,6 +19,14 @@ load("//third_party/github.com/bazelbuild/bazel-skylib:rules/copy_file.bzl", "co package(default_visibility = ["//visibility:public"]) +exports_files( + [ + "internal/plugins/index.template.js", + "internal/run-cypress.js", + ], + visibility = ["//packages/cypress/test:__subpackages__"], +) + codeowners( teams = ["@mrmeku"], ) diff --git a/packages/jasmine/BUILD.bazel b/packages/jasmine/BUILD.bazel index a3a8ea4a96..b4d04115cc 100644 --- a/packages/jasmine/BUILD.bazel +++ b/packages/jasmine/BUILD.bazel @@ -21,6 +21,8 @@ load("//third_party/github.com/bazelbuild/bazel-skylib:rules/copy_file.bzl", "co package(default_visibility = ["//visibility:public"]) +exports_files(["jasmine_runner.js"]) + bzl_library( name = "bzl", srcs = glob(["*.bzl"]), diff --git a/packages/karma/BUILD.bazel b/packages/karma/BUILD.bazel index 33de0e67fa..bd81678031 100644 --- a/packages/karma/BUILD.bazel +++ b/packages/karma/BUILD.bazel @@ -21,6 +21,8 @@ load("//third_party/github.com/bazelbuild/bazel-skylib:rules/copy_file.bzl", "co package(default_visibility = ["//visibility:public"]) +exports_files(["karma.conf.js"]) + ts_library( name = "bazel_karma_lib", srcs = glob(["*.ts"]), diff --git a/packages/protractor/BUILD.bazel b/packages/protractor/BUILD.bazel index ded57e7ab1..b19836d832 100644 --- a/packages/protractor/BUILD.bazel +++ b/packages/protractor/BUILD.bazel @@ -21,6 +21,11 @@ load("//third_party/github.com/bazelbuild/bazel-skylib:rules/copy_file.bzl", "co package(default_visibility = ["//visibility:public"]) +exports_files( + ["protractor.conf.js"], + visibility = ["//packages/protractor/test:__subpackages__"], +) + bzl_library( name = "bzl", testonly = True, diff --git a/packages/rollup/BUILD.bazel b/packages/rollup/BUILD.bazel index 4ce8266317..63e9f79e9b 100644 --- a/packages/rollup/BUILD.bazel +++ b/packages/rollup/BUILD.bazel @@ -23,7 +23,10 @@ codeowners( teams = ["@jbedard"], ) -exports_files(["rollup.config.js"]) +exports_files([ + "rollup.config.js", + "index.js", +]) bzl_library( name = "bzl", diff --git a/packages/terser/BUILD.bazel b/packages/terser/BUILD.bazel index c144b975fa..82636da724 100644 --- a/packages/terser/BUILD.bazel +++ b/packages/terser/BUILD.bazel @@ -21,6 +21,11 @@ package(default_visibility = ["//visibility:public"]) exports_files(["terser_config.default.json"]) +exports_files( + ["index.js"], + visibility = ["//packages/terser:__subpackages__"], +) + bzl_library( name = "bzl", srcs = glob(["*.bzl"]), From 9bec546c2333b5c816e9e8b614e46b37279482b2 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 23 Jul 2020 07:53:26 -0700 Subject: [PATCH 0795/1134] chore: fix release process to replace rc versions --- docs/install.md | 2 +- packages/create/index.js | 2 +- scripts/on-release.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/install.md b/docs/install.md index 2f20745cb0..ebd88a79b4 100644 --- a/docs/install.md +++ b/docs/install.md @@ -32,7 +32,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories") diff --git a/packages/create/index.js b/packages/create/index.js index 78a7ef8510..cec5dcc15d 100644 --- a/packages/create/index.js +++ b/packages/create/index.js @@ -158,7 +158,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0-rc.0/rules_nodejs-2.0.0-rc.0.tar.gz"], + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], ) ${pkgMgr === 'yarn' ? yarnInstallCmd : npmInstallCmd}`; diff --git a/scripts/on-release.js b/scripts/on-release.js index 7b11b44d1a..f3a6f799e0 100644 --- a/scripts/on-release.js +++ b/scripts/on-release.js @@ -13,7 +13,7 @@ const sha256 = hash.update(fs.readFileSync(artifact)).digest('hex'); for (const f of ['docs/install.md', 'packages/create/index.js']) { shell.sed( - '-i', 'download/[0-9\.]*/rules_nodejs-[0-9\.]*.tar.gz', + '-i', 'download/[0-9\.]*(-rc.[0-9]+)?/rules_nodejs-[0-9\.]*(-rc.[0-9]+)?.tar.gz', `download/${version}/rules_nodejs-${version}.tar.gz`, f); shell.sed('-i', 'sha256 = \"[0-9a-f]+\"', `sha256 = "${sha256}"`, f); } From 48b2705c905cf763a696175a3f96b77a99148621 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 23 Jul 2020 08:04:13 -0700 Subject: [PATCH 0796/1134] chore: add config for https://github.com/apps/stale --- .github/stale.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/stale.yml diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 0000000000..98f02a24a3 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,23 @@ +# See https://github.com/apps/stale + +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 60 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 14 +# Issues with these labels will never be considered stale +exemptLabels: + - "need: discussion" + - cleanup +# Label to use when marking an issue as stale +staleLabel: "Can Close?" +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + any activity for 60 days. + It will be closed if no further activity occurs in two weeks. + Collaborators can add a "cleanup" or "need: discussion" label to keep it open indefinitely. + Thanks for your contributions to rules_nodejs! +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: > + This issue was automatically closed because it went two weeks without a reply + since it was labelled "Can Close?" From aa8557db4acb6305d9640f26647d5a6d0978e716 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 23 Jul 2020 19:23:31 -0700 Subject: [PATCH 0797/1134] chore(release): 2.0.1 --- CHANGELOG.md | 9 +++++++++ docs/install.md | 4 ++-- e2e/bazel_managed_deps/WORKSPACE | 4 ++-- e2e/fine_grained_symlinks/WORKSPACE | 4 ++-- e2e/jasmine/WORKSPACE | 4 ++-- e2e/node_loader_no_preserve_symlinks/WORKSPACE | 4 ++-- e2e/node_loader_preserve_symlinks/WORKSPACE | 4 ++-- e2e/nodejs_image/WORKSPACE | 4 ++-- e2e/packages/WORKSPACE | 4 ++-- e2e/ts_devserver/WORKSPACE | 4 ++-- e2e/typescript/WORKSPACE | 4 ++-- e2e/webapp/WORKSPACE | 4 ++-- examples/angular/WORKSPACE | 4 ++-- examples/angular_bazel_architect/WORKSPACE | 4 ++-- examples/angular_view_engine/WORKSPACE | 4 ++-- examples/app/WORKSPACE | 4 ++-- examples/closure/WORKSPACE | 4 ++-- examples/create-react-app/WORKSPACE | 4 ++-- examples/cypress/WORKSPACE | 4 ++-- examples/jest/WORKSPACE | 4 ++-- examples/kotlin/WORKSPACE | 4 ++-- examples/nestjs/WORKSPACE | 4 ++-- examples/parcel/WORKSPACE | 4 ++-- examples/protocol_buffers/WORKSPACE | 4 ++-- examples/react_webpack/WORKSPACE | 4 ++-- examples/vendored_node/WORKSPACE | 4 ++-- examples/vendored_node_and_yarn/WORKSPACE | 4 ++-- examples/vue/WORKSPACE | 4 ++-- examples/web_testing/WORKSPACE | 4 ++-- examples/webapp/WORKSPACE | 4 ++-- examples/worker/WORKSPACE | 4 ++-- package.json | 2 +- packages/create/index.js | 4 ++-- version.bzl | 2 +- 34 files changed, 73 insertions(+), 64 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 80f3965abc..d0664abada 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## [2.0.1](https://github.com/bazelbuild/rules_nodejs/compare/2.0.0...2.0.1) (2020-07-24) + + +### Bug Fixes + +* **typescript:** ts_library should accept .tsx inputs ([065922b](https://github.com/bazelbuild/rules_nodejs/commit/065922b)) + + + # [2.0.0](https://github.com/bazelbuild/rules_nodejs/compare/2.0.0-rc.3...2.0.0) (2020-07-20) diff --git a/docs/install.md b/docs/install.md index ebd88a79b4..813b1fb0cf 100644 --- a/docs/install.md +++ b/docs/install.md @@ -31,8 +31,8 @@ containing: load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories") diff --git a/e2e/bazel_managed_deps/WORKSPACE b/e2e/bazel_managed_deps/WORKSPACE index 660422426e..48c80fe081 100644 --- a/e2e/bazel_managed_deps/WORKSPACE +++ b/e2e/bazel_managed_deps/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/fine_grained_symlinks/WORKSPACE b/e2e/fine_grained_symlinks/WORKSPACE index 5a544b82d1..f6b4648361 100644 --- a/e2e/fine_grained_symlinks/WORKSPACE +++ b/e2e/fine_grained_symlinks/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") diff --git a/e2e/jasmine/WORKSPACE b/e2e/jasmine/WORKSPACE index 5ff70df0f5..31d25b36ee 100644 --- a/e2e/jasmine/WORKSPACE +++ b/e2e/jasmine/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/node_loader_no_preserve_symlinks/WORKSPACE b/e2e/node_loader_no_preserve_symlinks/WORKSPACE index f9e2fcd6af..8b85296e66 100644 --- a/e2e/node_loader_no_preserve_symlinks/WORKSPACE +++ b/e2e/node_loader_no_preserve_symlinks/WORKSPACE @@ -9,8 +9,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") diff --git a/e2e/node_loader_preserve_symlinks/WORKSPACE b/e2e/node_loader_preserve_symlinks/WORKSPACE index b43726f263..729e1d1047 100644 --- a/e2e/node_loader_preserve_symlinks/WORKSPACE +++ b/e2e/node_loader_preserve_symlinks/WORKSPACE @@ -9,8 +9,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/nodejs_image/WORKSPACE b/e2e/nodejs_image/WORKSPACE index d4c34df147..cf66c757f4 100644 --- a/e2e/nodejs_image/WORKSPACE +++ b/e2e/nodejs_image/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/packages/WORKSPACE b/e2e/packages/WORKSPACE index 8f8628e78f..d63a0deb73 100644 --- a/e2e/packages/WORKSPACE +++ b/e2e/packages/WORKSPACE @@ -4,8 +4,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "check_rules_nodejs_version", "node_repositories", "npm_install", "yarn_install") diff --git a/e2e/ts_devserver/WORKSPACE b/e2e/ts_devserver/WORKSPACE index 706c38a842..cd69b90daa 100644 --- a/e2e/ts_devserver/WORKSPACE +++ b/e2e/ts_devserver/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/typescript/WORKSPACE b/e2e/typescript/WORKSPACE index 759dbc79ba..d583d0014b 100644 --- a/e2e/typescript/WORKSPACE +++ b/e2e/typescript/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/webapp/WORKSPACE b/e2e/webapp/WORKSPACE index 9e820085b9..afdea2dcb1 100644 --- a/e2e/webapp/WORKSPACE +++ b/e2e/webapp/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/angular/WORKSPACE b/examples/angular/WORKSPACE index 77519ac808..83dccf515f 100644 --- a/examples/angular/WORKSPACE +++ b/examples/angular/WORKSPACE @@ -16,8 +16,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch rules_nodejs so we can install our npm dependencies http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) # Fetch sass rules for compiling sass files diff --git a/examples/angular_bazel_architect/WORKSPACE b/examples/angular_bazel_architect/WORKSPACE index b54b65ed5c..cacc8fd4a5 100644 --- a/examples/angular_bazel_architect/WORKSPACE +++ b/examples/angular_bazel_architect/WORKSPACE @@ -12,8 +12,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) # The yarn_install rule runs yarn anytime the package.json or yarn.lock file changes. diff --git a/examples/angular_view_engine/WORKSPACE b/examples/angular_view_engine/WORKSPACE index f203f5ddca..1681177bf8 100644 --- a/examples/angular_view_engine/WORKSPACE +++ b/examples/angular_view_engine/WORKSPACE @@ -16,8 +16,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch rules_nodejs so we can install our npm dependencies http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) # Fetch sass rules for compiling sass files diff --git a/examples/app/WORKSPACE b/examples/app/WORKSPACE index 06d82ea0c5..1692502a14 100644 --- a/examples/app/WORKSPACE +++ b/examples/app/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/closure/WORKSPACE b/examples/closure/WORKSPACE index 6a684334ba..f778ed9446 100644 --- a/examples/closure/WORKSPACE +++ b/examples/closure/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/create-react-app/WORKSPACE b/examples/create-react-app/WORKSPACE index 7b3a2cb870..8db4f0e122 100644 --- a/examples/create-react-app/WORKSPACE +++ b/examples/create-react-app/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) http_archive( diff --git a/examples/cypress/WORKSPACE b/examples/cypress/WORKSPACE index 3bfc8f2510..a01a6e02ff 100644 --- a/examples/cypress/WORKSPACE +++ b/examples/cypress/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/jest/WORKSPACE b/examples/jest/WORKSPACE index 45c927b687..1a37927f56 100644 --- a/examples/jest/WORKSPACE +++ b/examples/jest/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/kotlin/WORKSPACE b/examples/kotlin/WORKSPACE index 2fa391e11c..72e48847de 100644 --- a/examples/kotlin/WORKSPACE +++ b/examples/kotlin/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) # Install external npm dependencies diff --git a/examples/nestjs/WORKSPACE b/examples/nestjs/WORKSPACE index fe44944796..9670d269b6 100644 --- a/examples/nestjs/WORKSPACE +++ b/examples/nestjs/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/parcel/WORKSPACE b/examples/parcel/WORKSPACE index 9294aba1cb..2206ce074a 100644 --- a/examples/parcel/WORKSPACE +++ b/examples/parcel/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "npm_install") diff --git a/examples/protocol_buffers/WORKSPACE b/examples/protocol_buffers/WORKSPACE index a72d80e876..dfea5012d4 100644 --- a/examples/protocol_buffers/WORKSPACE +++ b/examples/protocol_buffers/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) http_archive( diff --git a/examples/react_webpack/WORKSPACE b/examples/react_webpack/WORKSPACE index ed569177b7..8867148902 100644 --- a/examples/react_webpack/WORKSPACE +++ b/examples/react_webpack/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/vendored_node/WORKSPACE b/examples/vendored_node/WORKSPACE index 3323dee8d5..2e2ec98a97 100644 --- a/examples/vendored_node/WORKSPACE +++ b/examples/vendored_node/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) http_archive( diff --git a/examples/vendored_node_and_yarn/WORKSPACE b/examples/vendored_node_and_yarn/WORKSPACE index 95ea82830f..fce18a7b2e 100644 --- a/examples/vendored_node_and_yarn/WORKSPACE +++ b/examples/vendored_node_and_yarn/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) http_archive( diff --git a/examples/vue/WORKSPACE b/examples/vue/WORKSPACE index 6c5fc60348..cfa5e26f4e 100644 --- a/examples/vue/WORKSPACE +++ b/examples/vue/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "npm_install") diff --git a/examples/web_testing/WORKSPACE b/examples/web_testing/WORKSPACE index 07cbf491bd..671bd0b3a9 100644 --- a/examples/web_testing/WORKSPACE +++ b/examples/web_testing/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/webapp/WORKSPACE b/examples/webapp/WORKSPACE index 7aaccec873..8a501752bc 100644 --- a/examples/webapp/WORKSPACE +++ b/examples/webapp/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/worker/WORKSPACE b/examples/worker/WORKSPACE index eb4bf95c25..17cb138b0b 100644 --- a/examples/worker/WORKSPACE +++ b/examples/worker/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/package.json b/package.json index fbfa6794a4..50b3f6d447 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@bazel/javascript", "description": "Build JavaScript with Bazel", - "version": "2.0.0", + "version": "2.0.1", "keywords": [ "javascript", "bazel" diff --git a/packages/create/index.js b/packages/create/index.js index cec5dcc15d..1ad49bc193 100644 --- a/packages/create/index.js +++ b/packages/create/index.js @@ -157,8 +157,8 @@ workspace( load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "5bf77cc2d13ddf9124f4c1453dd96063774d755d4fc75d922471540d1c9a8ea8", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.0/rules_nodejs-2.0.0.tar.gz"], + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], ) ${pkgMgr === 'yarn' ? yarnInstallCmd : npmInstallCmd}`; diff --git a/version.bzl b/version.bzl index b70058852f..b8e9989477 100644 --- a/version.bzl +++ b/version.bzl @@ -19,4 +19,4 @@ # It will be automatically synced via the npm "version" script # that is run when running `npm version` during the release # process. See `Releasing` section in README.md. -VERSION = "2.0.0" +VERSION = "2.0.1" From 523dd9633263678013a7591aee2ffc97457934ff Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 23 Jul 2020 20:05:19 -0700 Subject: [PATCH 0798/1134] chore: update lock files for release --- examples/angular/package.json | 2 +- examples/angular/yarn.lock | 8 ++++---- examples/angular_bazel_architect/package.json | 4 ++-- examples/angular_bazel_architect/yarn.lock | 8 ++++---- examples/angular_view_engine/package.json | 2 +- examples/angular_view_engine/yarn.lock | 8 ++++---- examples/react_webpack/package.json | 2 +- examples/react_webpack/yarn.lock | 8 ++++---- 8 files changed, 21 insertions(+), 21 deletions(-) diff --git a/examples/angular/package.json b/examples/angular/package.json index 1fbda80020..21dd789829 100644 --- a/examples/angular/package.json +++ b/examples/angular/package.json @@ -36,7 +36,7 @@ "@bazel/angular": "^2.0.0", "@bazel/bazelisk": "^1.5.0", "@bazel/benchmark-runner": "^0.1.0", - "@bazel/buildifier": "^3.3.0", + "@bazel/buildifier": "^3.4.0", "@bazel/ibazel": "^0.13.1", "@bazel/karma": "^2.0.0", "@bazel/protractor": "^2.0.0", diff --git a/examples/angular/yarn.lock b/examples/angular/yarn.lock index dd89d130e9..068eb532ba 100644 --- a/examples/angular/yarn.lock +++ b/examples/angular/yarn.lock @@ -856,10 +856,10 @@ puppeteer "^0.13.0" tempy "^0.2.1" -"@bazel/buildifier@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@bazel/buildifier/-/buildifier-3.3.0.tgz#9c78a5efcea4a38abffdfb18eb8cf9a27babee66" - integrity sha512-Jaraa7jLW1OQBoWtTe2XDiuZwsg/YbWvCTys6nYXXRtNIkyoN6I/YZS4RlZj3nD7XlTMFk0yQD6+jpRpXhB6ZQ== +"@bazel/buildifier@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@bazel/buildifier/-/buildifier-3.4.0.tgz#44ce98b33bf8057f5398a78f7d1c564760b43f6c" + integrity sha512-TdugkgxAIxSyXSBZcLlntQKJ/rGV3LSMjlYuvRr3YtQBn/2sIfpHX0dcNZ7zdCPkev9cK0kpEs42MkmKHY9peQ== "@bazel/ibazel@0.3.1": version "0.3.1" diff --git a/examples/angular_bazel_architect/package.json b/examples/angular_bazel_architect/package.json index e14ea9e080..d63f6d77a5 100644 --- a/examples/angular_bazel_architect/package.json +++ b/examples/angular_bazel_architect/package.json @@ -34,7 +34,7 @@ "@angular/compiler-cli": "10.0.4", "@angular/language-service": "10.0.4", "@bazel/bazelisk": "^1.5.0", - "@bazel/buildifier": "^3.3.0", + "@bazel/buildifier": "^3.4.0", "@bazel/ibazel": "^0.13.1", "@types/jasmine": "~3.3.8", "@types/jasminewd2": "~2.0.3", @@ -54,4 +54,4 @@ "tslint": "~6.1.0", "typescript": "~3.9.7" } -} \ No newline at end of file +} diff --git a/examples/angular_bazel_architect/yarn.lock b/examples/angular_bazel_architect/yarn.lock index 83a8d4aac5..1c8dd96675 100644 --- a/examples/angular_bazel_architect/yarn.lock +++ b/examples/angular_bazel_architect/yarn.lock @@ -1205,10 +1205,10 @@ resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.5.0.tgz#61f583ed93be138b47be7180403938ea4057f54b" integrity sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg== -"@bazel/buildifier@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@bazel/buildifier/-/buildifier-3.3.0.tgz#9c78a5efcea4a38abffdfb18eb8cf9a27babee66" - integrity sha512-Jaraa7jLW1OQBoWtTe2XDiuZwsg/YbWvCTys6nYXXRtNIkyoN6I/YZS4RlZj3nD7XlTMFk0yQD6+jpRpXhB6ZQ== +"@bazel/buildifier@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@bazel/buildifier/-/buildifier-3.4.0.tgz#44ce98b33bf8057f5398a78f7d1c564760b43f6c" + integrity sha512-TdugkgxAIxSyXSBZcLlntQKJ/rGV3LSMjlYuvRr3YtQBn/2sIfpHX0dcNZ7zdCPkev9cK0kpEs42MkmKHY9peQ== "@bazel/ibazel@^0.13.1": version "0.13.1" diff --git a/examples/angular_view_engine/package.json b/examples/angular_view_engine/package.json index 68e17ccc6e..caa1ee6da4 100644 --- a/examples/angular_view_engine/package.json +++ b/examples/angular_view_engine/package.json @@ -34,7 +34,7 @@ "@babel/preset-env": "^7.6.0", "@bazel/bazelisk": "^1.5.0", "@bazel/benchmark-runner": "^0.1.0", - "@bazel/buildifier": "^3.3.0", + "@bazel/buildifier": "^3.4.0", "@bazel/ibazel": "^0.13.1", "@bazel/karma": "^2.0.0", "@bazel/protractor": "^2.0.0", diff --git a/examples/angular_view_engine/yarn.lock b/examples/angular_view_engine/yarn.lock index 4d75ef8a03..80d384c393 100644 --- a/examples/angular_view_engine/yarn.lock +++ b/examples/angular_view_engine/yarn.lock @@ -818,10 +818,10 @@ puppeteer "^0.13.0" tempy "^0.2.1" -"@bazel/buildifier@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@bazel/buildifier/-/buildifier-3.3.0.tgz#9c78a5efcea4a38abffdfb18eb8cf9a27babee66" - integrity sha512-Jaraa7jLW1OQBoWtTe2XDiuZwsg/YbWvCTys6nYXXRtNIkyoN6I/YZS4RlZj3nD7XlTMFk0yQD6+jpRpXhB6ZQ== +"@bazel/buildifier@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@bazel/buildifier/-/buildifier-3.4.0.tgz#44ce98b33bf8057f5398a78f7d1c564760b43f6c" + integrity sha512-TdugkgxAIxSyXSBZcLlntQKJ/rGV3LSMjlYuvRr3YtQBn/2sIfpHX0dcNZ7zdCPkev9cK0kpEs42MkmKHY9peQ== "@bazel/ibazel@0.3.1": version "0.3.1" diff --git a/examples/react_webpack/package.json b/examples/react_webpack/package.json index 430c36bbee..b0957e0b45 100644 --- a/examples/react_webpack/package.json +++ b/examples/react_webpack/package.json @@ -2,7 +2,7 @@ "private": true, "devDependencies": { "@bazel/bazelisk": "^1.5.0", - "@bazel/buildifier": "^3.3.0", + "@bazel/buildifier": "^3.4.0", "@bazel/ibazel": "^0.13.1", "@bazel/typescript": "^2.0.0", "@types/react": "^16.9.5", diff --git a/examples/react_webpack/yarn.lock b/examples/react_webpack/yarn.lock index 4be9d87486..0afef6ceca 100644 --- a/examples/react_webpack/yarn.lock +++ b/examples/react_webpack/yarn.lock @@ -7,10 +7,10 @@ resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.5.0.tgz#61f583ed93be138b47be7180403938ea4057f54b" integrity sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg== -"@bazel/buildifier@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@bazel/buildifier/-/buildifier-3.3.0.tgz#9c78a5efcea4a38abffdfb18eb8cf9a27babee66" - integrity sha512-Jaraa7jLW1OQBoWtTe2XDiuZwsg/YbWvCTys6nYXXRtNIkyoN6I/YZS4RlZj3nD7XlTMFk0yQD6+jpRpXhB6ZQ== +"@bazel/buildifier@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@bazel/buildifier/-/buildifier-3.4.0.tgz#44ce98b33bf8057f5398a78f7d1c564760b43f6c" + integrity sha512-TdugkgxAIxSyXSBZcLlntQKJ/rGV3LSMjlYuvRr3YtQBn/2sIfpHX0dcNZ7zdCPkev9cK0kpEs42MkmKHY9peQ== "@bazel/ibazel@^0.13.1": version "0.13.1" From 298cde4ed0b8dd96076dabfb754a68dbe9490c71 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 23 Jul 2020 21:29:00 -0700 Subject: [PATCH 0799/1134] chore: set default npm tag back to latest Now that we're past release candidate, all our releases will be latest until we get to 3.0-rc --- scripts/publish_release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/publish_release.sh b/scripts/publish_release.sh index c6a5202161..b769e713c8 100755 --- a/scripts/publish_release.sh +++ b/scripts/publish_release.sh @@ -11,7 +11,7 @@ set -u -e -o pipefail # $ npm login --registry https://wombat-dressing-room.appspot.com readonly NPM_COMMAND=${1:-publish} -readonly NPM_TAG=${2:-next} +readonly NPM_TAG=${2:-latest} readonly BAZEL_BIN=./node_modules/.bin/bazel # Use a new output_base so we get a clean build From ecafc24ecbfbddc37e1e28b32491cae5234072d6 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 23 Jul 2020 21:42:57 -0700 Subject: [PATCH 0800/1134] chore: don't consider assigned issues or those in milestones as stale --- .github/stale.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/stale.yml b/.github/stale.yml index 98f02a24a3..54d9430f9a 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -1,4 +1,4 @@ -# See https://github.com/apps/stale +# See https://github.com/probot/stale # Number of days of inactivity before an issue becomes stale daysUntilStale: 60 @@ -8,6 +8,8 @@ daysUntilClose: 14 exemptLabels: - "need: discussion" - cleanup +exemptMilestones: true +exemptAssignees: true # Label to use when marking an issue as stale staleLabel: "Can Close?" # Comment to post when marking an issue as stale. Set to `false` to disable From 4bc77adbd24e38fe5d27a246fae9744ce3b6719f Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Sun, 26 Jul 2020 11:29:41 -0700 Subject: [PATCH 0801/1134] docs: update master links to stable branch --- docs/TypeScript.md | 2 +- docs/examples.md | 32 ++++++++++----------- docs/repositories.md | 2 +- examples/angular/src/index.html | 2 +- packages/typescript/internal/ts_project.bzl | 2 +- packages/worker/README.md | 2 +- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/TypeScript.md b/docs/TypeScript.md index a78cc0a8a2..4654d12226 100755 --- a/docs/TypeScript.md +++ b/docs/TypeScript.md @@ -781,7 +781,7 @@ observe these problems which require workarounds: `error TS6305: Output file '/path/to/execroot/a.d.ts' has not been built from source file '/path/to/execroot/a.ts'.` As a workaround, you can give the Windows "fastbuild" output directory as the `outDir` in your tsconfig file. On other platforms, the value isn't read so it does no harm. - See https://github.com/bazelbuild/rules_nodejs/tree/master/packages/typescript/test/ts_project as an example. + See https://github.com/bazelbuild/rules_nodejs/tree/stable/packages/typescript/test/ts_project as an example. We hope this will be fixed in a future release of TypeScript; follow https://github.com/microsoft/TypeScript/issues/37378 diff --git a/docs/examples.md b/docs/examples.md index 69787db4da..d89ad52068 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -13,15 +13,15 @@ See Alex's post [Angular ❤️ Bazel update](https://dev.to/bazel/angular-bazel **Architect**: The first approach is the simplest: use Architect (aka. Angular CLI Builders). This is the build tool inside of Angular CLI, so your existing application will continue to work the same way. However, it has the worst performance because the level of incrementality is only as fine as how many libs your application is composed from. -Example: [examples/angular_bazel_architect](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/angular_bazel_architect) +Example: [examples/angular_bazel_architect](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/angular_bazel_architect) **Google**: This toolchain is what we originally advertised as "Angular, Bazel and CLI" (ABC). It is based on Google's internal toolchain for building Angular, and has good performance characteristics. However it is harder to migrate to, because it doesn't have good compatibility for existing applications. -The example has its own guide: [examples/angular](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/angular) +The example has its own guide: [examples/angular](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/angular) **View Engine**: If you're stuck on the older Angular compiler/runtime before Ivy, called View Engine, then your options are more limited. We don't support Angular 9 + View Engine + Bazel. -Example: [examples/angular_view_engine](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/angular_view_engine) +Example: [examples/angular_view_engine](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/angular_view_engine) ## React @@ -36,7 +36,7 @@ a bigger full-stack Bazel build, this might be the final step in the migration. However it will run `react-scripts` as a single Bazel action, which means that you gain no incrementality benefit. So we expect for most applications this is just a first step. -The [create-react-app example](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/create-react-app) +The [create-react-app example](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/create-react-app) shows how this will look. We suggest reading the README in that example, and also look at the commit history to that directory as an illustration of how we started from create-react-app and added Bazel bits. @@ -51,7 +51,7 @@ for you by maintainers of a project like create-react-app, who have a very high maintenance and support burden falls on them. However you'll need to understand both the tools as well as Bazel to successfully build your own toolchain. -There is a basic example at [examples/react_webpack](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/react_webpack) but it needs a lot more work to show everything that is possible! +There is a basic example at [examples/react_webpack](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/react_webpack) but it needs a lot more work to show everything that is possible! ## Vue @@ -65,7 +65,7 @@ None yet, please file an issue if you need this. ## Jest -There is a dedicated example for Jest: [examples/jest](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/jest) +There is a dedicated example for Jest: [examples/jest](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/jest) ## Cypress @@ -73,7 +73,7 @@ We have done some early work to run Cypress under Bazel. Follow https://github.c ## Mocha -Example at [examples/webapp](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/webapp) has a simple `mocha_test` +Example at [examples/webapp](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/webapp) has a simple `mocha_test` ## Karma and Protractor @@ -83,46 +83,46 @@ See Protractor usage in [examples/app](https://github.com/bazelbuild/rules_nodej ## Webpack -See [examples/react_webpack](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/react_webpack) +See [examples/react_webpack](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/react_webpack) ## Rollup -The example at [examples/webapp](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/webapp) uses Rollup, and produces an app with ES5 and ES2015 variants ("differential loading") that gives faster loading in modern browsers without dropping support for legacy ones. +The example at [examples/webapp](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/webapp) uses Rollup, and produces an app with ES5 and ES2015 variants ("differential loading") that gives faster loading in modern browsers without dropping support for legacy ones. ## Parcel -The example in [examples/parcel](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/parcel) shows how to write a custom rule, it happens to use the parcel binary to build. It's a very minimal example but might be enough to get you started. +The example in [examples/parcel](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/parcel) shows how to write a custom rule, it happens to use the parcel binary to build. It's a very minimal example but might be enough to get you started. # Language tooling ## LESS, Sass, Stylus -See styles directory inside the [examples/app](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/app/styles) example. +See styles directory inside the [examples/app](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/app/styles) example. ## TypeScript -Most of the examples show TypeScript usage. Also look in [packages/typescript/test](https://github.com/bazelbuild/rules_nodejs/tree/master/packages/typescript/test) for lots of handling of edge cases. +Most of the examples show TypeScript usage. Also look in [packages/typescript/test](https://github.com/bazelbuild/rules_nodejs/tree/stable/packages/typescript/test) for lots of handling of edge cases. ## Kotlin The Kotlin language can compile to JS. The result has a very large stdlib JS payload, so we don't recommend this for most uses. -Example at [examples/kotlin](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/kotlin) +Example at [examples/kotlin](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/kotlin) ## Google Closure Compiler [rules_closure](https://github.com/bazelbuild/rules_closure) is a whole-cloth approach to using Bazel if you're fully bought-into the Closure ecosystem. -[examples/closure](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/closure) shows a very simple way to call the closure compiler without jumping into that ecosystem. +[examples/closure](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/closure) shows a very simple way to call the closure compiler without jumping into that ecosystem. ## Protocol Buffers and gRPC Note: this is considered a "labs" feature in rules_nodejs, so support and stability are not great. gRPC is still a WIP. -See [examples/protocol_buffers](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/protocol_buffers) +See [examples/protocol_buffers](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/protocol_buffers) # Bazel-specific ## Bazel Persistent Workers -If you want to speed up Bazel by keeping some tools running warm in the background as daemons, there's a good readme in the [examples/worker](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/worker) +If you want to speed up Bazel by keeping some tools running warm in the background as daemons, there's a good readme in the [examples/worker](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/worker) diff --git a/docs/repositories.md b/docs/repositories.md index 79588d592b..fca1b59863 100644 --- a/docs/repositories.md +++ b/docs/repositories.md @@ -54,7 +54,7 @@ Commonly used ones are: - Sometimes you need a UMD bundle, but a package doesn't ship one. For example, the `ts_devserver` rule depends on third-party libraries having a named UMD entry point. The `@npm//foo:foo__umd` target will automatically run Browserify to convert the package's `main` entry into UMD. - DEPRECATED: A helper to install npm packages into their own Bazel repository: `@npm//:install_bazel_dependencies.bzl` provides a `install_bazel_dependencies` function. Some npm packages ship custom bazel rules, for example, the `@angular/bazel` package provides rules which you should load from `@npm_angular_bazel//:index.bzl`. However this causes the build to always fetch npm packages even when not needed, so we plan to remove this in a future release. -> One convenient (maybe also confusing) way to understand what BUILD files are generated is to look at our integration test at https://github.com/bazelbuild/rules_nodejs/tree/master/internal/npm_install/test/golden - this directory looks similar to the content of an `@npm` repository. +> One convenient (maybe also confusing) way to understand what BUILD files are generated is to look at our integration test at https://github.com/bazelbuild/rules_nodejs/tree/stable/internal/npm_install/test/golden - this directory looks similar to the content of an `@npm` repository. ### Generated macros for npm packages with `bin` entries diff --git a/examples/angular/src/index.html b/examples/angular/src/index.html index f668851ca3..79f3ffe445 100644 --- a/examples/angular/src/index.html +++ b/examples/angular/src/index.html @@ -80,7 +80,7 @@ mat-button="" tabindex="0" aria-disabled="false" - href="https://github.com/bazelbuild/rules_nodejs/tree/master/examples/angular" + href="https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/angular" >Example
Date: Mon, 27 Jul 2020 08:41:24 -0700 Subject: [PATCH 0802/1134] docs: add missing Cypress to leftnav (#2082) Also - fix link to my Bazel Leaving Labs post - don't point to generated API doc for angular/bazel package as that makes leftnav confusing - add some more explanation to Angular/React tradeoffs section --- docs/BUILD.bazel | 1 + docs/Cypress.md | 128 +++++++++++++++++++++++++++++++++++++ docs/_includes/drawer.html | 3 +- docs/examples.md | 21 ++++-- 4 files changed, 147 insertions(+), 6 deletions(-) create mode 100755 docs/Cypress.md diff --git a/docs/BUILD.bazel b/docs/BUILD.bazel index a0a7cd2797..eb16ffe8b8 100644 --- a/docs/BUILD.bazel +++ b/docs/BUILD.bazel @@ -55,6 +55,7 @@ genrule( _PACKAGE_READMES = { "Built-ins": ":builtins.doc", + "Cypress": "//packages/cypress:README.md", "Jasmine": "//packages/jasmine:README.md", "Karma": "//packages/karma:README.md", "Protractor": "//packages/protractor:README.md", diff --git a/docs/Cypress.md b/docs/Cypress.md new file mode 100755 index 0000000000..18d143db7c --- /dev/null +++ b/docs/Cypress.md @@ -0,0 +1,128 @@ +--- +title: Cypress +layout: default +stylesheet: docs +--- + +# Cypress rules for Bazel + +The Cypress rules run tests under the Cypress e2e testing framework with Bazel. + + +## Installation + +Add `@bazel/cypress`, `cypress` and `@cypress/browserify-preprocessor` npm packages to your `devDependencies` in `package.json`. + +``` +npm install --save-dev @bazel/cypress cypress @cypress/browserify-preprocessor +``` +or using yarn +``` +yarn add -D @bazel/cypress cypress @cypress/browserify-preprocessor +``` + +Then, load and invoke `cypress_repository` within your `WORKSPACE` file. + +```python +# Assuming your external repository for node_modules is named @npm + +load("@npm//@bazel/cypress:index.bzl", "cypress_repository") + +# The name you pass here names the external repository you can load cypress_web_test from +cypress_repository(name = "cypress") +``` + + +### macOS install requirements +On macOS, `cypress_repository` generates an external repository containing files whose names contain spaces. In order to make these files compatible with bazel you will need to add the following flag to your `.bazelrc` file: +```python +# Required for cypress_repository on macOS +build --experimental_inprocess_symlink_creation +``` + + +### windows install requirements +At this point in time, `cypress_repository` is incompatible with bazel sandboxing on Windows. This may change in the future, but for now using cypress on windows requires windows sandboxing be disabled (it is disabled by default) + + +## Example use of cypress_web_test +This example assumes you've named your external repository for node_modules as `npm` and for cypress as `cypress` +```python +load("@cypress//:index.bzl", "cypress_web_test") +load("@npm//@bazel/typescript:index.bzl", "ts_library") + +# You must create a cypress plugin in order to boot a server to serve your application. It can be written as a javascript file or in typescript using ts_library or ts_project. +ts_library( + name = "plugins_file", + testonly = True, + srcs = ["plugin.ts"], + tsconfig = ":tsconfig.json", + deps = [ + "@npm//@types/node", + "@npm//express", + ], +) + +# You can write your cypress tests a javascript files or in typescript using ts_library or ts_project. +ts_library( + name = "hello_spec", + testonly = True, + srcs = ["hello.spec.ts"], + tsconfig = ":tsconfig.json", + deps = [ + "@npm//cypress", + ], +) + +cypress_web_test( + # The name of your test target + name = "test", + srcs = [ + # Load javascript test files directly as sources + "world.spec.js", + # Load ts_library tests as a target to srcs + ":hello_spec", + ], + # A cypress config file is required + config_file = "cypress.json", + # Any runtime dependencies you need to boot your server or run your tests + data = [], + # Your cypress plugin used to configure cypress and boot your server + plugins_file = ":plugins_file", +) +```[name]: https://bazel.build/docs/build-ref.html#name +[label]: https://bazel.build/docs/build-ref.html#labels +[labels]: https://bazel.build/docs/build-ref.html#labels + + +## cypress_repository + + + + +### Usage + +``` +cypress_repository(name, cypress_bin, quiet) +``` + + + +#### `name` +(*[name], mandatory*): A unique name for this repository. + +#### `cypress_bin` +(*[label]*): bazel target of the cypress binary + +Defaults to `@npm//:node_modules/cypress/bin/cypress` + +#### `quiet` +(*Boolean*): If stdout and stderr should be printed to the terminal + +Defaults to `True` + diff --git a/docs/_includes/drawer.html b/docs/_includes/drawer.html index da735caa5e..67065e5928 100644 --- a/docs/_includes/drawer.html +++ b/docs/_includes/drawer.html @@ -41,12 +41,13 @@
  • Frameworks
  • Testing
      +
    • Cypress
    • Karma
    • Protractor
    • Jasmine
    • diff --git a/docs/examples.md b/docs/examples.md index d89ad52068..f56e334d48 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -9,13 +9,16 @@ stylesheet: docs ## Angular Bazel can run any toolchain you want, so there is more than one way to use it with Angular. -See Alex's post [Angular ❤️ Bazel update](https://dev.to/bazel/angular-bazel-update-n33-temp-slug-9563533?preview=d98c4fd0c1ad788b7f3e01eaf716c5b249d68b976a8697d07815023747be3b8f3277c2b182df7682a4efb81fac76056244b3ce9f7445110c70971bf8) for a longer explanation. +See Alex's post [Angular ❤️ Bazel update](https://dev.to/bazel/angular-bazel-leaving-angular-labs-51ja) for a longer explanation. -**Architect**: The first approach is the simplest: use Architect (aka. Angular CLI Builders). This is the build tool inside of Angular CLI, so your existing application will continue to work the same way. However, it has the worst performance because the level of incrementality is only as fine as how many libs your application is composed from. +**Architect**: The first approach is the simplest: use Architect (aka. Angular CLI Builders). This is the build tool inside of Angular CLI, so your existing application will continue to work the same way, and you can still get support from the Angular team. This may be a good choice if your goal is just to include an Angular app in a full-stack Bazel build that includes your backend, and making the Angular build&test faster is not important for you. + +However, it has the worst performance because the level of incrementality is only as fine as how many libs your application is composed from. +Bazel can only make a build more parallel and incremental if you express a wider dependency graph to it. Example: [examples/angular_bazel_architect](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/angular_bazel_architect) -**Google**: This toolchain is what we originally advertised as "Angular, Bazel and CLI" (ABC). It is based on Google's internal toolchain for building Angular, and has good performance characteristics. However it is harder to migrate to, because it doesn't have good compatibility for existing applications. +**Google**: This toolchain is what we originally advertised as "Angular Buildtools Convergence" (ABC). It is based on Google's internal toolchain for building Angular, and has good performance characteristics. However it is harder to migrate to, because it doesn't have good compatibility for existing applications. The example has its own guide: [examples/angular](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/angular) @@ -23,6 +26,11 @@ The example has its own guide: [examples/angular](https://github.com/bazelbuild/ Example: [examples/angular_view_engine](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/angular_view_engine) +**Custom**: Bazel is excellent for advanced use cases where you need to customize your toolchain. +Take any off-the-shelf tools, follow their README's to call their CLI, and assemble them together in a custom way. +This lets you take advantage of the latest JS ecosystem innovations without waiting for tooling vendors to +assemble it all together for you. + ## React Similar to the explanation above for Angular, Bazel is agnostic to what tools you choose to run on your project. @@ -40,8 +48,11 @@ The [create-react-app example](https://github.com/bazelbuild/rules_nodejs/tree/s shows how this will look. We suggest reading the README in that example, and also look at the commit history to that directory as an illustration of how we started from create-react-app and added Bazel bits. -**cra-eject**: As a next step to make our Build more incremental and performant, we follow the create-react-app suggestion -of "ejecting" the configuration. This means the `react-scripts` build system is gone, and Bazel can take its place. +**react-scripts-like**: As a next step to make our Build more incremental and performant, we can replace the `react-scripts` build system with Bazel, but preserve compatibility as much as possible by having Bazel run +mostly the same tools with mostly identical configuration. We continue to transpile TS to JS using Babel, for example, +but we do it in a build step before invoking Webpack, just using the Babel CLI. + +This is a good middle ground to get some benefits from Bazel while staying on the same supported tools as react-scripts. TODO(alexeagle): build an example illustrating how this looks From 857471eddf3d322e367d42581949e5514e4de15e Mon Sep 17 00:00:00 2001 From: 86 Date: Fri, 31 Jul 2020 12:35:32 +0900 Subject: [PATCH 0803/1134] fix: test file pattern (#2089) --- examples/create-react-app/BUILD.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/create-react-app/BUILD.bazel b/examples/create-react-app/BUILD.bazel index 38167d0669..382b3be9f8 100644 --- a/examples/create-react-app/BUILD.bazel +++ b/examples/create-react-app/BUILD.bazel @@ -8,7 +8,7 @@ _TESTS = [ "src/**/*.test.js*", "src/**/*.test.ts*", "src/**/*.spec.js*", - "src/**/*.test.ts*", + "src/**/*.spec.ts*", "src/**/__tests__/**/*.js*", "src/**/__tests__/**/*.ts*", ] From 23f80cf1f9f03ece9b547dfe4e4267e25a19d08e Mon Sep 17 00:00:00 2001 From: 86 Date: Thu, 30 Jul 2020 23:56:05 +0900 Subject: [PATCH 0804/1134] fix: remove duplicate Importing --- packages/labs/package.bzl | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/packages/labs/package.bzl b/packages/labs/package.bzl index aefa649ff3..b039f26891 100644 --- a/packages/labs/package.bzl +++ b/packages/labs/package.bzl @@ -22,16 +22,6 @@ def npm_bazel_labs_dependencies(): ], ) - _maybe( - http_archive, - name = "com_github_grpc_grpc_web", - sha256 = "04460e28ffa80bfc797a8758da10ba40107347ef0af8e9cc065ade10398da4bb", - strip_prefix = "grpc-web-1.0.7", - urls = [ - "https://github.com/grpc/grpc-web/archive/1.0.7.tar.gz", - ], - ) - _maybe( http_archive, name = "rules_proto", From e87ce09c8027e8bf3c16e4a3534a7dd2b906ddb3 Mon Sep 17 00:00:00 2001 From: Jason Bedard Date: Wed, 29 Jul 2020 10:14:26 -0700 Subject: [PATCH 0805/1134] chore: upgrade rollup to ^2.3.0 --- e2e/webapp/package.json | 2 +- e2e/webapp/yarn.lock | 34 +- examples/angular/package.json | 6 +- examples/angular/src/BUILD.bazel | 4 +- examples/angular/src/rollup.config.js | 6 +- examples/angular/yarn.lock | 130 +++++--- examples/angular_view_engine/package.json | 6 +- examples/angular_view_engine/src/BUILD.bazel | 4 +- .../angular_view_engine/src/rollup.config.js | 6 +- examples/angular_view_engine/yarn.lock | 122 ++++--- examples/from_source/package.json | 6 +- examples/kotlin/BUILD.bazel | 4 +- examples/kotlin/package-lock.json | 180 +++++++---- examples/kotlin/package.json | 6 +- examples/kotlin/rollup.config.js | 6 +- examples/protocol_buffers/BUILD.bazel | 4 +- examples/protocol_buffers/package.json | 6 +- examples/protocol_buffers/rollup.config.js | 6 +- examples/protocol_buffers/yarn.lock | 150 +++++---- examples/webapp/package.json | 2 +- examples/webapp/yarn.lock | 34 +- internal/generated_file_test/BUILD.bazel | 4 +- internal/generated_file_test/rollup.config.js | 6 +- internal/node/node_patches.js | 31 +- package.json | 10 +- packages/labs/test/grpc_web/BUILD.bazel | 4 +- packages/labs/test/grpc_web/rollup.config.js | 6 +- packages/node-patches/BUILD.bazel | 2 +- packages/node-patches/rollup.config.js | 2 +- packages/rollup/test/code_splitting/spec.js | 2 +- packages/rollup/test/integration/BUILD.bazel | 6 +- .../integration/golden.amd.js.map.sha256_ | 2 +- .../rollup/test/integration/golden.amd.js_ | 7 +- .../integration/golden.cjs.js.map.sha256_ | 2 +- .../rollup/test/integration/golden.cjs.js_ | 7 +- .../integration/golden.esm.js.map.sha256_ | 2 +- .../rollup/test/integration/golden.esm.js_ | 7 +- .../integration/golden.iife.js.map.sha256_ | 2 +- .../rollup/test/integration/golden.iife.js_ | 7 +- .../integration/golden.system.js.map.sha256_ | 2 +- .../rollup/test/integration/golden.system.js_ | 9 +- .../integration/golden.umd.js.map.sha256_ | 2 +- .../test/integration/golden.umd.js.sha256_ | 2 +- .../rollup/test/integration/golden.umd.js_ | 11 +- .../rollup/test/integration/rollup.config.js | 6 +- packages/rollup/test/plugins/BUILD.bazel | 2 +- packages/rollup/test/plugins/rollup.config.js | 2 +- yarn.lock | 302 +++++++++--------- 48 files changed, 643 insertions(+), 528 deletions(-) diff --git a/e2e/webapp/package.json b/e2e/webapp/package.json index a76c85aee5..266df3e1df 100644 --- a/e2e/webapp/package.json +++ b/e2e/webapp/package.json @@ -4,7 +4,7 @@ "devDependencies": { "@bazel/rollup": "^2.0.0", "@bazel/terser": "^2.0.0", - "rollup": "1.20.3", + "rollup": "2.3.0", "terser": "4.3.1" }, "scripts": { diff --git a/e2e/webapp/yarn.lock b/e2e/webapp/yarn.lock index 5ac2ac003c..3dccba7e26 100644 --- a/e2e/webapp/yarn.lock +++ b/e2e/webapp/yarn.lock @@ -12,21 +12,6 @@ resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0.tgz#a841db8aefd7c51c216b34a26bc02a6c93d5e56a" integrity sha512-6mBYcfzP6pWxycYZ8r4Lz5kgiWZ7n08bVHZBIRExFeqs7Yy92dD92LPeA9FZIzFiX00IuR9Q1Lqy23xH5q7FeQ== -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/node@^12.7.2": - version "12.7.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.8.tgz#cb1bf6800238898bc2ff6ffa5702c3cadd350708" - integrity sha512-FMdVn84tJJdV+xe+53sYiZS4R5yn1mAIxfj+DVoNiQjTYz1+OYmjwEZr1ev9nU0axXwda0QDbYl06QHanRVH3A== - -acorn@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" - integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== - buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -37,14 +22,17 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== -rollup@1.20.3: - version "1.20.3" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.20.3.tgz#6243f6c118ca05f56b2d9433112400cd834a1eb8" - integrity sha512-/OMCkY0c6E8tleeVm4vQVDz24CkVgvueK3r8zTYu2AQNpjrcaPwO9hE+pWj5LTFrvvkaxt4MYIp2zha4y0lRvg== - dependencies: - "@types/estree" "0.0.39" - "@types/node" "^12.7.2" - acorn "^7.0.0" +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +rollup@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.3.0.tgz#0b9e1c19bea22464958854dae646b8b40d2d3ed5" + integrity sha512-nIq2Z9YwNbEfqTlAXe/tVl8CwUsjX/8Q5Jxlx+JRoYCu5keKLc6k0zyt11sM6WtCDxhmmJEIosFy9y26ZFRx6w== + optionalDependencies: + fsevents "~2.1.2" source-map-support@~0.5.12: version "0.5.13" diff --git a/examples/angular/package.json b/examples/angular/package.json index 21dd789829..7e89fb3275 100644 --- a/examples/angular/package.json +++ b/examples/angular/package.json @@ -57,9 +57,9 @@ "karma-sourcemap-loader": "0.3.7", "protractor": "^5.4.2", "requirejs": "2.3.6", - "rollup": "^1.21.4", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-node-resolve": "^5.2.0", + "rollup": "^2.3.4", + "@rollup/plugin-commonjs": "^14.0.0", + "@rollup/plugin-node-resolve": "^8.4.0", "terser": "4.3.1", "typescript": "^3.9.0" }, diff --git a/examples/angular/src/BUILD.bazel b/examples/angular/src/BUILD.bazel index 73d4183348..3aa4ce0b1e 100644 --- a/examples/angular/src/BUILD.bazel +++ b/examples/angular/src/BUILD.bazel @@ -139,8 +139,8 @@ rollup_bundle( output_dir = True, deps = [ "//src", - "@npm//rollup-plugin-commonjs", - "@npm//rollup-plugin-node-resolve", + "@npm//@rollup/plugin-commonjs", + "@npm//@rollup/plugin-node-resolve", ], ) diff --git a/examples/angular/src/rollup.config.js b/examples/angular/src/rollup.config.js index 6f6d3727c5..e97bbe39d5 100644 --- a/examples/angular/src/rollup.config.js +++ b/examples/angular/src/rollup.config.js @@ -1,9 +1,9 @@ -const node = require('rollup-plugin-node-resolve'); -const commonjs = require('rollup-plugin-commonjs'); +const {nodeResolve} = require('@rollup/plugin-node-resolve'); +const commonjs = require('@rollup/plugin-commonjs'); module.exports = { plugins: [ - node({ + nodeResolve({ mainFields: ['browser', 'es2015', 'module', 'jsnext:main', 'main'], }), commonjs(), diff --git a/examples/angular/yarn.lock b/examples/angular/yarn.lock index 068eb532ba..86cf800365 100644 --- a/examples/angular/yarn.lock +++ b/examples/angular/yarn.lock @@ -973,6 +973,41 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= +"@rollup/plugin-commonjs@^14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-14.0.0.tgz#4285f9ec2db686a31129e5a2b415c94aa1f836f0" + integrity sha512-+PSmD9ePwTAeU106i9FRdc+Zb3XUWyW26mo5Atr2mk82hor8+nPwkztEjFo8/B1fJKfaQDg9aM2bzQkjhi7zOw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + commondir "^1.0.1" + estree-walker "^1.0.1" + glob "^7.1.2" + is-reference "^1.1.2" + magic-string "^0.25.2" + resolve "^1.11.0" + +"@rollup/plugin-node-resolve@^8.4.0": + version "8.4.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz#261d79a680e9dc3d86761c14462f24126ba83575" + integrity sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deep-freeze "^0.0.1" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.17.0" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@schematics/angular@10.0.0": version "10.0.0" resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-10.0.0.tgz#d74ec2207f1beb52c9e91c300495adb4413ed32a" @@ -1001,7 +1036,7 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== -"@types/estree@*", "@types/estree@0.0.39": +"@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== @@ -1036,10 +1071,10 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" integrity sha1-vShOV8hPEyXacCur/IKlMoGQwMU= -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" @@ -1082,11 +1117,6 @@ accepts@~1.3.5: mime-types "~2.1.18" negotiator "0.6.1" -acorn@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" - integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== - adm-zip@^0.4.9: version "0.4.13" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" @@ -1994,6 +2024,11 @@ commander@^2.8.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + compare-semver@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/compare-semver/-/compare-semver-1.1.0.tgz#7c0a79a27bb80b6c6994445f82958259d3d02153" @@ -2355,6 +2390,16 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +deep-freeze@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deep-freeze/-/deep-freeze-0.0.1.tgz#3a0b0005de18672819dfd38cd31f91179c893e84" + integrity sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ= + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -2671,10 +2716,10 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== esutils@^2.0.2: version "2.0.3" @@ -5414,6 +5459,11 @@ picomatch@^2.0.4, picomatch@^2.0.7: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== +picomatch@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -5883,13 +5933,20 @@ resolve@^1.10.0: dependencies: path-parse "^1.0.6" -resolve@^1.11.0, resolve@^1.11.1, resolve@^1.3.2: +resolve@^1.11.0, resolve@^1.3.2: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: path-parse "^1.0.6" +resolve@^1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" @@ -5958,43 +6015,12 @@ rimraf@^2.6.2: dependencies: glob "^7.1.3" -rollup-plugin-commonjs@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" - integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q== - dependencies: - estree-walker "^0.6.1" - is-reference "^1.1.2" - magic-string "^0.25.2" - resolve "^1.11.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-node-resolve@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" - integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== - dependencies: - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.11.1" - rollup-pluginutils "^2.8.1" - -rollup-pluginutils@^2.8.1: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^1.21.4: - version "1.22.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.22.0.tgz#a5b2672c0eebe9f2b6454220f785dbc09b64b4bc" - integrity sha512-x4l4ZrV/Mr/x/jvFTmwROdEAhbZjx16yDRTVSKWh/i4oJDuW2dVEbECT853mybYCz7BAitU8ElGlhx7dNjw3qQ== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" +rollup@^2.3.4: + version "2.23.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.23.0.tgz#b7ab1fee0c0e60132fd0553c4df1e9cdacfada9d" + integrity sha512-vLNmZFUGVwrnqNAJ/BvuLk1MtWzu4IuoqsH9UWK5AIdO3rt8/CSiJNvPvCIvfzrbNsqKbNzPAG1V2O4eTe2XZg== + optionalDependencies: + fsevents "~2.1.2" router@^1.3.1: version "1.3.3" diff --git a/examples/angular_view_engine/package.json b/examples/angular_view_engine/package.json index caa1ee6da4..83873c85d3 100644 --- a/examples/angular_view_engine/package.json +++ b/examples/angular_view_engine/package.json @@ -56,10 +56,10 @@ "patch-package": "^6.2.0", "protractor": "^5.4.2", "requirejs": "2.3.6", - "rollup": "^1.21.4", + "rollup": "^2.3.4", "rollup-plugin-amd": "^4.0.0", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-node-resolve": "^5.2.0", + "@rollup/plugin-commonjs": "^14.0.0", + "@rollup/plugin-node-resolve": "^8.4.0", "rollup-plugin-re": "^1.0.7", "terser": "4.3.1", "typescript": "3.4.5" diff --git a/examples/angular_view_engine/src/BUILD.bazel b/examples/angular_view_engine/src/BUILD.bazel index cec783340c..4ce8c3c85f 100644 --- a/examples/angular_view_engine/src/BUILD.bazel +++ b/examples/angular_view_engine/src/BUILD.bazel @@ -145,9 +145,9 @@ rollup_bundle( deps = [ "//:examples_angular_view_engine", "//src", + "@npm//@rollup/plugin-commonjs", + "@npm//@rollup/plugin-node-resolve", "@npm//rollup-plugin-amd", - "@npm//rollup-plugin-commonjs", - "@npm//rollup-plugin-node-resolve", "@npm//rollup-plugin-re", ], ) diff --git a/examples/angular_view_engine/src/rollup.config.js b/examples/angular_view_engine/src/rollup.config.js index 276e6750fa..931fea23d3 100644 --- a/examples/angular_view_engine/src/rollup.config.js +++ b/examples/angular_view_engine/src/rollup.config.js @@ -1,5 +1,5 @@ -const node = require('rollup-plugin-node-resolve'); -const commonjs = require('rollup-plugin-commonjs'); +const {nodeResolve} = require('@rollup/plugin-node-resolve'); +const commonjs = require('@rollup/plugin-commonjs'); const amd = require('rollup-plugin-amd'); const replace = require('rollup-plugin-re'); @@ -14,7 +14,7 @@ module.exports = { replace: '', }] }), - node({ + nodeResolve({ mainFields: ['browser', 'es2015', 'module', 'jsnext:main', 'main'], }), amd({ diff --git a/examples/angular_view_engine/yarn.lock b/examples/angular_view_engine/yarn.lock index 80d384c393..e9e4c49f37 100644 --- a/examples/angular_view_engine/yarn.lock +++ b/examples/angular_view_engine/yarn.lock @@ -964,6 +964,41 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= +"@rollup/plugin-commonjs@^14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-14.0.0.tgz#4285f9ec2db686a31129e5a2b415c94aa1f836f0" + integrity sha512-+PSmD9ePwTAeU106i9FRdc+Zb3XUWyW26mo5Atr2mk82hor8+nPwkztEjFo8/B1fJKfaQDg9aM2bzQkjhi7zOw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + commondir "^1.0.1" + estree-walker "^1.0.1" + glob "^7.1.2" + is-reference "^1.1.2" + magic-string "^0.25.2" + resolve "^1.11.0" + +"@rollup/plugin-node-resolve@^8.4.0": + version "8.4.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz#261d79a680e9dc3d86761c14462f24126ba83575" + integrity sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deep-freeze "^0.0.1" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.17.0" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@rushstack/node-core-library@3.25.0": version "3.25.0" resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.25.0.tgz#ba40bc1b188ab5d31f5705999cd2b3b56b8a32cf" @@ -1013,7 +1048,7 @@ resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== -"@types/estree@*", "@types/estree@0.0.39": +"@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== @@ -1053,10 +1088,10 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" integrity sha1-vShOV8hPEyXacCur/IKlMoGQwMU= -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" @@ -1114,11 +1149,6 @@ accepts@~1.3.5: mime-types "~2.1.18" negotiator "0.6.1" -acorn@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" - integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== - adm-zip@^0.4.9: version "0.4.13" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" @@ -1974,6 +2004,11 @@ commander@^2.7.1, commander@^2.8.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + compare-semver@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/compare-semver/-/compare-semver-1.1.0.tgz#7c0a79a27bb80b6c6994445f82958259d3d02153" @@ -2335,6 +2370,16 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +deep-freeze@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deep-freeze/-/deep-freeze-0.0.1.tgz#3a0b0005de18672819dfd38cd31f91179c893e84" + integrity sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ= + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -2679,6 +2724,11 @@ estree-walker@^0.6.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -3198,6 +3248,11 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -5431,6 +5486,11 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picomatch@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -5917,14 +5977,14 @@ resolve@^1.10.0: dependencies: path-parse "^1.0.6" -resolve@^1.11.0, resolve@^1.11.1, resolve@^1.3.2: +resolve@^1.11.0, resolve@^1.3.2: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: path-parse "^1.0.6" -resolve@~1.17.0: +resolve@^1.17.0, resolve@~1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -5993,28 +6053,6 @@ rollup-plugin-amd@^4.0.0: "@buxlabs/amd-to-es6" "^0.13.3" rollup-pluginutils "^2.3.3" -rollup-plugin-commonjs@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" - integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q== - dependencies: - estree-walker "^0.6.1" - is-reference "^1.1.2" - magic-string "^0.25.2" - resolve "^1.11.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-node-resolve@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" - integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== - dependencies: - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.11.1" - rollup-pluginutils "^2.8.1" - rollup-plugin-re@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/rollup-plugin-re/-/rollup-plugin-re-1.0.7.tgz#fe174704ed59cda84caf02bd013b582e6fdaa4f6" @@ -6023,21 +6061,19 @@ rollup-plugin-re@^1.0.7: magic-string "^0.16.0" rollup-pluginutils "^2.0.1" -rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.3.3, rollup-pluginutils@^2.8.1: +rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.3.3: version "2.8.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== dependencies: estree-walker "^0.6.1" -rollup@^1.21.4: - version "1.22.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.22.0.tgz#a5b2672c0eebe9f2b6454220f785dbc09b64b4bc" - integrity sha512-x4l4ZrV/Mr/x/jvFTmwROdEAhbZjx16yDRTVSKWh/i4oJDuW2dVEbECT853mybYCz7BAitU8ElGlhx7dNjw3qQ== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" +rollup@^2.3.4: + version "2.23.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.23.0.tgz#b7ab1fee0c0e60132fd0553c4df1e9cdacfada9d" + integrity sha512-vLNmZFUGVwrnqNAJ/BvuLk1MtWzu4IuoqsH9UWK5AIdO3rt8/CSiJNvPvCIvfzrbNsqKbNzPAG1V2O4eTe2XZg== + optionalDependencies: + fsevents "~2.1.2" router@^1.3.1: version "1.3.3" diff --git a/examples/from_source/package.json b/examples/from_source/package.json index bfb9bd8a32..25e37d173b 100644 --- a/examples/from_source/package.json +++ b/examples/from_source/package.json @@ -4,9 +4,9 @@ "devDependencies": { "@types/node": "12.12.50", "protobufjs": "6.10.1", - "rollup": "2.22.1", - "rollup-plugin-commonjs": "10.1.0", - "rollup-plugin-node-resolve": "5.2.0", + "rollup": "2.3.4", + "@rollup/plugin-commonjs": "^14.0.0", + "@rollup/plugin-node-resolve": "8.4.0", "source-map-support": "0.5.19", "tsickle": "0.39.1", "tsutils": "3.17.1", diff --git a/examples/kotlin/BUILD.bazel b/examples/kotlin/BUILD.bazel index b7ef60ebf3..db45b11943 100644 --- a/examples/kotlin/BUILD.bazel +++ b/examples/kotlin/BUILD.bazel @@ -39,10 +39,10 @@ rollup_bundle( format = "cjs", output_dir = True, deps = [ + "@npm//@rollup/plugin-commonjs", + "@npm//@rollup/plugin-node-resolve", "@npm//kotlin", "@npm//kotlinx-html-js", - "@npm//rollup-plugin-commonjs", - "@npm//rollup-plugin-node-resolve", ], ) diff --git a/examples/kotlin/package-lock.json b/examples/kotlin/package-lock.json index d1c844792a..25816b18ab 100644 --- a/examples/kotlin/package-lock.json +++ b/examples/kotlin/package-lock.json @@ -37,6 +37,83 @@ "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", "dev": true }, + "@rollup/plugin-commonjs": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-14.0.0.tgz", + "integrity": "sha512-+PSmD9ePwTAeU106i9FRdc+Zb3XUWyW26mo5Atr2mk82hor8+nPwkztEjFo8/B1fJKfaQDg9aM2bzQkjhi7zOw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8", + "commondir": "^1.0.1", + "estree-walker": "^1.0.1", + "glob": "^7.1.2", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@rollup/plugin-node-resolve": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz", + "integrity": "sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deep-freeze": "^0.0.1", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.17.0" + }, + "dependencies": { + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", @@ -62,24 +139,9 @@ "dev": true }, "@types/node": { - "version": "12.7.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.8.tgz", - "integrity": "sha512-FMdVn84tJJdV+xe+53sYiZS4R5yn1mAIxfj+DVoNiQjTYz1+OYmjwEZr1ev9nU0axXwda0QDbYl06QHanRVH3A==", - "dev": true - }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", + "version": "14.0.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.26.tgz", + "integrity": "sha512-W+fpe5s91FBGE0pEa0lnqGLL4USgpLgs4nokw16SrBBco/gQxuua7KnArSEOd5iaMqbbSHV10vUDkJYJJqpXKA==", "dev": true }, "ansi-regex": { @@ -197,6 +259,12 @@ "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -244,6 +312,18 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "deep-freeze": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", + "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "domino": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/domino/-/domino-2.1.3.tgz", @@ -276,12 +356,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "eventemitter3": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", @@ -323,6 +397,13 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, "furi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/furi/-/furi-2.0.0.tgz", @@ -648,6 +729,12 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, "portfinder": { "version": "1.0.24", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.24.tgz", @@ -719,49 +806,12 @@ } }, "rollup": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.20.3.tgz", - "integrity": "sha512-/OMCkY0c6E8tleeVm4vQVDz24CkVgvueK3r8zTYu2AQNpjrcaPwO9hE+pWj5LTFrvvkaxt4MYIp2zha4y0lRvg==", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "@types/node": "^12.7.2", - "acorn": "^7.0.0" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.3.4.tgz", + "integrity": "sha512-8U9x54RCVhrUEV1zon4Pp8kokg1HM0fwzf5vkwe2/rOfyTClarx5e27kFlaoZ7ofJiazWkNQ+dgdG4HuZxkQ9A==", "dev": true, "requires": { - "estree-walker": "^0.6.1" + "fsevents": "~2.1.2" } }, "safe-buffer": { diff --git a/examples/kotlin/package.json b/examples/kotlin/package.json index c9c7fac4f2..7f8bfb242c 100644 --- a/examples/kotlin/package.json +++ b/examples/kotlin/package.json @@ -10,9 +10,9 @@ "jasmine": "^3.5.0", "kotlin": "^1.3.41", "kotlinx-html-js": "^0.6.4", - "rollup": "1.20.3", - "rollup-plugin-commonjs": "10.1.0", - "rollup-plugin-node-resolve": "5.2.0", + "rollup": "2.3.4", + "@rollup/plugin-commonjs": "14.0.0", + "@rollup/plugin-node-resolve": "8.4.0", "terser": "4.3.1" }, "scripts": { diff --git a/examples/kotlin/rollup.config.js b/examples/kotlin/rollup.config.js index 6f6d3727c5..e97bbe39d5 100644 --- a/examples/kotlin/rollup.config.js +++ b/examples/kotlin/rollup.config.js @@ -1,9 +1,9 @@ -const node = require('rollup-plugin-node-resolve'); -const commonjs = require('rollup-plugin-commonjs'); +const {nodeResolve} = require('@rollup/plugin-node-resolve'); +const commonjs = require('@rollup/plugin-commonjs'); module.exports = { plugins: [ - node({ + nodeResolve({ mainFields: ['browser', 'es2015', 'module', 'jsnext:main', 'main'], }), commonjs(), diff --git a/examples/protocol_buffers/BUILD.bazel b/examples/protocol_buffers/BUILD.bazel index 86470b8771..3753ca574e 100644 --- a/examples/protocol_buffers/BUILD.bazel +++ b/examples/protocol_buffers/BUILD.bazel @@ -88,8 +88,8 @@ rollup_bundle( deps = [ ":app", "@npm//:node_modules", - "@npm//rollup-plugin-commonjs", - "@npm//rollup-plugin-node-resolve", + "@npm//@rollup/plugin-commonjs", + "@npm//@rollup/plugin-node-resolve", ], ) diff --git a/examples/protocol_buffers/package.json b/examples/protocol_buffers/package.json index b71604ad12..76ba98da3c 100644 --- a/examples/protocol_buffers/package.json +++ b/examples/protocol_buffers/package.json @@ -22,9 +22,9 @@ "protobufjs": "5.0.3", "protractor": "^5.4.2", "requirejs": "2.3.6", - "rollup": "1.20.3", - "rollup-plugin-commonjs": "10.1.0", - "rollup-plugin-node-resolve": "5.2.0", + "rollup": "2.3.4", + "@rollup/plugin-commonjs": "14.0.0", + "@rollup/plugin-node-resolve": "8.4.0", "terser": "4.3.1", "typescript": "^3.3.1" }, diff --git a/examples/protocol_buffers/rollup.config.js b/examples/protocol_buffers/rollup.config.js index acd72720ea..02201d44c4 100644 --- a/examples/protocol_buffers/rollup.config.js +++ b/examples/protocol_buffers/rollup.config.js @@ -1,9 +1,9 @@ -const commonjs = require('rollup-plugin-commonjs'); -const nodeRequire = require('rollup-plugin-node-resolve'); +const commonjs = require('@rollup/plugin-commonjs'); +const {nodeResolve} = require('@rollup/plugin-node-resolve'); module.exports = { plugins: [ - nodeRequire(), + nodeResolve(), commonjs(), ], }; \ No newline at end of file diff --git a/examples/protocol_buffers/yarn.lock b/examples/protocol_buffers/yarn.lock index fad1885275..09488a0710 100644 --- a/examples/protocol_buffers/yarn.lock +++ b/examples/protocol_buffers/yarn.lock @@ -92,6 +92,41 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= +"@rollup/plugin-commonjs@14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-14.0.0.tgz#4285f9ec2db686a31129e5a2b415c94aa1f836f0" + integrity sha512-+PSmD9ePwTAeU106i9FRdc+Zb3XUWyW26mo5Atr2mk82hor8+nPwkztEjFo8/B1fJKfaQDg9aM2bzQkjhi7zOw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + commondir "^1.0.1" + estree-walker "^1.0.1" + glob "^7.1.2" + is-reference "^1.1.2" + magic-string "^0.25.2" + resolve "^1.11.0" + +"@rollup/plugin-node-resolve@8.4.0": + version "8.4.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz#261d79a680e9dc3d86761c14462f24126ba83575" + integrity sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deep-freeze "^0.0.1" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.17.0" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" @@ -122,20 +157,15 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.21.tgz#4a9db7ef1d1671c0015e632c5fa3d46c86c58c1e" integrity sha512-nuFlRdBiqbF+PJIEVxm2jLFcQWN7q7iWEJGsBV4n7v1dbI9qXB8im2pMMKMCUZe092sQb5SQft2DHfuQGK5hqQ== -"@types/node@^12.7.2": - version "12.7.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.8.tgz#cb1bf6800238898bc2ff6ffa5702c3cadd350708" - integrity sha512-FMdVn84tJJdV+xe+53sYiZS4R5yn1mAIxfj+DVoNiQjTYz1+OYmjwEZr1ev9nU0axXwda0QDbYl06QHanRVH3A== - "@types/q@^0.0.32": version "0.0.32" resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" integrity sha1-vShOV8hPEyXacCur/IKlMoGQwMU= -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" @@ -157,11 +187,6 @@ accepts@~1.3.4: mime-types "~2.1.24" negotiator "0.6.2" -acorn@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" - integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== - adm-zip@^0.4.9: version "0.4.13" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" @@ -614,6 +639,11 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -744,6 +774,16 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +deep-freeze@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deep-freeze/-/deep-freeze-0.0.1.tgz#3a0b0005de18672819dfd38cd31f91179c893e84" + integrity sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ= + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -941,10 +981,10 @@ escape-string-regexp@^1.0.2: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== eventemitter3@^4.0.0: version "4.0.0" @@ -1120,6 +1160,11 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -1171,6 +1216,18 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.2: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + 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" + globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" @@ -2212,6 +2269,11 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picomatch@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -2459,13 +2521,20 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.11.0, resolve@^1.11.1: +resolve@^1.11.0: version "1.15.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== dependencies: path-parse "^1.0.6" +resolve@^1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -2483,43 +2552,12 @@ rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimra dependencies: glob "^7.1.3" -rollup-plugin-commonjs@10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" - integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q== - dependencies: - estree-walker "^0.6.1" - is-reference "^1.1.2" - magic-string "^0.25.2" - resolve "^1.11.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-node-resolve@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" - integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== - dependencies: - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.11.1" - rollup-pluginutils "^2.8.1" - -rollup-pluginutils@^2.8.1: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@1.20.3: - version "1.20.3" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.20.3.tgz#6243f6c118ca05f56b2d9433112400cd834a1eb8" - integrity sha512-/OMCkY0c6E8tleeVm4vQVDz24CkVgvueK3r8zTYu2AQNpjrcaPwO9hE+pWj5LTFrvvkaxt4MYIp2zha4y0lRvg== - dependencies: - "@types/estree" "0.0.39" - "@types/node" "^12.7.2" - acorn "^7.0.0" +rollup@2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.3.4.tgz#979e461f8cab1a71aec2d37ce2a434052ae70223" + integrity sha512-8U9x54RCVhrUEV1zon4Pp8kokg1HM0fwzf5vkwe2/rOfyTClarx5e27kFlaoZ7ofJiazWkNQ+dgdG4HuZxkQ9A== + optionalDependencies: + fsevents "~2.1.2" safe-buffer@^5.0.1, safe-buffer@^5.1.2: version "5.2.0" diff --git a/examples/webapp/package.json b/examples/webapp/package.json index 46dd8143b9..2174c7a7ef 100644 --- a/examples/webapp/package.json +++ b/examples/webapp/package.json @@ -11,7 +11,7 @@ "http-server": "^0.11.1", "mocha": "^6.2.1", "protractor": "^5.4.2", - "rollup": "1.21.4", + "rollup": "2.3.0", "source-map": "^0.7.3", "terser": "^4.3.1", "typescript": "^3.1.6" diff --git a/examples/webapp/yarn.lock b/examples/webapp/yarn.lock index f4a164e0f8..fe9af6635b 100644 --- a/examples/webapp/yarn.lock +++ b/examples/webapp/yarn.lock @@ -733,11 +733,6 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - "@types/long@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.0.tgz#719551d2352d301ac8b81db732acb6bdc28dbdef" @@ -748,11 +743,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.21.tgz#4a9db7ef1d1671c0015e632c5fa3d46c86c58c1e" integrity sha512-nuFlRdBiqbF+PJIEVxm2jLFcQWN7q7iWEJGsBV4n7v1dbI9qXB8im2pMMKMCUZe092sQb5SQft2DHfuQGK5hqQ== -"@types/node@^12.7.5": - version "12.7.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.8.tgz#cb1bf6800238898bc2ff6ffa5702c3cadd350708" - integrity sha512-FMdVn84tJJdV+xe+53sYiZS4R5yn1mAIxfj+DVoNiQjTYz1+OYmjwEZr1ev9nU0axXwda0QDbYl06QHanRVH3A== - "@types/q@^0.0.32": version "0.0.32" resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" @@ -768,11 +758,6 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -acorn@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" - integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== - adm-zip@^0.4.9: version "0.4.13" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" @@ -1557,6 +1542,11 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -2881,14 +2871,12 @@ rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1: dependencies: glob "^7.1.3" -rollup@1.21.4: - version "1.21.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.21.4.tgz#00a41a30f90095db890301b226cbe2918e4cf54d" - integrity sha512-Pl512XVCmVzgcBz5h/3Li4oTaoDcmpuFZ+kdhS/wLreALz//WuDAMfomD3QEYl84NkDu6Z6wV9twlcREb4qQsw== - dependencies: - "@types/estree" "0.0.39" - "@types/node" "^12.7.5" - acorn "^7.0.0" +rollup@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.3.0.tgz#0b9e1c19bea22464958854dae646b8b40d2d3ed5" + integrity sha512-nIq2Z9YwNbEfqTlAXe/tVl8CwUsjX/8Q5Jxlx+JRoYCu5keKLc6k0zyt11sM6WtCDxhmmJEIosFy9y26ZFRx6w== + optionalDependencies: + fsevents "~2.1.2" safe-buffer@^5.0.1, safe-buffer@^5.1.2: version "5.2.0" diff --git a/internal/generated_file_test/BUILD.bazel b/internal/generated_file_test/BUILD.bazel index 22e0cc2f9a..43af53771c 100644 --- a/internal/generated_file_test/BUILD.bazel +++ b/internal/generated_file_test/BUILD.bazel @@ -31,8 +31,8 @@ rollup_bundle( entry_point = "bin.js", sourcemap = "hidden", deps = [ - "@npm//rollup-plugin-commonjs", - "@npm//rollup-plugin-node-resolve", + "@npm//@rollup/plugin-commonjs", + "@npm//@rollup/plugin-node-resolve", "@npm//unidiff", ], ) diff --git a/internal/generated_file_test/rollup.config.js b/internal/generated_file_test/rollup.config.js index 91086703b3..9e782fcec9 100644 --- a/internal/generated_file_test/rollup.config.js +++ b/internal/generated_file_test/rollup.config.js @@ -1,9 +1,9 @@ -const commonjs = require('rollup-plugin-commonjs'); -const nodeRequire = require('rollup-plugin-node-resolve'); +const commonjs = require('@rollup/plugin-commonjs'); +const {nodeResolve} = require('@rollup/plugin-node-resolve'); module.exports = { plugins: [ - nodeRequire(), + nodeResolve(), commonjs(), ], }; diff --git a/internal/node/node_patches.js b/internal/node/node_patches.js index ad98f2ecec..860076e31f 100644 --- a/internal/node/node_patches.js +++ b/internal/node/node_patches.js @@ -9,12 +9,18 @@ var fs$1 = _interopDefault(require('fs')); var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; -function unwrapExports (x) { - return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +function createCommonjsModule(fn, basedir, module) { + return module = { + path: basedir, + exports: {}, + require: function (path, base) { + return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); + } + }, fn(module, module.exports), module.exports; } -function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; +function commonjsRequire () { + throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); } var fs = createCommonjsModule(function (module, exports) { @@ -541,10 +547,6 @@ function once(fn) { } }); -unwrapExports(fs); -var fs_1 = fs.patcher; -var fs_2 = fs.escapeFunction; - var subprocess = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); // this does not actually patch child_process @@ -610,9 +612,6 @@ fi }; }); -unwrapExports(subprocess); -var subprocess_1 = subprocess.patcher; - var src = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); /** @@ -637,10 +636,6 @@ exports.fs = fs.patcher; exports.subprocess = subprocess.patcher; }); -unwrapExports(src); -var src_1 = src.fs; -var src_2 = src.subprocess; - /** * @license * Copyright 2019 The Bazel Authors. All rights reserved. @@ -673,9 +668,3 @@ else if (VERBOSE_LOGS) { console.error(`bazel node patches disabled. set environment BAZEL_PATCH_ROOT`); } src.subprocess(__filename, NP_SUBPROCESS_NODE_DIR); - -var register = { - -}; - -module.exports = register; diff --git a/package.json b/package.json index 50b3f6d447..3846e1aefa 100644 --- a/package.json +++ b/package.json @@ -73,11 +73,11 @@ "protobufjs": "6.8.8", "protractor": "^5.4.2", "requirejs": "2.3.6", - "rollup": "1.3.1", - "rollup-plugin-amd": "3.0.0", - "rollup-plugin-commonjs": "9.3.4", - "rollup-plugin-json": "4.0.0", - "rollup-plugin-node-resolve": "4.2.4", + "rollup": "2.3.4", + "rollup-plugin-amd": "4.0.0", + "@rollup/plugin-commonjs": "14.0.0", + "@rollup/plugin-json": "4.1.0", + "@rollup/plugin-node-resolve": "8.4.0", "rxjs": "^6.5.2", "semver": "5.6.0", "shelljs": "0.8.3", diff --git a/packages/labs/test/grpc_web/BUILD.bazel b/packages/labs/test/grpc_web/BUILD.bazel index 486a9237e7..58e66bcf84 100644 --- a/packages/labs/test/grpc_web/BUILD.bazel +++ b/packages/labs/test/grpc_web/BUILD.bazel @@ -85,8 +85,8 @@ rollup_bundle( format = "cjs", deps = [ ":test_bundling_lib", - "@npm//rollup-plugin-commonjs", - "@npm//rollup-plugin-node-resolve", + "@npm//@rollup/plugin-commonjs", + "@npm//@rollup/plugin-node-resolve", ], ) diff --git a/packages/labs/test/grpc_web/rollup.config.js b/packages/labs/test/grpc_web/rollup.config.js index 91086703b3..9e782fcec9 100644 --- a/packages/labs/test/grpc_web/rollup.config.js +++ b/packages/labs/test/grpc_web/rollup.config.js @@ -1,9 +1,9 @@ -const commonjs = require('rollup-plugin-commonjs'); -const nodeRequire = require('rollup-plugin-node-resolve'); +const commonjs = require('@rollup/plugin-commonjs'); +const {nodeResolve} = require('@rollup/plugin-node-resolve'); module.exports = { plugins: [ - nodeRequire(), + nodeResolve(), commonjs(), ], }; diff --git a/packages/node-patches/BUILD.bazel b/packages/node-patches/BUILD.bazel index 0c424f2359..cb392adbdf 100644 --- a/packages/node-patches/BUILD.bazel +++ b/packages/node-patches/BUILD.bazel @@ -70,5 +70,5 @@ rollup_bundle( entry_point = "register.js", format = "cjs", sourcemap = "false", - deps = ["@npm//rollup-plugin-commonjs"], + deps = ["@npm//@rollup/plugin-commonjs"], ) diff --git a/packages/node-patches/rollup.config.js b/packages/node-patches/rollup.config.js index b1507eedcf..e2ada67c63 100644 --- a/packages/node-patches/rollup.config.js +++ b/packages/node-patches/rollup.config.js @@ -1,4 +1,4 @@ -const commonjs = require('rollup-plugin-commonjs'); +const commonjs = require('@rollup/plugin-commonjs'); module.exports = { output: { diff --git a/packages/rollup/test/code_splitting/spec.js b/packages/rollup/test/code_splitting/spec.js index 3b36f2fc70..edb3e5a377 100644 --- a/packages/rollup/test/code_splitting/spec.js +++ b/packages/rollup/test/code_splitting/spec.js @@ -6,6 +6,6 @@ describe('rollup code splitting', () => { const chunks = runfiles.resolvePackageRelative('bundle'); expect(fs.existsSync(chunks + '/bundle.js')).toBeTruthy(); - expect(fs.existsSync(chunks + '/chunk.js')).toBeTruthy(); + expect(fs.existsSync(chunks + '/strings.js')).toBeTruthy(); }); }); diff --git a/packages/rollup/test/integration/BUILD.bazel b/packages/rollup/test/integration/BUILD.bazel index ac0df8515d..6b833c29b1 100644 --- a/packages/rollup/test/integration/BUILD.bazel +++ b/packages/rollup/test/integration/BUILD.bazel @@ -30,10 +30,10 @@ _BUNDLE_FORMATS = [ "//%s/foo_aaa:foo_lib_a_a_a" % package_name(), "//%s/far/a/b/c" % package_name(), "//%s/far/a" % package_name(), + "@npm//@rollup/plugin-commonjs", + "@npm//@rollup/plugin-json", + "@npm//@rollup/plugin-node-resolve", "@npm//hello", - "@npm//rollup-plugin-commonjs", - "@npm//rollup-plugin-json", - "@npm//rollup-plugin-node-resolve", ], ) for format in _BUNDLE_FORMATS diff --git a/packages/rollup/test/integration/golden.amd.js.map.sha256_ b/packages/rollup/test/integration/golden.amd.js.map.sha256_ index a146895d67..171382c002 100644 --- a/packages/rollup/test/integration/golden.amd.js.map.sha256_ +++ b/packages/rollup/test/integration/golden.amd.js.map.sha256_ @@ -1 +1 @@ -12bcd67c5065335d148fe42ac2ec3b411a2de1dca7be39b1ad2a9f2f00af2ef6 \ No newline at end of file +c924104f49b195bc75b35b75e0b2ef151c06d920a7fbef8788dff3af1ee673df \ No newline at end of file diff --git a/packages/rollup/test/integration/golden.amd.js_ b/packages/rollup/test/integration/golden.amd.js_ index 9ac8df8d5e..5a610f29ab 100644 --- a/packages/rollup/test/integration/golden.amd.js_ +++ b/packages/rollup/test/integration/golden.amd.js_ @@ -5640,17 +5640,16 @@ define(['exports', 'some_global_var'], function (exports, some_global_var) { 'us subWeeks: sub_weeks, subYears: sub_years }; - var dateFns_50 = dateFns.format; const user = "user"; - const date = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); + const date = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo = `Sunnyvale ${user} ${date}`; - const date$1 = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); + const date$1 = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo$1 = `@foo/lib/a ${date$1}`; - const date$2 = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); + const date$2 = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo$2 = `@foo/lib/a/a/a ${date$2}`; const fum = 'Wonderland'; diff --git a/packages/rollup/test/integration/golden.cjs.js.map.sha256_ b/packages/rollup/test/integration/golden.cjs.js.map.sha256_ index 44a75345e4..13fb35c366 100644 --- a/packages/rollup/test/integration/golden.cjs.js.map.sha256_ +++ b/packages/rollup/test/integration/golden.cjs.js.map.sha256_ @@ -1 +1 @@ -bf96222cc583453bdd44dc64e7fe0a5025d9aac01ea773459ea255ffa2cdd1c1 \ No newline at end of file +86daf398a91b909de1ba663bad9aeff0373fa7e859c304308d6e98d341c7bbc1 \ No newline at end of file diff --git a/packages/rollup/test/integration/golden.cjs.js_ b/packages/rollup/test/integration/golden.cjs.js_ index 6f455156f5..da9d771c12 100644 --- a/packages/rollup/test/integration/golden.cjs.js_ +++ b/packages/rollup/test/integration/golden.cjs.js_ @@ -5644,17 +5644,16 @@ var dateFns = { subWeeks: sub_weeks, subYears: sub_years }; -var dateFns_50 = dateFns.format; const user = "user"; -const date = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); +const date = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo = `Sunnyvale ${user} ${date}`; -const date$1 = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); +const date$1 = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo$1 = `@foo/lib/a ${date$1}`; -const date$2 = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); +const date$2 = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo$2 = `@foo/lib/a/a/a ${date$2}`; const fum = 'Wonderland'; diff --git a/packages/rollup/test/integration/golden.esm.js.map.sha256_ b/packages/rollup/test/integration/golden.esm.js.map.sha256_ index 4e83b0a31a..317b7a9970 100644 --- a/packages/rollup/test/integration/golden.esm.js.map.sha256_ +++ b/packages/rollup/test/integration/golden.esm.js.map.sha256_ @@ -1 +1 @@ -f17a8a1ea5603362820a8946e5949add426898663e41e94eccf73c784d6e21ff \ No newline at end of file +9fe0f43821c5735b20edad3f95d2e2c26d9d495ad94831cbb1cf7a73642cde8c \ No newline at end of file diff --git a/packages/rollup/test/integration/golden.esm.js_ b/packages/rollup/test/integration/golden.esm.js_ index a60db5a281..90d879cd83 100644 --- a/packages/rollup/test/integration/golden.esm.js_ +++ b/packages/rollup/test/integration/golden.esm.js_ @@ -5640,17 +5640,16 @@ var dateFns = { subWeeks: sub_weeks, subYears: sub_years }; -var dateFns_50 = dateFns.format; const user = "user"; -const date = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); +const date = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo = `Sunnyvale ${user} ${date}`; -const date$1 = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); +const date$1 = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo$1 = `@foo/lib/a ${date$1}`; -const date$2 = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); +const date$2 = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo$2 = `@foo/lib/a/a/a ${date$2}`; const fum = 'Wonderland'; diff --git a/packages/rollup/test/integration/golden.iife.js.map.sha256_ b/packages/rollup/test/integration/golden.iife.js.map.sha256_ index 70c7a6f0bc..32365ad2d8 100644 --- a/packages/rollup/test/integration/golden.iife.js.map.sha256_ +++ b/packages/rollup/test/integration/golden.iife.js.map.sha256_ @@ -1 +1 @@ -60a1768015f6d2e570852658990b5578f601db1daead98e0ec995551c22efd78 \ No newline at end of file +85c4599e6a6f490460e8fad9232da3ec58601e18e47e893c25515bb94b3f78c8 \ No newline at end of file diff --git a/packages/rollup/test/integration/golden.iife.js_ b/packages/rollup/test/integration/golden.iife.js_ index f87525c2e8..6b52fc506f 100644 --- a/packages/rollup/test/integration/golden.iife.js_ +++ b/packages/rollup/test/integration/golden.iife.js_ @@ -5641,17 +5641,16 @@ var bundle = (function (exports, some_global_var) { subWeeks: sub_weeks, subYears: sub_years }; - var dateFns_50 = dateFns.format; const user = "user"; - const date = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); + const date = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo = `Sunnyvale ${user} ${date}`; - const date$1 = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); + const date$1 = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo$1 = `@foo/lib/a ${date$1}`; - const date$2 = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); + const date$2 = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo$2 = `@foo/lib/a/a/a ${date$2}`; const fum = 'Wonderland'; diff --git a/packages/rollup/test/integration/golden.system.js.map.sha256_ b/packages/rollup/test/integration/golden.system.js.map.sha256_ index af68b4b1ce..b5ea792fb3 100644 --- a/packages/rollup/test/integration/golden.system.js.map.sha256_ +++ b/packages/rollup/test/integration/golden.system.js.map.sha256_ @@ -1 +1 @@ -7d33e4da28183385cd6cdfff5955d010b451eedf353efbbb3d52e01ba1d91999 \ No newline at end of file +b92a8678d60a94ecf3b0d87252547db66b6256db6c6437eb433530c3fdba019c \ No newline at end of file diff --git a/packages/rollup/test/integration/golden.system.js_ b/packages/rollup/test/integration/golden.system.js_ index e630955445..6890a37a4f 100644 --- a/packages/rollup/test/integration/golden.system.js_ +++ b/packages/rollup/test/integration/golden.system.js_ @@ -3,7 +3,7 @@ * This is version */ -System.register('bundle', ['some_global_var'], function (exports, module) { +System.register('bundle', ['some_global_var'], function (exports) { 'use strict'; var thing; return { @@ -5647,17 +5647,16 @@ System.register('bundle', ['some_global_var'], function (exports, module) { subWeeks: sub_weeks, subYears: sub_years }; - var dateFns_50 = dateFns.format; const user = "user"; - const date = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); + const date = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo = `Sunnyvale ${user} ${date}`; - const date$1 = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); + const date$1 = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo$1 = `@foo/lib/a ${date$1}`; - const date$2 = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); + const date$2 = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo$2 = `@foo/lib/a/a/a ${date$2}`; const fum = 'Wonderland'; diff --git a/packages/rollup/test/integration/golden.umd.js.map.sha256_ b/packages/rollup/test/integration/golden.umd.js.map.sha256_ index f357b19961..bfb3f70a96 100644 --- a/packages/rollup/test/integration/golden.umd.js.map.sha256_ +++ b/packages/rollup/test/integration/golden.umd.js.map.sha256_ @@ -1 +1 @@ -cbec59b9c2ca7bde7011dbd2b14072ad3d51cbb5c9198cece6cf299071abb090 \ No newline at end of file +735d657abe96a1ea940285eda0bef75fe15d0a86db9bd11bef0301d14c9ebaff \ No newline at end of file diff --git a/packages/rollup/test/integration/golden.umd.js.sha256_ b/packages/rollup/test/integration/golden.umd.js.sha256_ index 1eb2d2dabc..32e35431d2 100755 --- a/packages/rollup/test/integration/golden.umd.js.sha256_ +++ b/packages/rollup/test/integration/golden.umd.js.sha256_ @@ -1 +1 @@ -ce71b9fc99b95b713d01ac033ce5a7e47a9f3b3ec56017c4fc99c0fd848d1c58 \ No newline at end of file +a8cc9e8325019de8db9839ad0f1a8658157de44eafbde34034912b3ad3c40c9a \ No newline at end of file diff --git a/packages/rollup/test/integration/golden.umd.js_ b/packages/rollup/test/integration/golden.umd.js_ index 4a70e48ca0..55a5e4d538 100644 --- a/packages/rollup/test/integration/golden.umd.js_ +++ b/packages/rollup/test/integration/golden.umd.js_ @@ -7,7 +7,7 @@ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('some_global_var')) : typeof define === 'function' && define.amd ? define(['exports', 'some_global_var'], factory) : (global = global || self, factory(global.bundle = {}, global.runtime_name_of_global_var)); -}(this, function (exports, some_global_var) { 'use strict'; +}(this, (function (exports, some_global_var) { 'use strict'; var far_a = `@far/a`; @@ -5644,17 +5644,16 @@ subWeeks: sub_weeks, subYears: sub_years }; - var dateFns_50 = dateFns.format; const user = "user"; - const date = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); + const date = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo = `Sunnyvale ${user} ${date}`; - const date$1 = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); + const date$1 = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo$1 = `@foo/lib/a ${date$1}`; - const date$2 = dateFns_50(new Date(2019, 4, 7), 'MMMM D, YYYY'); + const date$2 = dateFns.format(new Date(2019, 4, 7), 'MMMM D, YYYY'); const foo$2 = `@foo/lib/a/a/a ${date$2}`; const fum = 'Wonderland'; @@ -5683,5 +5682,5 @@ Object.defineProperty(exports, '__esModule', { value: true }); -})); +}))); //# sourceMappingURL=bundle.umd.js.map diff --git a/packages/rollup/test/integration/rollup.config.js b/packages/rollup/test/integration/rollup.config.js index 080b65bf93..c4d3850829 100644 --- a/packages/rollup/test/integration/rollup.config.js +++ b/packages/rollup/test/integration/rollup.config.js @@ -1,6 +1,6 @@ -import commonjs from 'rollup-plugin-commonjs'; -import json from 'rollup-plugin-json'; -import nodeResolve from 'rollup-plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; +import json from '@rollup/plugin-json'; +import nodeResolve from '@rollup/plugin-node-resolve'; // Parse the stamp file produced by Bazel from the version control system let version = ''; diff --git a/packages/rollup/test/plugins/BUILD.bazel b/packages/rollup/test/plugins/BUILD.bazel index 39e1b04a35..b632b36cb7 100644 --- a/packages/rollup/test/plugins/BUILD.bazel +++ b/packages/rollup/test/plugins/BUILD.bazel @@ -8,7 +8,7 @@ rollup_bundle( entry_point = "input.js", sourcemap = "false", supports_workers = True, - deps = ["@npm//rollup-plugin-json"], + deps = ["@npm//@rollup/plugin-json"], ) generated_file_test( diff --git a/packages/rollup/test/plugins/rollup.config.js b/packages/rollup/test/plugins/rollup.config.js index de40fdafba..883a8eabca 100644 --- a/packages/rollup/test/plugins/rollup.config.js +++ b/packages/rollup/test/plugins/rollup.config.js @@ -1,4 +1,4 @@ -import json from 'rollup-plugin-json'; +import json from '@rollup/plugin-json'; module.exports = { plugins: [ diff --git a/yarn.lock b/yarn.lock index 86b23a4d55..649ef061ef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -962,36 +962,17 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@buxlabs/amd-to-es6@^0.12.0": - version "0.12.5" - resolved "https://registry.yarnpkg.com/@buxlabs/amd-to-es6/-/amd-to-es6-0.12.5.tgz#18c12479512ae09106fc6f60ad1b4b9eb8e8eb62" - integrity sha512-RaZQrUhSl+IPIn3tBdMlDAb20jcWcBGQpnmUth9Jf9Bx1c7zGPQAxTzuag5UBLGBEBAKGr5fxvwGGdF+C/mDjQ== +"@buxlabs/amd-to-es6@^0.13.3": + version "0.13.3" + resolved "https://registry.yarnpkg.com/@buxlabs/amd-to-es6/-/amd-to-es6-0.13.3.tgz#9784237d3fa1070062195ed630f4a58a19d8b368" + integrity sha512-11ka5P0J8t8TvaR5f6ZXfyzR4nv0kOpWrqEJJa4YyOVOj+87U6paTkZA8yCYsxvo5q/wFupBikJivNfYwuRqnw== dependencies: - "@buxlabs/ast" "^0.9.5" - "@buxlabs/utils" "^2.2.2" + abstract-syntax-tree "^1.1.2" array-uniq "^1.0.3" - commander "^2.13.0" - glob "^7.1.2" + commander "^2.19.0" + glob "^7.1.3" mkdirp "^0.5.1" - -"@buxlabs/ast@^0.9.5": - version "0.9.6" - resolved "https://registry.yarnpkg.com/@buxlabs/ast/-/ast-0.9.6.tgz#e7a14d3fae74cd3d0530fd2cf39afc09272707e7" - integrity sha512-1fKAxOU/c3uLa0mQL2jrNqv0QkcMJMnDfze/N5HeIh3DWtl9Q8PfOskuGa+zZb/EZEwLLNACmHbIUTvfM0Ogsw== - dependencies: - comparify "^0.2.0" - escodegen "^1.9.0" - espree "^3.5.1" - esquery "^1.0.0" - estemplate "^0.5.1" - estraverse "^4.2.0" - prettier "^1.7.4" - to-ast "^1.0.0" - -"@buxlabs/utils@^2.2.2": - version "2.3.4" - resolved "https://registry.yarnpkg.com/@buxlabs/utils/-/utils-2.3.4.tgz#32a3102e5875c4b0f34cac89ec403748b1759249" - integrity sha512-XtGxRNCQFf0Ed5aXSsjJWdZfs8o4eFBNqtXyFvyiAQ/8/W+YfkTAgwbBUHECSd4qOxgOXI5iQcYDn21rEN7TMw== + pure-utilities "^1.1.4" "@cnakazawa/watch@^1.0.3": version "1.0.4" @@ -1444,6 +1425,48 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= +"@rollup/plugin-commonjs@14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-14.0.0.tgz#4285f9ec2db686a31129e5a2b415c94aa1f836f0" + integrity sha512-+PSmD9ePwTAeU106i9FRdc+Zb3XUWyW26mo5Atr2mk82hor8+nPwkztEjFo8/B1fJKfaQDg9aM2bzQkjhi7zOw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + commondir "^1.0.1" + estree-walker "^1.0.1" + glob "^7.1.2" + is-reference "^1.1.2" + magic-string "^0.25.2" + resolve "^1.11.0" + +"@rollup/plugin-json@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + +"@rollup/plugin-node-resolve@8.4.0": + version "8.4.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz#261d79a680e9dc3d86761c14462f24126ba83575" + integrity sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deep-freeze "^0.0.1" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.17.0" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@sinonjs/commons@^1", "@sinonjs/commons@^1.0.2", "@sinonjs/commons@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.4.0.tgz#7b3ec2d96af481d7a0321252e7b1c94724ec5a78" @@ -1518,6 +1541,11 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/estree@*": + version "0.0.45" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" + integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== + "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" @@ -1587,11 +1615,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.15.tgz#e8f7729b631be1b02ae130ff0b61f3e018000640" integrity sha512-CBR5avlLcu0YCILJiDIXeU2pTw7UK/NIxfC63m7d7CVamho1qDEzXKkOtEauQRPMy6MI8mLozth+JJkas7HY6g== -"@types/node@^11.9.5": - version "11.13.19" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.13.19.tgz#c7bd7009aa850464775d8a814e18138d633cd676" - integrity sha512-tLRDU1hmcWamtgRT2iVRdraAQVGFQGgtcqracSo9XyMN1VeZLSVGb8RJJxVqab7UGbijoUijGPVFMjmqzyZIUw== - "@types/node@^12.0.0": version "12.12.27" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.27.tgz#d7506f73160ad30fcebbcf5b8b7d2d976e649e42" @@ -1607,10 +1630,10 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" integrity sha1-vShOV8hPEyXacCur/IKlMoGQwMU= -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" @@ -1676,6 +1699,21 @@ abbrev@1, abbrev@~1.1.1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +abstract-syntax-tree@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/abstract-syntax-tree/-/abstract-syntax-tree-1.1.2.tgz#d99036f0bc202c5a99df0c62963bf06cfad17cc9" + integrity sha512-zEjHLuU8Vd5pw73WAlCH8/3OekPdMImSqalOwvU7LwDVNDjvmT89Jc+0D2zcdgkuR2oPUcSkXy8zOY5n7eV7pQ== + dependencies: + astring "^1.3.0" + cherow "^1.6.8" + comparify "^0.2.0" + esquery "^1.0.1" + estemplate "^0.5.1" + estraverse "^4.2.0" + prettier "^1.15.1" + source-map "^0.7.2" + to-ast "^1.0.0" + accepts@~1.3.4, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -1692,38 +1730,16 @@ acorn-globals@^4.3.2: acorn "^6.0.1" acorn-walk "^6.0.1" -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" - integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s= - dependencies: - acorn "^3.0.4" - acorn-walk@^6.0.1: version "6.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= - -acorn@^5.5.0: - version "5.7.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" - integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== - acorn@^6.0.1: version "6.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== -acorn@^6.1.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" - integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== - acorn@^7.1.0: version "7.1.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" @@ -1994,6 +2010,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astring@^1.3.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/astring/-/astring-1.4.3.tgz#b99d4b0349bc7b28934bb9f03f86ec34d69c3a09" + integrity sha512-yJlJU/bmN820vL+cbWShu2YQU87dBP5V7BH2N4wODapRv27A2dZtUD0LgjP9lZENvPe9XRoSyWx+pZR6qKqNBw== + async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -2605,6 +2626,11 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +cherow@^1.6.8: + version "1.6.9" + resolved "https://registry.yarnpkg.com/cherow/-/cherow-1.6.9.tgz#7c5e34fce297f152a6f7853dcc9fe2f9e1b36ab8" + integrity sha512-pmmkpIQRcnDA7EawKcg9+ncSZNTYfXqDx+K3oqqYvpZlqVBChjTomTfw+hePnkqYR3Y013818c0R1Q5P/7PGrQ== + chokidar@^2.0.3, chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" @@ -2831,20 +2857,20 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.13.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commander@^2.19.0, commander@~2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^2.20.0, commander@^2.8.1: version "2.20.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.1.tgz#3863ce3ca92d0831dcf2a102f5fb4b5926afd0f9" integrity sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg== -commander@~2.20.3: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= compare-func@^1.3.1: version "1.3.2" @@ -3365,6 +3391,11 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +deep-freeze@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deep-freeze/-/deep-freeze-0.0.1.tgz#3a0b0005de18672819dfd38cd31f91179c893e84" + integrity sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ= + deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -3758,47 +3789,22 @@ escodegen@^1.11.1: optionalDependencies: source-map "~0.6.1" -escodegen@^1.9.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541" - integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== - dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -espree@^3.5.1: - version "3.5.4" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" - integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A== - dependencies: - acorn "^5.5.0" - acorn-jsx "^3.0.0" - esprima@^2.1.0, esprima@^2.7.2: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== +esquery@^1.0.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== dependencies: - estraverse "^4.0.0" + estraverse "^5.1.0" estemplate@^0.5.1: version "0.5.1" @@ -3808,16 +3814,26 @@ estemplate@^0.5.1: esprima "^2.7.2" estraverse "^4.1.1" -estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estree-walker@^0.6.0, estree-walker@^0.6.1: +estraverse@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + +estree-walker@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -5252,6 +5268,13 @@ is-redirect@^1.0.0: resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= +is-reference@^1.1.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + is-regex@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" @@ -7754,7 +7777,7 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4, picomatch@^2.0.7: +picomatch@^2.0.4, picomatch@^2.0.7, picomatch@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== @@ -7843,10 +7866,10 @@ prepend-http@^1.0.1: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= -prettier@^1.7.4: - version "1.18.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea" - integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw== +prettier@^1.15.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== pretty-format@^24.9.0: version "24.9.0" @@ -8021,6 +8044,11 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +pure-utilities@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pure-utilities/-/pure-utilities-1.2.0.tgz#00095e3780e8bd23498bcd3a983599f3b02c5c8d" + integrity sha512-OA7M4pNWRtC+33F2Kbf7EpsxJFpN/SjoYZT3VJcDS+iw5eU9Ot138KGy0wTwFQ+ISp0GFAapH9l0Rmhp8zM8tg== + q@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" @@ -8531,6 +8559,13 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2: dependencies: path-parse "^1.0.6" +resolve@^1.11.0, resolve@^1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + resolve@^1.15.1: version "1.15.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" @@ -8577,56 +8612,27 @@ rimraf@^3.0.0: dependencies: glob "^7.1.3" -rollup-plugin-amd@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-amd/-/rollup-plugin-amd-3.0.0.tgz#c09efa5e00ae092cfe581a62fb6f0b01bf788ec1" - integrity sha512-nlazscW4UdlCKef12oxlombIWSicuHZDiY8fyU0dhpB7CQFb3JTX/qq17zDccn+K2QBbIvXlGdTusyQi5eMUIQ== - dependencies: - "@buxlabs/amd-to-es6" "^0.12.0" - rollup-pluginutils "^2.0.1" - -rollup-plugin-commonjs@9.3.4: - version "9.3.4" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.3.4.tgz#2b3dddbbbded83d45c36ff101cdd29e924fd23bc" - integrity sha512-DTZOvRoiVIHHLFBCL4pFxOaJt8pagxsVldEXBOn6wl3/V21wVaj17HFfyzTsQUuou3sZL3lEJZVWKPFblJfI6w== - dependencies: - estree-walker "^0.6.0" - magic-string "^0.25.2" - resolve "^1.10.0" - rollup-pluginutils "^2.6.0" - -rollup-plugin-json@4.0.0: +rollup-plugin-amd@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz#a18da0a4b30bf5ca1ee76ddb1422afbb84ae2b9e" - integrity sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow== + resolved "https://registry.yarnpkg.com/rollup-plugin-amd/-/rollup-plugin-amd-4.0.0.tgz#15753e6608d107468dc1de3fcdebed1a3d099eb9" + integrity sha512-0/Trr5t1B3RqFL8WNHklOIIXqtZa+46Gi6CeB4rgj7YubOUsqtt8rcrzwZTPXLhnt7jw2Zr/Gt2k2LQLX99bNA== dependencies: - rollup-pluginutils "^2.5.0" + "@buxlabs/amd-to-es6" "^0.13.3" + rollup-pluginutils "^2.3.3" -rollup-plugin-node-resolve@4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.2.4.tgz#7d370f8d6fd3031006a0032c38262dd9be3c6250" - integrity sha512-t/64I6l7fZ9BxqD3XlX4ZeO6+5RLKyfpwE2CiPNUKa+GocPlQhf/C208ou8y3AwtNsc6bjSk/8/6y/YAyxCIvw== - dependencies: - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.10.0" - -rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.5.0, rollup-pluginutils@^2.6.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz#8fa6dd0697344938ef26c2c09d2488ce9e33ce97" - integrity sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg== +rollup-pluginutils@^2.3.3: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== dependencies: estree-walker "^0.6.1" -rollup@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.3.1.tgz#cf3bad0ba38ee4534e3057cc6b7e662b6db83d78" - integrity sha512-XaVp/ggPVQ3zD4wktUzJo0XGbsnRHsGWk4B4497hE35emWods/WkrIEVgoLRSvMSxCpklLPBfWZAiTs/VeFSNg== - dependencies: - "@types/estree" "0.0.39" - "@types/node" "^11.9.5" - acorn "^6.1.0" +rollup@2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.3.4.tgz#979e461f8cab1a71aec2d37ce2a434052ae70223" + integrity sha512-8U9x54RCVhrUEV1zon4Pp8kokg1HM0fwzf5vkwe2/rOfyTClarx5e27kFlaoZ7ofJiazWkNQ+dgdG4HuZxkQ9A== + optionalDependencies: + fsevents "~2.1.2" rsvp@^4.8.4: version "4.8.5" @@ -9059,7 +9065,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: +source-map@^0.7.2, source-map@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== From e5fc274c1d15c8170737f20488fa0237dd8ba29c Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Sat, 8 Aug 2020 10:13:58 -0700 Subject: [PATCH 0806/1134] fix: coverage (#2100) * test: add coverage e2e test * fix(builtin): fix coverage lcov merger script jumping out of sandbox and not being able to find c8 * test: don't test coverage on Windows --- .bazelrc | 4 +- e2e/BUILD.bazel | 20 + e2e/coverage/.bazelignore | 3 + e2e/coverage/.bazelrc | 1 + e2e/coverage/BUILD.bazel | 15 + e2e/coverage/WORKSPACE | 34 + e2e/coverage/coverage.spec.js | 10 + e2e/coverage/coverage_source.ts | 7 + e2e/coverage/package.json | 12 + e2e/coverage/tsconfig.json | 8 + e2e/coverage/yarn.lock | 1328 +++++++++++++++++++++++++++++++ internal/node/launcher.sh | 2 +- 12 files changed, 1441 insertions(+), 3 deletions(-) create mode 100644 e2e/coverage/.bazelignore create mode 100644 e2e/coverage/.bazelrc create mode 100644 e2e/coverage/BUILD.bazel create mode 100644 e2e/coverage/WORKSPACE create mode 100644 e2e/coverage/coverage.spec.js create mode 100644 e2e/coverage/coverage_source.ts create mode 100644 e2e/coverage/package.json create mode 100644 e2e/coverage/tsconfig.json create mode 100644 e2e/coverage/yarn.lock diff --git a/.bazelrc b/.bazelrc index 6c5170f5b9..679b1cf946 100644 --- a/.bazelrc +++ b/.bazelrc @@ -5,8 +5,8 @@ import %workspace%/common.bazelrc # This lets us glob() up all the files inside the examples to make them inputs to tests # To update these lines, just run `yarn bazel:update-deleted-packages` # (Note, we cannot use common --deleted_packages because the bazel version command doesn't support it) -build --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/from_source,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/nodejs_image/foolib,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp -query --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/from_source,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/nodejs_image/foolib,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp +build --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/from_source,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/coverage,e2e/coverage/node_modules/@bazel/typescript/internal/devserver,e2e/coverage/node_modules/@bazel/typescript/internal,e2e/coverage/node_modules/@bazel/typescript/devserver,e2e/coverage/node_modules/@bazel/typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf,e2e/coverage/node_modules/@bazel/typescript/third_party/npm/requirejs,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/nodejs_image/foolib,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp +query --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/from_source,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/coverage,e2e/coverage/node_modules/@bazel/typescript/internal/devserver,e2e/coverage/node_modules/@bazel/typescript/internal,e2e/coverage/node_modules/@bazel/typescript/devserver,e2e/coverage/node_modules/@bazel/typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf,e2e/coverage/node_modules/@bazel/typescript/third_party/npm/requirejs,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/nodejs_image/foolib,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp # Mock versioning command to test the --stamp behavior build --workspace_status_command="echo BUILD_SCM_VERSION 1.2.3" diff --git a/e2e/BUILD.bazel b/e2e/BUILD.bazel index 4e1300a259..fedfbcefcf 100644 --- a/e2e/BUILD.bazel +++ b/e2e/BUILD.bazel @@ -21,6 +21,26 @@ e2e_integration_test( }, ) +e2e_integration_test( + name = "e2e_coverage", + bazel_commands = [ + "info", + "coverage ...", + ], + npm_packages = { + "//packages/jasmine:npm_package": "@bazel/jasmine", + "//packages/typescript:npm_package": "@bazel/typescript", + }, + # Coverage not working on Windows. Looks like a bazel issue. + # ==================== Test output for //:coverage_test: + # ERROR(tools/test/windows/tw.cc:1262) ERROR: src/main/native/windows/process.cc(199): CreateProcessW("C:\users\b\_bazel_b\tpt6yasm\execroot\e2e_coverage\bazel-out\x64_windows-fastbuild\bin\coverage_test.bat.runfiles\bazel_tools\tools\test\collect_coverage.sh" ./coverage_test.bat): The system cannot find the file specified. + # (error: 2) + # ERROR(tools/test/windows/tw.cc:1419) Failed to start test process (arg: C:\users\b\_bazel_b\tpt6yasm\execroot\e2e_coverage\bazel-out\x64_windows-fastbuild\bin\coverage_test.bat.runfiles\bazel_tools\tools\test\collect_coverage.sh) + tags = [ + "no-bazelci-windows", + ], +) + e2e_integration_test( name = "e2e_fine_grained_symlinks", ) diff --git a/e2e/coverage/.bazelignore b/e2e/coverage/.bazelignore new file mode 100644 index 0000000000..6924375195 --- /dev/null +++ b/e2e/coverage/.bazelignore @@ -0,0 +1,3 @@ +node_modules +dist +bazel-out diff --git a/e2e/coverage/.bazelrc b/e2e/coverage/.bazelrc new file mode 100644 index 0000000000..3431057af6 --- /dev/null +++ b/e2e/coverage/.bazelrc @@ -0,0 +1 @@ +import %workspace%/../../common.bazelrc diff --git a/e2e/coverage/BUILD.bazel b/e2e/coverage/BUILD.bazel new file mode 100644 index 0000000000..200557405a --- /dev/null +++ b/e2e/coverage/BUILD.bazel @@ -0,0 +1,15 @@ +load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") +load("@npm//@bazel/typescript:index.bzl", "ts_library") + +ts_library( + name = "coverage_test_srcs", + srcs = ["coverage_source.ts"], +) + +jasmine_node_test( + name = "coverage_test", + srcs = [ + "coverage.spec.js", + ":coverage_test_srcs", + ], +) diff --git a/e2e/coverage/WORKSPACE b/e2e/coverage/WORKSPACE new file mode 100644 index 0000000000..3063f5ba6c --- /dev/null +++ b/e2e/coverage/WORKSPACE @@ -0,0 +1,34 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +workspace( + name = "e2e_coverage", + managed_directories = {"@npm": ["node_modules"]}, +) + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "build_bazel_rules_nodejs", + sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], +) + +load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") + +yarn_install( + name = "npm", + package_json = "//:package.json", + yarn_lock = "//:yarn.lock", +) diff --git a/e2e/coverage/coverage.spec.js b/e2e/coverage/coverage.spec.js new file mode 100644 index 0000000000..a0151a1df6 --- /dev/null +++ b/e2e/coverage/coverage.spec.js @@ -0,0 +1,10 @@ +const {isString} = require('./coverage_source'); + +describe('coverage function', () => { + it('should cover one branch', () => { + expect(isString(2)).toBe(false); + }); + it('should cover the other branch', () => { + expect(isString('some string')).toBe(true); + }); +}); diff --git a/e2e/coverage/coverage_source.ts b/e2e/coverage/coverage_source.ts new file mode 100644 index 0000000000..45f569b949 --- /dev/null +++ b/e2e/coverage/coverage_source.ts @@ -0,0 +1,7 @@ +export function isString(input: string) { + if (typeof input === 'string') { + return true; + } else { + return false; + } +} diff --git a/e2e/coverage/package.json b/e2e/coverage/package.json new file mode 100644 index 0000000000..089438fc7a --- /dev/null +++ b/e2e/coverage/package.json @@ -0,0 +1,12 @@ +{ + "name": "e2e-coverage", + "dependencies": { + "@bazel/jasmine": "^2.0.0", + "@bazel/typescript": "^2.0.0", + "typescript": "3.9.7", + "jasmine": "3.6.1" + }, + "scripts": { + "test": "bazel coverage ..." + } +} diff --git a/e2e/coverage/tsconfig.json b/e2e/coverage/tsconfig.json new file mode 100644 index 0000000000..0d66552006 --- /dev/null +++ b/e2e/coverage/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "lib": ["es2017", "dom"], + "strict": true, + "baseUrl": ".", + "target": "es2015", + } +} diff --git a/e2e/coverage/yarn.lock b/e2e/coverage/yarn.lock new file mode 100644 index 0000000000..f74cc3ef4f --- /dev/null +++ b/e2e/coverage/yarn.lock @@ -0,0 +1,1328 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@bazel/jasmine@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0.tgz#e466ba8eb386eb777f8c4e502b8760ee3d173d1d" + integrity sha512-9RLgNAy10PRkLLP0+8YJr1I8vsVE8rZIfz467/SxROZq7zmIx3lErX101t0KHLmukXT+GusrkXIlB/Vwa8DN9Q== + dependencies: + c8 "~7.1.0" + jasmine-reporters "~2.3.2" + +"@bazel/typescript@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.1.tgz#f99405ce53e2d16a98f9b66da42bff9f5c055c24" + integrity sha512-zoaxp57m8WbBILv8MlNEcRf1xRbtvAyDAy2nekEy2RhvCx96slZ5+JJIQJ7AW6teb37iqvurg1OvNZsO/1bc7Q== + dependencies: + protobufjs "6.8.8" + semver "5.6.0" + source-map-support "0.5.9" + tsutils "2.27.2" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@istanbuljs/schema@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" + integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@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" + integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78= + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A= + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E= + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/is-windows@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/is-windows/-/is-windows-1.0.0.tgz#1011fa129d87091e2f6faf9042d6704cdf2e7be0" + integrity sha512-tJ1rq04tGKuIJoWIH0Gyuwv4RQ3+tIu7wQrC0MV47raQ44kIzXSSFKfrxFUOWVRvesoF7mrTqigXmqoZJsXwTg== + +"@types/istanbul-lib-coverage@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + +"@types/long@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" + integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== + +"@types/node@^10.1.0": + version "10.17.28" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.28.tgz#0e36d718a29355ee51cec83b42d921299200f6d9" + integrity sha512-dzjES1Egb4c1a89C7lKwQh8pwjYmlOAG9dW1pBgxEk57tMrLnssOfEthz8kdkNaBd7lIqQx7APm5+mZ619IiCQ== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + 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" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + 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" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +c8@~7.1.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/c8/-/c8-7.1.2.tgz#3fd785e8d264175ceffe92c74607f5cfb12f018d" + integrity sha512-lCEwL9lbvWOQLxoLw8RF7PM8Cdj+rKxRp/PyWC9S8xASvYHRwXQ2gxzsNTgLhQM1Utc1YDAjzQYPQIxVEyelGg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@istanbuljs/schema" "^0.1.2" + find-up "^4.0.0" + foreground-child "^2.0.0" + furi "^2.0.0" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-report "^3.0.0" + istanbul-reports "^3.0.2" + rimraf "^3.0.0" + test-exclude "^6.0.0" + v8-to-istanbul "^4.1.2" + yargs "^15.0.0" + yargs-parser "^18.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + 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" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +convert-source-map@^1.6.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +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" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + 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" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + 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" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + 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" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + 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" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + 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" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + 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" + +fast-glob@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +foreground-child@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" + integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^3.0.2" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +furi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/furi/-/furi-2.0.0.tgz#13d85826a1af21acc691da6254b3888fc39f0b4a" + integrity sha512-uKuNsaU0WVaK/vmvj23wW1bicOFfyqSsAIH71bRZx8kA4Xj+YCHin7CJKJJjkIsmxYaPFLk9ljmjEyB7xF7WvQ== + dependencies: + "@types/is-windows" "^1.0.0" + is-windows "^1.0.2" + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +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" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.1.3: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + 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" + +glob@^7.1.4: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + 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" + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + 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" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + 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" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +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" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + 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" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.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" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +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" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + 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" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + 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" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + 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" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + 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" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + 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" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +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" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +isarray@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + 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" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jasmine-core@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.6.0.tgz#491f3bb23941799c353ceb7a45b38a950ebc5a20" + integrity sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw== + +jasmine-reporters@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/jasmine-reporters/-/jasmine-reporters-2.3.2.tgz#898818ffc234eb8b3f635d693de4586f95548d43" + integrity sha512-u/7AT9SkuZsUfFBLLzbErohTGNsEUCKaQbsVYnLFW1gEuL2DzmBL4n8v90uZsqIqlWvWUgian8J6yOt5Fyk/+A== + dependencies: + mkdirp "^0.5.1" + xmldom "^0.1.22" + +jasmine@3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.6.1.tgz#a20456b309a669b547a3c24bb2120f16f70cfc65" + integrity sha512-Jqp8P6ZWkTVFGmJwBK46p+kJNrZCdqkQ4GL+PGuBXZwK1fM4ST9BizkYgIwCFqYYqnTizAy6+XG2Ej5dFrej9Q== + dependencies: + fast-glob "^2.2.6" + jasmine-core "~3.6.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" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + 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" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + 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" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +merge2@^1.2.3: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + 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" + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + 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" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + 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" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + 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-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" + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +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" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +protobufjs@6.8.8: + version "6.8.8" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.8.tgz#c8b4f1282fd7a90e6f5b109ed11c84af82908e7c" + integrity sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw== + 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" "^4.0.0" + "@types/node" "^10.1.0" + long "^4.0.0" + +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" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +semver@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +semver@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + 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" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + 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" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + 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" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + 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.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +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" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +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" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +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" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + 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" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + 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" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +tslib@^1.8.1: + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + +tsutils@2.27.2: + version "2.27.2" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" + integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== + dependencies: + tslib "^1.8.1" + +typescript@3.9.7: + version "3.9.7" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" + integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +v8-to-istanbul@^4.1.2: + version "4.1.4" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6" + integrity sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +xmldom@^0.1.22: + version "0.1.31" + resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" + integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== + +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yargs-parser@^18.0.0, yargs-parser@^18.1.1: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^15.0.0: + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.1" diff --git a/internal/node/launcher.sh b/internal/node/launcher.sh index 4baa55ecac..658ed93077 100644 --- a/internal/node/launcher.sh +++ b/internal/node/launcher.sh @@ -362,7 +362,7 @@ if [[ -n "${COVERAGE_DIR:-}" ]]; then fi set +e - "${node}" "${lcov_merger_script}" --coverage_dir="${COVERAGE_DIR}" --output_file="${COVERAGE_OUTPUT_FILE}" --source_file_manifest="${COVERAGE_MANIFEST}" + "${node}" ${LAUNCHER_NODE_OPTIONS[@]+"${LAUNCHER_NODE_OPTIONS[@]}"} "${lcov_merger_script}" --coverage_dir="${COVERAGE_DIR}" --output_file="${COVERAGE_OUTPUT_FILE}" --source_file_manifest="${COVERAGE_MANIFEST}" RESULT="$?" set -e From 88c19f14aa2a346b539aff142259b30ee04f8930 Mon Sep 17 00:00:00 2001 From: Matt Mackay Date: Sat, 8 Aug 2020 13:56:45 -0400 Subject: [PATCH 0807/1134] docs: use @npm//@bazel for example load sites --- packages/labs/protobufjs/ts_proto_library.bzl | 8 ++++---- packages/rollup/rollup_bundle.bzl | 2 +- packages/terser/terser_minified.bzl | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/labs/protobufjs/ts_proto_library.bzl b/packages/labs/protobufjs/ts_proto_library.bzl index af1173eb47..52e0744b40 100644 --- a/packages/labs/protobufjs/ts_proto_library.bzl +++ b/packages/labs/protobufjs/ts_proto_library.bzl @@ -175,7 +175,7 @@ a `ts_library` can appear, such as in the `deps[]` of another `ts_library`. Example: ```python -load("//packages/typescript:index.bzl", "ts_library", "ts_proto_library") +load("@npm//@bazel/typescript:index.bzl", "ts_library", "ts_proto_library") proto_library( name = "car_proto", @@ -203,18 +203,18 @@ name the rule differently from the output file. The JavaScript produced by protobuf.js has a runtime dependency on a support library. Under devmode (e.g. `ts_devserver`, `karma_web_test_suite`) you'll need to include these scripts in the `bootstrap` phase (before Require.js loads). You can use the label -`//packages/labs/protobufjs:bootstrap_scripts` to reference these scripts +`@npm//@bazel/labs/protobufjs:bootstrap_scripts` to reference these scripts in the `bootstrap` attribute of `karma_web_test_suite` or `ts_devserver`. To complete the example above, you could write a `karma_web_test_suite`: ```python -load("//packages/karma:index.bzl", "karma_web_test_suite") +load("@npm//@bazel/karma:index.bzl", "karma_web_test_suite") karma_web_test_suite( name = "test", deps = ["test_lib"], - bootstrap = ["//packages/labs/protobufjs:bootstrap_scripts"], + bootstrap = ["@npm//@bazel/labs/protobufjs:bootstrap_scripts"], browsers = [ "@io_bazel_rules_webtesting//browsers:chromium-local", "@io_bazel_rules_webtesting//browsers:firefox-local", diff --git a/packages/rollup/rollup_bundle.bzl b/packages/rollup/rollup_bundle.bzl index efd4a8b2d5..557d8dc9bc 100644 --- a/packages/rollup/rollup_bundle.bzl +++ b/packages/rollup/rollup_bundle.bzl @@ -9,7 +9,7 @@ See https://rollupjs.org/guide/en/#command-line-reference Typical example: ```python -load("//packages/rollup:index.bzl", "rollup_bundle") +load("@npm//@bazel/rollup:index.bzl", "rollup_bundle") rollup_bundle( name = "bundle", diff --git a/packages/terser/terser_minified.bzl b/packages/terser/terser_minified.bzl index 2362a3cb50..98b8a9e8d8 100644 --- a/packages/terser/terser_minified.bzl +++ b/packages/terser/terser_minified.bzl @@ -20,7 +20,7 @@ _DOC = """Run the terser minifier. Typical example: ```python -load("//packages/terser:index.bzl", "terser_minified") +load("@npm//@bazel/terser:index.bzl", "terser_minified") terser_minified( name = "out.min", From 4fd465331943bae2d75e026c7623b2832b41a2b3 Mon Sep 17 00:00:00 2001 From: Dan Muller Date: Fri, 31 Jul 2020 18:19:41 +0000 Subject: [PATCH 0808/1134] fix(cypress): allow for async cypress plugins cypress_repository now fails if cypress verify fails set the HOME env variable since cypress writes files to it remove unused includeScreenshots / includeVideos variables browserify files are no longer included in test output files screenshots/videos are stored directory in TEST_UNDECLARED_OUTPUTS_DIR --- WORKSPACE | 2 ++ packages/cypress/BUILD.bazel | 4 +-- .../cypress/internal/cypress_repository.bzl | 23 +++++++----- ...{cypress-install.js => install-cypress.js} | 19 +++++++--- .../internal/plugins/index.template.js | 31 +++++++--------- packages/cypress/internal/run-cypress.js | 6 ++-- .../internal/template.cypress_web_test.bzl | 35 +++++-------------- 7 files changed, 58 insertions(+), 62 deletions(-) rename packages/cypress/internal/{cypress-install.js => install-cypress.js} (94%) diff --git a/WORKSPACE b/WORKSPACE index ca7f5fb3ad..a24b2aa0d4 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -120,6 +120,8 @@ load("//packages/cypress:index.bzl", "cypress_repository") cypress_repository( name = "cypress", cypress_bin = "@cypress_deps//:node_modules/cypress/bin/cypress", + # Currently cypress cannot be installed on our Linux/Windows CI machines + fail_on_error = False, ) # diff --git a/packages/cypress/BUILD.bazel b/packages/cypress/BUILD.bazel index ef7b3dc563..8cdb6fdd73 100644 --- a/packages/cypress/BUILD.bazel +++ b/packages/cypress/BUILD.bazel @@ -76,8 +76,8 @@ pkg_npm( srcs = [ "index.bzl", "package.json", - "//packages/cypress:internal/cypress-install.js", "//packages/cypress:internal/cypress_repository.bzl", + "//packages/cypress:internal/install-cypress.js", "//packages/cypress:internal/plugins/base.js", "//packages/cypress:internal/plugins/index.template.js", "//packages/cypress:internal/run-cypress.js", @@ -90,8 +90,8 @@ pkg_npm( "plugins/base.js", ])""", substitutions = { - "@build_bazel_rules_nodejs//packages/cypress:internal/cypress-install.js": "TEMPLATED_node_modules_workspace_name//@bazel/cypress:internal/cypress-install.js", "@build_bazel_rules_nodejs//packages/cypress:internal/cypress_repository.bzl": "//packages/cypress:internal/cypress_repository.bzl", + "@build_bazel_rules_nodejs//packages/cypress:internal/install-cypress.js": "TEMPLATED_node_modules_workspace_name//@bazel/cypress:internal/install-cypress.js", "@build_bazel_rules_nodejs//packages/cypress:internal/plugins/base.js": "TEMPLATED_node_modules_workspace_name//@bazel/cypress:internal/plugins/base.js", "@build_bazel_rules_nodejs//packages/cypress:internal/plugins/index.template.js": "TEMPLATED_node_modules_workspace_name//@bazel/cypress:internal/plugins/index.template.js", "@build_bazel_rules_nodejs//packages/cypress:internal/run-cypress.js": "TEMPLATED_node_modules_workspace_name//@bazel/cypress:internal/run-cypress.js", diff --git a/packages/cypress/internal/cypress_repository.bzl b/packages/cypress/internal/cypress_repository.bzl index c767cc15d8..0c06c2ceba 100644 --- a/packages/cypress/internal/cypress_repository.bzl +++ b/packages/cypress/internal/cypress_repository.bzl @@ -20,10 +20,10 @@ load("@build_bazel_rules_nodejs//internal/node:node_labels.bzl", "get_node_label def _cypress_repository_impl(repository_ctx): node = repository_ctx.path(get_node_label(repository_ctx)) - cypress_install = "packages/cypress/internal/cypress-install.js" + install_cypress = "packages/cypress/internal/install-cypress.js" repository_ctx.template( - cypress_install, - repository_ctx.path(repository_ctx.attr._cypress_install), + install_cypress, + repository_ctx.path(repository_ctx.attr._install_cypress), {}, ) @@ -36,10 +36,13 @@ def _cypress_repository_impl(repository_ctx): ) exec_result = repository_ctx.execute( - [node, cypress_install, repository_ctx.path(repository_ctx.attr.cypress_bin)], + [node, install_cypress, repository_ctx.path(repository_ctx.attr.cypress_bin)], quiet = repository_ctx.attr.quiet, ) + if exec_result.return_code != 0 and repository_ctx.attr.fail_on_error: + fail("\ncypress_repository exited with code: {}\n\nstdout:\n{}\n\nstderr:\n{}\n\n".format(exec_result.return_code, exec_result.stdout, exec_result.stderr)) + cypress_repository = repository_rule( implementation = _cypress_repository_impl, attrs = { @@ -48,17 +51,21 @@ cypress_repository = repository_rule( allow_single_file = True, default = "@npm//:node_modules/cypress/bin/cypress", ), + "fail_on_error": attr.bool( + default = True, + doc = "If the repository rule should allow errors", + ), "quiet": attr.bool( default = True, doc = "If stdout and stderr should be printed to the terminal", ), - "_cypress_install": attr.label( - allow_single_file = True, - default = "//packages/cypress:internal/cypress-install.js", - ), "_cypress_web_test": attr.label( allow_single_file = True, default = "//packages/cypress:internal/template.cypress_web_test.bzl", ), + "_install_cypress": attr.label( + allow_single_file = True, + default = "//packages/cypress:internal/install-cypress.js", + ), }, ) diff --git a/packages/cypress/internal/cypress-install.js b/packages/cypress/internal/install-cypress.js similarity index 94% rename from packages/cypress/internal/cypress-install.js rename to packages/cypress/internal/install-cypress.js index 8d52c3b8f4..e8267088ee 100644 --- a/packages/cypress/internal/cypress-install.js +++ b/packages/cypress/internal/install-cypress.js @@ -1,5 +1,5 @@ /** - * cypress-install is responsible for creating an external repository from which a cypress_web_test + * install-cypress is responsible for creating an external repository from which a cypress_web_test * can be loaded. The script invokes `cypress install` to download and install the cypress binary * and subsequently calls cypress verify to ensure the binary is runnable. * @@ -47,7 +47,12 @@ exports_files([ _cypress_web_test = "cypress_web_test_global_cache", ) cypress_web_test = _cypress_web_test`) + + const env = { + PATH: `${dirname(nodePath)}:${process.env.PATH}`, + }; const spawnOptions = { + env, stdio: [process.stdin, process.stdout, process.stderr], shell: process.env.SHELL }; @@ -71,6 +76,7 @@ function installSandboxedCypressCache() { const env = { CYPRESS_CACHE_FOLDER: join(cwd, 'cypress-cache'), PATH: `${dirname(nodePath)}:${process.env.PATH}`, + DEBUG: 'cypress:*' } const spawnOptions = @@ -91,9 +97,7 @@ function installSandboxedCypressCache() { }; let CYPRESS_RUN_BINARY; - const cacheFiles = []; walkDir(env.CYPRESS_CACHE_FOLDER, (filePath) => { - cacheFiles.push(filePath); if (basename(filePath) === 'Cypress') { if (CYPRESS_RUN_BINARY) { throw new Error(`More than one cypress executable found: ${CYPRESS_RUN_BINARY} ${filePath}`) @@ -107,12 +111,19 @@ function installSandboxedCypressCache() { throw new Error(`No cypress executable found.`); } - const verify = spawnSync(`${cypressBin}`, ['verify'], spawnOptions); + spawnOptions.env.CYPRESS_RUN_BINARY = CYPRESS_RUN_BINARY; + + const verify = spawnSync(cypressBin, ['verify'], spawnOptions); if (verify.status !== 0) { throw new Error(`cypress verify failed`); } + const cacheFiles = []; + walkDir(env.CYPRESS_CACHE_FOLDER, (filePath) => { + cacheFiles.push(filePath); + }); + writeFileSync('index.bzl', `load( "//:packages/cypress/internal/cypress_web_test.bzl", _cypress_web_test = "cypress_web_test", diff --git a/packages/cypress/internal/plugins/index.template.js b/packages/cypress/internal/plugins/index.template.js index 0f403dd581..48d7c0463e 100644 --- a/packages/cypress/internal/plugins/index.template.js +++ b/packages/cypress/internal/plugins/index.template.js @@ -1,5 +1,4 @@ -const fs = require('fs'); -const {join, basename, normalize} = require('path'); +const {join, normalize} = require('path'); const basePluginShortPath = 'TEMPLATED_pluginsFile'; const integrationFileShortPaths = TEMPLATED_integrationFileShortPaths; @@ -12,31 +11,27 @@ const browserifyFactory = require(normalize(`TEMPLATED_@cypress/browserify-prepr const browserify = browserifyFactory(browserifyFactory.defaultOptions); module.exports = (on, config) => { - // Load in the user's cypress plugin - config = basePlugin(on, config); + // Set env variables needed usually set by for `bazel test` invocations + // (they are not set automatically for `bazel run`). + process.env.RUNFILES_DIR = process.env.RUNFILES_DIR || join(cwd, '../'); + process.env.RUNFILES_MANIFEST_FILE = + process.env.RUNFILES_MANIFEST_FILE || join(cwd, '../', 'MANIFEST'); // Set test files to tests passed as `srcs` config.integrationFolder = cwd; config.testFiles = integrationFileShortPaths; - // Set screenshots folder to a writable directory - const screenshotsFolder = join(process.env['TEST_UNDECLARED_OUTPUTS_DIR'], 'screenshots'); - fs.mkdirSync(screenshotsFolder); - config.screenshotsFolder = screenshotsFolder; - - // Set videos folder to a writable directory - const videosFolder = join(process.env['TEST_UNDECLARED_OUTPUTS_DIR'], 'videos'); - fs.mkdirSync(videosFolder); - config.videosFolder = videosFolder; - - // Chrome sandboxing must be disabled for execution during bazel test. - config.chromeWebSecurity = false; + // Set screenshots/videos folder to a writable directory + config.screenshotsFolder = process.env['TEST_UNDECLARED_OUTPUTS_DIR'] || process.env.RUNFILES_DIR; + config.videosFolder = process.env['TEST_UNDECLARED_OUTPUTS_DIR'] || process.env.RUNFILES_DIR; // Set file preprocessing output path to writable directory. on('file:preprocessor', (file) => { - file.outputPath = join(process.env['TEST_UNDECLARED_OUTPUTS_DIR'], basename(file.outputPath)); + file.outputPath = + join(process.env['TEST_TMPDIR'], file.outputPath.split('/bundles/').slice(1).join()); return browserify(file); }); - return config; + // Load in the user's cypress plugin + return basePlugin(on, config); }; diff --git a/packages/cypress/internal/run-cypress.js b/packages/cypress/internal/run-cypress.js index cab1cb579a..ebeeec6567 100644 --- a/packages/cypress/internal/run-cypress.js +++ b/packages/cypress/internal/run-cypress.js @@ -7,11 +7,11 @@ const [node, entry, configFilePath, pluginsFilePath, cypressExecutable, ...args] if (cypressExecutable) { process.env.CYPRESS_RUN_BINARY = join(process.cwd(), cypressExecutable.replace('external/', '../')); + process.env.CYPRESS_CACHE_FOLDER = + join(process.env.CYPRESS_RUN_BINARY.split('/cypress-cache/')[0], '/cypress-cache'); + process.env.HOME = process.env['TEST_TMPDIR']; } -console.log(process.argv); - - const pluginsFile = runfiles.resolveWorkspaceRelative(pluginsFilePath).replace(process.cwd(), '.'); const configFile = runfiles.resolveWorkspaceRelative(configFilePath).replace(process.cwd(), '.'); diff --git a/packages/cypress/internal/template.cypress_web_test.bzl b/packages/cypress/internal/template.cypress_web_test.bzl index bb25198b46..73f113b908 100644 --- a/packages/cypress/internal/template.cypress_web_test.bzl +++ b/packages/cypress/internal/template.cypress_web_test.bzl @@ -41,8 +41,6 @@ def _cypress_plugin_impl(ctx): template = ctx.file._plugin_template, substitutions = { "TEMPLATED_@cypress/browserify-preprocessor": "${cwd}/../cypress_deps/node_modules/@cypress/browserify-preprocessor/index", - "TEMPLATED_includeScreenshots": "true" if ctx.attr.include_screenshots else "false", - "TEMPLATED_includeVideos": "true" if ctx.attr.include_video else "false", "TEMPLATED_integrationFileShortPaths": "[\n {files}\n]".format(files = ",\n ".join(integration_files_short_paths)), "TEMPLATED_pluginsFile": plugins_file.short_path, }, @@ -52,13 +50,6 @@ def _cypress_plugin_impl(ctx): files = depset([ctx.outputs.plugin]), )] -# Avoid using non-normalized paths (workspace/../other_workspace/path) -def _to_manifest_path(ctx, file): - if file.short_path.startswith("../"): - return file.short_path[3:] - else: - return ctx.workspace_name + "/" + file.short_path - _cypress_plugin = rule( implementation = _cypress_plugin_impl, outputs = {"plugin": "%{name}_cypress_plugin.js"}, @@ -67,8 +58,6 @@ _cypress_plugin = rule( allow_single_file = [".json"], mandatory = True, ), - "include_screenshots": attr.bool(default = False), - "include_video": attr.bool(default = False), "plugins_file": attr.label( default = Label("@build_bazel_rules_nodejs//packages/cypress:internal/plugins/base.js"), allow_single_file = True, @@ -89,8 +78,6 @@ def cypress_web_test( name, config_file, srcs = [], - include_screenshots = False, - include_video = False, plugins_file = Label("@build_bazel_rules_nodejs//packages/cypress:internal/plugins/base.js"), cypress = Label("TEMPLATED_node_modules_workspace_name//cypress:cypress"), cypress_browserify_preprocessor = Label("TEMPLATED_node_modules_workspace_name//@cypress/browserify-preprocessor"), @@ -106,8 +93,6 @@ def cypress_web_test( name = cypress_plugin, srcs = srcs, tags = tags, - include_screenshots = include_screenshots, - include_video = include_video, plugins_file = plugins_file, config_file = config_file, testonly = True, @@ -123,14 +108,14 @@ def cypress_web_test( cypress_browserify_preprocessor, cypress_cache, cypress_executable, - ":{cypress_plugin}".format(cypress_plugin = cypress_plugin), - ":{config_file}".format(config_file = config_file), + "{cypress_plugin}".format(cypress_plugin = cypress_plugin), + "{config_file}".format(config_file = config_file), ] + srcs, entry_point = "@build_bazel_rules_nodejs//packages/cypress:internal/run-cypress.js", templated_args = [ "--nobazel_patch_module_resolver", - "$(rootpath :{config_file})".format(config_file = config_file), - "$(rootpath :{cypress_plugin})".format(cypress_plugin = cypress_plugin), + "$(rootpath {config_file})".format(config_file = config_file), + "$(rootpath {cypress_plugin})".format(cypress_plugin = cypress_plugin), "$(rootpath {cypress_executable})".format(cypress_executable = cypress_executable), ] + templated_args, **kwargs @@ -140,8 +125,6 @@ def cypress_web_test_global_cache( name, config_file, srcs = [], - include_screenshots = False, - include_video = False, plugins_file = Label("@build_bazel_rules_nodejs//packages/cypress:plugins/base.js"), cypress = Label("TEMPLATED_node_modules_workspace_name//cypress:cypress"), cypress_browserify_preprocessor = Label("TEMPLATED_node_modules_workspace_name//@cypress/browserify-preprocessor"), @@ -155,8 +138,6 @@ def cypress_web_test_global_cache( name = cypress_plugin, srcs = srcs, tags = tags, - include_screenshots = include_screenshots, - include_video = include_video, plugins_file = plugins_file, config_file = config_file, testonly = True, @@ -170,14 +151,14 @@ def cypress_web_test_global_cache( plugins_file, cypress, cypress_browserify_preprocessor, - ":{cypress_plugin}".format(cypress_plugin = cypress_plugin), - ":{config_file}".format(config_file = config_file), + "{cypress_plugin}".format(cypress_plugin = cypress_plugin), + "{config_file}".format(config_file = config_file), ] + srcs, entry_point = "@build_bazel_rules_nodejs//packages/cypress:internal/run-cypress.js", templated_args = [ "--nobazel_patch_module_resolver", - "$(rootpath :{config_file})".format(config_file = config_file), - "$(rootpath :{cypress_plugin})".format(cypress_plugin = cypress_plugin), + "$(rootpath {config_file})".format(config_file = config_file), + "$(rootpath {cypress_plugin})".format(cypress_plugin = cypress_plugin), ] + templated_args, **kwargs ) From 7a687bf21fe8a4228585ae1515da7ef696020b1f Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 10 Aug 2020 08:13:11 -0700 Subject: [PATCH 0809/1134] docs: update docs for release --- docs/Cypress.md | 7 ++++++- docs/Rollup.md | 2 +- docs/Terser.md | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/Cypress.md b/docs/Cypress.md index 18d143db7c..26a4bdf25a 100755 --- a/docs/Cypress.md +++ b/docs/Cypress.md @@ -108,7 +108,7 @@ cypress_web_test( ### Usage ``` -cypress_repository(name, cypress_bin, quiet) +cypress_repository(name, cypress_bin, fail_on_error, quiet) ``` @@ -121,6 +121,11 @@ cypress_repository(name, cypress_bin, quiet) Defaults to `@npm//:node_modules/cypress/bin/cypress` +#### `fail_on_error` +(*Boolean*): If the repository rule should allow errors + +Defaults to `True` + #### `quiet` (*Boolean*): If stdout and stderr should be printed to the terminal diff --git a/docs/Rollup.md b/docs/Rollup.md index 0b301e8d0e..98f4f98474 100755 --- a/docs/Rollup.md +++ b/docs/Rollup.md @@ -49,7 +49,7 @@ See https://rollupjs.org/guide/en/#command-line-reference Typical example: ```python -load("//packages/rollup:index.bzl", "rollup_bundle") +load("@npm//@bazel/rollup:index.bzl", "rollup_bundle") rollup_bundle( name = "bundle", diff --git a/docs/Terser.md b/docs/Terser.md index 474723e4a5..e75a146951 100755 --- a/docs/Terser.md +++ b/docs/Terser.md @@ -47,7 +47,7 @@ Run the terser minifier. Typical example: ```python -load("//packages/terser:index.bzl", "terser_minified") +load("@npm//@bazel/terser:index.bzl", "terser_minified") terser_minified( name = "out.min", From 792d159f86b6f6c9310a75da319a1cb6561ca17a Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 10 Aug 2020 08:13:34 -0700 Subject: [PATCH 0810/1134] chore(release): 2.0.2 --- CHANGELOG.md | 12 ++++++++++++ docs/install.md | 4 ++-- e2e/bazel_managed_deps/WORKSPACE | 4 ++-- e2e/coverage/WORKSPACE | 4 ++-- e2e/fine_grained_symlinks/WORKSPACE | 4 ++-- e2e/jasmine/WORKSPACE | 4 ++-- e2e/node_loader_no_preserve_symlinks/WORKSPACE | 4 ++-- e2e/node_loader_preserve_symlinks/WORKSPACE | 4 ++-- e2e/nodejs_image/WORKSPACE | 4 ++-- e2e/packages/WORKSPACE | 4 ++-- e2e/ts_devserver/WORKSPACE | 4 ++-- e2e/typescript/WORKSPACE | 4 ++-- e2e/webapp/WORKSPACE | 4 ++-- examples/angular/WORKSPACE | 4 ++-- examples/angular_bazel_architect/WORKSPACE | 4 ++-- examples/angular_view_engine/WORKSPACE | 4 ++-- examples/app/WORKSPACE | 4 ++-- examples/closure/WORKSPACE | 4 ++-- examples/create-react-app/WORKSPACE | 4 ++-- examples/cypress/WORKSPACE | 4 ++-- examples/jest/WORKSPACE | 4 ++-- examples/kotlin/WORKSPACE | 4 ++-- examples/nestjs/WORKSPACE | 4 ++-- examples/parcel/WORKSPACE | 4 ++-- examples/protocol_buffers/WORKSPACE | 4 ++-- examples/react_webpack/WORKSPACE | 4 ++-- examples/vendored_node/WORKSPACE | 4 ++-- examples/vendored_node_and_yarn/WORKSPACE | 4 ++-- examples/vue/WORKSPACE | 4 ++-- examples/web_testing/WORKSPACE | 4 ++-- examples/webapp/WORKSPACE | 4 ++-- examples/worker/WORKSPACE | 4 ++-- package.json | 2 +- packages/create/index.js | 4 ++-- version.bzl | 2 +- 35 files changed, 78 insertions(+), 66 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0664abada..d6966c9498 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +## [2.0.2](https://github.com/bazelbuild/rules_nodejs/compare/2.0.1...2.0.2) (2020-08-10) + + +### Bug Fixes + +* **cypress:** allow for async cypress plugins ([4fd4653](https://github.com/bazelbuild/rules_nodejs/commit/4fd4653)) +* coverage ([#2100](https://github.com/bazelbuild/rules_nodejs/issues/2100)) ([e5fc274](https://github.com/bazelbuild/rules_nodejs/commit/e5fc274)) +* remove duplicate Importing ([23f80cf](https://github.com/bazelbuild/rules_nodejs/commit/23f80cf)) +* test file pattern ([#2089](https://github.com/bazelbuild/rules_nodejs/issues/2089)) ([857471e](https://github.com/bazelbuild/rules_nodejs/commit/857471e)) + + + ## [2.0.1](https://github.com/bazelbuild/rules_nodejs/compare/2.0.0...2.0.1) (2020-07-24) diff --git a/docs/install.md b/docs/install.md index 813b1fb0cf..7243cc439e 100644 --- a/docs/install.md +++ b/docs/install.md @@ -31,8 +31,8 @@ containing: load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories") diff --git a/e2e/bazel_managed_deps/WORKSPACE b/e2e/bazel_managed_deps/WORKSPACE index 48c80fe081..44addd5d04 100644 --- a/e2e/bazel_managed_deps/WORKSPACE +++ b/e2e/bazel_managed_deps/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/coverage/WORKSPACE b/e2e/coverage/WORKSPACE index 3063f5ba6c..fd3439077c 100644 --- a/e2e/coverage/WORKSPACE +++ b/e2e/coverage/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/fine_grained_symlinks/WORKSPACE b/e2e/fine_grained_symlinks/WORKSPACE index f6b4648361..d474eb5d3c 100644 --- a/e2e/fine_grained_symlinks/WORKSPACE +++ b/e2e/fine_grained_symlinks/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") diff --git a/e2e/jasmine/WORKSPACE b/e2e/jasmine/WORKSPACE index 31d25b36ee..5723e57546 100644 --- a/e2e/jasmine/WORKSPACE +++ b/e2e/jasmine/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/node_loader_no_preserve_symlinks/WORKSPACE b/e2e/node_loader_no_preserve_symlinks/WORKSPACE index 8b85296e66..bc26fda073 100644 --- a/e2e/node_loader_no_preserve_symlinks/WORKSPACE +++ b/e2e/node_loader_no_preserve_symlinks/WORKSPACE @@ -9,8 +9,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") diff --git a/e2e/node_loader_preserve_symlinks/WORKSPACE b/e2e/node_loader_preserve_symlinks/WORKSPACE index 729e1d1047..6a9adc3c4a 100644 --- a/e2e/node_loader_preserve_symlinks/WORKSPACE +++ b/e2e/node_loader_preserve_symlinks/WORKSPACE @@ -9,8 +9,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/nodejs_image/WORKSPACE b/e2e/nodejs_image/WORKSPACE index cf66c757f4..ec54c1be66 100644 --- a/e2e/nodejs_image/WORKSPACE +++ b/e2e/nodejs_image/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/packages/WORKSPACE b/e2e/packages/WORKSPACE index d63a0deb73..b9f8397636 100644 --- a/e2e/packages/WORKSPACE +++ b/e2e/packages/WORKSPACE @@ -4,8 +4,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "check_rules_nodejs_version", "node_repositories", "npm_install", "yarn_install") diff --git a/e2e/ts_devserver/WORKSPACE b/e2e/ts_devserver/WORKSPACE index cd69b90daa..2efcd0f3d0 100644 --- a/e2e/ts_devserver/WORKSPACE +++ b/e2e/ts_devserver/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/typescript/WORKSPACE b/e2e/typescript/WORKSPACE index d583d0014b..f8bb38eb78 100644 --- a/e2e/typescript/WORKSPACE +++ b/e2e/typescript/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/webapp/WORKSPACE b/e2e/webapp/WORKSPACE index afdea2dcb1..fabfb3a580 100644 --- a/e2e/webapp/WORKSPACE +++ b/e2e/webapp/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/angular/WORKSPACE b/examples/angular/WORKSPACE index 83dccf515f..ac6500c3ff 100644 --- a/examples/angular/WORKSPACE +++ b/examples/angular/WORKSPACE @@ -16,8 +16,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch rules_nodejs so we can install our npm dependencies http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) # Fetch sass rules for compiling sass files diff --git a/examples/angular_bazel_architect/WORKSPACE b/examples/angular_bazel_architect/WORKSPACE index cacc8fd4a5..71708bad29 100644 --- a/examples/angular_bazel_architect/WORKSPACE +++ b/examples/angular_bazel_architect/WORKSPACE @@ -12,8 +12,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) # The yarn_install rule runs yarn anytime the package.json or yarn.lock file changes. diff --git a/examples/angular_view_engine/WORKSPACE b/examples/angular_view_engine/WORKSPACE index 1681177bf8..4c1012f448 100644 --- a/examples/angular_view_engine/WORKSPACE +++ b/examples/angular_view_engine/WORKSPACE @@ -16,8 +16,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch rules_nodejs so we can install our npm dependencies http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) # Fetch sass rules for compiling sass files diff --git a/examples/app/WORKSPACE b/examples/app/WORKSPACE index 1692502a14..ed167dac0e 100644 --- a/examples/app/WORKSPACE +++ b/examples/app/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/closure/WORKSPACE b/examples/closure/WORKSPACE index f778ed9446..5ffceb8960 100644 --- a/examples/closure/WORKSPACE +++ b/examples/closure/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/create-react-app/WORKSPACE b/examples/create-react-app/WORKSPACE index 8db4f0e122..b33790729c 100644 --- a/examples/create-react-app/WORKSPACE +++ b/examples/create-react-app/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) http_archive( diff --git a/examples/cypress/WORKSPACE b/examples/cypress/WORKSPACE index a01a6e02ff..bf02c851bb 100644 --- a/examples/cypress/WORKSPACE +++ b/examples/cypress/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/jest/WORKSPACE b/examples/jest/WORKSPACE index 1a37927f56..82a7bf8d77 100644 --- a/examples/jest/WORKSPACE +++ b/examples/jest/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/kotlin/WORKSPACE b/examples/kotlin/WORKSPACE index 72e48847de..338675664b 100644 --- a/examples/kotlin/WORKSPACE +++ b/examples/kotlin/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) # Install external npm dependencies diff --git a/examples/nestjs/WORKSPACE b/examples/nestjs/WORKSPACE index 9670d269b6..e41f9a3823 100644 --- a/examples/nestjs/WORKSPACE +++ b/examples/nestjs/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/parcel/WORKSPACE b/examples/parcel/WORKSPACE index 2206ce074a..de3c9e6734 100644 --- a/examples/parcel/WORKSPACE +++ b/examples/parcel/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "npm_install") diff --git a/examples/protocol_buffers/WORKSPACE b/examples/protocol_buffers/WORKSPACE index dfea5012d4..f6245a01ef 100644 --- a/examples/protocol_buffers/WORKSPACE +++ b/examples/protocol_buffers/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) http_archive( diff --git a/examples/react_webpack/WORKSPACE b/examples/react_webpack/WORKSPACE index 8867148902..1ff4d637af 100644 --- a/examples/react_webpack/WORKSPACE +++ b/examples/react_webpack/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/vendored_node/WORKSPACE b/examples/vendored_node/WORKSPACE index 2e2ec98a97..e9f9580ad7 100644 --- a/examples/vendored_node/WORKSPACE +++ b/examples/vendored_node/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) http_archive( diff --git a/examples/vendored_node_and_yarn/WORKSPACE b/examples/vendored_node_and_yarn/WORKSPACE index fce18a7b2e..fa3f1a1943 100644 --- a/examples/vendored_node_and_yarn/WORKSPACE +++ b/examples/vendored_node_and_yarn/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) http_archive( diff --git a/examples/vue/WORKSPACE b/examples/vue/WORKSPACE index cfa5e26f4e..2057465894 100644 --- a/examples/vue/WORKSPACE +++ b/examples/vue/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "npm_install") diff --git a/examples/web_testing/WORKSPACE b/examples/web_testing/WORKSPACE index 671bd0b3a9..8a81352d04 100644 --- a/examples/web_testing/WORKSPACE +++ b/examples/web_testing/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/webapp/WORKSPACE b/examples/webapp/WORKSPACE index 8a501752bc..61bc70904b 100644 --- a/examples/webapp/WORKSPACE +++ b/examples/webapp/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/worker/WORKSPACE b/examples/worker/WORKSPACE index 17cb138b0b..8d45d5d84e 100644 --- a/examples/worker/WORKSPACE +++ b/examples/worker/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/package.json b/package.json index 3846e1aefa..35f4444415 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@bazel/javascript", "description": "Build JavaScript with Bazel", - "version": "2.0.1", + "version": "2.0.2", "keywords": [ "javascript", "bazel" diff --git a/packages/create/index.js b/packages/create/index.js index 1ad49bc193..660fe213bc 100644 --- a/packages/create/index.js +++ b/packages/create/index.js @@ -157,8 +157,8 @@ workspace( load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"], + sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], ) ${pkgMgr === 'yarn' ? yarnInstallCmd : npmInstallCmd}`; diff --git a/version.bzl b/version.bzl index b8e9989477..5ddb2f0179 100644 --- a/version.bzl +++ b/version.bzl @@ -19,4 +19,4 @@ # It will be automatically synced via the npm "version" script # that is run when running `npm version` during the release # process. See `Releasing` section in README.md. -VERSION = "2.0.1" +VERSION = "2.0.2" From c65c209f4373c2e3930375863feb1c5b6fb76bc7 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 10 Aug 2020 08:32:55 -0700 Subject: [PATCH 0811/1134] chore: update lock files for release --- e2e/bazel_managed_deps/package.json | 2 +- e2e/bazel_managed_deps/yarn.lock | 8 +- e2e/coverage/package.json | 8 +- e2e/coverage/yarn.lock | 16 +- e2e/jasmine/package.json | 2 +- e2e/jasmine/yarn.lock | 8 +- e2e/ts_devserver/package.json | 4 +- e2e/ts_devserver/yarn.lock | 18 +- e2e/typescript/package.json | 4 +- e2e/typescript/yarn.lock | 16 +- e2e/webapp/package.json | 4 +- e2e/webapp/yarn.lock | 18 +- examples/angular/package.json | 18 +- examples/angular/yarn.lock | 56 +++--- examples/angular_bazel_architect/package.json | 2 +- examples/angular_bazel_architect/yarn.lock | 8 +- examples/angular_view_engine/package.json | 16 +- examples/angular_view_engine/yarn.lock | 48 ++--- examples/app/package.json | 8 +- examples/app/yarn.lock | 38 ++-- examples/create-react-app/package.json | 2 +- examples/create-react-app/yarn.lock | 8 +- examples/cypress/package.json | 6 +- examples/cypress/yarn.lock | 24 +-- examples/from_source/yarn.lock | 187 ++++++++++++++---- examples/kotlin/package-lock.json | 18 +- examples/kotlin/package.json | 10 +- examples/nestjs/package.json | 6 +- examples/nestjs/yarn.lock | 24 +-- examples/protocol_buffers/package.json | 16 +- examples/protocol_buffers/yarn.lock | 48 ++--- examples/react_webpack/package.json | 4 +- examples/react_webpack/yarn.lock | 16 +- examples/vendored_node/package-lock.json | 6 +- examples/vendored_node/package.json | 2 +- examples/vendored_node_and_yarn/package.json | 2 +- examples/vendored_node_and_yarn/yarn.lock | 8 +- examples/vue/package-lock.json | 6 +- examples/vue/package.json | 2 +- examples/web_testing/package.json | 4 +- examples/web_testing/yarn.lock | 16 +- examples/webapp/package.json | 8 +- examples/webapp/yarn.lock | 32 +-- examples/worker/package.json | 2 +- examples/worker/yarn.lock | 8 +- 45 files changed, 435 insertions(+), 332 deletions(-) diff --git a/e2e/bazel_managed_deps/package.json b/e2e/bazel_managed_deps/package.json index 055e15580e..ad2ea4ea7f 100644 --- a/e2e/bazel_managed_deps/package.json +++ b/e2e/bazel_managed_deps/package.json @@ -1,7 +1,7 @@ { "description": "runtime dependencies for bazel_managed_deps example", "devDependencies": { - "@bazel/jasmine": "^2.0.0", + "@bazel/jasmine": "^2.0.2", "jasmine": "^3.5.0", "typescript": "^3.0.1" }, diff --git a/e2e/bazel_managed_deps/yarn.lock b/e2e/bazel_managed_deps/yarn.lock index 8e84de99a5..7212284485 100644 --- a/e2e/bazel_managed_deps/yarn.lock +++ b/e2e/bazel_managed_deps/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0.tgz#e466ba8eb386eb777f8c4e502b8760ee3d173d1d" - integrity sha512-9RLgNAy10PRkLLP0+8YJr1I8vsVE8rZIfz467/SxROZq7zmIx3lErX101t0KHLmukXT+GusrkXIlB/Vwa8DN9Q== +"@bazel/jasmine@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.2.tgz#a4ccd3bf0b780d3d617cee07d146d459076385e4" + integrity sha512-tmQY124GSTJFN67zIjTn34YAUUaPqBcC9MnDhYPyZDWqdbJ5SqDQ4aNQpRDmZvnOV3c14dKKHpXZy28nyFovOA== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/e2e/coverage/package.json b/e2e/coverage/package.json index 089438fc7a..fef13085a7 100644 --- a/e2e/coverage/package.json +++ b/e2e/coverage/package.json @@ -1,10 +1,10 @@ { "name": "e2e-coverage", "dependencies": { - "@bazel/jasmine": "^2.0.0", - "@bazel/typescript": "^2.0.0", - "typescript": "3.9.7", - "jasmine": "3.6.1" + "@bazel/jasmine": "^2.0.2", + "@bazel/typescript": "^2.0.2", + "jasmine": "3.6.1", + "typescript": "3.9.7" }, "scripts": { "test": "bazel coverage ..." diff --git a/e2e/coverage/yarn.lock b/e2e/coverage/yarn.lock index f74cc3ef4f..30eba26067 100644 --- a/e2e/coverage/yarn.lock +++ b/e2e/coverage/yarn.lock @@ -2,18 +2,18 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0.tgz#e466ba8eb386eb777f8c4e502b8760ee3d173d1d" - integrity sha512-9RLgNAy10PRkLLP0+8YJr1I8vsVE8rZIfz467/SxROZq7zmIx3lErX101t0KHLmukXT+GusrkXIlB/Vwa8DN9Q== +"@bazel/jasmine@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.2.tgz#a4ccd3bf0b780d3d617cee07d146d459076385e4" + integrity sha512-tmQY124GSTJFN67zIjTn34YAUUaPqBcC9MnDhYPyZDWqdbJ5SqDQ4aNQpRDmZvnOV3c14dKKHpXZy28nyFovOA== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" -"@bazel/typescript@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.1.tgz#f99405ce53e2d16a98f9b66da42bff9f5c055c24" - integrity sha512-zoaxp57m8WbBILv8MlNEcRf1xRbtvAyDAy2nekEy2RhvCx96slZ5+JJIQJ7AW6teb37iqvurg1OvNZsO/1bc7Q== +"@bazel/typescript@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" + integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/e2e/jasmine/package.json b/e2e/jasmine/package.json index ccf7c35a3f..10921ceb2a 100644 --- a/e2e/jasmine/package.json +++ b/e2e/jasmine/package.json @@ -1,7 +1,7 @@ { "name": "e2e-jasmine", "dependencies": { - "@bazel/jasmine": "^2.0.0", + "@bazel/jasmine": "^2.0.2", "zone.js": "0.8.29" }, "//": "Include an incompatible jasmine as a devDependency to verify that jasmine_node_test works regardless", diff --git a/e2e/jasmine/yarn.lock b/e2e/jasmine/yarn.lock index 777f950146..c6e2710101 100644 --- a/e2e/jasmine/yarn.lock +++ b/e2e/jasmine/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0.tgz#e466ba8eb386eb777f8c4e502b8760ee3d173d1d" - integrity sha512-9RLgNAy10PRkLLP0+8YJr1I8vsVE8rZIfz467/SxROZq7zmIx3lErX101t0KHLmukXT+GusrkXIlB/Vwa8DN9Q== +"@bazel/jasmine@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.2.tgz#a4ccd3bf0b780d3d617cee07d146d459076385e4" + integrity sha512-tmQY124GSTJFN67zIjTn34YAUUaPqBcC9MnDhYPyZDWqdbJ5SqDQ4aNQpRDmZvnOV3c14dKKHpXZy28nyFovOA== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/e2e/ts_devserver/package.json b/e2e/ts_devserver/package.json index 2f148a89c2..b465dcfd2e 100644 --- a/e2e/ts_devserver/package.json +++ b/e2e/ts_devserver/package.json @@ -1,7 +1,7 @@ { "dependencies": { - "@bazel/protractor": "^2.0.0", - "@bazel/typescript": "^2.0.0", + "@bazel/protractor": "^2.0.2", + "@bazel/typescript": "^2.0.2", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "date-fns": "1.30.1", diff --git a/e2e/ts_devserver/yarn.lock b/e2e/ts_devserver/yarn.lock index 02bf3e1bd2..de9a69ce29 100644 --- a/e2e/ts_devserver/yarn.lock +++ b/e2e/ts_devserver/yarn.lock @@ -2,15 +2,15 @@ # yarn lockfile v1 -"@bazel/protractor@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0.tgz#1b67a2f61c7124a25ae4322b585f91a26592458b" - integrity sha512-mr+Jkg/Ta5cp1FQevbV9DqXidDmScX3vy82HjAIew1Y1aQMT9SJ5RVopSSQFe/pIx/zodpAiW1D6lynPiwS1Cw== - -"@bazel/typescript@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" - integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== +"@bazel/protractor@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.2.tgz#da276a82799b24de947b2ed19ed1acc4ce5bf895" + integrity sha512-JGFILIrqroJoa91iC0dSjQA2aXFM9c5BEN2LQuqn/NxTU4dPbLUXrrEZ/dzJOnlQvnfRhYQIFiA3gMFbG+/RnA== + +"@bazel/typescript@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" + integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/e2e/typescript/package.json b/e2e/typescript/package.json index 6fd6624521..17aa5cce03 100644 --- a/e2e/typescript/package.json +++ b/e2e/typescript/package.json @@ -1,7 +1,7 @@ { "dependencies": { - "@bazel/jasmine": "^2.0.0", - "@bazel/typescript": "^2.0.0", + "@bazel/jasmine": "^2.0.2", + "@bazel/typescript": "^2.0.2", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "date-fns": "^1.30.1", diff --git a/e2e/typescript/yarn.lock b/e2e/typescript/yarn.lock index 86ed87bb87..9858ca2f22 100644 --- a/e2e/typescript/yarn.lock +++ b/e2e/typescript/yarn.lock @@ -2,18 +2,18 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0.tgz#e466ba8eb386eb777f8c4e502b8760ee3d173d1d" - integrity sha512-9RLgNAy10PRkLLP0+8YJr1I8vsVE8rZIfz467/SxROZq7zmIx3lErX101t0KHLmukXT+GusrkXIlB/Vwa8DN9Q== +"@bazel/jasmine@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.2.tgz#a4ccd3bf0b780d3d617cee07d146d459076385e4" + integrity sha512-tmQY124GSTJFN67zIjTn34YAUUaPqBcC9MnDhYPyZDWqdbJ5SqDQ4aNQpRDmZvnOV3c14dKKHpXZy28nyFovOA== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" -"@bazel/typescript@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" - integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== +"@bazel/typescript@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" + integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/e2e/webapp/package.json b/e2e/webapp/package.json index 266df3e1df..c2cb755d4d 100644 --- a/e2e/webapp/package.json +++ b/e2e/webapp/package.json @@ -2,8 +2,8 @@ "name": "e2e-terser", "private": true, "devDependencies": { - "@bazel/rollup": "^2.0.0", - "@bazel/terser": "^2.0.0", + "@bazel/rollup": "^2.0.2", + "@bazel/terser": "^2.0.2", "rollup": "2.3.0", "terser": "4.3.1" }, diff --git a/e2e/webapp/yarn.lock b/e2e/webapp/yarn.lock index 3dccba7e26..85bced2d71 100644 --- a/e2e/webapp/yarn.lock +++ b/e2e/webapp/yarn.lock @@ -2,15 +2,15 @@ # yarn lockfile v1 -"@bazel/rollup@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0.tgz#1980cb3f6922227659260bfdca99c457889a5bc1" - integrity sha512-mifUfCZbD1RIhfowh4N8E4881ag3FChz7F4z35wxMOP52g1q3+6Bvh5wv9iysFQopxGmS5jNEj3Dq/CWtSoOnw== - -"@bazel/terser@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0.tgz#a841db8aefd7c51c216b34a26bc02a6c93d5e56a" - integrity sha512-6mBYcfzP6pWxycYZ8r4Lz5kgiWZ7n08bVHZBIRExFeqs7Yy92dD92LPeA9FZIzFiX00IuR9Q1Lqy23xH5q7FeQ== +"@bazel/rollup@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.2.tgz#9bf0df17d94314e67d6ddce1c9d7366a212c83b0" + integrity sha512-W8G7XCbSS5cVwIc1mZ11QOmfjqGb/5psATeyB8Z5E77nSPiuYla1tFfgUJn8MOJ9C6wYVQwqIS9l5X44jLmZWg== + +"@bazel/terser@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.2.tgz#509109ffdaecc2c466756918f6354644721d714f" + integrity sha512-c3VFfgn0HZHhaav9NPpDTxmCuD6yCyFtENZXr3JbM151qPFrkDuJU0hwTe/o5f07m1HC3u6zuchzYGzPpBFyGQ== buffer-from@^1.0.0: version "1.1.1" diff --git a/examples/angular/package.json b/examples/angular/package.json index 7e89fb3275..5f33cbaf49 100644 --- a/examples/angular/package.json +++ b/examples/angular/package.json @@ -33,16 +33,18 @@ "@babel/cli": "^7.6.0", "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", - "@bazel/angular": "^2.0.0", - "@bazel/bazelisk": "^1.5.0", + "@bazel/angular": "^2.0.2", + "@bazel/bazelisk": "^1.6.0", "@bazel/benchmark-runner": "^0.1.0", "@bazel/buildifier": "^3.4.0", "@bazel/ibazel": "^0.13.1", - "@bazel/karma": "^2.0.0", - "@bazel/protractor": "^2.0.0", - "@bazel/rollup": "^2.0.0", - "@bazel/terser": "^2.0.0", - "@bazel/typescript": "^2.0.0", + "@bazel/karma": "^2.0.2", + "@bazel/protractor": "^2.0.2", + "@bazel/rollup": "^2.0.2", + "@bazel/terser": "^2.0.2", + "@bazel/typescript": "^2.0.2", + "@rollup/plugin-commonjs": "^14.0.0", + "@rollup/plugin-node-resolve": "^8.4.0", "@types/jasmine": "3.4.0", "@types/node": "6.14.6", "core-js": "2.6.9", @@ -58,8 +60,6 @@ "protractor": "^5.4.2", "requirejs": "2.3.6", "rollup": "^2.3.4", - "@rollup/plugin-commonjs": "^14.0.0", - "@rollup/plugin-node-resolve": "^8.4.0", "terser": "4.3.1", "typescript": "^3.9.0" }, diff --git a/examples/angular/yarn.lock b/examples/angular/yarn.lock index 86cf800365..3d44c70c05 100644 --- a/examples/angular/yarn.lock +++ b/examples/angular/yarn.lock @@ -827,10 +827,10 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/angular@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/angular/-/angular-2.0.0.tgz#fe010d546641accb3cde29730ff686ce04c1de6b" - integrity sha512-ZY8sDsfdl77CHuoJ2pMR4C1yuSvP66gc375EU0kSMZQOnStOksZ7g9ZxtGyBPyXH/kWCUE7uEncEZdj/+TZoAA== +"@bazel/angular@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/angular/-/angular-2.0.2.tgz#4eae8bc9af6b9efc0b8a6ea144a8adeb6d2eb2af" + integrity sha512-pT46G8UTor/EuFkMOi/AspLHKRL6XLOwduOEINL/Qp1BToBMsgvzKYKohEDsjPxRJ/v9RAOaPKP/FHoLTBsvcw== dependencies: "@angular-devkit/architect" "^0.901.7" "@bazel/bazelisk" "^1.4.0" @@ -841,10 +841,10 @@ resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.4.0.tgz#401d7b89b8d89dd579d1e16cc24cd4d9281a4fbb" integrity sha512-VNI/jF7baQiBy4x+u8gmSDsFehqaAuzMyLuCj0j6/aZCZSw2OssytJVj73m8sFYbXgj67D8iYEQ0gbuoafDk6w== -"@bazel/bazelisk@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.5.0.tgz#61f583ed93be138b47be7180403938ea4057f54b" - integrity sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg== +"@bazel/bazelisk@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.0.tgz#3742e9bd2ddaa43ac0c3b4ba167f95cfaf881400" + integrity sha512-lHFsZFR5ofj3yL2BtlbblbrglB/okocuY4T53M+tHLG/pV5H8LdzYPXrymzab/qXyyW4zKSPEpX20QITITsvtw== "@bazel/benchmark-runner@^0.1.0": version "0.1.0" @@ -871,32 +871,32 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/karma@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0.tgz#a386ba334716e6d94c667c9b40423955a727c896" - integrity sha512-VR/qzsH9/G1eJ0xqicoT7ea6FdiQGW0gd6FzPNecJnqm7OQjhKn7htRWvTONTNXoWl4qCIHTtW+RJ9piH1zU3Q== +"@bazel/karma@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.2.tgz#9863ec7f2e4cfe675b3b3f6e28340c351600758c" + integrity sha512-/bgtIQNHIgFYnH1Ts9D1fLE4n0StT8a8AayZrWklTaGSA56UjmTh1l30dACpQuiwV0VVIDlZJrQMAIBacTzwug== dependencies: tmp "0.1.0" -"@bazel/protractor@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0.tgz#1b67a2f61c7124a25ae4322b585f91a26592458b" - integrity sha512-mr+Jkg/Ta5cp1FQevbV9DqXidDmScX3vy82HjAIew1Y1aQMT9SJ5RVopSSQFe/pIx/zodpAiW1D6lynPiwS1Cw== +"@bazel/protractor@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.2.tgz#da276a82799b24de947b2ed19ed1acc4ce5bf895" + integrity sha512-JGFILIrqroJoa91iC0dSjQA2aXFM9c5BEN2LQuqn/NxTU4dPbLUXrrEZ/dzJOnlQvnfRhYQIFiA3gMFbG+/RnA== -"@bazel/rollup@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0.tgz#1980cb3f6922227659260bfdca99c457889a5bc1" - integrity sha512-mifUfCZbD1RIhfowh4N8E4881ag3FChz7F4z35wxMOP52g1q3+6Bvh5wv9iysFQopxGmS5jNEj3Dq/CWtSoOnw== +"@bazel/rollup@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.2.tgz#9bf0df17d94314e67d6ddce1c9d7366a212c83b0" + integrity sha512-W8G7XCbSS5cVwIc1mZ11QOmfjqGb/5psATeyB8Z5E77nSPiuYla1tFfgUJn8MOJ9C6wYVQwqIS9l5X44jLmZWg== -"@bazel/terser@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0.tgz#a841db8aefd7c51c216b34a26bc02a6c93d5e56a" - integrity sha512-6mBYcfzP6pWxycYZ8r4Lz5kgiWZ7n08bVHZBIRExFeqs7Yy92dD92LPeA9FZIzFiX00IuR9Q1Lqy23xH5q7FeQ== +"@bazel/terser@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.2.tgz#509109ffdaecc2c466756918f6354644721d714f" + integrity sha512-c3VFfgn0HZHhaav9NPpDTxmCuD6yCyFtENZXr3JbM151qPFrkDuJU0hwTe/o5f07m1HC3u6zuchzYGzPpBFyGQ== -"@bazel/typescript@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" - integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== +"@bazel/typescript@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" + integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/angular_bazel_architect/package.json b/examples/angular_bazel_architect/package.json index d63f6d77a5..20f7aeb2c0 100644 --- a/examples/angular_bazel_architect/package.json +++ b/examples/angular_bazel_architect/package.json @@ -33,7 +33,7 @@ "@angular/cli": "10.0.3", "@angular/compiler-cli": "10.0.4", "@angular/language-service": "10.0.4", - "@bazel/bazelisk": "^1.5.0", + "@bazel/bazelisk": "^1.6.0", "@bazel/buildifier": "^3.4.0", "@bazel/ibazel": "^0.13.1", "@types/jasmine": "~3.3.8", diff --git a/examples/angular_bazel_architect/yarn.lock b/examples/angular_bazel_architect/yarn.lock index 1c8dd96675..7348f34162 100644 --- a/examples/angular_bazel_architect/yarn.lock +++ b/examples/angular_bazel_architect/yarn.lock @@ -1200,10 +1200,10 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/bazelisk@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.5.0.tgz#61f583ed93be138b47be7180403938ea4057f54b" - integrity sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg== +"@bazel/bazelisk@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.0.tgz#3742e9bd2ddaa43ac0c3b4ba167f95cfaf881400" + integrity sha512-lHFsZFR5ofj3yL2BtlbblbrglB/okocuY4T53M+tHLG/pV5H8LdzYPXrymzab/qXyyW4zKSPEpX20QITITsvtw== "@bazel/buildifier@^3.4.0": version "3.4.0" diff --git a/examples/angular_view_engine/package.json b/examples/angular_view_engine/package.json index 83873c85d3..5d7981dcb0 100644 --- a/examples/angular_view_engine/package.json +++ b/examples/angular_view_engine/package.json @@ -32,15 +32,17 @@ "@babel/cli": "^7.6.0", "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", - "@bazel/bazelisk": "^1.5.0", + "@bazel/bazelisk": "^1.6.0", "@bazel/benchmark-runner": "^0.1.0", "@bazel/buildifier": "^3.4.0", "@bazel/ibazel": "^0.13.1", - "@bazel/karma": "^2.0.0", - "@bazel/protractor": "^2.0.0", - "@bazel/rollup": "^2.0.0", - "@bazel/terser": "^2.0.0", - "@bazel/typescript": "^2.0.0", + "@bazel/karma": "^2.0.2", + "@bazel/protractor": "^2.0.2", + "@bazel/rollup": "^2.0.2", + "@bazel/terser": "^2.0.2", + "@bazel/typescript": "^2.0.2", + "@rollup/plugin-commonjs": "^14.0.0", + "@rollup/plugin-node-resolve": "^8.4.0", "@types/jasmine": "3.4.0", "@types/node": "6.14.6", "core-js": "2.6.9", @@ -58,8 +60,6 @@ "requirejs": "2.3.6", "rollup": "^2.3.4", "rollup-plugin-amd": "^4.0.0", - "@rollup/plugin-commonjs": "^14.0.0", - "@rollup/plugin-node-resolve": "^8.4.0", "rollup-plugin-re": "^1.0.7", "terser": "4.3.1", "typescript": "3.4.5" diff --git a/examples/angular_view_engine/yarn.lock b/examples/angular_view_engine/yarn.lock index e9e4c49f37..ba5bda8c8a 100644 --- a/examples/angular_view_engine/yarn.lock +++ b/examples/angular_view_engine/yarn.lock @@ -803,10 +803,10 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/bazelisk@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.5.0.tgz#61f583ed93be138b47be7180403938ea4057f54b" - integrity sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg== +"@bazel/bazelisk@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.0.tgz#3742e9bd2ddaa43ac0c3b4ba167f95cfaf881400" + integrity sha512-lHFsZFR5ofj3yL2BtlbblbrglB/okocuY4T53M+tHLG/pV5H8LdzYPXrymzab/qXyyW4zKSPEpX20QITITsvtw== "@bazel/benchmark-runner@^0.1.0": version "0.1.0" @@ -833,32 +833,32 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/karma@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0.tgz#a386ba334716e6d94c667c9b40423955a727c896" - integrity sha512-VR/qzsH9/G1eJ0xqicoT7ea6FdiQGW0gd6FzPNecJnqm7OQjhKn7htRWvTONTNXoWl4qCIHTtW+RJ9piH1zU3Q== +"@bazel/karma@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.2.tgz#9863ec7f2e4cfe675b3b3f6e28340c351600758c" + integrity sha512-/bgtIQNHIgFYnH1Ts9D1fLE4n0StT8a8AayZrWklTaGSA56UjmTh1l30dACpQuiwV0VVIDlZJrQMAIBacTzwug== dependencies: tmp "0.1.0" -"@bazel/protractor@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0.tgz#1b67a2f61c7124a25ae4322b585f91a26592458b" - integrity sha512-mr+Jkg/Ta5cp1FQevbV9DqXidDmScX3vy82HjAIew1Y1aQMT9SJ5RVopSSQFe/pIx/zodpAiW1D6lynPiwS1Cw== +"@bazel/protractor@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.2.tgz#da276a82799b24de947b2ed19ed1acc4ce5bf895" + integrity sha512-JGFILIrqroJoa91iC0dSjQA2aXFM9c5BEN2LQuqn/NxTU4dPbLUXrrEZ/dzJOnlQvnfRhYQIFiA3gMFbG+/RnA== -"@bazel/rollup@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0.tgz#1980cb3f6922227659260bfdca99c457889a5bc1" - integrity sha512-mifUfCZbD1RIhfowh4N8E4881ag3FChz7F4z35wxMOP52g1q3+6Bvh5wv9iysFQopxGmS5jNEj3Dq/CWtSoOnw== +"@bazel/rollup@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.2.tgz#9bf0df17d94314e67d6ddce1c9d7366a212c83b0" + integrity sha512-W8G7XCbSS5cVwIc1mZ11QOmfjqGb/5psATeyB8Z5E77nSPiuYla1tFfgUJn8MOJ9C6wYVQwqIS9l5X44jLmZWg== -"@bazel/terser@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0.tgz#a841db8aefd7c51c216b34a26bc02a6c93d5e56a" - integrity sha512-6mBYcfzP6pWxycYZ8r4Lz5kgiWZ7n08bVHZBIRExFeqs7Yy92dD92LPeA9FZIzFiX00IuR9Q1Lqy23xH5q7FeQ== +"@bazel/terser@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.2.tgz#509109ffdaecc2c466756918f6354644721d714f" + integrity sha512-c3VFfgn0HZHhaav9NPpDTxmCuD6yCyFtENZXr3JbM151qPFrkDuJU0hwTe/o5f07m1HC3u6zuchzYGzPpBFyGQ== -"@bazel/typescript@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" - integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== +"@bazel/typescript@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" + integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/app/package.json b/examples/app/package.json index 1a0b1743fc..c6fc1ae084 100644 --- a/examples/app/package.json +++ b/examples/app/package.json @@ -1,9 +1,9 @@ { "devDependencies": { - "@bazel/protractor": "^2.0.0", - "@bazel/rollup": "^2.0.0", - "@bazel/terser": "^2.0.0", - "@bazel/typescript": "^2.0.0", + "@bazel/protractor": "^2.0.2", + "@bazel/rollup": "^2.0.2", + "@bazel/terser": "^2.0.2", + "@bazel/typescript": "^2.0.2", "@types/jasmine": "3.3.15", "html-insert-assets": "^0.6.0", "http-server": "^0.11.1", diff --git a/examples/app/yarn.lock b/examples/app/yarn.lock index 4018b07e33..6d05611f0a 100644 --- a/examples/app/yarn.lock +++ b/examples/app/yarn.lock @@ -2,25 +2,25 @@ # yarn lockfile v1 -"@bazel/protractor@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0.tgz#1b67a2f61c7124a25ae4322b585f91a26592458b" - integrity sha512-mr+Jkg/Ta5cp1FQevbV9DqXidDmScX3vy82HjAIew1Y1aQMT9SJ5RVopSSQFe/pIx/zodpAiW1D6lynPiwS1Cw== - -"@bazel/rollup@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0.tgz#1980cb3f6922227659260bfdca99c457889a5bc1" - integrity sha512-mifUfCZbD1RIhfowh4N8E4881ag3FChz7F4z35wxMOP52g1q3+6Bvh5wv9iysFQopxGmS5jNEj3Dq/CWtSoOnw== - -"@bazel/terser@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0.tgz#a841db8aefd7c51c216b34a26bc02a6c93d5e56a" - integrity sha512-6mBYcfzP6pWxycYZ8r4Lz5kgiWZ7n08bVHZBIRExFeqs7Yy92dD92LPeA9FZIzFiX00IuR9Q1Lqy23xH5q7FeQ== - -"@bazel/typescript@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" - integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== +"@bazel/protractor@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.2.tgz#da276a82799b24de947b2ed19ed1acc4ce5bf895" + integrity sha512-JGFILIrqroJoa91iC0dSjQA2aXFM9c5BEN2LQuqn/NxTU4dPbLUXrrEZ/dzJOnlQvnfRhYQIFiA3gMFbG+/RnA== + +"@bazel/rollup@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.2.tgz#9bf0df17d94314e67d6ddce1c9d7366a212c83b0" + integrity sha512-W8G7XCbSS5cVwIc1mZ11QOmfjqGb/5psATeyB8Z5E77nSPiuYla1tFfgUJn8MOJ9C6wYVQwqIS9l5X44jLmZWg== + +"@bazel/terser@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.2.tgz#509109ffdaecc2c466756918f6354644721d714f" + integrity sha512-c3VFfgn0HZHhaav9NPpDTxmCuD6yCyFtENZXr3JbM151qPFrkDuJU0hwTe/o5f07m1HC3u6zuchzYGzPpBFyGQ== + +"@bazel/typescript@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" + integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/create-react-app/package.json b/examples/create-react-app/package.json index fa923fe818..f826a88677 100644 --- a/examples/create-react-app/package.json +++ b/examples/create-react-app/package.json @@ -16,7 +16,7 @@ "typescript": "~3.7.2" }, "devDependencies": { - "@bazel/bazelisk": "^1.5.0", + "@bazel/bazelisk": "^1.6.0", "@bazel/ibazel": "^0.13.1", "patch-package": "^6.2.2" }, diff --git a/examples/create-react-app/yarn.lock b/examples/create-react-app/yarn.lock index c82deae7f6..25e22fcc75 100644 --- a/examples/create-react-app/yarn.lock +++ b/examples/create-react-app/yarn.lock @@ -1078,10 +1078,10 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/bazelisk@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.5.0.tgz#61f583ed93be138b47be7180403938ea4057f54b" - integrity sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg== +"@bazel/bazelisk@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.0.tgz#3742e9bd2ddaa43ac0c3b4ba167f95cfaf881400" + integrity sha512-lHFsZFR5ofj3yL2BtlbblbrglB/okocuY4T53M+tHLG/pV5H8LdzYPXrymzab/qXyyW4zKSPEpX20QITITsvtw== "@bazel/ibazel@^0.13.1": version "0.13.1" diff --git a/examples/cypress/package.json b/examples/cypress/package.json index c9d5aa26c8..ec434ee9f5 100644 --- a/examples/cypress/package.json +++ b/examples/cypress/package.json @@ -5,10 +5,10 @@ "express": "4.17.1" }, "devDependencies": { - "@bazel/bazelisk": "^1.5.0", - "@bazel/cypress": "^2.0.0", + "@bazel/bazelisk": "^1.6.0", + "@bazel/cypress": "^2.0.2", "@bazel/ibazel": "^0.13.1", - "@bazel/typescript": "^2.0.0", + "@bazel/typescript": "^2.0.2", "@cypress/browserify-preprocessor": "^3.0.0", "@types/node": "14.0.13", "cypress": "^4.8.0", diff --git a/examples/cypress/yarn.lock b/examples/cypress/yarn.lock index 4ddd5608bf..06ecbc615e 100644 --- a/examples/cypress/yarn.lock +++ b/examples/cypress/yarn.lock @@ -744,25 +744,25 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/bazelisk@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.5.0.tgz#61f583ed93be138b47be7180403938ea4057f54b" - integrity sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg== +"@bazel/bazelisk@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.0.tgz#3742e9bd2ddaa43ac0c3b4ba167f95cfaf881400" + integrity sha512-lHFsZFR5ofj3yL2BtlbblbrglB/okocuY4T53M+tHLG/pV5H8LdzYPXrymzab/qXyyW4zKSPEpX20QITITsvtw== -"@bazel/cypress@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/cypress/-/cypress-2.0.0.tgz#b93a811d2d692212c6de79993727f8a955011f1e" - integrity sha512-CrJu1WCfaQX1V6T8sGcpxGsP0U0ip8LPwWye70OrXOS/0R1p6Lk68Z22unDiPScBTTiXygDhTKLbRHREvkcdRA== +"@bazel/cypress@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/cypress/-/cypress-2.0.2.tgz#f72e1cb736e5905f498220d1d5d34f1554274906" + integrity sha512-uxcOACM/xTz0rM65y+YueYNdunjEcBm0wQ0/lOGh9f3rv7hctM7yM+XZASdfnPNmOoM79y98IULU2A30CcSvTg== "@bazel/ibazel@^0.13.1": version "0.13.1" resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/typescript@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" - integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== +"@bazel/typescript@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" + integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/from_source/yarn.lock b/examples/from_source/yarn.lock index 72bb0a9eaa..7b6ce3eda7 100644 --- a/examples/from_source/yarn.lock +++ b/examples/from_source/yarn.lock @@ -55,11 +55,51 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= +"@rollup/plugin-commonjs@^14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-14.0.0.tgz#4285f9ec2db686a31129e5a2b415c94aa1f836f0" + integrity sha512-+PSmD9ePwTAeU106i9FRdc+Zb3XUWyW26mo5Atr2mk82hor8+nPwkztEjFo8/B1fJKfaQDg9aM2bzQkjhi7zOw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + commondir "^1.0.1" + estree-walker "^1.0.1" + glob "^7.1.2" + is-reference "^1.1.2" + magic-string "^0.25.2" + resolve "^1.11.0" + +"@rollup/plugin-node-resolve@8.4.0": + version "8.4.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz#261d79a680e9dc3d86761c14462f24126ba83575" + integrity sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deep-freeze "^0.0.1" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.17.0" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@types/estree@*": version "0.0.45" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "@types/long@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" @@ -80,13 +120,26 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.14.tgz#20cd7d2a98f0c3b08d379f4ea9e6b315d2019529" integrity sha512-Az3QsOt1U/K1pbCQ0TXGELTuTkPLOiFIQf3ILzbOyo0FqgV9SxRnxbxM5QlAveERZMHpZY+7u3Jz2tKyl+yg6g== -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -97,21 +150,71 @@ builtin-modules@^3.1.0: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +deep-freeze@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deep-freeze/-/deep-freeze-0.0.1.tgz#3a0b0005de18672819dfd38cd31f91179c893e84" + integrity sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ= + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + diff@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99" integrity sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k= -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@~2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +glob@^7.1.2: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + 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" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -136,11 +239,35 @@ magic-string@^0.25.2: dependencies: sourcemap-codec "^1.4.4" +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +picomatch@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + protobufjs@6.10.1: version "6.10.1" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.10.1.tgz#e6a484dd8f04b29629e9053344e3970cccf13cd2" @@ -160,46 +287,17 @@ protobufjs@6.10.1: "@types/node" "^13.7.0" long "^4.0.0" -resolve@^1.11.0, resolve@^1.11.1: +resolve@^1.11.0, resolve@^1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" -rollup-plugin-commonjs@10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" - integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q== - dependencies: - estree-walker "^0.6.1" - is-reference "^1.1.2" - magic-string "^0.25.2" - resolve "^1.11.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-node-resolve@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" - integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== - dependencies: - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.11.1" - rollup-pluginutils "^2.8.1" - -rollup-pluginutils@^2.8.1: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@2.22.1: - version "2.22.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.22.1.tgz#8700522aa5feb12c6bd51810df8a276699d136b1" - integrity sha512-K9AUQUCJkVqC+A7uUDacfhmpEeAjc2uOmSpvGI5xaYsm8pXgy4ZWEM8wHPfKj11xvCwFZppkRDo8a0RESJXCnw== +rollup@2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.3.4.tgz#979e461f8cab1a71aec2d37ce2a434052ae70223" + integrity sha512-8U9x54RCVhrUEV1zon4Pp8kokg1HM0fwzf5vkwe2/rOfyTClarx5e27kFlaoZ7ofJiazWkNQ+dgdG4HuZxkQ9A== optionalDependencies: fsevents "~2.1.2" @@ -249,3 +347,8 @@ unidiff@1.0.2: integrity sha512-2sbEzki5fBmjgAqoafwxRenfMcumMlmVAoJDwYJa3CI4ZVugkdR6qjTw5sVsl29/4JfBBXhWEAd5ars8nRdqXg== dependencies: diff "^2.2.2" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= diff --git a/examples/kotlin/package-lock.json b/examples/kotlin/package-lock.json index 25816b18ab..03cae00112 100644 --- a/examples/kotlin/package-lock.json +++ b/examples/kotlin/package-lock.json @@ -4,9 +4,9 @@ "lockfileVersion": 1, "dependencies": { "@bazel/jasmine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0.tgz", - "integrity": "sha512-9RLgNAy10PRkLLP0+8YJr1I8vsVE8rZIfz467/SxROZq7zmIx3lErX101t0KHLmukXT+GusrkXIlB/Vwa8DN9Q==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.2.tgz", + "integrity": "sha512-tmQY124GSTJFN67zIjTn34YAUUaPqBcC9MnDhYPyZDWqdbJ5SqDQ4aNQpRDmZvnOV3c14dKKHpXZy28nyFovOA==", "dev": true, "requires": { "c8": "~7.1.0", @@ -14,15 +14,15 @@ } }, "@bazel/rollup": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@bazel/rollup/-/rollup-2.0.0.tgz", - "integrity": "sha512-mifUfCZbD1RIhfowh4N8E4881ag3FChz7F4z35wxMOP52g1q3+6Bvh5wv9iysFQopxGmS5jNEj3Dq/CWtSoOnw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@bazel/rollup/-/rollup-2.0.2.tgz", + "integrity": "sha512-W8G7XCbSS5cVwIc1mZ11QOmfjqGb/5psATeyB8Z5E77nSPiuYla1tFfgUJn8MOJ9C6wYVQwqIS9l5X44jLmZWg==", "dev": true }, "@bazel/terser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@bazel/terser/-/terser-2.0.0.tgz", - "integrity": "sha512-6mBYcfzP6pWxycYZ8r4Lz5kgiWZ7n08bVHZBIRExFeqs7Yy92dD92LPeA9FZIzFiX00IuR9Q1Lqy23xH5q7FeQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@bazel/terser/-/terser-2.0.2.tgz", + "integrity": "sha512-c3VFfgn0HZHhaav9NPpDTxmCuD6yCyFtENZXr3JbM151qPFrkDuJU0hwTe/o5f07m1HC3u6zuchzYGzPpBFyGQ==", "dev": true }, "@bcoe/v8-coverage": { diff --git a/examples/kotlin/package.json b/examples/kotlin/package.json index 7f8bfb242c..da97d300f2 100644 --- a/examples/kotlin/package.json +++ b/examples/kotlin/package.json @@ -2,17 +2,17 @@ "name": "kotlin_example", "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.0", - "@bazel/rollup": "^2.0.0", - "@bazel/terser": "^2.0.0", + "@bazel/jasmine": "^2.0.2", + "@bazel/rollup": "^2.0.2", + "@bazel/terser": "^2.0.2", + "@rollup/plugin-commonjs": "14.0.0", + "@rollup/plugin-node-resolve": "8.4.0", "domino": "^2.1.3", "http-server": "^0.11.1", "jasmine": "^3.5.0", "kotlin": "^1.3.41", "kotlinx-html-js": "^0.6.4", "rollup": "2.3.4", - "@rollup/plugin-commonjs": "14.0.0", - "@rollup/plugin-node-resolve": "8.4.0", "terser": "4.3.1" }, "scripts": { diff --git a/examples/nestjs/package.json b/examples/nestjs/package.json index d6e327a333..1f54759aea 100644 --- a/examples/nestjs/package.json +++ b/examples/nestjs/package.json @@ -1,9 +1,9 @@ { "private": true, "dependencies": { - "@bazel/bazelisk": "^1.5.0", + "@bazel/bazelisk": "^1.6.0", "@bazel/ibazel": "^0.13.1", - "@bazel/jasmine": "^2.0.0", + "@bazel/jasmine": "^2.0.2", "@nestjs/common": "6.5.2", "@nestjs/core": "6.5.2", "@nestjs/platform-express": "6.5.2", @@ -17,7 +17,7 @@ "supertest": "^4.0.2" }, "devDependencies": { - "@bazel/typescript": "^2.0.0", + "@bazel/typescript": "^2.0.2", "@types/node": "12.6.3", "typescript": "3.5.3" }, diff --git a/examples/nestjs/yarn.lock b/examples/nestjs/yarn.lock index f35a1baefa..86bc75c1ff 100644 --- a/examples/nestjs/yarn.lock +++ b/examples/nestjs/yarn.lock @@ -2,28 +2,28 @@ # yarn lockfile v1 -"@bazel/bazelisk@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.5.0.tgz#61f583ed93be138b47be7180403938ea4057f54b" - integrity sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg== +"@bazel/bazelisk@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.0.tgz#3742e9bd2ddaa43ac0c3b4ba167f95cfaf881400" + integrity sha512-lHFsZFR5ofj3yL2BtlbblbrglB/okocuY4T53M+tHLG/pV5H8LdzYPXrymzab/qXyyW4zKSPEpX20QITITsvtw== "@bazel/ibazel@^0.13.1": version "0.13.1" resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/jasmine@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0.tgz#e466ba8eb386eb777f8c4e502b8760ee3d173d1d" - integrity sha512-9RLgNAy10PRkLLP0+8YJr1I8vsVE8rZIfz467/SxROZq7zmIx3lErX101t0KHLmukXT+GusrkXIlB/Vwa8DN9Q== +"@bazel/jasmine@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.2.tgz#a4ccd3bf0b780d3d617cee07d146d459076385e4" + integrity sha512-tmQY124GSTJFN67zIjTn34YAUUaPqBcC9MnDhYPyZDWqdbJ5SqDQ4aNQpRDmZvnOV3c14dKKHpXZy28nyFovOA== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" -"@bazel/typescript@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" - integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== +"@bazel/typescript@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" + integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/protocol_buffers/package.json b/examples/protocol_buffers/package.json index 76ba98da3c..7fa259b0a9 100644 --- a/examples/protocol_buffers/package.json +++ b/examples/protocol_buffers/package.json @@ -1,11 +1,13 @@ { "devDependencies": { - "@bazel/karma": "^2.0.0", - "@bazel/labs": "^2.0.0", - "@bazel/protractor": "^2.0.0", - "@bazel/rollup": "^2.0.0", - "@bazel/terser": "^2.0.0", - "@bazel/typescript": "^2.0.0", + "@bazel/karma": "^2.0.2", + "@bazel/labs": "^2.0.2", + "@bazel/protractor": "^2.0.2", + "@bazel/rollup": "^2.0.2", + "@bazel/terser": "^2.0.2", + "@bazel/typescript": "^2.0.2", + "@rollup/plugin-commonjs": "14.0.0", + "@rollup/plugin-node-resolve": "8.4.0", "@types/jasmine": "2.8.2", "@types/long": "^4.0.0", "@types/node": "11.11.1", @@ -23,8 +25,6 @@ "protractor": "^5.4.2", "requirejs": "2.3.6", "rollup": "2.3.4", - "@rollup/plugin-commonjs": "14.0.0", - "@rollup/plugin-node-resolve": "8.4.0", "terser": "4.3.1", "typescript": "^3.3.1" }, diff --git a/examples/protocol_buffers/yarn.lock b/examples/protocol_buffers/yarn.lock index 09488a0710..fd4f205604 100644 --- a/examples/protocol_buffers/yarn.lock +++ b/examples/protocol_buffers/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@bazel/karma@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0.tgz#a386ba334716e6d94c667c9b40423955a727c896" - integrity sha512-VR/qzsH9/G1eJ0xqicoT7ea6FdiQGW0gd6FzPNecJnqm7OQjhKn7htRWvTONTNXoWl4qCIHTtW+RJ9piH1zU3Q== +"@bazel/karma@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.2.tgz#9863ec7f2e4cfe675b3b3f6e28340c351600758c" + integrity sha512-/bgtIQNHIgFYnH1Ts9D1fLE4n0StT8a8AayZrWklTaGSA56UjmTh1l30dACpQuiwV0VVIDlZJrQMAIBacTzwug== dependencies: tmp "0.1.0" -"@bazel/labs@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/labs/-/labs-2.0.0.tgz#e03d0967be6eb21e3b70f64dc14e5cb78b7c2e9f" - integrity sha512-gyP/vRDzuiZIxlXS1yMZ3yfGSG8BqF8XwMQLZi94nXRGY0zEISnrf0Ztf2yVPA8LWyvU5NugS1QRi1AF6xZqqA== +"@bazel/labs@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/labs/-/labs-2.0.2.tgz#0240aa3abd7559ebc4f54f49955d3b5be061ce37" + integrity sha512-6ZgiD8fuRR1W9GhYJ/szd6n2/PvpC2/FAQ3qHwo6qdjcysHbwmjy/Jt7zZcC27HgRnwE1UJiSFdjleeo9pY7UQ== -"@bazel/protractor@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0.tgz#1b67a2f61c7124a25ae4322b585f91a26592458b" - integrity sha512-mr+Jkg/Ta5cp1FQevbV9DqXidDmScX3vy82HjAIew1Y1aQMT9SJ5RVopSSQFe/pIx/zodpAiW1D6lynPiwS1Cw== +"@bazel/protractor@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.2.tgz#da276a82799b24de947b2ed19ed1acc4ce5bf895" + integrity sha512-JGFILIrqroJoa91iC0dSjQA2aXFM9c5BEN2LQuqn/NxTU4dPbLUXrrEZ/dzJOnlQvnfRhYQIFiA3gMFbG+/RnA== -"@bazel/rollup@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0.tgz#1980cb3f6922227659260bfdca99c457889a5bc1" - integrity sha512-mifUfCZbD1RIhfowh4N8E4881ag3FChz7F4z35wxMOP52g1q3+6Bvh5wv9iysFQopxGmS5jNEj3Dq/CWtSoOnw== +"@bazel/rollup@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.2.tgz#9bf0df17d94314e67d6ddce1c9d7366a212c83b0" + integrity sha512-W8G7XCbSS5cVwIc1mZ11QOmfjqGb/5psATeyB8Z5E77nSPiuYla1tFfgUJn8MOJ9C6wYVQwqIS9l5X44jLmZWg== -"@bazel/terser@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0.tgz#a841db8aefd7c51c216b34a26bc02a6c93d5e56a" - integrity sha512-6mBYcfzP6pWxycYZ8r4Lz5kgiWZ7n08bVHZBIRExFeqs7Yy92dD92LPeA9FZIzFiX00IuR9Q1Lqy23xH5q7FeQ== +"@bazel/terser@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.2.tgz#509109ffdaecc2c466756918f6354644721d714f" + integrity sha512-c3VFfgn0HZHhaav9NPpDTxmCuD6yCyFtENZXr3JbM151qPFrkDuJU0hwTe/o5f07m1HC3u6zuchzYGzPpBFyGQ== -"@bazel/typescript@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" - integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== +"@bazel/typescript@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" + integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/react_webpack/package.json b/examples/react_webpack/package.json index b0957e0b45..1fb9898246 100644 --- a/examples/react_webpack/package.json +++ b/examples/react_webpack/package.json @@ -1,10 +1,10 @@ { "private": true, "devDependencies": { - "@bazel/bazelisk": "^1.5.0", + "@bazel/bazelisk": "^1.6.0", "@bazel/buildifier": "^3.4.0", "@bazel/ibazel": "^0.13.1", - "@bazel/typescript": "^2.0.0", + "@bazel/typescript": "^2.0.2", "@types/react": "^16.9.5", "@types/react-dom": "^16.9.1", "css-loader": "^3.2.0", diff --git a/examples/react_webpack/yarn.lock b/examples/react_webpack/yarn.lock index 0afef6ceca..0a9d25acbf 100644 --- a/examples/react_webpack/yarn.lock +++ b/examples/react_webpack/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/bazelisk@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.5.0.tgz#61f583ed93be138b47be7180403938ea4057f54b" - integrity sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg== +"@bazel/bazelisk@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.0.tgz#3742e9bd2ddaa43ac0c3b4ba167f95cfaf881400" + integrity sha512-lHFsZFR5ofj3yL2BtlbblbrglB/okocuY4T53M+tHLG/pV5H8LdzYPXrymzab/qXyyW4zKSPEpX20QITITsvtw== "@bazel/buildifier@^3.4.0": version "3.4.0" @@ -17,10 +17,10 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/typescript@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" - integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== +"@bazel/typescript@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" + integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/vendored_node/package-lock.json b/examples/vendored_node/package-lock.json index 8573863141..ddc8a76d21 100644 --- a/examples/vendored_node/package-lock.json +++ b/examples/vendored_node/package-lock.json @@ -3,9 +3,9 @@ "lockfileVersion": 1, "dependencies": { "@bazel/jasmine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.0.tgz", - "integrity": "sha512-9RLgNAy10PRkLLP0+8YJr1I8vsVE8rZIfz467/SxROZq7zmIx3lErX101t0KHLmukXT+GusrkXIlB/Vwa8DN9Q==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.2.tgz", + "integrity": "sha512-tmQY124GSTJFN67zIjTn34YAUUaPqBcC9MnDhYPyZDWqdbJ5SqDQ4aNQpRDmZvnOV3c14dKKHpXZy28nyFovOA==", "dev": true, "requires": { "c8": "~7.1.0", diff --git a/examples/vendored_node/package.json b/examples/vendored_node/package.json index ab1403c486..b9a66a5cd6 100644 --- a/examples/vendored_node/package.json +++ b/examples/vendored_node/package.json @@ -1,7 +1,7 @@ { "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.0", + "@bazel/jasmine": "^2.0.2", "jasmine": "^3.5.0" }, "scripts": { diff --git a/examples/vendored_node_and_yarn/package.json b/examples/vendored_node_and_yarn/package.json index ab1403c486..b9a66a5cd6 100644 --- a/examples/vendored_node_and_yarn/package.json +++ b/examples/vendored_node_and_yarn/package.json @@ -1,7 +1,7 @@ { "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.0", + "@bazel/jasmine": "^2.0.2", "jasmine": "^3.5.0" }, "scripts": { diff --git a/examples/vendored_node_and_yarn/yarn.lock b/examples/vendored_node_and_yarn/yarn.lock index 058f96bf8c..ee82c2f616 100644 --- a/examples/vendored_node_and_yarn/yarn.lock +++ b/examples/vendored_node_and_yarn/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.0.tgz#e466ba8eb386eb777f8c4e502b8760ee3d173d1d" - integrity sha512-9RLgNAy10PRkLLP0+8YJr1I8vsVE8rZIfz467/SxROZq7zmIx3lErX101t0KHLmukXT+GusrkXIlB/Vwa8DN9Q== +"@bazel/jasmine@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.2.tgz#a4ccd3bf0b780d3d617cee07d146d459076385e4" + integrity sha512-tmQY124GSTJFN67zIjTn34YAUUaPqBcC9MnDhYPyZDWqdbJ5SqDQ4aNQpRDmZvnOV3c14dKKHpXZy28nyFovOA== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/examples/vue/package-lock.json b/examples/vue/package-lock.json index 7a1e85a08a..f5a004cef9 100644 --- a/examples/vue/package-lock.json +++ b/examples/vue/package-lock.json @@ -1022,9 +1022,9 @@ } }, "@bazel/bazelisk": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@bazel/bazelisk/-/bazelisk-1.5.0.tgz", - "integrity": "sha512-qhOGN1WmfZYNJXGrRL/0byii9hX5FBomMv3WWI2OEL2+Bxm4t/bR3zMxN3xwQX1C8meSSrAfKGSzxVOZfpJsOg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@bazel/bazelisk/-/bazelisk-1.6.0.tgz", + "integrity": "sha512-lHFsZFR5ofj3yL2BtlbblbrglB/okocuY4T53M+tHLG/pV5H8LdzYPXrymzab/qXyyW4zKSPEpX20QITITsvtw==", "dev": true }, "@bazel/ibazel": { diff --git a/examples/vue/package.json b/examples/vue/package.json index 130e6c2813..9c82449cdd 100644 --- a/examples/vue/package.json +++ b/examples/vue/package.json @@ -13,7 +13,7 @@ "vue": "^2.6.11" }, "devDependencies": { - "@bazel/bazelisk": "^1.5.0", + "@bazel/bazelisk": "^1.6.0", "@bazel/ibazel": "^0.13.1", "@vue/cli-plugin-babel": "~4.4.0", "@vue/cli-plugin-eslint": "~4.4.0", diff --git a/examples/web_testing/package.json b/examples/web_testing/package.json index 605c6b276d..b7a7058683 100644 --- a/examples/web_testing/package.json +++ b/examples/web_testing/package.json @@ -1,7 +1,7 @@ { "devDependencies": { - "@bazel/karma": "^2.0.0", - "@bazel/typescript": "^2.0.0", + "@bazel/karma": "^2.0.2", + "@bazel/typescript": "^2.0.2", "@types/jasmine": "2.8.2", "@types/node": "11.11.1", "karma": "~4.1.0", diff --git a/examples/web_testing/yarn.lock b/examples/web_testing/yarn.lock index e132b5103c..15c8578d33 100644 --- a/examples/web_testing/yarn.lock +++ b/examples/web_testing/yarn.lock @@ -2,17 +2,17 @@ # yarn lockfile v1 -"@bazel/karma@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.0.tgz#a386ba334716e6d94c667c9b40423955a727c896" - integrity sha512-VR/qzsH9/G1eJ0xqicoT7ea6FdiQGW0gd6FzPNecJnqm7OQjhKn7htRWvTONTNXoWl4qCIHTtW+RJ9piH1zU3Q== +"@bazel/karma@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.2.tgz#9863ec7f2e4cfe675b3b3f6e28340c351600758c" + integrity sha512-/bgtIQNHIgFYnH1Ts9D1fLE4n0StT8a8AayZrWklTaGSA56UjmTh1l30dACpQuiwV0VVIDlZJrQMAIBacTzwug== dependencies: tmp "0.1.0" -"@bazel/typescript@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" - integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== +"@bazel/typescript@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" + integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/webapp/package.json b/examples/webapp/package.json index 2174c7a7ef..c2b0768b03 100644 --- a/examples/webapp/package.json +++ b/examples/webapp/package.json @@ -4,10 +4,10 @@ "@babel/cli": "^7.6.0", "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", - "@bazel/protractor": "^2.0.0", - "@bazel/rollup": "^2.0.0", - "@bazel/terser": "^2.0.0", - "@bazel/typescript": "^2.0.0", + "@bazel/protractor": "^2.0.2", + "@bazel/rollup": "^2.0.2", + "@bazel/terser": "^2.0.2", + "@bazel/typescript": "^2.0.2", "http-server": "^0.11.1", "mocha": "^6.2.1", "protractor": "^5.4.2", diff --git a/examples/webapp/yarn.lock b/examples/webapp/yarn.lock index fe9af6635b..9a85368acc 100644 --- a/examples/webapp/yarn.lock +++ b/examples/webapp/yarn.lock @@ -655,25 +655,25 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/protractor@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.0.tgz#1b67a2f61c7124a25ae4322b585f91a26592458b" - integrity sha512-mr+Jkg/Ta5cp1FQevbV9DqXidDmScX3vy82HjAIew1Y1aQMT9SJ5RVopSSQFe/pIx/zodpAiW1D6lynPiwS1Cw== +"@bazel/protractor@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.2.tgz#da276a82799b24de947b2ed19ed1acc4ce5bf895" + integrity sha512-JGFILIrqroJoa91iC0dSjQA2aXFM9c5BEN2LQuqn/NxTU4dPbLUXrrEZ/dzJOnlQvnfRhYQIFiA3gMFbG+/RnA== -"@bazel/rollup@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.0.tgz#1980cb3f6922227659260bfdca99c457889a5bc1" - integrity sha512-mifUfCZbD1RIhfowh4N8E4881ag3FChz7F4z35wxMOP52g1q3+6Bvh5wv9iysFQopxGmS5jNEj3Dq/CWtSoOnw== +"@bazel/rollup@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.2.tgz#9bf0df17d94314e67d6ddce1c9d7366a212c83b0" + integrity sha512-W8G7XCbSS5cVwIc1mZ11QOmfjqGb/5psATeyB8Z5E77nSPiuYla1tFfgUJn8MOJ9C6wYVQwqIS9l5X44jLmZWg== -"@bazel/terser@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.0.tgz#a841db8aefd7c51c216b34a26bc02a6c93d5e56a" - integrity sha512-6mBYcfzP6pWxycYZ8r4Lz5kgiWZ7n08bVHZBIRExFeqs7Yy92dD92LPeA9FZIzFiX00IuR9Q1Lqy23xH5q7FeQ== +"@bazel/terser@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.2.tgz#509109ffdaecc2c466756918f6354644721d714f" + integrity sha512-c3VFfgn0HZHhaav9NPpDTxmCuD6yCyFtENZXr3JbM151qPFrkDuJU0hwTe/o5f07m1HC3u6zuchzYGzPpBFyGQ== -"@bazel/typescript@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.0.tgz#2ff5615f09c733cc681ba2ada92b11c356b694cd" - integrity sha512-5FPkxULWIjAKLG5J1XvpXpY1/4IK39dAoWA/Hhg+16gXTES32fT8w42k96pb6BTaNnyBuYgIHBpELEAJ40OOAQ== +"@bazel/typescript@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" + integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/worker/package.json b/examples/worker/package.json index 8cacd64432..fc03bbd85a 100644 --- a/examples/worker/package.json +++ b/examples/worker/package.json @@ -1,6 +1,6 @@ { "private": true, "devDependencies": { - "@bazel/worker": "^2.0.0" + "@bazel/worker": "^2.0.2" } } diff --git a/examples/worker/yarn.lock b/examples/worker/yarn.lock index 2e8d12e500..c744f646d3 100644 --- a/examples/worker/yarn.lock +++ b/examples/worker/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/worker@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-2.0.0.tgz#904de1708198b68cf90f088b43d1a7eb0a9cc252" - integrity sha512-YKlEbKOZ51QIngN5FKZAsT9xRoZfeQGsb1ZDUqn8G7GnfzMuqlqzKEXFU8D3RwEO5rwJ8d7zhYqEKBjA9XfA8Q== +"@bazel/worker@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-2.0.2.tgz#08bae606428727b848fef250b5ea41d63494df46" + integrity sha512-kdkdIhoWE3fZKBiEb1p9pMR6uR+0LW+Eu98DxLZcXQ1BuOr+IwXXcC1E+i3NLLNJ2fS5Ra1RNuNTQ4B0SiZvTw== dependencies: protobufjs "6.8.8" From bd6e5f951ece9748f85aeb142b6369cbca90de26 Mon Sep 17 00:00:00 2001 From: Minko Gechev Date: Tue, 31 Mar 2020 09:03:35 -0700 Subject: [PATCH 0812/1134] Remove @mgechev from codeowners --- third_party/github.com/bazelbuild/rules_typescript/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/github.com/bazelbuild/rules_typescript/CODEOWNERS b/third_party/github.com/bazelbuild/rules_typescript/CODEOWNERS index b1485d04d9..eb75e738b6 100644 --- a/third_party/github.com/bazelbuild/rules_typescript/CODEOWNERS +++ b/third_party/github.com/bazelbuild/rules_typescript/CODEOWNERS @@ -1 +1 @@ -* @mgechev @kyliau @alexeagle \ No newline at end of file +* @kyliau @alexeagle From 746a6f8d5c9cb8f8fd085bb9022e787a8a714108 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 13 Aug 2020 14:02:25 +0200 Subject: [PATCH 0813/1134] feat(example): add targets in angular_bazel_architect for production serve and build --- examples/angular_bazel_architect/BUILD.bazel | 106 +++++++++++-------- 1 file changed, 61 insertions(+), 45 deletions(-) diff --git a/examples/angular_bazel_architect/BUILD.bazel b/examples/angular_bazel_architect/BUILD.bazel index d030cf0efc..61c84590f5 100644 --- a/examples/angular_bazel_architect/BUILD.bazel +++ b/examples/angular_bazel_architect/BUILD.bazel @@ -10,6 +10,21 @@ filegroup( visibility = ["//:__subpackages__"], ) +APPLICATION_DEPS = [ + "//:common_deps", + "@npm//@angular/cli", + "@npm//@angular/core", + "@npm//@angular/router", + "@npm//@angular/platform-browser-dynamic", + "@npm//@angular-devkit/build-angular", + "@npm//rxjs", + "@npm//mime", + "@npm//zone.js", + "@npm//tslib", + "@npm//typescript", + "//projects/frontend-lib", +] + architect( name = "build", args = [ @@ -25,21 +40,29 @@ architect( "src/**/*.spec.ts", "src/test.ts", ], - ) + [ - "//:common_deps", - ".browserslistrc", + ) + APPLICATION_DEPS + [ + "tsconfig.app.json", + ], + output_dir = True, +) + +architect( + name = "build_prod", + args = [ + "frontend:build:production", + "--outputPath=$(@D)", + ], + configuration_env_vars = ["NG_BUILD_CACHE"], + data = glob( + [ + "src/**/*", + ], + exclude = [ + "src/**/*.spec.ts", + "src/test.ts", + ], + ) + APPLICATION_DEPS + [ "tsconfig.app.json", - "@npm//mime", - "@npm//zone.js", - "@npm//tslib", - "@npm//typescript", - "@npm//@angular/cli", - "@npm//@angular/core", - "@npm//@angular/router", - "@npm//@angular/platform-browser-dynamic", - "@npm//@angular-devkit/architect-cli", - "@npm//@angular-devkit/build-angular", - "//projects/frontend-lib", ], output_dir = True, ) @@ -50,24 +73,16 @@ architect_test( configuration_env_vars = ["NG_BUILD_CACHE"], data = glob([ "src/**/*", - ]) + [ - "//:common_deps", + ]) + APPLICATION_DEPS + [ "karma.conf.js", "tsconfig.spec.json", "@npm//@types/jasmine", "@npm//@types/node", - "@npm//@angular/cli", - "@npm//@angular/core", - "@npm//@angular/router", - "@npm//@angular/platform-browser-dynamic", - "@npm//@angular-devkit/build-angular", - "@npm//zone.js", "@npm//karma", "@npm//karma-chrome-launcher", "@npm//karma-coverage-istanbul-reporter", "@npm//karma-jasmine", "@npm//karma-jasmine-html-reporter", - "//projects/frontend-lib", ], tags = [ "browser:chromium-local", @@ -94,25 +109,14 @@ architect_test( "src/**", "e2e/*", "e2e/**", - ]) + [ - "//:common_deps", - ".browserslistrc", + ]) + APPLICATION_DEPS + [ "tsconfig.app.json", - "@npm//mime", - "@npm//@angular/cli", - "@npm//@angular/core", - "@npm//@angular/router", - "@npm//@angular/platform-browser-dynamic", - "@npm//@angular-devkit/build-angular", "@npm//protractor", "@npm//jasmine-spec-reporter", "@npm//ts-node", - "@npm//tslib", - "@npm//typescript", "@npm//@types/jasmine", "@npm//@types/jasminewd2", "@npm//@types/node", - "//projects/frontend-lib", ], tags = [ "browser:chromium-local", @@ -160,17 +164,29 @@ architect( "src/**/*.spec.ts", "src/test.ts", ], - ) + [ - "//:common_deps", - ".browserslistrc", + ) + APPLICATION_DEPS + [ + "tsconfig.app.json", + ], + tags = ["ibazel_notify_changes"], +) + +architect( + name = "serve_prod", + args = [ + "frontend:serve:production", + ], + configuration_env_vars = ["NG_BUILD_CACHE"], + data = glob( + [ + "src/*", + "src/**", + ], + exclude = [ + "src/**/*.spec.ts", + "src/test.ts", + ], + ) + APPLICATION_DEPS + [ "tsconfig.app.json", - "@npm//mime", - "@npm//@angular/cli", - "@npm//@angular/core", - "@npm//@angular/router", - "@npm//@angular/platform-browser-dynamic", - "@npm//@angular-devkit/build-angular", - "//projects/frontend-lib", ], tags = ["ibazel_notify_changes"], ) From 374f56ff442e9d2a82fb0c0773db5e734afd4bee Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 13 Aug 2020 10:02:35 -0700 Subject: [PATCH 0814/1134] fix(examples): use ./ prefix on babel config file Otherwise if it's in a subfolder, babel will think it's an npm package --- docs/index.md | 2 +- examples/webapp/differential_loading.bzl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index 163296e230..163a50f89b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -79,7 +79,7 @@ babel( args = [ "app.js", "--config-file", - "$(execpath es5.babelrc)", + "./$(execpath es5.babelrc)", "--out-file", "$(execpath app.es5.js)", ], diff --git a/examples/webapp/differential_loading.bzl b/examples/webapp/differential_loading.bzl index 7268bb8874..c387dc207c 100644 --- a/examples/webapp/differential_loading.bzl +++ b/examples/webapp/differential_loading.bzl @@ -36,7 +36,7 @@ def differential_loading(name, entry_point, srcs): args = [ "$(execpath %s_chunks)" % name, "--config-file", - "$(execpath es5.babelrc)", + "./$(execpath es5.babelrc)", "--out-dir", "$(@D)", ], From 1864e0fbaad3e7550cf20a3c239433eabc8ac2cd Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Sun, 16 Aug 2020 05:57:00 +0200 Subject: [PATCH 0815/1134] chore: update dependency com_google_protobuf to v3.13.0 (#2103) --- examples/protocol_buffers/WORKSPACE | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/protocol_buffers/WORKSPACE b/examples/protocol_buffers/WORKSPACE index f6245a01ef..3fc95e441c 100644 --- a/examples/protocol_buffers/WORKSPACE +++ b/examples/protocol_buffers/WORKSPACE @@ -27,9 +27,9 @@ http_archive( http_archive( name = "com_google_protobuf", - sha256 = "71030a04aedf9f612d2991c1c552317038c3c5a2b578ac4745267a45e7037c29", - strip_prefix = "protobuf-3.12.3", - urls = ["https://github.com/protocolbuffers/protobuf/archive/v3.12.3.tar.gz"], + sha256 = "9b4ee22c250fe31b16f1a24d61467e40780a3fbb9b91c3b65be2a376ed913a1a", + strip_prefix = "protobuf-3.13.0", + urls = ["https://github.com/protocolbuffers/protobuf/archive/v3.13.0.tar.gz"], ) http_archive( From 1b33e1de546f13fe6c1d5ab0ef914311a8783ae4 Mon Sep 17 00:00:00 2001 From: Jason Bedard Date: Thu, 13 Aug 2020 15:55:35 -0700 Subject: [PATCH 0816/1134] refactor(rollup): use rollup loadConfigFile API --- packages/rollup/index.js | 68 ++++++++++------------------------------ 1 file changed, 17 insertions(+), 51 deletions(-) diff --git a/packages/rollup/index.js b/packages/rollup/index.js index 218fedc51b..814223678b 100644 --- a/packages/rollup/index.js +++ b/packages/rollup/index.js @@ -16,6 +16,7 @@ */ const path = require('path'); const rollup = require('rollup'); +const loadConfigFile = require('rollup/dist/loadConfigFile'); const crypto = require('crypto') const MNEMONIC = 'Rollup'; @@ -75,61 +76,15 @@ async function runRollup(cacheKeyData, inputOptions, outputOptions) { } // Run rollup, will use + re-populate the cache +// Essentially the same as the rollup CLI but using bazel APIs +// for CLI arguments and FS watching +// See: https://github.com/rollup/rollup/blob/v2.23.1/cli/run/index.ts#L11 async function runRollupBundler(args /*, inputs */) { const {inputOptions, outputOptions} = await parseCLIArgs(args); return runRollup(inputOptions.input, inputOptions, outputOptions); } -// Load the config file. -// Must be rollup-ed first to allow use of es6 within the config. -// See the rollup CLI version: -// https://github.com/rollup/rollup/blob/v1.31.0/cli/run/loadConfigFile.ts#L14 -async function loadConfigFile(configFile) { - const cjsConfigFile = configFile + '.cjs.js'; - - // inputOptions: https://github.com/rollup/rollup/blob/v1.31.0/cli/run/loadConfigFile.ts#L21-L28 - const inputOptions = { - external: id => (id[0] !== '.' && !path.isAbsolute(id)) || id.slice(-5, id.length) === '.json', - input: configFile, - treeshake: false, - preserveSymlinks: true, - }; - - // outputOptions: https://github.com/rollup/rollup/blob/v1.31.0/cli/run/loadConfigFile.ts#L35-L38 - const outputOptions = { - exports: 'named', - format: 'cjs', - file: cjsConfigFile, - }; - - await runRollup(configFile, inputOptions, outputOptions); - - // Ensure node isn't caching a previous version of the config file - // https://github.com/rollup/rollup/blob/v1.31.0/cli/run/loadConfigFile.ts#L52 - delete require.cache[require.resolve(cjsConfigFile)]; - - // Read the config file: - // https://github.com/rollup/rollup/blob/v1.31.0/cli/run/loadConfigFile.ts#L54-L61 - // - // Supports: - // * async results - // * commonjs "default" export - let config = await Promise.resolve(require(cjsConfigFile)); - if (config.default) { - config = config.default; - } - - // Does NOT support (unlike rollup CLI): - // * factory function - // * multiple configs for multiple outputs - if (Array.isArray(config) || typeof config === 'function') { - throw new Error('Arrays + factory configs unsupported'); - } - - return config; -} - // Processing of --environment CLI options into environment vars // https://github.com/rollup/rollup/blob/v1.31.0/cli/run/index.ts#L50-L57 function extractEnvironmentVariables(vars) { @@ -215,10 +170,21 @@ async function parseCLIArgs(args) { // Additional options passed via config file if (configFile) { - const config = await loadConfigFile(configFile); + const {options, warnings} = await loadConfigFile(configFile); + + // Flush any config file warnings to stderr + warnings.flush(); + + // Does NOT support (unlike rollup CLI): + // * multiple configs for multiple outputs + if (options.length !== 1) { + throw new Error('Array configs unsupported'); + } + + const config = options[0]; if (config.output) { - outputOptions = {...config.output, ...outputOptions}; + outputOptions = {...config.output[0], ...outputOptions}; } inputOptions = {...config, ...inputOptions}; From e199a8359de9f3098fd97e83ba9489c49f662c0b Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 11 Aug 2020 15:12:29 +0000 Subject: [PATCH 0817/1134] chore: update dependency bazel_toolchains to v3.4.1 --- examples/angular/WORKSPACE | 8 ++++---- examples/angular_view_engine/WORKSPACE | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/angular/WORKSPACE b/examples/angular/WORKSPACE index ac6500c3ff..672429ed70 100644 --- a/examples/angular/WORKSPACE +++ b/examples/angular/WORKSPACE @@ -74,11 +74,11 @@ sass_repositories() http_archive( name = "bazel_toolchains", - sha256 = "db48eed61552e25d36fe051a65d2a329cc0fb08442627e8f13960c5ab087a44e", - strip_prefix = "bazel-toolchains-3.2.0", + sha256 = "7ebb200ed3ca3d1f7505659c7dfed01c4b5cb04c3a6f34140726fe22f5d35e86", + strip_prefix = "bazel-toolchains-3.4.1", urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/releases/download/3.2.0/bazel-toolchains-3.2.0.tar.gz", - "https://github.com/bazelbuild/bazel-toolchains/releases/download/3.2.0/bazel-toolchains-3.2.0.tar.gz", + "https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/releases/download/3.4.1/bazel-toolchains-3.4.1.tar.gz", + "https://github.com/bazelbuild/bazel-toolchains/releases/download/3.4.1/bazel-toolchains-3.4.1.tar.gz", ], ) diff --git a/examples/angular_view_engine/WORKSPACE b/examples/angular_view_engine/WORKSPACE index 4c1012f448..35acbf7614 100644 --- a/examples/angular_view_engine/WORKSPACE +++ b/examples/angular_view_engine/WORKSPACE @@ -81,10 +81,10 @@ sass_repositories() http_archive( name = "bazel_toolchains", - sha256 = "db48eed61552e25d36fe051a65d2a329cc0fb08442627e8f13960c5ab087a44e", - strip_prefix = "bazel-toolchains-3.2.0", + sha256 = "7ebb200ed3ca3d1f7505659c7dfed01c4b5cb04c3a6f34140726fe22f5d35e86", + strip_prefix = "bazel-toolchains-3.4.1", urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/releases/download/3.2.0/bazel-toolchains-3.2.0.tar.gz", - "https://github.com/bazelbuild/bazel-toolchains/releases/download/3.2.0/bazel-toolchains-3.2.0.tar.gz", + "https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/releases/download/3.4.1/bazel-toolchains-3.4.1.tar.gz", + "https://github.com/bazelbuild/bazel-toolchains/releases/download/3.4.1/bazel-toolchains-3.4.1.tar.gz", ], ) From b97f3e9ec1b6bd7a8bce9eb8f469a273dd189b95 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 2 Aug 2020 03:23:05 +0000 Subject: [PATCH 0818/1134] build(deps): bump elliptic in /e2e/fine_grained_symlinks Bumps [elliptic](https://github.com/indutny/elliptic) from 6.4.1 to 6.5.3. - [Release notes](https://github.com/indutny/elliptic/releases) - [Commits](https://github.com/indutny/elliptic/compare/v6.4.1...v6.5.3) Signed-off-by: dependabot[bot] --- e2e/fine_grained_symlinks/yarn.lock | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/e2e/fine_grained_symlinks/yarn.lock b/e2e/fine_grained_symlinks/yarn.lock index 371a0d350c..e7c8e64f9e 100644 --- a/e2e/fine_grained_symlinks/yarn.lock +++ b/e2e/fine_grained_symlinks/yarn.lock @@ -267,8 +267,8 @@ bluebird@^3.5.1: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" 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" + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" brace-expansion@^1.1.7: version "1.1.11" @@ -638,8 +638,8 @@ duplexify@^3.4.2, duplexify@^3.6.0: stream-shift "^1.0.0" elliptic@^6.0.0: - version "6.4.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -902,8 +902,8 @@ hash-base@^3.0.0: safe-buffer "^5.0.1" hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812" + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.1" @@ -955,14 +955,18 @@ inflight@^1.0.4: 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, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" From 83688a15071ccdf96d6d73a8b4cf1ab98da392cf Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Sun, 16 Aug 2020 14:08:07 -0700 Subject: [PATCH 0819/1134] fix(typescript): only expect .js outs for .tsx? srcs (#2118) Fixes #2115 --- packages/typescript/internal/ts_project.bzl | 6 +++++- packages/typescript/test/ts_project/json/BUILD.bazel | 2 ++ packages/typescript/test/ts_project/json/baz.svg | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 packages/typescript/test/ts_project/json/baz.svg diff --git a/packages/typescript/internal/ts_project.bzl b/packages/typescript/internal/ts_project.bzl index f7029dd180..6d53f0c874 100644 --- a/packages/typescript/internal/ts_project.bzl +++ b/packages/typescript/internal/ts_project.bzl @@ -215,7 +215,11 @@ validate_options = rule( def _out_paths(srcs, outdir, rootdir, ext): rootdir_replace_pattern = rootdir + "/" if rootdir else "" - return [_join(outdir, f[:f.rindex(".")].replace(rootdir_replace_pattern, "") + ext) for f in srcs if not f.endswith(".d.ts") and not f.endswith(".json")] + return [ + _join(outdir, f[:f.rindex(".")].replace(rootdir_replace_pattern, "") + ext) + for f in srcs + if not f.endswith(".d.ts") and (f.endswith(".ts") or f.endswith(".tsx")) + ] def ts_project_macro( name = "tsconfig", diff --git a/packages/typescript/test/ts_project/json/BUILD.bazel b/packages/typescript/test/ts_project/json/BUILD.bazel index af6f4b4736..b14abdc6f9 100644 --- a/packages/typescript/test/ts_project/json/BUILD.bazel +++ b/packages/typescript/test/ts_project/json/BUILD.bazel @@ -5,6 +5,8 @@ SRCS = [ "subdir/a.ts", "subdir/foo.json", "bar.json", + # Regression test for #2115 - should not expect baz.js output + "baz.svg", ] ts_project( diff --git a/packages/typescript/test/ts_project/json/baz.svg b/packages/typescript/test/ts_project/json/baz.svg new file mode 100644 index 0000000000..5670437c4f --- /dev/null +++ b/packages/typescript/test/ts_project/json/baz.svg @@ -0,0 +1 @@ + From 4fe1a170e588e0002b2addb9617dc415ab43c5fa Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 17 Aug 2020 21:19:27 +0100 Subject: [PATCH 0820/1134] feat(builtin): new js_library rule (#2109) Removes `node_module_library` private API and renames it to `js_library` the latter will be promoted to a public API in a followup change --- WORKSPACE | 6 +- internal/js_library/js_library.bzl | 195 ++++++++++++++---- internal/node/test/lib2/BUILD.bazel | 4 +- internal/npm_install/generate_build_file.ts | 27 ++- internal/npm_install/index.js | 18 +- internal/npm_install/node_module_library.bzl | 105 ---------- .../golden/@angular/core/BUILD.bazel.golden | 8 +- .../golden/@gregmagolan/BUILD.bazel.golden | 4 +- .../@gregmagolan/test-a/BUILD.bazel.golden | 8 +- .../@gregmagolan/test-b/BUILD.bazel.golden | 8 +- .../test/golden/BUILD.bazel.golden | 4 +- .../test/golden/ajv/BUILD.bazel.golden | 8 +- .../test/golden/jasmine/BUILD.bazel.golden | 8 +- .../test/golden/rxjs/BUILD.bazel.golden | 8 +- .../test/golden/unidiff/BUILD.bazel.golden | 8 +- .../test/golden/zone.js/BUILD.bazel.golden | 8 +- internal/npm_install/test/package/BUILD.bazel | 6 +- internal/providers/npm_package_info.bzl | 4 +- packages/jasmine/BUILD.bazel | 19 +- packages/labs/grpc_web/BUILD.bazel | 2 +- .../rollup/test/integration/far/a/BUILD.bazel | 2 +- .../test/integration/far/a/b/c/BUILD.bazel | 2 +- packages/typescript/internal/ts_project.bzl | 3 +- 23 files changed, 249 insertions(+), 216 deletions(-) delete mode 100644 internal/npm_install/node_module_library.bzl diff --git a/WORKSPACE b/WORKSPACE index a24b2aa0d4..d345a1de80 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -51,9 +51,9 @@ yarn_install( # The @npm//:node_modules_filegroup generated by manual_build_file_contents # is used in the //packages/typescript/test/reference_types_directive:tsconfig_types # test. For now we're still supporting node_modules as a filegroup tho this may - # change in the future. The default generated //:node_modules target is a node_module_library - # rule which provides NpmPackageInfo but that rule is not yet in the public API and we - # have not yet dropped support for filegroup based node_modules target. + # change in the future. The default generated //:node_modules target is a js_library + # rule which provides NpmPackageInfo but we have not yet dropped support for + # filegroup based node_modules target. manual_build_file_contents = """ filegroup( name = "node_modules_filegroup", diff --git a/internal/js_library/js_library.bzl b/internal/js_library/js_library.bzl index e8054658dc..e023fd2653 100644 --- a/internal/js_library/js_library.bzl +++ b/internal/js_library/js_library.bzl @@ -12,13 +12,27 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""js_library allows defining a set of javascript sources and assigning a package_name. +"""js_library can be used to expose and share any library package. -DO NOT USE - this is not fully designed, and exists only to enable testing within this repo. +DO NOT USE - this is not fully designed yet and it is a work in progress. """ -load("//:providers.bzl", "LinkablePackageInfo", "declaration_info", "js_module_info") -load("//third_party/github.com/bazelbuild/bazel-skylib:rules/private/copy_file_private.bzl", "copy_bash", "copy_cmd") +load( + "//:providers.bzl", + "DeclarationInfo", + "JSModuleInfo", + "JSNamedModuleInfo", + "LinkablePackageInfo", + "NpmPackageInfo", + "declaration_info", + "js_module_info", + "js_named_module_info", +) +load( + "//third_party/github.com/bazelbuild/bazel-skylib:rules/private/copy_file_private.bzl", + "copy_bash", + "copy_cmd", +) _AMD_NAMES_DOC = """Mapping from require module names to global variables. This allows devmode JS sources to load unnamed UMD bundles from third-party libraries.""" @@ -50,39 +64,111 @@ def write_amd_names_shim(actions, amd_names_shim, targets): actions.write(amd_names_shim, amd_names_shim_content) def _impl(ctx): - files = [] + input_files = ctx.files.srcs + ctx.files.named_module_srcs + all_files = [] typings = [] js_files = [] + named_module_files = [] + include_npm_package_info = False - for src in ctx.files.srcs: - if src.is_source and not src.path.startswith("external/"): - dst = ctx.actions.declare_file(src.basename, sibling = src) + for idx, f in enumerate(input_files): + file = f + + # copy files into bin if needed + if file.is_source and not file.path.startswith("external/"): + dst = ctx.actions.declare_file(file.basename, sibling = file) if ctx.attr.is_windows: - copy_cmd(ctx, src, dst) - else: - copy_bash(ctx, src, dst) - if dst.basename.endswith(".d.ts"): - typings.append(dst) + copy_cmd(ctx, file, dst) else: - files.append(dst) - elif src.basename.endswith(".d.ts"): - typings.append(src) - else: - files.append(src) + copy_bash(ctx, file, dst) + + # re-assign file to the one now copied into the bin folder + file = dst + + # register js files + if file.basename.endswith(".js") or file.basename.endswith(".js.map") or file.basename.endswith(".json"): + js_files.append(file) + + # register typings + if ( + ( + file.path.endswith(".d.ts") or + file.path.endswith(".d.ts.map") or + # package.json may be required to resolve "typings" key + file.path.endswith("/package.json") + ) and + # exclude eg. external/npm/node_modules/protobufjs/node_modules/@types/node/index.d.ts + # these would be duplicates of the typings provided directly in another dependency. + # also exclude all /node_modules/typescript/lib/lib.*.d.ts files as these are determined by + # the tsconfig "lib" attribute + len(file.path.split("/node_modules/")) < 3 and file.path.find("/node_modules/typescript/lib/lib.") == -1 + ): + typings.append(file) - for p in files: - if p.basename.endswith(".js") or p.basename.endswith(".js.map") or p.basename.endswith(".json"): - js_files.append(p) + # auto detect if it entirely an npm package + # + # NOTE: it probably can be removed once we support node_modules from more than + # a single workspace + if file.is_source and file.path.startswith("external/"): + # We cannot always expose the NpmPackageInfo as the linker + # only allow us to reference node modules from a single workspace at a time. + # Here we are automatically decide if we should or not including that provider + # by running through the sources and check if we have a src coming from an external + # workspace which indicates we should include the provider. + include_npm_package_info = True - files_depset = depset(files) + # ctx.files.named_module_srcs are merged after ctx.files.srcs + if idx >= len(ctx.files.srcs): + named_module_files.append(file) + + # every single file on bin should be added here + all_files.append(file) + + files_depset = depset(all_files) + js_files_depset = depset(js_files) + named_module_files_depset = depset(named_module_files) + typings_depset = depset(typings) + + files_depsets = [files_depset] + npm_sources_depsets = [files_depset] + direct_sources_depsets = [files_depset] + direct_named_module_sources_depsets = [named_module_files_depset] + typings_depsets = [typings_depset] + js_files_depsets = [js_files_depset] + + for dep in ctx.attr.deps: + if NpmPackageInfo in dep: + npm_sources_depsets.append(dep[NpmPackageInfo].sources) + else: + if JSModuleInfo in dep: + js_files_depsets.append(dep[JSModuleInfo].direct_sources) + direct_sources_depsets.append(dep[JSModuleInfo].direct_sources) + if JSNamedModuleInfo in dep: + direct_named_module_sources_depsets.append(dep[JSNamedModuleInfo].direct_sources) + direct_sources_depsets.append(dep[JSNamedModuleInfo].direct_sources) + if DeclarationInfo in dep: + typings_depsets.append(dep[DeclarationInfo].declarations) + direct_sources_depsets.append(dep[DeclarationInfo].declarations) + if DefaultInfo in dep: + files_depsets.append(dep[DefaultInfo].files) providers = [ DefaultInfo( - files = files_depset, - runfiles = ctx.runfiles(files = ctx.files.srcs), + files = depset(transitive = files_depsets), + runfiles = ctx.runfiles( + files = all_files, + transitive_files = depset(transitive = files_depsets), + ), ), AmdNamesInfo(names = ctx.attr.amd_names), - js_module_info(depset(js_files)), + js_module_info( + sources = depset(transitive = js_files_depsets), + deps = ctx.attr.deps, + ), + js_named_module_info( + sources = depset(transitive = direct_named_module_sources_depsets), + deps = ctx.attr.deps, + ), ] if ctx.attr.package_name: @@ -90,39 +176,75 @@ def _impl(ctx): providers.append(LinkablePackageInfo( package_name = ctx.attr.package_name, path = path, - files = files_depset, + files = depset(transitive = direct_sources_depsets), + )) + + if include_npm_package_info: + workspace_name = ctx.label.workspace_name if ctx.label.workspace_name else ctx.workspace_name + providers.append(NpmPackageInfo( + direct_sources = depset(transitive = direct_sources_depsets), + sources = depset(transitive = npm_sources_depsets), + workspace = workspace_name, )) # Don't provide DeclarationInfo if there are no typings to provide. # Improves error messaging downstream if DeclarationInfo is required. if len(typings): - providers.append(declaration_info(depset(typings))) + providers.append(declaration_info( + declarations = depset(transitive = typings_depsets), + deps = ctx.attr.deps, + )) return providers _js_library = rule( implementation = _impl, attrs = { - "amd_names": attr.string_dict(doc = _AMD_NAMES_DOC), - "is_windows": attr.bool(mandatory = True, doc = "Automatically set by macro"), + "amd_names": attr.string_dict( + doc = _AMD_NAMES_DOC, + ), + "deps": attr.label_list( + doc = """Transitive dependencies of the package. + It should include fine grained npm dependencies from the sources + or other targets we want to include in the library but also propagate their own deps.""", + ), + "is_windows": attr.bool( + doc = "Automatically set by macro", + mandatory = True, + ), # module_name for legacy ts_library module_mapping support + # which is still being used in a couple of tests # TODO: remove once legacy module_mapping is removed - "module_name": attr.string(), - "package_name": attr.string(), + "module_name": attr.string( + doc = "Internal use only. It will be removed soon.", + ), + "named_module_srcs": attr.label_list( + doc = """A subset of srcs that are javascript named-UMD or + named-AMD for use in rules such as ts_devserver. + They will be copied into the package bin folder if needed.""", + allow_files = True, + ), + "package_name": attr.string( + doc = """Optional package_name that this package may be imported as.""", + ), "srcs": attr.label_list( + doc = """The list of files that comprise the package. + They will be copied into the package bin folder if needed.""", allow_files = True, - mandatory = True, ), }, + doc = "Defines a js_library package", ) def js_library( name, - srcs, + srcs = [], amd_names = {}, package_name = None, + deps = [], + named_module_srcs = [], **kwargs): - """Internal use only. May be published to the public API in a future release.""" + """Internal use only yet. It will be released into a public API in a future release.""" module_name = kwargs.pop("module_name", None) if module_name: fail("use package_name instead of module_name in target //%s:%s" % (native.package_name(), name)) @@ -130,10 +252,13 @@ def js_library( fail("is_windows is set by the js_library macro and should not be set explicitely") _js_library( name = name, - srcs = srcs, amd_names = amd_names, + srcs = srcs, + named_module_srcs = named_module_srcs, + deps = deps, package_name = package_name, # module_name for legacy ts_library module_mapping support + # which is still being used in a couple of tests # TODO: remove once legacy module_mapping is removed module_name = package_name, is_windows = select({ diff --git a/internal/node/test/lib2/BUILD.bazel b/internal/node/test/lib2/BUILD.bazel index 48b0ca52a6..796c867d6e 100644 --- a/internal/node/test/lib2/BUILD.bazel +++ b/internal/node/test/lib2/BUILD.bazel @@ -13,8 +13,10 @@ js_library( name = "lib2", package_name = "lib2", srcs = [ - "main.js", "package.json", "src/some.js", ], + deps = [ + ":tsconfig", + ], ) diff --git a/internal/npm_install/generate_build_file.ts b/internal/npm_install/generate_build_file.ts index 8daf1270ed..425d054c5a 100644 --- a/internal/npm_install/generate_build_file.ts +++ b/internal/npm_install/generate_build_file.ts @@ -17,7 +17,7 @@ /** * @fileoverview This script generates BUILD.bazel files by analyzing * the node_modules folder layed out by yarn or npm. It generates - * fine grained Bazel `node_module_library` targets for each root npm package + * fine grained Bazel `js_library` targets for each root npm package * and all files for that package and its transitive deps are included * in the target. For example, `@//jasmine` would * include all files in the jasmine npm package and all of its @@ -28,7 +28,7 @@ * target will be generated for the `jasmine` binary in the `jasmine` * npm package. * - * Additionally, a `@//:node_modules` `node_module_library` + * Additionally, a `@//:node_modules` `js_library` * is generated that includes all packages under node_modules * as well as the .bin folder. * @@ -158,16 +158,16 @@ function generateRootBuildFile(pkgs: Dep[]) { })}); let buildFile = BUILD_FILE_HEADER + - `load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") + `load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") exports_files([ ${exportsStarlark}]) -# The node_modules directory in one catch-all node_module_library. +# The node_modules directory in one catch-all js_library. # NB: Using this target may have bad performance implications if # there are many files in target. # See https://github.com/bazelbuild/bazel/issues/5153. -node_module_library( +js_library( name = "node_modules",${pkgFilesStarlark}${depsStarlark} ) @@ -861,7 +861,7 @@ function findFile(pkg: Dep, m: string) { } /** - * Given a pkg, return the skylark `node_module_library` targets for the package. + * Given a pkg, return the skylark `js_library` targets for the package. */ function printPackage(pkg: Dep) { function starlarkFiles(attr: string, files: string[], comment: string = '') { @@ -919,8 +919,7 @@ function printPackage(pkg: Dep) { const depsStarlark = deps.map(dep => `"//${dep._dir}:${dep._name}__contents",`).join('\n '); - let result = - `load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") + let result = `load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") # Generated targets for npm package "${pkg._dir}" ${printJson(pkg)} @@ -955,7 +954,7 @@ filegroup( ) # The primary target for this package for use in rule deps -node_module_library( +js_library( name = "${pkg._name}", # direct sources listed for strict deps support srcs = [":${pkg._name}__files"], @@ -967,14 +966,14 @@ node_module_library( ) # Target is used as dep for main targets to prevent circular dependencies errors -node_module_library( +js_library( name = "${pkg._name}__contents", srcs = [":${pkg._name}__files", ":${pkg._name}__nested_node_modules"],${namedSourcesStarlark} visibility = ["//:__subpackages__"], ) # Typings files that are part of the npm package not including nested node_modules -node_module_library( +js_library( name = "${pkg._name}__typings",${dtsStarlark} ) @@ -1137,7 +1136,7 @@ type Dep = { } /** - * Given a scope, return the skylark `node_module_library` target for the scope. + * Given a scope, return the skylark `js_library` target for the scope. */ function printScope(scope: string, pkgs: Dep[]) { pkgs = pkgs.filter(pkg => !pkg._isNested && pkg._dir.startsWith(`${scope}/`)); @@ -1168,10 +1167,10 @@ function printScope(scope: string, pkgs: Dep[]) { ],`; } - return `load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") + return `load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") # Generated target for npm scope ${scope} -node_module_library( +js_library( name = "${scope}",${pkgFilesStarlark}${depsStarlark} ) diff --git a/internal/npm_install/index.js b/internal/npm_install/index.js index 08a3d148c9..042b5131ca 100644 --- a/internal/npm_install/index.js +++ b/internal/npm_install/index.js @@ -80,16 +80,16 @@ function generateRootBuildFile(pkgs) { }); }); let buildFile = BUILD_FILE_HEADER + - `load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") + `load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") exports_files([ ${exportsStarlark}]) -# The node_modules directory in one catch-all node_module_library. +# The node_modules directory in one catch-all js_library. # NB: Using this target may have bad performance implications if # there are many files in target. # See https://github.com/bazelbuild/bazel/issues/5153. -node_module_library( +js_library( name = "node_modules",${pkgFilesStarlark}${depsStarlark} ) @@ -529,7 +529,7 @@ function printPackage(pkg) { ''; const deps = [pkg].concat(pkg._dependencies.filter(dep => dep !== pkg && !dep._isNested)); const depsStarlark = deps.map(dep => `"//${dep._dir}:${dep._name}__contents",`).join('\n '); - let result = `load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") + let result = `load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") # Generated targets for npm package "${pkg._dir}" ${printJson(pkg)} @@ -564,7 +564,7 @@ filegroup( ) # The primary target for this package for use in rule deps -node_module_library( +js_library( name = "${pkg._name}", # direct sources listed for strict deps support srcs = [":${pkg._name}__files"], @@ -576,14 +576,14 @@ node_module_library( ) # Target is used as dep for main targets to prevent circular dependencies errors -node_module_library( +js_library( name = "${pkg._name}__contents", srcs = [":${pkg._name}__files", ":${pkg._name}__nested_node_modules"],${namedSourcesStarlark} visibility = ["//:__subpackages__"], ) # Typings files that are part of the npm package not including nested node_modules -node_module_library( +js_library( name = "${pkg._name}__typings",${dtsStarlark} ) @@ -732,10 +732,10 @@ function printScope(scope, pkgs) { ${list} ],`; } - return `load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") + return `load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") # Generated target for npm scope ${scope} -node_module_library( +js_library( name = "${scope}",${pkgFilesStarlark}${depsStarlark} ) diff --git a/internal/npm_install/node_module_library.bzl b/internal/npm_install/node_module_library.bzl deleted file mode 100644 index ccedaa2f9e..0000000000 --- a/internal/npm_install/node_module_library.bzl +++ /dev/null @@ -1,105 +0,0 @@ -# Copyright 2019 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Contains the node_module_library which is used by yarn_install & npm_install. -""" - -load("@build_bazel_rules_nodejs//:providers.bzl", "DeclarationInfo", "NpmPackageInfo", "js_module_info", "js_named_module_info") - -def _node_module_library_impl(ctx): - workspace_name = ctx.label.workspace_name if ctx.label.workspace_name else ctx.workspace_name - - direct_sources = depset(ctx.files.srcs) - sources_depsets = [direct_sources] - - declarations = depset([ - f - for f in ctx.files.srcs - if ( - f.path.endswith(".d.ts") or - # package.json may be required to resolve "typings" key - f.path.endswith("/package.json") - ) and - # exclude eg. external/npm/node_modules/protobufjs/node_modules/@types/node/index.d.ts - # these would be duplicates of the typings provided directly in another dependency. - # also exclude all /node_modules/typescript/lib/lib.*.d.ts files as these are determined by - # the tsconfig "lib" attribute - len(f.path.split("/node_modules/")) < 3 and f.path.find("/node_modules/typescript/lib/lib.") == -1 - ]) - - transitive_declarations_depsets = [declarations] - - for dep in ctx.attr.deps: - if DeclarationInfo in dep: - transitive_declarations_depsets.append(dep[DeclarationInfo].transitive_declarations) - if NpmPackageInfo in dep: - sources_depsets.append(dep[NpmPackageInfo].sources) - - transitive_declarations = depset(transitive = transitive_declarations_depsets) - - return struct( - typescript = struct( - declarations = declarations, - devmode_manifest = None, - es5_sources = depset(), - es6_sources = depset(), - replay_params = None, - transitive_declarations = transitive_declarations, - transitive_es5_sources = depset(), - transitive_es6_sources = depset(), - tsickle_externs = [], - type_blacklisted_declarations = depset(), - ), - providers = [ - DefaultInfo( - files = direct_sources, - ), - NpmPackageInfo( - direct_sources = direct_sources, - sources = depset(transitive = sources_depsets), - workspace = workspace_name, - ), - DeclarationInfo( - declarations = declarations, - transitive_declarations = transitive_declarations, - type_blacklisted_declarations = depset([]), - ), - js_module_info( - sources = direct_sources, - deps = ctx.attr.deps, - ), - js_named_module_info( - sources = depset(ctx.files.named_module_srcs), - deps = ctx.attr.deps, - ), - ], - ) - -node_module_library = rule( - implementation = _node_module_library_impl, - attrs = { - "deps": attr.label_list( - doc = "Transitive dependencies of the package", - ), - "named_module_srcs": attr.label_list( - doc = "A subset of srcs that are javascript named-UMD or named-AMD for use in rules such as ts_devserver", - allow_files = True, - ), - "srcs": attr.label_list( - doc = "The list of files that comprise the package", - allow_files = True, - ), - }, - doc = "Defines an npm package under node_modules", -) diff --git a/internal/npm_install/test/golden/@angular/core/BUILD.bazel.golden b/internal/npm_install/test/golden/@angular/core/BUILD.bazel.golden index a7fe7c8578..69c034448a 100644 --- a/internal/npm_install/test/golden/@angular/core/BUILD.bazel.golden +++ b/internal/npm_install/test/golden/@angular/core/BUILD.bazel.golden @@ -1,6 +1,6 @@ package(default_visibility = ["//visibility:public"]) -load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") +load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") filegroup( name = "core__files", srcs = [ @@ -678,7 +678,7 @@ filegroup( name = "core__all_files", srcs = [":core__files", ":core__not_files"], ) -node_module_library( +js_library( name = "core", srcs = [":core__files"], deps = [ @@ -688,7 +688,7 @@ node_module_library( "//zone.js:zone.js__contents", ], ) -node_module_library( +js_library( name = "core__contents", srcs = [":core__files", ":core__nested_node_modules"], named_module_srcs = [ @@ -697,7 +697,7 @@ node_module_library( ], visibility = ["//:__subpackages__"], ) -node_module_library( +js_library( name = "core__typings", srcs = [ "//:node_modules/@angular/core/core.d.ts", diff --git a/internal/npm_install/test/golden/@gregmagolan/BUILD.bazel.golden b/internal/npm_install/test/golden/@gregmagolan/BUILD.bazel.golden index 0cbf7c526e..573707b275 100644 --- a/internal/npm_install/test/golden/@gregmagolan/BUILD.bazel.golden +++ b/internal/npm_install/test/golden/@gregmagolan/BUILD.bazel.golden @@ -1,7 +1,7 @@ package(default_visibility = ["//visibility:public"]) -load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") -node_module_library( +load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") +js_library( name = "@gregmagolan", srcs = [ "//@gregmagolan/test-a:test-a__files", diff --git a/internal/npm_install/test/golden/@gregmagolan/test-a/BUILD.bazel.golden b/internal/npm_install/test/golden/@gregmagolan/test-a/BUILD.bazel.golden index e480bc011d..da5e848940 100644 --- a/internal/npm_install/test/golden/@gregmagolan/test-a/BUILD.bazel.golden +++ b/internal/npm_install/test/golden/@gregmagolan/test-a/BUILD.bazel.golden @@ -1,6 +1,6 @@ package(default_visibility = ["//visibility:public"]) -load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") +load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") filegroup( name = "test-a__files", srcs = [ @@ -25,19 +25,19 @@ filegroup( name = "test-a__all_files", srcs = [":test-a__files", ":test-a__not_files"], ) -node_module_library( +js_library( name = "test-a", srcs = [":test-a__files"], deps = [ "//@gregmagolan/test-a:test-a__contents", ], ) -node_module_library( +js_library( name = "test-a__contents", srcs = [":test-a__files", ":test-a__nested_node_modules"], visibility = ["//:__subpackages__"], ) -node_module_library( +js_library( name = "test-a__typings", ) load("@build_bazel_rules_nodejs//internal/npm_install:npm_umd_bundle.bzl", "npm_umd_bundle") diff --git a/internal/npm_install/test/golden/@gregmagolan/test-b/BUILD.bazel.golden b/internal/npm_install/test/golden/@gregmagolan/test-b/BUILD.bazel.golden index 585d7a324f..53fedd1b2b 100644 --- a/internal/npm_install/test/golden/@gregmagolan/test-b/BUILD.bazel.golden +++ b/internal/npm_install/test/golden/@gregmagolan/test-b/BUILD.bazel.golden @@ -1,6 +1,6 @@ package(default_visibility = ["//visibility:public"]) -load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") +load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") filegroup( name = "test-b__files", srcs = [ @@ -24,19 +24,19 @@ filegroup( name = "test-b__all_files", srcs = [":test-b__files", ":test-b__not_files"], ) -node_module_library( +js_library( name = "test-b", srcs = [":test-b__files"], deps = [ "//@gregmagolan/test-b:test-b__contents", ], ) -node_module_library( +js_library( name = "test-b__contents", srcs = [":test-b__files", ":test-b__nested_node_modules"], visibility = ["//:__subpackages__"], ) -node_module_library( +js_library( name = "test-b__typings", ) load("@build_bazel_rules_nodejs//internal/npm_install:npm_umd_bundle.bzl", "npm_umd_bundle") diff --git a/internal/npm_install/test/golden/BUILD.bazel.golden b/internal/npm_install/test/golden/BUILD.bazel.golden index 77459dcaa9..a3ff10780c 100644 --- a/internal/npm_install/test/golden/BUILD.bazel.golden +++ b/internal/npm_install/test/golden/BUILD.bazel.golden @@ -1,6 +1,6 @@ package(default_visibility = ["//visibility:public"]) -load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") +load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") exports_files([ "node_modules/ajv/.tonic_example.js", "node_modules/ajv/LICENSE", @@ -4686,7 +4686,7 @@ exports_files([ "node_modules/@gregmagolan/test-b/node_modules/@gregmagolan/test-a/package.json", "node_modules/@gregmagolan/test-b/package.json", ]) -node_module_library( +js_library( name = "node_modules", srcs = [ "//ajv:ajv__files", diff --git a/internal/npm_install/test/golden/ajv/BUILD.bazel.golden b/internal/npm_install/test/golden/ajv/BUILD.bazel.golden index 2b1e5931f4..c3bc98a5d9 100644 --- a/internal/npm_install/test/golden/ajv/BUILD.bazel.golden +++ b/internal/npm_install/test/golden/ajv/BUILD.bazel.golden @@ -1,6 +1,6 @@ package(default_visibility = ["//visibility:public"]) -load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") +load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") filegroup( name = "ajv__files", srcs = [ @@ -108,7 +108,7 @@ filegroup( name = "ajv__all_files", srcs = [":ajv__files", ":ajv__not_files"], ) -node_module_library( +js_library( name = "ajv", srcs = [":ajv__files"], deps = [ @@ -119,12 +119,12 @@ node_module_library( "//json-schema-traverse:json-schema-traverse__contents", ], ) -node_module_library( +js_library( name = "ajv__contents", srcs = [":ajv__files", ":ajv__nested_node_modules"], visibility = ["//:__subpackages__"], ) -node_module_library( +js_library( name = "ajv__typings", srcs = [ "//:node_modules/ajv/lib/ajv.d.ts", diff --git a/internal/npm_install/test/golden/jasmine/BUILD.bazel.golden b/internal/npm_install/test/golden/jasmine/BUILD.bazel.golden index 59d80d504b..0d57facd75 100644 --- a/internal/npm_install/test/golden/jasmine/BUILD.bazel.golden +++ b/internal/npm_install/test/golden/jasmine/BUILD.bazel.golden @@ -1,6 +1,6 @@ package(default_visibility = ["//visibility:public"]) -load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") +load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") filegroup( name = "jasmine__files", srcs = [ @@ -34,7 +34,7 @@ filegroup( name = "jasmine__all_files", srcs = [":jasmine__files", ":jasmine__not_files"], ) -node_module_library( +js_library( name = "jasmine", srcs = [":jasmine__files"], deps = [ @@ -53,12 +53,12 @@ node_module_library( "//jasmine-core:jasmine-core__contents", ], ) -node_module_library( +js_library( name = "jasmine__contents", srcs = [":jasmine__files", ":jasmine__nested_node_modules"], visibility = ["//:__subpackages__"], ) -node_module_library( +js_library( name = "jasmine__typings", ) load("@build_bazel_rules_nodejs//internal/npm_install:npm_umd_bundle.bzl", "npm_umd_bundle") diff --git a/internal/npm_install/test/golden/rxjs/BUILD.bazel.golden b/internal/npm_install/test/golden/rxjs/BUILD.bazel.golden index 20edd2b0f6..d12907f8ca 100644 --- a/internal/npm_install/test/golden/rxjs/BUILD.bazel.golden +++ b/internal/npm_install/test/golden/rxjs/BUILD.bazel.golden @@ -1,6 +1,6 @@ package(default_visibility = ["//visibility:public"]) -load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") +load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") filegroup( name = "rxjs__files", srcs = [ @@ -3627,7 +3627,7 @@ filegroup( name = "rxjs__all_files", srcs = [":rxjs__files", ":rxjs__not_files"], ) -node_module_library( +js_library( name = "rxjs", srcs = [":rxjs__files"], deps = [ @@ -3635,12 +3635,12 @@ node_module_library( "//tslib:tslib__contents", ], ) -node_module_library( +js_library( name = "rxjs__contents", srcs = [":rxjs__files", ":rxjs__nested_node_modules"], visibility = ["//:__subpackages__"], ) -node_module_library( +js_library( name = "rxjs__typings", srcs = [ "//:node_modules/rxjs/AsyncSubject.d.ts", diff --git a/internal/npm_install/test/golden/unidiff/BUILD.bazel.golden b/internal/npm_install/test/golden/unidiff/BUILD.bazel.golden index 7aaea8236d..7aaabca354 100644 --- a/internal/npm_install/test/golden/unidiff/BUILD.bazel.golden +++ b/internal/npm_install/test/golden/unidiff/BUILD.bazel.golden @@ -1,6 +1,6 @@ package(default_visibility = ["//visibility:public"]) -load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") +load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") filegroup( name = "unidiff__files", srcs = [ @@ -30,7 +30,7 @@ filegroup( name = "unidiff__all_files", srcs = [":unidiff__files", ":unidiff__not_files"], ) -node_module_library( +js_library( name = "unidiff", srcs = [":unidiff__files"], deps = [ @@ -38,12 +38,12 @@ node_module_library( "//diff:diff__contents", ], ) -node_module_library( +js_library( name = "unidiff__contents", srcs = [":unidiff__files", ":unidiff__nested_node_modules"], visibility = ["//:__subpackages__"], ) -node_module_library( +js_library( name = "unidiff__typings", ) load("@build_bazel_rules_nodejs//internal/npm_install:npm_umd_bundle.bzl", "npm_umd_bundle") diff --git a/internal/npm_install/test/golden/zone.js/BUILD.bazel.golden b/internal/npm_install/test/golden/zone.js/BUILD.bazel.golden index e2079693df..fd4ba0167b 100644 --- a/internal/npm_install/test/golden/zone.js/BUILD.bazel.golden +++ b/internal/npm_install/test/golden/zone.js/BUILD.bazel.golden @@ -1,6 +1,6 @@ package(default_visibility = ["//visibility:public"]) -load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") +load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") filegroup( name = "zone.js__files", srcs = [ @@ -148,19 +148,19 @@ filegroup( name = "zone.js__all_files", srcs = [":zone.js__files", ":zone.js__not_files"], ) -node_module_library( +js_library( name = "zone.js", srcs = [":zone.js__files"], deps = [ "//zone.js:zone.js__contents", ], ) -node_module_library( +js_library( name = "zone.js__contents", srcs = [":zone.js__files", ":zone.js__nested_node_modules"], visibility = ["//:__subpackages__"], ) -node_module_library( +js_library( name = "zone.js__typings", srcs = [ "//:node_modules/zone.js/dist/zone.js.d.ts", diff --git a/internal/npm_install/test/package/BUILD.bazel b/internal/npm_install/test/package/BUILD.bazel index e4ee7c2cf0..1db44f198d 100644 --- a/internal/npm_install/test/package/BUILD.bazel +++ b/internal/npm_install/test/package/BUILD.bazel @@ -1,15 +1,15 @@ # Generated file from yarn_install/npm_install rule. # See rules_nodejs/internal/npm_install/generate_build_file.ts -load("@build_bazel_rules_nodejs//internal/npm_install:node_module_library.bzl", "node_module_library") +load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") # All rules in other repositories can use these targets package(default_visibility = ["//visibility:public"]) -# The node_modules directory in one catch-all node_module_library. +# The node_modules directory in one catch-all js_library. # NB: Using this target may have bad performance implications if # there are many files in target. # See https://github.com/bazelbuild/bazel/issues/5153. -node_module_library( +js_library( name = "node_modules", ) diff --git a/internal/providers/npm_package_info.bzl b/internal/providers/npm_package_info.bzl index f1967af5e9..f5749bac2b 100644 --- a/internal/providers/npm_package_info.bzl +++ b/internal/providers/npm_package_info.bzl @@ -16,8 +16,8 @@ """ # NpmPackageInfo provider is provided by targets that are npm dependencies by the -# `node_module_library` rule as well as other targets that have direct or transitive deps on -# `node_module_library` targets via the `node_modules_aspect` below. +# `js_library` rule as well as other targets that have direct or transitive deps on +# `js_library` targets via the `node_modules_aspect` below. NpmPackageInfo = provider( doc = "Provides information about npm dependencies", fields = { diff --git a/packages/jasmine/BUILD.bazel b/packages/jasmine/BUILD.bazel index b4d04115cc..dafd621b4a 100644 --- a/packages/jasmine/BUILD.bazel +++ b/packages/jasmine/BUILD.bazel @@ -13,7 +13,7 @@ # limitations under the License. load("@bazel_skylib//:bzl_library.bzl", "bzl_library") -load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_test") +load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin", "nodejs_test") load("@build_bazel_rules_nodejs//:tools/defaults.bzl", "pkg_npm") load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library") load("@build_bazel_rules_nodejs//tools/stardoc:index.bzl", "stardoc") @@ -53,15 +53,26 @@ nodejs_test( ], ) -js_library( - name = "jasmine", - package_name = "@bazel/jasmine", +copy_to_bin( + name = "srcs", srcs = [ "index.js", "jasmine_runner.js", ], ) +# We need to use ":srcs" here instead of an +# array for the source files otherwise our +# logic on js_library will consider this a +# node_module when used in examples/user_managed_deps +# which will endup failing as we cannot use node_modules +# from multiple workspaces. +js_library( + name = "jasmine", + package_name = "@bazel/jasmine", + srcs = [":srcs"], +) + # Ugly genrule depending on local linux environment to build the README out of skylark doc generation. # Only referenced when we do a release. # TODO: This ought to be possible with stardoc alone. Need to coordinate with Chris Parsons. diff --git a/packages/labs/grpc_web/BUILD.bazel b/packages/labs/grpc_web/BUILD.bazel index 6249f84dc6..ee26a9f3ca 100644 --- a/packages/labs/grpc_web/BUILD.bazel +++ b/packages/labs/grpc_web/BUILD.bazel @@ -42,7 +42,7 @@ well_known_protos = [ js_library( name = "bootstrap_scripts", - srcs = [ + named_module_srcs = [ "@npm//google-protobuf:google-protobuf__umd", "@npm//grpc-web:grpc-web__umd", ] + [":google-protobuf-%s__umd" % p for p in well_known_protos], diff --git a/packages/rollup/test/integration/far/a/BUILD.bazel b/packages/rollup/test/integration/far/a/BUILD.bazel index 9b308edbdb..616ac98324 100644 --- a/packages/rollup/test/integration/far/a/BUILD.bazel +++ b/packages/rollup/test/integration/far/a/BUILD.bazel @@ -10,5 +10,5 @@ ts_project( js_library( name = "a", package_name = "@far/a", - srcs = [":index.js"], + deps = [":tsconfig"], ) diff --git a/packages/rollup/test/integration/far/a/b/c/BUILD.bazel b/packages/rollup/test/integration/far/a/b/c/BUILD.bazel index 5888dd598c..ea6ee75c94 100644 --- a/packages/rollup/test/integration/far/a/b/c/BUILD.bazel +++ b/packages/rollup/test/integration/far/a/b/c/BUILD.bazel @@ -10,5 +10,5 @@ ts_project( js_library( name = "c", package_name = "@far/a/b/c", - srcs = [":tsconfig"], + deps = [":tsconfig"], ) diff --git a/packages/typescript/internal/ts_project.bzl b/packages/typescript/internal/ts_project.bzl index 6d53f0c874..c996ec26ad 100644 --- a/packages/typescript/internal/ts_project.bzl +++ b/packages/typescript/internal/ts_project.bzl @@ -1,6 +1,7 @@ "ts_project rule" load("@build_bazel_rules_nodejs//:providers.bzl", "DeclarationInfo", "NpmPackageInfo", "declaration_info", "js_module_info", "run_node") +load("@build_bazel_rules_nodejs//internal/linker:link_node_modules.bzl", "module_mappings_aspect") _DEFAULT_TSC = ( # BEGIN-INTERNAL @@ -12,7 +13,7 @@ _DEFAULT_TSC = ( _ATTRS = { "args": attr.string_list(), "declaration_dir": attr.string(), - "deps": attr.label_list(providers = [DeclarationInfo]), + "deps": attr.label_list(providers = [DeclarationInfo], aspects = [module_mappings_aspect]), "extends": attr.label_list(allow_files = [".json"]), "out_dir": attr.string(), "root_dir": attr.string(), From 3d885e8f9659b80c8248eec808c79655fe954dcb Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 17 Aug 2020 14:45:44 -0700 Subject: [PATCH 0821/1134] fix(typescript): produce .d.ts as default output rather than empty (#2117) This lets you type-check a ts_project(emit_declaration_only=True) just by building it (its default outputs) Fixes #2116 --- packages/typescript/internal/ts_project.bzl | 9 +++++---- .../test/ts_project/declaration_only/BUILD.bazel | 13 +++++++++++++ .../test/ts_project/declaration_only/a.d.ts_ | 1 + .../test/ts_project/declaration_only/a.ts | 1 + .../test/ts_project/declaration_only/tsconfig.json | 7 +++++++ 5 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 packages/typescript/test/ts_project/declaration_only/BUILD.bazel create mode 100644 packages/typescript/test/ts_project/declaration_only/a.d.ts_ create mode 100644 packages/typescript/test/ts_project/declaration_only/a.ts create mode 100644 packages/typescript/test/ts_project/declaration_only/tsconfig.json diff --git a/packages/typescript/internal/ts_project.bzl b/packages/typescript/internal/ts_project.bzl index c996ec26ad..fcd0f2d13c 100644 --- a/packages/typescript/internal/ts_project.bzl +++ b/packages/typescript/internal/ts_project.bzl @@ -117,8 +117,9 @@ def _ts_project_impl(ctx): outputs = json_outs + ctx.outputs.js_outs + ctx.outputs.map_outs + ctx.outputs.typings_outs + ctx.outputs.typing_maps_outs if ctx.outputs.buildinfo_out: outputs.append(ctx.outputs.buildinfo_out) - runtime_outputs = depset(json_outs + ctx.outputs.js_outs + ctx.outputs.map_outs) + runtime_outputs = json_outs + ctx.outputs.js_outs + ctx.outputs.map_outs typings_outputs = ctx.outputs.typings_outs + ctx.outputs.typing_maps_outs + [s for s in ctx.files.srcs if s.path.endswith(".d.ts")] + default_outputs_depset = depset(runtime_outputs) if len(runtime_outputs) else depset(typings_outputs) if len(outputs) > 0: run_node( @@ -140,14 +141,14 @@ def _ts_project_impl(ctx): # Only the JavaScript outputs are intended for use in non-TS-aware # dependents. DefaultInfo( - files = runtime_outputs, + files = default_outputs_depset, runfiles = ctx.runfiles( - transitive_files = runtime_outputs, + transitive_files = default_outputs_depset, collect_default = True, ), ), js_module_info( - sources = runtime_outputs, + sources = depset(runtime_outputs), deps = ctx.attr.deps, ), _TsConfigInfo(tsconfigs = depset([ctx.file.tsconfig] + ctx.files.extends, transitive = [ diff --git a/packages/typescript/test/ts_project/declaration_only/BUILD.bazel b/packages/typescript/test/ts_project/declaration_only/BUILD.bazel new file mode 100644 index 0000000000..a167806756 --- /dev/null +++ b/packages/typescript/test/ts_project/declaration_only/BUILD.bazel @@ -0,0 +1,13 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "generated_file_test") +load("//packages/typescript:index.bzl", "ts_project") + +ts_project( + declaration = True, + emit_declaration_only = True, +) + +generated_file_test( + name = "test", + src = "a.d.ts_", + generated = ":tsconfig", +) diff --git a/packages/typescript/test/ts_project/declaration_only/a.d.ts_ b/packages/typescript/test/ts_project/declaration_only/a.d.ts_ new file mode 100644 index 0000000000..106d610ab9 --- /dev/null +++ b/packages/typescript/test/ts_project/declaration_only/a.d.ts_ @@ -0,0 +1 @@ +export declare const a: string; diff --git a/packages/typescript/test/ts_project/declaration_only/a.ts b/packages/typescript/test/ts_project/declaration_only/a.ts new file mode 100644 index 0000000000..db233fb40c --- /dev/null +++ b/packages/typescript/test/ts_project/declaration_only/a.ts @@ -0,0 +1 @@ +export const a: string = ''; diff --git a/packages/typescript/test/ts_project/declaration_only/tsconfig.json b/packages/typescript/test/ts_project/declaration_only/tsconfig.json new file mode 100644 index 0000000000..e929240d2d --- /dev/null +++ b/packages/typescript/test/ts_project/declaration_only/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "types": [] + } +} From 5eb10079bf4f2f0c907cc5bd84defe6deeb1dca8 Mon Sep 17 00:00:00 2001 From: Matt Insler Date: Tue, 18 Aug 2020 06:36:19 -0700 Subject: [PATCH 0822/1134] added script to generate NodeJS versions for node_repositories and added most up-to-date versions (#2126) Co-authored-by: Matt Insler --- internal/node/node_repositories.bzl | 776 +++++++++++++++++++++++++++- scripts/update-nodejs-versions.js | 94 ++++ 2 files changed, 869 insertions(+), 1 deletion(-) create mode 100644 scripts/update-nodejs-versions.js diff --git a/internal/node/node_repositories.bzl b/internal/node/node_repositories.bzl index 7a700a8298..fb3de5b6d1 100644 --- a/internal/node/node_repositories.bzl +++ b/internal/node/node_repositories.bzl @@ -69,47 +69,821 @@ _ATTRS = { "node_repositories": attr.string_list_dict( # @unsorted-dict-items default = { + # 8.0.0 + "8.0.0-darwin_amd64": ("node-v8.0.0-darwin-x64.tar.gz", "node-v8.0.0-darwin-x64", "6e4a66917e2c11d5adc537c899941c973ae586293352b8172a4f32be0b7f0300"), + "8.0.0-linux_arm64": ("node-v8.0.0-linux-arm64.tar.xz", "node-v8.0.0-linux-arm64", "8d6eaefcc252055de54a666d4e00eec78caf2143cd7a13b63f109e9eb78a795e"), + "8.0.0-linux_amd64": ("node-v8.0.0-linux-x64.tar.xz", "node-v8.0.0-linux-x64", "0a536bb83eeccca23626e5e5ead52563a641e4331c35e367662892921dc7e8a4"), + "8.0.0-windows_amd64": ("node-v8.0.0-win-x64.zip", "node-v8.0.0-win-x64", "84410377118857674e0fb6e7bc7627ffb8cc67a72f162a050276b076e328a9bb"), + # 8.1.0 + "8.1.0-darwin_amd64": ("node-v8.1.0-darwin-x64.tar.gz", "node-v8.1.0-darwin-x64", "08af5f1a7441728cabf9b11af25da28ee1725903524968dd9621b885b13303c7"), + "8.1.0-linux_arm64": ("node-v8.1.0-linux-arm64.tar.xz", "node-v8.1.0-linux-arm64", "adf2f517c9847cbb5904b282c0819526b5264c256477ed5e4b258584daa1a2ea"), + "8.1.0-linux_amd64": ("node-v8.1.0-linux-x64.tar.xz", "node-v8.1.0-linux-x64", "1638a0083c6eee122cbbefdf39cb8bcc43cf19fedff331a0317b05fd38dcb6df"), + "8.1.0-windows_amd64": ("node-v8.1.0-win-x64.zip", "node-v8.1.0-win-x64", "cee1fd1c828e8996824a2d9f9056dfae771b77c05b15ad015bc7f8800409215c"), + # 8.1.1 + "8.1.1-darwin_amd64": ("node-v8.1.1-darwin-x64.tar.gz", "node-v8.1.1-darwin-x64", "2f67890a5a46564672cfd4522cc00c7ac04d307e6a942ae1ad38b6aee94c29e2"), + "8.1.1-linux_arm64": ("node-v8.1.1-linux-arm64.tar.xz", "node-v8.1.1-linux-arm64", "3971543f9d29f77ddb8f47a54e4b99422a822173599748ab7fcd9c35c8e25124"), + "8.1.1-linux_amd64": ("node-v8.1.1-linux-x64.tar.xz", "node-v8.1.1-linux-x64", "6a735e77bdd21c92fe85ea5f9f567d0d6930fa33e0e111946b17cdb7efefb8d5"), + "8.1.1-windows_amd64": ("node-v8.1.1-win-x64.zip", "node-v8.1.1-win-x64", "459f3b62e58f4fac3b9b5e49694855f338f3dcf2fcf955299ee2a47f7687625a"), + # 8.1.2 + "8.1.2-darwin_amd64": ("node-v8.1.2-darwin-x64.tar.gz", "node-v8.1.2-darwin-x64", "70f353449b19d6d36262f5e38f9cc23e80b2034c21ae48623a6a4890f513eb53"), + "8.1.2-linux_arm64": ("node-v8.1.2-linux-arm64.tar.xz", "node-v8.1.2-linux-arm64", "d468ac671047a5a5edb6edd34a9a625645505551c35ef73e2102c504535a09d4"), + "8.1.2-linux_amd64": ("node-v8.1.2-linux-x64.tar.xz", "node-v8.1.2-linux-x64", "f5dc173d3005fbcfd107c83a15d4dbff9a28ff53ab42c23344a572d84814ecfe"), + "8.1.2-windows_amd64": ("node-v8.1.2-win-x64.zip", "node-v8.1.2-win-x64", "5463c812afeb498ad8ab9c396246e455d9353ab48ae409c82a2a45193e161f66"), + # 8.1.3 + "8.1.3-darwin_amd64": ("node-v8.1.3-darwin-x64.tar.gz", "node-v8.1.3-darwin-x64", "ae588038480a6acc57b6b04802fa876e0b602231e9846944dd1b4437e8c1205f"), + "8.1.3-linux_arm64": ("node-v8.1.3-linux-arm64.tar.xz", "node-v8.1.3-linux-arm64", "cebc2edd89f20613a530509a2435ecc42757ce16032559ef174ebe84875a1536"), + "8.1.3-linux_amd64": ("node-v8.1.3-linux-x64.tar.xz", "node-v8.1.3-linux-x64", "d41dc375ea7e33fadf0fb1bf89d9dfd222a2fb85633fba3d2cf48ac03522ba71"), + "8.1.3-windows_amd64": ("node-v8.1.3-win-x64.zip", "node-v8.1.3-win-x64", "be582920c723124ebad48c968f539ef66b1f628d8b6f2338dc68a32f95104856"), + # 8.1.4 + "8.1.4-darwin_amd64": ("node-v8.1.4-darwin-x64.tar.gz", "node-v8.1.4-darwin-x64", "a24858a10dd4ca8ad55fd61a7472b4fe9140eb3fa347c41717360c3f29438748"), + "8.1.4-linux_arm64": ("node-v8.1.4-linux-arm64.tar.xz", "node-v8.1.4-linux-arm64", "3553c617f594286fea7052678d04aec9e167adddf702b70431d88ce42573c339"), + "8.1.4-linux_amd64": ("node-v8.1.4-linux-x64.tar.xz", "node-v8.1.4-linux-x64", "d82fe7ef7e0f8ca1c343f00e3e490996553507ec7d42034f5df034cc7908caaf"), + "8.1.4-windows_amd64": ("node-v8.1.4-win-x64.zip", "node-v8.1.4-win-x64", "cc3689ffefc738f6256aab1713343c3c64c24ec997600c0a48243fb26f5e0bce"), + # 8.2.0 + "8.2.0-darwin_amd64": ("node-v8.2.0-darwin-x64.tar.gz", "node-v8.2.0-darwin-x64", "da5cca37ae0afdbff3a269bb3dc71ff0d86e282920286f71ae5eb6757cfa5356"), + "8.2.0-linux_arm64": ("node-v8.2.0-linux-arm64.tar.xz", "node-v8.2.0-linux-arm64", "3298ae4ae67c4ad714bed23383fd08db5711b164a077a25fb6b282533e65cf77"), + "8.2.0-linux_amd64": ("node-v8.2.0-linux-x64.tar.xz", "node-v8.2.0-linux-x64", "e8ceaac3ee4385d53bcebc552a7a6b545b09b9652f5ca1b254aae698fd9a25f9"), + "8.2.0-windows_amd64": ("node-v8.2.0-win-x64.zip", "node-v8.2.0-win-x64", "6bc3cc580f0e8190e6a03d6a5967c861c29d6a6eb50f995b3afb7d60b8cee4e1"), + # 8.2.1 + "8.2.1-darwin_amd64": ("node-v8.2.1-darwin-x64.tar.gz", "node-v8.2.1-darwin-x64", "32d0923c147470d57f18f055014f5a9fe8a3919406010a2e80ba85952d3c9923"), + "8.2.1-linux_arm64": ("node-v8.2.1-linux-arm64.tar.xz", "node-v8.2.1-linux-arm64", "9ed01737f37d410067beeb42066e51f6d0385677c7d0daeeaf2e32cb2aca854a"), + "8.2.1-linux_amd64": ("node-v8.2.1-linux-x64.tar.xz", "node-v8.2.1-linux-x64", "abcddeb95cc4465953b1edb0922d20e9b0b3de83688fc8150b863117032a978a"), + "8.2.1-windows_amd64": ("node-v8.2.1-win-x64.zip", "node-v8.2.1-win-x64", "37e84e54c67e3d1e52d657c04835b211c94631a0b358f4e7dc351618fdb6c083"), + # 8.3.0 + "8.3.0-darwin_amd64": ("node-v8.3.0-darwin-x64.tar.gz", "node-v8.3.0-darwin-x64", "a627354982a514e77e5c37ed5952edc81a7dd9c4f661fd919f192c21ae548654"), + "8.3.0-linux_arm64": ("node-v8.3.0-linux-arm64.tar.xz", "node-v8.3.0-linux-arm64", "9e0dab4913585a1b8117bda03c4b5581d9140aec67bb4be0e0b6a4999b41b4ab"), + "8.3.0-linux_amd64": ("node-v8.3.0-linux-x64.tar.xz", "node-v8.3.0-linux-x64", "ae377995c6e1af8e2a60c4a929f77562ebed9a2c6897cbd311a2c331f76b4e0f"), + "8.3.0-windows_amd64": ("node-v8.3.0-win-x64.zip", "node-v8.3.0-win-x64", "e762fa218465e5aa0952336eee2c3e42e5b48390b36838ca7b6a243812e0b7e5"), + # 8.4.0 + "8.4.0-darwin_amd64": ("node-v8.4.0-darwin-x64.tar.gz", "node-v8.4.0-darwin-x64", "cc10ffbd11586bd27a7cc5e6e2d03fd3e0b341368387a03ee9a0117a0288599d"), + "8.4.0-linux_arm64": ("node-v8.4.0-linux-arm64.tar.xz", "node-v8.4.0-linux-arm64", "0a811bbe4905fc879f3cbfc976e5a37cca05bbd609774abe4332b29fea75f073"), + "8.4.0-linux_amd64": ("node-v8.4.0-linux-x64.tar.xz", "node-v8.4.0-linux-x64", "7fd86abad06f96cb2f889c2a0e25686a3de3e9a078ad946ded91ee4f28d8218a"), + "8.4.0-windows_amd64": ("node-v8.4.0-win-x64.zip", "node-v8.4.0-win-x64", "0f60c99479f74d75c7239795c90698826ba8252019d4c23e82ed0d72ceb8974f"), + # 8.5.0 + "8.5.0-darwin_amd64": ("node-v8.5.0-darwin-x64.tar.gz", "node-v8.5.0-darwin-x64", "0c8d4c4d90f858a19a29fe1ae7f42b2b7f1a4d3caaa25bea2e08479c00ebbd5f"), + "8.5.0-linux_arm64": ("node-v8.5.0-linux-arm64.tar.xz", "node-v8.5.0-linux-arm64", "e0decdebe73dba516d6c72401e337cee6277c6e00f817b0bf1c592360adfd4e6"), + "8.5.0-linux_amd64": ("node-v8.5.0-linux-x64.tar.xz", "node-v8.5.0-linux-x64", "a9651fcc6259b4a944ebb72e6dd116602c7b26ddf939599b060d1d3e6ead8c36"), + "8.5.0-windows_amd64": ("node-v8.5.0-win-x64.zip", "node-v8.5.0-win-x64", "c385d162c15a7a85d42755ee8c78c1c73bd251e2f7cbf82e5e20c824564aa9df"), + # 8.6.0 + "8.6.0-darwin_amd64": ("node-v8.6.0-darwin-x64.tar.gz", "node-v8.6.0-darwin-x64", "2c95f3194a92e8b37aab8895fbaeb1f5fabef3494600ef78a7b7e078dba9a7c9"), + "8.6.0-linux_arm64": ("node-v8.6.0-linux-arm64.tar.xz", "node-v8.6.0-linux-arm64", "6848567ab32d04694120e18c20ef47d0f4163229634f236e4bdbb8d135f3204e"), + "8.6.0-linux_amd64": ("node-v8.6.0-linux-x64.tar.xz", "node-v8.6.0-linux-x64", "e6f52c3ed7e2cc34ebddbc563434fdf043feb449a60f028101eb45227aec3444"), + "8.6.0-windows_amd64": ("node-v8.6.0-win-x64.zip", "node-v8.6.0-win-x64", "08e9b29c47567517ca95ca01d5cdb255279be5463952f92da5c372a99d620b23"), + # 8.7.0 + "8.7.0-darwin_amd64": ("node-v8.7.0-darwin-x64.tar.gz", "node-v8.7.0-darwin-x64", "5e59798c1deafd671a35ef4dcdb9b97ce98f9255a056832dc98d454613e9ea08"), + "8.7.0-linux_arm64": ("node-v8.7.0-linux-arm64.tar.xz", "node-v8.7.0-linux-arm64", "5a1a1907fbb6d90667ce70ad42602534f6cc6eda873d1c50a3259349aee73418"), + "8.7.0-linux_amd64": ("node-v8.7.0-linux-x64.tar.xz", "node-v8.7.0-linux-x64", "9d6f649576cac74ef0b6634af8265156370cf8fdf3676f03e867347d3207675d"), + "8.7.0-windows_amd64": ("node-v8.7.0-win-x64.zip", "node-v8.7.0-win-x64", "e95be435674e82ea7133c3268cb70044eabde2d0aef28b2a3df5c7d8d23cadcc"), + # 8.8.0 + "8.8.0-darwin_amd64": ("node-v8.8.0-darwin-x64.tar.gz", "node-v8.8.0-darwin-x64", "69a37e240fac48289a2a5bb75ab96091f8d6457eeaf23c0a5125250abe418176"), + "8.8.0-linux_arm64": ("node-v8.8.0-linux-arm64.tar.xz", "node-v8.8.0-linux-arm64", "454617ff94882d9a81dca0840065fb5a928ff68e8e8efe7c1748d996ab757b2e"), + "8.8.0-linux_amd64": ("node-v8.8.0-linux-x64.tar.xz", "node-v8.8.0-linux-x64", "4304c297f41085ac1f7a6a8e68496d9fd5aa3b92590e7c3c6015a23939767e72"), + "8.8.0-windows_amd64": ("node-v8.8.0-win-x64.zip", "node-v8.8.0-win-x64", "a7a1fd2c5f5c967d7df70fdec1a8b2d2d2b1b411fcdd4f23bcf8c9c837a7c3cb"), + # 8.8.1 + "8.8.1-darwin_amd64": ("node-v8.8.1-darwin-x64.tar.gz", "node-v8.8.1-darwin-x64", "bf208e29418fb3efc836d3d32b62b9162f0f0b36a0665abc0990f4e292cfc84b"), + "8.8.1-linux_arm64": ("node-v8.8.1-linux-arm64.tar.xz", "node-v8.8.1-linux-arm64", "ea8ad0286a31e7519e979fcf99e503845a95da640cd140be5cff418a68fa6263"), + "8.8.1-linux_amd64": ("node-v8.8.1-linux-x64.tar.xz", "node-v8.8.1-linux-x64", "004bc95267ef5d5b928f560582f681a679bada2201bf221735a02f4956f67b09"), + "8.8.1-windows_amd64": ("node-v8.8.1-win-x64.zip", "node-v8.8.1-win-x64", "a7e60a1a5f46ef309cbe74e423c17e69dd0a573f0c92c9e325caade3388d192a"), + # 8.9.0 + "8.9.0-darwin_amd64": ("node-v8.9.0-darwin-x64.tar.gz", "node-v8.9.0-darwin-x64", "aaf165348bc6d20012b048a88a8f3a35cba6799496e8f4c1246d85c524a84dbc"), + "8.9.0-linux_arm64": ("node-v8.9.0-linux-arm64.tar.xz", "node-v8.9.0-linux-arm64", "30cb00ac1cf6b466b1f27e7ce41363a67a66dbb64227c2dc5e33d221b09fc579"), + "8.9.0-linux_amd64": ("node-v8.9.0-linux-x64.tar.xz", "node-v8.9.0-linux-x64", "e92b91fa473f9ad805a1241907b6f1bd3f8ceac8426a8b4cb05428e62e243bdd"), + "8.9.0-windows_amd64": ("node-v8.9.0-win-x64.zip", "node-v8.9.0-win-x64", "dd971e43ff003213b0be31c1a8ce3421f72e0db2a703bc254ac685be4f7f609e"), # 8.9.1 "8.9.1-darwin_amd64": ("node-v8.9.1-darwin-x64.tar.gz", "node-v8.9.1-darwin-x64", "05c992a6621d28d564b92bf3051a5dc0adf83839237c0d4653a8cdb8a1c73b94"), + "8.9.1-linux_arm64": ("node-v8.9.1-linux-arm64.tar.xz", "node-v8.9.1-linux-arm64", "f774660980dcf931bf29847a5f26317823a063fa4a56f85f37c3222d77cce7c1"), "8.9.1-linux_amd64": ("node-v8.9.1-linux-x64.tar.xz", "node-v8.9.1-linux-x64", "8be82805f7c1ab3e64d4569fb9a90ded2de78dd27cadbb91bad1bf975dae1e2d"), "8.9.1-windows_amd64": ("node-v8.9.1-win-x64.zip", "node-v8.9.1-win-x64", "db89c6e041da359561fbe7da075bb4f9881a0f7d3e98c203e83732cfb283fa4a"), + # 8.9.2 + "8.9.2-darwin_amd64": ("node-v8.9.2-darwin-x64.tar.gz", "node-v8.9.2-darwin-x64", "ba03ae4c0ebd33e8661b5b241211ddb9f7e3b5b959d8cbd68f5941cb1ed5784d"), + "8.9.2-linux_arm64": ("node-v8.9.2-linux-arm64.tar.xz", "node-v8.9.2-linux-arm64", "cc222b4f910ff27ff66ccc96d5c7e2117942bcd161ec253d83cf430146b79bdf"), + "8.9.2-linux_amd64": ("node-v8.9.2-linux-x64.tar.xz", "node-v8.9.2-linux-x64", "d4065724e7f5f11e999f78de50fb0faac74341799cb0c0dafcbe87e0ecb0be86"), + "8.9.2-windows_amd64": ("node-v8.9.2-win-x64.zip", "node-v8.9.2-win-x64", "2afa8b899c0dddea50dcf5dda66ae7b0ca32326dbf66c52f947c082e7c95d090"), + # 8.9.3 + "8.9.3-darwin_amd64": ("node-v8.9.3-darwin-x64.tar.gz", "node-v8.9.3-darwin-x64", "fa7962f25db420a374e9e60d8a410188bd690a2f0ce8d403aa9b09d9b7ae8c1f"), + "8.9.3-linux_arm64": ("node-v8.9.3-linux-arm64.tar.xz", "node-v8.9.3-linux-arm64", "8860678ad0c24059380af254574e5a12371a2d5c92ca5e1ac7267314af7df04f"), + "8.9.3-linux_amd64": ("node-v8.9.3-linux-x64.tar.xz", "node-v8.9.3-linux-x64", "86f3aa593315f0503d069e3f4805019583ab8d86c0244a83c795d1942e3f99b7"), + "8.9.3-windows_amd64": ("node-v8.9.3-win-x64.zip", "node-v8.9.3-win-x64", "17dee0c06d088269123a27db3905a39a17a51cc0ea65435ae942c718f0f94403"), + # 8.9.4 + "8.9.4-darwin_amd64": ("node-v8.9.4-darwin-x64.tar.gz", "node-v8.9.4-darwin-x64", "ca50f7d2035eb805306e303b644bb1cde170ce2615e0a2c6e95fb80881c48c24"), + "8.9.4-linux_arm64": ("node-v8.9.4-linux-arm64.tar.xz", "node-v8.9.4-linux-arm64", "7c0369a5dbc98d0989c208ca3ee1b6db4cba576343014fdbf7d36fd2659f7089"), + "8.9.4-linux_amd64": ("node-v8.9.4-linux-x64.tar.xz", "node-v8.9.4-linux-x64", "68b94aac38cd5d87ab79c5b38306e34a20575f31a3ea788d117c20fffcca3370"), + "8.9.4-windows_amd64": ("node-v8.9.4-win-x64.zip", "node-v8.9.4-win-x64", "48946e99ac4484e071df25741d2300f3a656f476c5ff3f8116a4746c07ebe3b7"), + # 8.10.0 + "8.10.0-darwin_amd64": ("node-v8.10.0-darwin-x64.tar.gz", "node-v8.10.0-darwin-x64", "7d77bd35bc781f02ba7383779da30bd529f21849b86f14d87e097497671b0271"), + "8.10.0-linux_arm64": ("node-v8.10.0-linux-arm64.tar.xz", "node-v8.10.0-linux-arm64", "cbec410109664f75d3c988a43483576fc56f745e05e3884891df9c509fbb1b12"), + "8.10.0-linux_amd64": ("node-v8.10.0-linux-x64.tar.xz", "node-v8.10.0-linux-x64", "92220638d661a43bd0fee2bf478cb283ead6524f231aabccf14c549ebc2bc338"), + "8.10.0-windows_amd64": ("node-v8.10.0-win-x64.zip", "node-v8.10.0-win-x64", "936ada36cb6f09a5565571e15eb8006e45c5a513529c19e21d070acf0e50321b"), + # 8.11.0 + "8.11.0-darwin_amd64": ("node-v8.11.0-darwin-x64.tar.gz", "node-v8.11.0-darwin-x64", "408323335b8c691d75397c76ddd7b00490852652c78c813c586ba7eccc5c382b"), + "8.11.0-linux_arm64": ("node-v8.11.0-linux-arm64.tar.xz", "node-v8.11.0-linux-arm64", "a28f599a14ca9ef4062fa1e605b69cd046f81d3fc9a7d6dde1856fb593004b3a"), + "8.11.0-linux_amd64": ("node-v8.11.0-linux-x64.tar.xz", "node-v8.11.0-linux-x64", "180ef8c2a39c1696b9a05832883ed981ba11475ffa44ca77781a8d1c1954f944"), + "8.11.0-windows_amd64": ("node-v8.11.0-win-x64.zip", "node-v8.11.0-win-x64", "55b9c8d48b59569117a63fdb26e1de05e792c37f563feb7d44b4cd59be96aff8"), # 8.11.1 "8.11.1-darwin_amd64": ("node-v8.11.1-darwin-x64.tar.gz", "node-v8.11.1-darwin-x64", "5c7b05899ff56910a2b8180f139d48612f349ac2c5d20f08dbbeffbed9e3a089"), + "8.11.1-linux_arm64": ("node-v8.11.1-linux-arm64.tar.xz", "node-v8.11.1-linux-arm64", "ff518f33751baa8ea4f18853d446357c2edecd930a1526ac9b2eaa79baddc1bf"), "8.11.1-linux_amd64": ("node-v8.11.1-linux-x64.tar.xz", "node-v8.11.1-linux-x64", "6617e245fa0f7fbe0e373e71d543fea878315324ab31dc64b4eba10e42d04c11"), "8.11.1-windows_amd64": ("node-v8.11.1-win-x64.zip", "node-v8.11.1-win-x64", "7d49b59c2b5d73a14c138e8a215d558a64a5241cd5035d9824f608e7bba097b1"), + # 8.11.2 + "8.11.2-darwin_amd64": ("node-v8.11.2-darwin-x64.tar.gz", "node-v8.11.2-darwin-x64", "6bd619ab577a1256531e50e31924d99a094eb920de8b5bd060a056a2608282b9"), + "8.11.2-linux_arm64": ("node-v8.11.2-linux-arm64.tar.xz", "node-v8.11.2-linux-arm64", "c8e9833402277c1a5a31b41cc31c9cedad68ba87c2ef78aed6a3ced81af9da7f"), + "8.11.2-linux_amd64": ("node-v8.11.2-linux-x64.tar.xz", "node-v8.11.2-linux-x64", "213599127d24496cbf1cbb2a7c51060a3506d6b11132c59bb7f9f8a0edd210a7"), + "8.11.2-windows_amd64": ("node-v8.11.2-win-x64.zip", "node-v8.11.2-win-x64", "bbac1f56e8001a093acb2942f8a43c3bf22aec58216f446b7bf01f6f822dfe3f"), + # 8.11.3 + "8.11.3-darwin_amd64": ("node-v8.11.3-darwin-x64.tar.gz", "node-v8.11.3-darwin-x64", "77fa26b4c2fc34bdf5a5dd1cd39c93b12087fbd25148c6f04bf409698ee48b86"), + "8.11.3-linux_arm64": ("node-v8.11.3-linux-arm64.tar.xz", "node-v8.11.3-linux-arm64", "b8fddec18f20533929a07bc1d38ae63b1999a0252740094f0974b2cbea76eaa4"), + "8.11.3-linux_amd64": ("node-v8.11.3-linux-x64.tar.xz", "node-v8.11.3-linux-x64", "08e2fcfea66746bd966ea3a89f26851f1238d96f86c33eaf6274f67fce58421a"), + "8.11.3-windows_amd64": ("node-v8.11.3-win-x64.zip", "node-v8.11.3-win-x64", "91b779def1b21dcd1def7fc9671a869a1e2f989952e76fdc08a5d73570075f31"), + # 8.11.4 + "8.11.4-darwin_amd64": ("node-v8.11.4-darwin-x64.tar.gz", "node-v8.11.4-darwin-x64", "aa1de83b388581d0d9ec3276f4526ee67e17e0f1bc0deb5133f960ce5dc9f1ef"), + "8.11.4-linux_arm64": ("node-v8.11.4-linux-arm64.tar.xz", "node-v8.11.4-linux-arm64", "46e90dd916ddbf88c866de300c1b2a26f9216b19abd92b29e89439f62fb6fc1c"), + "8.11.4-linux_amd64": ("node-v8.11.4-linux-x64.tar.xz", "node-v8.11.4-linux-x64", "85ea7cbb5bf624e130585bfe3946e99c85ce5cb84c2aee474038bdbe912f908c"), + "8.11.4-windows_amd64": ("node-v8.11.4-win-x64.zip", "node-v8.11.4-win-x64", "72a21e2fcd3703994f57cf707b92e7f939df99c3e0298102e7436849e4948536"), # 8.12.0 "8.12.0-darwin_amd64": ("node-v8.12.0-darwin-x64.tar.gz", "node-v8.12.0-darwin-x64", "ca131b84dfcf2b6f653a6521d31f7a108ad7d83f4d7e781945b2eca8172064aa"), + "8.12.0-linux_arm64": ("node-v8.12.0-linux-arm64.tar.xz", "node-v8.12.0-linux-arm64", "0fbdcfd8cf0cb5e8f5beff84ba091fd47126ba44c628e3a351501419b211aa1a"), "8.12.0-linux_amd64": ("node-v8.12.0-linux-x64.tar.xz", "node-v8.12.0-linux-x64", "29a20479cd1e3a03396a4e74a1784ccdd1cf2f96928b56f6ffa4c8dae40c88f2"), "8.12.0-windows_amd64": ("node-v8.12.0-win-x64.zip", "node-v8.12.0-win-x64", "9b22c9b23148b61ea0052826b3ac0255b8a3a542c125272b8f014f15bf11b091"), + # 8.13.0 + "8.13.0-darwin_amd64": ("node-v8.13.0-darwin-x64.tar.gz", "node-v8.13.0-darwin-x64", "f6261c7a09a2c8bd77a8760a0e110410f508e5641ca132511b4883600f2d65f0"), + "8.13.0-linux_arm64": ("node-v8.13.0-linux-arm64.tar.xz", "node-v8.13.0-linux-arm64", "e8e0daab515dfd0c2323b8e1274475f61c8ca1cf582dcc254583cbf8593425e3"), + "8.13.0-linux_amd64": ("node-v8.13.0-linux-x64.tar.xz", "node-v8.13.0-linux-x64", "8fa1227b28113e25a8960d7fa6779a8c18bf20cfaafc9c5d0e46a3ee88373669"), + "8.13.0-windows_amd64": ("node-v8.13.0-win-x64.zip", "node-v8.13.0-win-x64", "46293121d207350bd8d334efb67303337933c4dac886a840f88ff6059bff9443"), + # 8.14.0 + "8.14.0-darwin_amd64": ("node-v8.14.0-darwin-x64.tar.gz", "node-v8.14.0-darwin-x64", "1e9bb233bb3c3b01826f9d7e1b3ecf1047840ce96a3a7d1921ddcb569c467329"), + "8.14.0-linux_arm64": ("node-v8.14.0-linux-arm64.tar.xz", "node-v8.14.0-linux-arm64", "fbcef89a60f1f40699589850f861fc84354a6f240610e2726c3743455dd82525"), + "8.14.0-linux_amd64": ("node-v8.14.0-linux-x64.tar.xz", "node-v8.14.0-linux-x64", "a56d1af4d7da81504338b09809cf10b3144808d47d4117b9bd9a5a4ec4d5d9b9"), + "8.14.0-windows_amd64": ("node-v8.14.0-win-x64.zip", "node-v8.14.0-win-x64", "d0be7c96a25c5d2b69f8a3510e9f4414643d5fe361b4509d455249e57f9a50af"), + # 8.14.1 + "8.14.1-darwin_amd64": ("node-v8.14.1-darwin-x64.tar.gz", "node-v8.14.1-darwin-x64", "d180a9b70de569e4c3d10c0c4a0af74e40dbca3e845df43ce1ec522bb4252eda"), + "8.14.1-linux_arm64": ("node-v8.14.1-linux-arm64.tar.xz", "node-v8.14.1-linux-arm64", "488a66288052c6497133179e4546efb7fbaf105e432cd0d9aab3471901ab5e58"), + "8.14.1-linux_amd64": ("node-v8.14.1-linux-x64.tar.xz", "node-v8.14.1-linux-x64", "1fec92a0110f692c68f7bdbec41b340c474bd77063323520786a7b9b00473daf"), + "8.14.1-windows_amd64": ("node-v8.14.1-win-x64.zip", "node-v8.14.1-win-x64", "41793b873f98ceed632b24120ef44b2df89625f3dfa90eb9298dad698249167c"), + # 8.15.0 + "8.15.0-darwin_amd64": ("node-v8.15.0-darwin-x64.tar.gz", "node-v8.15.0-darwin-x64", "a393971136408f837fbc0f7d71a63754f91cfb1851d48bd612d8219eb61956f1"), + "8.15.0-linux_arm64": ("node-v8.15.0-linux-arm64.tar.xz", "node-v8.15.0-linux-arm64", "5985c6dce65b1161ff41253da5aa4e64b8f10eb010a5d2712ea9b659f70179d7"), + "8.15.0-linux_amd64": ("node-v8.15.0-linux-x64.tar.xz", "node-v8.15.0-linux-x64", "c1f0c5facdba78b5dec5136aec40dcb00b5c7cf404d9236a99c955994f91d969"), + "8.15.0-windows_amd64": ("node-v8.15.0-win-x64.zip", "node-v8.15.0-win-x64", "13d8eab29c191bd16c69a70a556178a5adc988b243a036aaf3d5158861b60d8e"), + # 8.15.1 + "8.15.1-darwin_amd64": ("node-v8.15.1-darwin-x64.tar.gz", "node-v8.15.1-darwin-x64", "f3da0b4397150226c008a86c99d77dbb835dc62219d863654913a78332ab19a5"), + "8.15.1-linux_arm64": ("node-v8.15.1-linux-arm64.tar.xz", "node-v8.15.1-linux-arm64", "69e000d78342c3d39583922c57947a906ad723789d6294951deb10cbe8709605"), + "8.15.1-linux_amd64": ("node-v8.15.1-linux-x64.tar.xz", "node-v8.15.1-linux-x64", "5643b54c583eebaa40c1623b16cba4e3955ff5dfdd44036f6bafd761160c993d"), + "8.15.1-windows_amd64": ("node-v8.15.1-win-x64.zip", "node-v8.15.1-win-x64", "f636fa578dc079bacc6c4bef13284ddb893c99f7640b96701c2690bd9c1431f5"), + # 8.16.0 + "8.16.0-darwin_amd64": ("node-v8.16.0-darwin-x64.tar.gz", "node-v8.16.0-darwin-x64", "a6710b8af0862fab0ccdba0549dbcdad76b5f99070652e64f6a85158038fc9a6"), + "8.16.0-linux_arm64": ("node-v8.16.0-linux-arm64.tar.xz", "node-v8.16.0-linux-arm64", "4583d1cb44ff8b51cbf0402a78f2fe086c13a6c900c20c8be14e3b0e28e34335"), + "8.16.0-linux_amd64": ("node-v8.16.0-linux-x64.tar.xz", "node-v8.16.0-linux-x64", "e538ffaaf2f808c084e70f1a1d2ff5559cff892cfd56e0bb67d00b0a95fc3a7a"), + "8.16.0-windows_amd64": ("node-v8.16.0-win-x64.zip", "node-v8.16.0-win-x64", "d6baa929bacb78b347b29ebb0263220ea649ce82f3cdfd3f0b41ac725d1bbba5"), + # 8.16.1 + "8.16.1-darwin_amd64": ("node-v8.16.1-darwin-x64.tar.gz", "node-v8.16.1-darwin-x64", "ef1cb93f03bca4b9528e5d3226bdf8efa135e4b12285eee1e4760da06bac631a"), + "8.16.1-linux_arm64": ("node-v8.16.1-linux-arm64.tar.xz", "node-v8.16.1-linux-arm64", "0c61c6ae8a70d96ab19848a09b2010d29b806f2dd79177da22c743fd5e352a98"), + "8.16.1-linux_amd64": ("node-v8.16.1-linux-x64.tar.xz", "node-v8.16.1-linux-x64", "22a2580569c787ea83960bda0eae5dfaf1fe79382a52ad5fa5cd3accb93a1818"), + "8.16.1-windows_amd64": ("node-v8.16.1-win-x64.zip", "node-v8.16.1-win-x64", "396dc41740bca0355d11865780e2af8e88eb17581cd2c445ccaf29b862901ab8"), + # 8.16.2 + "8.16.2-darwin_amd64": ("node-v8.16.2-darwin-x64.tar.gz", "node-v8.16.2-darwin-x64", "359331120e83f0707219398fc543b05eee9476446ecce549c20c4d9c7c103d29"), + "8.16.2-linux_arm64": ("node-v8.16.2-linux-arm64.tar.xz", "node-v8.16.2-linux-arm64", "5afe366affb05136d25e99ec97a7a1ee1b690cc26df43567af0509f36b45e682"), + "8.16.2-linux_amd64": ("node-v8.16.2-linux-x64.tar.xz", "node-v8.16.2-linux-x64", "88617a293f5828cc94ee99c94a43fbea12b989e34fe643fc14885a14748a8da6"), + "8.16.2-windows_amd64": ("node-v8.16.2-win-x64.zip", "node-v8.16.2-win-x64", "98c615221500434155a8a5aff5fe96cd000400f3e76858ca97e6624f1d15eb73"), + # 8.17.0 + "8.17.0-darwin_amd64": ("node-v8.17.0-darwin-x64.tar.gz", "node-v8.17.0-darwin-x64", "3117430fc93e9865e4a1842616cc98767b5d6987fd9d727c8be4068714570e16"), + "8.17.0-linux_arm64": ("node-v8.17.0-linux-arm64.tar.xz", "node-v8.17.0-linux-arm64", "8318d1ee0265d84025ecbea76aaecd732974a6f4ac8492ddd84231cee77ba948"), + "8.17.0-linux_amd64": ("node-v8.17.0-linux-x64.tar.xz", "node-v8.17.0-linux-x64", "b7f6dd77fb173c8c7c30d61d0702eefc236bba74398538aa77bfa2bb47bddce6"), + "8.17.0-windows_amd64": ("node-v8.17.0-win-x64.zip", "node-v8.17.0-win-x64", "e95a63e81b27e78872c0efb9dd5809403014dbf9896035cc17adf51a350f88fa"), + # 9.0.0 + "9.0.0-darwin_amd64": ("node-v9.0.0-darwin-x64.tar.gz", "node-v9.0.0-darwin-x64", "40fe905e492deadbf84c46baba413294e516fa844ed8e68adb4117f8acabe9a9"), + "9.0.0-linux_arm64": ("node-v9.0.0-linux-arm64.tar.xz", "node-v9.0.0-linux-arm64", "0250e13705259dcf736ac4216833c2ade459e3ade94d89af68bd98ded1783cb6"), + "9.0.0-linux_amd64": ("node-v9.0.0-linux-x64.tar.xz", "node-v9.0.0-linux-x64", "8313d2f6d69dbea4cb860803a156f093041cbe352a843c06f9f05cab1f30e9cc"), + "9.0.0-windows_amd64": ("node-v9.0.0-win-x64.zip", "node-v9.0.0-win-x64", "d25901007e7c48da3af162bc1917d5bdd78c7e3b9cb64f16f90c38b59ef7b412"), + # 9.1.0 + "9.1.0-darwin_amd64": ("node-v9.1.0-darwin-x64.tar.gz", "node-v9.1.0-darwin-x64", "8e180de9b3f6a79f09a391c89de54920bbf5375337d3e13c5bfcbce85af711ab"), + "9.1.0-linux_arm64": ("node-v9.1.0-linux-arm64.tar.xz", "node-v9.1.0-linux-arm64", "37d329fa06b22e30243c503b64d9666d56abb6c0ce903251d4b43e7ad0833fb3"), + "9.1.0-linux_amd64": ("node-v9.1.0-linux-x64.tar.xz", "node-v9.1.0-linux-x64", "b796ed115c97acd23211c294129b0a834ff3a6a0f583111443b89d2b24e0d4d9"), + "9.1.0-windows_amd64": ("node-v9.1.0-win-x64.zip", "node-v9.1.0-win-x64", "f2e76f536ff4fedd9884684f0b1979e04d0fd1c2a65d7d1a5a013de885dd07b3"), + # 9.2.0 + "9.2.0-darwin_amd64": ("node-v9.2.0-darwin-x64.tar.gz", "node-v9.2.0-darwin-x64", "42f78982b8614f099bc70819db40074ff7c1c49d4bac71eca5ffe4120452f289"), + "9.2.0-linux_arm64": ("node-v9.2.0-linux-arm64.tar.xz", "node-v9.2.0-linux-arm64", "1b5c44160b7bfc9e5d63697d63c82330ae3e6094ab48449bd958ebe0baef73f0"), + "9.2.0-linux_amd64": ("node-v9.2.0-linux-x64.tar.xz", "node-v9.2.0-linux-x64", "ded9cef0243bbe8ac5a417be0c6471bed6ed82367714ccb23f79a5be0ba2bd5d"), + "9.2.0-windows_amd64": ("node-v9.2.0-win-x64.zip", "node-v9.2.0-win-x64", "5e7feb536547c715155d772f90857239b37897c1a1a664809fd84a7aeae1a724"), + # 9.2.1 + "9.2.1-darwin_amd64": ("node-v9.2.1-darwin-x64.tar.gz", "node-v9.2.1-darwin-x64", "4263f3da0280e2decd3a2ab97672e6f718acdf704664a3f1251e4ea267ccc971"), + "9.2.1-linux_arm64": ("node-v9.2.1-linux-arm64.tar.xz", "node-v9.2.1-linux-arm64", "09d362e2ed5f4af5e5dc2253bb4523d7bcb92135bcc11d9eb89ad8336229b756"), + "9.2.1-linux_amd64": ("node-v9.2.1-linux-x64.tar.xz", "node-v9.2.1-linux-x64", "548d2959939235ca56c98740f64b64058e43d1499d760603b7941b7c37ad10fe"), + "9.2.1-windows_amd64": ("node-v9.2.1-win-x64.zip", "node-v9.2.1-win-x64", "7b48ef7c718fe5748844f93101f9276a88ae1cf3c4c228f85306a6a266471b5b"), + # 9.3.0 + "9.3.0-darwin_amd64": ("node-v9.3.0-darwin-x64.tar.gz", "node-v9.3.0-darwin-x64", "0539601e67e9be6995d4ba4abe565a748e25699060631369f59166d5de43d21a"), + "9.3.0-linux_arm64": ("node-v9.3.0-linux-arm64.tar.xz", "node-v9.3.0-linux-arm64", "11300e878220962adade33238dd6e55928ad6d1362e0daa1f12e272137e68c0b"), + "9.3.0-linux_amd64": ("node-v9.3.0-linux-x64.tar.xz", "node-v9.3.0-linux-x64", "0424dd6fa059fc32e0b73f460cb587b92b13c7b0af56331bbdc53a52e43f24ea"), + "9.3.0-windows_amd64": ("node-v9.3.0-win-x64.zip", "node-v9.3.0-win-x64", "53bceda79c8d5dd8a185221a5ea2fc8f2b24ed7e0c9c91d18f6016b3624ff096"), + # 9.4.0 + "9.4.0-darwin_amd64": ("node-v9.4.0-darwin-x64.tar.gz", "node-v9.4.0-darwin-x64", "fa271c6012d517851603829af2131b92dc7b03d6f167dcd197cb83468a4971e8"), + "9.4.0-linux_arm64": ("node-v9.4.0-linux-arm64.tar.xz", "node-v9.4.0-linux-arm64", "ceed69e91723cb902fcf70e790d34147a91241509257c77a62327871dfad04fa"), + "9.4.0-linux_amd64": ("node-v9.4.0-linux-x64.tar.xz", "node-v9.4.0-linux-x64", "6d331d75a39fc5292dd128ad83f6dd14bbbdcb84ba0dfe793fade833be5de95a"), + "9.4.0-windows_amd64": ("node-v9.4.0-win-x64.zip", "node-v9.4.0-win-x64", "89d49d73eb92483af0133c97e57a5b521c523960c130c76727daa3412af7d5d8"), + # 9.5.0 + "9.5.0-darwin_amd64": ("node-v9.5.0-darwin-x64.tar.gz", "node-v9.5.0-darwin-x64", "bc5c6eb21a90dbcaf90479838416c90524fe6d47e92c928ef57d7e96a54eb5fe"), + "9.5.0-linux_arm64": ("node-v9.5.0-linux-arm64.tar.xz", "node-v9.5.0-linux-arm64", "d6a98a51c032963014f606acc80babb456f3dc4c041534ca565f573a2382b253"), + "9.5.0-linux_amd64": ("node-v9.5.0-linux-x64.tar.xz", "node-v9.5.0-linux-x64", "76dd38bb5a16a610894353228ef020653f81209a2e509d38aee78ace4410599e"), + "9.5.0-windows_amd64": ("node-v9.5.0-win-x64.zip", "node-v9.5.0-win-x64", "2fd1c3865a34827af6b5d799aee68e011a16a637276cbf71e923c8bedd010ee8"), + # 9.6.0 + "9.6.0-darwin_amd64": ("node-v9.6.0-darwin-x64.tar.gz", "node-v9.6.0-darwin-x64", "4f2001075b724791bf652b5432073aaaaec03cb00b17cda054ab0a05126035fe"), + "9.6.0-linux_arm64": ("node-v9.6.0-linux-arm64.tar.xz", "node-v9.6.0-linux-arm64", "eb10815b1d21e8f5111b90c15b19050279b44666d08a12f26906271e9f6b02dd"), + "9.6.0-linux_amd64": ("node-v9.6.0-linux-x64.tar.xz", "node-v9.6.0-linux-x64", "24b8670c819278135b4b8851d880615dee8458fdb5f5390ed0c88c383377f5d3"), + "9.6.0-windows_amd64": ("node-v9.6.0-win-x64.zip", "node-v9.6.0-win-x64", "5f1da1ef6ba776449900c931e7acc3b60e47f3080425bf0e6a1c0c5a07dbd6fd"), + # 9.6.1 + "9.6.1-darwin_amd64": ("node-v9.6.1-darwin-x64.tar.gz", "node-v9.6.1-darwin-x64", "de486bc479817df2df1f91468e85e5da228a19101422c0c9a27153c1d0013c6d"), + "9.6.1-linux_arm64": ("node-v9.6.1-linux-arm64.tar.xz", "node-v9.6.1-linux-arm64", "6246c85acab2dd92463fa1c456db31a24cd7b50b3fa556c4976c5a91473b8c8f"), + "9.6.1-linux_amd64": ("node-v9.6.1-linux-x64.tar.xz", "node-v9.6.1-linux-x64", "d38f1707faccc54fae3cb201c25b02c4a3474d2c409c64f2a1d08925b238f8ad"), + "9.6.1-windows_amd64": ("node-v9.6.1-win-x64.zip", "node-v9.6.1-win-x64", "c8176d317945ce6221473d70999ec7e725f1c9a7477e991bd7c729026c46dffb"), + # 9.7.0 + "9.7.0-darwin_amd64": ("node-v9.7.0-darwin-x64.tar.gz", "node-v9.7.0-darwin-x64", "9730cf3c4c5e228d4855c3362b63dbe59041202d89ae30d7f5ca42f60f742c5d"), + "9.7.0-linux_arm64": ("node-v9.7.0-linux-arm64.tar.xz", "node-v9.7.0-linux-arm64", "18bec2bec5e2496f33b4d9d7f3bea7411cdb5d108f390b5c1949ddeda0e61125"), + "9.7.0-linux_amd64": ("node-v9.7.0-linux-x64.tar.xz", "node-v9.7.0-linux-x64", "5c7549ceeebdc7ac5acdcae5fffbeb9585e3b9e2003e70e116d9f19c768f73d1"), + "9.7.0-windows_amd64": ("node-v9.7.0-win-x64.zip", "node-v9.7.0-win-x64", "a17796c9c888e88a9a086dc1a22cdd872d8e948fbf1e988a8132fef716990530"), + # 9.7.1 + "9.7.1-darwin_amd64": ("node-v9.7.1-darwin-x64.tar.gz", "node-v9.7.1-darwin-x64", "9ee0fa891787865b1eccc63ef56134e7de8bbf67b660a1dde9e309305a1dc3b0"), + "9.7.1-linux_arm64": ("node-v9.7.1-linux-arm64.tar.xz", "node-v9.7.1-linux-arm64", "d9143c23f7aa171449229abd456c8a9e07dc1033a1e791132b3387d439e2475d"), + "9.7.1-linux_amd64": ("node-v9.7.1-linux-x64.tar.xz", "node-v9.7.1-linux-x64", "33b3ecd0a1de891a4a2f3586f1c6498c95c1ecc15864a6e3f4f7826792850d99"), + "9.7.1-windows_amd64": ("node-v9.7.1-win-x64.zip", "node-v9.7.1-win-x64", "8590ff193e645d7f719e25d9519633376c72cfa1b36192031705e0065b7d69b2"), + # 9.8.0 + "9.8.0-darwin_amd64": ("node-v9.8.0-darwin-x64.tar.gz", "node-v9.8.0-darwin-x64", "c95326d6d8d01e5d4fbf0ca1b1e4fc0d800d00516f38532cc887e17c78f2af07"), + "9.8.0-linux_arm64": ("node-v9.8.0-linux-arm64.tar.xz", "node-v9.8.0-linux-arm64", "f3537d06f010e77739be073003fca0b477efec8a72d503dc5a1d942a19973b07"), + "9.8.0-linux_amd64": ("node-v9.8.0-linux-x64.tar.xz", "node-v9.8.0-linux-x64", "9f631739b0a9b96b8760c42869e88592db9c3fda2425202bd8b2d09e6371133a"), + "9.8.0-windows_amd64": ("node-v9.8.0-win-x64.zip", "node-v9.8.0-win-x64", "dd3971c126907a033f2bc93fdd29327af3ff5b9d151b3b90eb5db1832fe6df9e"), + # 9.9.0 + "9.9.0-darwin_amd64": ("node-v9.9.0-darwin-x64.tar.gz", "node-v9.9.0-darwin-x64", "15e71817fe172119d6f9e0166ab869f12c67bdb7371d27a78b0621c408239692"), + "9.9.0-linux_arm64": ("node-v9.9.0-linux-arm64.tar.xz", "node-v9.9.0-linux-arm64", "06feb32656c91c3963270de18d4a7befe52d2d8c0fd78fbbb7792a881ffeec7a"), + "9.9.0-linux_amd64": ("node-v9.9.0-linux-x64.tar.xz", "node-v9.9.0-linux-x64", "457151b4e6f27222232742ce44de1df73768a251309dddbfca2b385052ee977f"), + "9.9.0-windows_amd64": ("node-v9.9.0-win-x64.zip", "node-v9.9.0-win-x64", "5186747c7cab6ff153e725c42446727e460d54e6c62353d5dc550046f5c05653"), + # 9.10.0 + "9.10.0-darwin_amd64": ("node-v9.10.0-darwin-x64.tar.gz", "node-v9.10.0-darwin-x64", "c4b98cc2f3c00b770f24549de112902b56d57be7963a1047cd116b357bc61569"), + "9.10.0-linux_arm64": ("node-v9.10.0-linux-arm64.tar.xz", "node-v9.10.0-linux-arm64", "ba1d682aa1d5a12eeb39e7f51e4c67c6122b24482869ca2547c6f094eae90658"), + "9.10.0-linux_amd64": ("node-v9.10.0-linux-x64.tar.xz", "node-v9.10.0-linux-x64", "b9bfffc03ef0e2c97d463619911552c7f5b1b8699de07bb913990a8b33800cb9"), + "9.10.0-windows_amd64": ("node-v9.10.0-win-x64.zip", "node-v9.10.0-win-x64", "3f159de87fd987e7bf30bbffce722e2e5133c44fc847883053359e9b08d6fa88"), + # 9.10.1 + "9.10.1-darwin_amd64": ("node-v9.10.1-darwin-x64.tar.gz", "node-v9.10.1-darwin-x64", "ae2d9dfdd3fdb6a6fe588e5479a768ee502968f6544ac8ad6133cb2e05726793"), + "9.10.1-linux_arm64": ("node-v9.10.1-linux-arm64.tar.xz", "node-v9.10.1-linux-arm64", "9b084b30e48a3a145fcc6cb282a1b46145b703c13a5eaee40afc7f9d82ad697b"), + "9.10.1-linux_amd64": ("node-v9.10.1-linux-x64.tar.xz", "node-v9.10.1-linux-x64", "fc810056be2a0665d0f67b42d25e1b8442bd885d4893b3256a7cfe676bd973de"), + "9.10.1-windows_amd64": ("node-v9.10.1-win-x64.zip", "node-v9.10.1-win-x64", "43bf882dec1550e00a039f77190a3e2a778354577e542563be4b5c205de17df1"), + # 9.11.0 + "9.11.0-darwin_amd64": ("node-v9.11.0-darwin-x64.tar.gz", "node-v9.11.0-darwin-x64", "e562cfc01a4d8e62c1d86f59cef4f00439b4ad279c97f95f76a39f4b3530b8e5"), + "9.11.0-linux_arm64": ("node-v9.11.0-linux-arm64.tar.xz", "node-v9.11.0-linux-arm64", "8df1dd7a1ec298900cf699a7ee8e5f0f478075d0e4c4fd3fb6e3a4ad3527545c"), + "9.11.0-linux_amd64": ("node-v9.11.0-linux-x64.tar.xz", "node-v9.11.0-linux-x64", "a4349420b74804b3404a4eea27341297968f61998b01f6504dbbad603700e944"), + "9.11.0-windows_amd64": ("node-v9.11.0-win-x64.zip", "node-v9.11.0-win-x64", "6e7f586ece923fd71e36d5db80b6a6d731a2b156464058cb2304f6c0192637cb"), # 9.11.1 "9.11.1-darwin_amd64": ("node-v9.11.1-darwin-x64.tar.gz", "node-v9.11.1-darwin-x64", "7b1fb394aa41a62b477e36df16644bd383cc9084808511f6cd318b835a06aac6"), + "9.11.1-linux_arm64": ("node-v9.11.1-linux-arm64.tar.xz", "node-v9.11.1-linux-arm64", "dba2de106fbde2013a204ca9fafdfe67c0426b4e63d186f888e59432ad2dbb03"), "9.11.1-linux_amd64": ("node-v9.11.1-linux-x64.tar.xz", "node-v9.11.1-linux-x64", "4d27a95d5c2f1c8ef99118794c9c4903e63963418d3e16ca7576760cff39879b"), "9.11.1-windows_amd64": ("node-v9.11.1-win-x64.zip", "node-v9.11.1-win-x64", "0a3566d57ccb7fed95d18fc6c3bc1552a1b1e4753f9bc6c5d45e04f325e1ee53"), + # 9.11.2 + "9.11.2-darwin_amd64": ("node-v9.11.2-darwin-x64.tar.gz", "node-v9.11.2-darwin-x64", "340993096108d1dc0e0b598560d87ec645fc94b0fc83a423c36343f2da45f4b8"), + "9.11.2-linux_arm64": ("node-v9.11.2-linux-arm64.tar.xz", "node-v9.11.2-linux-arm64", "9a713a6f4473425b83bf67e13e4b3c9f1f683c996b913f1f6854d208996367b6"), + "9.11.2-linux_amd64": ("node-v9.11.2-linux-x64.tar.xz", "node-v9.11.2-linux-x64", "a2e7fe4ee3c4e3f31e00dff241c92c2ed779a9f36735578603d2be966f938a4b"), + "9.11.2-windows_amd64": ("node-v9.11.2-win-x64.zip", "node-v9.11.2-win-x64", "051db8f4d3c0503e3082173f16b25e2362de8f9a5e509c403992b2069d826c25"), + # 10.0.0 + "10.0.0-darwin_amd64": ("node-v10.0.0-darwin-x64.tar.gz", "node-v10.0.0-darwin-x64", "37447fdb5f5cbcf1307ca1661ed67e6e911e0e988c0cb6d15f92eebb211dce88"), + "10.0.0-linux_arm64": ("node-v10.0.0-linux-arm64.tar.xz", "node-v10.0.0-linux-arm64", "18f626a967d72294d969bdf000ca80ef483a8bb75482a2c4d14f5e0141626611"), + "10.0.0-linux_amd64": ("node-v10.0.0-linux-x64.tar.xz", "node-v10.0.0-linux-x64", "d57c391daef40e706ca71abeaf9d53271c9d0fdb9cd18a80f6296b04dbaf2d5a"), + "10.0.0-windows_amd64": ("node-v10.0.0-win-x64.zip", "node-v10.0.0-win-x64", "a95d88e2c28cbcbadb1fa431ec0b686f196dda00d4a25b0829450dc8f5214ec3"), + # 10.1.0 + "10.1.0-darwin_amd64": ("node-v10.1.0-darwin-x64.tar.gz", "node-v10.1.0-darwin-x64", "383ef526e27b92113f8dc0dad406b771f6ecaf9e3fddd4f5357590a3cf543d7b"), + "10.1.0-linux_arm64": ("node-v10.1.0-linux-arm64.tar.xz", "node-v10.1.0-linux-arm64", "01e252589cf1ce61d2aaa316895001eb24c90a48b04a0e4896de252d2840ffe9"), + "10.1.0-linux_amd64": ("node-v10.1.0-linux-x64.tar.xz", "node-v10.1.0-linux-x64", "cb5860c0d3249330d882fb8c6619c082cf3cda177536d4ed979388dde0034f22"), + "10.1.0-windows_amd64": ("node-v10.1.0-win-x64.zip", "node-v10.1.0-win-x64", "8448bbd50731e98a4ed8bb4f3f3964170ff3a26418e9bcb3caf770faa9fb06d7"), + # 10.2.0 + "10.2.0-darwin_amd64": ("node-v10.2.0-darwin-x64.tar.gz", "node-v10.2.0-darwin-x64", "35fcc482d07218119ce5fde62620994324f03f8c4426dd680886c6844b62232a"), + "10.2.0-linux_arm64": ("node-v10.2.0-linux-arm64.tar.xz", "node-v10.2.0-linux-arm64", "8f970be59a6a11f511a04ae1bd303746f0c5409498e062fb1d263d3c3c1093bd"), + "10.2.0-linux_amd64": ("node-v10.2.0-linux-x64.tar.xz", "node-v10.2.0-linux-x64", "a6ef9adc824db795b36f81ad0856adc5c878395c4ce2af20f5ba7b76a1ca9982"), + "10.2.0-windows_amd64": ("node-v10.2.0-win-x64.zip", "node-v10.2.0-win-x64", "7d7144d57b1b910d10f51d5445ae4306f10d3d9f45ca08b49e8777472993db51"), + # 10.2.1 + "10.2.1-darwin_amd64": ("node-v10.2.1-darwin-x64.tar.gz", "node-v10.2.1-darwin-x64", "6ffa149f67e8bd68d291d62591b6573146a65682affd99eefe2835a9c048d3ef"), + "10.2.1-linux_arm64": ("node-v10.2.1-linux-arm64.tar.xz", "node-v10.2.1-linux-arm64", "6899cab91fd01af6b73183d23693120ff0de547601d01822b53647d0f5d934ee"), + "10.2.1-linux_amd64": ("node-v10.2.1-linux-x64.tar.xz", "node-v10.2.1-linux-x64", "59ffaba5f54ea6a62ada1013a0cc1741c6e6fa790ab9ab2302a98932e7fb85d5"), + "10.2.1-windows_amd64": ("node-v10.2.1-win-x64.zip", "node-v10.2.1-win-x64", "ebe78920d72b7a226a345653f3f718f99dc531add35157d37d229050f3685705"), # 10.3.0 "10.3.0-darwin_amd64": ("node-v10.3.0-darwin-x64.tar.gz", "node-v10.3.0-darwin-x64", "0bb5b7e3fe8cccda2abda958d1eb0408f1518a8b0cb58b75ade5d507cd5d6053"), + "10.3.0-linux_arm64": ("node-v10.3.0-linux-arm64.tar.xz", "node-v10.3.0-linux-arm64", "6811b7b9807135902990508143605c0c758d07f7726092ed1b2e27cc60111bd0"), "10.3.0-linux_amd64": ("node-v10.3.0-linux-x64.tar.xz", "node-v10.3.0-linux-x64", "eb3c3e2585494699716ad3197c8eedf4003d3f110829b30c5a0dc34414c47423"), "10.3.0-windows_amd64": ("node-v10.3.0-win-x64.zip", "node-v10.3.0-win-x64", "65d586afb087406a2800d8e51f664c88b26d510f077b85a3b177a1bb79f73677"), + # 10.4.0 + "10.4.0-darwin_amd64": ("node-v10.4.0-darwin-x64.tar.gz", "node-v10.4.0-darwin-x64", "82b27983c990a6860e8d729e0b15acf9643ffca0eff282a926268849dfd2c3d2"), + "10.4.0-linux_arm64": ("node-v10.4.0-linux-arm64.tar.xz", "node-v10.4.0-linux-arm64", "18d01e0937cdd05386f59f792613aac7b6614a37312ede0c299bd589584976e9"), + "10.4.0-linux_amd64": ("node-v10.4.0-linux-x64.tar.xz", "node-v10.4.0-linux-x64", "ce2232578408f7d6bdc7d8bbb49d3416225fe68c52540ac23f4a6e0294d947f6"), + "10.4.0-windows_amd64": ("node-v10.4.0-win-x64.zip", "node-v10.4.0-win-x64", "315fc4099902a71b634fee15e4e160a0780703c59a66e7e4542045f6f2b91451"), + # 10.4.1 + "10.4.1-darwin_amd64": ("node-v10.4.1-darwin-x64.tar.gz", "node-v10.4.1-darwin-x64", "c232241c97e1f4659186205d50b44132e62b61cdc517f1fb86905a21d03e9189"), + "10.4.1-linux_arm64": ("node-v10.4.1-linux-arm64.tar.xz", "node-v10.4.1-linux-arm64", "c00b75a28eb69e4238c9d560f50da3652395ba7bfa6e325d5a2b0cd0926070f7"), + "10.4.1-linux_amd64": ("node-v10.4.1-linux-x64.tar.xz", "node-v10.4.1-linux-x64", "6196daea2b291cdb865b3597e6b819b13068cb2c9dbf27cb150256c557a81082"), + "10.4.1-windows_amd64": ("node-v10.4.1-win-x64.zip", "node-v10.4.1-win-x64", "70e0b9f0036f878884fdfc585c1001a439508d1d4e6448c4aced60274a2dc191"), + # 10.5.0 + "10.5.0-darwin_amd64": ("node-v10.5.0-darwin-x64.tar.gz", "node-v10.5.0-darwin-x64", "a85bda6ab91da8595e71736944cbd77c61afe05092217defd0fb74d9f77109f0"), + "10.5.0-linux_arm64": ("node-v10.5.0-linux-arm64.tar.xz", "node-v10.5.0-linux-arm64", "28e6baa2a4ac5b0f0f5adf85489574038d0a4ca48efe76a4e5831b6b222652ba"), + "10.5.0-linux_amd64": ("node-v10.5.0-linux-x64.tar.xz", "node-v10.5.0-linux-x64", "8b12be967f5962a8173dca235e1a6f642ee29dcf5fc27697004af898ffeca187"), + "10.5.0-windows_amd64": ("node-v10.5.0-win-x64.zip", "node-v10.5.0-win-x64", "ce2b1f9976de64bcc0a5ce877edee0d29c4db1ebab5a7fd713afffd661e99e08"), + # 10.6.0 + "10.6.0-darwin_amd64": ("node-v10.6.0-darwin-x64.tar.gz", "node-v10.6.0-darwin-x64", "537efef0c6fd998502fa10baf82ee21edf513256cc73575991354e19442d0b69"), + "10.6.0-linux_arm64": ("node-v10.6.0-linux-arm64.tar.xz", "node-v10.6.0-linux-arm64", "be37aade1c085093e276b5822a05233a1057bcafe77f5b9526dbdf622330c4bb"), + "10.6.0-linux_amd64": ("node-v10.6.0-linux-x64.tar.xz", "node-v10.6.0-linux-x64", "cfd47380729f2451169b8900b3bd65e4b9db669d1d540613758cd2ededf7b5e6"), + "10.6.0-windows_amd64": ("node-v10.6.0-win-x64.zip", "node-v10.6.0-win-x64", "0b58e0414d76e48432588910ea682f002ba69d7be88deb3355ceffb2fe472f6d"), + # 10.7.0 + "10.7.0-darwin_amd64": ("node-v10.7.0-darwin-x64.tar.gz", "node-v10.7.0-darwin-x64", "913473055605c8ae92f46923e6ac400133895aafe7766574fd46899bc6b0c5a4"), + "10.7.0-linux_arm64": ("node-v10.7.0-linux-arm64.tar.xz", "node-v10.7.0-linux-arm64", "c23856b3123f9e2cfae3f8b0668019f83e9450ee78dede02a8d43031255b7ba0"), + "10.7.0-linux_amd64": ("node-v10.7.0-linux-x64.tar.xz", "node-v10.7.0-linux-x64", "ad1d44cbe64ef44db5d8d42690a76dd186d6a6f71a3c3d38449757fe73135329"), + "10.7.0-windows_amd64": ("node-v10.7.0-win-x64.zip", "node-v10.7.0-win-x64", "a0914d4c1fb82f51a03a4f57c66c9ce6a65ccd4f3237706042c55799843f4b14"), + # 10.8.0 + "10.8.0-darwin_amd64": ("node-v10.8.0-darwin-x64.tar.gz", "node-v10.8.0-darwin-x64", "b800d8b55c234b1f7d972e9464b00328a1caea5f86f94fdb5fc88ebbed7852b7"), + "10.8.0-linux_arm64": ("node-v10.8.0-linux-arm64.tar.xz", "node-v10.8.0-linux-arm64", "0333da24d1fe54abac26b0a06437d3336c0fb4816b280507a9851ab3742ef2e4"), + "10.8.0-linux_amd64": ("node-v10.8.0-linux-x64.tar.xz", "node-v10.8.0-linux-x64", "497f3b243d7374ee0fe9ab200b175868b172c3a22282cedc6d7fb0cad82471f0"), + "10.8.0-windows_amd64": ("node-v10.8.0-win-x64.zip", "node-v10.8.0-win-x64", "f98575fb551d78691a6f74ca4f9c254bbd9fb62135e9ec0ab7ec8c40a03648b0"), # 10.9.0 "10.9.0-darwin_amd64": ("node-v10.9.0-darwin-x64.tar.gz", "node-v10.9.0-darwin-x64", "3c4fe75dacfcc495a432a7ba2dec9045cff359af2a5d7d0429c84a424ef686fc"), + "10.9.0-linux_arm64": ("node-v10.9.0-linux-arm64.tar.xz", "node-v10.9.0-linux-arm64", "3d6aa717d98bbf901c5325a02a81048eb47212bdc44963ef8d59c6e52e987b7c"), "10.9.0-linux_amd64": ("node-v10.9.0-linux-x64.tar.xz", "node-v10.9.0-linux-x64", "c5acb8b7055ee0b6ac653dc4e458c5db45348cecc564b388f4ed1def84a329ff"), "10.9.0-windows_amd64": ("node-v10.9.0-win-x64.zip", "node-v10.9.0-win-x64", "6a75cdbb69d62ed242d6cbf0238a470bcbf628567ee339d4d098a5efcda2401e"), # 10.10.0 "10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e"), + "10.10.0-linux_arm64": ("node-v10.10.0-linux-arm64.tar.xz", "node-v10.10.0-linux-arm64", "7d57961d18ea70b4e99906d87f9de1a2defc45a36fcd8cd84295e9ae5c4281da"), "10.10.0-linux_amd64": ("node-v10.10.0-linux-x64.tar.xz", "node-v10.10.0-linux-x64", "686d2c7b7698097e67bcd68edc3d6b5d28d81f62436c7cf9e7779d134ec262a9"), "10.10.0-windows_amd64": ("node-v10.10.0-win-x64.zip", "node-v10.10.0-win-x64", "70c46e6451798be9d052b700ce5dadccb75cf917f6bf0d6ed54344c856830cfb"), + # 10.11.0 + "10.11.0-darwin_amd64": ("node-v10.11.0-darwin-x64.tar.gz", "node-v10.11.0-darwin-x64", "32ad850a0e5cfdefc32d4267707abad05bd5c9eabb047e8ed9bf97faeffc52b6"), + "10.11.0-linux_arm64": ("node-v10.11.0-linux-arm64.tar.xz", "node-v10.11.0-linux-arm64", "289302470520fd63e2a92a878869061dda557fe1aabfea2bd5ff88f7af76d98d"), + "10.11.0-linux_amd64": ("node-v10.11.0-linux-x64.tar.xz", "node-v10.11.0-linux-x64", "c2eab149e7f0712a6a3eb672a76d657b049a3b3ae0c2edc2e0571df5049fe82c"), + "10.11.0-windows_amd64": ("node-v10.11.0-win-x64.zip", "node-v10.11.0-win-x64", "78b2a7a4305aa108b9a82ac7586d7200ab51428c2b882d1318fb44ca300a8609"), + # 10.12.0 + "10.12.0-darwin_amd64": ("node-v10.12.0-darwin-x64.tar.gz", "node-v10.12.0-darwin-x64", "f275c901b9aeaacea2bf22648329c2e9ade5e1ff63a446b83446d5d4e19464cc"), + "10.12.0-linux_arm64": ("node-v10.12.0-linux-arm64.tar.xz", "node-v10.12.0-linux-arm64", "b327deca4e380559c8c1fbacb9e668b49127ea998de4c8fe83912838cf786786"), + "10.12.0-linux_amd64": ("node-v10.12.0-linux-x64.tar.xz", "node-v10.12.0-linux-x64", "4eba2e9a6db95745b769915d58e57df6ca6724ec1f023f76556fce30ceca2367"), + "10.12.0-windows_amd64": ("node-v10.12.0-win-x64.zip", "node-v10.12.0-win-x64", "44c938cf1409562d25d23b7c6bce110b53cd2a73774bed573b2979f0d88f51f8"), # 10.13.0 "10.13.0-darwin_amd64": ("node-v10.13.0-darwin-x64.tar.gz", "node-v10.13.0-darwin-x64", "815a5d18516934a3963ace9f0574f7d41f0c0ce9186a19be3d89e039e57598c5"), + "10.13.0-linux_arm64": ("node-v10.13.0-linux-arm64.tar.xz", "node-v10.13.0-linux-arm64", "1537ebe64dc34a2a9b8ab6254213079789e9d59ed0ed26987afb1da37b6a8f87"), "10.13.0-linux_amd64": ("node-v10.13.0-linux-x64.tar.xz", "node-v10.13.0-linux-x64", "0dc6dba645550b66f8f00541a428c29da7c3cde32fb7eda2eb626a9db3bbf08d"), "10.13.0-windows_amd64": ("node-v10.13.0-win-x64.zip", "node-v10.13.0-win-x64", "eb09c9e9677f1919ec1ca78623c09b2a718ec5388b72b7662d5c41e5f628a52c"), + # 10.14.0 + "10.14.0-darwin_amd64": ("node-v10.14.0-darwin-x64.tar.gz", "node-v10.14.0-darwin-x64", "dd044aa0ddeb5e32fefa80a13b33bafe3f7e0536e15fe93c1e81b052c2f1965c"), + "10.14.0-linux_arm64": ("node-v10.14.0-linux-arm64.tar.xz", "node-v10.14.0-linux-arm64", "4d80efe675c40d6d3af697e17e33cad8af1caf50655276ca99d0c4ca8e2f2cf2"), + "10.14.0-linux_amd64": ("node-v10.14.0-linux-x64.tar.xz", "node-v10.14.0-linux-x64", "5f576f9893e0335f0c1b071a42fdf8b3e302577ad6ea38237aaef08ad0ca898e"), + "10.14.0-windows_amd64": ("node-v10.14.0-win-x64.zip", "node-v10.14.0-win-x64", "a3acbbdbbdb6ff6d5ae6e6f5ccea55aef83cfa54f52c080538edc3ac6326797b"), + # 10.14.1 + "10.14.1-darwin_amd64": ("node-v10.14.1-darwin-x64.tar.gz", "node-v10.14.1-darwin-x64", "91ebe7d6da8a40c72618ac9d0b0a8e224ae01febd3f5595b43b1a58190dcacb1"), + "10.14.1-linux_arm64": ("node-v10.14.1-linux-arm64.tar.xz", "node-v10.14.1-linux-arm64", "c1ca91356b007cc7624c7a9e00f3b7bed8dd10aba959be5f55e4ff13da334828"), + "10.14.1-linux_amd64": ("node-v10.14.1-linux-x64.tar.xz", "node-v10.14.1-linux-x64", "b65e735cdf61fb80f114c498c8955efe8e096e4b3e173281d68aa9d2c05b0f97"), + "10.14.1-windows_amd64": ("node-v10.14.1-win-x64.zip", "node-v10.14.1-win-x64", "7d51aa233ad290eb916a4c3134815204eb34ecb0a001dcecc5ea57333030f303"), + # 10.14.2 + "10.14.2-darwin_amd64": ("node-v10.14.2-darwin-x64.tar.gz", "node-v10.14.2-darwin-x64", "5306da5db576d9c984167b4693600a2e3074cc5a701961279837753fa2139baa"), + "10.14.2-linux_arm64": ("node-v10.14.2-linux-arm64.tar.xz", "node-v10.14.2-linux-arm64", "8493b30c99d697b24fbaa5bfb3b43108ab3e334ab674188b7b7982fef903aa04"), + "10.14.2-linux_amd64": ("node-v10.14.2-linux-x64.tar.xz", "node-v10.14.2-linux-x64", "e43de13bf7bee440a106a844c1bc3a2adb8829fd58b857702c8f1838fdd02a2a"), + "10.14.2-windows_amd64": ("node-v10.14.2-win-x64.zip", "node-v10.14.2-win-x64", "45841fe5ffe87378c748dcb9799507f6192c34117409b2c6c18480d112a337de"), + # 10.15.0 + "10.15.0-darwin_amd64": ("node-v10.15.0-darwin-x64.tar.gz", "node-v10.15.0-darwin-x64", "353402461c898c569658d0a963790476f4d9828cc6c9286d81617ee8afcba4e8"), + "10.15.0-linux_arm64": ("node-v10.15.0-linux-arm64.tar.xz", "node-v10.15.0-linux-arm64", "77aa4a02c5471b6eb7ba935cbc6829889a27115353cff7226a208c08b654e972"), + "10.15.0-linux_amd64": ("node-v10.15.0-linux-x64.tar.xz", "node-v10.15.0-linux-x64", "4ee8503c1133797777880ebf75dcf6ae3f9b894c66fd2d5da507e407064c13b5"), + "10.15.0-windows_amd64": ("node-v10.15.0-win-x64.zip", "node-v10.15.0-win-x64", "c1dbc9372ad789cd21727cb5f63b4a44ed3eae216763959cff8e68e68c6fcfe1"), + # 10.15.1 + "10.15.1-darwin_amd64": ("node-v10.15.1-darwin-x64.tar.gz", "node-v10.15.1-darwin-x64", "327dcef4b61dead1ae04d2743d3390a2b7e6cc6c389c62cfcfeb0486c5a9f181"), + "10.15.1-linux_arm64": ("node-v10.15.1-linux-arm64.tar.xz", "node-v10.15.1-linux-arm64", "0fb6d24972fd991f476a942b1b21aca5059f93b9302318c5883120445ee6cd54"), + "10.15.1-linux_amd64": ("node-v10.15.1-linux-x64.tar.xz", "node-v10.15.1-linux-x64", "77db68544c7812e925b82ccc41cd4669fdeb191cea8e20053e3f0e86889c4fce"), + "10.15.1-windows_amd64": ("node-v10.15.1-win-x64.zip", "node-v10.15.1-win-x64", "bb5bdc9363e4050c94b3f82888141b81630230f86e520abb7dde49081f1292b9"), + # 10.15.2 + "10.15.2-darwin_amd64": ("node-v10.15.2-darwin-x64.tar.gz", "node-v10.15.2-darwin-x64", "8bbb6c15a0572f493d33ef044d06ccd0ff7ead8daa67f9a32df3e863277568e8"), + "10.15.2-linux_arm64": ("node-v10.15.2-linux-arm64.tar.xz", "node-v10.15.2-linux-arm64", "2978e82d85654505d732b40dfa58f21276d99712d5d001101eaf87100d350139"), + "10.15.2-linux_amd64": ("node-v10.15.2-linux-x64.tar.xz", "node-v10.15.2-linux-x64", "c10eece562cfeef1627f0d2bde7dc0be810948f6bf9a932e30a8c3b425652015"), + "10.15.2-windows_amd64": ("node-v10.15.2-win-x64.zip", "node-v10.15.2-win-x64", "d97cf4788ccea6deef037ce27c91cc1a814644b878311b71811ab04d0bb8c47f"), + # 10.15.3 + "10.15.3-darwin_amd64": ("node-v10.15.3-darwin-x64.tar.gz", "node-v10.15.3-darwin-x64", "7a5eaa1f69614375a695ccb62017248e5dcc15b0b8edffa7db5b52997cf992ba"), + "10.15.3-linux_arm64": ("node-v10.15.3-linux-arm64.tar.xz", "node-v10.15.3-linux-arm64", "3d7abbf64bffb07c55168ca0f1c17be12b0d93affe9b6cadd39724649215fab9"), + "10.15.3-linux_amd64": ("node-v10.15.3-linux-x64.tar.xz", "node-v10.15.3-linux-x64", "faddbe418064baf2226c2fcbd038c3ef4ae6f936eb952a1138c7ff8cfe862438"), + "10.15.3-windows_amd64": ("node-v10.15.3-win-x64.zip", "node-v10.15.3-win-x64", "93c881fdc0455a932dd5b506a7a03df27d9fe36155c1d3f351ebfa4e20bf1c0d"), # 10.16.0 "10.16.0-darwin_amd64": ("node-v10.16.0-darwin-x64.tar.gz", "node-v10.16.0-darwin-x64", "6c009df1b724026d84ae9a838c5b382662e30f6c5563a0995532f2bece39fa9c"), + "10.16.0-linux_arm64": ("node-v10.16.0-linux-arm64.tar.xz", "node-v10.16.0-linux-arm64", "ae2e74ab2f5dbff96bf0b7d8457004bf3538233916f8834740bbe2d5a35442e5"), "10.16.0-linux_amd64": ("node-v10.16.0-linux-x64.tar.xz", "node-v10.16.0-linux-x64", "1827f5b99084740234de0c506f4dd2202a696ed60f76059696747c34339b9d48"), "10.16.0-windows_amd64": ("node-v10.16.0-win-x64.zip", "node-v10.16.0-win-x64", "aa22cb357f0fb54ccbc06b19b60e37eefea5d7dd9940912675d3ed988bf9a059"), + # 10.16.1 + "10.16.1-darwin_amd64": ("node-v10.16.1-darwin-x64.tar.gz", "node-v10.16.1-darwin-x64", "328e61fdacfe2f6f1a049d57e248b3eafc0345747831323a14fe1edf98d9b3bb"), + "10.16.1-linux_arm64": ("node-v10.16.1-linux-arm64.tar.xz", "node-v10.16.1-linux-arm64", "c46ba1a8e9b9c0490ae81f8b2b13d332ed6f5c86d172fa817f749042ab329b93"), + "10.16.1-linux_amd64": ("node-v10.16.1-linux-x64.tar.xz", "node-v10.16.1-linux-x64", "127d9b2f485523805208f867fc513842570b29b4d6831773eeb6dd403a22ba9d"), + "10.16.1-windows_amd64": ("node-v10.16.1-win-x64.zip", "node-v10.16.1-win-x64", "1ff8b26670e1b935b51f4b795728f29845c31a3c38b3220b4fe71fb139bc5623"), + # 10.16.2 + "10.16.2-darwin_amd64": ("node-v10.16.2-darwin-x64.tar.gz", "node-v10.16.2-darwin-x64", "21ee8bdb04909f553e97af7c6e41009e15d06b886dd3e2ca8a92ce3e0a148a09"), + "10.16.2-linux_arm64": ("node-v10.16.2-linux-arm64.tar.xz", "node-v10.16.2-linux-arm64", "5fb2b7d3c2b6b40e237cdc172eabfac2e485ee309ac2bcfbff413de1ed79a59e"), + "10.16.2-linux_amd64": ("node-v10.16.2-linux-x64.tar.xz", "node-v10.16.2-linux-x64", "406718dc2f3164b3d1981c36b68b70ea448fbbac29cefbe23ff286b3cd55f264"), + "10.16.2-windows_amd64": ("node-v10.16.2-win-x64.zip", "node-v10.16.2-win-x64", "01654dc79d82e9f3c89d01c8cf1cdce68d3a9118dbe968ee86a3ffd6ee153567"), + # 10.16.3 + "10.16.3-darwin_amd64": ("node-v10.16.3-darwin-x64.tar.gz", "node-v10.16.3-darwin-x64", "6febc571e1543c2845fa919c6d06b36a24e4e142c91aedbe28b6ff7d296119e4"), + "10.16.3-linux_arm64": ("node-v10.16.3-linux-arm64.tar.xz", "node-v10.16.3-linux-arm64", "8ee77bad022bd460bf2867a97bf56ce7ddc4aa2ace067e45995fb1721a958428"), + "10.16.3-linux_amd64": ("node-v10.16.3-linux-x64.tar.xz", "node-v10.16.3-linux-x64", "d2271fd8cf997fa7447d638dfa92749ff18ca4b0d796bf89f2a82bf7800d5506"), + "10.16.3-windows_amd64": ("node-v10.16.3-win-x64.zip", "node-v10.16.3-win-x64", "19aa47de7c5950d7bd71a1e878013b98d93871cc311d7185f5472e6d3f633146"), + # 10.17.0 + "10.17.0-darwin_amd64": ("node-v10.17.0-darwin-x64.tar.gz", "node-v10.17.0-darwin-x64", "9b96140ad74b217f216c83ddf50d1f70a4296576f6edbbbfb65d0f478015d9df"), + "10.17.0-linux_arm64": ("node-v10.17.0-linux-arm64.tar.xz", "node-v10.17.0-linux-arm64", "3ab8ee2b5c9aa4d060c68667ddef70cc2960e12bcfe4a0f2de7ebc0f008bf13d"), + "10.17.0-linux_amd64": ("node-v10.17.0-linux-x64.tar.xz", "node-v10.17.0-linux-x64", "2b49cd296f969ef0ffb7922719ffa6542bedb89d6c959a47c023d11ce222f5d6"), + "10.17.0-windows_amd64": ("node-v10.17.0-win-x64.zip", "node-v10.17.0-win-x64", "e84a1f3685219811bb4662eb3e3b55abd0c764c24cd2b224ba31b3f9f162baf6"), + # 10.18.0 + "10.18.0-darwin_amd64": ("node-v10.18.0-darwin-x64.tar.gz", "node-v10.18.0-darwin-x64", "a7af53e3363e8ab654b97387bc7cf352dddb324562404c1d35fe10cba3f27e0f"), + "10.18.0-linux_arm64": ("node-v10.18.0-linux-arm64.tar.xz", "node-v10.18.0-linux-arm64", "b2b34dd43ea3979890663afa270e09e09c219f046e39e8e439eeda2821cc9643"), + "10.18.0-linux_amd64": ("node-v10.18.0-linux-x64.tar.xz", "node-v10.18.0-linux-x64", "eac160acfc2c5b6fca021baa9943341fea50859f19c7ccbd56669b1fe04e691e"), + "10.18.0-windows_amd64": ("node-v10.18.0-win-x64.zip", "node-v10.18.0-win-x64", "56afcc9c191dfc99017725be92ac1331e23afb1930913446eb91852cb02a8687"), + # 10.18.1 + "10.18.1-darwin_amd64": ("node-v10.18.1-darwin-x64.tar.gz", "node-v10.18.1-darwin-x64", "2b2d3379420e626eee393cabf1c90bc55957ff5bb067b82a74eb2f92147d6757"), + "10.18.1-linux_arm64": ("node-v10.18.1-linux-arm64.tar.xz", "node-v10.18.1-linux-arm64", "9a6203697e0087a1c909961481d579c76777df1df622921e4ce16198851f30fe"), + "10.18.1-linux_amd64": ("node-v10.18.1-linux-x64.tar.xz", "node-v10.18.1-linux-x64", "8cc40f45c2c62529b15e83a6bbe0ac1febf57af3c5720df68067c96c0fddbbdf"), + "10.18.1-windows_amd64": ("node-v10.18.1-win-x64.zip", "node-v10.18.1-win-x64", "fb27bb95c27c72f2e25d0c41309b606b2ae48ba0d6094a19f206ad1df9dc5e19"), + # 10.19.0 + "10.19.0-darwin_amd64": ("node-v10.19.0-darwin-x64.tar.gz", "node-v10.19.0-darwin-x64", "b16328570651be44213a2303c1f9515fc506e0a96a273806f71ed000e3ca3cb3"), + "10.19.0-linux_arm64": ("node-v10.19.0-linux-arm64.tar.xz", "node-v10.19.0-linux-arm64", "77bdbf859fc38e6e860efd479b0a7b7b6bd3e7cb05337e5cc5638251eb5d3a59"), + "10.19.0-linux_amd64": ("node-v10.19.0-linux-x64.tar.xz", "node-v10.19.0-linux-x64", "34127c7c6b1ba02d6d4dc3a926f38a5fb88bb37fc7f051349005ce331c7a53c6"), + "10.19.0-windows_amd64": ("node-v10.19.0-win-x64.zip", "node-v10.19.0-win-x64", "210efd45a7f79cf4c350d8f575f990becdd3833cd922796a4c83b27996f5679e"), + # 10.20.0 + "10.20.0-darwin_amd64": ("node-v10.20.0-darwin-x64.tar.gz", "node-v10.20.0-darwin-x64", "c153832774afcae89a82efb55ed80557d1a41e1880638ad57128a9a3762d212f"), + "10.20.0-linux_arm64": ("node-v10.20.0-linux-arm64.tar.xz", "node-v10.20.0-linux-arm64", "f3567924d6b7f0fa55c4ee0a7330ec0dcaeec557982794796d6b312e7053c674"), + "10.20.0-linux_amd64": ("node-v10.20.0-linux-x64.tar.xz", "node-v10.20.0-linux-x64", "c5721a89feecc0e98d42386e171cb763c077f782033ddc998819edcf9d93b691"), + "10.20.0-windows_amd64": ("node-v10.20.0-win-x64.zip", "node-v10.20.0-win-x64", "d266313fa22885a6ec76eea521fb8a1131b4d9fb3a57afb045a98301aeb7d24e"), + # 10.20.1 + "10.20.1-darwin_amd64": ("node-v10.20.1-darwin-x64.tar.gz", "node-v10.20.1-darwin-x64", "6437e364cd93be246ffb67dd40775cbb467bb8d28d8af4413123f478bb6234b9"), + "10.20.1-linux_arm64": ("node-v10.20.1-linux-arm64.tar.xz", "node-v10.20.1-linux-arm64", "e33cafff94a6308916530b4b724bbc138399484d96f71b1c23677596bec268d0"), + "10.20.1-linux_amd64": ("node-v10.20.1-linux-x64.tar.xz", "node-v10.20.1-linux-x64", "5e0b1fbc6cf8c2c34dc33d880670ee1bc1c1e931099de3796a96143a962c92ee"), + "10.20.1-windows_amd64": ("node-v10.20.1-win-x64.zip", "node-v10.20.1-win-x64", "5e4ec0936c51047c218c0c164cc80283cd36ecd40e0a6979281d395c1be8ee10"), + # 10.21.0 + "10.21.0-darwin_amd64": ("node-v10.21.0-darwin-x64.tar.gz", "node-v10.21.0-darwin-x64", "596900700c4a0de0303bb4c378a1abcd63f31efc848704c5fbc1230de628577a"), + "10.21.0-linux_arm64": ("node-v10.21.0-linux-arm64.tar.xz", "node-v10.21.0-linux-arm64", "3af40706ff0da7fe0baa4683ead6c74445405a2553e7373e627f24d19d4ac100"), + "10.21.0-linux_amd64": ("node-v10.21.0-linux-x64.tar.xz", "node-v10.21.0-linux-x64", "1d3296763e46540047099e4910812e81c4899c0595f2d82474e2099c1e1603e2"), + "10.21.0-windows_amd64": ("node-v10.21.0-win-x64.zip", "node-v10.21.0-win-x64", "03dddcdaccdb40978ddf15d189acdc20409d9a666636db2595118690ff83ce82"), + # 10.22.0 + "10.22.0-darwin_amd64": ("node-v10.22.0-darwin-x64.tar.gz", "node-v10.22.0-darwin-x64", "c7583a297ba9c6cfc03688a32776155d02fabf9ff45847c63b12a68d400f1dc1"), + "10.22.0-linux_arm64": ("node-v10.22.0-linux-arm64.tar.xz", "node-v10.22.0-linux-arm64", "abacc6f37e8dfbe398843c7dc7b9bb7153ff6e653ad50e85d73d86088da48372"), + "10.22.0-linux_amd64": ("node-v10.22.0-linux-x64.tar.xz", "node-v10.22.0-linux-x64", "ddf33e038c593d6df36b1dd4b25c1b6fa8230c615e6312ad33e80ef863e4a74f"), + "10.22.0-windows_amd64": ("node-v10.22.0-win-x64.zip", "node-v10.22.0-win-x64", "931c2907450790f89aa178fa84c1adbd1f7cb7ab0a34f8bfb4af25640e8d4e06"), + # 11.0.0 + "11.0.0-darwin_amd64": ("node-v11.0.0-darwin-x64.tar.gz", "node-v11.0.0-darwin-x64", "f70e12d246ba35e88c5c08a195215c5c913ce66c9d95d0bd21cc1d3e69904279"), + "11.0.0-linux_arm64": ("node-v11.0.0-linux-arm64.tar.xz", "node-v11.0.0-linux-arm64", "0d0c7013fd00a8e713c36aa96bcc268eeadbad2ce48d87e19849d66f4c618cad"), + "11.0.0-linux_amd64": ("node-v11.0.0-linux-x64.tar.xz", "node-v11.0.0-linux-x64", "418b1a73bcafbf5dd3bc787f0440c2b4123dfecc2b239f5651f0256cb5ab606d"), + "11.0.0-windows_amd64": ("node-v11.0.0-win-x64.zip", "node-v11.0.0-win-x64", "4dd3ef7f5c8181be39cd45476b22ed34b6da2bf77377b699384d426702f8c969"), + # 11.1.0 + "11.1.0-darwin_amd64": ("node-v11.1.0-darwin-x64.tar.gz", "node-v11.1.0-darwin-x64", "5d6b84d2b0fd6afee07c371bc815a9e4b6671b85bedcb38815310bd0f884d3c8"), + "11.1.0-linux_arm64": ("node-v11.1.0-linux-arm64.tar.xz", "node-v11.1.0-linux-arm64", "cbba27e1c90701fbb9db66cc2c6cc3049aaf08adb16cabd0cad970b74cdaf6d3"), + "11.1.0-linux_amd64": ("node-v11.1.0-linux-x64.tar.xz", "node-v11.1.0-linux-x64", "c70419674d932452017556080264de2b6d1105c112647dd1dd495b739456dd91"), + "11.1.0-windows_amd64": ("node-v11.1.0-win-x64.zip", "node-v11.1.0-win-x64", "985e4edc758cb5f77f85cddda0155616b92f163b8d3842c542b1c8a395068418"), + # 11.2.0 + "11.2.0-darwin_amd64": ("node-v11.2.0-darwin-x64.tar.gz", "node-v11.2.0-darwin-x64", "cd17fafcdb21ae80fb94e455e63567c70b3bceedf982b93ae9e4aea411f6a6ea"), + "11.2.0-linux_arm64": ("node-v11.2.0-linux-arm64.tar.xz", "node-v11.2.0-linux-arm64", "3e6c47a29b85030b4305bdc2e15cbe37e1b54a2338ce1790637384ce349ed1fd"), + "11.2.0-linux_amd64": ("node-v11.2.0-linux-x64.tar.xz", "node-v11.2.0-linux-x64", "629a603443c275f8ecd851994b81a9c02a36343dbcbafc279cbecb9ccd9cf906"), + "11.2.0-windows_amd64": ("node-v11.2.0-win-x64.zip", "node-v11.2.0-win-x64", "3440b2880b4e3b78c9c18865df263317e7d3c3e179dad960d526004dc7e6ba9a"), + # 11.3.0 + "11.3.0-darwin_amd64": ("node-v11.3.0-darwin-x64.tar.gz", "node-v11.3.0-darwin-x64", "54acc7bdeffae79fdd73f959712305aee1d8d487d56813b43cae96d151ec79db"), + "11.3.0-linux_arm64": ("node-v11.3.0-linux-arm64.tar.xz", "node-v11.3.0-linux-arm64", "642cc3fc94a856ad6d09e76eaf869672bef925308afdad398a58f18eeaf4e4b8"), + "11.3.0-linux_amd64": ("node-v11.3.0-linux-x64.tar.xz", "node-v11.3.0-linux-x64", "d37fb7fae8a185409bccf106e91d8ffa3450115852795512fc62e6da0b5e3dbb"), + "11.3.0-windows_amd64": ("node-v11.3.0-win-x64.zip", "node-v11.3.0-win-x64", "b801e908ec36a07f06df388845e22e0b7f3cede7a4030896712c8ee28cdb3f05"), + # 11.4.0 + "11.4.0-darwin_amd64": ("node-v11.4.0-darwin-x64.tar.gz", "node-v11.4.0-darwin-x64", "05a515146d5bc397625f442a6ecbbc7f0d071a2a7efbf1e2b2ed46d728bc7b30"), + "11.4.0-linux_arm64": ("node-v11.4.0-linux-arm64.tar.xz", "node-v11.4.0-linux-arm64", "c32e752e74794a4254ae4caa892b7beb3be60dba6851e8e5d637febfb659ee3a"), + "11.4.0-linux_amd64": ("node-v11.4.0-linux-x64.tar.xz", "node-v11.4.0-linux-x64", "24d9be161e7fb28e761801639cb452ff223269ed53d967e5745b5c6391eb3fbd"), + "11.4.0-windows_amd64": ("node-v11.4.0-win-x64.zip", "node-v11.4.0-win-x64", "30b84ab0101c8916694e6cd6c0ccb5182e4555da5e06deb080e906ef5b3893df"), + # 11.5.0 + "11.5.0-darwin_amd64": ("node-v11.5.0-darwin-x64.tar.gz", "node-v11.5.0-darwin-x64", "741abd58ac67b4bf8d2ef991a7487ea17e421b2248688b93be0d2f34886c6aa2"), + "11.5.0-linux_arm64": ("node-v11.5.0-linux-arm64.tar.xz", "node-v11.5.0-linux-arm64", "3f1436c1de70b2e34f7a63a5af7e6b106a8ebe9289b3f7d045ac4a4856570164"), + "11.5.0-linux_amd64": ("node-v11.5.0-linux-x64.tar.xz", "node-v11.5.0-linux-x64", "ada54407b505b7e6f516c753f0e49220917dd11efa5ee892d3252bdd65d4a54c"), + "11.5.0-windows_amd64": ("node-v11.5.0-win-x64.zip", "node-v11.5.0-win-x64", "3692939b1bbd7ee8b0a967429eef6b1d45078c2f4fc289aae261ca5bde5a0607"), + # 11.6.0 + "11.6.0-darwin_amd64": ("node-v11.6.0-darwin-x64.tar.gz", "node-v11.6.0-darwin-x64", "c880063b112c48130dba8f7b058de61959ae46fddcfa363715571b22c1cbeb26"), + "11.6.0-linux_arm64": ("node-v11.6.0-linux-arm64.tar.xz", "node-v11.6.0-linux-arm64", "956016db41f4f96f8e005d36c738d7c833442d09a970462552eb214027e0268a"), + "11.6.0-linux_amd64": ("node-v11.6.0-linux-x64.tar.xz", "node-v11.6.0-linux-x64", "2251a6c5b332e7ea69bbefba11950cb6c27ba50fa700468711f729da6a6f5324"), + "11.6.0-windows_amd64": ("node-v11.6.0-win-x64.zip", "node-v11.6.0-win-x64", "d230828c1cc9863c9768106ffee0320ba42049b594bd2689e430b872e8f0b2dd"), + # 11.7.0 + "11.7.0-darwin_amd64": ("node-v11.7.0-darwin-x64.tar.gz", "node-v11.7.0-darwin-x64", "873b47e6fc97aef2f73b0e8dde641967b2a84a3b63d1697b9d8813e14fb3b01c"), + "11.7.0-linux_arm64": ("node-v11.7.0-linux-arm64.tar.xz", "node-v11.7.0-linux-arm64", "82b9726c6b367a43530f868f61b1b2a05c942d3decdf9d2e18b4a9bdf353c223"), + "11.7.0-linux_amd64": ("node-v11.7.0-linux-x64.tar.xz", "node-v11.7.0-linux-x64", "b2a0a7dde17fe0da5f86ce5fea3da2861d652a5e702e2177ee62813ff86451c0"), + "11.7.0-windows_amd64": ("node-v11.7.0-win-x64.zip", "node-v11.7.0-win-x64", "00834d16532f24583bf56d2baab03904b0220154cc712344be95e4d05c6234dd"), + # 11.8.0 + "11.8.0-darwin_amd64": ("node-v11.8.0-darwin-x64.tar.gz", "node-v11.8.0-darwin-x64", "fbb26b38f408c2f2324a5821062c16103f54de16d24f9f24c4e270a3a41f4832"), + "11.8.0-linux_arm64": ("node-v11.8.0-linux-arm64.tar.xz", "node-v11.8.0-linux-arm64", "42b190c686cb8bafbdbf418a6c20c6785a23ba0f1a1a85af44595057a3d5e25e"), + "11.8.0-linux_amd64": ("node-v11.8.0-linux-x64.tar.xz", "node-v11.8.0-linux-x64", "85ca19c495d5cac6acf6ee4a3c8dfb4489fb67fefc184c61eb4513eb5ef99a88"), + "11.8.0-windows_amd64": ("node-v11.8.0-win-x64.zip", "node-v11.8.0-win-x64", "cd4db1b9e7ac29ed81d433f2de85582902670a121961aa3f350533d5b2fd44c6"), + # 11.9.0 + "11.9.0-darwin_amd64": ("node-v11.9.0-darwin-x64.tar.gz", "node-v11.9.0-darwin-x64", "1df3dd99d174bb8cb61cc8e2aa419a4998c7ada9454123c34991ce30632f1ef8"), + "11.9.0-linux_arm64": ("node-v11.9.0-linux-arm64.tar.xz", "node-v11.9.0-linux-arm64", "f39baa8d212e9676bfa7f1601f94d789c6dc6b35caf440df6ec815d238978457"), + "11.9.0-linux_amd64": ("node-v11.9.0-linux-x64.tar.xz", "node-v11.9.0-linux-x64", "9bc461fb7f5fd3344301abfda834160d5397a4e289f9749ab03ba0b7e9a4c853"), + "11.9.0-windows_amd64": ("node-v11.9.0-win-x64.zip", "node-v11.9.0-win-x64", "c62c01436f632858fea0194d4168b483e1aa485c3fc72247add4899a103c2677"), + # 11.10.0 + "11.10.0-darwin_amd64": ("node-v11.10.0-darwin-x64.tar.gz", "node-v11.10.0-darwin-x64", "1956528c6f3934a97508e36a4855c154f40f1923ccd61e296d5a85679103e3a1"), + "11.10.0-linux_arm64": ("node-v11.10.0-linux-arm64.tar.xz", "node-v11.10.0-linux-arm64", "60ed6caa90d8188a55f0dbc63f4aef263fb4863e036d32989b820a2e40582c66"), + "11.10.0-linux_amd64": ("node-v11.10.0-linux-x64.tar.xz", "node-v11.10.0-linux-x64", "fe4c617aaf88b5228bce0341d1c77bbae2622d69eaa17a15b7d4bcc60c4777c5"), + "11.10.0-windows_amd64": ("node-v11.10.0-win-x64.zip", "node-v11.10.0-win-x64", "c39e711aebe678455fa74edf6d8f6184d6d93e20f160197799040a0c17005dba"), + # 11.10.1 + "11.10.1-darwin_amd64": ("node-v11.10.1-darwin-x64.tar.gz", "node-v11.10.1-darwin-x64", "dea52b86f6875efae26fbb6d0269d9769da7ca69408b74b6ab724d4b64004b07"), + "11.10.1-linux_arm64": ("node-v11.10.1-linux-arm64.tar.xz", "node-v11.10.1-linux-arm64", "b116e57906ed73c970d64e7518b08c6de236575c5cd8bf09f4c1bd668524a014"), + "11.10.1-linux_amd64": ("node-v11.10.1-linux-x64.tar.xz", "node-v11.10.1-linux-x64", "414216a7e47dbfb77141dce7a4452901ae2cdb4cd0deef3ab3ab49e0b2111f82"), + "11.10.1-windows_amd64": ("node-v11.10.1-win-x64.zip", "node-v11.10.1-win-x64", "80cf14abacbc6b636bc192f4eee49421f082f21cdaa9c1ea5995c38f8c1375e5"), + # 11.11.0 + "11.11.0-darwin_amd64": ("node-v11.11.0-darwin-x64.tar.gz", "node-v11.11.0-darwin-x64", "6b7c8d93096bf065de0d0a42e8f027c424172c82df6f015d3149a5dbfa03c1cc"), + "11.11.0-linux_arm64": ("node-v11.11.0-linux-arm64.tar.xz", "node-v11.11.0-linux-arm64", "febb698e74264ec0ecc738c86347e6bfb5d27e33ed492a031626df988a5fb4f3"), + "11.11.0-linux_amd64": ("node-v11.11.0-linux-x64.tar.xz", "node-v11.11.0-linux-x64", "ee09c7712e741f84948f76a72b651bf088e516c3f38569b9e6f30c38c026c262"), + "11.11.0-windows_amd64": ("node-v11.11.0-win-x64.zip", "node-v11.11.0-win-x64", "154a5b7ca7033382743c4752fa465a5d9902f4abed4263a38ea3f41ffa113910"), + # 11.12.0 + "11.12.0-darwin_amd64": ("node-v11.12.0-darwin-x64.tar.gz", "node-v11.12.0-darwin-x64", "93d68c1af41d02b262b3383d69b46eb326707ec010b321ad5655b91c4956e783"), + "11.12.0-linux_arm64": ("node-v11.12.0-linux-arm64.tar.xz", "node-v11.12.0-linux-arm64", "9e89838e290c9bb478351bd403707d0b741ec56021c379c9f6da515a4cd1064a"), + "11.12.0-linux_amd64": ("node-v11.12.0-linux-x64.tar.xz", "node-v11.12.0-linux-x64", "1c6bb93a24eda832708c1c10ec20316e1e4f30b3cfca9c5ee5d446762414b116"), + "11.12.0-windows_amd64": ("node-v11.12.0-win-x64.zip", "node-v11.12.0-win-x64", "68e5bca1d6dd6b3de20870e7c593f9a890c48d2c9c83e15034baad6f7c0da426"), + # 11.13.0 + "11.13.0-darwin_amd64": ("node-v11.13.0-darwin-x64.tar.gz", "node-v11.13.0-darwin-x64", "c1a8f94b4778dad2d9f513cfdf9091810dc733a2daf4fa7e03d49ad133415b5d"), + "11.13.0-linux_arm64": ("node-v11.13.0-linux-arm64.tar.xz", "node-v11.13.0-linux-arm64", "0edb29004fdbb5808331e765b4adde8b025a13d6619f49fec60a14582aba9ed7"), + "11.13.0-linux_amd64": ("node-v11.13.0-linux-x64.tar.xz", "node-v11.13.0-linux-x64", "c2ae3caced5f181df282a6974ab3f5e232b5decb821aa8ea8fe758b0e0528223"), + "11.13.0-windows_amd64": ("node-v11.13.0-win-x64.zip", "node-v11.13.0-win-x64", "f3dafd1f19841244f8f12952f9919c0a2857f6920b11f2a89554b061cd5a4525"), + # 11.14.0 + "11.14.0-darwin_amd64": ("node-v11.14.0-darwin-x64.tar.gz", "node-v11.14.0-darwin-x64", "37b8db4f6700a4b5aa3b6d4283538753953f6293aff99866aa9a81038848a4d9"), + "11.14.0-linux_arm64": ("node-v11.14.0-linux-arm64.tar.xz", "node-v11.14.0-linux-arm64", "3d463f3b48e1060027f8a552657de6f3ee4724d718d546aa4ea5c301ee4ed083"), + "11.14.0-linux_amd64": ("node-v11.14.0-linux-x64.tar.xz", "node-v11.14.0-linux-x64", "89e2cb0effa9bf075ee8bb6d92a6a50f7ccfdad03dd687f52ecdfab91230f9a1"), + "11.14.0-windows_amd64": ("node-v11.14.0-win-x64.zip", "node-v11.14.0-win-x64", "58a5d3316c04335ff3da2ce66b89f3cce86b1d1ca878d1d6d68478160c66dc12"), + # 11.15.0 + "11.15.0-darwin_amd64": ("node-v11.15.0-darwin-x64.tar.gz", "node-v11.15.0-darwin-x64", "e953b657b1049e1de509a3fd0700cfeecd175f75a0d141d71393aa0d71fa29a9"), + "11.15.0-linux_arm64": ("node-v11.15.0-linux-arm64.tar.xz", "node-v11.15.0-linux-arm64", "e458aa4c69da9ca2ae566c8eb56dc8b36d573b415bfd8eebca4ff2229fc4983d"), + "11.15.0-linux_amd64": ("node-v11.15.0-linux-x64.tar.xz", "node-v11.15.0-linux-x64", "17424aef198fa322b93c79217ce7e8cdd264fed40383abbbd3e63c305ce1d7d8"), + "11.15.0-windows_amd64": ("node-v11.15.0-win-x64.zip", "node-v11.15.0-win-x64", "f3cef50acf566724a5ec5df7697fb527d7339cafdae6c7c406a39358aee6cdf8"), + # 12.0.0 + "12.0.0-darwin_amd64": ("node-v12.0.0-darwin-x64.tar.gz", "node-v12.0.0-darwin-x64", "92c81a284e909424b50dd01e175260b75bbbdb487fdfe1885229817187ea76bc"), + "12.0.0-linux_arm64": ("node-v12.0.0-linux-arm64.tar.xz", "node-v12.0.0-linux-arm64", "2ac36aa51f76654a8914d41a32bd5c3d3213cba14eea84abd9919d022b5694b4"), + "12.0.0-linux_amd64": ("node-v12.0.0-linux-x64.tar.xz", "node-v12.0.0-linux-x64", "7a5609167265954cfb912e4dc8f36e5469335b6be1bb11d60d8427f92c03f5f9"), + "12.0.0-windows_amd64": ("node-v12.0.0-win-x64.zip", "node-v12.0.0-win-x64", "96ab5f9f61d75daf3fb1072930b6e9249f15b77bc3b3dca516ae8439dc1500fb"), + # 12.1.0 + "12.1.0-darwin_amd64": ("node-v12.1.0-darwin-x64.tar.gz", "node-v12.1.0-darwin-x64", "57c592b13940aa44611aec08e7b425f35565a2c95c51736f433cb36eb65105b7"), + "12.1.0-linux_arm64": ("node-v12.1.0-linux-arm64.tar.xz", "node-v12.1.0-linux-arm64", "67805a7976bef30d0e12211f18a99c6de405931e493fd32f451512473661ee10"), + "12.1.0-linux_amd64": ("node-v12.1.0-linux-x64.tar.xz", "node-v12.1.0-linux-x64", "331c43176a20e705c6f4fdb61c69fee44dd3c2c93a20410be2c13b4f8515ef7b"), + "12.1.0-windows_amd64": ("node-v12.1.0-win-x64.zip", "node-v12.1.0-win-x64", "6dc3ef4a6b4ce527f187270a1b0c5560771126df487ab9ddc4c3cd3b37d57eb6"), + # 12.2.0 + "12.2.0-darwin_amd64": ("node-v12.2.0-darwin-x64.tar.gz", "node-v12.2.0-darwin-x64", "c72ae8a2b989138c6e6e9b393812502df8c28546a016cf24e7a82dd27e3838af"), + "12.2.0-linux_arm64": ("node-v12.2.0-linux-arm64.tar.xz", "node-v12.2.0-linux-arm64", "42e4a5c6ad0b402e281daf46a27a269249bdb8b4e31ff8869701aaddac2cc8c4"), + "12.2.0-linux_amd64": ("node-v12.2.0-linux-x64.tar.xz", "node-v12.2.0-linux-x64", "89059969861606e2a435ff2619c4df6f41c040120e507d9c4f03374353357307"), + "12.2.0-windows_amd64": ("node-v12.2.0-win-x64.zip", "node-v12.2.0-win-x64", "c1e7fb3c1c15d8f2ab5c1db9c9662097f9c682164b3f7397955ccce946442c97"), + # 12.3.0 + "12.3.0-darwin_amd64": ("node-v12.3.0-darwin-x64.tar.gz", "node-v12.3.0-darwin-x64", "4a9faa038fb4e6e930a0fecd9818a4820b4ca91d1c45a1c1279fe49cdbd28160"), + "12.3.0-linux_arm64": ("node-v12.3.0-linux-arm64.tar.xz", "node-v12.3.0-linux-arm64", "3d6e7046b938ff1f2535bdcc892a82abf44d875d1e96779cc3ea9a074ccfa200"), + "12.3.0-linux_amd64": ("node-v12.3.0-linux-x64.tar.xz", "node-v12.3.0-linux-x64", "2ce2c7a4d7fe3c560415e8dcbc5905a66a8bf28e2a2b2cff7e7a4eeb5753015d"), + "12.3.0-windows_amd64": ("node-v12.3.0-win-x64.zip", "node-v12.3.0-win-x64", "b36c9f9809c90ce704465f066861314d6e33176a5d45da14c1519c3e4f35063e"), + # 12.3.1 + "12.3.1-darwin_amd64": ("node-v12.3.1-darwin-x64.tar.gz", "node-v12.3.1-darwin-x64", "b9c979f63a356090d8ff88ed141fd856ad853165c73633794a9d3a060334378e"), + "12.3.1-linux_arm64": ("node-v12.3.1-linux-arm64.tar.xz", "node-v12.3.1-linux-arm64", "88df7f2e0c4a58661bb79b637daa417929efc6c4d6a77bba42a5127c5c383257"), + "12.3.1-linux_amd64": ("node-v12.3.1-linux-x64.tar.xz", "node-v12.3.1-linux-x64", "46f52868c0643fe0d167ce24c3c873880c8e1494276c89c07114fb099da4f75a"), + "12.3.1-windows_amd64": ("node-v12.3.1-win-x64.zip", "node-v12.3.1-win-x64", "aac3c4543f846c7ebf63e1498dec7955119dffffe65722bd8c6d2124ed4ecbd7"), + # 12.4.0 + "12.4.0-darwin_amd64": ("node-v12.4.0-darwin-x64.tar.gz", "node-v12.4.0-darwin-x64", "aaff97d59cda775165ef966ae74e70f55f3267e86d735ed3740ae9bf1d40531e"), + "12.4.0-linux_arm64": ("node-v12.4.0-linux-arm64.tar.xz", "node-v12.4.0-linux-arm64", "bb2e7eabebdceb52424516dabce94cb37f55419e6ed19493916843a323c423cd"), + "12.4.0-linux_amd64": ("node-v12.4.0-linux-x64.tar.xz", "node-v12.4.0-linux-x64", "9aec6a2a50c1791704a6069cbda6da62781361e44814d024e8bbaaf0deb41c5e"), + "12.4.0-windows_amd64": ("node-v12.4.0-win-x64.zip", "node-v12.4.0-win-x64", "ec8623e2528a35d3219200308e7ed41e24d4f7cd96530a4e6ac2513e44f7fad1"), + # 12.5.0 + "12.5.0-darwin_amd64": ("node-v12.5.0-darwin-x64.tar.gz", "node-v12.5.0-darwin-x64", "a9ba9f584f015f1705063c10dd8d84d43f5b09dc7ecf4ee3968ab1ff1fe5d2b5"), + "12.5.0-linux_arm64": ("node-v12.5.0-linux-arm64.tar.xz", "node-v12.5.0-linux-arm64", "d43b71a97f5484d13b655a8a0c1b1c0fc7e83b3719063cc362fe557d6e26bd69"), + "12.5.0-linux_amd64": ("node-v12.5.0-linux-x64.tar.xz", "node-v12.5.0-linux-x64", "37c0c539aae69370f3c014cc4947748ce45ac5fa560f9b085724f22029834b27"), + "12.5.0-windows_amd64": ("node-v12.5.0-win-x64.zip", "node-v12.5.0-win-x64", "f1b426fcd39ffdfec5d8ba60c6842cc11e9f49269cd49bc34c4fcee0517ddf66"), + # 12.6.0 + "12.6.0-darwin_amd64": ("node-v12.6.0-darwin-x64.tar.gz", "node-v12.6.0-darwin-x64", "004b7992a2621eb35a47c94d258510ca5744b5a8072364f235dc7e3d4bff7457"), + "12.6.0-linux_arm64": ("node-v12.6.0-linux-arm64.tar.xz", "node-v12.6.0-linux-arm64", "b7a6580f0c5406b990b3c9f0d91297b103e38e2752b8b745c4d15310a9dd79d1"), + "12.6.0-linux_amd64": ("node-v12.6.0-linux-x64.tar.xz", "node-v12.6.0-linux-x64", "1ac14567e2be5562df209900e28430bd11575d985a85e8a6df2743428570de33"), + "12.6.0-windows_amd64": ("node-v12.6.0-win-x64.zip", "node-v12.6.0-win-x64", "0c5ac670c5bb0ea0d389bb7269cb84104702826f791a1d057eae02cdb9eed717"), + # 12.7.0 + "12.7.0-darwin_amd64": ("node-v12.7.0-darwin-x64.tar.gz", "node-v12.7.0-darwin-x64", "1a76bea7f7ed8c5c921852269ddd1300c9baba2f1e3f0377200a22c22cdea177"), + "12.7.0-linux_arm64": ("node-v12.7.0-linux-arm64.tar.xz", "node-v12.7.0-linux-arm64", "abc4500eff8437503d475726b8ac2ed3463d2982bd66925a782f91b7d96e31de"), + "12.7.0-linux_amd64": ("node-v12.7.0-linux-x64.tar.xz", "node-v12.7.0-linux-x64", "95867fdcfd4f821d84b3dd9fab5803fb29e093e911f2ab3c7111bcaf8bd5b9da"), + "12.7.0-windows_amd64": ("node-v12.7.0-win-x64.zip", "node-v12.7.0-win-x64", "68802316ca4eb4d72ec5f9ff837752a6ec8cd73537ad7c346f30899ee523f4b7"), + # 12.8.0 + "12.8.0-darwin_amd64": ("node-v12.8.0-darwin-x64.tar.gz", "node-v12.8.0-darwin-x64", "5229571a1736befd6426dc0a6907be416e9f5c24695e3ef275ed2ba70f496499"), + "12.8.0-linux_arm64": ("node-v12.8.0-linux-arm64.tar.xz", "node-v12.8.0-linux-arm64", "9f22aff38a8622b05821129f69dbe90695e01166f55c8d2a39b6c6a5aef8c6a8"), + "12.8.0-linux_amd64": ("node-v12.8.0-linux-x64.tar.xz", "node-v12.8.0-linux-x64", "b6a9ab2e6e872375e0e27eda0698820a64495b31b1beab36cc54f9876b3a2052"), + "12.8.0-windows_amd64": ("node-v12.8.0-win-x64.zip", "node-v12.8.0-win-x64", "b295aedebde069c4148534a9dfb2394ceba28cf367ddd8204a27d69c095a9e00"), + # 12.8.1 + "12.8.1-darwin_amd64": ("node-v12.8.1-darwin-x64.tar.gz", "node-v12.8.1-darwin-x64", "caccf8b409af342e35672cc766430587664f88d01dab622a5de44c8be1336e44"), + "12.8.1-linux_arm64": ("node-v12.8.1-linux-arm64.tar.xz", "node-v12.8.1-linux-arm64", "3707240c402aae0b5879ce1ba17b32ebd224d47f5147639c6881a1b71ce65383"), + "12.8.1-linux_amd64": ("node-v12.8.1-linux-x64.tar.xz", "node-v12.8.1-linux-x64", "1c7cf61cb8fa98a76d92445823d6dd1649e985899e16900b39eacdd8cd4094f3"), + "12.8.1-windows_amd64": ("node-v12.8.1-win-x64.zip", "node-v12.8.1-win-x64", "c81ecaa03dc882dde36087c854e4831c13d3eb237f262f9ce74ccc6f156684da"), + # 12.9.0 + "12.9.0-darwin_amd64": ("node-v12.9.0-darwin-x64.tar.gz", "node-v12.9.0-darwin-x64", "24c1f0c93e485961446814662db942f1b309d843fb4ecbe50466d9857a51b343"), + "12.9.0-linux_arm64": ("node-v12.9.0-linux-arm64.tar.xz", "node-v12.9.0-linux-arm64", "f7f6f102d097d64eba26f84f2760597f9831886ef7d0db3cba88459847f2743d"), + "12.9.0-linux_amd64": ("node-v12.9.0-linux-x64.tar.xz", "node-v12.9.0-linux-x64", "7110bdd16e397870142ff0e8d92d4a4502d43ec047d970c843a9a4e5f9e79283"), + "12.9.0-windows_amd64": ("node-v12.9.0-win-x64.zip", "node-v12.9.0-win-x64", "b5f05deb31ac04b9c3a487542daf151e01c05017403a56ba443da623f36b153b"), + # 12.9.1 + "12.9.1-darwin_amd64": ("node-v12.9.1-darwin-x64.tar.gz", "node-v12.9.1-darwin-x64", "9aaf29d30056e2233fd15dfac56eec12e8342d91bb6c13d54fb5e599383dddb9"), + "12.9.1-linux_arm64": ("node-v12.9.1-linux-arm64.tar.xz", "node-v12.9.1-linux-arm64", "b6d986faf3a77b6c353c344645c93f2a0e0436c43865e6c215a24301a076a11f"), + "12.9.1-linux_amd64": ("node-v12.9.1-linux-x64.tar.xz", "node-v12.9.1-linux-x64", "680a1263c9f5f91adadcada549f0a9c29f1b26d09658d2b501c334c3f63719e5"), + "12.9.1-windows_amd64": ("node-v12.9.1-win-x64.zip", "node-v12.9.1-win-x64", "6a4e54bda091bd02dbd8ff1b9f6671e036297da012a53891e3834d4bf4bed297"), + # 12.10.0 + "12.10.0-darwin_amd64": ("node-v12.10.0-darwin-x64.tar.gz", "node-v12.10.0-darwin-x64", "4c16d1f6454f5dc3977ad00cea123792b8d4e1d6d1bf42bbc82a4202039a5971"), + "12.10.0-linux_arm64": ("node-v12.10.0-linux-arm64.tar.xz", "node-v12.10.0-linux-arm64", "fa1afb9e8cfd964867351b6dac6cd918784ff309291612251c4745aeb0b10e02"), + "12.10.0-linux_amd64": ("node-v12.10.0-linux-x64.tar.xz", "node-v12.10.0-linux-x64", "e8d2e6b62dd8183dc59a139a9ca3edc7c419a0d3d92e90fea9cb0ad52489843a"), + "12.10.0-windows_amd64": ("node-v12.10.0-win-x64.zip", "node-v12.10.0-win-x64", "de341476711c71f82d06fabcc9874c1ff9e865fd7274334d64a67b1e31a53fd0"), + # 12.11.0 + "12.11.0-darwin_amd64": ("node-v12.11.0-darwin-x64.tar.gz", "node-v12.11.0-darwin-x64", "a0fd5c1c9e67099f52b73c732aa52a878c6ff67f50ff0e94c2c5628a87455130"), + "12.11.0-linux_arm64": ("node-v12.11.0-linux-arm64.tar.xz", "node-v12.11.0-linux-arm64", "d1126439ff6d079b682a7cd6308cb226afd247e5cb0f7cc60cfb0e609a096622"), + "12.11.0-linux_amd64": ("node-v12.11.0-linux-x64.tar.xz", "node-v12.11.0-linux-x64", "c0dc88110ac3ee095e3d09077545435b72d4cd52e35c43cd3fa666cff7446d46"), + "12.11.0-windows_amd64": ("node-v12.11.0-win-x64.zip", "node-v12.11.0-win-x64", "457157358bd029196d47865dee66f8c263a3a4a5a8cdd1c0a8cf43ac45e9eda3"), + # 12.11.1 + "12.11.1-darwin_amd64": ("node-v12.11.1-darwin-x64.tar.gz", "node-v12.11.1-darwin-x64", "7dd24ee6d81668e65ce1b77b4bb4cdaf517d8f80bb19740d286606028506970b"), + "12.11.1-linux_arm64": ("node-v12.11.1-linux-arm64.tar.xz", "node-v12.11.1-linux-arm64", "12777294258da80410fd7d5cbed46ead5d3cabacf376ee10ddb9e1a335b114e7"), + "12.11.1-linux_amd64": ("node-v12.11.1-linux-x64.tar.xz", "node-v12.11.1-linux-x64", "00f7a0b59ff38c1c74d81732df925aa5ac5788b58412437327421f796878793d"), + "12.11.1-windows_amd64": ("node-v12.11.1-win-x64.zip", "node-v12.11.1-win-x64", "0bab4473cd2ba03511b8859ddf2202bb012d5c541f9d57b555a5bbbf101fcb35"), + # 12.12.0 + "12.12.0-darwin_amd64": ("node-v12.12.0-darwin-x64.tar.gz", "node-v12.12.0-darwin-x64", "14a98237e8859bc22695719dbc2e9db5529a33ada0c6c377df4dc27b5622ffbb"), + "12.12.0-linux_arm64": ("node-v12.12.0-linux-arm64.tar.xz", "node-v12.12.0-linux-arm64", "ad536aba218df64d8e901b28985f4c5f72f634bf903c449b0c84929f6940853c"), + "12.12.0-linux_amd64": ("node-v12.12.0-linux-x64.tar.xz", "node-v12.12.0-linux-x64", "e3a38dfaf1233a3c43c2528869af52e74575781984369a5b705c89d84dfa3ac2"), + "12.12.0-windows_amd64": ("node-v12.12.0-win-x64.zip", "node-v12.12.0-win-x64", "930e7bcd2ae5bcb1d4163c2adf09a392ed0e9a824b069d19daeb4f9f3430a195"), # 12.13.0 "12.13.0-darwin_amd64": ("node-v12.13.0-darwin-x64.tar.gz", "node-v12.13.0-darwin-x64", "49a7374670a111b033ce16611b20fd1aafd3296bbc662b184fe8fb26a29c22cc"), - "12.13.0-linux_amd64": ("node-v12.13.0-linux-x64.tar.xz", "node-v12.13.0-linux-x64", "7a57ef2cb3036d7eacd50ae7ba07245a28336a93652641c065f747adb2a356d9"), "12.13.0-linux_arm64": ("node-v12.13.0-linux-arm64.tar.xz", "node-v12.13.0-linux-arm64", "d65b3ce27639f15ae22941e3ff98a1c900aa9049fcc15518038615b0676037d5"), + "12.13.0-linux_amd64": ("node-v12.13.0-linux-x64.tar.xz", "node-v12.13.0-linux-x64", "7a57ef2cb3036d7eacd50ae7ba07245a28336a93652641c065f747adb2a356d9"), "12.13.0-windows_amd64": ("node-v12.13.0-win-x64.zip", "node-v12.13.0-win-x64", "6f920cebeecb4957b4ef0def6d9b04c49d4582864f8d1a207ce8d0665865781a"), + # 12.13.1 + "12.13.1-darwin_amd64": ("node-v12.13.1-darwin-x64.tar.gz", "node-v12.13.1-darwin-x64", "12d14c7fbd98876a163a2b7e0aeb13657dc3e967e993efaf2dcacbe475a285e8"), + "12.13.1-linux_arm64": ("node-v12.13.1-linux-arm64.tar.xz", "node-v12.13.1-linux-arm64", "3aef0178a8ab74c8e5c133e23d1896e53ed5c273415d165a0e72e005f5467cba"), + "12.13.1-linux_amd64": ("node-v12.13.1-linux-x64.tar.xz", "node-v12.13.1-linux-x64", "aca06db37589966829b1ef0f163a5859b156a1d8e51b415bf47590f667c30a25"), + "12.13.1-windows_amd64": ("node-v12.13.1-win-x64.zip", "node-v12.13.1-win-x64", "db33fb758ba49b96d073311ef9e9134b51bf96246ffd938909b2e02c65a6e890"), + # 12.14.0 + "12.14.0-darwin_amd64": ("node-v12.14.0-darwin-x64.tar.gz", "node-v12.14.0-darwin-x64", "5f3170b346b29e6902c0ca7e0993e3d1b4b650615348aa866de17ad965377048"), + "12.14.0-linux_arm64": ("node-v12.14.0-linux-arm64.tar.xz", "node-v12.14.0-linux-arm64", "733b4f71ccdf114038bbe0f20574a1e8f4f60b53d39caf445f518745596eadda"), + "12.14.0-linux_amd64": ("node-v12.14.0-linux-x64.tar.xz", "node-v12.14.0-linux-x64", "82ae74ee0a204de7ebf7767eaa8e382518d9b49668dcbb5bd7fd003154445d1f"), + "12.14.0-windows_amd64": ("node-v12.14.0-win-x64.zip", "node-v12.14.0-win-x64", "526f4b01ffb270bdd8213b58b38843fa3c88f03c89b1898c641bc0e32607913e"), + # 12.14.1 + "12.14.1-darwin_amd64": ("node-v12.14.1-darwin-x64.tar.gz", "node-v12.14.1-darwin-x64", "0be10a28737527a1e5e3784d3ad844d742fe8b0718acd701fd48f718fd3af78f"), + "12.14.1-linux_arm64": ("node-v12.14.1-linux-arm64.tar.xz", "node-v12.14.1-linux-arm64", "6cd28a5e6340f596aec8dbfd6720f444f011e6b9018622290a60dbd17f9baff6"), + "12.14.1-linux_amd64": ("node-v12.14.1-linux-x64.tar.xz", "node-v12.14.1-linux-x64", "07cfcaa0aa9d0fcb6e99725408d9e0b07be03b844701588e3ab5dbc395b98e1b"), + "12.14.1-windows_amd64": ("node-v12.14.1-win-x64.zip", "node-v12.14.1-win-x64", "1f96ccce3ba045ecea3f458e189500adb90b8bc1a34de5d82fc10a5bf66ce7e3"), + # 12.15.0 + "12.15.0-darwin_amd64": ("node-v12.15.0-darwin-x64.tar.gz", "node-v12.15.0-darwin-x64", "b6449cec39ac15b37abe4e59ef0eae50dcdfbf060c5276a01cc590f2a3372b7d"), + "12.15.0-linux_arm64": ("node-v12.15.0-linux-arm64.tar.xz", "node-v12.15.0-linux-arm64", "c582cb65a0ec7f648618d3d33b4f87c374a3f930518b57eca1693828c965d6e5"), + "12.15.0-linux_amd64": ("node-v12.15.0-linux-x64.tar.xz", "node-v12.15.0-linux-x64", "63df953deb091c1500e1044bef01d1953117970e757e74e90d915e1a4a0d1c9c"), + "12.15.0-windows_amd64": ("node-v12.15.0-win-x64.zip", "node-v12.15.0-win-x64", "48b29cab597962f12b0aac081522e6192bc8642c582cd0fc1bf51557273888da"), + # 12.16.0 + "12.16.0-darwin_amd64": ("node-v12.16.0-darwin-x64.tar.gz", "node-v12.16.0-darwin-x64", "af3b9bbfdd9ae1b46390e7deeb77a2c1d8dbc6fb4171bbb0cfe8686fc1ecef1d"), + "12.16.0-linux_arm64": ("node-v12.16.0-linux-arm64.tar.xz", "node-v12.16.0-linux-arm64", "f2d97187bd8d3175bf6266193107a030bfb827003d57ba6dd21de16aa622548d"), + "12.16.0-linux_amd64": ("node-v12.16.0-linux-x64.tar.xz", "node-v12.16.0-linux-x64", "e8c38659540766db9d85bd7325ba8cce8ded56204f84507f73fdb41a26d9bd73"), + "12.16.0-windows_amd64": ("node-v12.16.0-win-x64.zip", "node-v12.16.0-win-x64", "9a590dd064b491fbd40b366ae4a119fe6cef516a25fb4d78d7c2a64b37574da8"), + # 12.16.1 + "12.16.1-darwin_amd64": ("node-v12.16.1-darwin-x64.tar.gz", "node-v12.16.1-darwin-x64", "34895bce210ca4b3cf19cd480e6563588880dd7f5d798f3782e3650580d35920"), + "12.16.1-linux_arm64": ("node-v12.16.1-linux-arm64.tar.xz", "node-v12.16.1-linux-arm64", "396c43ba507b8ec33c70cdc6f73b4a7c725bddb3f74a85a8b8ed77b436856fed"), + "12.16.1-linux_amd64": ("node-v12.16.1-linux-x64.tar.xz", "node-v12.16.1-linux-x64", "b826753f14df9771609ffb8e7d2cc4cb395247cb704cf0cea0f04132d9cf3505"), + "12.16.1-windows_amd64": ("node-v12.16.1-win-x64.zip", "node-v12.16.1-win-x64", "b93b73572c5e495154a9823d494de5729c77d1c83b041171154c4b5f3f76b590"), + # 12.16.2 + "12.16.2-darwin_amd64": ("node-v12.16.2-darwin-x64.tar.gz", "node-v12.16.2-darwin-x64", "483954e311a5ff649ddf32b473f635a58890790d284b5788bdd8d7ff850c6db2"), + "12.16.2-linux_arm64": ("node-v12.16.2-linux-arm64.tar.xz", "node-v12.16.2-linux-arm64", "c88005467f6dcdb621d454b35ec39bb42e165c6a2e1cee74cabcdc01af307e81"), + "12.16.2-linux_amd64": ("node-v12.16.2-linux-x64.tar.xz", "node-v12.16.2-linux-x64", "f94a6eb06e80ef2794ebf51a2baed0b89ed307d3196ab5579f16c0fa7cc62901"), + "12.16.2-windows_amd64": ("node-v12.16.2-win-x64.zip", "node-v12.16.2-win-x64", "f34303a49384aee2e5daab5f248c5a719e850a9ebb19e7098fe2bfffb26efe03"), + # 12.16.3 + "12.16.3-darwin_amd64": ("node-v12.16.3-darwin-x64.tar.gz", "node-v12.16.3-darwin-x64", "0718812b3ab8e77e8d1354f4d10428ae99d78f721bdcceee527c4b592ea7fed0"), + "12.16.3-linux_arm64": ("node-v12.16.3-linux-arm64.tar.xz", "node-v12.16.3-linux-arm64", "8311f513a7d1911200502dd3e00142cef56d600c851d5870f68d939802205b73"), + "12.16.3-linux_amd64": ("node-v12.16.3-linux-x64.tar.xz", "node-v12.16.3-linux-x64", "1956e196e3c3c8ef5f0c45db76d7c1245af4ccdda2b7ab30a57ce91d6e165caa"), + "12.16.3-windows_amd64": ("node-v12.16.3-win-x64.zip", "node-v12.16.3-win-x64", "d0bb0e0b1f1a948529ddd543e2cfe0bfe209eb843defc70217b3d2f84cbf3b78"), + # 12.17.0 + "12.17.0-darwin_amd64": ("node-v12.17.0-darwin-x64.tar.gz", "node-v12.17.0-darwin-x64", "8c3b9459462b8adaa10549f4da6a5ff5cdfaf7140a8a8020a87cc96d79022cc0"), + "12.17.0-linux_arm64": ("node-v12.17.0-linux-arm64.tar.xz", "node-v12.17.0-linux-arm64", "54a0dbb203ff1700341d258cefa304bd31044bf0226e9e59a0de1128418cb5aa"), + "12.17.0-linux_amd64": ("node-v12.17.0-linux-x64.tar.xz", "node-v12.17.0-linux-x64", "988653492a4f422fb112421c5c9d1c140146b665b480c2b24c66fffdd0b88a88"), + "12.17.0-windows_amd64": ("node-v12.17.0-win-x64.zip", "node-v12.17.0-win-x64", "f3a64dc6ad48577f1f81521aa144c028beb7e353d0fcd05d7b420a72a84f50fc"), + # 12.18.0 + "12.18.0-darwin_amd64": ("node-v12.18.0-darwin-x64.tar.gz", "node-v12.18.0-darwin-x64", "11fe50e670315d2d3c46317d23f7a019f46a3d08b534fbadee9a1bc3d4f81852"), + "12.18.0-linux_arm64": ("node-v12.18.0-linux-arm64.tar.xz", "node-v12.18.0-linux-arm64", "51b301102984ff73a74894396b774d00259bb3bb8c1de7c82674713acec7a214"), + "12.18.0-linux_amd64": ("node-v12.18.0-linux-x64.tar.xz", "node-v12.18.0-linux-x64", "2febc2506c298048bfddf896056be6191c1f08716876d960a4990bd63a7fe05a"), + "12.18.0-windows_amd64": ("node-v12.18.0-win-x64.zip", "node-v12.18.0-win-x64", "ca73a989eba5e863971cb600e5520cb4c5edf9c600fe8f76d9e4771ad03b5d08"), + # 12.18.1 + "12.18.1-darwin_amd64": ("node-v12.18.1-darwin-x64.tar.gz", "node-v12.18.1-darwin-x64", "80e1d644fe78838da47cd16de234b612c20e06ffe14447125db9622e381ed1ba"), + "12.18.1-linux_arm64": ("node-v12.18.1-linux-arm64.tar.xz", "node-v12.18.1-linux-arm64", "b6683e6e887c6c44a3fe9ff419e80d36eaafed39eb2c2d1b04ee54b440a03217"), + "12.18.1-linux_amd64": ("node-v12.18.1-linux-x64.tar.xz", "node-v12.18.1-linux-x64", "863f816967e297c9eb221ad3cf32521f7ac46fffc66750e60f159ed63809affa"), + "12.18.1-windows_amd64": ("node-v12.18.1-win-x64.zip", "node-v12.18.1-win-x64", "93039ebfc7c5bfad168b015f77667757925070fff3ae84c3eb73348b3123a82a"), + # 12.18.2 + "12.18.2-darwin_amd64": ("node-v12.18.2-darwin-x64.tar.gz", "node-v12.18.2-darwin-x64", "6e6e7311943e4f3880db5038b8b8034a30469342fe436c8aaacf2997dfa305a6"), + "12.18.2-linux_arm64": ("node-v12.18.2-linux-arm64.tar.xz", "node-v12.18.2-linux-arm64", "d7d3a05f36de9eb079b7b25e0fc1aaa0c960afdf36fb24b498f7303365eb945c"), + "12.18.2-linux_amd64": ("node-v12.18.2-linux-x64.tar.xz", "node-v12.18.2-linux-x64", "b8dc634798ee783482c2ae1755bd7dff09d83fa7bb037cdc370b601d0a5e5cbb"), + "12.18.2-windows_amd64": ("node-v12.18.2-win-x64.zip", "node-v12.18.2-win-x64", "91fdd5b5df16873c63541bc844c9eb66870d366b2076d114f9ab7528b5e2f9a3"), + # 12.18.3 + "12.18.3-darwin_amd64": ("node-v12.18.3-darwin-x64.tar.gz", "node-v12.18.3-darwin-x64", "af376caf114bdd5d7e566dbf7590e9077ffc01f9b2692eb2651f31d7219a30bb"), + "12.18.3-linux_arm64": ("node-v12.18.3-linux-arm64.tar.xz", "node-v12.18.3-linux-arm64", "d330aab40029afc34f8b5d1abc2e67be233df4b31331cf08d538be2a666737bb"), + "12.18.3-linux_amd64": ("node-v12.18.3-linux-x64.tar.xz", "node-v12.18.3-linux-x64", "b79e02e48d0a1ee4cd4ae138de97fda5413542f2a4f441a7d0e189697b8da563"), + "12.18.3-windows_amd64": ("node-v12.18.3-win-x64.zip", "node-v12.18.3-win-x64", "1fcd30c09f0ac9fbecf45161519eff2cf621c199eef4663b1db41b3f2fef4041"), + # 13.0.0 + "13.0.0-darwin_amd64": ("node-v13.0.0-darwin-x64.tar.gz", "node-v13.0.0-darwin-x64", "612556a8c7e6b4cd08f6134b8afe5a05bf84c0121225fa9c542be1c98af04a35"), + "13.0.0-linux_arm64": ("node-v13.0.0-linux-arm64.tar.xz", "node-v13.0.0-linux-arm64", "6ed882e17123861b5b81683de2b2c86be02c5916ef0beda04fd176329888fd12"), + "13.0.0-linux_amd64": ("node-v13.0.0-linux-x64.tar.xz", "node-v13.0.0-linux-x64", "799d890f00a3a2a7415b813b286d32d38573df6525bc8ef80f40077cdd210d39"), + "13.0.0-windows_amd64": ("node-v13.0.0-win-x64.zip", "node-v13.0.0-win-x64", "8ffcefde5e080d70790a9a2e1aab0724cc88b5526d5128b53fc59bf94f6ad5de"), + # 13.0.1 + "13.0.1-darwin_amd64": ("node-v13.0.1-darwin-x64.tar.gz", "node-v13.0.1-darwin-x64", "25621359a51ff218ecf4bb2ffc657815154230a967224f22b722840a2b9ad061"), + "13.0.1-linux_arm64": ("node-v13.0.1-linux-arm64.tar.xz", "node-v13.0.1-linux-arm64", "ad6e051aede160d8be5cbab9c60a155b06a5696e8088d895e6eff3dd36f9a688"), + "13.0.1-linux_amd64": ("node-v13.0.1-linux-x64.tar.xz", "node-v13.0.1-linux-x64", "d5657c19bb30b267bf2e0f2b61f6a96d8955aa30b69240f22d3fd2c65e123cf7"), + "13.0.1-windows_amd64": ("node-v13.0.1-win-x64.zip", "node-v13.0.1-win-x64", "1a2552b630651e08e9027339f71a65fbe3944540f0875563ea25639a091e1f33"), + # 13.1.0 + "13.1.0-darwin_amd64": ("node-v13.1.0-darwin-x64.tar.gz", "node-v13.1.0-darwin-x64", "6501c1bcf2babb5b9c81dcff8b52021f726da8f6ee28df1637acade1a16c7d39"), + "13.1.0-linux_arm64": ("node-v13.1.0-linux-arm64.tar.xz", "node-v13.1.0-linux-arm64", "646d597e6b0dc400429e46b703a5135c77bd71e653ea4c8254d0b60c17b6ec1d"), + "13.1.0-linux_amd64": ("node-v13.1.0-linux-x64.tar.xz", "node-v13.1.0-linux-x64", "2eecb5a4b7975c3b406bee36b12c9a29e8bedf9553c88cad310b8f076db00881"), + "13.1.0-windows_amd64": ("node-v13.1.0-win-x64.zip", "node-v13.1.0-win-x64", "d735e97bdeb7b74551b9d165c708a3fdea4dbb3801a65e70f6d6ae3539d48a03"), + # 13.2.0 + "13.2.0-darwin_amd64": ("node-v13.2.0-darwin-x64.tar.gz", "node-v13.2.0-darwin-x64", "2bcba358ef68ea21655728126c678063c60119e18e65d04f615d6b22dba8f7a5"), + "13.2.0-linux_arm64": ("node-v13.2.0-linux-arm64.tar.xz", "node-v13.2.0-linux-arm64", "e6c4a5fe57585f69a20bd028275db31f43de421308e31d117f319b577210e527"), + "13.2.0-linux_amd64": ("node-v13.2.0-linux-x64.tar.xz", "node-v13.2.0-linux-x64", "366df8a38b522a5899c3f48d8c9e359b3370495cf84867b2673dc10483adbdef"), + "13.2.0-windows_amd64": ("node-v13.2.0-win-x64.zip", "node-v13.2.0-win-x64", "e2866a8f53c45bb544d7b00aed1e5fddbbd7071bd331b02e66a6ce7c38c6918c"), + # 13.3.0 + "13.3.0-darwin_amd64": ("node-v13.3.0-darwin-x64.tar.gz", "node-v13.3.0-darwin-x64", "187ea9028daa6d9abad9c1cbb4e12ba51427c3748da29eae616fa352c0f4cd49"), + "13.3.0-linux_arm64": ("node-v13.3.0-linux-arm64.tar.xz", "node-v13.3.0-linux-arm64", "fb201a908bea36be828eee36a7cd898c67ad4ae6846982f393466e2b8b826c16"), + "13.3.0-linux_amd64": ("node-v13.3.0-linux-x64.tar.xz", "node-v13.3.0-linux-x64", "b208393ae411bd55188e903171901765aaa8381c08155e4a7b34174737a1bc65"), + "13.3.0-windows_amd64": ("node-v13.3.0-win-x64.zip", "node-v13.3.0-win-x64", "82e0f43aea81374a8028a7d3c9993245c4910ac95cd0f66ee5b29b940a6f3d93"), + # 13.4.0 + "13.4.0-darwin_amd64": ("node-v13.4.0-darwin-x64.tar.gz", "node-v13.4.0-darwin-x64", "4de08a89054416595228d6ff40fcf20c375d00556f2e95dfde8602cbb42c0b6e"), + "13.4.0-linux_arm64": ("node-v13.4.0-linux-arm64.tar.xz", "node-v13.4.0-linux-arm64", "382d5fb2983ab55d495e42145e812b3859d2a311e426307fd373f47825d55fe9"), + "13.4.0-linux_amd64": ("node-v13.4.0-linux-x64.tar.xz", "node-v13.4.0-linux-x64", "5cab49240c521efb80efd0a0bb3ba1071e5498c55ecbebd723d78648c91b1cc8"), + "13.4.0-windows_amd64": ("node-v13.4.0-win-x64.zip", "node-v13.4.0-win-x64", "56de9ed20332cdf22bb9b048c3fb3977662ef2de9d2e8ac2d2a27d28e9be276f"), + # 13.5.0 + "13.5.0-darwin_amd64": ("node-v13.5.0-darwin-x64.tar.gz", "node-v13.5.0-darwin-x64", "3322c601dc032677e5b5f87f393d4b1d70073bcab24fe74378eff8eb49364001"), + "13.5.0-linux_arm64": ("node-v13.5.0-linux-arm64.tar.xz", "node-v13.5.0-linux-arm64", "fe52f4e3a60a372138102da741e5b5d34310a74b3fc6f2000e4c254e3f0c4f51"), + "13.5.0-linux_amd64": ("node-v13.5.0-linux-x64.tar.xz", "node-v13.5.0-linux-x64", "4d2b2cea13388658e95d8b2dc7ff918718155473ef6ef38928d92eb8cbbe210a"), + "13.5.0-windows_amd64": ("node-v13.5.0-win-x64.zip", "node-v13.5.0-win-x64", "e286a84f2861b9f3c0290a9afbbecd09f303a39b2573af001ef8a4c1413eee7c"), + # 13.6.0 + "13.6.0-darwin_amd64": ("node-v13.6.0-darwin-x64.tar.gz", "node-v13.6.0-darwin-x64", "da13adb864777b322dda7af20410a9b0c63aa69de4b5574008d1e6910768bf69"), + "13.6.0-linux_arm64": ("node-v13.6.0-linux-arm64.tar.xz", "node-v13.6.0-linux-arm64", "1f34ed8668207e03cb832763319a82b4c753839a3655207adc5bbe52f65e154a"), + "13.6.0-linux_amd64": ("node-v13.6.0-linux-x64.tar.xz", "node-v13.6.0-linux-x64", "00f01315a867da16d1638f7a02966c608e344ac6c5b7d04d1fdae3138fa9d798"), + "13.6.0-windows_amd64": ("node-v13.6.0-win-x64.zip", "node-v13.6.0-win-x64", "7fe37b34a4673a071bea52fcaf913ec422cf6fd79fd025bfb22de42ccc77f386"), + # 13.7.0 + "13.7.0-darwin_amd64": ("node-v13.7.0-darwin-x64.tar.gz", "node-v13.7.0-darwin-x64", "866ea9bdbd7b734c593af96b946397d9c7cb9c291aa8ea52a6a2af271b972169"), + "13.7.0-linux_arm64": ("node-v13.7.0-linux-arm64.tar.xz", "node-v13.7.0-linux-arm64", "2823b199c7c4e6c547caf95139e28341444a5ffc52481a5ba704067291771579"), + "13.7.0-linux_amd64": ("node-v13.7.0-linux-x64.tar.xz", "node-v13.7.0-linux-x64", "02578025b82de24f4cfb3ffeb3824990431d739d09220f2db9ef9f454f475470"), + "13.7.0-windows_amd64": ("node-v13.7.0-win-x64.zip", "node-v13.7.0-win-x64", "26b41de81ead8f51de2964d7c7526533f46387ff436b61596e09d678bcd7503f"), + # 13.8.0 + "13.8.0-darwin_amd64": ("node-v13.8.0-darwin-x64.tar.gz", "node-v13.8.0-darwin-x64", "ae480e2b124cb55667763848b8ec0fde1bc35d5e0b76debe881034689a68eaea"), + "13.8.0-linux_arm64": ("node-v13.8.0-linux-arm64.tar.xz", "node-v13.8.0-linux-arm64", "f1d4167a6911e42d836a5459c992cdaf35a03ab0700ea80831d7df5d706d1baf"), + "13.8.0-linux_amd64": ("node-v13.8.0-linux-x64.tar.xz", "node-v13.8.0-linux-x64", "47a8cb675358f2ff534ad3d6709f14de0433f76d3af92cf389b8dcc78a1236ad"), + "13.8.0-windows_amd64": ("node-v13.8.0-win-x64.zip", "node-v13.8.0-win-x64", "f198f3e4b120fc84b61d12e7222530c5bb9c6f864735bb41a8db1cf1b94a64c3"), + # 13.9.0 + "13.9.0-darwin_amd64": ("node-v13.9.0-darwin-x64.tar.gz", "node-v13.9.0-darwin-x64", "b2a5a539b9b2d1733bda301913c99d220968de801bf313b762fa932820ea797b"), + "13.9.0-linux_arm64": ("node-v13.9.0-linux-arm64.tar.xz", "node-v13.9.0-linux-arm64", "c668afc06e4094b68ae758b823fc3244b34f0468fc0c2feee45278788989b8a1"), + "13.9.0-linux_amd64": ("node-v13.9.0-linux-x64.tar.xz", "node-v13.9.0-linux-x64", "f1e093303468032a1ecb0e290e19b43bf7771d4efbf589560df0060149614272"), + "13.9.0-windows_amd64": ("node-v13.9.0-win-x64.zip", "node-v13.9.0-win-x64", "ec0a55bb703906494e738cd3d09e3274b34f0a3fbe207b9e67502092ed017500"), + # 13.10.0 + "13.10.0-darwin_amd64": ("node-v13.10.0-darwin-x64.tar.gz", "node-v13.10.0-darwin-x64", "67269fb9061402e446bb61776be2e5d0ec330b5274326df77979698d05f503da"), + "13.10.0-linux_arm64": ("node-v13.10.0-linux-arm64.tar.xz", "node-v13.10.0-linux-arm64", "adb145535d2e03fe508fa7a34897a130ba903d6f718a21cd29d1760e298f715b"), + "13.10.0-linux_amd64": ("node-v13.10.0-linux-x64.tar.xz", "node-v13.10.0-linux-x64", "62081af005257d3db7ebd5a64b43f1a8e4a57bafd229be3acd7ce2704607eaac"), + "13.10.0-windows_amd64": ("node-v13.10.0-win-x64.zip", "node-v13.10.0-win-x64", "d428b6d3e127716191fa6df630d03a25d3186fda1ede04a9a8d5c07e526dbb9e"), + # 13.10.1 + "13.10.1-darwin_amd64": ("node-v13.10.1-darwin-x64.tar.gz", "node-v13.10.1-darwin-x64", "a6a66fdc79e70267fc191f10ee045793240974e1268fdea6c2d28afbc1d635e8"), + "13.10.1-linux_arm64": ("node-v13.10.1-linux-arm64.tar.xz", "node-v13.10.1-linux-arm64", "f73effcef784251e53b5e3938b8316c36bd49628c3588de7976e8569e560c12c"), + "13.10.1-linux_amd64": ("node-v13.10.1-linux-x64.tar.xz", "node-v13.10.1-linux-x64", "69d69165282d88f321e751f03ee5d3370db65e5ca4c587af24994b12f31d4827"), + "13.10.1-windows_amd64": ("node-v13.10.1-win-x64.zip", "node-v13.10.1-win-x64", "f9d0aac273a44dbd52dd8cdb3d6c684b68b860d128af58d77a0c08f39f51f229"), + # 13.11.0 + "13.11.0-darwin_amd64": ("node-v13.11.0-darwin-x64.tar.gz", "node-v13.11.0-darwin-x64", "2d87989fb1e0d425667c5ca9893cb3ecfb30cd3344d543870246d65f8d9b892f"), + "13.11.0-linux_arm64": ("node-v13.11.0-linux-arm64.tar.xz", "node-v13.11.0-linux-arm64", "63ce9871b9802a1f021c84f282c63e1890524a32dc97d3e7a7ab8d52b4bde19e"), + "13.11.0-linux_amd64": ("node-v13.11.0-linux-x64.tar.xz", "node-v13.11.0-linux-x64", "c127cf38f9a56d97646eb1fedb93712f304950c7143705de7180a701becc0fbb"), + "13.11.0-windows_amd64": ("node-v13.11.0-win-x64.zip", "node-v13.11.0-win-x64", "dc93aa5a82988f741dca6f1869c7b1aeda6f339293d13a968279a6dc9fcc8dd0"), + # 13.12.0 + "13.12.0-darwin_amd64": ("node-v13.12.0-darwin-x64.tar.gz", "node-v13.12.0-darwin-x64", "1fe3103610e8eb66ae71872ea1b4e868a638292a4e7ad0e41976a9fe417a09c7"), + "13.12.0-linux_arm64": ("node-v13.12.0-linux-arm64.tar.xz", "node-v13.12.0-linux-arm64", "2e8c12e575fcceb2d6f46eb3c50c6bfa98e91540bddaf91ca1c0fe739619ca0b"), + "13.12.0-linux_amd64": ("node-v13.12.0-linux-x64.tar.xz", "node-v13.12.0-linux-x64", "95eb1188872e243323cbc31fc80048be3fdfdda91505c62c80c599281de357ed"), + "13.12.0-windows_amd64": ("node-v13.12.0-win-x64.zip", "node-v13.12.0-win-x64", "de8445794ecbcfe895f4775417d1e2cc023e2212b1f5d4ff5cc0ed6875f7c911"), + # 13.13.0 + "13.13.0-darwin_amd64": ("node-v13.13.0-darwin-x64.tar.gz", "node-v13.13.0-darwin-x64", "28ae2abedafb250a9bbe706650fd79d2b25273f6445adcc1d85c777359dc5390"), + "13.13.0-linux_arm64": ("node-v13.13.0-linux-arm64.tar.xz", "node-v13.13.0-linux-arm64", "eded8da4633134cae0766a2f6f3c2237f8e728df77895c85607acaca13216226"), + "13.13.0-linux_amd64": ("node-v13.13.0-linux-x64.tar.xz", "node-v13.13.0-linux-x64", "41d60cda7422f53156711626d670f9b5079075b1ecc6736aea99319fe36c20a6"), + "13.13.0-windows_amd64": ("node-v13.13.0-win-x64.zip", "node-v13.13.0-win-x64", "79f2a39c1047666f2bbf2efe53c069a38b8f6ef18d569bf338463aea1914b89d"), + # 13.14.0 + "13.14.0-darwin_amd64": ("node-v13.14.0-darwin-x64.tar.gz", "node-v13.14.0-darwin-x64", "a56eb353fecd45f731d74fc77c58dde052320c1bc272de9b03151fbaf962feaf"), + "13.14.0-linux_arm64": ("node-v13.14.0-linux-arm64.tar.xz", "node-v13.14.0-linux-arm64", "e4736df097846bbe8195a185cc67ada3410a1f8993949e516bbf62b62198d2a7"), + "13.14.0-linux_amd64": ("node-v13.14.0-linux-x64.tar.xz", "node-v13.14.0-linux-x64", "9ab808ba3872d58e827ea60a6e43a352f59361bc8eb36fe0327a587086b466f9"), + "13.14.0-windows_amd64": ("node-v13.14.0-win-x64.zip", "node-v13.14.0-win-x64", "8c6e77fac5e911a2e70b6ca34804b3b59b6a3c685ab4e3b17756397df86063fa"), + # 14.0.0 + "14.0.0-darwin_amd64": ("node-v14.0.0-darwin-x64.tar.gz", "node-v14.0.0-darwin-x64", "4e50cec7aeef91c6d00d08a3bab938358da182984aa549c2aeab9868e3342f55"), + "14.0.0-linux_arm64": ("node-v14.0.0-linux-arm64.tar.xz", "node-v14.0.0-linux-arm64", "29c612fcdb40133171959b269878138bbfe7723d46681f70e2017ee30134e7ad"), + "14.0.0-linux_amd64": ("node-v14.0.0-linux-x64.tar.xz", "node-v14.0.0-linux-x64", "a2aaaa621074e1b56bb751bda53ce726319fac617587443371c0a7742481e5b6"), + "14.0.0-windows_amd64": ("node-v14.0.0-win-x64.zip", "node-v14.0.0-win-x64", "e8f73d4f2e9935df929360c09ae932ceb316784a7450b256024af5d01fe29b75"), + # 14.1.0 + "14.1.0-darwin_amd64": ("node-v14.1.0-darwin-x64.tar.gz", "node-v14.1.0-darwin-x64", "7f08bd365df4e7a5625ad393257f48e8cd79f77391ab87a64426b0c6448dd226"), + "14.1.0-linux_arm64": ("node-v14.1.0-linux-arm64.tar.xz", "node-v14.1.0-linux-arm64", "9dd3a4867f679f40075e2a364d3b3566702139274da9fcd59a182198ff7c7b52"), + "14.1.0-linux_amd64": ("node-v14.1.0-linux-x64.tar.xz", "node-v14.1.0-linux-x64", "959fab0c8ae0830f1ab987699cd2941cab97169991630a2e0c99db7c144f9e42"), + "14.1.0-windows_amd64": ("node-v14.1.0-win-x64.zip", "node-v14.1.0-win-x64", "1d3890d0d2f996cce57bcb0206e49b67233623e3cdb50eee77b8acc8f006b955"), + # 14.2.0 + "14.2.0-darwin_amd64": ("node-v14.2.0-darwin-x64.tar.gz", "node-v14.2.0-darwin-x64", "2447241aefe71dea8ba1552549e4df2e894d1ac12203630db3af63d4ae35c016"), + "14.2.0-linux_arm64": ("node-v14.2.0-linux-arm64.tar.xz", "node-v14.2.0-linux-arm64", "4587d2c52cd348094bd46ee4ee8cdfeb549462ead9b4aadc9cfc3c5fc3ba7215"), + "14.2.0-linux_amd64": ("node-v14.2.0-linux-x64.tar.xz", "node-v14.2.0-linux-x64", "468cbd92271da8c0cacaa3fa432a73a332e398bade8ad7359a94aa8ab3cc3cca"), + "14.2.0-windows_amd64": ("node-v14.2.0-win-x64.zip", "node-v14.2.0-win-x64", "99085f45a894e257123d7c729113cc00ed1413df432dbdce5fe53867e7c53b11"), + # 14.3.0 + "14.3.0-darwin_amd64": ("node-v14.3.0-darwin-x64.tar.gz", "node-v14.3.0-darwin-x64", "fd6a44303646f28b7e7577de687c2681cb565bef534e84deef44202e7919d7f3"), + "14.3.0-linux_arm64": ("node-v14.3.0-linux-arm64.tar.xz", "node-v14.3.0-linux-arm64", "53bb110ea135ae3c819f535373ce1b779e86c7aa49a9b93fc5f26969a72365d2"), + "14.3.0-linux_amd64": ("node-v14.3.0-linux-x64.tar.xz", "node-v14.3.0-linux-x64", "17236db7b9447080b58c2e50937982c386fe8a60e644b8d7f23e546068a8acba"), + "14.3.0-windows_amd64": ("node-v14.3.0-win-x64.zip", "node-v14.3.0-win-x64", "07bebc231dd8d773ab41cdcfbcb8b48e2336fbee20deb961b4300b9ba86afa04"), + # 14.4.0 + "14.4.0-darwin_amd64": ("node-v14.4.0-darwin-x64.tar.gz", "node-v14.4.0-darwin-x64", "d95eaa6950d67895b5cdd0e2f913d2c44034178234f0cb7436c3397b54f64023"), + "14.4.0-linux_arm64": ("node-v14.4.0-linux-arm64.tar.xz", "node-v14.4.0-linux-arm64", "9c9f84589b7bc6a05ac12a137e5097a5adb20b5c63ae9e4e912942da2c06d99d"), + "14.4.0-linux_amd64": ("node-v14.4.0-linux-x64.tar.xz", "node-v14.4.0-linux-x64", "d65a9a8a547bfe67c6c08dae733a3e5a846700d5377c5f150164cc6bb5f6a039"), + "14.4.0-windows_amd64": ("node-v14.4.0-win-x64.zip", "node-v14.4.0-win-x64", "a4bac45af8252f6b677a79ed19be4913f4939c4509fb08b6f14f972597550bbe"), + # 14.5.0 + "14.5.0-darwin_amd64": ("node-v14.5.0-darwin-x64.tar.gz", "node-v14.5.0-darwin-x64", "47dfd88abcd4d6d6f7b7516c95645f9760ba9c93d04b51a92895584c945b2953"), + "14.5.0-linux_arm64": ("node-v14.5.0-linux-arm64.tar.xz", "node-v14.5.0-linux-arm64", "c5ab67fbc73ea8858b4a989b6e92d6630decfc47c4703be7bcda3c6e39adff0b"), + "14.5.0-linux_amd64": ("node-v14.5.0-linux-x64.tar.xz", "node-v14.5.0-linux-x64", "8b0235c318de87ecf8eec9a39e5c5df80757dbec571addda7123276dfcb34d5b"), + "14.5.0-windows_amd64": ("node-v14.5.0-win-x64.zip", "node-v14.5.0-win-x64", "ab5728c85ece98210036fc9c38984fa2410a882dd99075b3d5bece58e4cc6ea2"), + # 14.6.0 + "14.6.0-darwin_amd64": ("node-v14.6.0-darwin-x64.tar.gz", "node-v14.6.0-darwin-x64", "7907a18605b900ce977ff4c7e67f7507f937f85738659865d31779c3b2990756"), + "14.6.0-linux_arm64": ("node-v14.6.0-linux-arm64.tar.xz", "node-v14.6.0-linux-arm64", "853f2c99f0e5fa65e6f222821e29c9d1a49f2d358a97c1de080ddf5c74e4ec70"), + "14.6.0-linux_amd64": ("node-v14.6.0-linux-x64.tar.xz", "node-v14.6.0-linux-x64", "b8a39b2dac8e200e96586356c5525d20b0b43dba8bf9f7eb4e8c2d5366be2bb2"), + "14.6.0-windows_amd64": ("node-v14.6.0-win-x64.zip", "node-v14.6.0-win-x64", "57ea75a7ec70cc8158e6f9774f9728fb9e3d08212b1af3e206db2de46ca304ca"), + # 14.7.0 + "14.7.0-darwin_amd64": ("node-v14.7.0-darwin-x64.tar.gz", "node-v14.7.0-darwin-x64", "47c94ec84706fd6851db27af54abdab569941fcbfcdc28e386d8fa7d49c6a619"), + "14.7.0-linux_arm64": ("node-v14.7.0-linux-arm64.tar.xz", "node-v14.7.0-linux-arm64", "12540328aeb5baa524a4e9c3b493b5eceb54cfa630f8bce64c19e674871e2f4b"), + "14.7.0-linux_amd64": ("node-v14.7.0-linux-x64.tar.xz", "node-v14.7.0-linux-x64", "48929b03deb2915b64ba67355d2deffeed3c8df798b0c5f2b821ffc7a8116a23"), + "14.7.0-windows_amd64": ("node-v14.7.0-win-x64.zip", "node-v14.7.0-win-x64", "a899693c9a31089a1eda14b1e613cf8cd60361e6e574b351551d832cf864c8f8"), + # 14.8.0 + "14.8.0-darwin_amd64": ("node-v14.8.0-darwin-x64.tar.gz", "node-v14.8.0-darwin-x64", "b6db32f2ff37475ae68502c76fc777a604cbc589bf57158fb4eed4db9ac5f62d"), + "14.8.0-linux_arm64": ("node-v14.8.0-linux-arm64.tar.xz", "node-v14.8.0-linux-arm64", "0c66a6468c36552c00d45cff0eaa924240f3d2e625be0306f33f8b0d81af4224"), + "14.8.0-linux_amd64": ("node-v14.8.0-linux-x64.tar.xz", "node-v14.8.0-linux-x64", "c7761fe5d56d045d1540b1f0bc8a20d7edf03e6fd695ee5fbffc1dd9416ccc75"), + "14.8.0-windows_amd64": ("node-v14.8.0-win-x64.zip", "node-v14.8.0-win-x64", "848ca582bdf8b7fdc21a38d9f3887a45bdf6381b04549fc0f918852889157c9a"), # When adding a new version. please update /docs/install.md }, doc = """Custom list of node repositories to use diff --git a/scripts/update-nodejs-versions.js b/scripts/update-nodejs-versions.js new file mode 100644 index 0000000000..6a8cbda143 --- /dev/null +++ b/scripts/update-nodejs-versions.js @@ -0,0 +1,94 @@ +// This script creates output that can be copy/pasted into /internal/node/node_repositories.bzl to +// add all published NodeJS versions >= 8.0.0. + +const https = require("https"); + +const REPOSITORY_TYPES = { + "darwin-x64.tar.gz": "darwin_amd64", + "linux-x64.tar.xz": "linux_amd64", + "linux-arm64.tar.xz": "linux_arm64", + "win-x64.zip": "windows_amd64", +}; + +function getText(url) { + return new Promise((resolve, reject) => { + https.get(url, (res) => { + if (res.statusCode !== 200) { + return reject(new Error()); + } + const body = []; + res.on("data", (chunk) => body.push(String(chunk))); + res.on("end", () => resolve(body.join(""))); + }); + }); +} + +async function getJson(url) { + return JSON.parse(await getText(url)); +} + +async function getNodeJsVersions() { + const json = await getJson("https://nodejs.org/dist/index.json"); + + return ( + json + .map(({ version }) => version.slice(1).split(".").map(Number)) + // take only version >= 8.0.0 + .filter((version) => version[0] >= 8) + .sort((lhs, rhs) => { + if (lhs[0] === rhs[0]) { + if (lhs[1] === rhs[1]) { + return lhs[2] - rhs[2]; + } else { + return lhs[1] - rhs[1]; + } + } + return lhs[0] - rhs[0]; + }) + ); +} + +async function getNodeJsVersion(version) { + const text = await getText( + `https://nodejs.org/dist/v${version.join(".")}/SHASUMS256.txt` + ); + + return { + version, + repositories: text + .split("\n") + .filter(Boolean) + .map((line) => { + const [sha, filename] = line.split(/\s+/); + const type = REPOSITORY_TYPES[filename.replace(/^node-v[\d.]+-/, "")]; + return type ? { filename, sha, type } : undefined; + }) + .filter(Boolean), + }; +} + +async function main() { + const versions = await getNodeJsVersions(); + const nodeRepositories = await Promise.all(versions.map(getNodeJsVersion)); + + nodeRepositories.forEach(({ version, repositories }) => { + console.log( + [ + `# ${version.join(".")}`, + ...repositories.map( + ({ filename, sha, type }) => + `"${version.join( + "." + )}-${type}": ("${filename}", "${filename.replace( + /(\.tar)?\.[^.]+$/, + "" + )}", "${sha}"),` + ), + ] + .map((line) => ` ${line}`) + .join("\n") + ); + }); +} + +main(); From cd2ac6ee6367632619dbc40e48566bfbb6ee5bc1 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Tue, 18 Aug 2020 15:48:28 -0700 Subject: [PATCH 0823/1134] refactor: move node version list into its own file (#2128) Add a package.json script for updating it --- internal/node/node_repositories.bzl | 821 +-------------------------- internal/node/node_versions.bzl | 822 ++++++++++++++++++++++++++++ package.json | 1 + scripts/update-nodejs-versions.js | 16 +- 4 files changed, 837 insertions(+), 823 deletions(-) create mode 100644 internal/node/node_versions.bzl diff --git a/internal/node/node_repositories.bzl b/internal/node/node_repositories.bzl index fb3de5b6d1..e7f11ef3b5 100644 --- a/internal/node/node_repositories.bzl +++ b/internal/node/node_repositories.bzl @@ -21,6 +21,7 @@ See https://docs.bazel.build/versions/master/skylark/repository_rules.html load("//internal/common:check_bazel_version.bzl", "check_bazel_version") load("//internal/common:check_version.bzl", "check_version") load("//internal/common:os_name.bzl", "OS_ARCH_NAMES", "os_name") +load("//internal/node:node_versions.bzl", "NODE_VERSIONS") load("//third_party/github.com/bazelbuild/bazel-skylib:lib/paths.bzl", "paths") load("//toolchains/node:node_toolchain_configure.bzl", "node_toolchain_configure") @@ -67,825 +68,7 @@ Note that the dependency installation scripts will run in each subpackage indica # TODO(kgreenek): Add arm64 versions for all of these. _ATTRS = { "node_repositories": attr.string_list_dict( - # @unsorted-dict-items - default = { - # 8.0.0 - "8.0.0-darwin_amd64": ("node-v8.0.0-darwin-x64.tar.gz", "node-v8.0.0-darwin-x64", "6e4a66917e2c11d5adc537c899941c973ae586293352b8172a4f32be0b7f0300"), - "8.0.0-linux_arm64": ("node-v8.0.0-linux-arm64.tar.xz", "node-v8.0.0-linux-arm64", "8d6eaefcc252055de54a666d4e00eec78caf2143cd7a13b63f109e9eb78a795e"), - "8.0.0-linux_amd64": ("node-v8.0.0-linux-x64.tar.xz", "node-v8.0.0-linux-x64", "0a536bb83eeccca23626e5e5ead52563a641e4331c35e367662892921dc7e8a4"), - "8.0.0-windows_amd64": ("node-v8.0.0-win-x64.zip", "node-v8.0.0-win-x64", "84410377118857674e0fb6e7bc7627ffb8cc67a72f162a050276b076e328a9bb"), - # 8.1.0 - "8.1.0-darwin_amd64": ("node-v8.1.0-darwin-x64.tar.gz", "node-v8.1.0-darwin-x64", "08af5f1a7441728cabf9b11af25da28ee1725903524968dd9621b885b13303c7"), - "8.1.0-linux_arm64": ("node-v8.1.0-linux-arm64.tar.xz", "node-v8.1.0-linux-arm64", "adf2f517c9847cbb5904b282c0819526b5264c256477ed5e4b258584daa1a2ea"), - "8.1.0-linux_amd64": ("node-v8.1.0-linux-x64.tar.xz", "node-v8.1.0-linux-x64", "1638a0083c6eee122cbbefdf39cb8bcc43cf19fedff331a0317b05fd38dcb6df"), - "8.1.0-windows_amd64": ("node-v8.1.0-win-x64.zip", "node-v8.1.0-win-x64", "cee1fd1c828e8996824a2d9f9056dfae771b77c05b15ad015bc7f8800409215c"), - # 8.1.1 - "8.1.1-darwin_amd64": ("node-v8.1.1-darwin-x64.tar.gz", "node-v8.1.1-darwin-x64", "2f67890a5a46564672cfd4522cc00c7ac04d307e6a942ae1ad38b6aee94c29e2"), - "8.1.1-linux_arm64": ("node-v8.1.1-linux-arm64.tar.xz", "node-v8.1.1-linux-arm64", "3971543f9d29f77ddb8f47a54e4b99422a822173599748ab7fcd9c35c8e25124"), - "8.1.1-linux_amd64": ("node-v8.1.1-linux-x64.tar.xz", "node-v8.1.1-linux-x64", "6a735e77bdd21c92fe85ea5f9f567d0d6930fa33e0e111946b17cdb7efefb8d5"), - "8.1.1-windows_amd64": ("node-v8.1.1-win-x64.zip", "node-v8.1.1-win-x64", "459f3b62e58f4fac3b9b5e49694855f338f3dcf2fcf955299ee2a47f7687625a"), - # 8.1.2 - "8.1.2-darwin_amd64": ("node-v8.1.2-darwin-x64.tar.gz", "node-v8.1.2-darwin-x64", "70f353449b19d6d36262f5e38f9cc23e80b2034c21ae48623a6a4890f513eb53"), - "8.1.2-linux_arm64": ("node-v8.1.2-linux-arm64.tar.xz", "node-v8.1.2-linux-arm64", "d468ac671047a5a5edb6edd34a9a625645505551c35ef73e2102c504535a09d4"), - "8.1.2-linux_amd64": ("node-v8.1.2-linux-x64.tar.xz", "node-v8.1.2-linux-x64", "f5dc173d3005fbcfd107c83a15d4dbff9a28ff53ab42c23344a572d84814ecfe"), - "8.1.2-windows_amd64": ("node-v8.1.2-win-x64.zip", "node-v8.1.2-win-x64", "5463c812afeb498ad8ab9c396246e455d9353ab48ae409c82a2a45193e161f66"), - # 8.1.3 - "8.1.3-darwin_amd64": ("node-v8.1.3-darwin-x64.tar.gz", "node-v8.1.3-darwin-x64", "ae588038480a6acc57b6b04802fa876e0b602231e9846944dd1b4437e8c1205f"), - "8.1.3-linux_arm64": ("node-v8.1.3-linux-arm64.tar.xz", "node-v8.1.3-linux-arm64", "cebc2edd89f20613a530509a2435ecc42757ce16032559ef174ebe84875a1536"), - "8.1.3-linux_amd64": ("node-v8.1.3-linux-x64.tar.xz", "node-v8.1.3-linux-x64", "d41dc375ea7e33fadf0fb1bf89d9dfd222a2fb85633fba3d2cf48ac03522ba71"), - "8.1.3-windows_amd64": ("node-v8.1.3-win-x64.zip", "node-v8.1.3-win-x64", "be582920c723124ebad48c968f539ef66b1f628d8b6f2338dc68a32f95104856"), - # 8.1.4 - "8.1.4-darwin_amd64": ("node-v8.1.4-darwin-x64.tar.gz", "node-v8.1.4-darwin-x64", "a24858a10dd4ca8ad55fd61a7472b4fe9140eb3fa347c41717360c3f29438748"), - "8.1.4-linux_arm64": ("node-v8.1.4-linux-arm64.tar.xz", "node-v8.1.4-linux-arm64", "3553c617f594286fea7052678d04aec9e167adddf702b70431d88ce42573c339"), - "8.1.4-linux_amd64": ("node-v8.1.4-linux-x64.tar.xz", "node-v8.1.4-linux-x64", "d82fe7ef7e0f8ca1c343f00e3e490996553507ec7d42034f5df034cc7908caaf"), - "8.1.4-windows_amd64": ("node-v8.1.4-win-x64.zip", "node-v8.1.4-win-x64", "cc3689ffefc738f6256aab1713343c3c64c24ec997600c0a48243fb26f5e0bce"), - # 8.2.0 - "8.2.0-darwin_amd64": ("node-v8.2.0-darwin-x64.tar.gz", "node-v8.2.0-darwin-x64", "da5cca37ae0afdbff3a269bb3dc71ff0d86e282920286f71ae5eb6757cfa5356"), - "8.2.0-linux_arm64": ("node-v8.2.0-linux-arm64.tar.xz", "node-v8.2.0-linux-arm64", "3298ae4ae67c4ad714bed23383fd08db5711b164a077a25fb6b282533e65cf77"), - "8.2.0-linux_amd64": ("node-v8.2.0-linux-x64.tar.xz", "node-v8.2.0-linux-x64", "e8ceaac3ee4385d53bcebc552a7a6b545b09b9652f5ca1b254aae698fd9a25f9"), - "8.2.0-windows_amd64": ("node-v8.2.0-win-x64.zip", "node-v8.2.0-win-x64", "6bc3cc580f0e8190e6a03d6a5967c861c29d6a6eb50f995b3afb7d60b8cee4e1"), - # 8.2.1 - "8.2.1-darwin_amd64": ("node-v8.2.1-darwin-x64.tar.gz", "node-v8.2.1-darwin-x64", "32d0923c147470d57f18f055014f5a9fe8a3919406010a2e80ba85952d3c9923"), - "8.2.1-linux_arm64": ("node-v8.2.1-linux-arm64.tar.xz", "node-v8.2.1-linux-arm64", "9ed01737f37d410067beeb42066e51f6d0385677c7d0daeeaf2e32cb2aca854a"), - "8.2.1-linux_amd64": ("node-v8.2.1-linux-x64.tar.xz", "node-v8.2.1-linux-x64", "abcddeb95cc4465953b1edb0922d20e9b0b3de83688fc8150b863117032a978a"), - "8.2.1-windows_amd64": ("node-v8.2.1-win-x64.zip", "node-v8.2.1-win-x64", "37e84e54c67e3d1e52d657c04835b211c94631a0b358f4e7dc351618fdb6c083"), - # 8.3.0 - "8.3.0-darwin_amd64": ("node-v8.3.0-darwin-x64.tar.gz", "node-v8.3.0-darwin-x64", "a627354982a514e77e5c37ed5952edc81a7dd9c4f661fd919f192c21ae548654"), - "8.3.0-linux_arm64": ("node-v8.3.0-linux-arm64.tar.xz", "node-v8.3.0-linux-arm64", "9e0dab4913585a1b8117bda03c4b5581d9140aec67bb4be0e0b6a4999b41b4ab"), - "8.3.0-linux_amd64": ("node-v8.3.0-linux-x64.tar.xz", "node-v8.3.0-linux-x64", "ae377995c6e1af8e2a60c4a929f77562ebed9a2c6897cbd311a2c331f76b4e0f"), - "8.3.0-windows_amd64": ("node-v8.3.0-win-x64.zip", "node-v8.3.0-win-x64", "e762fa218465e5aa0952336eee2c3e42e5b48390b36838ca7b6a243812e0b7e5"), - # 8.4.0 - "8.4.0-darwin_amd64": ("node-v8.4.0-darwin-x64.tar.gz", "node-v8.4.0-darwin-x64", "cc10ffbd11586bd27a7cc5e6e2d03fd3e0b341368387a03ee9a0117a0288599d"), - "8.4.0-linux_arm64": ("node-v8.4.0-linux-arm64.tar.xz", "node-v8.4.0-linux-arm64", "0a811bbe4905fc879f3cbfc976e5a37cca05bbd609774abe4332b29fea75f073"), - "8.4.0-linux_amd64": ("node-v8.4.0-linux-x64.tar.xz", "node-v8.4.0-linux-x64", "7fd86abad06f96cb2f889c2a0e25686a3de3e9a078ad946ded91ee4f28d8218a"), - "8.4.0-windows_amd64": ("node-v8.4.0-win-x64.zip", "node-v8.4.0-win-x64", "0f60c99479f74d75c7239795c90698826ba8252019d4c23e82ed0d72ceb8974f"), - # 8.5.0 - "8.5.0-darwin_amd64": ("node-v8.5.0-darwin-x64.tar.gz", "node-v8.5.0-darwin-x64", "0c8d4c4d90f858a19a29fe1ae7f42b2b7f1a4d3caaa25bea2e08479c00ebbd5f"), - "8.5.0-linux_arm64": ("node-v8.5.0-linux-arm64.tar.xz", "node-v8.5.0-linux-arm64", "e0decdebe73dba516d6c72401e337cee6277c6e00f817b0bf1c592360adfd4e6"), - "8.5.0-linux_amd64": ("node-v8.5.0-linux-x64.tar.xz", "node-v8.5.0-linux-x64", "a9651fcc6259b4a944ebb72e6dd116602c7b26ddf939599b060d1d3e6ead8c36"), - "8.5.0-windows_amd64": ("node-v8.5.0-win-x64.zip", "node-v8.5.0-win-x64", "c385d162c15a7a85d42755ee8c78c1c73bd251e2f7cbf82e5e20c824564aa9df"), - # 8.6.0 - "8.6.0-darwin_amd64": ("node-v8.6.0-darwin-x64.tar.gz", "node-v8.6.0-darwin-x64", "2c95f3194a92e8b37aab8895fbaeb1f5fabef3494600ef78a7b7e078dba9a7c9"), - "8.6.0-linux_arm64": ("node-v8.6.0-linux-arm64.tar.xz", "node-v8.6.0-linux-arm64", "6848567ab32d04694120e18c20ef47d0f4163229634f236e4bdbb8d135f3204e"), - "8.6.0-linux_amd64": ("node-v8.6.0-linux-x64.tar.xz", "node-v8.6.0-linux-x64", "e6f52c3ed7e2cc34ebddbc563434fdf043feb449a60f028101eb45227aec3444"), - "8.6.0-windows_amd64": ("node-v8.6.0-win-x64.zip", "node-v8.6.0-win-x64", "08e9b29c47567517ca95ca01d5cdb255279be5463952f92da5c372a99d620b23"), - # 8.7.0 - "8.7.0-darwin_amd64": ("node-v8.7.0-darwin-x64.tar.gz", "node-v8.7.0-darwin-x64", "5e59798c1deafd671a35ef4dcdb9b97ce98f9255a056832dc98d454613e9ea08"), - "8.7.0-linux_arm64": ("node-v8.7.0-linux-arm64.tar.xz", "node-v8.7.0-linux-arm64", "5a1a1907fbb6d90667ce70ad42602534f6cc6eda873d1c50a3259349aee73418"), - "8.7.0-linux_amd64": ("node-v8.7.0-linux-x64.tar.xz", "node-v8.7.0-linux-x64", "9d6f649576cac74ef0b6634af8265156370cf8fdf3676f03e867347d3207675d"), - "8.7.0-windows_amd64": ("node-v8.7.0-win-x64.zip", "node-v8.7.0-win-x64", "e95be435674e82ea7133c3268cb70044eabde2d0aef28b2a3df5c7d8d23cadcc"), - # 8.8.0 - "8.8.0-darwin_amd64": ("node-v8.8.0-darwin-x64.tar.gz", "node-v8.8.0-darwin-x64", "69a37e240fac48289a2a5bb75ab96091f8d6457eeaf23c0a5125250abe418176"), - "8.8.0-linux_arm64": ("node-v8.8.0-linux-arm64.tar.xz", "node-v8.8.0-linux-arm64", "454617ff94882d9a81dca0840065fb5a928ff68e8e8efe7c1748d996ab757b2e"), - "8.8.0-linux_amd64": ("node-v8.8.0-linux-x64.tar.xz", "node-v8.8.0-linux-x64", "4304c297f41085ac1f7a6a8e68496d9fd5aa3b92590e7c3c6015a23939767e72"), - "8.8.0-windows_amd64": ("node-v8.8.0-win-x64.zip", "node-v8.8.0-win-x64", "a7a1fd2c5f5c967d7df70fdec1a8b2d2d2b1b411fcdd4f23bcf8c9c837a7c3cb"), - # 8.8.1 - "8.8.1-darwin_amd64": ("node-v8.8.1-darwin-x64.tar.gz", "node-v8.8.1-darwin-x64", "bf208e29418fb3efc836d3d32b62b9162f0f0b36a0665abc0990f4e292cfc84b"), - "8.8.1-linux_arm64": ("node-v8.8.1-linux-arm64.tar.xz", "node-v8.8.1-linux-arm64", "ea8ad0286a31e7519e979fcf99e503845a95da640cd140be5cff418a68fa6263"), - "8.8.1-linux_amd64": ("node-v8.8.1-linux-x64.tar.xz", "node-v8.8.1-linux-x64", "004bc95267ef5d5b928f560582f681a679bada2201bf221735a02f4956f67b09"), - "8.8.1-windows_amd64": ("node-v8.8.1-win-x64.zip", "node-v8.8.1-win-x64", "a7e60a1a5f46ef309cbe74e423c17e69dd0a573f0c92c9e325caade3388d192a"), - # 8.9.0 - "8.9.0-darwin_amd64": ("node-v8.9.0-darwin-x64.tar.gz", "node-v8.9.0-darwin-x64", "aaf165348bc6d20012b048a88a8f3a35cba6799496e8f4c1246d85c524a84dbc"), - "8.9.0-linux_arm64": ("node-v8.9.0-linux-arm64.tar.xz", "node-v8.9.0-linux-arm64", "30cb00ac1cf6b466b1f27e7ce41363a67a66dbb64227c2dc5e33d221b09fc579"), - "8.9.0-linux_amd64": ("node-v8.9.0-linux-x64.tar.xz", "node-v8.9.0-linux-x64", "e92b91fa473f9ad805a1241907b6f1bd3f8ceac8426a8b4cb05428e62e243bdd"), - "8.9.0-windows_amd64": ("node-v8.9.0-win-x64.zip", "node-v8.9.0-win-x64", "dd971e43ff003213b0be31c1a8ce3421f72e0db2a703bc254ac685be4f7f609e"), - # 8.9.1 - "8.9.1-darwin_amd64": ("node-v8.9.1-darwin-x64.tar.gz", "node-v8.9.1-darwin-x64", "05c992a6621d28d564b92bf3051a5dc0adf83839237c0d4653a8cdb8a1c73b94"), - "8.9.1-linux_arm64": ("node-v8.9.1-linux-arm64.tar.xz", "node-v8.9.1-linux-arm64", "f774660980dcf931bf29847a5f26317823a063fa4a56f85f37c3222d77cce7c1"), - "8.9.1-linux_amd64": ("node-v8.9.1-linux-x64.tar.xz", "node-v8.9.1-linux-x64", "8be82805f7c1ab3e64d4569fb9a90ded2de78dd27cadbb91bad1bf975dae1e2d"), - "8.9.1-windows_amd64": ("node-v8.9.1-win-x64.zip", "node-v8.9.1-win-x64", "db89c6e041da359561fbe7da075bb4f9881a0f7d3e98c203e83732cfb283fa4a"), - # 8.9.2 - "8.9.2-darwin_amd64": ("node-v8.9.2-darwin-x64.tar.gz", "node-v8.9.2-darwin-x64", "ba03ae4c0ebd33e8661b5b241211ddb9f7e3b5b959d8cbd68f5941cb1ed5784d"), - "8.9.2-linux_arm64": ("node-v8.9.2-linux-arm64.tar.xz", "node-v8.9.2-linux-arm64", "cc222b4f910ff27ff66ccc96d5c7e2117942bcd161ec253d83cf430146b79bdf"), - "8.9.2-linux_amd64": ("node-v8.9.2-linux-x64.tar.xz", "node-v8.9.2-linux-x64", "d4065724e7f5f11e999f78de50fb0faac74341799cb0c0dafcbe87e0ecb0be86"), - "8.9.2-windows_amd64": ("node-v8.9.2-win-x64.zip", "node-v8.9.2-win-x64", "2afa8b899c0dddea50dcf5dda66ae7b0ca32326dbf66c52f947c082e7c95d090"), - # 8.9.3 - "8.9.3-darwin_amd64": ("node-v8.9.3-darwin-x64.tar.gz", "node-v8.9.3-darwin-x64", "fa7962f25db420a374e9e60d8a410188bd690a2f0ce8d403aa9b09d9b7ae8c1f"), - "8.9.3-linux_arm64": ("node-v8.9.3-linux-arm64.tar.xz", "node-v8.9.3-linux-arm64", "8860678ad0c24059380af254574e5a12371a2d5c92ca5e1ac7267314af7df04f"), - "8.9.3-linux_amd64": ("node-v8.9.3-linux-x64.tar.xz", "node-v8.9.3-linux-x64", "86f3aa593315f0503d069e3f4805019583ab8d86c0244a83c795d1942e3f99b7"), - "8.9.3-windows_amd64": ("node-v8.9.3-win-x64.zip", "node-v8.9.3-win-x64", "17dee0c06d088269123a27db3905a39a17a51cc0ea65435ae942c718f0f94403"), - # 8.9.4 - "8.9.4-darwin_amd64": ("node-v8.9.4-darwin-x64.tar.gz", "node-v8.9.4-darwin-x64", "ca50f7d2035eb805306e303b644bb1cde170ce2615e0a2c6e95fb80881c48c24"), - "8.9.4-linux_arm64": ("node-v8.9.4-linux-arm64.tar.xz", "node-v8.9.4-linux-arm64", "7c0369a5dbc98d0989c208ca3ee1b6db4cba576343014fdbf7d36fd2659f7089"), - "8.9.4-linux_amd64": ("node-v8.9.4-linux-x64.tar.xz", "node-v8.9.4-linux-x64", "68b94aac38cd5d87ab79c5b38306e34a20575f31a3ea788d117c20fffcca3370"), - "8.9.4-windows_amd64": ("node-v8.9.4-win-x64.zip", "node-v8.9.4-win-x64", "48946e99ac4484e071df25741d2300f3a656f476c5ff3f8116a4746c07ebe3b7"), - # 8.10.0 - "8.10.0-darwin_amd64": ("node-v8.10.0-darwin-x64.tar.gz", "node-v8.10.0-darwin-x64", "7d77bd35bc781f02ba7383779da30bd529f21849b86f14d87e097497671b0271"), - "8.10.0-linux_arm64": ("node-v8.10.0-linux-arm64.tar.xz", "node-v8.10.0-linux-arm64", "cbec410109664f75d3c988a43483576fc56f745e05e3884891df9c509fbb1b12"), - "8.10.0-linux_amd64": ("node-v8.10.0-linux-x64.tar.xz", "node-v8.10.0-linux-x64", "92220638d661a43bd0fee2bf478cb283ead6524f231aabccf14c549ebc2bc338"), - "8.10.0-windows_amd64": ("node-v8.10.0-win-x64.zip", "node-v8.10.0-win-x64", "936ada36cb6f09a5565571e15eb8006e45c5a513529c19e21d070acf0e50321b"), - # 8.11.0 - "8.11.0-darwin_amd64": ("node-v8.11.0-darwin-x64.tar.gz", "node-v8.11.0-darwin-x64", "408323335b8c691d75397c76ddd7b00490852652c78c813c586ba7eccc5c382b"), - "8.11.0-linux_arm64": ("node-v8.11.0-linux-arm64.tar.xz", "node-v8.11.0-linux-arm64", "a28f599a14ca9ef4062fa1e605b69cd046f81d3fc9a7d6dde1856fb593004b3a"), - "8.11.0-linux_amd64": ("node-v8.11.0-linux-x64.tar.xz", "node-v8.11.0-linux-x64", "180ef8c2a39c1696b9a05832883ed981ba11475ffa44ca77781a8d1c1954f944"), - "8.11.0-windows_amd64": ("node-v8.11.0-win-x64.zip", "node-v8.11.0-win-x64", "55b9c8d48b59569117a63fdb26e1de05e792c37f563feb7d44b4cd59be96aff8"), - # 8.11.1 - "8.11.1-darwin_amd64": ("node-v8.11.1-darwin-x64.tar.gz", "node-v8.11.1-darwin-x64", "5c7b05899ff56910a2b8180f139d48612f349ac2c5d20f08dbbeffbed9e3a089"), - "8.11.1-linux_arm64": ("node-v8.11.1-linux-arm64.tar.xz", "node-v8.11.1-linux-arm64", "ff518f33751baa8ea4f18853d446357c2edecd930a1526ac9b2eaa79baddc1bf"), - "8.11.1-linux_amd64": ("node-v8.11.1-linux-x64.tar.xz", "node-v8.11.1-linux-x64", "6617e245fa0f7fbe0e373e71d543fea878315324ab31dc64b4eba10e42d04c11"), - "8.11.1-windows_amd64": ("node-v8.11.1-win-x64.zip", "node-v8.11.1-win-x64", "7d49b59c2b5d73a14c138e8a215d558a64a5241cd5035d9824f608e7bba097b1"), - # 8.11.2 - "8.11.2-darwin_amd64": ("node-v8.11.2-darwin-x64.tar.gz", "node-v8.11.2-darwin-x64", "6bd619ab577a1256531e50e31924d99a094eb920de8b5bd060a056a2608282b9"), - "8.11.2-linux_arm64": ("node-v8.11.2-linux-arm64.tar.xz", "node-v8.11.2-linux-arm64", "c8e9833402277c1a5a31b41cc31c9cedad68ba87c2ef78aed6a3ced81af9da7f"), - "8.11.2-linux_amd64": ("node-v8.11.2-linux-x64.tar.xz", "node-v8.11.2-linux-x64", "213599127d24496cbf1cbb2a7c51060a3506d6b11132c59bb7f9f8a0edd210a7"), - "8.11.2-windows_amd64": ("node-v8.11.2-win-x64.zip", "node-v8.11.2-win-x64", "bbac1f56e8001a093acb2942f8a43c3bf22aec58216f446b7bf01f6f822dfe3f"), - # 8.11.3 - "8.11.3-darwin_amd64": ("node-v8.11.3-darwin-x64.tar.gz", "node-v8.11.3-darwin-x64", "77fa26b4c2fc34bdf5a5dd1cd39c93b12087fbd25148c6f04bf409698ee48b86"), - "8.11.3-linux_arm64": ("node-v8.11.3-linux-arm64.tar.xz", "node-v8.11.3-linux-arm64", "b8fddec18f20533929a07bc1d38ae63b1999a0252740094f0974b2cbea76eaa4"), - "8.11.3-linux_amd64": ("node-v8.11.3-linux-x64.tar.xz", "node-v8.11.3-linux-x64", "08e2fcfea66746bd966ea3a89f26851f1238d96f86c33eaf6274f67fce58421a"), - "8.11.3-windows_amd64": ("node-v8.11.3-win-x64.zip", "node-v8.11.3-win-x64", "91b779def1b21dcd1def7fc9671a869a1e2f989952e76fdc08a5d73570075f31"), - # 8.11.4 - "8.11.4-darwin_amd64": ("node-v8.11.4-darwin-x64.tar.gz", "node-v8.11.4-darwin-x64", "aa1de83b388581d0d9ec3276f4526ee67e17e0f1bc0deb5133f960ce5dc9f1ef"), - "8.11.4-linux_arm64": ("node-v8.11.4-linux-arm64.tar.xz", "node-v8.11.4-linux-arm64", "46e90dd916ddbf88c866de300c1b2a26f9216b19abd92b29e89439f62fb6fc1c"), - "8.11.4-linux_amd64": ("node-v8.11.4-linux-x64.tar.xz", "node-v8.11.4-linux-x64", "85ea7cbb5bf624e130585bfe3946e99c85ce5cb84c2aee474038bdbe912f908c"), - "8.11.4-windows_amd64": ("node-v8.11.4-win-x64.zip", "node-v8.11.4-win-x64", "72a21e2fcd3703994f57cf707b92e7f939df99c3e0298102e7436849e4948536"), - # 8.12.0 - "8.12.0-darwin_amd64": ("node-v8.12.0-darwin-x64.tar.gz", "node-v8.12.0-darwin-x64", "ca131b84dfcf2b6f653a6521d31f7a108ad7d83f4d7e781945b2eca8172064aa"), - "8.12.0-linux_arm64": ("node-v8.12.0-linux-arm64.tar.xz", "node-v8.12.0-linux-arm64", "0fbdcfd8cf0cb5e8f5beff84ba091fd47126ba44c628e3a351501419b211aa1a"), - "8.12.0-linux_amd64": ("node-v8.12.0-linux-x64.tar.xz", "node-v8.12.0-linux-x64", "29a20479cd1e3a03396a4e74a1784ccdd1cf2f96928b56f6ffa4c8dae40c88f2"), - "8.12.0-windows_amd64": ("node-v8.12.0-win-x64.zip", "node-v8.12.0-win-x64", "9b22c9b23148b61ea0052826b3ac0255b8a3a542c125272b8f014f15bf11b091"), - # 8.13.0 - "8.13.0-darwin_amd64": ("node-v8.13.0-darwin-x64.tar.gz", "node-v8.13.0-darwin-x64", "f6261c7a09a2c8bd77a8760a0e110410f508e5641ca132511b4883600f2d65f0"), - "8.13.0-linux_arm64": ("node-v8.13.0-linux-arm64.tar.xz", "node-v8.13.0-linux-arm64", "e8e0daab515dfd0c2323b8e1274475f61c8ca1cf582dcc254583cbf8593425e3"), - "8.13.0-linux_amd64": ("node-v8.13.0-linux-x64.tar.xz", "node-v8.13.0-linux-x64", "8fa1227b28113e25a8960d7fa6779a8c18bf20cfaafc9c5d0e46a3ee88373669"), - "8.13.0-windows_amd64": ("node-v8.13.0-win-x64.zip", "node-v8.13.0-win-x64", "46293121d207350bd8d334efb67303337933c4dac886a840f88ff6059bff9443"), - # 8.14.0 - "8.14.0-darwin_amd64": ("node-v8.14.0-darwin-x64.tar.gz", "node-v8.14.0-darwin-x64", "1e9bb233bb3c3b01826f9d7e1b3ecf1047840ce96a3a7d1921ddcb569c467329"), - "8.14.0-linux_arm64": ("node-v8.14.0-linux-arm64.tar.xz", "node-v8.14.0-linux-arm64", "fbcef89a60f1f40699589850f861fc84354a6f240610e2726c3743455dd82525"), - "8.14.0-linux_amd64": ("node-v8.14.0-linux-x64.tar.xz", "node-v8.14.0-linux-x64", "a56d1af4d7da81504338b09809cf10b3144808d47d4117b9bd9a5a4ec4d5d9b9"), - "8.14.0-windows_amd64": ("node-v8.14.0-win-x64.zip", "node-v8.14.0-win-x64", "d0be7c96a25c5d2b69f8a3510e9f4414643d5fe361b4509d455249e57f9a50af"), - # 8.14.1 - "8.14.1-darwin_amd64": ("node-v8.14.1-darwin-x64.tar.gz", "node-v8.14.1-darwin-x64", "d180a9b70de569e4c3d10c0c4a0af74e40dbca3e845df43ce1ec522bb4252eda"), - "8.14.1-linux_arm64": ("node-v8.14.1-linux-arm64.tar.xz", "node-v8.14.1-linux-arm64", "488a66288052c6497133179e4546efb7fbaf105e432cd0d9aab3471901ab5e58"), - "8.14.1-linux_amd64": ("node-v8.14.1-linux-x64.tar.xz", "node-v8.14.1-linux-x64", "1fec92a0110f692c68f7bdbec41b340c474bd77063323520786a7b9b00473daf"), - "8.14.1-windows_amd64": ("node-v8.14.1-win-x64.zip", "node-v8.14.1-win-x64", "41793b873f98ceed632b24120ef44b2df89625f3dfa90eb9298dad698249167c"), - # 8.15.0 - "8.15.0-darwin_amd64": ("node-v8.15.0-darwin-x64.tar.gz", "node-v8.15.0-darwin-x64", "a393971136408f837fbc0f7d71a63754f91cfb1851d48bd612d8219eb61956f1"), - "8.15.0-linux_arm64": ("node-v8.15.0-linux-arm64.tar.xz", "node-v8.15.0-linux-arm64", "5985c6dce65b1161ff41253da5aa4e64b8f10eb010a5d2712ea9b659f70179d7"), - "8.15.0-linux_amd64": ("node-v8.15.0-linux-x64.tar.xz", "node-v8.15.0-linux-x64", "c1f0c5facdba78b5dec5136aec40dcb00b5c7cf404d9236a99c955994f91d969"), - "8.15.0-windows_amd64": ("node-v8.15.0-win-x64.zip", "node-v8.15.0-win-x64", "13d8eab29c191bd16c69a70a556178a5adc988b243a036aaf3d5158861b60d8e"), - # 8.15.1 - "8.15.1-darwin_amd64": ("node-v8.15.1-darwin-x64.tar.gz", "node-v8.15.1-darwin-x64", "f3da0b4397150226c008a86c99d77dbb835dc62219d863654913a78332ab19a5"), - "8.15.1-linux_arm64": ("node-v8.15.1-linux-arm64.tar.xz", "node-v8.15.1-linux-arm64", "69e000d78342c3d39583922c57947a906ad723789d6294951deb10cbe8709605"), - "8.15.1-linux_amd64": ("node-v8.15.1-linux-x64.tar.xz", "node-v8.15.1-linux-x64", "5643b54c583eebaa40c1623b16cba4e3955ff5dfdd44036f6bafd761160c993d"), - "8.15.1-windows_amd64": ("node-v8.15.1-win-x64.zip", "node-v8.15.1-win-x64", "f636fa578dc079bacc6c4bef13284ddb893c99f7640b96701c2690bd9c1431f5"), - # 8.16.0 - "8.16.0-darwin_amd64": ("node-v8.16.0-darwin-x64.tar.gz", "node-v8.16.0-darwin-x64", "a6710b8af0862fab0ccdba0549dbcdad76b5f99070652e64f6a85158038fc9a6"), - "8.16.0-linux_arm64": ("node-v8.16.0-linux-arm64.tar.xz", "node-v8.16.0-linux-arm64", "4583d1cb44ff8b51cbf0402a78f2fe086c13a6c900c20c8be14e3b0e28e34335"), - "8.16.0-linux_amd64": ("node-v8.16.0-linux-x64.tar.xz", "node-v8.16.0-linux-x64", "e538ffaaf2f808c084e70f1a1d2ff5559cff892cfd56e0bb67d00b0a95fc3a7a"), - "8.16.0-windows_amd64": ("node-v8.16.0-win-x64.zip", "node-v8.16.0-win-x64", "d6baa929bacb78b347b29ebb0263220ea649ce82f3cdfd3f0b41ac725d1bbba5"), - # 8.16.1 - "8.16.1-darwin_amd64": ("node-v8.16.1-darwin-x64.tar.gz", "node-v8.16.1-darwin-x64", "ef1cb93f03bca4b9528e5d3226bdf8efa135e4b12285eee1e4760da06bac631a"), - "8.16.1-linux_arm64": ("node-v8.16.1-linux-arm64.tar.xz", "node-v8.16.1-linux-arm64", "0c61c6ae8a70d96ab19848a09b2010d29b806f2dd79177da22c743fd5e352a98"), - "8.16.1-linux_amd64": ("node-v8.16.1-linux-x64.tar.xz", "node-v8.16.1-linux-x64", "22a2580569c787ea83960bda0eae5dfaf1fe79382a52ad5fa5cd3accb93a1818"), - "8.16.1-windows_amd64": ("node-v8.16.1-win-x64.zip", "node-v8.16.1-win-x64", "396dc41740bca0355d11865780e2af8e88eb17581cd2c445ccaf29b862901ab8"), - # 8.16.2 - "8.16.2-darwin_amd64": ("node-v8.16.2-darwin-x64.tar.gz", "node-v8.16.2-darwin-x64", "359331120e83f0707219398fc543b05eee9476446ecce549c20c4d9c7c103d29"), - "8.16.2-linux_arm64": ("node-v8.16.2-linux-arm64.tar.xz", "node-v8.16.2-linux-arm64", "5afe366affb05136d25e99ec97a7a1ee1b690cc26df43567af0509f36b45e682"), - "8.16.2-linux_amd64": ("node-v8.16.2-linux-x64.tar.xz", "node-v8.16.2-linux-x64", "88617a293f5828cc94ee99c94a43fbea12b989e34fe643fc14885a14748a8da6"), - "8.16.2-windows_amd64": ("node-v8.16.2-win-x64.zip", "node-v8.16.2-win-x64", "98c615221500434155a8a5aff5fe96cd000400f3e76858ca97e6624f1d15eb73"), - # 8.17.0 - "8.17.0-darwin_amd64": ("node-v8.17.0-darwin-x64.tar.gz", "node-v8.17.0-darwin-x64", "3117430fc93e9865e4a1842616cc98767b5d6987fd9d727c8be4068714570e16"), - "8.17.0-linux_arm64": ("node-v8.17.0-linux-arm64.tar.xz", "node-v8.17.0-linux-arm64", "8318d1ee0265d84025ecbea76aaecd732974a6f4ac8492ddd84231cee77ba948"), - "8.17.0-linux_amd64": ("node-v8.17.0-linux-x64.tar.xz", "node-v8.17.0-linux-x64", "b7f6dd77fb173c8c7c30d61d0702eefc236bba74398538aa77bfa2bb47bddce6"), - "8.17.0-windows_amd64": ("node-v8.17.0-win-x64.zip", "node-v8.17.0-win-x64", "e95a63e81b27e78872c0efb9dd5809403014dbf9896035cc17adf51a350f88fa"), - # 9.0.0 - "9.0.0-darwin_amd64": ("node-v9.0.0-darwin-x64.tar.gz", "node-v9.0.0-darwin-x64", "40fe905e492deadbf84c46baba413294e516fa844ed8e68adb4117f8acabe9a9"), - "9.0.0-linux_arm64": ("node-v9.0.0-linux-arm64.tar.xz", "node-v9.0.0-linux-arm64", "0250e13705259dcf736ac4216833c2ade459e3ade94d89af68bd98ded1783cb6"), - "9.0.0-linux_amd64": ("node-v9.0.0-linux-x64.tar.xz", "node-v9.0.0-linux-x64", "8313d2f6d69dbea4cb860803a156f093041cbe352a843c06f9f05cab1f30e9cc"), - "9.0.0-windows_amd64": ("node-v9.0.0-win-x64.zip", "node-v9.0.0-win-x64", "d25901007e7c48da3af162bc1917d5bdd78c7e3b9cb64f16f90c38b59ef7b412"), - # 9.1.0 - "9.1.0-darwin_amd64": ("node-v9.1.0-darwin-x64.tar.gz", "node-v9.1.0-darwin-x64", "8e180de9b3f6a79f09a391c89de54920bbf5375337d3e13c5bfcbce85af711ab"), - "9.1.0-linux_arm64": ("node-v9.1.0-linux-arm64.tar.xz", "node-v9.1.0-linux-arm64", "37d329fa06b22e30243c503b64d9666d56abb6c0ce903251d4b43e7ad0833fb3"), - "9.1.0-linux_amd64": ("node-v9.1.0-linux-x64.tar.xz", "node-v9.1.0-linux-x64", "b796ed115c97acd23211c294129b0a834ff3a6a0f583111443b89d2b24e0d4d9"), - "9.1.0-windows_amd64": ("node-v9.1.0-win-x64.zip", "node-v9.1.0-win-x64", "f2e76f536ff4fedd9884684f0b1979e04d0fd1c2a65d7d1a5a013de885dd07b3"), - # 9.2.0 - "9.2.0-darwin_amd64": ("node-v9.2.0-darwin-x64.tar.gz", "node-v9.2.0-darwin-x64", "42f78982b8614f099bc70819db40074ff7c1c49d4bac71eca5ffe4120452f289"), - "9.2.0-linux_arm64": ("node-v9.2.0-linux-arm64.tar.xz", "node-v9.2.0-linux-arm64", "1b5c44160b7bfc9e5d63697d63c82330ae3e6094ab48449bd958ebe0baef73f0"), - "9.2.0-linux_amd64": ("node-v9.2.0-linux-x64.tar.xz", "node-v9.2.0-linux-x64", "ded9cef0243bbe8ac5a417be0c6471bed6ed82367714ccb23f79a5be0ba2bd5d"), - "9.2.0-windows_amd64": ("node-v9.2.0-win-x64.zip", "node-v9.2.0-win-x64", "5e7feb536547c715155d772f90857239b37897c1a1a664809fd84a7aeae1a724"), - # 9.2.1 - "9.2.1-darwin_amd64": ("node-v9.2.1-darwin-x64.tar.gz", "node-v9.2.1-darwin-x64", "4263f3da0280e2decd3a2ab97672e6f718acdf704664a3f1251e4ea267ccc971"), - "9.2.1-linux_arm64": ("node-v9.2.1-linux-arm64.tar.xz", "node-v9.2.1-linux-arm64", "09d362e2ed5f4af5e5dc2253bb4523d7bcb92135bcc11d9eb89ad8336229b756"), - "9.2.1-linux_amd64": ("node-v9.2.1-linux-x64.tar.xz", "node-v9.2.1-linux-x64", "548d2959939235ca56c98740f64b64058e43d1499d760603b7941b7c37ad10fe"), - "9.2.1-windows_amd64": ("node-v9.2.1-win-x64.zip", "node-v9.2.1-win-x64", "7b48ef7c718fe5748844f93101f9276a88ae1cf3c4c228f85306a6a266471b5b"), - # 9.3.0 - "9.3.0-darwin_amd64": ("node-v9.3.0-darwin-x64.tar.gz", "node-v9.3.0-darwin-x64", "0539601e67e9be6995d4ba4abe565a748e25699060631369f59166d5de43d21a"), - "9.3.0-linux_arm64": ("node-v9.3.0-linux-arm64.tar.xz", "node-v9.3.0-linux-arm64", "11300e878220962adade33238dd6e55928ad6d1362e0daa1f12e272137e68c0b"), - "9.3.0-linux_amd64": ("node-v9.3.0-linux-x64.tar.xz", "node-v9.3.0-linux-x64", "0424dd6fa059fc32e0b73f460cb587b92b13c7b0af56331bbdc53a52e43f24ea"), - "9.3.0-windows_amd64": ("node-v9.3.0-win-x64.zip", "node-v9.3.0-win-x64", "53bceda79c8d5dd8a185221a5ea2fc8f2b24ed7e0c9c91d18f6016b3624ff096"), - # 9.4.0 - "9.4.0-darwin_amd64": ("node-v9.4.0-darwin-x64.tar.gz", "node-v9.4.0-darwin-x64", "fa271c6012d517851603829af2131b92dc7b03d6f167dcd197cb83468a4971e8"), - "9.4.0-linux_arm64": ("node-v9.4.0-linux-arm64.tar.xz", "node-v9.4.0-linux-arm64", "ceed69e91723cb902fcf70e790d34147a91241509257c77a62327871dfad04fa"), - "9.4.0-linux_amd64": ("node-v9.4.0-linux-x64.tar.xz", "node-v9.4.0-linux-x64", "6d331d75a39fc5292dd128ad83f6dd14bbbdcb84ba0dfe793fade833be5de95a"), - "9.4.0-windows_amd64": ("node-v9.4.0-win-x64.zip", "node-v9.4.0-win-x64", "89d49d73eb92483af0133c97e57a5b521c523960c130c76727daa3412af7d5d8"), - # 9.5.0 - "9.5.0-darwin_amd64": ("node-v9.5.0-darwin-x64.tar.gz", "node-v9.5.0-darwin-x64", "bc5c6eb21a90dbcaf90479838416c90524fe6d47e92c928ef57d7e96a54eb5fe"), - "9.5.0-linux_arm64": ("node-v9.5.0-linux-arm64.tar.xz", "node-v9.5.0-linux-arm64", "d6a98a51c032963014f606acc80babb456f3dc4c041534ca565f573a2382b253"), - "9.5.0-linux_amd64": ("node-v9.5.0-linux-x64.tar.xz", "node-v9.5.0-linux-x64", "76dd38bb5a16a610894353228ef020653f81209a2e509d38aee78ace4410599e"), - "9.5.0-windows_amd64": ("node-v9.5.0-win-x64.zip", "node-v9.5.0-win-x64", "2fd1c3865a34827af6b5d799aee68e011a16a637276cbf71e923c8bedd010ee8"), - # 9.6.0 - "9.6.0-darwin_amd64": ("node-v9.6.0-darwin-x64.tar.gz", "node-v9.6.0-darwin-x64", "4f2001075b724791bf652b5432073aaaaec03cb00b17cda054ab0a05126035fe"), - "9.6.0-linux_arm64": ("node-v9.6.0-linux-arm64.tar.xz", "node-v9.6.0-linux-arm64", "eb10815b1d21e8f5111b90c15b19050279b44666d08a12f26906271e9f6b02dd"), - "9.6.0-linux_amd64": ("node-v9.6.0-linux-x64.tar.xz", "node-v9.6.0-linux-x64", "24b8670c819278135b4b8851d880615dee8458fdb5f5390ed0c88c383377f5d3"), - "9.6.0-windows_amd64": ("node-v9.6.0-win-x64.zip", "node-v9.6.0-win-x64", "5f1da1ef6ba776449900c931e7acc3b60e47f3080425bf0e6a1c0c5a07dbd6fd"), - # 9.6.1 - "9.6.1-darwin_amd64": ("node-v9.6.1-darwin-x64.tar.gz", "node-v9.6.1-darwin-x64", "de486bc479817df2df1f91468e85e5da228a19101422c0c9a27153c1d0013c6d"), - "9.6.1-linux_arm64": ("node-v9.6.1-linux-arm64.tar.xz", "node-v9.6.1-linux-arm64", "6246c85acab2dd92463fa1c456db31a24cd7b50b3fa556c4976c5a91473b8c8f"), - "9.6.1-linux_amd64": ("node-v9.6.1-linux-x64.tar.xz", "node-v9.6.1-linux-x64", "d38f1707faccc54fae3cb201c25b02c4a3474d2c409c64f2a1d08925b238f8ad"), - "9.6.1-windows_amd64": ("node-v9.6.1-win-x64.zip", "node-v9.6.1-win-x64", "c8176d317945ce6221473d70999ec7e725f1c9a7477e991bd7c729026c46dffb"), - # 9.7.0 - "9.7.0-darwin_amd64": ("node-v9.7.0-darwin-x64.tar.gz", "node-v9.7.0-darwin-x64", "9730cf3c4c5e228d4855c3362b63dbe59041202d89ae30d7f5ca42f60f742c5d"), - "9.7.0-linux_arm64": ("node-v9.7.0-linux-arm64.tar.xz", "node-v9.7.0-linux-arm64", "18bec2bec5e2496f33b4d9d7f3bea7411cdb5d108f390b5c1949ddeda0e61125"), - "9.7.0-linux_amd64": ("node-v9.7.0-linux-x64.tar.xz", "node-v9.7.0-linux-x64", "5c7549ceeebdc7ac5acdcae5fffbeb9585e3b9e2003e70e116d9f19c768f73d1"), - "9.7.0-windows_amd64": ("node-v9.7.0-win-x64.zip", "node-v9.7.0-win-x64", "a17796c9c888e88a9a086dc1a22cdd872d8e948fbf1e988a8132fef716990530"), - # 9.7.1 - "9.7.1-darwin_amd64": ("node-v9.7.1-darwin-x64.tar.gz", "node-v9.7.1-darwin-x64", "9ee0fa891787865b1eccc63ef56134e7de8bbf67b660a1dde9e309305a1dc3b0"), - "9.7.1-linux_arm64": ("node-v9.7.1-linux-arm64.tar.xz", "node-v9.7.1-linux-arm64", "d9143c23f7aa171449229abd456c8a9e07dc1033a1e791132b3387d439e2475d"), - "9.7.1-linux_amd64": ("node-v9.7.1-linux-x64.tar.xz", "node-v9.7.1-linux-x64", "33b3ecd0a1de891a4a2f3586f1c6498c95c1ecc15864a6e3f4f7826792850d99"), - "9.7.1-windows_amd64": ("node-v9.7.1-win-x64.zip", "node-v9.7.1-win-x64", "8590ff193e645d7f719e25d9519633376c72cfa1b36192031705e0065b7d69b2"), - # 9.8.0 - "9.8.0-darwin_amd64": ("node-v9.8.0-darwin-x64.tar.gz", "node-v9.8.0-darwin-x64", "c95326d6d8d01e5d4fbf0ca1b1e4fc0d800d00516f38532cc887e17c78f2af07"), - "9.8.0-linux_arm64": ("node-v9.8.0-linux-arm64.tar.xz", "node-v9.8.0-linux-arm64", "f3537d06f010e77739be073003fca0b477efec8a72d503dc5a1d942a19973b07"), - "9.8.0-linux_amd64": ("node-v9.8.0-linux-x64.tar.xz", "node-v9.8.0-linux-x64", "9f631739b0a9b96b8760c42869e88592db9c3fda2425202bd8b2d09e6371133a"), - "9.8.0-windows_amd64": ("node-v9.8.0-win-x64.zip", "node-v9.8.0-win-x64", "dd3971c126907a033f2bc93fdd29327af3ff5b9d151b3b90eb5db1832fe6df9e"), - # 9.9.0 - "9.9.0-darwin_amd64": ("node-v9.9.0-darwin-x64.tar.gz", "node-v9.9.0-darwin-x64", "15e71817fe172119d6f9e0166ab869f12c67bdb7371d27a78b0621c408239692"), - "9.9.0-linux_arm64": ("node-v9.9.0-linux-arm64.tar.xz", "node-v9.9.0-linux-arm64", "06feb32656c91c3963270de18d4a7befe52d2d8c0fd78fbbb7792a881ffeec7a"), - "9.9.0-linux_amd64": ("node-v9.9.0-linux-x64.tar.xz", "node-v9.9.0-linux-x64", "457151b4e6f27222232742ce44de1df73768a251309dddbfca2b385052ee977f"), - "9.9.0-windows_amd64": ("node-v9.9.0-win-x64.zip", "node-v9.9.0-win-x64", "5186747c7cab6ff153e725c42446727e460d54e6c62353d5dc550046f5c05653"), - # 9.10.0 - "9.10.0-darwin_amd64": ("node-v9.10.0-darwin-x64.tar.gz", "node-v9.10.0-darwin-x64", "c4b98cc2f3c00b770f24549de112902b56d57be7963a1047cd116b357bc61569"), - "9.10.0-linux_arm64": ("node-v9.10.0-linux-arm64.tar.xz", "node-v9.10.0-linux-arm64", "ba1d682aa1d5a12eeb39e7f51e4c67c6122b24482869ca2547c6f094eae90658"), - "9.10.0-linux_amd64": ("node-v9.10.0-linux-x64.tar.xz", "node-v9.10.0-linux-x64", "b9bfffc03ef0e2c97d463619911552c7f5b1b8699de07bb913990a8b33800cb9"), - "9.10.0-windows_amd64": ("node-v9.10.0-win-x64.zip", "node-v9.10.0-win-x64", "3f159de87fd987e7bf30bbffce722e2e5133c44fc847883053359e9b08d6fa88"), - # 9.10.1 - "9.10.1-darwin_amd64": ("node-v9.10.1-darwin-x64.tar.gz", "node-v9.10.1-darwin-x64", "ae2d9dfdd3fdb6a6fe588e5479a768ee502968f6544ac8ad6133cb2e05726793"), - "9.10.1-linux_arm64": ("node-v9.10.1-linux-arm64.tar.xz", "node-v9.10.1-linux-arm64", "9b084b30e48a3a145fcc6cb282a1b46145b703c13a5eaee40afc7f9d82ad697b"), - "9.10.1-linux_amd64": ("node-v9.10.1-linux-x64.tar.xz", "node-v9.10.1-linux-x64", "fc810056be2a0665d0f67b42d25e1b8442bd885d4893b3256a7cfe676bd973de"), - "9.10.1-windows_amd64": ("node-v9.10.1-win-x64.zip", "node-v9.10.1-win-x64", "43bf882dec1550e00a039f77190a3e2a778354577e542563be4b5c205de17df1"), - # 9.11.0 - "9.11.0-darwin_amd64": ("node-v9.11.0-darwin-x64.tar.gz", "node-v9.11.0-darwin-x64", "e562cfc01a4d8e62c1d86f59cef4f00439b4ad279c97f95f76a39f4b3530b8e5"), - "9.11.0-linux_arm64": ("node-v9.11.0-linux-arm64.tar.xz", "node-v9.11.0-linux-arm64", "8df1dd7a1ec298900cf699a7ee8e5f0f478075d0e4c4fd3fb6e3a4ad3527545c"), - "9.11.0-linux_amd64": ("node-v9.11.0-linux-x64.tar.xz", "node-v9.11.0-linux-x64", "a4349420b74804b3404a4eea27341297968f61998b01f6504dbbad603700e944"), - "9.11.0-windows_amd64": ("node-v9.11.0-win-x64.zip", "node-v9.11.0-win-x64", "6e7f586ece923fd71e36d5db80b6a6d731a2b156464058cb2304f6c0192637cb"), - # 9.11.1 - "9.11.1-darwin_amd64": ("node-v9.11.1-darwin-x64.tar.gz", "node-v9.11.1-darwin-x64", "7b1fb394aa41a62b477e36df16644bd383cc9084808511f6cd318b835a06aac6"), - "9.11.1-linux_arm64": ("node-v9.11.1-linux-arm64.tar.xz", "node-v9.11.1-linux-arm64", "dba2de106fbde2013a204ca9fafdfe67c0426b4e63d186f888e59432ad2dbb03"), - "9.11.1-linux_amd64": ("node-v9.11.1-linux-x64.tar.xz", "node-v9.11.1-linux-x64", "4d27a95d5c2f1c8ef99118794c9c4903e63963418d3e16ca7576760cff39879b"), - "9.11.1-windows_amd64": ("node-v9.11.1-win-x64.zip", "node-v9.11.1-win-x64", "0a3566d57ccb7fed95d18fc6c3bc1552a1b1e4753f9bc6c5d45e04f325e1ee53"), - # 9.11.2 - "9.11.2-darwin_amd64": ("node-v9.11.2-darwin-x64.tar.gz", "node-v9.11.2-darwin-x64", "340993096108d1dc0e0b598560d87ec645fc94b0fc83a423c36343f2da45f4b8"), - "9.11.2-linux_arm64": ("node-v9.11.2-linux-arm64.tar.xz", "node-v9.11.2-linux-arm64", "9a713a6f4473425b83bf67e13e4b3c9f1f683c996b913f1f6854d208996367b6"), - "9.11.2-linux_amd64": ("node-v9.11.2-linux-x64.tar.xz", "node-v9.11.2-linux-x64", "a2e7fe4ee3c4e3f31e00dff241c92c2ed779a9f36735578603d2be966f938a4b"), - "9.11.2-windows_amd64": ("node-v9.11.2-win-x64.zip", "node-v9.11.2-win-x64", "051db8f4d3c0503e3082173f16b25e2362de8f9a5e509c403992b2069d826c25"), - # 10.0.0 - "10.0.0-darwin_amd64": ("node-v10.0.0-darwin-x64.tar.gz", "node-v10.0.0-darwin-x64", "37447fdb5f5cbcf1307ca1661ed67e6e911e0e988c0cb6d15f92eebb211dce88"), - "10.0.0-linux_arm64": ("node-v10.0.0-linux-arm64.tar.xz", "node-v10.0.0-linux-arm64", "18f626a967d72294d969bdf000ca80ef483a8bb75482a2c4d14f5e0141626611"), - "10.0.0-linux_amd64": ("node-v10.0.0-linux-x64.tar.xz", "node-v10.0.0-linux-x64", "d57c391daef40e706ca71abeaf9d53271c9d0fdb9cd18a80f6296b04dbaf2d5a"), - "10.0.0-windows_amd64": ("node-v10.0.0-win-x64.zip", "node-v10.0.0-win-x64", "a95d88e2c28cbcbadb1fa431ec0b686f196dda00d4a25b0829450dc8f5214ec3"), - # 10.1.0 - "10.1.0-darwin_amd64": ("node-v10.1.0-darwin-x64.tar.gz", "node-v10.1.0-darwin-x64", "383ef526e27b92113f8dc0dad406b771f6ecaf9e3fddd4f5357590a3cf543d7b"), - "10.1.0-linux_arm64": ("node-v10.1.0-linux-arm64.tar.xz", "node-v10.1.0-linux-arm64", "01e252589cf1ce61d2aaa316895001eb24c90a48b04a0e4896de252d2840ffe9"), - "10.1.0-linux_amd64": ("node-v10.1.0-linux-x64.tar.xz", "node-v10.1.0-linux-x64", "cb5860c0d3249330d882fb8c6619c082cf3cda177536d4ed979388dde0034f22"), - "10.1.0-windows_amd64": ("node-v10.1.0-win-x64.zip", "node-v10.1.0-win-x64", "8448bbd50731e98a4ed8bb4f3f3964170ff3a26418e9bcb3caf770faa9fb06d7"), - # 10.2.0 - "10.2.0-darwin_amd64": ("node-v10.2.0-darwin-x64.tar.gz", "node-v10.2.0-darwin-x64", "35fcc482d07218119ce5fde62620994324f03f8c4426dd680886c6844b62232a"), - "10.2.0-linux_arm64": ("node-v10.2.0-linux-arm64.tar.xz", "node-v10.2.0-linux-arm64", "8f970be59a6a11f511a04ae1bd303746f0c5409498e062fb1d263d3c3c1093bd"), - "10.2.0-linux_amd64": ("node-v10.2.0-linux-x64.tar.xz", "node-v10.2.0-linux-x64", "a6ef9adc824db795b36f81ad0856adc5c878395c4ce2af20f5ba7b76a1ca9982"), - "10.2.0-windows_amd64": ("node-v10.2.0-win-x64.zip", "node-v10.2.0-win-x64", "7d7144d57b1b910d10f51d5445ae4306f10d3d9f45ca08b49e8777472993db51"), - # 10.2.1 - "10.2.1-darwin_amd64": ("node-v10.2.1-darwin-x64.tar.gz", "node-v10.2.1-darwin-x64", "6ffa149f67e8bd68d291d62591b6573146a65682affd99eefe2835a9c048d3ef"), - "10.2.1-linux_arm64": ("node-v10.2.1-linux-arm64.tar.xz", "node-v10.2.1-linux-arm64", "6899cab91fd01af6b73183d23693120ff0de547601d01822b53647d0f5d934ee"), - "10.2.1-linux_amd64": ("node-v10.2.1-linux-x64.tar.xz", "node-v10.2.1-linux-x64", "59ffaba5f54ea6a62ada1013a0cc1741c6e6fa790ab9ab2302a98932e7fb85d5"), - "10.2.1-windows_amd64": ("node-v10.2.1-win-x64.zip", "node-v10.2.1-win-x64", "ebe78920d72b7a226a345653f3f718f99dc531add35157d37d229050f3685705"), - # 10.3.0 - "10.3.0-darwin_amd64": ("node-v10.3.0-darwin-x64.tar.gz", "node-v10.3.0-darwin-x64", "0bb5b7e3fe8cccda2abda958d1eb0408f1518a8b0cb58b75ade5d507cd5d6053"), - "10.3.0-linux_arm64": ("node-v10.3.0-linux-arm64.tar.xz", "node-v10.3.0-linux-arm64", "6811b7b9807135902990508143605c0c758d07f7726092ed1b2e27cc60111bd0"), - "10.3.0-linux_amd64": ("node-v10.3.0-linux-x64.tar.xz", "node-v10.3.0-linux-x64", "eb3c3e2585494699716ad3197c8eedf4003d3f110829b30c5a0dc34414c47423"), - "10.3.0-windows_amd64": ("node-v10.3.0-win-x64.zip", "node-v10.3.0-win-x64", "65d586afb087406a2800d8e51f664c88b26d510f077b85a3b177a1bb79f73677"), - # 10.4.0 - "10.4.0-darwin_amd64": ("node-v10.4.0-darwin-x64.tar.gz", "node-v10.4.0-darwin-x64", "82b27983c990a6860e8d729e0b15acf9643ffca0eff282a926268849dfd2c3d2"), - "10.4.0-linux_arm64": ("node-v10.4.0-linux-arm64.tar.xz", "node-v10.4.0-linux-arm64", "18d01e0937cdd05386f59f792613aac7b6614a37312ede0c299bd589584976e9"), - "10.4.0-linux_amd64": ("node-v10.4.0-linux-x64.tar.xz", "node-v10.4.0-linux-x64", "ce2232578408f7d6bdc7d8bbb49d3416225fe68c52540ac23f4a6e0294d947f6"), - "10.4.0-windows_amd64": ("node-v10.4.0-win-x64.zip", "node-v10.4.0-win-x64", "315fc4099902a71b634fee15e4e160a0780703c59a66e7e4542045f6f2b91451"), - # 10.4.1 - "10.4.1-darwin_amd64": ("node-v10.4.1-darwin-x64.tar.gz", "node-v10.4.1-darwin-x64", "c232241c97e1f4659186205d50b44132e62b61cdc517f1fb86905a21d03e9189"), - "10.4.1-linux_arm64": ("node-v10.4.1-linux-arm64.tar.xz", "node-v10.4.1-linux-arm64", "c00b75a28eb69e4238c9d560f50da3652395ba7bfa6e325d5a2b0cd0926070f7"), - "10.4.1-linux_amd64": ("node-v10.4.1-linux-x64.tar.xz", "node-v10.4.1-linux-x64", "6196daea2b291cdb865b3597e6b819b13068cb2c9dbf27cb150256c557a81082"), - "10.4.1-windows_amd64": ("node-v10.4.1-win-x64.zip", "node-v10.4.1-win-x64", "70e0b9f0036f878884fdfc585c1001a439508d1d4e6448c4aced60274a2dc191"), - # 10.5.0 - "10.5.0-darwin_amd64": ("node-v10.5.0-darwin-x64.tar.gz", "node-v10.5.0-darwin-x64", "a85bda6ab91da8595e71736944cbd77c61afe05092217defd0fb74d9f77109f0"), - "10.5.0-linux_arm64": ("node-v10.5.0-linux-arm64.tar.xz", "node-v10.5.0-linux-arm64", "28e6baa2a4ac5b0f0f5adf85489574038d0a4ca48efe76a4e5831b6b222652ba"), - "10.5.0-linux_amd64": ("node-v10.5.0-linux-x64.tar.xz", "node-v10.5.0-linux-x64", "8b12be967f5962a8173dca235e1a6f642ee29dcf5fc27697004af898ffeca187"), - "10.5.0-windows_amd64": ("node-v10.5.0-win-x64.zip", "node-v10.5.0-win-x64", "ce2b1f9976de64bcc0a5ce877edee0d29c4db1ebab5a7fd713afffd661e99e08"), - # 10.6.0 - "10.6.0-darwin_amd64": ("node-v10.6.0-darwin-x64.tar.gz", "node-v10.6.0-darwin-x64", "537efef0c6fd998502fa10baf82ee21edf513256cc73575991354e19442d0b69"), - "10.6.0-linux_arm64": ("node-v10.6.0-linux-arm64.tar.xz", "node-v10.6.0-linux-arm64", "be37aade1c085093e276b5822a05233a1057bcafe77f5b9526dbdf622330c4bb"), - "10.6.0-linux_amd64": ("node-v10.6.0-linux-x64.tar.xz", "node-v10.6.0-linux-x64", "cfd47380729f2451169b8900b3bd65e4b9db669d1d540613758cd2ededf7b5e6"), - "10.6.0-windows_amd64": ("node-v10.6.0-win-x64.zip", "node-v10.6.0-win-x64", "0b58e0414d76e48432588910ea682f002ba69d7be88deb3355ceffb2fe472f6d"), - # 10.7.0 - "10.7.0-darwin_amd64": ("node-v10.7.0-darwin-x64.tar.gz", "node-v10.7.0-darwin-x64", "913473055605c8ae92f46923e6ac400133895aafe7766574fd46899bc6b0c5a4"), - "10.7.0-linux_arm64": ("node-v10.7.0-linux-arm64.tar.xz", "node-v10.7.0-linux-arm64", "c23856b3123f9e2cfae3f8b0668019f83e9450ee78dede02a8d43031255b7ba0"), - "10.7.0-linux_amd64": ("node-v10.7.0-linux-x64.tar.xz", "node-v10.7.0-linux-x64", "ad1d44cbe64ef44db5d8d42690a76dd186d6a6f71a3c3d38449757fe73135329"), - "10.7.0-windows_amd64": ("node-v10.7.0-win-x64.zip", "node-v10.7.0-win-x64", "a0914d4c1fb82f51a03a4f57c66c9ce6a65ccd4f3237706042c55799843f4b14"), - # 10.8.0 - "10.8.0-darwin_amd64": ("node-v10.8.0-darwin-x64.tar.gz", "node-v10.8.0-darwin-x64", "b800d8b55c234b1f7d972e9464b00328a1caea5f86f94fdb5fc88ebbed7852b7"), - "10.8.0-linux_arm64": ("node-v10.8.0-linux-arm64.tar.xz", "node-v10.8.0-linux-arm64", "0333da24d1fe54abac26b0a06437d3336c0fb4816b280507a9851ab3742ef2e4"), - "10.8.0-linux_amd64": ("node-v10.8.0-linux-x64.tar.xz", "node-v10.8.0-linux-x64", "497f3b243d7374ee0fe9ab200b175868b172c3a22282cedc6d7fb0cad82471f0"), - "10.8.0-windows_amd64": ("node-v10.8.0-win-x64.zip", "node-v10.8.0-win-x64", "f98575fb551d78691a6f74ca4f9c254bbd9fb62135e9ec0ab7ec8c40a03648b0"), - # 10.9.0 - "10.9.0-darwin_amd64": ("node-v10.9.0-darwin-x64.tar.gz", "node-v10.9.0-darwin-x64", "3c4fe75dacfcc495a432a7ba2dec9045cff359af2a5d7d0429c84a424ef686fc"), - "10.9.0-linux_arm64": ("node-v10.9.0-linux-arm64.tar.xz", "node-v10.9.0-linux-arm64", "3d6aa717d98bbf901c5325a02a81048eb47212bdc44963ef8d59c6e52e987b7c"), - "10.9.0-linux_amd64": ("node-v10.9.0-linux-x64.tar.xz", "node-v10.9.0-linux-x64", "c5acb8b7055ee0b6ac653dc4e458c5db45348cecc564b388f4ed1def84a329ff"), - "10.9.0-windows_amd64": ("node-v10.9.0-win-x64.zip", "node-v10.9.0-win-x64", "6a75cdbb69d62ed242d6cbf0238a470bcbf628567ee339d4d098a5efcda2401e"), - # 10.10.0 - "10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e"), - "10.10.0-linux_arm64": ("node-v10.10.0-linux-arm64.tar.xz", "node-v10.10.0-linux-arm64", "7d57961d18ea70b4e99906d87f9de1a2defc45a36fcd8cd84295e9ae5c4281da"), - "10.10.0-linux_amd64": ("node-v10.10.0-linux-x64.tar.xz", "node-v10.10.0-linux-x64", "686d2c7b7698097e67bcd68edc3d6b5d28d81f62436c7cf9e7779d134ec262a9"), - "10.10.0-windows_amd64": ("node-v10.10.0-win-x64.zip", "node-v10.10.0-win-x64", "70c46e6451798be9d052b700ce5dadccb75cf917f6bf0d6ed54344c856830cfb"), - # 10.11.0 - "10.11.0-darwin_amd64": ("node-v10.11.0-darwin-x64.tar.gz", "node-v10.11.0-darwin-x64", "32ad850a0e5cfdefc32d4267707abad05bd5c9eabb047e8ed9bf97faeffc52b6"), - "10.11.0-linux_arm64": ("node-v10.11.0-linux-arm64.tar.xz", "node-v10.11.0-linux-arm64", "289302470520fd63e2a92a878869061dda557fe1aabfea2bd5ff88f7af76d98d"), - "10.11.0-linux_amd64": ("node-v10.11.0-linux-x64.tar.xz", "node-v10.11.0-linux-x64", "c2eab149e7f0712a6a3eb672a76d657b049a3b3ae0c2edc2e0571df5049fe82c"), - "10.11.0-windows_amd64": ("node-v10.11.0-win-x64.zip", "node-v10.11.0-win-x64", "78b2a7a4305aa108b9a82ac7586d7200ab51428c2b882d1318fb44ca300a8609"), - # 10.12.0 - "10.12.0-darwin_amd64": ("node-v10.12.0-darwin-x64.tar.gz", "node-v10.12.0-darwin-x64", "f275c901b9aeaacea2bf22648329c2e9ade5e1ff63a446b83446d5d4e19464cc"), - "10.12.0-linux_arm64": ("node-v10.12.0-linux-arm64.tar.xz", "node-v10.12.0-linux-arm64", "b327deca4e380559c8c1fbacb9e668b49127ea998de4c8fe83912838cf786786"), - "10.12.0-linux_amd64": ("node-v10.12.0-linux-x64.tar.xz", "node-v10.12.0-linux-x64", "4eba2e9a6db95745b769915d58e57df6ca6724ec1f023f76556fce30ceca2367"), - "10.12.0-windows_amd64": ("node-v10.12.0-win-x64.zip", "node-v10.12.0-win-x64", "44c938cf1409562d25d23b7c6bce110b53cd2a73774bed573b2979f0d88f51f8"), - # 10.13.0 - "10.13.0-darwin_amd64": ("node-v10.13.0-darwin-x64.tar.gz", "node-v10.13.0-darwin-x64", "815a5d18516934a3963ace9f0574f7d41f0c0ce9186a19be3d89e039e57598c5"), - "10.13.0-linux_arm64": ("node-v10.13.0-linux-arm64.tar.xz", "node-v10.13.0-linux-arm64", "1537ebe64dc34a2a9b8ab6254213079789e9d59ed0ed26987afb1da37b6a8f87"), - "10.13.0-linux_amd64": ("node-v10.13.0-linux-x64.tar.xz", "node-v10.13.0-linux-x64", "0dc6dba645550b66f8f00541a428c29da7c3cde32fb7eda2eb626a9db3bbf08d"), - "10.13.0-windows_amd64": ("node-v10.13.0-win-x64.zip", "node-v10.13.0-win-x64", "eb09c9e9677f1919ec1ca78623c09b2a718ec5388b72b7662d5c41e5f628a52c"), - # 10.14.0 - "10.14.0-darwin_amd64": ("node-v10.14.0-darwin-x64.tar.gz", "node-v10.14.0-darwin-x64", "dd044aa0ddeb5e32fefa80a13b33bafe3f7e0536e15fe93c1e81b052c2f1965c"), - "10.14.0-linux_arm64": ("node-v10.14.0-linux-arm64.tar.xz", "node-v10.14.0-linux-arm64", "4d80efe675c40d6d3af697e17e33cad8af1caf50655276ca99d0c4ca8e2f2cf2"), - "10.14.0-linux_amd64": ("node-v10.14.0-linux-x64.tar.xz", "node-v10.14.0-linux-x64", "5f576f9893e0335f0c1b071a42fdf8b3e302577ad6ea38237aaef08ad0ca898e"), - "10.14.0-windows_amd64": ("node-v10.14.0-win-x64.zip", "node-v10.14.0-win-x64", "a3acbbdbbdb6ff6d5ae6e6f5ccea55aef83cfa54f52c080538edc3ac6326797b"), - # 10.14.1 - "10.14.1-darwin_amd64": ("node-v10.14.1-darwin-x64.tar.gz", "node-v10.14.1-darwin-x64", "91ebe7d6da8a40c72618ac9d0b0a8e224ae01febd3f5595b43b1a58190dcacb1"), - "10.14.1-linux_arm64": ("node-v10.14.1-linux-arm64.tar.xz", "node-v10.14.1-linux-arm64", "c1ca91356b007cc7624c7a9e00f3b7bed8dd10aba959be5f55e4ff13da334828"), - "10.14.1-linux_amd64": ("node-v10.14.1-linux-x64.tar.xz", "node-v10.14.1-linux-x64", "b65e735cdf61fb80f114c498c8955efe8e096e4b3e173281d68aa9d2c05b0f97"), - "10.14.1-windows_amd64": ("node-v10.14.1-win-x64.zip", "node-v10.14.1-win-x64", "7d51aa233ad290eb916a4c3134815204eb34ecb0a001dcecc5ea57333030f303"), - # 10.14.2 - "10.14.2-darwin_amd64": ("node-v10.14.2-darwin-x64.tar.gz", "node-v10.14.2-darwin-x64", "5306da5db576d9c984167b4693600a2e3074cc5a701961279837753fa2139baa"), - "10.14.2-linux_arm64": ("node-v10.14.2-linux-arm64.tar.xz", "node-v10.14.2-linux-arm64", "8493b30c99d697b24fbaa5bfb3b43108ab3e334ab674188b7b7982fef903aa04"), - "10.14.2-linux_amd64": ("node-v10.14.2-linux-x64.tar.xz", "node-v10.14.2-linux-x64", "e43de13bf7bee440a106a844c1bc3a2adb8829fd58b857702c8f1838fdd02a2a"), - "10.14.2-windows_amd64": ("node-v10.14.2-win-x64.zip", "node-v10.14.2-win-x64", "45841fe5ffe87378c748dcb9799507f6192c34117409b2c6c18480d112a337de"), - # 10.15.0 - "10.15.0-darwin_amd64": ("node-v10.15.0-darwin-x64.tar.gz", "node-v10.15.0-darwin-x64", "353402461c898c569658d0a963790476f4d9828cc6c9286d81617ee8afcba4e8"), - "10.15.0-linux_arm64": ("node-v10.15.0-linux-arm64.tar.xz", "node-v10.15.0-linux-arm64", "77aa4a02c5471b6eb7ba935cbc6829889a27115353cff7226a208c08b654e972"), - "10.15.0-linux_amd64": ("node-v10.15.0-linux-x64.tar.xz", "node-v10.15.0-linux-x64", "4ee8503c1133797777880ebf75dcf6ae3f9b894c66fd2d5da507e407064c13b5"), - "10.15.0-windows_amd64": ("node-v10.15.0-win-x64.zip", "node-v10.15.0-win-x64", "c1dbc9372ad789cd21727cb5f63b4a44ed3eae216763959cff8e68e68c6fcfe1"), - # 10.15.1 - "10.15.1-darwin_amd64": ("node-v10.15.1-darwin-x64.tar.gz", "node-v10.15.1-darwin-x64", "327dcef4b61dead1ae04d2743d3390a2b7e6cc6c389c62cfcfeb0486c5a9f181"), - "10.15.1-linux_arm64": ("node-v10.15.1-linux-arm64.tar.xz", "node-v10.15.1-linux-arm64", "0fb6d24972fd991f476a942b1b21aca5059f93b9302318c5883120445ee6cd54"), - "10.15.1-linux_amd64": ("node-v10.15.1-linux-x64.tar.xz", "node-v10.15.1-linux-x64", "77db68544c7812e925b82ccc41cd4669fdeb191cea8e20053e3f0e86889c4fce"), - "10.15.1-windows_amd64": ("node-v10.15.1-win-x64.zip", "node-v10.15.1-win-x64", "bb5bdc9363e4050c94b3f82888141b81630230f86e520abb7dde49081f1292b9"), - # 10.15.2 - "10.15.2-darwin_amd64": ("node-v10.15.2-darwin-x64.tar.gz", "node-v10.15.2-darwin-x64", "8bbb6c15a0572f493d33ef044d06ccd0ff7ead8daa67f9a32df3e863277568e8"), - "10.15.2-linux_arm64": ("node-v10.15.2-linux-arm64.tar.xz", "node-v10.15.2-linux-arm64", "2978e82d85654505d732b40dfa58f21276d99712d5d001101eaf87100d350139"), - "10.15.2-linux_amd64": ("node-v10.15.2-linux-x64.tar.xz", "node-v10.15.2-linux-x64", "c10eece562cfeef1627f0d2bde7dc0be810948f6bf9a932e30a8c3b425652015"), - "10.15.2-windows_amd64": ("node-v10.15.2-win-x64.zip", "node-v10.15.2-win-x64", "d97cf4788ccea6deef037ce27c91cc1a814644b878311b71811ab04d0bb8c47f"), - # 10.15.3 - "10.15.3-darwin_amd64": ("node-v10.15.3-darwin-x64.tar.gz", "node-v10.15.3-darwin-x64", "7a5eaa1f69614375a695ccb62017248e5dcc15b0b8edffa7db5b52997cf992ba"), - "10.15.3-linux_arm64": ("node-v10.15.3-linux-arm64.tar.xz", "node-v10.15.3-linux-arm64", "3d7abbf64bffb07c55168ca0f1c17be12b0d93affe9b6cadd39724649215fab9"), - "10.15.3-linux_amd64": ("node-v10.15.3-linux-x64.tar.xz", "node-v10.15.3-linux-x64", "faddbe418064baf2226c2fcbd038c3ef4ae6f936eb952a1138c7ff8cfe862438"), - "10.15.3-windows_amd64": ("node-v10.15.3-win-x64.zip", "node-v10.15.3-win-x64", "93c881fdc0455a932dd5b506a7a03df27d9fe36155c1d3f351ebfa4e20bf1c0d"), - # 10.16.0 - "10.16.0-darwin_amd64": ("node-v10.16.0-darwin-x64.tar.gz", "node-v10.16.0-darwin-x64", "6c009df1b724026d84ae9a838c5b382662e30f6c5563a0995532f2bece39fa9c"), - "10.16.0-linux_arm64": ("node-v10.16.0-linux-arm64.tar.xz", "node-v10.16.0-linux-arm64", "ae2e74ab2f5dbff96bf0b7d8457004bf3538233916f8834740bbe2d5a35442e5"), - "10.16.0-linux_amd64": ("node-v10.16.0-linux-x64.tar.xz", "node-v10.16.0-linux-x64", "1827f5b99084740234de0c506f4dd2202a696ed60f76059696747c34339b9d48"), - "10.16.0-windows_amd64": ("node-v10.16.0-win-x64.zip", "node-v10.16.0-win-x64", "aa22cb357f0fb54ccbc06b19b60e37eefea5d7dd9940912675d3ed988bf9a059"), - # 10.16.1 - "10.16.1-darwin_amd64": ("node-v10.16.1-darwin-x64.tar.gz", "node-v10.16.1-darwin-x64", "328e61fdacfe2f6f1a049d57e248b3eafc0345747831323a14fe1edf98d9b3bb"), - "10.16.1-linux_arm64": ("node-v10.16.1-linux-arm64.tar.xz", "node-v10.16.1-linux-arm64", "c46ba1a8e9b9c0490ae81f8b2b13d332ed6f5c86d172fa817f749042ab329b93"), - "10.16.1-linux_amd64": ("node-v10.16.1-linux-x64.tar.xz", "node-v10.16.1-linux-x64", "127d9b2f485523805208f867fc513842570b29b4d6831773eeb6dd403a22ba9d"), - "10.16.1-windows_amd64": ("node-v10.16.1-win-x64.zip", "node-v10.16.1-win-x64", "1ff8b26670e1b935b51f4b795728f29845c31a3c38b3220b4fe71fb139bc5623"), - # 10.16.2 - "10.16.2-darwin_amd64": ("node-v10.16.2-darwin-x64.tar.gz", "node-v10.16.2-darwin-x64", "21ee8bdb04909f553e97af7c6e41009e15d06b886dd3e2ca8a92ce3e0a148a09"), - "10.16.2-linux_arm64": ("node-v10.16.2-linux-arm64.tar.xz", "node-v10.16.2-linux-arm64", "5fb2b7d3c2b6b40e237cdc172eabfac2e485ee309ac2bcfbff413de1ed79a59e"), - "10.16.2-linux_amd64": ("node-v10.16.2-linux-x64.tar.xz", "node-v10.16.2-linux-x64", "406718dc2f3164b3d1981c36b68b70ea448fbbac29cefbe23ff286b3cd55f264"), - "10.16.2-windows_amd64": ("node-v10.16.2-win-x64.zip", "node-v10.16.2-win-x64", "01654dc79d82e9f3c89d01c8cf1cdce68d3a9118dbe968ee86a3ffd6ee153567"), - # 10.16.3 - "10.16.3-darwin_amd64": ("node-v10.16.3-darwin-x64.tar.gz", "node-v10.16.3-darwin-x64", "6febc571e1543c2845fa919c6d06b36a24e4e142c91aedbe28b6ff7d296119e4"), - "10.16.3-linux_arm64": ("node-v10.16.3-linux-arm64.tar.xz", "node-v10.16.3-linux-arm64", "8ee77bad022bd460bf2867a97bf56ce7ddc4aa2ace067e45995fb1721a958428"), - "10.16.3-linux_amd64": ("node-v10.16.3-linux-x64.tar.xz", "node-v10.16.3-linux-x64", "d2271fd8cf997fa7447d638dfa92749ff18ca4b0d796bf89f2a82bf7800d5506"), - "10.16.3-windows_amd64": ("node-v10.16.3-win-x64.zip", "node-v10.16.3-win-x64", "19aa47de7c5950d7bd71a1e878013b98d93871cc311d7185f5472e6d3f633146"), - # 10.17.0 - "10.17.0-darwin_amd64": ("node-v10.17.0-darwin-x64.tar.gz", "node-v10.17.0-darwin-x64", "9b96140ad74b217f216c83ddf50d1f70a4296576f6edbbbfb65d0f478015d9df"), - "10.17.0-linux_arm64": ("node-v10.17.0-linux-arm64.tar.xz", "node-v10.17.0-linux-arm64", "3ab8ee2b5c9aa4d060c68667ddef70cc2960e12bcfe4a0f2de7ebc0f008bf13d"), - "10.17.0-linux_amd64": ("node-v10.17.0-linux-x64.tar.xz", "node-v10.17.0-linux-x64", "2b49cd296f969ef0ffb7922719ffa6542bedb89d6c959a47c023d11ce222f5d6"), - "10.17.0-windows_amd64": ("node-v10.17.0-win-x64.zip", "node-v10.17.0-win-x64", "e84a1f3685219811bb4662eb3e3b55abd0c764c24cd2b224ba31b3f9f162baf6"), - # 10.18.0 - "10.18.0-darwin_amd64": ("node-v10.18.0-darwin-x64.tar.gz", "node-v10.18.0-darwin-x64", "a7af53e3363e8ab654b97387bc7cf352dddb324562404c1d35fe10cba3f27e0f"), - "10.18.0-linux_arm64": ("node-v10.18.0-linux-arm64.tar.xz", "node-v10.18.0-linux-arm64", "b2b34dd43ea3979890663afa270e09e09c219f046e39e8e439eeda2821cc9643"), - "10.18.0-linux_amd64": ("node-v10.18.0-linux-x64.tar.xz", "node-v10.18.0-linux-x64", "eac160acfc2c5b6fca021baa9943341fea50859f19c7ccbd56669b1fe04e691e"), - "10.18.0-windows_amd64": ("node-v10.18.0-win-x64.zip", "node-v10.18.0-win-x64", "56afcc9c191dfc99017725be92ac1331e23afb1930913446eb91852cb02a8687"), - # 10.18.1 - "10.18.1-darwin_amd64": ("node-v10.18.1-darwin-x64.tar.gz", "node-v10.18.1-darwin-x64", "2b2d3379420e626eee393cabf1c90bc55957ff5bb067b82a74eb2f92147d6757"), - "10.18.1-linux_arm64": ("node-v10.18.1-linux-arm64.tar.xz", "node-v10.18.1-linux-arm64", "9a6203697e0087a1c909961481d579c76777df1df622921e4ce16198851f30fe"), - "10.18.1-linux_amd64": ("node-v10.18.1-linux-x64.tar.xz", "node-v10.18.1-linux-x64", "8cc40f45c2c62529b15e83a6bbe0ac1febf57af3c5720df68067c96c0fddbbdf"), - "10.18.1-windows_amd64": ("node-v10.18.1-win-x64.zip", "node-v10.18.1-win-x64", "fb27bb95c27c72f2e25d0c41309b606b2ae48ba0d6094a19f206ad1df9dc5e19"), - # 10.19.0 - "10.19.0-darwin_amd64": ("node-v10.19.0-darwin-x64.tar.gz", "node-v10.19.0-darwin-x64", "b16328570651be44213a2303c1f9515fc506e0a96a273806f71ed000e3ca3cb3"), - "10.19.0-linux_arm64": ("node-v10.19.0-linux-arm64.tar.xz", "node-v10.19.0-linux-arm64", "77bdbf859fc38e6e860efd479b0a7b7b6bd3e7cb05337e5cc5638251eb5d3a59"), - "10.19.0-linux_amd64": ("node-v10.19.0-linux-x64.tar.xz", "node-v10.19.0-linux-x64", "34127c7c6b1ba02d6d4dc3a926f38a5fb88bb37fc7f051349005ce331c7a53c6"), - "10.19.0-windows_amd64": ("node-v10.19.0-win-x64.zip", "node-v10.19.0-win-x64", "210efd45a7f79cf4c350d8f575f990becdd3833cd922796a4c83b27996f5679e"), - # 10.20.0 - "10.20.0-darwin_amd64": ("node-v10.20.0-darwin-x64.tar.gz", "node-v10.20.0-darwin-x64", "c153832774afcae89a82efb55ed80557d1a41e1880638ad57128a9a3762d212f"), - "10.20.0-linux_arm64": ("node-v10.20.0-linux-arm64.tar.xz", "node-v10.20.0-linux-arm64", "f3567924d6b7f0fa55c4ee0a7330ec0dcaeec557982794796d6b312e7053c674"), - "10.20.0-linux_amd64": ("node-v10.20.0-linux-x64.tar.xz", "node-v10.20.0-linux-x64", "c5721a89feecc0e98d42386e171cb763c077f782033ddc998819edcf9d93b691"), - "10.20.0-windows_amd64": ("node-v10.20.0-win-x64.zip", "node-v10.20.0-win-x64", "d266313fa22885a6ec76eea521fb8a1131b4d9fb3a57afb045a98301aeb7d24e"), - # 10.20.1 - "10.20.1-darwin_amd64": ("node-v10.20.1-darwin-x64.tar.gz", "node-v10.20.1-darwin-x64", "6437e364cd93be246ffb67dd40775cbb467bb8d28d8af4413123f478bb6234b9"), - "10.20.1-linux_arm64": ("node-v10.20.1-linux-arm64.tar.xz", "node-v10.20.1-linux-arm64", "e33cafff94a6308916530b4b724bbc138399484d96f71b1c23677596bec268d0"), - "10.20.1-linux_amd64": ("node-v10.20.1-linux-x64.tar.xz", "node-v10.20.1-linux-x64", "5e0b1fbc6cf8c2c34dc33d880670ee1bc1c1e931099de3796a96143a962c92ee"), - "10.20.1-windows_amd64": ("node-v10.20.1-win-x64.zip", "node-v10.20.1-win-x64", "5e4ec0936c51047c218c0c164cc80283cd36ecd40e0a6979281d395c1be8ee10"), - # 10.21.0 - "10.21.0-darwin_amd64": ("node-v10.21.0-darwin-x64.tar.gz", "node-v10.21.0-darwin-x64", "596900700c4a0de0303bb4c378a1abcd63f31efc848704c5fbc1230de628577a"), - "10.21.0-linux_arm64": ("node-v10.21.0-linux-arm64.tar.xz", "node-v10.21.0-linux-arm64", "3af40706ff0da7fe0baa4683ead6c74445405a2553e7373e627f24d19d4ac100"), - "10.21.0-linux_amd64": ("node-v10.21.0-linux-x64.tar.xz", "node-v10.21.0-linux-x64", "1d3296763e46540047099e4910812e81c4899c0595f2d82474e2099c1e1603e2"), - "10.21.0-windows_amd64": ("node-v10.21.0-win-x64.zip", "node-v10.21.0-win-x64", "03dddcdaccdb40978ddf15d189acdc20409d9a666636db2595118690ff83ce82"), - # 10.22.0 - "10.22.0-darwin_amd64": ("node-v10.22.0-darwin-x64.tar.gz", "node-v10.22.0-darwin-x64", "c7583a297ba9c6cfc03688a32776155d02fabf9ff45847c63b12a68d400f1dc1"), - "10.22.0-linux_arm64": ("node-v10.22.0-linux-arm64.tar.xz", "node-v10.22.0-linux-arm64", "abacc6f37e8dfbe398843c7dc7b9bb7153ff6e653ad50e85d73d86088da48372"), - "10.22.0-linux_amd64": ("node-v10.22.0-linux-x64.tar.xz", "node-v10.22.0-linux-x64", "ddf33e038c593d6df36b1dd4b25c1b6fa8230c615e6312ad33e80ef863e4a74f"), - "10.22.0-windows_amd64": ("node-v10.22.0-win-x64.zip", "node-v10.22.0-win-x64", "931c2907450790f89aa178fa84c1adbd1f7cb7ab0a34f8bfb4af25640e8d4e06"), - # 11.0.0 - "11.0.0-darwin_amd64": ("node-v11.0.0-darwin-x64.tar.gz", "node-v11.0.0-darwin-x64", "f70e12d246ba35e88c5c08a195215c5c913ce66c9d95d0bd21cc1d3e69904279"), - "11.0.0-linux_arm64": ("node-v11.0.0-linux-arm64.tar.xz", "node-v11.0.0-linux-arm64", "0d0c7013fd00a8e713c36aa96bcc268eeadbad2ce48d87e19849d66f4c618cad"), - "11.0.0-linux_amd64": ("node-v11.0.0-linux-x64.tar.xz", "node-v11.0.0-linux-x64", "418b1a73bcafbf5dd3bc787f0440c2b4123dfecc2b239f5651f0256cb5ab606d"), - "11.0.0-windows_amd64": ("node-v11.0.0-win-x64.zip", "node-v11.0.0-win-x64", "4dd3ef7f5c8181be39cd45476b22ed34b6da2bf77377b699384d426702f8c969"), - # 11.1.0 - "11.1.0-darwin_amd64": ("node-v11.1.0-darwin-x64.tar.gz", "node-v11.1.0-darwin-x64", "5d6b84d2b0fd6afee07c371bc815a9e4b6671b85bedcb38815310bd0f884d3c8"), - "11.1.0-linux_arm64": ("node-v11.1.0-linux-arm64.tar.xz", "node-v11.1.0-linux-arm64", "cbba27e1c90701fbb9db66cc2c6cc3049aaf08adb16cabd0cad970b74cdaf6d3"), - "11.1.0-linux_amd64": ("node-v11.1.0-linux-x64.tar.xz", "node-v11.1.0-linux-x64", "c70419674d932452017556080264de2b6d1105c112647dd1dd495b739456dd91"), - "11.1.0-windows_amd64": ("node-v11.1.0-win-x64.zip", "node-v11.1.0-win-x64", "985e4edc758cb5f77f85cddda0155616b92f163b8d3842c542b1c8a395068418"), - # 11.2.0 - "11.2.0-darwin_amd64": ("node-v11.2.0-darwin-x64.tar.gz", "node-v11.2.0-darwin-x64", "cd17fafcdb21ae80fb94e455e63567c70b3bceedf982b93ae9e4aea411f6a6ea"), - "11.2.0-linux_arm64": ("node-v11.2.0-linux-arm64.tar.xz", "node-v11.2.0-linux-arm64", "3e6c47a29b85030b4305bdc2e15cbe37e1b54a2338ce1790637384ce349ed1fd"), - "11.2.0-linux_amd64": ("node-v11.2.0-linux-x64.tar.xz", "node-v11.2.0-linux-x64", "629a603443c275f8ecd851994b81a9c02a36343dbcbafc279cbecb9ccd9cf906"), - "11.2.0-windows_amd64": ("node-v11.2.0-win-x64.zip", "node-v11.2.0-win-x64", "3440b2880b4e3b78c9c18865df263317e7d3c3e179dad960d526004dc7e6ba9a"), - # 11.3.0 - "11.3.0-darwin_amd64": ("node-v11.3.0-darwin-x64.tar.gz", "node-v11.3.0-darwin-x64", "54acc7bdeffae79fdd73f959712305aee1d8d487d56813b43cae96d151ec79db"), - "11.3.0-linux_arm64": ("node-v11.3.0-linux-arm64.tar.xz", "node-v11.3.0-linux-arm64", "642cc3fc94a856ad6d09e76eaf869672bef925308afdad398a58f18eeaf4e4b8"), - "11.3.0-linux_amd64": ("node-v11.3.0-linux-x64.tar.xz", "node-v11.3.0-linux-x64", "d37fb7fae8a185409bccf106e91d8ffa3450115852795512fc62e6da0b5e3dbb"), - "11.3.0-windows_amd64": ("node-v11.3.0-win-x64.zip", "node-v11.3.0-win-x64", "b801e908ec36a07f06df388845e22e0b7f3cede7a4030896712c8ee28cdb3f05"), - # 11.4.0 - "11.4.0-darwin_amd64": ("node-v11.4.0-darwin-x64.tar.gz", "node-v11.4.0-darwin-x64", "05a515146d5bc397625f442a6ecbbc7f0d071a2a7efbf1e2b2ed46d728bc7b30"), - "11.4.0-linux_arm64": ("node-v11.4.0-linux-arm64.tar.xz", "node-v11.4.0-linux-arm64", "c32e752e74794a4254ae4caa892b7beb3be60dba6851e8e5d637febfb659ee3a"), - "11.4.0-linux_amd64": ("node-v11.4.0-linux-x64.tar.xz", "node-v11.4.0-linux-x64", "24d9be161e7fb28e761801639cb452ff223269ed53d967e5745b5c6391eb3fbd"), - "11.4.0-windows_amd64": ("node-v11.4.0-win-x64.zip", "node-v11.4.0-win-x64", "30b84ab0101c8916694e6cd6c0ccb5182e4555da5e06deb080e906ef5b3893df"), - # 11.5.0 - "11.5.0-darwin_amd64": ("node-v11.5.0-darwin-x64.tar.gz", "node-v11.5.0-darwin-x64", "741abd58ac67b4bf8d2ef991a7487ea17e421b2248688b93be0d2f34886c6aa2"), - "11.5.0-linux_arm64": ("node-v11.5.0-linux-arm64.tar.xz", "node-v11.5.0-linux-arm64", "3f1436c1de70b2e34f7a63a5af7e6b106a8ebe9289b3f7d045ac4a4856570164"), - "11.5.0-linux_amd64": ("node-v11.5.0-linux-x64.tar.xz", "node-v11.5.0-linux-x64", "ada54407b505b7e6f516c753f0e49220917dd11efa5ee892d3252bdd65d4a54c"), - "11.5.0-windows_amd64": ("node-v11.5.0-win-x64.zip", "node-v11.5.0-win-x64", "3692939b1bbd7ee8b0a967429eef6b1d45078c2f4fc289aae261ca5bde5a0607"), - # 11.6.0 - "11.6.0-darwin_amd64": ("node-v11.6.0-darwin-x64.tar.gz", "node-v11.6.0-darwin-x64", "c880063b112c48130dba8f7b058de61959ae46fddcfa363715571b22c1cbeb26"), - "11.6.0-linux_arm64": ("node-v11.6.0-linux-arm64.tar.xz", "node-v11.6.0-linux-arm64", "956016db41f4f96f8e005d36c738d7c833442d09a970462552eb214027e0268a"), - "11.6.0-linux_amd64": ("node-v11.6.0-linux-x64.tar.xz", "node-v11.6.0-linux-x64", "2251a6c5b332e7ea69bbefba11950cb6c27ba50fa700468711f729da6a6f5324"), - "11.6.0-windows_amd64": ("node-v11.6.0-win-x64.zip", "node-v11.6.0-win-x64", "d230828c1cc9863c9768106ffee0320ba42049b594bd2689e430b872e8f0b2dd"), - # 11.7.0 - "11.7.0-darwin_amd64": ("node-v11.7.0-darwin-x64.tar.gz", "node-v11.7.0-darwin-x64", "873b47e6fc97aef2f73b0e8dde641967b2a84a3b63d1697b9d8813e14fb3b01c"), - "11.7.0-linux_arm64": ("node-v11.7.0-linux-arm64.tar.xz", "node-v11.7.0-linux-arm64", "82b9726c6b367a43530f868f61b1b2a05c942d3decdf9d2e18b4a9bdf353c223"), - "11.7.0-linux_amd64": ("node-v11.7.0-linux-x64.tar.xz", "node-v11.7.0-linux-x64", "b2a0a7dde17fe0da5f86ce5fea3da2861d652a5e702e2177ee62813ff86451c0"), - "11.7.0-windows_amd64": ("node-v11.7.0-win-x64.zip", "node-v11.7.0-win-x64", "00834d16532f24583bf56d2baab03904b0220154cc712344be95e4d05c6234dd"), - # 11.8.0 - "11.8.0-darwin_amd64": ("node-v11.8.0-darwin-x64.tar.gz", "node-v11.8.0-darwin-x64", "fbb26b38f408c2f2324a5821062c16103f54de16d24f9f24c4e270a3a41f4832"), - "11.8.0-linux_arm64": ("node-v11.8.0-linux-arm64.tar.xz", "node-v11.8.0-linux-arm64", "42b190c686cb8bafbdbf418a6c20c6785a23ba0f1a1a85af44595057a3d5e25e"), - "11.8.0-linux_amd64": ("node-v11.8.0-linux-x64.tar.xz", "node-v11.8.0-linux-x64", "85ca19c495d5cac6acf6ee4a3c8dfb4489fb67fefc184c61eb4513eb5ef99a88"), - "11.8.0-windows_amd64": ("node-v11.8.0-win-x64.zip", "node-v11.8.0-win-x64", "cd4db1b9e7ac29ed81d433f2de85582902670a121961aa3f350533d5b2fd44c6"), - # 11.9.0 - "11.9.0-darwin_amd64": ("node-v11.9.0-darwin-x64.tar.gz", "node-v11.9.0-darwin-x64", "1df3dd99d174bb8cb61cc8e2aa419a4998c7ada9454123c34991ce30632f1ef8"), - "11.9.0-linux_arm64": ("node-v11.9.0-linux-arm64.tar.xz", "node-v11.9.0-linux-arm64", "f39baa8d212e9676bfa7f1601f94d789c6dc6b35caf440df6ec815d238978457"), - "11.9.0-linux_amd64": ("node-v11.9.0-linux-x64.tar.xz", "node-v11.9.0-linux-x64", "9bc461fb7f5fd3344301abfda834160d5397a4e289f9749ab03ba0b7e9a4c853"), - "11.9.0-windows_amd64": ("node-v11.9.0-win-x64.zip", "node-v11.9.0-win-x64", "c62c01436f632858fea0194d4168b483e1aa485c3fc72247add4899a103c2677"), - # 11.10.0 - "11.10.0-darwin_amd64": ("node-v11.10.0-darwin-x64.tar.gz", "node-v11.10.0-darwin-x64", "1956528c6f3934a97508e36a4855c154f40f1923ccd61e296d5a85679103e3a1"), - "11.10.0-linux_arm64": ("node-v11.10.0-linux-arm64.tar.xz", "node-v11.10.0-linux-arm64", "60ed6caa90d8188a55f0dbc63f4aef263fb4863e036d32989b820a2e40582c66"), - "11.10.0-linux_amd64": ("node-v11.10.0-linux-x64.tar.xz", "node-v11.10.0-linux-x64", "fe4c617aaf88b5228bce0341d1c77bbae2622d69eaa17a15b7d4bcc60c4777c5"), - "11.10.0-windows_amd64": ("node-v11.10.0-win-x64.zip", "node-v11.10.0-win-x64", "c39e711aebe678455fa74edf6d8f6184d6d93e20f160197799040a0c17005dba"), - # 11.10.1 - "11.10.1-darwin_amd64": ("node-v11.10.1-darwin-x64.tar.gz", "node-v11.10.1-darwin-x64", "dea52b86f6875efae26fbb6d0269d9769da7ca69408b74b6ab724d4b64004b07"), - "11.10.1-linux_arm64": ("node-v11.10.1-linux-arm64.tar.xz", "node-v11.10.1-linux-arm64", "b116e57906ed73c970d64e7518b08c6de236575c5cd8bf09f4c1bd668524a014"), - "11.10.1-linux_amd64": ("node-v11.10.1-linux-x64.tar.xz", "node-v11.10.1-linux-x64", "414216a7e47dbfb77141dce7a4452901ae2cdb4cd0deef3ab3ab49e0b2111f82"), - "11.10.1-windows_amd64": ("node-v11.10.1-win-x64.zip", "node-v11.10.1-win-x64", "80cf14abacbc6b636bc192f4eee49421f082f21cdaa9c1ea5995c38f8c1375e5"), - # 11.11.0 - "11.11.0-darwin_amd64": ("node-v11.11.0-darwin-x64.tar.gz", "node-v11.11.0-darwin-x64", "6b7c8d93096bf065de0d0a42e8f027c424172c82df6f015d3149a5dbfa03c1cc"), - "11.11.0-linux_arm64": ("node-v11.11.0-linux-arm64.tar.xz", "node-v11.11.0-linux-arm64", "febb698e74264ec0ecc738c86347e6bfb5d27e33ed492a031626df988a5fb4f3"), - "11.11.0-linux_amd64": ("node-v11.11.0-linux-x64.tar.xz", "node-v11.11.0-linux-x64", "ee09c7712e741f84948f76a72b651bf088e516c3f38569b9e6f30c38c026c262"), - "11.11.0-windows_amd64": ("node-v11.11.0-win-x64.zip", "node-v11.11.0-win-x64", "154a5b7ca7033382743c4752fa465a5d9902f4abed4263a38ea3f41ffa113910"), - # 11.12.0 - "11.12.0-darwin_amd64": ("node-v11.12.0-darwin-x64.tar.gz", "node-v11.12.0-darwin-x64", "93d68c1af41d02b262b3383d69b46eb326707ec010b321ad5655b91c4956e783"), - "11.12.0-linux_arm64": ("node-v11.12.0-linux-arm64.tar.xz", "node-v11.12.0-linux-arm64", "9e89838e290c9bb478351bd403707d0b741ec56021c379c9f6da515a4cd1064a"), - "11.12.0-linux_amd64": ("node-v11.12.0-linux-x64.tar.xz", "node-v11.12.0-linux-x64", "1c6bb93a24eda832708c1c10ec20316e1e4f30b3cfca9c5ee5d446762414b116"), - "11.12.0-windows_amd64": ("node-v11.12.0-win-x64.zip", "node-v11.12.0-win-x64", "68e5bca1d6dd6b3de20870e7c593f9a890c48d2c9c83e15034baad6f7c0da426"), - # 11.13.0 - "11.13.0-darwin_amd64": ("node-v11.13.0-darwin-x64.tar.gz", "node-v11.13.0-darwin-x64", "c1a8f94b4778dad2d9f513cfdf9091810dc733a2daf4fa7e03d49ad133415b5d"), - "11.13.0-linux_arm64": ("node-v11.13.0-linux-arm64.tar.xz", "node-v11.13.0-linux-arm64", "0edb29004fdbb5808331e765b4adde8b025a13d6619f49fec60a14582aba9ed7"), - "11.13.0-linux_amd64": ("node-v11.13.0-linux-x64.tar.xz", "node-v11.13.0-linux-x64", "c2ae3caced5f181df282a6974ab3f5e232b5decb821aa8ea8fe758b0e0528223"), - "11.13.0-windows_amd64": ("node-v11.13.0-win-x64.zip", "node-v11.13.0-win-x64", "f3dafd1f19841244f8f12952f9919c0a2857f6920b11f2a89554b061cd5a4525"), - # 11.14.0 - "11.14.0-darwin_amd64": ("node-v11.14.0-darwin-x64.tar.gz", "node-v11.14.0-darwin-x64", "37b8db4f6700a4b5aa3b6d4283538753953f6293aff99866aa9a81038848a4d9"), - "11.14.0-linux_arm64": ("node-v11.14.0-linux-arm64.tar.xz", "node-v11.14.0-linux-arm64", "3d463f3b48e1060027f8a552657de6f3ee4724d718d546aa4ea5c301ee4ed083"), - "11.14.0-linux_amd64": ("node-v11.14.0-linux-x64.tar.xz", "node-v11.14.0-linux-x64", "89e2cb0effa9bf075ee8bb6d92a6a50f7ccfdad03dd687f52ecdfab91230f9a1"), - "11.14.0-windows_amd64": ("node-v11.14.0-win-x64.zip", "node-v11.14.0-win-x64", "58a5d3316c04335ff3da2ce66b89f3cce86b1d1ca878d1d6d68478160c66dc12"), - # 11.15.0 - "11.15.0-darwin_amd64": ("node-v11.15.0-darwin-x64.tar.gz", "node-v11.15.0-darwin-x64", "e953b657b1049e1de509a3fd0700cfeecd175f75a0d141d71393aa0d71fa29a9"), - "11.15.0-linux_arm64": ("node-v11.15.0-linux-arm64.tar.xz", "node-v11.15.0-linux-arm64", "e458aa4c69da9ca2ae566c8eb56dc8b36d573b415bfd8eebca4ff2229fc4983d"), - "11.15.0-linux_amd64": ("node-v11.15.0-linux-x64.tar.xz", "node-v11.15.0-linux-x64", "17424aef198fa322b93c79217ce7e8cdd264fed40383abbbd3e63c305ce1d7d8"), - "11.15.0-windows_amd64": ("node-v11.15.0-win-x64.zip", "node-v11.15.0-win-x64", "f3cef50acf566724a5ec5df7697fb527d7339cafdae6c7c406a39358aee6cdf8"), - # 12.0.0 - "12.0.0-darwin_amd64": ("node-v12.0.0-darwin-x64.tar.gz", "node-v12.0.0-darwin-x64", "92c81a284e909424b50dd01e175260b75bbbdb487fdfe1885229817187ea76bc"), - "12.0.0-linux_arm64": ("node-v12.0.0-linux-arm64.tar.xz", "node-v12.0.0-linux-arm64", "2ac36aa51f76654a8914d41a32bd5c3d3213cba14eea84abd9919d022b5694b4"), - "12.0.0-linux_amd64": ("node-v12.0.0-linux-x64.tar.xz", "node-v12.0.0-linux-x64", "7a5609167265954cfb912e4dc8f36e5469335b6be1bb11d60d8427f92c03f5f9"), - "12.0.0-windows_amd64": ("node-v12.0.0-win-x64.zip", "node-v12.0.0-win-x64", "96ab5f9f61d75daf3fb1072930b6e9249f15b77bc3b3dca516ae8439dc1500fb"), - # 12.1.0 - "12.1.0-darwin_amd64": ("node-v12.1.0-darwin-x64.tar.gz", "node-v12.1.0-darwin-x64", "57c592b13940aa44611aec08e7b425f35565a2c95c51736f433cb36eb65105b7"), - "12.1.0-linux_arm64": ("node-v12.1.0-linux-arm64.tar.xz", "node-v12.1.0-linux-arm64", "67805a7976bef30d0e12211f18a99c6de405931e493fd32f451512473661ee10"), - "12.1.0-linux_amd64": ("node-v12.1.0-linux-x64.tar.xz", "node-v12.1.0-linux-x64", "331c43176a20e705c6f4fdb61c69fee44dd3c2c93a20410be2c13b4f8515ef7b"), - "12.1.0-windows_amd64": ("node-v12.1.0-win-x64.zip", "node-v12.1.0-win-x64", "6dc3ef4a6b4ce527f187270a1b0c5560771126df487ab9ddc4c3cd3b37d57eb6"), - # 12.2.0 - "12.2.0-darwin_amd64": ("node-v12.2.0-darwin-x64.tar.gz", "node-v12.2.0-darwin-x64", "c72ae8a2b989138c6e6e9b393812502df8c28546a016cf24e7a82dd27e3838af"), - "12.2.0-linux_arm64": ("node-v12.2.0-linux-arm64.tar.xz", "node-v12.2.0-linux-arm64", "42e4a5c6ad0b402e281daf46a27a269249bdb8b4e31ff8869701aaddac2cc8c4"), - "12.2.0-linux_amd64": ("node-v12.2.0-linux-x64.tar.xz", "node-v12.2.0-linux-x64", "89059969861606e2a435ff2619c4df6f41c040120e507d9c4f03374353357307"), - "12.2.0-windows_amd64": ("node-v12.2.0-win-x64.zip", "node-v12.2.0-win-x64", "c1e7fb3c1c15d8f2ab5c1db9c9662097f9c682164b3f7397955ccce946442c97"), - # 12.3.0 - "12.3.0-darwin_amd64": ("node-v12.3.0-darwin-x64.tar.gz", "node-v12.3.0-darwin-x64", "4a9faa038fb4e6e930a0fecd9818a4820b4ca91d1c45a1c1279fe49cdbd28160"), - "12.3.0-linux_arm64": ("node-v12.3.0-linux-arm64.tar.xz", "node-v12.3.0-linux-arm64", "3d6e7046b938ff1f2535bdcc892a82abf44d875d1e96779cc3ea9a074ccfa200"), - "12.3.0-linux_amd64": ("node-v12.3.0-linux-x64.tar.xz", "node-v12.3.0-linux-x64", "2ce2c7a4d7fe3c560415e8dcbc5905a66a8bf28e2a2b2cff7e7a4eeb5753015d"), - "12.3.0-windows_amd64": ("node-v12.3.0-win-x64.zip", "node-v12.3.0-win-x64", "b36c9f9809c90ce704465f066861314d6e33176a5d45da14c1519c3e4f35063e"), - # 12.3.1 - "12.3.1-darwin_amd64": ("node-v12.3.1-darwin-x64.tar.gz", "node-v12.3.1-darwin-x64", "b9c979f63a356090d8ff88ed141fd856ad853165c73633794a9d3a060334378e"), - "12.3.1-linux_arm64": ("node-v12.3.1-linux-arm64.tar.xz", "node-v12.3.1-linux-arm64", "88df7f2e0c4a58661bb79b637daa417929efc6c4d6a77bba42a5127c5c383257"), - "12.3.1-linux_amd64": ("node-v12.3.1-linux-x64.tar.xz", "node-v12.3.1-linux-x64", "46f52868c0643fe0d167ce24c3c873880c8e1494276c89c07114fb099da4f75a"), - "12.3.1-windows_amd64": ("node-v12.3.1-win-x64.zip", "node-v12.3.1-win-x64", "aac3c4543f846c7ebf63e1498dec7955119dffffe65722bd8c6d2124ed4ecbd7"), - # 12.4.0 - "12.4.0-darwin_amd64": ("node-v12.4.0-darwin-x64.tar.gz", "node-v12.4.0-darwin-x64", "aaff97d59cda775165ef966ae74e70f55f3267e86d735ed3740ae9bf1d40531e"), - "12.4.0-linux_arm64": ("node-v12.4.0-linux-arm64.tar.xz", "node-v12.4.0-linux-arm64", "bb2e7eabebdceb52424516dabce94cb37f55419e6ed19493916843a323c423cd"), - "12.4.0-linux_amd64": ("node-v12.4.0-linux-x64.tar.xz", "node-v12.4.0-linux-x64", "9aec6a2a50c1791704a6069cbda6da62781361e44814d024e8bbaaf0deb41c5e"), - "12.4.0-windows_amd64": ("node-v12.4.0-win-x64.zip", "node-v12.4.0-win-x64", "ec8623e2528a35d3219200308e7ed41e24d4f7cd96530a4e6ac2513e44f7fad1"), - # 12.5.0 - "12.5.0-darwin_amd64": ("node-v12.5.0-darwin-x64.tar.gz", "node-v12.5.0-darwin-x64", "a9ba9f584f015f1705063c10dd8d84d43f5b09dc7ecf4ee3968ab1ff1fe5d2b5"), - "12.5.0-linux_arm64": ("node-v12.5.0-linux-arm64.tar.xz", "node-v12.5.0-linux-arm64", "d43b71a97f5484d13b655a8a0c1b1c0fc7e83b3719063cc362fe557d6e26bd69"), - "12.5.0-linux_amd64": ("node-v12.5.0-linux-x64.tar.xz", "node-v12.5.0-linux-x64", "37c0c539aae69370f3c014cc4947748ce45ac5fa560f9b085724f22029834b27"), - "12.5.0-windows_amd64": ("node-v12.5.0-win-x64.zip", "node-v12.5.0-win-x64", "f1b426fcd39ffdfec5d8ba60c6842cc11e9f49269cd49bc34c4fcee0517ddf66"), - # 12.6.0 - "12.6.0-darwin_amd64": ("node-v12.6.0-darwin-x64.tar.gz", "node-v12.6.0-darwin-x64", "004b7992a2621eb35a47c94d258510ca5744b5a8072364f235dc7e3d4bff7457"), - "12.6.0-linux_arm64": ("node-v12.6.0-linux-arm64.tar.xz", "node-v12.6.0-linux-arm64", "b7a6580f0c5406b990b3c9f0d91297b103e38e2752b8b745c4d15310a9dd79d1"), - "12.6.0-linux_amd64": ("node-v12.6.0-linux-x64.tar.xz", "node-v12.6.0-linux-x64", "1ac14567e2be5562df209900e28430bd11575d985a85e8a6df2743428570de33"), - "12.6.0-windows_amd64": ("node-v12.6.0-win-x64.zip", "node-v12.6.0-win-x64", "0c5ac670c5bb0ea0d389bb7269cb84104702826f791a1d057eae02cdb9eed717"), - # 12.7.0 - "12.7.0-darwin_amd64": ("node-v12.7.0-darwin-x64.tar.gz", "node-v12.7.0-darwin-x64", "1a76bea7f7ed8c5c921852269ddd1300c9baba2f1e3f0377200a22c22cdea177"), - "12.7.0-linux_arm64": ("node-v12.7.0-linux-arm64.tar.xz", "node-v12.7.0-linux-arm64", "abc4500eff8437503d475726b8ac2ed3463d2982bd66925a782f91b7d96e31de"), - "12.7.0-linux_amd64": ("node-v12.7.0-linux-x64.tar.xz", "node-v12.7.0-linux-x64", "95867fdcfd4f821d84b3dd9fab5803fb29e093e911f2ab3c7111bcaf8bd5b9da"), - "12.7.0-windows_amd64": ("node-v12.7.0-win-x64.zip", "node-v12.7.0-win-x64", "68802316ca4eb4d72ec5f9ff837752a6ec8cd73537ad7c346f30899ee523f4b7"), - # 12.8.0 - "12.8.0-darwin_amd64": ("node-v12.8.0-darwin-x64.tar.gz", "node-v12.8.0-darwin-x64", "5229571a1736befd6426dc0a6907be416e9f5c24695e3ef275ed2ba70f496499"), - "12.8.0-linux_arm64": ("node-v12.8.0-linux-arm64.tar.xz", "node-v12.8.0-linux-arm64", "9f22aff38a8622b05821129f69dbe90695e01166f55c8d2a39b6c6a5aef8c6a8"), - "12.8.0-linux_amd64": ("node-v12.8.0-linux-x64.tar.xz", "node-v12.8.0-linux-x64", "b6a9ab2e6e872375e0e27eda0698820a64495b31b1beab36cc54f9876b3a2052"), - "12.8.0-windows_amd64": ("node-v12.8.0-win-x64.zip", "node-v12.8.0-win-x64", "b295aedebde069c4148534a9dfb2394ceba28cf367ddd8204a27d69c095a9e00"), - # 12.8.1 - "12.8.1-darwin_amd64": ("node-v12.8.1-darwin-x64.tar.gz", "node-v12.8.1-darwin-x64", "caccf8b409af342e35672cc766430587664f88d01dab622a5de44c8be1336e44"), - "12.8.1-linux_arm64": ("node-v12.8.1-linux-arm64.tar.xz", "node-v12.8.1-linux-arm64", "3707240c402aae0b5879ce1ba17b32ebd224d47f5147639c6881a1b71ce65383"), - "12.8.1-linux_amd64": ("node-v12.8.1-linux-x64.tar.xz", "node-v12.8.1-linux-x64", "1c7cf61cb8fa98a76d92445823d6dd1649e985899e16900b39eacdd8cd4094f3"), - "12.8.1-windows_amd64": ("node-v12.8.1-win-x64.zip", "node-v12.8.1-win-x64", "c81ecaa03dc882dde36087c854e4831c13d3eb237f262f9ce74ccc6f156684da"), - # 12.9.0 - "12.9.0-darwin_amd64": ("node-v12.9.0-darwin-x64.tar.gz", "node-v12.9.0-darwin-x64", "24c1f0c93e485961446814662db942f1b309d843fb4ecbe50466d9857a51b343"), - "12.9.0-linux_arm64": ("node-v12.9.0-linux-arm64.tar.xz", "node-v12.9.0-linux-arm64", "f7f6f102d097d64eba26f84f2760597f9831886ef7d0db3cba88459847f2743d"), - "12.9.0-linux_amd64": ("node-v12.9.0-linux-x64.tar.xz", "node-v12.9.0-linux-x64", "7110bdd16e397870142ff0e8d92d4a4502d43ec047d970c843a9a4e5f9e79283"), - "12.9.0-windows_amd64": ("node-v12.9.0-win-x64.zip", "node-v12.9.0-win-x64", "b5f05deb31ac04b9c3a487542daf151e01c05017403a56ba443da623f36b153b"), - # 12.9.1 - "12.9.1-darwin_amd64": ("node-v12.9.1-darwin-x64.tar.gz", "node-v12.9.1-darwin-x64", "9aaf29d30056e2233fd15dfac56eec12e8342d91bb6c13d54fb5e599383dddb9"), - "12.9.1-linux_arm64": ("node-v12.9.1-linux-arm64.tar.xz", "node-v12.9.1-linux-arm64", "b6d986faf3a77b6c353c344645c93f2a0e0436c43865e6c215a24301a076a11f"), - "12.9.1-linux_amd64": ("node-v12.9.1-linux-x64.tar.xz", "node-v12.9.1-linux-x64", "680a1263c9f5f91adadcada549f0a9c29f1b26d09658d2b501c334c3f63719e5"), - "12.9.1-windows_amd64": ("node-v12.9.1-win-x64.zip", "node-v12.9.1-win-x64", "6a4e54bda091bd02dbd8ff1b9f6671e036297da012a53891e3834d4bf4bed297"), - # 12.10.0 - "12.10.0-darwin_amd64": ("node-v12.10.0-darwin-x64.tar.gz", "node-v12.10.0-darwin-x64", "4c16d1f6454f5dc3977ad00cea123792b8d4e1d6d1bf42bbc82a4202039a5971"), - "12.10.0-linux_arm64": ("node-v12.10.0-linux-arm64.tar.xz", "node-v12.10.0-linux-arm64", "fa1afb9e8cfd964867351b6dac6cd918784ff309291612251c4745aeb0b10e02"), - "12.10.0-linux_amd64": ("node-v12.10.0-linux-x64.tar.xz", "node-v12.10.0-linux-x64", "e8d2e6b62dd8183dc59a139a9ca3edc7c419a0d3d92e90fea9cb0ad52489843a"), - "12.10.0-windows_amd64": ("node-v12.10.0-win-x64.zip", "node-v12.10.0-win-x64", "de341476711c71f82d06fabcc9874c1ff9e865fd7274334d64a67b1e31a53fd0"), - # 12.11.0 - "12.11.0-darwin_amd64": ("node-v12.11.0-darwin-x64.tar.gz", "node-v12.11.0-darwin-x64", "a0fd5c1c9e67099f52b73c732aa52a878c6ff67f50ff0e94c2c5628a87455130"), - "12.11.0-linux_arm64": ("node-v12.11.0-linux-arm64.tar.xz", "node-v12.11.0-linux-arm64", "d1126439ff6d079b682a7cd6308cb226afd247e5cb0f7cc60cfb0e609a096622"), - "12.11.0-linux_amd64": ("node-v12.11.0-linux-x64.tar.xz", "node-v12.11.0-linux-x64", "c0dc88110ac3ee095e3d09077545435b72d4cd52e35c43cd3fa666cff7446d46"), - "12.11.0-windows_amd64": ("node-v12.11.0-win-x64.zip", "node-v12.11.0-win-x64", "457157358bd029196d47865dee66f8c263a3a4a5a8cdd1c0a8cf43ac45e9eda3"), - # 12.11.1 - "12.11.1-darwin_amd64": ("node-v12.11.1-darwin-x64.tar.gz", "node-v12.11.1-darwin-x64", "7dd24ee6d81668e65ce1b77b4bb4cdaf517d8f80bb19740d286606028506970b"), - "12.11.1-linux_arm64": ("node-v12.11.1-linux-arm64.tar.xz", "node-v12.11.1-linux-arm64", "12777294258da80410fd7d5cbed46ead5d3cabacf376ee10ddb9e1a335b114e7"), - "12.11.1-linux_amd64": ("node-v12.11.1-linux-x64.tar.xz", "node-v12.11.1-linux-x64", "00f7a0b59ff38c1c74d81732df925aa5ac5788b58412437327421f796878793d"), - "12.11.1-windows_amd64": ("node-v12.11.1-win-x64.zip", "node-v12.11.1-win-x64", "0bab4473cd2ba03511b8859ddf2202bb012d5c541f9d57b555a5bbbf101fcb35"), - # 12.12.0 - "12.12.0-darwin_amd64": ("node-v12.12.0-darwin-x64.tar.gz", "node-v12.12.0-darwin-x64", "14a98237e8859bc22695719dbc2e9db5529a33ada0c6c377df4dc27b5622ffbb"), - "12.12.0-linux_arm64": ("node-v12.12.0-linux-arm64.tar.xz", "node-v12.12.0-linux-arm64", "ad536aba218df64d8e901b28985f4c5f72f634bf903c449b0c84929f6940853c"), - "12.12.0-linux_amd64": ("node-v12.12.0-linux-x64.tar.xz", "node-v12.12.0-linux-x64", "e3a38dfaf1233a3c43c2528869af52e74575781984369a5b705c89d84dfa3ac2"), - "12.12.0-windows_amd64": ("node-v12.12.0-win-x64.zip", "node-v12.12.0-win-x64", "930e7bcd2ae5bcb1d4163c2adf09a392ed0e9a824b069d19daeb4f9f3430a195"), - # 12.13.0 - "12.13.0-darwin_amd64": ("node-v12.13.0-darwin-x64.tar.gz", "node-v12.13.0-darwin-x64", "49a7374670a111b033ce16611b20fd1aafd3296bbc662b184fe8fb26a29c22cc"), - "12.13.0-linux_arm64": ("node-v12.13.0-linux-arm64.tar.xz", "node-v12.13.0-linux-arm64", "d65b3ce27639f15ae22941e3ff98a1c900aa9049fcc15518038615b0676037d5"), - "12.13.0-linux_amd64": ("node-v12.13.0-linux-x64.tar.xz", "node-v12.13.0-linux-x64", "7a57ef2cb3036d7eacd50ae7ba07245a28336a93652641c065f747adb2a356d9"), - "12.13.0-windows_amd64": ("node-v12.13.0-win-x64.zip", "node-v12.13.0-win-x64", "6f920cebeecb4957b4ef0def6d9b04c49d4582864f8d1a207ce8d0665865781a"), - # 12.13.1 - "12.13.1-darwin_amd64": ("node-v12.13.1-darwin-x64.tar.gz", "node-v12.13.1-darwin-x64", "12d14c7fbd98876a163a2b7e0aeb13657dc3e967e993efaf2dcacbe475a285e8"), - "12.13.1-linux_arm64": ("node-v12.13.1-linux-arm64.tar.xz", "node-v12.13.1-linux-arm64", "3aef0178a8ab74c8e5c133e23d1896e53ed5c273415d165a0e72e005f5467cba"), - "12.13.1-linux_amd64": ("node-v12.13.1-linux-x64.tar.xz", "node-v12.13.1-linux-x64", "aca06db37589966829b1ef0f163a5859b156a1d8e51b415bf47590f667c30a25"), - "12.13.1-windows_amd64": ("node-v12.13.1-win-x64.zip", "node-v12.13.1-win-x64", "db33fb758ba49b96d073311ef9e9134b51bf96246ffd938909b2e02c65a6e890"), - # 12.14.0 - "12.14.0-darwin_amd64": ("node-v12.14.0-darwin-x64.tar.gz", "node-v12.14.0-darwin-x64", "5f3170b346b29e6902c0ca7e0993e3d1b4b650615348aa866de17ad965377048"), - "12.14.0-linux_arm64": ("node-v12.14.0-linux-arm64.tar.xz", "node-v12.14.0-linux-arm64", "733b4f71ccdf114038bbe0f20574a1e8f4f60b53d39caf445f518745596eadda"), - "12.14.0-linux_amd64": ("node-v12.14.0-linux-x64.tar.xz", "node-v12.14.0-linux-x64", "82ae74ee0a204de7ebf7767eaa8e382518d9b49668dcbb5bd7fd003154445d1f"), - "12.14.0-windows_amd64": ("node-v12.14.0-win-x64.zip", "node-v12.14.0-win-x64", "526f4b01ffb270bdd8213b58b38843fa3c88f03c89b1898c641bc0e32607913e"), - # 12.14.1 - "12.14.1-darwin_amd64": ("node-v12.14.1-darwin-x64.tar.gz", "node-v12.14.1-darwin-x64", "0be10a28737527a1e5e3784d3ad844d742fe8b0718acd701fd48f718fd3af78f"), - "12.14.1-linux_arm64": ("node-v12.14.1-linux-arm64.tar.xz", "node-v12.14.1-linux-arm64", "6cd28a5e6340f596aec8dbfd6720f444f011e6b9018622290a60dbd17f9baff6"), - "12.14.1-linux_amd64": ("node-v12.14.1-linux-x64.tar.xz", "node-v12.14.1-linux-x64", "07cfcaa0aa9d0fcb6e99725408d9e0b07be03b844701588e3ab5dbc395b98e1b"), - "12.14.1-windows_amd64": ("node-v12.14.1-win-x64.zip", "node-v12.14.1-win-x64", "1f96ccce3ba045ecea3f458e189500adb90b8bc1a34de5d82fc10a5bf66ce7e3"), - # 12.15.0 - "12.15.0-darwin_amd64": ("node-v12.15.0-darwin-x64.tar.gz", "node-v12.15.0-darwin-x64", "b6449cec39ac15b37abe4e59ef0eae50dcdfbf060c5276a01cc590f2a3372b7d"), - "12.15.0-linux_arm64": ("node-v12.15.0-linux-arm64.tar.xz", "node-v12.15.0-linux-arm64", "c582cb65a0ec7f648618d3d33b4f87c374a3f930518b57eca1693828c965d6e5"), - "12.15.0-linux_amd64": ("node-v12.15.0-linux-x64.tar.xz", "node-v12.15.0-linux-x64", "63df953deb091c1500e1044bef01d1953117970e757e74e90d915e1a4a0d1c9c"), - "12.15.0-windows_amd64": ("node-v12.15.0-win-x64.zip", "node-v12.15.0-win-x64", "48b29cab597962f12b0aac081522e6192bc8642c582cd0fc1bf51557273888da"), - # 12.16.0 - "12.16.0-darwin_amd64": ("node-v12.16.0-darwin-x64.tar.gz", "node-v12.16.0-darwin-x64", "af3b9bbfdd9ae1b46390e7deeb77a2c1d8dbc6fb4171bbb0cfe8686fc1ecef1d"), - "12.16.0-linux_arm64": ("node-v12.16.0-linux-arm64.tar.xz", "node-v12.16.0-linux-arm64", "f2d97187bd8d3175bf6266193107a030bfb827003d57ba6dd21de16aa622548d"), - "12.16.0-linux_amd64": ("node-v12.16.0-linux-x64.tar.xz", "node-v12.16.0-linux-x64", "e8c38659540766db9d85bd7325ba8cce8ded56204f84507f73fdb41a26d9bd73"), - "12.16.0-windows_amd64": ("node-v12.16.0-win-x64.zip", "node-v12.16.0-win-x64", "9a590dd064b491fbd40b366ae4a119fe6cef516a25fb4d78d7c2a64b37574da8"), - # 12.16.1 - "12.16.1-darwin_amd64": ("node-v12.16.1-darwin-x64.tar.gz", "node-v12.16.1-darwin-x64", "34895bce210ca4b3cf19cd480e6563588880dd7f5d798f3782e3650580d35920"), - "12.16.1-linux_arm64": ("node-v12.16.1-linux-arm64.tar.xz", "node-v12.16.1-linux-arm64", "396c43ba507b8ec33c70cdc6f73b4a7c725bddb3f74a85a8b8ed77b436856fed"), - "12.16.1-linux_amd64": ("node-v12.16.1-linux-x64.tar.xz", "node-v12.16.1-linux-x64", "b826753f14df9771609ffb8e7d2cc4cb395247cb704cf0cea0f04132d9cf3505"), - "12.16.1-windows_amd64": ("node-v12.16.1-win-x64.zip", "node-v12.16.1-win-x64", "b93b73572c5e495154a9823d494de5729c77d1c83b041171154c4b5f3f76b590"), - # 12.16.2 - "12.16.2-darwin_amd64": ("node-v12.16.2-darwin-x64.tar.gz", "node-v12.16.2-darwin-x64", "483954e311a5ff649ddf32b473f635a58890790d284b5788bdd8d7ff850c6db2"), - "12.16.2-linux_arm64": ("node-v12.16.2-linux-arm64.tar.xz", "node-v12.16.2-linux-arm64", "c88005467f6dcdb621d454b35ec39bb42e165c6a2e1cee74cabcdc01af307e81"), - "12.16.2-linux_amd64": ("node-v12.16.2-linux-x64.tar.xz", "node-v12.16.2-linux-x64", "f94a6eb06e80ef2794ebf51a2baed0b89ed307d3196ab5579f16c0fa7cc62901"), - "12.16.2-windows_amd64": ("node-v12.16.2-win-x64.zip", "node-v12.16.2-win-x64", "f34303a49384aee2e5daab5f248c5a719e850a9ebb19e7098fe2bfffb26efe03"), - # 12.16.3 - "12.16.3-darwin_amd64": ("node-v12.16.3-darwin-x64.tar.gz", "node-v12.16.3-darwin-x64", "0718812b3ab8e77e8d1354f4d10428ae99d78f721bdcceee527c4b592ea7fed0"), - "12.16.3-linux_arm64": ("node-v12.16.3-linux-arm64.tar.xz", "node-v12.16.3-linux-arm64", "8311f513a7d1911200502dd3e00142cef56d600c851d5870f68d939802205b73"), - "12.16.3-linux_amd64": ("node-v12.16.3-linux-x64.tar.xz", "node-v12.16.3-linux-x64", "1956e196e3c3c8ef5f0c45db76d7c1245af4ccdda2b7ab30a57ce91d6e165caa"), - "12.16.3-windows_amd64": ("node-v12.16.3-win-x64.zip", "node-v12.16.3-win-x64", "d0bb0e0b1f1a948529ddd543e2cfe0bfe209eb843defc70217b3d2f84cbf3b78"), - # 12.17.0 - "12.17.0-darwin_amd64": ("node-v12.17.0-darwin-x64.tar.gz", "node-v12.17.0-darwin-x64", "8c3b9459462b8adaa10549f4da6a5ff5cdfaf7140a8a8020a87cc96d79022cc0"), - "12.17.0-linux_arm64": ("node-v12.17.0-linux-arm64.tar.xz", "node-v12.17.0-linux-arm64", "54a0dbb203ff1700341d258cefa304bd31044bf0226e9e59a0de1128418cb5aa"), - "12.17.0-linux_amd64": ("node-v12.17.0-linux-x64.tar.xz", "node-v12.17.0-linux-x64", "988653492a4f422fb112421c5c9d1c140146b665b480c2b24c66fffdd0b88a88"), - "12.17.0-windows_amd64": ("node-v12.17.0-win-x64.zip", "node-v12.17.0-win-x64", "f3a64dc6ad48577f1f81521aa144c028beb7e353d0fcd05d7b420a72a84f50fc"), - # 12.18.0 - "12.18.0-darwin_amd64": ("node-v12.18.0-darwin-x64.tar.gz", "node-v12.18.0-darwin-x64", "11fe50e670315d2d3c46317d23f7a019f46a3d08b534fbadee9a1bc3d4f81852"), - "12.18.0-linux_arm64": ("node-v12.18.0-linux-arm64.tar.xz", "node-v12.18.0-linux-arm64", "51b301102984ff73a74894396b774d00259bb3bb8c1de7c82674713acec7a214"), - "12.18.0-linux_amd64": ("node-v12.18.0-linux-x64.tar.xz", "node-v12.18.0-linux-x64", "2febc2506c298048bfddf896056be6191c1f08716876d960a4990bd63a7fe05a"), - "12.18.0-windows_amd64": ("node-v12.18.0-win-x64.zip", "node-v12.18.0-win-x64", "ca73a989eba5e863971cb600e5520cb4c5edf9c600fe8f76d9e4771ad03b5d08"), - # 12.18.1 - "12.18.1-darwin_amd64": ("node-v12.18.1-darwin-x64.tar.gz", "node-v12.18.1-darwin-x64", "80e1d644fe78838da47cd16de234b612c20e06ffe14447125db9622e381ed1ba"), - "12.18.1-linux_arm64": ("node-v12.18.1-linux-arm64.tar.xz", "node-v12.18.1-linux-arm64", "b6683e6e887c6c44a3fe9ff419e80d36eaafed39eb2c2d1b04ee54b440a03217"), - "12.18.1-linux_amd64": ("node-v12.18.1-linux-x64.tar.xz", "node-v12.18.1-linux-x64", "863f816967e297c9eb221ad3cf32521f7ac46fffc66750e60f159ed63809affa"), - "12.18.1-windows_amd64": ("node-v12.18.1-win-x64.zip", "node-v12.18.1-win-x64", "93039ebfc7c5bfad168b015f77667757925070fff3ae84c3eb73348b3123a82a"), - # 12.18.2 - "12.18.2-darwin_amd64": ("node-v12.18.2-darwin-x64.tar.gz", "node-v12.18.2-darwin-x64", "6e6e7311943e4f3880db5038b8b8034a30469342fe436c8aaacf2997dfa305a6"), - "12.18.2-linux_arm64": ("node-v12.18.2-linux-arm64.tar.xz", "node-v12.18.2-linux-arm64", "d7d3a05f36de9eb079b7b25e0fc1aaa0c960afdf36fb24b498f7303365eb945c"), - "12.18.2-linux_amd64": ("node-v12.18.2-linux-x64.tar.xz", "node-v12.18.2-linux-x64", "b8dc634798ee783482c2ae1755bd7dff09d83fa7bb037cdc370b601d0a5e5cbb"), - "12.18.2-windows_amd64": ("node-v12.18.2-win-x64.zip", "node-v12.18.2-win-x64", "91fdd5b5df16873c63541bc844c9eb66870d366b2076d114f9ab7528b5e2f9a3"), - # 12.18.3 - "12.18.3-darwin_amd64": ("node-v12.18.3-darwin-x64.tar.gz", "node-v12.18.3-darwin-x64", "af376caf114bdd5d7e566dbf7590e9077ffc01f9b2692eb2651f31d7219a30bb"), - "12.18.3-linux_arm64": ("node-v12.18.3-linux-arm64.tar.xz", "node-v12.18.3-linux-arm64", "d330aab40029afc34f8b5d1abc2e67be233df4b31331cf08d538be2a666737bb"), - "12.18.3-linux_amd64": ("node-v12.18.3-linux-x64.tar.xz", "node-v12.18.3-linux-x64", "b79e02e48d0a1ee4cd4ae138de97fda5413542f2a4f441a7d0e189697b8da563"), - "12.18.3-windows_amd64": ("node-v12.18.3-win-x64.zip", "node-v12.18.3-win-x64", "1fcd30c09f0ac9fbecf45161519eff2cf621c199eef4663b1db41b3f2fef4041"), - # 13.0.0 - "13.0.0-darwin_amd64": ("node-v13.0.0-darwin-x64.tar.gz", "node-v13.0.0-darwin-x64", "612556a8c7e6b4cd08f6134b8afe5a05bf84c0121225fa9c542be1c98af04a35"), - "13.0.0-linux_arm64": ("node-v13.0.0-linux-arm64.tar.xz", "node-v13.0.0-linux-arm64", "6ed882e17123861b5b81683de2b2c86be02c5916ef0beda04fd176329888fd12"), - "13.0.0-linux_amd64": ("node-v13.0.0-linux-x64.tar.xz", "node-v13.0.0-linux-x64", "799d890f00a3a2a7415b813b286d32d38573df6525bc8ef80f40077cdd210d39"), - "13.0.0-windows_amd64": ("node-v13.0.0-win-x64.zip", "node-v13.0.0-win-x64", "8ffcefde5e080d70790a9a2e1aab0724cc88b5526d5128b53fc59bf94f6ad5de"), - # 13.0.1 - "13.0.1-darwin_amd64": ("node-v13.0.1-darwin-x64.tar.gz", "node-v13.0.1-darwin-x64", "25621359a51ff218ecf4bb2ffc657815154230a967224f22b722840a2b9ad061"), - "13.0.1-linux_arm64": ("node-v13.0.1-linux-arm64.tar.xz", "node-v13.0.1-linux-arm64", "ad6e051aede160d8be5cbab9c60a155b06a5696e8088d895e6eff3dd36f9a688"), - "13.0.1-linux_amd64": ("node-v13.0.1-linux-x64.tar.xz", "node-v13.0.1-linux-x64", "d5657c19bb30b267bf2e0f2b61f6a96d8955aa30b69240f22d3fd2c65e123cf7"), - "13.0.1-windows_amd64": ("node-v13.0.1-win-x64.zip", "node-v13.0.1-win-x64", "1a2552b630651e08e9027339f71a65fbe3944540f0875563ea25639a091e1f33"), - # 13.1.0 - "13.1.0-darwin_amd64": ("node-v13.1.0-darwin-x64.tar.gz", "node-v13.1.0-darwin-x64", "6501c1bcf2babb5b9c81dcff8b52021f726da8f6ee28df1637acade1a16c7d39"), - "13.1.0-linux_arm64": ("node-v13.1.0-linux-arm64.tar.xz", "node-v13.1.0-linux-arm64", "646d597e6b0dc400429e46b703a5135c77bd71e653ea4c8254d0b60c17b6ec1d"), - "13.1.0-linux_amd64": ("node-v13.1.0-linux-x64.tar.xz", "node-v13.1.0-linux-x64", "2eecb5a4b7975c3b406bee36b12c9a29e8bedf9553c88cad310b8f076db00881"), - "13.1.0-windows_amd64": ("node-v13.1.0-win-x64.zip", "node-v13.1.0-win-x64", "d735e97bdeb7b74551b9d165c708a3fdea4dbb3801a65e70f6d6ae3539d48a03"), - # 13.2.0 - "13.2.0-darwin_amd64": ("node-v13.2.0-darwin-x64.tar.gz", "node-v13.2.0-darwin-x64", "2bcba358ef68ea21655728126c678063c60119e18e65d04f615d6b22dba8f7a5"), - "13.2.0-linux_arm64": ("node-v13.2.0-linux-arm64.tar.xz", "node-v13.2.0-linux-arm64", "e6c4a5fe57585f69a20bd028275db31f43de421308e31d117f319b577210e527"), - "13.2.0-linux_amd64": ("node-v13.2.0-linux-x64.tar.xz", "node-v13.2.0-linux-x64", "366df8a38b522a5899c3f48d8c9e359b3370495cf84867b2673dc10483adbdef"), - "13.2.0-windows_amd64": ("node-v13.2.0-win-x64.zip", "node-v13.2.0-win-x64", "e2866a8f53c45bb544d7b00aed1e5fddbbd7071bd331b02e66a6ce7c38c6918c"), - # 13.3.0 - "13.3.0-darwin_amd64": ("node-v13.3.0-darwin-x64.tar.gz", "node-v13.3.0-darwin-x64", "187ea9028daa6d9abad9c1cbb4e12ba51427c3748da29eae616fa352c0f4cd49"), - "13.3.0-linux_arm64": ("node-v13.3.0-linux-arm64.tar.xz", "node-v13.3.0-linux-arm64", "fb201a908bea36be828eee36a7cd898c67ad4ae6846982f393466e2b8b826c16"), - "13.3.0-linux_amd64": ("node-v13.3.0-linux-x64.tar.xz", "node-v13.3.0-linux-x64", "b208393ae411bd55188e903171901765aaa8381c08155e4a7b34174737a1bc65"), - "13.3.0-windows_amd64": ("node-v13.3.0-win-x64.zip", "node-v13.3.0-win-x64", "82e0f43aea81374a8028a7d3c9993245c4910ac95cd0f66ee5b29b940a6f3d93"), - # 13.4.0 - "13.4.0-darwin_amd64": ("node-v13.4.0-darwin-x64.tar.gz", "node-v13.4.0-darwin-x64", "4de08a89054416595228d6ff40fcf20c375d00556f2e95dfde8602cbb42c0b6e"), - "13.4.0-linux_arm64": ("node-v13.4.0-linux-arm64.tar.xz", "node-v13.4.0-linux-arm64", "382d5fb2983ab55d495e42145e812b3859d2a311e426307fd373f47825d55fe9"), - "13.4.0-linux_amd64": ("node-v13.4.0-linux-x64.tar.xz", "node-v13.4.0-linux-x64", "5cab49240c521efb80efd0a0bb3ba1071e5498c55ecbebd723d78648c91b1cc8"), - "13.4.0-windows_amd64": ("node-v13.4.0-win-x64.zip", "node-v13.4.0-win-x64", "56de9ed20332cdf22bb9b048c3fb3977662ef2de9d2e8ac2d2a27d28e9be276f"), - # 13.5.0 - "13.5.0-darwin_amd64": ("node-v13.5.0-darwin-x64.tar.gz", "node-v13.5.0-darwin-x64", "3322c601dc032677e5b5f87f393d4b1d70073bcab24fe74378eff8eb49364001"), - "13.5.0-linux_arm64": ("node-v13.5.0-linux-arm64.tar.xz", "node-v13.5.0-linux-arm64", "fe52f4e3a60a372138102da741e5b5d34310a74b3fc6f2000e4c254e3f0c4f51"), - "13.5.0-linux_amd64": ("node-v13.5.0-linux-x64.tar.xz", "node-v13.5.0-linux-x64", "4d2b2cea13388658e95d8b2dc7ff918718155473ef6ef38928d92eb8cbbe210a"), - "13.5.0-windows_amd64": ("node-v13.5.0-win-x64.zip", "node-v13.5.0-win-x64", "e286a84f2861b9f3c0290a9afbbecd09f303a39b2573af001ef8a4c1413eee7c"), - # 13.6.0 - "13.6.0-darwin_amd64": ("node-v13.6.0-darwin-x64.tar.gz", "node-v13.6.0-darwin-x64", "da13adb864777b322dda7af20410a9b0c63aa69de4b5574008d1e6910768bf69"), - "13.6.0-linux_arm64": ("node-v13.6.0-linux-arm64.tar.xz", "node-v13.6.0-linux-arm64", "1f34ed8668207e03cb832763319a82b4c753839a3655207adc5bbe52f65e154a"), - "13.6.0-linux_amd64": ("node-v13.6.0-linux-x64.tar.xz", "node-v13.6.0-linux-x64", "00f01315a867da16d1638f7a02966c608e344ac6c5b7d04d1fdae3138fa9d798"), - "13.6.0-windows_amd64": ("node-v13.6.0-win-x64.zip", "node-v13.6.0-win-x64", "7fe37b34a4673a071bea52fcaf913ec422cf6fd79fd025bfb22de42ccc77f386"), - # 13.7.0 - "13.7.0-darwin_amd64": ("node-v13.7.0-darwin-x64.tar.gz", "node-v13.7.0-darwin-x64", "866ea9bdbd7b734c593af96b946397d9c7cb9c291aa8ea52a6a2af271b972169"), - "13.7.0-linux_arm64": ("node-v13.7.0-linux-arm64.tar.xz", "node-v13.7.0-linux-arm64", "2823b199c7c4e6c547caf95139e28341444a5ffc52481a5ba704067291771579"), - "13.7.0-linux_amd64": ("node-v13.7.0-linux-x64.tar.xz", "node-v13.7.0-linux-x64", "02578025b82de24f4cfb3ffeb3824990431d739d09220f2db9ef9f454f475470"), - "13.7.0-windows_amd64": ("node-v13.7.0-win-x64.zip", "node-v13.7.0-win-x64", "26b41de81ead8f51de2964d7c7526533f46387ff436b61596e09d678bcd7503f"), - # 13.8.0 - "13.8.0-darwin_amd64": ("node-v13.8.0-darwin-x64.tar.gz", "node-v13.8.0-darwin-x64", "ae480e2b124cb55667763848b8ec0fde1bc35d5e0b76debe881034689a68eaea"), - "13.8.0-linux_arm64": ("node-v13.8.0-linux-arm64.tar.xz", "node-v13.8.0-linux-arm64", "f1d4167a6911e42d836a5459c992cdaf35a03ab0700ea80831d7df5d706d1baf"), - "13.8.0-linux_amd64": ("node-v13.8.0-linux-x64.tar.xz", "node-v13.8.0-linux-x64", "47a8cb675358f2ff534ad3d6709f14de0433f76d3af92cf389b8dcc78a1236ad"), - "13.8.0-windows_amd64": ("node-v13.8.0-win-x64.zip", "node-v13.8.0-win-x64", "f198f3e4b120fc84b61d12e7222530c5bb9c6f864735bb41a8db1cf1b94a64c3"), - # 13.9.0 - "13.9.0-darwin_amd64": ("node-v13.9.0-darwin-x64.tar.gz", "node-v13.9.0-darwin-x64", "b2a5a539b9b2d1733bda301913c99d220968de801bf313b762fa932820ea797b"), - "13.9.0-linux_arm64": ("node-v13.9.0-linux-arm64.tar.xz", "node-v13.9.0-linux-arm64", "c668afc06e4094b68ae758b823fc3244b34f0468fc0c2feee45278788989b8a1"), - "13.9.0-linux_amd64": ("node-v13.9.0-linux-x64.tar.xz", "node-v13.9.0-linux-x64", "f1e093303468032a1ecb0e290e19b43bf7771d4efbf589560df0060149614272"), - "13.9.0-windows_amd64": ("node-v13.9.0-win-x64.zip", "node-v13.9.0-win-x64", "ec0a55bb703906494e738cd3d09e3274b34f0a3fbe207b9e67502092ed017500"), - # 13.10.0 - "13.10.0-darwin_amd64": ("node-v13.10.0-darwin-x64.tar.gz", "node-v13.10.0-darwin-x64", "67269fb9061402e446bb61776be2e5d0ec330b5274326df77979698d05f503da"), - "13.10.0-linux_arm64": ("node-v13.10.0-linux-arm64.tar.xz", "node-v13.10.0-linux-arm64", "adb145535d2e03fe508fa7a34897a130ba903d6f718a21cd29d1760e298f715b"), - "13.10.0-linux_amd64": ("node-v13.10.0-linux-x64.tar.xz", "node-v13.10.0-linux-x64", "62081af005257d3db7ebd5a64b43f1a8e4a57bafd229be3acd7ce2704607eaac"), - "13.10.0-windows_amd64": ("node-v13.10.0-win-x64.zip", "node-v13.10.0-win-x64", "d428b6d3e127716191fa6df630d03a25d3186fda1ede04a9a8d5c07e526dbb9e"), - # 13.10.1 - "13.10.1-darwin_amd64": ("node-v13.10.1-darwin-x64.tar.gz", "node-v13.10.1-darwin-x64", "a6a66fdc79e70267fc191f10ee045793240974e1268fdea6c2d28afbc1d635e8"), - "13.10.1-linux_arm64": ("node-v13.10.1-linux-arm64.tar.xz", "node-v13.10.1-linux-arm64", "f73effcef784251e53b5e3938b8316c36bd49628c3588de7976e8569e560c12c"), - "13.10.1-linux_amd64": ("node-v13.10.1-linux-x64.tar.xz", "node-v13.10.1-linux-x64", "69d69165282d88f321e751f03ee5d3370db65e5ca4c587af24994b12f31d4827"), - "13.10.1-windows_amd64": ("node-v13.10.1-win-x64.zip", "node-v13.10.1-win-x64", "f9d0aac273a44dbd52dd8cdb3d6c684b68b860d128af58d77a0c08f39f51f229"), - # 13.11.0 - "13.11.0-darwin_amd64": ("node-v13.11.0-darwin-x64.tar.gz", "node-v13.11.0-darwin-x64", "2d87989fb1e0d425667c5ca9893cb3ecfb30cd3344d543870246d65f8d9b892f"), - "13.11.0-linux_arm64": ("node-v13.11.0-linux-arm64.tar.xz", "node-v13.11.0-linux-arm64", "63ce9871b9802a1f021c84f282c63e1890524a32dc97d3e7a7ab8d52b4bde19e"), - "13.11.0-linux_amd64": ("node-v13.11.0-linux-x64.tar.xz", "node-v13.11.0-linux-x64", "c127cf38f9a56d97646eb1fedb93712f304950c7143705de7180a701becc0fbb"), - "13.11.0-windows_amd64": ("node-v13.11.0-win-x64.zip", "node-v13.11.0-win-x64", "dc93aa5a82988f741dca6f1869c7b1aeda6f339293d13a968279a6dc9fcc8dd0"), - # 13.12.0 - "13.12.0-darwin_amd64": ("node-v13.12.0-darwin-x64.tar.gz", "node-v13.12.0-darwin-x64", "1fe3103610e8eb66ae71872ea1b4e868a638292a4e7ad0e41976a9fe417a09c7"), - "13.12.0-linux_arm64": ("node-v13.12.0-linux-arm64.tar.xz", "node-v13.12.0-linux-arm64", "2e8c12e575fcceb2d6f46eb3c50c6bfa98e91540bddaf91ca1c0fe739619ca0b"), - "13.12.0-linux_amd64": ("node-v13.12.0-linux-x64.tar.xz", "node-v13.12.0-linux-x64", "95eb1188872e243323cbc31fc80048be3fdfdda91505c62c80c599281de357ed"), - "13.12.0-windows_amd64": ("node-v13.12.0-win-x64.zip", "node-v13.12.0-win-x64", "de8445794ecbcfe895f4775417d1e2cc023e2212b1f5d4ff5cc0ed6875f7c911"), - # 13.13.0 - "13.13.0-darwin_amd64": ("node-v13.13.0-darwin-x64.tar.gz", "node-v13.13.0-darwin-x64", "28ae2abedafb250a9bbe706650fd79d2b25273f6445adcc1d85c777359dc5390"), - "13.13.0-linux_arm64": ("node-v13.13.0-linux-arm64.tar.xz", "node-v13.13.0-linux-arm64", "eded8da4633134cae0766a2f6f3c2237f8e728df77895c85607acaca13216226"), - "13.13.0-linux_amd64": ("node-v13.13.0-linux-x64.tar.xz", "node-v13.13.0-linux-x64", "41d60cda7422f53156711626d670f9b5079075b1ecc6736aea99319fe36c20a6"), - "13.13.0-windows_amd64": ("node-v13.13.0-win-x64.zip", "node-v13.13.0-win-x64", "79f2a39c1047666f2bbf2efe53c069a38b8f6ef18d569bf338463aea1914b89d"), - # 13.14.0 - "13.14.0-darwin_amd64": ("node-v13.14.0-darwin-x64.tar.gz", "node-v13.14.0-darwin-x64", "a56eb353fecd45f731d74fc77c58dde052320c1bc272de9b03151fbaf962feaf"), - "13.14.0-linux_arm64": ("node-v13.14.0-linux-arm64.tar.xz", "node-v13.14.0-linux-arm64", "e4736df097846bbe8195a185cc67ada3410a1f8993949e516bbf62b62198d2a7"), - "13.14.0-linux_amd64": ("node-v13.14.0-linux-x64.tar.xz", "node-v13.14.0-linux-x64", "9ab808ba3872d58e827ea60a6e43a352f59361bc8eb36fe0327a587086b466f9"), - "13.14.0-windows_amd64": ("node-v13.14.0-win-x64.zip", "node-v13.14.0-win-x64", "8c6e77fac5e911a2e70b6ca34804b3b59b6a3c685ab4e3b17756397df86063fa"), - # 14.0.0 - "14.0.0-darwin_amd64": ("node-v14.0.0-darwin-x64.tar.gz", "node-v14.0.0-darwin-x64", "4e50cec7aeef91c6d00d08a3bab938358da182984aa549c2aeab9868e3342f55"), - "14.0.0-linux_arm64": ("node-v14.0.0-linux-arm64.tar.xz", "node-v14.0.0-linux-arm64", "29c612fcdb40133171959b269878138bbfe7723d46681f70e2017ee30134e7ad"), - "14.0.0-linux_amd64": ("node-v14.0.0-linux-x64.tar.xz", "node-v14.0.0-linux-x64", "a2aaaa621074e1b56bb751bda53ce726319fac617587443371c0a7742481e5b6"), - "14.0.0-windows_amd64": ("node-v14.0.0-win-x64.zip", "node-v14.0.0-win-x64", "e8f73d4f2e9935df929360c09ae932ceb316784a7450b256024af5d01fe29b75"), - # 14.1.0 - "14.1.0-darwin_amd64": ("node-v14.1.0-darwin-x64.tar.gz", "node-v14.1.0-darwin-x64", "7f08bd365df4e7a5625ad393257f48e8cd79f77391ab87a64426b0c6448dd226"), - "14.1.0-linux_arm64": ("node-v14.1.0-linux-arm64.tar.xz", "node-v14.1.0-linux-arm64", "9dd3a4867f679f40075e2a364d3b3566702139274da9fcd59a182198ff7c7b52"), - "14.1.0-linux_amd64": ("node-v14.1.0-linux-x64.tar.xz", "node-v14.1.0-linux-x64", "959fab0c8ae0830f1ab987699cd2941cab97169991630a2e0c99db7c144f9e42"), - "14.1.0-windows_amd64": ("node-v14.1.0-win-x64.zip", "node-v14.1.0-win-x64", "1d3890d0d2f996cce57bcb0206e49b67233623e3cdb50eee77b8acc8f006b955"), - # 14.2.0 - "14.2.0-darwin_amd64": ("node-v14.2.0-darwin-x64.tar.gz", "node-v14.2.0-darwin-x64", "2447241aefe71dea8ba1552549e4df2e894d1ac12203630db3af63d4ae35c016"), - "14.2.0-linux_arm64": ("node-v14.2.0-linux-arm64.tar.xz", "node-v14.2.0-linux-arm64", "4587d2c52cd348094bd46ee4ee8cdfeb549462ead9b4aadc9cfc3c5fc3ba7215"), - "14.2.0-linux_amd64": ("node-v14.2.0-linux-x64.tar.xz", "node-v14.2.0-linux-x64", "468cbd92271da8c0cacaa3fa432a73a332e398bade8ad7359a94aa8ab3cc3cca"), - "14.2.0-windows_amd64": ("node-v14.2.0-win-x64.zip", "node-v14.2.0-win-x64", "99085f45a894e257123d7c729113cc00ed1413df432dbdce5fe53867e7c53b11"), - # 14.3.0 - "14.3.0-darwin_amd64": ("node-v14.3.0-darwin-x64.tar.gz", "node-v14.3.0-darwin-x64", "fd6a44303646f28b7e7577de687c2681cb565bef534e84deef44202e7919d7f3"), - "14.3.0-linux_arm64": ("node-v14.3.0-linux-arm64.tar.xz", "node-v14.3.0-linux-arm64", "53bb110ea135ae3c819f535373ce1b779e86c7aa49a9b93fc5f26969a72365d2"), - "14.3.0-linux_amd64": ("node-v14.3.0-linux-x64.tar.xz", "node-v14.3.0-linux-x64", "17236db7b9447080b58c2e50937982c386fe8a60e644b8d7f23e546068a8acba"), - "14.3.0-windows_amd64": ("node-v14.3.0-win-x64.zip", "node-v14.3.0-win-x64", "07bebc231dd8d773ab41cdcfbcb8b48e2336fbee20deb961b4300b9ba86afa04"), - # 14.4.0 - "14.4.0-darwin_amd64": ("node-v14.4.0-darwin-x64.tar.gz", "node-v14.4.0-darwin-x64", "d95eaa6950d67895b5cdd0e2f913d2c44034178234f0cb7436c3397b54f64023"), - "14.4.0-linux_arm64": ("node-v14.4.0-linux-arm64.tar.xz", "node-v14.4.0-linux-arm64", "9c9f84589b7bc6a05ac12a137e5097a5adb20b5c63ae9e4e912942da2c06d99d"), - "14.4.0-linux_amd64": ("node-v14.4.0-linux-x64.tar.xz", "node-v14.4.0-linux-x64", "d65a9a8a547bfe67c6c08dae733a3e5a846700d5377c5f150164cc6bb5f6a039"), - "14.4.0-windows_amd64": ("node-v14.4.0-win-x64.zip", "node-v14.4.0-win-x64", "a4bac45af8252f6b677a79ed19be4913f4939c4509fb08b6f14f972597550bbe"), - # 14.5.0 - "14.5.0-darwin_amd64": ("node-v14.5.0-darwin-x64.tar.gz", "node-v14.5.0-darwin-x64", "47dfd88abcd4d6d6f7b7516c95645f9760ba9c93d04b51a92895584c945b2953"), - "14.5.0-linux_arm64": ("node-v14.5.0-linux-arm64.tar.xz", "node-v14.5.0-linux-arm64", "c5ab67fbc73ea8858b4a989b6e92d6630decfc47c4703be7bcda3c6e39adff0b"), - "14.5.0-linux_amd64": ("node-v14.5.0-linux-x64.tar.xz", "node-v14.5.0-linux-x64", "8b0235c318de87ecf8eec9a39e5c5df80757dbec571addda7123276dfcb34d5b"), - "14.5.0-windows_amd64": ("node-v14.5.0-win-x64.zip", "node-v14.5.0-win-x64", "ab5728c85ece98210036fc9c38984fa2410a882dd99075b3d5bece58e4cc6ea2"), - # 14.6.0 - "14.6.0-darwin_amd64": ("node-v14.6.0-darwin-x64.tar.gz", "node-v14.6.0-darwin-x64", "7907a18605b900ce977ff4c7e67f7507f937f85738659865d31779c3b2990756"), - "14.6.0-linux_arm64": ("node-v14.6.0-linux-arm64.tar.xz", "node-v14.6.0-linux-arm64", "853f2c99f0e5fa65e6f222821e29c9d1a49f2d358a97c1de080ddf5c74e4ec70"), - "14.6.0-linux_amd64": ("node-v14.6.0-linux-x64.tar.xz", "node-v14.6.0-linux-x64", "b8a39b2dac8e200e96586356c5525d20b0b43dba8bf9f7eb4e8c2d5366be2bb2"), - "14.6.0-windows_amd64": ("node-v14.6.0-win-x64.zip", "node-v14.6.0-win-x64", "57ea75a7ec70cc8158e6f9774f9728fb9e3d08212b1af3e206db2de46ca304ca"), - # 14.7.0 - "14.7.0-darwin_amd64": ("node-v14.7.0-darwin-x64.tar.gz", "node-v14.7.0-darwin-x64", "47c94ec84706fd6851db27af54abdab569941fcbfcdc28e386d8fa7d49c6a619"), - "14.7.0-linux_arm64": ("node-v14.7.0-linux-arm64.tar.xz", "node-v14.7.0-linux-arm64", "12540328aeb5baa524a4e9c3b493b5eceb54cfa630f8bce64c19e674871e2f4b"), - "14.7.0-linux_amd64": ("node-v14.7.0-linux-x64.tar.xz", "node-v14.7.0-linux-x64", "48929b03deb2915b64ba67355d2deffeed3c8df798b0c5f2b821ffc7a8116a23"), - "14.7.0-windows_amd64": ("node-v14.7.0-win-x64.zip", "node-v14.7.0-win-x64", "a899693c9a31089a1eda14b1e613cf8cd60361e6e574b351551d832cf864c8f8"), - # 14.8.0 - "14.8.0-darwin_amd64": ("node-v14.8.0-darwin-x64.tar.gz", "node-v14.8.0-darwin-x64", "b6db32f2ff37475ae68502c76fc777a604cbc589bf57158fb4eed4db9ac5f62d"), - "14.8.0-linux_arm64": ("node-v14.8.0-linux-arm64.tar.xz", "node-v14.8.0-linux-arm64", "0c66a6468c36552c00d45cff0eaa924240f3d2e625be0306f33f8b0d81af4224"), - "14.8.0-linux_amd64": ("node-v14.8.0-linux-x64.tar.xz", "node-v14.8.0-linux-x64", "c7761fe5d56d045d1540b1f0bc8a20d7edf03e6fd695ee5fbffc1dd9416ccc75"), - "14.8.0-windows_amd64": ("node-v14.8.0-win-x64.zip", "node-v14.8.0-win-x64", "848ca582bdf8b7fdc21a38d9f3887a45bdf6381b04549fc0f918852889157c9a"), - # When adding a new version. please update /docs/install.md - }, + default = NODE_VERSIONS, doc = """Custom list of node repositories to use A dictionary mapping NodeJS versions to sets of hosts and their corresponding (filename, strip_prefix, sha256) tuples. diff --git a/internal/node/node_versions.bzl b/internal/node/node_versions.bzl new file mode 100644 index 0000000000..e8aec9bc79 --- /dev/null +++ b/internal/node/node_versions.bzl @@ -0,0 +1,822 @@ +""" Generated code; do not edit +Update by running yarn update-nodejs-versions +""" + +# @unsorted-dict-items +NODE_VERSIONS = { + # 8.0.0 + "8.0.0-darwin_amd64": ("node-v8.0.0-darwin-x64.tar.gz", "node-v8.0.0-darwin-x64", "6e4a66917e2c11d5adc537c899941c973ae586293352b8172a4f32be0b7f0300"), + "8.0.0-linux_arm64": ("node-v8.0.0-linux-arm64.tar.xz", "node-v8.0.0-linux-arm64", "8d6eaefcc252055de54a666d4e00eec78caf2143cd7a13b63f109e9eb78a795e"), + "8.0.0-linux_amd64": ("node-v8.0.0-linux-x64.tar.xz", "node-v8.0.0-linux-x64", "0a536bb83eeccca23626e5e5ead52563a641e4331c35e367662892921dc7e8a4"), + "8.0.0-windows_amd64": ("node-v8.0.0-win-x64.zip", "node-v8.0.0-win-x64", "84410377118857674e0fb6e7bc7627ffb8cc67a72f162a050276b076e328a9bb"), + # 8.1.0 + "8.1.0-darwin_amd64": ("node-v8.1.0-darwin-x64.tar.gz", "node-v8.1.0-darwin-x64", "08af5f1a7441728cabf9b11af25da28ee1725903524968dd9621b885b13303c7"), + "8.1.0-linux_arm64": ("node-v8.1.0-linux-arm64.tar.xz", "node-v8.1.0-linux-arm64", "adf2f517c9847cbb5904b282c0819526b5264c256477ed5e4b258584daa1a2ea"), + "8.1.0-linux_amd64": ("node-v8.1.0-linux-x64.tar.xz", "node-v8.1.0-linux-x64", "1638a0083c6eee122cbbefdf39cb8bcc43cf19fedff331a0317b05fd38dcb6df"), + "8.1.0-windows_amd64": ("node-v8.1.0-win-x64.zip", "node-v8.1.0-win-x64", "cee1fd1c828e8996824a2d9f9056dfae771b77c05b15ad015bc7f8800409215c"), + # 8.1.1 + "8.1.1-darwin_amd64": ("node-v8.1.1-darwin-x64.tar.gz", "node-v8.1.1-darwin-x64", "2f67890a5a46564672cfd4522cc00c7ac04d307e6a942ae1ad38b6aee94c29e2"), + "8.1.1-linux_arm64": ("node-v8.1.1-linux-arm64.tar.xz", "node-v8.1.1-linux-arm64", "3971543f9d29f77ddb8f47a54e4b99422a822173599748ab7fcd9c35c8e25124"), + "8.1.1-linux_amd64": ("node-v8.1.1-linux-x64.tar.xz", "node-v8.1.1-linux-x64", "6a735e77bdd21c92fe85ea5f9f567d0d6930fa33e0e111946b17cdb7efefb8d5"), + "8.1.1-windows_amd64": ("node-v8.1.1-win-x64.zip", "node-v8.1.1-win-x64", "459f3b62e58f4fac3b9b5e49694855f338f3dcf2fcf955299ee2a47f7687625a"), + # 8.1.2 + "8.1.2-darwin_amd64": ("node-v8.1.2-darwin-x64.tar.gz", "node-v8.1.2-darwin-x64", "70f353449b19d6d36262f5e38f9cc23e80b2034c21ae48623a6a4890f513eb53"), + "8.1.2-linux_arm64": ("node-v8.1.2-linux-arm64.tar.xz", "node-v8.1.2-linux-arm64", "d468ac671047a5a5edb6edd34a9a625645505551c35ef73e2102c504535a09d4"), + "8.1.2-linux_amd64": ("node-v8.1.2-linux-x64.tar.xz", "node-v8.1.2-linux-x64", "f5dc173d3005fbcfd107c83a15d4dbff9a28ff53ab42c23344a572d84814ecfe"), + "8.1.2-windows_amd64": ("node-v8.1.2-win-x64.zip", "node-v8.1.2-win-x64", "5463c812afeb498ad8ab9c396246e455d9353ab48ae409c82a2a45193e161f66"), + # 8.1.3 + "8.1.3-darwin_amd64": ("node-v8.1.3-darwin-x64.tar.gz", "node-v8.1.3-darwin-x64", "ae588038480a6acc57b6b04802fa876e0b602231e9846944dd1b4437e8c1205f"), + "8.1.3-linux_arm64": ("node-v8.1.3-linux-arm64.tar.xz", "node-v8.1.3-linux-arm64", "cebc2edd89f20613a530509a2435ecc42757ce16032559ef174ebe84875a1536"), + "8.1.3-linux_amd64": ("node-v8.1.3-linux-x64.tar.xz", "node-v8.1.3-linux-x64", "d41dc375ea7e33fadf0fb1bf89d9dfd222a2fb85633fba3d2cf48ac03522ba71"), + "8.1.3-windows_amd64": ("node-v8.1.3-win-x64.zip", "node-v8.1.3-win-x64", "be582920c723124ebad48c968f539ef66b1f628d8b6f2338dc68a32f95104856"), + # 8.1.4 + "8.1.4-darwin_amd64": ("node-v8.1.4-darwin-x64.tar.gz", "node-v8.1.4-darwin-x64", "a24858a10dd4ca8ad55fd61a7472b4fe9140eb3fa347c41717360c3f29438748"), + "8.1.4-linux_arm64": ("node-v8.1.4-linux-arm64.tar.xz", "node-v8.1.4-linux-arm64", "3553c617f594286fea7052678d04aec9e167adddf702b70431d88ce42573c339"), + "8.1.4-linux_amd64": ("node-v8.1.4-linux-x64.tar.xz", "node-v8.1.4-linux-x64", "d82fe7ef7e0f8ca1c343f00e3e490996553507ec7d42034f5df034cc7908caaf"), + "8.1.4-windows_amd64": ("node-v8.1.4-win-x64.zip", "node-v8.1.4-win-x64", "cc3689ffefc738f6256aab1713343c3c64c24ec997600c0a48243fb26f5e0bce"), + # 8.2.0 + "8.2.0-darwin_amd64": ("node-v8.2.0-darwin-x64.tar.gz", "node-v8.2.0-darwin-x64", "da5cca37ae0afdbff3a269bb3dc71ff0d86e282920286f71ae5eb6757cfa5356"), + "8.2.0-linux_arm64": ("node-v8.2.0-linux-arm64.tar.xz", "node-v8.2.0-linux-arm64", "3298ae4ae67c4ad714bed23383fd08db5711b164a077a25fb6b282533e65cf77"), + "8.2.0-linux_amd64": ("node-v8.2.0-linux-x64.tar.xz", "node-v8.2.0-linux-x64", "e8ceaac3ee4385d53bcebc552a7a6b545b09b9652f5ca1b254aae698fd9a25f9"), + "8.2.0-windows_amd64": ("node-v8.2.0-win-x64.zip", "node-v8.2.0-win-x64", "6bc3cc580f0e8190e6a03d6a5967c861c29d6a6eb50f995b3afb7d60b8cee4e1"), + # 8.2.1 + "8.2.1-darwin_amd64": ("node-v8.2.1-darwin-x64.tar.gz", "node-v8.2.1-darwin-x64", "32d0923c147470d57f18f055014f5a9fe8a3919406010a2e80ba85952d3c9923"), + "8.2.1-linux_arm64": ("node-v8.2.1-linux-arm64.tar.xz", "node-v8.2.1-linux-arm64", "9ed01737f37d410067beeb42066e51f6d0385677c7d0daeeaf2e32cb2aca854a"), + "8.2.1-linux_amd64": ("node-v8.2.1-linux-x64.tar.xz", "node-v8.2.1-linux-x64", "abcddeb95cc4465953b1edb0922d20e9b0b3de83688fc8150b863117032a978a"), + "8.2.1-windows_amd64": ("node-v8.2.1-win-x64.zip", "node-v8.2.1-win-x64", "37e84e54c67e3d1e52d657c04835b211c94631a0b358f4e7dc351618fdb6c083"), + # 8.3.0 + "8.3.0-darwin_amd64": ("node-v8.3.0-darwin-x64.tar.gz", "node-v8.3.0-darwin-x64", "a627354982a514e77e5c37ed5952edc81a7dd9c4f661fd919f192c21ae548654"), + "8.3.0-linux_arm64": ("node-v8.3.0-linux-arm64.tar.xz", "node-v8.3.0-linux-arm64", "9e0dab4913585a1b8117bda03c4b5581d9140aec67bb4be0e0b6a4999b41b4ab"), + "8.3.0-linux_amd64": ("node-v8.3.0-linux-x64.tar.xz", "node-v8.3.0-linux-x64", "ae377995c6e1af8e2a60c4a929f77562ebed9a2c6897cbd311a2c331f76b4e0f"), + "8.3.0-windows_amd64": ("node-v8.3.0-win-x64.zip", "node-v8.3.0-win-x64", "e762fa218465e5aa0952336eee2c3e42e5b48390b36838ca7b6a243812e0b7e5"), + # 8.4.0 + "8.4.0-darwin_amd64": ("node-v8.4.0-darwin-x64.tar.gz", "node-v8.4.0-darwin-x64", "cc10ffbd11586bd27a7cc5e6e2d03fd3e0b341368387a03ee9a0117a0288599d"), + "8.4.0-linux_arm64": ("node-v8.4.0-linux-arm64.tar.xz", "node-v8.4.0-linux-arm64", "0a811bbe4905fc879f3cbfc976e5a37cca05bbd609774abe4332b29fea75f073"), + "8.4.0-linux_amd64": ("node-v8.4.0-linux-x64.tar.xz", "node-v8.4.0-linux-x64", "7fd86abad06f96cb2f889c2a0e25686a3de3e9a078ad946ded91ee4f28d8218a"), + "8.4.0-windows_amd64": ("node-v8.4.0-win-x64.zip", "node-v8.4.0-win-x64", "0f60c99479f74d75c7239795c90698826ba8252019d4c23e82ed0d72ceb8974f"), + # 8.5.0 + "8.5.0-darwin_amd64": ("node-v8.5.0-darwin-x64.tar.gz", "node-v8.5.0-darwin-x64", "0c8d4c4d90f858a19a29fe1ae7f42b2b7f1a4d3caaa25bea2e08479c00ebbd5f"), + "8.5.0-linux_arm64": ("node-v8.5.0-linux-arm64.tar.xz", "node-v8.5.0-linux-arm64", "e0decdebe73dba516d6c72401e337cee6277c6e00f817b0bf1c592360adfd4e6"), + "8.5.0-linux_amd64": ("node-v8.5.0-linux-x64.tar.xz", "node-v8.5.0-linux-x64", "a9651fcc6259b4a944ebb72e6dd116602c7b26ddf939599b060d1d3e6ead8c36"), + "8.5.0-windows_amd64": ("node-v8.5.0-win-x64.zip", "node-v8.5.0-win-x64", "c385d162c15a7a85d42755ee8c78c1c73bd251e2f7cbf82e5e20c824564aa9df"), + # 8.6.0 + "8.6.0-darwin_amd64": ("node-v8.6.0-darwin-x64.tar.gz", "node-v8.6.0-darwin-x64", "2c95f3194a92e8b37aab8895fbaeb1f5fabef3494600ef78a7b7e078dba9a7c9"), + "8.6.0-linux_arm64": ("node-v8.6.0-linux-arm64.tar.xz", "node-v8.6.0-linux-arm64", "6848567ab32d04694120e18c20ef47d0f4163229634f236e4bdbb8d135f3204e"), + "8.6.0-linux_amd64": ("node-v8.6.0-linux-x64.tar.xz", "node-v8.6.0-linux-x64", "e6f52c3ed7e2cc34ebddbc563434fdf043feb449a60f028101eb45227aec3444"), + "8.6.0-windows_amd64": ("node-v8.6.0-win-x64.zip", "node-v8.6.0-win-x64", "08e9b29c47567517ca95ca01d5cdb255279be5463952f92da5c372a99d620b23"), + # 8.7.0 + "8.7.0-darwin_amd64": ("node-v8.7.0-darwin-x64.tar.gz", "node-v8.7.0-darwin-x64", "5e59798c1deafd671a35ef4dcdb9b97ce98f9255a056832dc98d454613e9ea08"), + "8.7.0-linux_arm64": ("node-v8.7.0-linux-arm64.tar.xz", "node-v8.7.0-linux-arm64", "5a1a1907fbb6d90667ce70ad42602534f6cc6eda873d1c50a3259349aee73418"), + "8.7.0-linux_amd64": ("node-v8.7.0-linux-x64.tar.xz", "node-v8.7.0-linux-x64", "9d6f649576cac74ef0b6634af8265156370cf8fdf3676f03e867347d3207675d"), + "8.7.0-windows_amd64": ("node-v8.7.0-win-x64.zip", "node-v8.7.0-win-x64", "e95be435674e82ea7133c3268cb70044eabde2d0aef28b2a3df5c7d8d23cadcc"), + # 8.8.0 + "8.8.0-darwin_amd64": ("node-v8.8.0-darwin-x64.tar.gz", "node-v8.8.0-darwin-x64", "69a37e240fac48289a2a5bb75ab96091f8d6457eeaf23c0a5125250abe418176"), + "8.8.0-linux_arm64": ("node-v8.8.0-linux-arm64.tar.xz", "node-v8.8.0-linux-arm64", "454617ff94882d9a81dca0840065fb5a928ff68e8e8efe7c1748d996ab757b2e"), + "8.8.0-linux_amd64": ("node-v8.8.0-linux-x64.tar.xz", "node-v8.8.0-linux-x64", "4304c297f41085ac1f7a6a8e68496d9fd5aa3b92590e7c3c6015a23939767e72"), + "8.8.0-windows_amd64": ("node-v8.8.0-win-x64.zip", "node-v8.8.0-win-x64", "a7a1fd2c5f5c967d7df70fdec1a8b2d2d2b1b411fcdd4f23bcf8c9c837a7c3cb"), + # 8.8.1 + "8.8.1-darwin_amd64": ("node-v8.8.1-darwin-x64.tar.gz", "node-v8.8.1-darwin-x64", "bf208e29418fb3efc836d3d32b62b9162f0f0b36a0665abc0990f4e292cfc84b"), + "8.8.1-linux_arm64": ("node-v8.8.1-linux-arm64.tar.xz", "node-v8.8.1-linux-arm64", "ea8ad0286a31e7519e979fcf99e503845a95da640cd140be5cff418a68fa6263"), + "8.8.1-linux_amd64": ("node-v8.8.1-linux-x64.tar.xz", "node-v8.8.1-linux-x64", "004bc95267ef5d5b928f560582f681a679bada2201bf221735a02f4956f67b09"), + "8.8.1-windows_amd64": ("node-v8.8.1-win-x64.zip", "node-v8.8.1-win-x64", "a7e60a1a5f46ef309cbe74e423c17e69dd0a573f0c92c9e325caade3388d192a"), + # 8.9.0 + "8.9.0-darwin_amd64": ("node-v8.9.0-darwin-x64.tar.gz", "node-v8.9.0-darwin-x64", "aaf165348bc6d20012b048a88a8f3a35cba6799496e8f4c1246d85c524a84dbc"), + "8.9.0-linux_arm64": ("node-v8.9.0-linux-arm64.tar.xz", "node-v8.9.0-linux-arm64", "30cb00ac1cf6b466b1f27e7ce41363a67a66dbb64227c2dc5e33d221b09fc579"), + "8.9.0-linux_amd64": ("node-v8.9.0-linux-x64.tar.xz", "node-v8.9.0-linux-x64", "e92b91fa473f9ad805a1241907b6f1bd3f8ceac8426a8b4cb05428e62e243bdd"), + "8.9.0-windows_amd64": ("node-v8.9.0-win-x64.zip", "node-v8.9.0-win-x64", "dd971e43ff003213b0be31c1a8ce3421f72e0db2a703bc254ac685be4f7f609e"), + # 8.9.1 + "8.9.1-darwin_amd64": ("node-v8.9.1-darwin-x64.tar.gz", "node-v8.9.1-darwin-x64", "05c992a6621d28d564b92bf3051a5dc0adf83839237c0d4653a8cdb8a1c73b94"), + "8.9.1-linux_arm64": ("node-v8.9.1-linux-arm64.tar.xz", "node-v8.9.1-linux-arm64", "f774660980dcf931bf29847a5f26317823a063fa4a56f85f37c3222d77cce7c1"), + "8.9.1-linux_amd64": ("node-v8.9.1-linux-x64.tar.xz", "node-v8.9.1-linux-x64", "8be82805f7c1ab3e64d4569fb9a90ded2de78dd27cadbb91bad1bf975dae1e2d"), + "8.9.1-windows_amd64": ("node-v8.9.1-win-x64.zip", "node-v8.9.1-win-x64", "db89c6e041da359561fbe7da075bb4f9881a0f7d3e98c203e83732cfb283fa4a"), + # 8.9.2 + "8.9.2-darwin_amd64": ("node-v8.9.2-darwin-x64.tar.gz", "node-v8.9.2-darwin-x64", "ba03ae4c0ebd33e8661b5b241211ddb9f7e3b5b959d8cbd68f5941cb1ed5784d"), + "8.9.2-linux_arm64": ("node-v8.9.2-linux-arm64.tar.xz", "node-v8.9.2-linux-arm64", "cc222b4f910ff27ff66ccc96d5c7e2117942bcd161ec253d83cf430146b79bdf"), + "8.9.2-linux_amd64": ("node-v8.9.2-linux-x64.tar.xz", "node-v8.9.2-linux-x64", "d4065724e7f5f11e999f78de50fb0faac74341799cb0c0dafcbe87e0ecb0be86"), + "8.9.2-windows_amd64": ("node-v8.9.2-win-x64.zip", "node-v8.9.2-win-x64", "2afa8b899c0dddea50dcf5dda66ae7b0ca32326dbf66c52f947c082e7c95d090"), + # 8.9.3 + "8.9.3-darwin_amd64": ("node-v8.9.3-darwin-x64.tar.gz", "node-v8.9.3-darwin-x64", "fa7962f25db420a374e9e60d8a410188bd690a2f0ce8d403aa9b09d9b7ae8c1f"), + "8.9.3-linux_arm64": ("node-v8.9.3-linux-arm64.tar.xz", "node-v8.9.3-linux-arm64", "8860678ad0c24059380af254574e5a12371a2d5c92ca5e1ac7267314af7df04f"), + "8.9.3-linux_amd64": ("node-v8.9.3-linux-x64.tar.xz", "node-v8.9.3-linux-x64", "86f3aa593315f0503d069e3f4805019583ab8d86c0244a83c795d1942e3f99b7"), + "8.9.3-windows_amd64": ("node-v8.9.3-win-x64.zip", "node-v8.9.3-win-x64", "17dee0c06d088269123a27db3905a39a17a51cc0ea65435ae942c718f0f94403"), + # 8.9.4 + "8.9.4-darwin_amd64": ("node-v8.9.4-darwin-x64.tar.gz", "node-v8.9.4-darwin-x64", "ca50f7d2035eb805306e303b644bb1cde170ce2615e0a2c6e95fb80881c48c24"), + "8.9.4-linux_arm64": ("node-v8.9.4-linux-arm64.tar.xz", "node-v8.9.4-linux-arm64", "7c0369a5dbc98d0989c208ca3ee1b6db4cba576343014fdbf7d36fd2659f7089"), + "8.9.4-linux_amd64": ("node-v8.9.4-linux-x64.tar.xz", "node-v8.9.4-linux-x64", "68b94aac38cd5d87ab79c5b38306e34a20575f31a3ea788d117c20fffcca3370"), + "8.9.4-windows_amd64": ("node-v8.9.4-win-x64.zip", "node-v8.9.4-win-x64", "48946e99ac4484e071df25741d2300f3a656f476c5ff3f8116a4746c07ebe3b7"), + # 8.10.0 + "8.10.0-darwin_amd64": ("node-v8.10.0-darwin-x64.tar.gz", "node-v8.10.0-darwin-x64", "7d77bd35bc781f02ba7383779da30bd529f21849b86f14d87e097497671b0271"), + "8.10.0-linux_arm64": ("node-v8.10.0-linux-arm64.tar.xz", "node-v8.10.0-linux-arm64", "cbec410109664f75d3c988a43483576fc56f745e05e3884891df9c509fbb1b12"), + "8.10.0-linux_amd64": ("node-v8.10.0-linux-x64.tar.xz", "node-v8.10.0-linux-x64", "92220638d661a43bd0fee2bf478cb283ead6524f231aabccf14c549ebc2bc338"), + "8.10.0-windows_amd64": ("node-v8.10.0-win-x64.zip", "node-v8.10.0-win-x64", "936ada36cb6f09a5565571e15eb8006e45c5a513529c19e21d070acf0e50321b"), + # 8.11.0 + "8.11.0-darwin_amd64": ("node-v8.11.0-darwin-x64.tar.gz", "node-v8.11.0-darwin-x64", "408323335b8c691d75397c76ddd7b00490852652c78c813c586ba7eccc5c382b"), + "8.11.0-linux_arm64": ("node-v8.11.0-linux-arm64.tar.xz", "node-v8.11.0-linux-arm64", "a28f599a14ca9ef4062fa1e605b69cd046f81d3fc9a7d6dde1856fb593004b3a"), + "8.11.0-linux_amd64": ("node-v8.11.0-linux-x64.tar.xz", "node-v8.11.0-linux-x64", "180ef8c2a39c1696b9a05832883ed981ba11475ffa44ca77781a8d1c1954f944"), + "8.11.0-windows_amd64": ("node-v8.11.0-win-x64.zip", "node-v8.11.0-win-x64", "55b9c8d48b59569117a63fdb26e1de05e792c37f563feb7d44b4cd59be96aff8"), + # 8.11.1 + "8.11.1-darwin_amd64": ("node-v8.11.1-darwin-x64.tar.gz", "node-v8.11.1-darwin-x64", "5c7b05899ff56910a2b8180f139d48612f349ac2c5d20f08dbbeffbed9e3a089"), + "8.11.1-linux_arm64": ("node-v8.11.1-linux-arm64.tar.xz", "node-v8.11.1-linux-arm64", "ff518f33751baa8ea4f18853d446357c2edecd930a1526ac9b2eaa79baddc1bf"), + "8.11.1-linux_amd64": ("node-v8.11.1-linux-x64.tar.xz", "node-v8.11.1-linux-x64", "6617e245fa0f7fbe0e373e71d543fea878315324ab31dc64b4eba10e42d04c11"), + "8.11.1-windows_amd64": ("node-v8.11.1-win-x64.zip", "node-v8.11.1-win-x64", "7d49b59c2b5d73a14c138e8a215d558a64a5241cd5035d9824f608e7bba097b1"), + # 8.11.2 + "8.11.2-darwin_amd64": ("node-v8.11.2-darwin-x64.tar.gz", "node-v8.11.2-darwin-x64", "6bd619ab577a1256531e50e31924d99a094eb920de8b5bd060a056a2608282b9"), + "8.11.2-linux_arm64": ("node-v8.11.2-linux-arm64.tar.xz", "node-v8.11.2-linux-arm64", "c8e9833402277c1a5a31b41cc31c9cedad68ba87c2ef78aed6a3ced81af9da7f"), + "8.11.2-linux_amd64": ("node-v8.11.2-linux-x64.tar.xz", "node-v8.11.2-linux-x64", "213599127d24496cbf1cbb2a7c51060a3506d6b11132c59bb7f9f8a0edd210a7"), + "8.11.2-windows_amd64": ("node-v8.11.2-win-x64.zip", "node-v8.11.2-win-x64", "bbac1f56e8001a093acb2942f8a43c3bf22aec58216f446b7bf01f6f822dfe3f"), + # 8.11.3 + "8.11.3-darwin_amd64": ("node-v8.11.3-darwin-x64.tar.gz", "node-v8.11.3-darwin-x64", "77fa26b4c2fc34bdf5a5dd1cd39c93b12087fbd25148c6f04bf409698ee48b86"), + "8.11.3-linux_arm64": ("node-v8.11.3-linux-arm64.tar.xz", "node-v8.11.3-linux-arm64", "b8fddec18f20533929a07bc1d38ae63b1999a0252740094f0974b2cbea76eaa4"), + "8.11.3-linux_amd64": ("node-v8.11.3-linux-x64.tar.xz", "node-v8.11.3-linux-x64", "08e2fcfea66746bd966ea3a89f26851f1238d96f86c33eaf6274f67fce58421a"), + "8.11.3-windows_amd64": ("node-v8.11.3-win-x64.zip", "node-v8.11.3-win-x64", "91b779def1b21dcd1def7fc9671a869a1e2f989952e76fdc08a5d73570075f31"), + # 8.11.4 + "8.11.4-darwin_amd64": ("node-v8.11.4-darwin-x64.tar.gz", "node-v8.11.4-darwin-x64", "aa1de83b388581d0d9ec3276f4526ee67e17e0f1bc0deb5133f960ce5dc9f1ef"), + "8.11.4-linux_arm64": ("node-v8.11.4-linux-arm64.tar.xz", "node-v8.11.4-linux-arm64", "46e90dd916ddbf88c866de300c1b2a26f9216b19abd92b29e89439f62fb6fc1c"), + "8.11.4-linux_amd64": ("node-v8.11.4-linux-x64.tar.xz", "node-v8.11.4-linux-x64", "85ea7cbb5bf624e130585bfe3946e99c85ce5cb84c2aee474038bdbe912f908c"), + "8.11.4-windows_amd64": ("node-v8.11.4-win-x64.zip", "node-v8.11.4-win-x64", "72a21e2fcd3703994f57cf707b92e7f939df99c3e0298102e7436849e4948536"), + # 8.12.0 + "8.12.0-darwin_amd64": ("node-v8.12.0-darwin-x64.tar.gz", "node-v8.12.0-darwin-x64", "ca131b84dfcf2b6f653a6521d31f7a108ad7d83f4d7e781945b2eca8172064aa"), + "8.12.0-linux_arm64": ("node-v8.12.0-linux-arm64.tar.xz", "node-v8.12.0-linux-arm64", "0fbdcfd8cf0cb5e8f5beff84ba091fd47126ba44c628e3a351501419b211aa1a"), + "8.12.0-linux_amd64": ("node-v8.12.0-linux-x64.tar.xz", "node-v8.12.0-linux-x64", "29a20479cd1e3a03396a4e74a1784ccdd1cf2f96928b56f6ffa4c8dae40c88f2"), + "8.12.0-windows_amd64": ("node-v8.12.0-win-x64.zip", "node-v8.12.0-win-x64", "9b22c9b23148b61ea0052826b3ac0255b8a3a542c125272b8f014f15bf11b091"), + # 8.13.0 + "8.13.0-darwin_amd64": ("node-v8.13.0-darwin-x64.tar.gz", "node-v8.13.0-darwin-x64", "f6261c7a09a2c8bd77a8760a0e110410f508e5641ca132511b4883600f2d65f0"), + "8.13.0-linux_arm64": ("node-v8.13.0-linux-arm64.tar.xz", "node-v8.13.0-linux-arm64", "e8e0daab515dfd0c2323b8e1274475f61c8ca1cf582dcc254583cbf8593425e3"), + "8.13.0-linux_amd64": ("node-v8.13.0-linux-x64.tar.xz", "node-v8.13.0-linux-x64", "8fa1227b28113e25a8960d7fa6779a8c18bf20cfaafc9c5d0e46a3ee88373669"), + "8.13.0-windows_amd64": ("node-v8.13.0-win-x64.zip", "node-v8.13.0-win-x64", "46293121d207350bd8d334efb67303337933c4dac886a840f88ff6059bff9443"), + # 8.14.0 + "8.14.0-darwin_amd64": ("node-v8.14.0-darwin-x64.tar.gz", "node-v8.14.0-darwin-x64", "1e9bb233bb3c3b01826f9d7e1b3ecf1047840ce96a3a7d1921ddcb569c467329"), + "8.14.0-linux_arm64": ("node-v8.14.0-linux-arm64.tar.xz", "node-v8.14.0-linux-arm64", "fbcef89a60f1f40699589850f861fc84354a6f240610e2726c3743455dd82525"), + "8.14.0-linux_amd64": ("node-v8.14.0-linux-x64.tar.xz", "node-v8.14.0-linux-x64", "a56d1af4d7da81504338b09809cf10b3144808d47d4117b9bd9a5a4ec4d5d9b9"), + "8.14.0-windows_amd64": ("node-v8.14.0-win-x64.zip", "node-v8.14.0-win-x64", "d0be7c96a25c5d2b69f8a3510e9f4414643d5fe361b4509d455249e57f9a50af"), + # 8.14.1 + "8.14.1-darwin_amd64": ("node-v8.14.1-darwin-x64.tar.gz", "node-v8.14.1-darwin-x64", "d180a9b70de569e4c3d10c0c4a0af74e40dbca3e845df43ce1ec522bb4252eda"), + "8.14.1-linux_arm64": ("node-v8.14.1-linux-arm64.tar.xz", "node-v8.14.1-linux-arm64", "488a66288052c6497133179e4546efb7fbaf105e432cd0d9aab3471901ab5e58"), + "8.14.1-linux_amd64": ("node-v8.14.1-linux-x64.tar.xz", "node-v8.14.1-linux-x64", "1fec92a0110f692c68f7bdbec41b340c474bd77063323520786a7b9b00473daf"), + "8.14.1-windows_amd64": ("node-v8.14.1-win-x64.zip", "node-v8.14.1-win-x64", "41793b873f98ceed632b24120ef44b2df89625f3dfa90eb9298dad698249167c"), + # 8.15.0 + "8.15.0-darwin_amd64": ("node-v8.15.0-darwin-x64.tar.gz", "node-v8.15.0-darwin-x64", "a393971136408f837fbc0f7d71a63754f91cfb1851d48bd612d8219eb61956f1"), + "8.15.0-linux_arm64": ("node-v8.15.0-linux-arm64.tar.xz", "node-v8.15.0-linux-arm64", "5985c6dce65b1161ff41253da5aa4e64b8f10eb010a5d2712ea9b659f70179d7"), + "8.15.0-linux_amd64": ("node-v8.15.0-linux-x64.tar.xz", "node-v8.15.0-linux-x64", "c1f0c5facdba78b5dec5136aec40dcb00b5c7cf404d9236a99c955994f91d969"), + "8.15.0-windows_amd64": ("node-v8.15.0-win-x64.zip", "node-v8.15.0-win-x64", "13d8eab29c191bd16c69a70a556178a5adc988b243a036aaf3d5158861b60d8e"), + # 8.15.1 + "8.15.1-darwin_amd64": ("node-v8.15.1-darwin-x64.tar.gz", "node-v8.15.1-darwin-x64", "f3da0b4397150226c008a86c99d77dbb835dc62219d863654913a78332ab19a5"), + "8.15.1-linux_arm64": ("node-v8.15.1-linux-arm64.tar.xz", "node-v8.15.1-linux-arm64", "69e000d78342c3d39583922c57947a906ad723789d6294951deb10cbe8709605"), + "8.15.1-linux_amd64": ("node-v8.15.1-linux-x64.tar.xz", "node-v8.15.1-linux-x64", "5643b54c583eebaa40c1623b16cba4e3955ff5dfdd44036f6bafd761160c993d"), + "8.15.1-windows_amd64": ("node-v8.15.1-win-x64.zip", "node-v8.15.1-win-x64", "f636fa578dc079bacc6c4bef13284ddb893c99f7640b96701c2690bd9c1431f5"), + # 8.16.0 + "8.16.0-darwin_amd64": ("node-v8.16.0-darwin-x64.tar.gz", "node-v8.16.0-darwin-x64", "a6710b8af0862fab0ccdba0549dbcdad76b5f99070652e64f6a85158038fc9a6"), + "8.16.0-linux_arm64": ("node-v8.16.0-linux-arm64.tar.xz", "node-v8.16.0-linux-arm64", "4583d1cb44ff8b51cbf0402a78f2fe086c13a6c900c20c8be14e3b0e28e34335"), + "8.16.0-linux_amd64": ("node-v8.16.0-linux-x64.tar.xz", "node-v8.16.0-linux-x64", "e538ffaaf2f808c084e70f1a1d2ff5559cff892cfd56e0bb67d00b0a95fc3a7a"), + "8.16.0-windows_amd64": ("node-v8.16.0-win-x64.zip", "node-v8.16.0-win-x64", "d6baa929bacb78b347b29ebb0263220ea649ce82f3cdfd3f0b41ac725d1bbba5"), + # 8.16.1 + "8.16.1-darwin_amd64": ("node-v8.16.1-darwin-x64.tar.gz", "node-v8.16.1-darwin-x64", "ef1cb93f03bca4b9528e5d3226bdf8efa135e4b12285eee1e4760da06bac631a"), + "8.16.1-linux_arm64": ("node-v8.16.1-linux-arm64.tar.xz", "node-v8.16.1-linux-arm64", "0c61c6ae8a70d96ab19848a09b2010d29b806f2dd79177da22c743fd5e352a98"), + "8.16.1-linux_amd64": ("node-v8.16.1-linux-x64.tar.xz", "node-v8.16.1-linux-x64", "22a2580569c787ea83960bda0eae5dfaf1fe79382a52ad5fa5cd3accb93a1818"), + "8.16.1-windows_amd64": ("node-v8.16.1-win-x64.zip", "node-v8.16.1-win-x64", "396dc41740bca0355d11865780e2af8e88eb17581cd2c445ccaf29b862901ab8"), + # 8.16.2 + "8.16.2-darwin_amd64": ("node-v8.16.2-darwin-x64.tar.gz", "node-v8.16.2-darwin-x64", "359331120e83f0707219398fc543b05eee9476446ecce549c20c4d9c7c103d29"), + "8.16.2-linux_arm64": ("node-v8.16.2-linux-arm64.tar.xz", "node-v8.16.2-linux-arm64", "5afe366affb05136d25e99ec97a7a1ee1b690cc26df43567af0509f36b45e682"), + "8.16.2-linux_amd64": ("node-v8.16.2-linux-x64.tar.xz", "node-v8.16.2-linux-x64", "88617a293f5828cc94ee99c94a43fbea12b989e34fe643fc14885a14748a8da6"), + "8.16.2-windows_amd64": ("node-v8.16.2-win-x64.zip", "node-v8.16.2-win-x64", "98c615221500434155a8a5aff5fe96cd000400f3e76858ca97e6624f1d15eb73"), + # 8.17.0 + "8.17.0-darwin_amd64": ("node-v8.17.0-darwin-x64.tar.gz", "node-v8.17.0-darwin-x64", "3117430fc93e9865e4a1842616cc98767b5d6987fd9d727c8be4068714570e16"), + "8.17.0-linux_arm64": ("node-v8.17.0-linux-arm64.tar.xz", "node-v8.17.0-linux-arm64", "8318d1ee0265d84025ecbea76aaecd732974a6f4ac8492ddd84231cee77ba948"), + "8.17.0-linux_amd64": ("node-v8.17.0-linux-x64.tar.xz", "node-v8.17.0-linux-x64", "b7f6dd77fb173c8c7c30d61d0702eefc236bba74398538aa77bfa2bb47bddce6"), + "8.17.0-windows_amd64": ("node-v8.17.0-win-x64.zip", "node-v8.17.0-win-x64", "e95a63e81b27e78872c0efb9dd5809403014dbf9896035cc17adf51a350f88fa"), + # 9.0.0 + "9.0.0-darwin_amd64": ("node-v9.0.0-darwin-x64.tar.gz", "node-v9.0.0-darwin-x64", "40fe905e492deadbf84c46baba413294e516fa844ed8e68adb4117f8acabe9a9"), + "9.0.0-linux_arm64": ("node-v9.0.0-linux-arm64.tar.xz", "node-v9.0.0-linux-arm64", "0250e13705259dcf736ac4216833c2ade459e3ade94d89af68bd98ded1783cb6"), + "9.0.0-linux_amd64": ("node-v9.0.0-linux-x64.tar.xz", "node-v9.0.0-linux-x64", "8313d2f6d69dbea4cb860803a156f093041cbe352a843c06f9f05cab1f30e9cc"), + "9.0.0-windows_amd64": ("node-v9.0.0-win-x64.zip", "node-v9.0.0-win-x64", "d25901007e7c48da3af162bc1917d5bdd78c7e3b9cb64f16f90c38b59ef7b412"), + # 9.1.0 + "9.1.0-darwin_amd64": ("node-v9.1.0-darwin-x64.tar.gz", "node-v9.1.0-darwin-x64", "8e180de9b3f6a79f09a391c89de54920bbf5375337d3e13c5bfcbce85af711ab"), + "9.1.0-linux_arm64": ("node-v9.1.0-linux-arm64.tar.xz", "node-v9.1.0-linux-arm64", "37d329fa06b22e30243c503b64d9666d56abb6c0ce903251d4b43e7ad0833fb3"), + "9.1.0-linux_amd64": ("node-v9.1.0-linux-x64.tar.xz", "node-v9.1.0-linux-x64", "b796ed115c97acd23211c294129b0a834ff3a6a0f583111443b89d2b24e0d4d9"), + "9.1.0-windows_amd64": ("node-v9.1.0-win-x64.zip", "node-v9.1.0-win-x64", "f2e76f536ff4fedd9884684f0b1979e04d0fd1c2a65d7d1a5a013de885dd07b3"), + # 9.2.0 + "9.2.0-darwin_amd64": ("node-v9.2.0-darwin-x64.tar.gz", "node-v9.2.0-darwin-x64", "42f78982b8614f099bc70819db40074ff7c1c49d4bac71eca5ffe4120452f289"), + "9.2.0-linux_arm64": ("node-v9.2.0-linux-arm64.tar.xz", "node-v9.2.0-linux-arm64", "1b5c44160b7bfc9e5d63697d63c82330ae3e6094ab48449bd958ebe0baef73f0"), + "9.2.0-linux_amd64": ("node-v9.2.0-linux-x64.tar.xz", "node-v9.2.0-linux-x64", "ded9cef0243bbe8ac5a417be0c6471bed6ed82367714ccb23f79a5be0ba2bd5d"), + "9.2.0-windows_amd64": ("node-v9.2.0-win-x64.zip", "node-v9.2.0-win-x64", "5e7feb536547c715155d772f90857239b37897c1a1a664809fd84a7aeae1a724"), + # 9.2.1 + "9.2.1-darwin_amd64": ("node-v9.2.1-darwin-x64.tar.gz", "node-v9.2.1-darwin-x64", "4263f3da0280e2decd3a2ab97672e6f718acdf704664a3f1251e4ea267ccc971"), + "9.2.1-linux_arm64": ("node-v9.2.1-linux-arm64.tar.xz", "node-v9.2.1-linux-arm64", "09d362e2ed5f4af5e5dc2253bb4523d7bcb92135bcc11d9eb89ad8336229b756"), + "9.2.1-linux_amd64": ("node-v9.2.1-linux-x64.tar.xz", "node-v9.2.1-linux-x64", "548d2959939235ca56c98740f64b64058e43d1499d760603b7941b7c37ad10fe"), + "9.2.1-windows_amd64": ("node-v9.2.1-win-x64.zip", "node-v9.2.1-win-x64", "7b48ef7c718fe5748844f93101f9276a88ae1cf3c4c228f85306a6a266471b5b"), + # 9.3.0 + "9.3.0-darwin_amd64": ("node-v9.3.0-darwin-x64.tar.gz", "node-v9.3.0-darwin-x64", "0539601e67e9be6995d4ba4abe565a748e25699060631369f59166d5de43d21a"), + "9.3.0-linux_arm64": ("node-v9.3.0-linux-arm64.tar.xz", "node-v9.3.0-linux-arm64", "11300e878220962adade33238dd6e55928ad6d1362e0daa1f12e272137e68c0b"), + "9.3.0-linux_amd64": ("node-v9.3.0-linux-x64.tar.xz", "node-v9.3.0-linux-x64", "0424dd6fa059fc32e0b73f460cb587b92b13c7b0af56331bbdc53a52e43f24ea"), + "9.3.0-windows_amd64": ("node-v9.3.0-win-x64.zip", "node-v9.3.0-win-x64", "53bceda79c8d5dd8a185221a5ea2fc8f2b24ed7e0c9c91d18f6016b3624ff096"), + # 9.4.0 + "9.4.0-darwin_amd64": ("node-v9.4.0-darwin-x64.tar.gz", "node-v9.4.0-darwin-x64", "fa271c6012d517851603829af2131b92dc7b03d6f167dcd197cb83468a4971e8"), + "9.4.0-linux_arm64": ("node-v9.4.0-linux-arm64.tar.xz", "node-v9.4.0-linux-arm64", "ceed69e91723cb902fcf70e790d34147a91241509257c77a62327871dfad04fa"), + "9.4.0-linux_amd64": ("node-v9.4.0-linux-x64.tar.xz", "node-v9.4.0-linux-x64", "6d331d75a39fc5292dd128ad83f6dd14bbbdcb84ba0dfe793fade833be5de95a"), + "9.4.0-windows_amd64": ("node-v9.4.0-win-x64.zip", "node-v9.4.0-win-x64", "89d49d73eb92483af0133c97e57a5b521c523960c130c76727daa3412af7d5d8"), + # 9.5.0 + "9.5.0-darwin_amd64": ("node-v9.5.0-darwin-x64.tar.gz", "node-v9.5.0-darwin-x64", "bc5c6eb21a90dbcaf90479838416c90524fe6d47e92c928ef57d7e96a54eb5fe"), + "9.5.0-linux_arm64": ("node-v9.5.0-linux-arm64.tar.xz", "node-v9.5.0-linux-arm64", "d6a98a51c032963014f606acc80babb456f3dc4c041534ca565f573a2382b253"), + "9.5.0-linux_amd64": ("node-v9.5.0-linux-x64.tar.xz", "node-v9.5.0-linux-x64", "76dd38bb5a16a610894353228ef020653f81209a2e509d38aee78ace4410599e"), + "9.5.0-windows_amd64": ("node-v9.5.0-win-x64.zip", "node-v9.5.0-win-x64", "2fd1c3865a34827af6b5d799aee68e011a16a637276cbf71e923c8bedd010ee8"), + # 9.6.0 + "9.6.0-darwin_amd64": ("node-v9.6.0-darwin-x64.tar.gz", "node-v9.6.0-darwin-x64", "4f2001075b724791bf652b5432073aaaaec03cb00b17cda054ab0a05126035fe"), + "9.6.0-linux_arm64": ("node-v9.6.0-linux-arm64.tar.xz", "node-v9.6.0-linux-arm64", "eb10815b1d21e8f5111b90c15b19050279b44666d08a12f26906271e9f6b02dd"), + "9.6.0-linux_amd64": ("node-v9.6.0-linux-x64.tar.xz", "node-v9.6.0-linux-x64", "24b8670c819278135b4b8851d880615dee8458fdb5f5390ed0c88c383377f5d3"), + "9.6.0-windows_amd64": ("node-v9.6.0-win-x64.zip", "node-v9.6.0-win-x64", "5f1da1ef6ba776449900c931e7acc3b60e47f3080425bf0e6a1c0c5a07dbd6fd"), + # 9.6.1 + "9.6.1-darwin_amd64": ("node-v9.6.1-darwin-x64.tar.gz", "node-v9.6.1-darwin-x64", "de486bc479817df2df1f91468e85e5da228a19101422c0c9a27153c1d0013c6d"), + "9.6.1-linux_arm64": ("node-v9.6.1-linux-arm64.tar.xz", "node-v9.6.1-linux-arm64", "6246c85acab2dd92463fa1c456db31a24cd7b50b3fa556c4976c5a91473b8c8f"), + "9.6.1-linux_amd64": ("node-v9.6.1-linux-x64.tar.xz", "node-v9.6.1-linux-x64", "d38f1707faccc54fae3cb201c25b02c4a3474d2c409c64f2a1d08925b238f8ad"), + "9.6.1-windows_amd64": ("node-v9.6.1-win-x64.zip", "node-v9.6.1-win-x64", "c8176d317945ce6221473d70999ec7e725f1c9a7477e991bd7c729026c46dffb"), + # 9.7.0 + "9.7.0-darwin_amd64": ("node-v9.7.0-darwin-x64.tar.gz", "node-v9.7.0-darwin-x64", "9730cf3c4c5e228d4855c3362b63dbe59041202d89ae30d7f5ca42f60f742c5d"), + "9.7.0-linux_arm64": ("node-v9.7.0-linux-arm64.tar.xz", "node-v9.7.0-linux-arm64", "18bec2bec5e2496f33b4d9d7f3bea7411cdb5d108f390b5c1949ddeda0e61125"), + "9.7.0-linux_amd64": ("node-v9.7.0-linux-x64.tar.xz", "node-v9.7.0-linux-x64", "5c7549ceeebdc7ac5acdcae5fffbeb9585e3b9e2003e70e116d9f19c768f73d1"), + "9.7.0-windows_amd64": ("node-v9.7.0-win-x64.zip", "node-v9.7.0-win-x64", "a17796c9c888e88a9a086dc1a22cdd872d8e948fbf1e988a8132fef716990530"), + # 9.7.1 + "9.7.1-darwin_amd64": ("node-v9.7.1-darwin-x64.tar.gz", "node-v9.7.1-darwin-x64", "9ee0fa891787865b1eccc63ef56134e7de8bbf67b660a1dde9e309305a1dc3b0"), + "9.7.1-linux_arm64": ("node-v9.7.1-linux-arm64.tar.xz", "node-v9.7.1-linux-arm64", "d9143c23f7aa171449229abd456c8a9e07dc1033a1e791132b3387d439e2475d"), + "9.7.1-linux_amd64": ("node-v9.7.1-linux-x64.tar.xz", "node-v9.7.1-linux-x64", "33b3ecd0a1de891a4a2f3586f1c6498c95c1ecc15864a6e3f4f7826792850d99"), + "9.7.1-windows_amd64": ("node-v9.7.1-win-x64.zip", "node-v9.7.1-win-x64", "8590ff193e645d7f719e25d9519633376c72cfa1b36192031705e0065b7d69b2"), + # 9.8.0 + "9.8.0-darwin_amd64": ("node-v9.8.0-darwin-x64.tar.gz", "node-v9.8.0-darwin-x64", "c95326d6d8d01e5d4fbf0ca1b1e4fc0d800d00516f38532cc887e17c78f2af07"), + "9.8.0-linux_arm64": ("node-v9.8.0-linux-arm64.tar.xz", "node-v9.8.0-linux-arm64", "f3537d06f010e77739be073003fca0b477efec8a72d503dc5a1d942a19973b07"), + "9.8.0-linux_amd64": ("node-v9.8.0-linux-x64.tar.xz", "node-v9.8.0-linux-x64", "9f631739b0a9b96b8760c42869e88592db9c3fda2425202bd8b2d09e6371133a"), + "9.8.0-windows_amd64": ("node-v9.8.0-win-x64.zip", "node-v9.8.0-win-x64", "dd3971c126907a033f2bc93fdd29327af3ff5b9d151b3b90eb5db1832fe6df9e"), + # 9.9.0 + "9.9.0-darwin_amd64": ("node-v9.9.0-darwin-x64.tar.gz", "node-v9.9.0-darwin-x64", "15e71817fe172119d6f9e0166ab869f12c67bdb7371d27a78b0621c408239692"), + "9.9.0-linux_arm64": ("node-v9.9.0-linux-arm64.tar.xz", "node-v9.9.0-linux-arm64", "06feb32656c91c3963270de18d4a7befe52d2d8c0fd78fbbb7792a881ffeec7a"), + "9.9.0-linux_amd64": ("node-v9.9.0-linux-x64.tar.xz", "node-v9.9.0-linux-x64", "457151b4e6f27222232742ce44de1df73768a251309dddbfca2b385052ee977f"), + "9.9.0-windows_amd64": ("node-v9.9.0-win-x64.zip", "node-v9.9.0-win-x64", "5186747c7cab6ff153e725c42446727e460d54e6c62353d5dc550046f5c05653"), + # 9.10.0 + "9.10.0-darwin_amd64": ("node-v9.10.0-darwin-x64.tar.gz", "node-v9.10.0-darwin-x64", "c4b98cc2f3c00b770f24549de112902b56d57be7963a1047cd116b357bc61569"), + "9.10.0-linux_arm64": ("node-v9.10.0-linux-arm64.tar.xz", "node-v9.10.0-linux-arm64", "ba1d682aa1d5a12eeb39e7f51e4c67c6122b24482869ca2547c6f094eae90658"), + "9.10.0-linux_amd64": ("node-v9.10.0-linux-x64.tar.xz", "node-v9.10.0-linux-x64", "b9bfffc03ef0e2c97d463619911552c7f5b1b8699de07bb913990a8b33800cb9"), + "9.10.0-windows_amd64": ("node-v9.10.0-win-x64.zip", "node-v9.10.0-win-x64", "3f159de87fd987e7bf30bbffce722e2e5133c44fc847883053359e9b08d6fa88"), + # 9.10.1 + "9.10.1-darwin_amd64": ("node-v9.10.1-darwin-x64.tar.gz", "node-v9.10.1-darwin-x64", "ae2d9dfdd3fdb6a6fe588e5479a768ee502968f6544ac8ad6133cb2e05726793"), + "9.10.1-linux_arm64": ("node-v9.10.1-linux-arm64.tar.xz", "node-v9.10.1-linux-arm64", "9b084b30e48a3a145fcc6cb282a1b46145b703c13a5eaee40afc7f9d82ad697b"), + "9.10.1-linux_amd64": ("node-v9.10.1-linux-x64.tar.xz", "node-v9.10.1-linux-x64", "fc810056be2a0665d0f67b42d25e1b8442bd885d4893b3256a7cfe676bd973de"), + "9.10.1-windows_amd64": ("node-v9.10.1-win-x64.zip", "node-v9.10.1-win-x64", "43bf882dec1550e00a039f77190a3e2a778354577e542563be4b5c205de17df1"), + # 9.11.0 + "9.11.0-darwin_amd64": ("node-v9.11.0-darwin-x64.tar.gz", "node-v9.11.0-darwin-x64", "e562cfc01a4d8e62c1d86f59cef4f00439b4ad279c97f95f76a39f4b3530b8e5"), + "9.11.0-linux_arm64": ("node-v9.11.0-linux-arm64.tar.xz", "node-v9.11.0-linux-arm64", "8df1dd7a1ec298900cf699a7ee8e5f0f478075d0e4c4fd3fb6e3a4ad3527545c"), + "9.11.0-linux_amd64": ("node-v9.11.0-linux-x64.tar.xz", "node-v9.11.0-linux-x64", "a4349420b74804b3404a4eea27341297968f61998b01f6504dbbad603700e944"), + "9.11.0-windows_amd64": ("node-v9.11.0-win-x64.zip", "node-v9.11.0-win-x64", "6e7f586ece923fd71e36d5db80b6a6d731a2b156464058cb2304f6c0192637cb"), + # 9.11.1 + "9.11.1-darwin_amd64": ("node-v9.11.1-darwin-x64.tar.gz", "node-v9.11.1-darwin-x64", "7b1fb394aa41a62b477e36df16644bd383cc9084808511f6cd318b835a06aac6"), + "9.11.1-linux_arm64": ("node-v9.11.1-linux-arm64.tar.xz", "node-v9.11.1-linux-arm64", "dba2de106fbde2013a204ca9fafdfe67c0426b4e63d186f888e59432ad2dbb03"), + "9.11.1-linux_amd64": ("node-v9.11.1-linux-x64.tar.xz", "node-v9.11.1-linux-x64", "4d27a95d5c2f1c8ef99118794c9c4903e63963418d3e16ca7576760cff39879b"), + "9.11.1-windows_amd64": ("node-v9.11.1-win-x64.zip", "node-v9.11.1-win-x64", "0a3566d57ccb7fed95d18fc6c3bc1552a1b1e4753f9bc6c5d45e04f325e1ee53"), + # 9.11.2 + "9.11.2-darwin_amd64": ("node-v9.11.2-darwin-x64.tar.gz", "node-v9.11.2-darwin-x64", "340993096108d1dc0e0b598560d87ec645fc94b0fc83a423c36343f2da45f4b8"), + "9.11.2-linux_arm64": ("node-v9.11.2-linux-arm64.tar.xz", "node-v9.11.2-linux-arm64", "9a713a6f4473425b83bf67e13e4b3c9f1f683c996b913f1f6854d208996367b6"), + "9.11.2-linux_amd64": ("node-v9.11.2-linux-x64.tar.xz", "node-v9.11.2-linux-x64", "a2e7fe4ee3c4e3f31e00dff241c92c2ed779a9f36735578603d2be966f938a4b"), + "9.11.2-windows_amd64": ("node-v9.11.2-win-x64.zip", "node-v9.11.2-win-x64", "051db8f4d3c0503e3082173f16b25e2362de8f9a5e509c403992b2069d826c25"), + # 10.0.0 + "10.0.0-darwin_amd64": ("node-v10.0.0-darwin-x64.tar.gz", "node-v10.0.0-darwin-x64", "37447fdb5f5cbcf1307ca1661ed67e6e911e0e988c0cb6d15f92eebb211dce88"), + "10.0.0-linux_arm64": ("node-v10.0.0-linux-arm64.tar.xz", "node-v10.0.0-linux-arm64", "18f626a967d72294d969bdf000ca80ef483a8bb75482a2c4d14f5e0141626611"), + "10.0.0-linux_amd64": ("node-v10.0.0-linux-x64.tar.xz", "node-v10.0.0-linux-x64", "d57c391daef40e706ca71abeaf9d53271c9d0fdb9cd18a80f6296b04dbaf2d5a"), + "10.0.0-windows_amd64": ("node-v10.0.0-win-x64.zip", "node-v10.0.0-win-x64", "a95d88e2c28cbcbadb1fa431ec0b686f196dda00d4a25b0829450dc8f5214ec3"), + # 10.1.0 + "10.1.0-darwin_amd64": ("node-v10.1.0-darwin-x64.tar.gz", "node-v10.1.0-darwin-x64", "383ef526e27b92113f8dc0dad406b771f6ecaf9e3fddd4f5357590a3cf543d7b"), + "10.1.0-linux_arm64": ("node-v10.1.0-linux-arm64.tar.xz", "node-v10.1.0-linux-arm64", "01e252589cf1ce61d2aaa316895001eb24c90a48b04a0e4896de252d2840ffe9"), + "10.1.0-linux_amd64": ("node-v10.1.0-linux-x64.tar.xz", "node-v10.1.0-linux-x64", "cb5860c0d3249330d882fb8c6619c082cf3cda177536d4ed979388dde0034f22"), + "10.1.0-windows_amd64": ("node-v10.1.0-win-x64.zip", "node-v10.1.0-win-x64", "8448bbd50731e98a4ed8bb4f3f3964170ff3a26418e9bcb3caf770faa9fb06d7"), + # 10.2.0 + "10.2.0-darwin_amd64": ("node-v10.2.0-darwin-x64.tar.gz", "node-v10.2.0-darwin-x64", "35fcc482d07218119ce5fde62620994324f03f8c4426dd680886c6844b62232a"), + "10.2.0-linux_arm64": ("node-v10.2.0-linux-arm64.tar.xz", "node-v10.2.0-linux-arm64", "8f970be59a6a11f511a04ae1bd303746f0c5409498e062fb1d263d3c3c1093bd"), + "10.2.0-linux_amd64": ("node-v10.2.0-linux-x64.tar.xz", "node-v10.2.0-linux-x64", "a6ef9adc824db795b36f81ad0856adc5c878395c4ce2af20f5ba7b76a1ca9982"), + "10.2.0-windows_amd64": ("node-v10.2.0-win-x64.zip", "node-v10.2.0-win-x64", "7d7144d57b1b910d10f51d5445ae4306f10d3d9f45ca08b49e8777472993db51"), + # 10.2.1 + "10.2.1-darwin_amd64": ("node-v10.2.1-darwin-x64.tar.gz", "node-v10.2.1-darwin-x64", "6ffa149f67e8bd68d291d62591b6573146a65682affd99eefe2835a9c048d3ef"), + "10.2.1-linux_arm64": ("node-v10.2.1-linux-arm64.tar.xz", "node-v10.2.1-linux-arm64", "6899cab91fd01af6b73183d23693120ff0de547601d01822b53647d0f5d934ee"), + "10.2.1-linux_amd64": ("node-v10.2.1-linux-x64.tar.xz", "node-v10.2.1-linux-x64", "59ffaba5f54ea6a62ada1013a0cc1741c6e6fa790ab9ab2302a98932e7fb85d5"), + "10.2.1-windows_amd64": ("node-v10.2.1-win-x64.zip", "node-v10.2.1-win-x64", "ebe78920d72b7a226a345653f3f718f99dc531add35157d37d229050f3685705"), + # 10.3.0 + "10.3.0-darwin_amd64": ("node-v10.3.0-darwin-x64.tar.gz", "node-v10.3.0-darwin-x64", "0bb5b7e3fe8cccda2abda958d1eb0408f1518a8b0cb58b75ade5d507cd5d6053"), + "10.3.0-linux_arm64": ("node-v10.3.0-linux-arm64.tar.xz", "node-v10.3.0-linux-arm64", "6811b7b9807135902990508143605c0c758d07f7726092ed1b2e27cc60111bd0"), + "10.3.0-linux_amd64": ("node-v10.3.0-linux-x64.tar.xz", "node-v10.3.0-linux-x64", "eb3c3e2585494699716ad3197c8eedf4003d3f110829b30c5a0dc34414c47423"), + "10.3.0-windows_amd64": ("node-v10.3.0-win-x64.zip", "node-v10.3.0-win-x64", "65d586afb087406a2800d8e51f664c88b26d510f077b85a3b177a1bb79f73677"), + # 10.4.0 + "10.4.0-darwin_amd64": ("node-v10.4.0-darwin-x64.tar.gz", "node-v10.4.0-darwin-x64", "82b27983c990a6860e8d729e0b15acf9643ffca0eff282a926268849dfd2c3d2"), + "10.4.0-linux_arm64": ("node-v10.4.0-linux-arm64.tar.xz", "node-v10.4.0-linux-arm64", "18d01e0937cdd05386f59f792613aac7b6614a37312ede0c299bd589584976e9"), + "10.4.0-linux_amd64": ("node-v10.4.0-linux-x64.tar.xz", "node-v10.4.0-linux-x64", "ce2232578408f7d6bdc7d8bbb49d3416225fe68c52540ac23f4a6e0294d947f6"), + "10.4.0-windows_amd64": ("node-v10.4.0-win-x64.zip", "node-v10.4.0-win-x64", "315fc4099902a71b634fee15e4e160a0780703c59a66e7e4542045f6f2b91451"), + # 10.4.1 + "10.4.1-darwin_amd64": ("node-v10.4.1-darwin-x64.tar.gz", "node-v10.4.1-darwin-x64", "c232241c97e1f4659186205d50b44132e62b61cdc517f1fb86905a21d03e9189"), + "10.4.1-linux_arm64": ("node-v10.4.1-linux-arm64.tar.xz", "node-v10.4.1-linux-arm64", "c00b75a28eb69e4238c9d560f50da3652395ba7bfa6e325d5a2b0cd0926070f7"), + "10.4.1-linux_amd64": ("node-v10.4.1-linux-x64.tar.xz", "node-v10.4.1-linux-x64", "6196daea2b291cdb865b3597e6b819b13068cb2c9dbf27cb150256c557a81082"), + "10.4.1-windows_amd64": ("node-v10.4.1-win-x64.zip", "node-v10.4.1-win-x64", "70e0b9f0036f878884fdfc585c1001a439508d1d4e6448c4aced60274a2dc191"), + # 10.5.0 + "10.5.0-darwin_amd64": ("node-v10.5.0-darwin-x64.tar.gz", "node-v10.5.0-darwin-x64", "a85bda6ab91da8595e71736944cbd77c61afe05092217defd0fb74d9f77109f0"), + "10.5.0-linux_arm64": ("node-v10.5.0-linux-arm64.tar.xz", "node-v10.5.0-linux-arm64", "28e6baa2a4ac5b0f0f5adf85489574038d0a4ca48efe76a4e5831b6b222652ba"), + "10.5.0-linux_amd64": ("node-v10.5.0-linux-x64.tar.xz", "node-v10.5.0-linux-x64", "8b12be967f5962a8173dca235e1a6f642ee29dcf5fc27697004af898ffeca187"), + "10.5.0-windows_amd64": ("node-v10.5.0-win-x64.zip", "node-v10.5.0-win-x64", "ce2b1f9976de64bcc0a5ce877edee0d29c4db1ebab5a7fd713afffd661e99e08"), + # 10.6.0 + "10.6.0-darwin_amd64": ("node-v10.6.0-darwin-x64.tar.gz", "node-v10.6.0-darwin-x64", "537efef0c6fd998502fa10baf82ee21edf513256cc73575991354e19442d0b69"), + "10.6.0-linux_arm64": ("node-v10.6.0-linux-arm64.tar.xz", "node-v10.6.0-linux-arm64", "be37aade1c085093e276b5822a05233a1057bcafe77f5b9526dbdf622330c4bb"), + "10.6.0-linux_amd64": ("node-v10.6.0-linux-x64.tar.xz", "node-v10.6.0-linux-x64", "cfd47380729f2451169b8900b3bd65e4b9db669d1d540613758cd2ededf7b5e6"), + "10.6.0-windows_amd64": ("node-v10.6.0-win-x64.zip", "node-v10.6.0-win-x64", "0b58e0414d76e48432588910ea682f002ba69d7be88deb3355ceffb2fe472f6d"), + # 10.7.0 + "10.7.0-darwin_amd64": ("node-v10.7.0-darwin-x64.tar.gz", "node-v10.7.0-darwin-x64", "913473055605c8ae92f46923e6ac400133895aafe7766574fd46899bc6b0c5a4"), + "10.7.0-linux_arm64": ("node-v10.7.0-linux-arm64.tar.xz", "node-v10.7.0-linux-arm64", "c23856b3123f9e2cfae3f8b0668019f83e9450ee78dede02a8d43031255b7ba0"), + "10.7.0-linux_amd64": ("node-v10.7.0-linux-x64.tar.xz", "node-v10.7.0-linux-x64", "ad1d44cbe64ef44db5d8d42690a76dd186d6a6f71a3c3d38449757fe73135329"), + "10.7.0-windows_amd64": ("node-v10.7.0-win-x64.zip", "node-v10.7.0-win-x64", "a0914d4c1fb82f51a03a4f57c66c9ce6a65ccd4f3237706042c55799843f4b14"), + # 10.8.0 + "10.8.0-darwin_amd64": ("node-v10.8.0-darwin-x64.tar.gz", "node-v10.8.0-darwin-x64", "b800d8b55c234b1f7d972e9464b00328a1caea5f86f94fdb5fc88ebbed7852b7"), + "10.8.0-linux_arm64": ("node-v10.8.0-linux-arm64.tar.xz", "node-v10.8.0-linux-arm64", "0333da24d1fe54abac26b0a06437d3336c0fb4816b280507a9851ab3742ef2e4"), + "10.8.0-linux_amd64": ("node-v10.8.0-linux-x64.tar.xz", "node-v10.8.0-linux-x64", "497f3b243d7374ee0fe9ab200b175868b172c3a22282cedc6d7fb0cad82471f0"), + "10.8.0-windows_amd64": ("node-v10.8.0-win-x64.zip", "node-v10.8.0-win-x64", "f98575fb551d78691a6f74ca4f9c254bbd9fb62135e9ec0ab7ec8c40a03648b0"), + # 10.9.0 + "10.9.0-darwin_amd64": ("node-v10.9.0-darwin-x64.tar.gz", "node-v10.9.0-darwin-x64", "3c4fe75dacfcc495a432a7ba2dec9045cff359af2a5d7d0429c84a424ef686fc"), + "10.9.0-linux_arm64": ("node-v10.9.0-linux-arm64.tar.xz", "node-v10.9.0-linux-arm64", "3d6aa717d98bbf901c5325a02a81048eb47212bdc44963ef8d59c6e52e987b7c"), + "10.9.0-linux_amd64": ("node-v10.9.0-linux-x64.tar.xz", "node-v10.9.0-linux-x64", "c5acb8b7055ee0b6ac653dc4e458c5db45348cecc564b388f4ed1def84a329ff"), + "10.9.0-windows_amd64": ("node-v10.9.0-win-x64.zip", "node-v10.9.0-win-x64", "6a75cdbb69d62ed242d6cbf0238a470bcbf628567ee339d4d098a5efcda2401e"), + # 10.10.0 + "10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e"), + "10.10.0-linux_arm64": ("node-v10.10.0-linux-arm64.tar.xz", "node-v10.10.0-linux-arm64", "7d57961d18ea70b4e99906d87f9de1a2defc45a36fcd8cd84295e9ae5c4281da"), + "10.10.0-linux_amd64": ("node-v10.10.0-linux-x64.tar.xz", "node-v10.10.0-linux-x64", "686d2c7b7698097e67bcd68edc3d6b5d28d81f62436c7cf9e7779d134ec262a9"), + "10.10.0-windows_amd64": ("node-v10.10.0-win-x64.zip", "node-v10.10.0-win-x64", "70c46e6451798be9d052b700ce5dadccb75cf917f6bf0d6ed54344c856830cfb"), + # 10.11.0 + "10.11.0-darwin_amd64": ("node-v10.11.0-darwin-x64.tar.gz", "node-v10.11.0-darwin-x64", "32ad850a0e5cfdefc32d4267707abad05bd5c9eabb047e8ed9bf97faeffc52b6"), + "10.11.0-linux_arm64": ("node-v10.11.0-linux-arm64.tar.xz", "node-v10.11.0-linux-arm64", "289302470520fd63e2a92a878869061dda557fe1aabfea2bd5ff88f7af76d98d"), + "10.11.0-linux_amd64": ("node-v10.11.0-linux-x64.tar.xz", "node-v10.11.0-linux-x64", "c2eab149e7f0712a6a3eb672a76d657b049a3b3ae0c2edc2e0571df5049fe82c"), + "10.11.0-windows_amd64": ("node-v10.11.0-win-x64.zip", "node-v10.11.0-win-x64", "78b2a7a4305aa108b9a82ac7586d7200ab51428c2b882d1318fb44ca300a8609"), + # 10.12.0 + "10.12.0-darwin_amd64": ("node-v10.12.0-darwin-x64.tar.gz", "node-v10.12.0-darwin-x64", "f275c901b9aeaacea2bf22648329c2e9ade5e1ff63a446b83446d5d4e19464cc"), + "10.12.0-linux_arm64": ("node-v10.12.0-linux-arm64.tar.xz", "node-v10.12.0-linux-arm64", "b327deca4e380559c8c1fbacb9e668b49127ea998de4c8fe83912838cf786786"), + "10.12.0-linux_amd64": ("node-v10.12.0-linux-x64.tar.xz", "node-v10.12.0-linux-x64", "4eba2e9a6db95745b769915d58e57df6ca6724ec1f023f76556fce30ceca2367"), + "10.12.0-windows_amd64": ("node-v10.12.0-win-x64.zip", "node-v10.12.0-win-x64", "44c938cf1409562d25d23b7c6bce110b53cd2a73774bed573b2979f0d88f51f8"), + # 10.13.0 + "10.13.0-darwin_amd64": ("node-v10.13.0-darwin-x64.tar.gz", "node-v10.13.0-darwin-x64", "815a5d18516934a3963ace9f0574f7d41f0c0ce9186a19be3d89e039e57598c5"), + "10.13.0-linux_arm64": ("node-v10.13.0-linux-arm64.tar.xz", "node-v10.13.0-linux-arm64", "1537ebe64dc34a2a9b8ab6254213079789e9d59ed0ed26987afb1da37b6a8f87"), + "10.13.0-linux_amd64": ("node-v10.13.0-linux-x64.tar.xz", "node-v10.13.0-linux-x64", "0dc6dba645550b66f8f00541a428c29da7c3cde32fb7eda2eb626a9db3bbf08d"), + "10.13.0-windows_amd64": ("node-v10.13.0-win-x64.zip", "node-v10.13.0-win-x64", "eb09c9e9677f1919ec1ca78623c09b2a718ec5388b72b7662d5c41e5f628a52c"), + # 10.14.0 + "10.14.0-darwin_amd64": ("node-v10.14.0-darwin-x64.tar.gz", "node-v10.14.0-darwin-x64", "dd044aa0ddeb5e32fefa80a13b33bafe3f7e0536e15fe93c1e81b052c2f1965c"), + "10.14.0-linux_arm64": ("node-v10.14.0-linux-arm64.tar.xz", "node-v10.14.0-linux-arm64", "4d80efe675c40d6d3af697e17e33cad8af1caf50655276ca99d0c4ca8e2f2cf2"), + "10.14.0-linux_amd64": ("node-v10.14.0-linux-x64.tar.xz", "node-v10.14.0-linux-x64", "5f576f9893e0335f0c1b071a42fdf8b3e302577ad6ea38237aaef08ad0ca898e"), + "10.14.0-windows_amd64": ("node-v10.14.0-win-x64.zip", "node-v10.14.0-win-x64", "a3acbbdbbdb6ff6d5ae6e6f5ccea55aef83cfa54f52c080538edc3ac6326797b"), + # 10.14.1 + "10.14.1-darwin_amd64": ("node-v10.14.1-darwin-x64.tar.gz", "node-v10.14.1-darwin-x64", "91ebe7d6da8a40c72618ac9d0b0a8e224ae01febd3f5595b43b1a58190dcacb1"), + "10.14.1-linux_arm64": ("node-v10.14.1-linux-arm64.tar.xz", "node-v10.14.1-linux-arm64", "c1ca91356b007cc7624c7a9e00f3b7bed8dd10aba959be5f55e4ff13da334828"), + "10.14.1-linux_amd64": ("node-v10.14.1-linux-x64.tar.xz", "node-v10.14.1-linux-x64", "b65e735cdf61fb80f114c498c8955efe8e096e4b3e173281d68aa9d2c05b0f97"), + "10.14.1-windows_amd64": ("node-v10.14.1-win-x64.zip", "node-v10.14.1-win-x64", "7d51aa233ad290eb916a4c3134815204eb34ecb0a001dcecc5ea57333030f303"), + # 10.14.2 + "10.14.2-darwin_amd64": ("node-v10.14.2-darwin-x64.tar.gz", "node-v10.14.2-darwin-x64", "5306da5db576d9c984167b4693600a2e3074cc5a701961279837753fa2139baa"), + "10.14.2-linux_arm64": ("node-v10.14.2-linux-arm64.tar.xz", "node-v10.14.2-linux-arm64", "8493b30c99d697b24fbaa5bfb3b43108ab3e334ab674188b7b7982fef903aa04"), + "10.14.2-linux_amd64": ("node-v10.14.2-linux-x64.tar.xz", "node-v10.14.2-linux-x64", "e43de13bf7bee440a106a844c1bc3a2adb8829fd58b857702c8f1838fdd02a2a"), + "10.14.2-windows_amd64": ("node-v10.14.2-win-x64.zip", "node-v10.14.2-win-x64", "45841fe5ffe87378c748dcb9799507f6192c34117409b2c6c18480d112a337de"), + # 10.15.0 + "10.15.0-darwin_amd64": ("node-v10.15.0-darwin-x64.tar.gz", "node-v10.15.0-darwin-x64", "353402461c898c569658d0a963790476f4d9828cc6c9286d81617ee8afcba4e8"), + "10.15.0-linux_arm64": ("node-v10.15.0-linux-arm64.tar.xz", "node-v10.15.0-linux-arm64", "77aa4a02c5471b6eb7ba935cbc6829889a27115353cff7226a208c08b654e972"), + "10.15.0-linux_amd64": ("node-v10.15.0-linux-x64.tar.xz", "node-v10.15.0-linux-x64", "4ee8503c1133797777880ebf75dcf6ae3f9b894c66fd2d5da507e407064c13b5"), + "10.15.0-windows_amd64": ("node-v10.15.0-win-x64.zip", "node-v10.15.0-win-x64", "c1dbc9372ad789cd21727cb5f63b4a44ed3eae216763959cff8e68e68c6fcfe1"), + # 10.15.1 + "10.15.1-darwin_amd64": ("node-v10.15.1-darwin-x64.tar.gz", "node-v10.15.1-darwin-x64", "327dcef4b61dead1ae04d2743d3390a2b7e6cc6c389c62cfcfeb0486c5a9f181"), + "10.15.1-linux_arm64": ("node-v10.15.1-linux-arm64.tar.xz", "node-v10.15.1-linux-arm64", "0fb6d24972fd991f476a942b1b21aca5059f93b9302318c5883120445ee6cd54"), + "10.15.1-linux_amd64": ("node-v10.15.1-linux-x64.tar.xz", "node-v10.15.1-linux-x64", "77db68544c7812e925b82ccc41cd4669fdeb191cea8e20053e3f0e86889c4fce"), + "10.15.1-windows_amd64": ("node-v10.15.1-win-x64.zip", "node-v10.15.1-win-x64", "bb5bdc9363e4050c94b3f82888141b81630230f86e520abb7dde49081f1292b9"), + # 10.15.2 + "10.15.2-darwin_amd64": ("node-v10.15.2-darwin-x64.tar.gz", "node-v10.15.2-darwin-x64", "8bbb6c15a0572f493d33ef044d06ccd0ff7ead8daa67f9a32df3e863277568e8"), + "10.15.2-linux_arm64": ("node-v10.15.2-linux-arm64.tar.xz", "node-v10.15.2-linux-arm64", "2978e82d85654505d732b40dfa58f21276d99712d5d001101eaf87100d350139"), + "10.15.2-linux_amd64": ("node-v10.15.2-linux-x64.tar.xz", "node-v10.15.2-linux-x64", "c10eece562cfeef1627f0d2bde7dc0be810948f6bf9a932e30a8c3b425652015"), + "10.15.2-windows_amd64": ("node-v10.15.2-win-x64.zip", "node-v10.15.2-win-x64", "d97cf4788ccea6deef037ce27c91cc1a814644b878311b71811ab04d0bb8c47f"), + # 10.15.3 + "10.15.3-darwin_amd64": ("node-v10.15.3-darwin-x64.tar.gz", "node-v10.15.3-darwin-x64", "7a5eaa1f69614375a695ccb62017248e5dcc15b0b8edffa7db5b52997cf992ba"), + "10.15.3-linux_arm64": ("node-v10.15.3-linux-arm64.tar.xz", "node-v10.15.3-linux-arm64", "3d7abbf64bffb07c55168ca0f1c17be12b0d93affe9b6cadd39724649215fab9"), + "10.15.3-linux_amd64": ("node-v10.15.3-linux-x64.tar.xz", "node-v10.15.3-linux-x64", "faddbe418064baf2226c2fcbd038c3ef4ae6f936eb952a1138c7ff8cfe862438"), + "10.15.3-windows_amd64": ("node-v10.15.3-win-x64.zip", "node-v10.15.3-win-x64", "93c881fdc0455a932dd5b506a7a03df27d9fe36155c1d3f351ebfa4e20bf1c0d"), + # 10.16.0 + "10.16.0-darwin_amd64": ("node-v10.16.0-darwin-x64.tar.gz", "node-v10.16.0-darwin-x64", "6c009df1b724026d84ae9a838c5b382662e30f6c5563a0995532f2bece39fa9c"), + "10.16.0-linux_arm64": ("node-v10.16.0-linux-arm64.tar.xz", "node-v10.16.0-linux-arm64", "ae2e74ab2f5dbff96bf0b7d8457004bf3538233916f8834740bbe2d5a35442e5"), + "10.16.0-linux_amd64": ("node-v10.16.0-linux-x64.tar.xz", "node-v10.16.0-linux-x64", "1827f5b99084740234de0c506f4dd2202a696ed60f76059696747c34339b9d48"), + "10.16.0-windows_amd64": ("node-v10.16.0-win-x64.zip", "node-v10.16.0-win-x64", "aa22cb357f0fb54ccbc06b19b60e37eefea5d7dd9940912675d3ed988bf9a059"), + # 10.16.1 + "10.16.1-darwin_amd64": ("node-v10.16.1-darwin-x64.tar.gz", "node-v10.16.1-darwin-x64", "328e61fdacfe2f6f1a049d57e248b3eafc0345747831323a14fe1edf98d9b3bb"), + "10.16.1-linux_arm64": ("node-v10.16.1-linux-arm64.tar.xz", "node-v10.16.1-linux-arm64", "c46ba1a8e9b9c0490ae81f8b2b13d332ed6f5c86d172fa817f749042ab329b93"), + "10.16.1-linux_amd64": ("node-v10.16.1-linux-x64.tar.xz", "node-v10.16.1-linux-x64", "127d9b2f485523805208f867fc513842570b29b4d6831773eeb6dd403a22ba9d"), + "10.16.1-windows_amd64": ("node-v10.16.1-win-x64.zip", "node-v10.16.1-win-x64", "1ff8b26670e1b935b51f4b795728f29845c31a3c38b3220b4fe71fb139bc5623"), + # 10.16.2 + "10.16.2-darwin_amd64": ("node-v10.16.2-darwin-x64.tar.gz", "node-v10.16.2-darwin-x64", "21ee8bdb04909f553e97af7c6e41009e15d06b886dd3e2ca8a92ce3e0a148a09"), + "10.16.2-linux_arm64": ("node-v10.16.2-linux-arm64.tar.xz", "node-v10.16.2-linux-arm64", "5fb2b7d3c2b6b40e237cdc172eabfac2e485ee309ac2bcfbff413de1ed79a59e"), + "10.16.2-linux_amd64": ("node-v10.16.2-linux-x64.tar.xz", "node-v10.16.2-linux-x64", "406718dc2f3164b3d1981c36b68b70ea448fbbac29cefbe23ff286b3cd55f264"), + "10.16.2-windows_amd64": ("node-v10.16.2-win-x64.zip", "node-v10.16.2-win-x64", "01654dc79d82e9f3c89d01c8cf1cdce68d3a9118dbe968ee86a3ffd6ee153567"), + # 10.16.3 + "10.16.3-darwin_amd64": ("node-v10.16.3-darwin-x64.tar.gz", "node-v10.16.3-darwin-x64", "6febc571e1543c2845fa919c6d06b36a24e4e142c91aedbe28b6ff7d296119e4"), + "10.16.3-linux_arm64": ("node-v10.16.3-linux-arm64.tar.xz", "node-v10.16.3-linux-arm64", "8ee77bad022bd460bf2867a97bf56ce7ddc4aa2ace067e45995fb1721a958428"), + "10.16.3-linux_amd64": ("node-v10.16.3-linux-x64.tar.xz", "node-v10.16.3-linux-x64", "d2271fd8cf997fa7447d638dfa92749ff18ca4b0d796bf89f2a82bf7800d5506"), + "10.16.3-windows_amd64": ("node-v10.16.3-win-x64.zip", "node-v10.16.3-win-x64", "19aa47de7c5950d7bd71a1e878013b98d93871cc311d7185f5472e6d3f633146"), + # 10.17.0 + "10.17.0-darwin_amd64": ("node-v10.17.0-darwin-x64.tar.gz", "node-v10.17.0-darwin-x64", "9b96140ad74b217f216c83ddf50d1f70a4296576f6edbbbfb65d0f478015d9df"), + "10.17.0-linux_arm64": ("node-v10.17.0-linux-arm64.tar.xz", "node-v10.17.0-linux-arm64", "3ab8ee2b5c9aa4d060c68667ddef70cc2960e12bcfe4a0f2de7ebc0f008bf13d"), + "10.17.0-linux_amd64": ("node-v10.17.0-linux-x64.tar.xz", "node-v10.17.0-linux-x64", "2b49cd296f969ef0ffb7922719ffa6542bedb89d6c959a47c023d11ce222f5d6"), + "10.17.0-windows_amd64": ("node-v10.17.0-win-x64.zip", "node-v10.17.0-win-x64", "e84a1f3685219811bb4662eb3e3b55abd0c764c24cd2b224ba31b3f9f162baf6"), + # 10.18.0 + "10.18.0-darwin_amd64": ("node-v10.18.0-darwin-x64.tar.gz", "node-v10.18.0-darwin-x64", "a7af53e3363e8ab654b97387bc7cf352dddb324562404c1d35fe10cba3f27e0f"), + "10.18.0-linux_arm64": ("node-v10.18.0-linux-arm64.tar.xz", "node-v10.18.0-linux-arm64", "b2b34dd43ea3979890663afa270e09e09c219f046e39e8e439eeda2821cc9643"), + "10.18.0-linux_amd64": ("node-v10.18.0-linux-x64.tar.xz", "node-v10.18.0-linux-x64", "eac160acfc2c5b6fca021baa9943341fea50859f19c7ccbd56669b1fe04e691e"), + "10.18.0-windows_amd64": ("node-v10.18.0-win-x64.zip", "node-v10.18.0-win-x64", "56afcc9c191dfc99017725be92ac1331e23afb1930913446eb91852cb02a8687"), + # 10.18.1 + "10.18.1-darwin_amd64": ("node-v10.18.1-darwin-x64.tar.gz", "node-v10.18.1-darwin-x64", "2b2d3379420e626eee393cabf1c90bc55957ff5bb067b82a74eb2f92147d6757"), + "10.18.1-linux_arm64": ("node-v10.18.1-linux-arm64.tar.xz", "node-v10.18.1-linux-arm64", "9a6203697e0087a1c909961481d579c76777df1df622921e4ce16198851f30fe"), + "10.18.1-linux_amd64": ("node-v10.18.1-linux-x64.tar.xz", "node-v10.18.1-linux-x64", "8cc40f45c2c62529b15e83a6bbe0ac1febf57af3c5720df68067c96c0fddbbdf"), + "10.18.1-windows_amd64": ("node-v10.18.1-win-x64.zip", "node-v10.18.1-win-x64", "fb27bb95c27c72f2e25d0c41309b606b2ae48ba0d6094a19f206ad1df9dc5e19"), + # 10.19.0 + "10.19.0-darwin_amd64": ("node-v10.19.0-darwin-x64.tar.gz", "node-v10.19.0-darwin-x64", "b16328570651be44213a2303c1f9515fc506e0a96a273806f71ed000e3ca3cb3"), + "10.19.0-linux_arm64": ("node-v10.19.0-linux-arm64.tar.xz", "node-v10.19.0-linux-arm64", "77bdbf859fc38e6e860efd479b0a7b7b6bd3e7cb05337e5cc5638251eb5d3a59"), + "10.19.0-linux_amd64": ("node-v10.19.0-linux-x64.tar.xz", "node-v10.19.0-linux-x64", "34127c7c6b1ba02d6d4dc3a926f38a5fb88bb37fc7f051349005ce331c7a53c6"), + "10.19.0-windows_amd64": ("node-v10.19.0-win-x64.zip", "node-v10.19.0-win-x64", "210efd45a7f79cf4c350d8f575f990becdd3833cd922796a4c83b27996f5679e"), + # 10.20.0 + "10.20.0-darwin_amd64": ("node-v10.20.0-darwin-x64.tar.gz", "node-v10.20.0-darwin-x64", "c153832774afcae89a82efb55ed80557d1a41e1880638ad57128a9a3762d212f"), + "10.20.0-linux_arm64": ("node-v10.20.0-linux-arm64.tar.xz", "node-v10.20.0-linux-arm64", "f3567924d6b7f0fa55c4ee0a7330ec0dcaeec557982794796d6b312e7053c674"), + "10.20.0-linux_amd64": ("node-v10.20.0-linux-x64.tar.xz", "node-v10.20.0-linux-x64", "c5721a89feecc0e98d42386e171cb763c077f782033ddc998819edcf9d93b691"), + "10.20.0-windows_amd64": ("node-v10.20.0-win-x64.zip", "node-v10.20.0-win-x64", "d266313fa22885a6ec76eea521fb8a1131b4d9fb3a57afb045a98301aeb7d24e"), + # 10.20.1 + "10.20.1-darwin_amd64": ("node-v10.20.1-darwin-x64.tar.gz", "node-v10.20.1-darwin-x64", "6437e364cd93be246ffb67dd40775cbb467bb8d28d8af4413123f478bb6234b9"), + "10.20.1-linux_arm64": ("node-v10.20.1-linux-arm64.tar.xz", "node-v10.20.1-linux-arm64", "e33cafff94a6308916530b4b724bbc138399484d96f71b1c23677596bec268d0"), + "10.20.1-linux_amd64": ("node-v10.20.1-linux-x64.tar.xz", "node-v10.20.1-linux-x64", "5e0b1fbc6cf8c2c34dc33d880670ee1bc1c1e931099de3796a96143a962c92ee"), + "10.20.1-windows_amd64": ("node-v10.20.1-win-x64.zip", "node-v10.20.1-win-x64", "5e4ec0936c51047c218c0c164cc80283cd36ecd40e0a6979281d395c1be8ee10"), + # 10.21.0 + "10.21.0-darwin_amd64": ("node-v10.21.0-darwin-x64.tar.gz", "node-v10.21.0-darwin-x64", "596900700c4a0de0303bb4c378a1abcd63f31efc848704c5fbc1230de628577a"), + "10.21.0-linux_arm64": ("node-v10.21.0-linux-arm64.tar.xz", "node-v10.21.0-linux-arm64", "3af40706ff0da7fe0baa4683ead6c74445405a2553e7373e627f24d19d4ac100"), + "10.21.0-linux_amd64": ("node-v10.21.0-linux-x64.tar.xz", "node-v10.21.0-linux-x64", "1d3296763e46540047099e4910812e81c4899c0595f2d82474e2099c1e1603e2"), + "10.21.0-windows_amd64": ("node-v10.21.0-win-x64.zip", "node-v10.21.0-win-x64", "03dddcdaccdb40978ddf15d189acdc20409d9a666636db2595118690ff83ce82"), + # 10.22.0 + "10.22.0-darwin_amd64": ("node-v10.22.0-darwin-x64.tar.gz", "node-v10.22.0-darwin-x64", "c7583a297ba9c6cfc03688a32776155d02fabf9ff45847c63b12a68d400f1dc1"), + "10.22.0-linux_arm64": ("node-v10.22.0-linux-arm64.tar.xz", "node-v10.22.0-linux-arm64", "abacc6f37e8dfbe398843c7dc7b9bb7153ff6e653ad50e85d73d86088da48372"), + "10.22.0-linux_amd64": ("node-v10.22.0-linux-x64.tar.xz", "node-v10.22.0-linux-x64", "ddf33e038c593d6df36b1dd4b25c1b6fa8230c615e6312ad33e80ef863e4a74f"), + "10.22.0-windows_amd64": ("node-v10.22.0-win-x64.zip", "node-v10.22.0-win-x64", "931c2907450790f89aa178fa84c1adbd1f7cb7ab0a34f8bfb4af25640e8d4e06"), + # 11.0.0 + "11.0.0-darwin_amd64": ("node-v11.0.0-darwin-x64.tar.gz", "node-v11.0.0-darwin-x64", "f70e12d246ba35e88c5c08a195215c5c913ce66c9d95d0bd21cc1d3e69904279"), + "11.0.0-linux_arm64": ("node-v11.0.0-linux-arm64.tar.xz", "node-v11.0.0-linux-arm64", "0d0c7013fd00a8e713c36aa96bcc268eeadbad2ce48d87e19849d66f4c618cad"), + "11.0.0-linux_amd64": ("node-v11.0.0-linux-x64.tar.xz", "node-v11.0.0-linux-x64", "418b1a73bcafbf5dd3bc787f0440c2b4123dfecc2b239f5651f0256cb5ab606d"), + "11.0.0-windows_amd64": ("node-v11.0.0-win-x64.zip", "node-v11.0.0-win-x64", "4dd3ef7f5c8181be39cd45476b22ed34b6da2bf77377b699384d426702f8c969"), + # 11.1.0 + "11.1.0-darwin_amd64": ("node-v11.1.0-darwin-x64.tar.gz", "node-v11.1.0-darwin-x64", "5d6b84d2b0fd6afee07c371bc815a9e4b6671b85bedcb38815310bd0f884d3c8"), + "11.1.0-linux_arm64": ("node-v11.1.0-linux-arm64.tar.xz", "node-v11.1.0-linux-arm64", "cbba27e1c90701fbb9db66cc2c6cc3049aaf08adb16cabd0cad970b74cdaf6d3"), + "11.1.0-linux_amd64": ("node-v11.1.0-linux-x64.tar.xz", "node-v11.1.0-linux-x64", "c70419674d932452017556080264de2b6d1105c112647dd1dd495b739456dd91"), + "11.1.0-windows_amd64": ("node-v11.1.0-win-x64.zip", "node-v11.1.0-win-x64", "985e4edc758cb5f77f85cddda0155616b92f163b8d3842c542b1c8a395068418"), + # 11.2.0 + "11.2.0-darwin_amd64": ("node-v11.2.0-darwin-x64.tar.gz", "node-v11.2.0-darwin-x64", "cd17fafcdb21ae80fb94e455e63567c70b3bceedf982b93ae9e4aea411f6a6ea"), + "11.2.0-linux_arm64": ("node-v11.2.0-linux-arm64.tar.xz", "node-v11.2.0-linux-arm64", "3e6c47a29b85030b4305bdc2e15cbe37e1b54a2338ce1790637384ce349ed1fd"), + "11.2.0-linux_amd64": ("node-v11.2.0-linux-x64.tar.xz", "node-v11.2.0-linux-x64", "629a603443c275f8ecd851994b81a9c02a36343dbcbafc279cbecb9ccd9cf906"), + "11.2.0-windows_amd64": ("node-v11.2.0-win-x64.zip", "node-v11.2.0-win-x64", "3440b2880b4e3b78c9c18865df263317e7d3c3e179dad960d526004dc7e6ba9a"), + # 11.3.0 + "11.3.0-darwin_amd64": ("node-v11.3.0-darwin-x64.tar.gz", "node-v11.3.0-darwin-x64", "54acc7bdeffae79fdd73f959712305aee1d8d487d56813b43cae96d151ec79db"), + "11.3.0-linux_arm64": ("node-v11.3.0-linux-arm64.tar.xz", "node-v11.3.0-linux-arm64", "642cc3fc94a856ad6d09e76eaf869672bef925308afdad398a58f18eeaf4e4b8"), + "11.3.0-linux_amd64": ("node-v11.3.0-linux-x64.tar.xz", "node-v11.3.0-linux-x64", "d37fb7fae8a185409bccf106e91d8ffa3450115852795512fc62e6da0b5e3dbb"), + "11.3.0-windows_amd64": ("node-v11.3.0-win-x64.zip", "node-v11.3.0-win-x64", "b801e908ec36a07f06df388845e22e0b7f3cede7a4030896712c8ee28cdb3f05"), + # 11.4.0 + "11.4.0-darwin_amd64": ("node-v11.4.0-darwin-x64.tar.gz", "node-v11.4.0-darwin-x64", "05a515146d5bc397625f442a6ecbbc7f0d071a2a7efbf1e2b2ed46d728bc7b30"), + "11.4.0-linux_arm64": ("node-v11.4.0-linux-arm64.tar.xz", "node-v11.4.0-linux-arm64", "c32e752e74794a4254ae4caa892b7beb3be60dba6851e8e5d637febfb659ee3a"), + "11.4.0-linux_amd64": ("node-v11.4.0-linux-x64.tar.xz", "node-v11.4.0-linux-x64", "24d9be161e7fb28e761801639cb452ff223269ed53d967e5745b5c6391eb3fbd"), + "11.4.0-windows_amd64": ("node-v11.4.0-win-x64.zip", "node-v11.4.0-win-x64", "30b84ab0101c8916694e6cd6c0ccb5182e4555da5e06deb080e906ef5b3893df"), + # 11.5.0 + "11.5.0-darwin_amd64": ("node-v11.5.0-darwin-x64.tar.gz", "node-v11.5.0-darwin-x64", "741abd58ac67b4bf8d2ef991a7487ea17e421b2248688b93be0d2f34886c6aa2"), + "11.5.0-linux_arm64": ("node-v11.5.0-linux-arm64.tar.xz", "node-v11.5.0-linux-arm64", "3f1436c1de70b2e34f7a63a5af7e6b106a8ebe9289b3f7d045ac4a4856570164"), + "11.5.0-linux_amd64": ("node-v11.5.0-linux-x64.tar.xz", "node-v11.5.0-linux-x64", "ada54407b505b7e6f516c753f0e49220917dd11efa5ee892d3252bdd65d4a54c"), + "11.5.0-windows_amd64": ("node-v11.5.0-win-x64.zip", "node-v11.5.0-win-x64", "3692939b1bbd7ee8b0a967429eef6b1d45078c2f4fc289aae261ca5bde5a0607"), + # 11.6.0 + "11.6.0-darwin_amd64": ("node-v11.6.0-darwin-x64.tar.gz", "node-v11.6.0-darwin-x64", "c880063b112c48130dba8f7b058de61959ae46fddcfa363715571b22c1cbeb26"), + "11.6.0-linux_arm64": ("node-v11.6.0-linux-arm64.tar.xz", "node-v11.6.0-linux-arm64", "956016db41f4f96f8e005d36c738d7c833442d09a970462552eb214027e0268a"), + "11.6.0-linux_amd64": ("node-v11.6.0-linux-x64.tar.xz", "node-v11.6.0-linux-x64", "2251a6c5b332e7ea69bbefba11950cb6c27ba50fa700468711f729da6a6f5324"), + "11.6.0-windows_amd64": ("node-v11.6.0-win-x64.zip", "node-v11.6.0-win-x64", "d230828c1cc9863c9768106ffee0320ba42049b594bd2689e430b872e8f0b2dd"), + # 11.7.0 + "11.7.0-darwin_amd64": ("node-v11.7.0-darwin-x64.tar.gz", "node-v11.7.0-darwin-x64", "873b47e6fc97aef2f73b0e8dde641967b2a84a3b63d1697b9d8813e14fb3b01c"), + "11.7.0-linux_arm64": ("node-v11.7.0-linux-arm64.tar.xz", "node-v11.7.0-linux-arm64", "82b9726c6b367a43530f868f61b1b2a05c942d3decdf9d2e18b4a9bdf353c223"), + "11.7.0-linux_amd64": ("node-v11.7.0-linux-x64.tar.xz", "node-v11.7.0-linux-x64", "b2a0a7dde17fe0da5f86ce5fea3da2861d652a5e702e2177ee62813ff86451c0"), + "11.7.0-windows_amd64": ("node-v11.7.0-win-x64.zip", "node-v11.7.0-win-x64", "00834d16532f24583bf56d2baab03904b0220154cc712344be95e4d05c6234dd"), + # 11.8.0 + "11.8.0-darwin_amd64": ("node-v11.8.0-darwin-x64.tar.gz", "node-v11.8.0-darwin-x64", "fbb26b38f408c2f2324a5821062c16103f54de16d24f9f24c4e270a3a41f4832"), + "11.8.0-linux_arm64": ("node-v11.8.0-linux-arm64.tar.xz", "node-v11.8.0-linux-arm64", "42b190c686cb8bafbdbf418a6c20c6785a23ba0f1a1a85af44595057a3d5e25e"), + "11.8.0-linux_amd64": ("node-v11.8.0-linux-x64.tar.xz", "node-v11.8.0-linux-x64", "85ca19c495d5cac6acf6ee4a3c8dfb4489fb67fefc184c61eb4513eb5ef99a88"), + "11.8.0-windows_amd64": ("node-v11.8.0-win-x64.zip", "node-v11.8.0-win-x64", "cd4db1b9e7ac29ed81d433f2de85582902670a121961aa3f350533d5b2fd44c6"), + # 11.9.0 + "11.9.0-darwin_amd64": ("node-v11.9.0-darwin-x64.tar.gz", "node-v11.9.0-darwin-x64", "1df3dd99d174bb8cb61cc8e2aa419a4998c7ada9454123c34991ce30632f1ef8"), + "11.9.0-linux_arm64": ("node-v11.9.0-linux-arm64.tar.xz", "node-v11.9.0-linux-arm64", "f39baa8d212e9676bfa7f1601f94d789c6dc6b35caf440df6ec815d238978457"), + "11.9.0-linux_amd64": ("node-v11.9.0-linux-x64.tar.xz", "node-v11.9.0-linux-x64", "9bc461fb7f5fd3344301abfda834160d5397a4e289f9749ab03ba0b7e9a4c853"), + "11.9.0-windows_amd64": ("node-v11.9.0-win-x64.zip", "node-v11.9.0-win-x64", "c62c01436f632858fea0194d4168b483e1aa485c3fc72247add4899a103c2677"), + # 11.10.0 + "11.10.0-darwin_amd64": ("node-v11.10.0-darwin-x64.tar.gz", "node-v11.10.0-darwin-x64", "1956528c6f3934a97508e36a4855c154f40f1923ccd61e296d5a85679103e3a1"), + "11.10.0-linux_arm64": ("node-v11.10.0-linux-arm64.tar.xz", "node-v11.10.0-linux-arm64", "60ed6caa90d8188a55f0dbc63f4aef263fb4863e036d32989b820a2e40582c66"), + "11.10.0-linux_amd64": ("node-v11.10.0-linux-x64.tar.xz", "node-v11.10.0-linux-x64", "fe4c617aaf88b5228bce0341d1c77bbae2622d69eaa17a15b7d4bcc60c4777c5"), + "11.10.0-windows_amd64": ("node-v11.10.0-win-x64.zip", "node-v11.10.0-win-x64", "c39e711aebe678455fa74edf6d8f6184d6d93e20f160197799040a0c17005dba"), + # 11.10.1 + "11.10.1-darwin_amd64": ("node-v11.10.1-darwin-x64.tar.gz", "node-v11.10.1-darwin-x64", "dea52b86f6875efae26fbb6d0269d9769da7ca69408b74b6ab724d4b64004b07"), + "11.10.1-linux_arm64": ("node-v11.10.1-linux-arm64.tar.xz", "node-v11.10.1-linux-arm64", "b116e57906ed73c970d64e7518b08c6de236575c5cd8bf09f4c1bd668524a014"), + "11.10.1-linux_amd64": ("node-v11.10.1-linux-x64.tar.xz", "node-v11.10.1-linux-x64", "414216a7e47dbfb77141dce7a4452901ae2cdb4cd0deef3ab3ab49e0b2111f82"), + "11.10.1-windows_amd64": ("node-v11.10.1-win-x64.zip", "node-v11.10.1-win-x64", "80cf14abacbc6b636bc192f4eee49421f082f21cdaa9c1ea5995c38f8c1375e5"), + # 11.11.0 + "11.11.0-darwin_amd64": ("node-v11.11.0-darwin-x64.tar.gz", "node-v11.11.0-darwin-x64", "6b7c8d93096bf065de0d0a42e8f027c424172c82df6f015d3149a5dbfa03c1cc"), + "11.11.0-linux_arm64": ("node-v11.11.0-linux-arm64.tar.xz", "node-v11.11.0-linux-arm64", "febb698e74264ec0ecc738c86347e6bfb5d27e33ed492a031626df988a5fb4f3"), + "11.11.0-linux_amd64": ("node-v11.11.0-linux-x64.tar.xz", "node-v11.11.0-linux-x64", "ee09c7712e741f84948f76a72b651bf088e516c3f38569b9e6f30c38c026c262"), + "11.11.0-windows_amd64": ("node-v11.11.0-win-x64.zip", "node-v11.11.0-win-x64", "154a5b7ca7033382743c4752fa465a5d9902f4abed4263a38ea3f41ffa113910"), + # 11.12.0 + "11.12.0-darwin_amd64": ("node-v11.12.0-darwin-x64.tar.gz", "node-v11.12.0-darwin-x64", "93d68c1af41d02b262b3383d69b46eb326707ec010b321ad5655b91c4956e783"), + "11.12.0-linux_arm64": ("node-v11.12.0-linux-arm64.tar.xz", "node-v11.12.0-linux-arm64", "9e89838e290c9bb478351bd403707d0b741ec56021c379c9f6da515a4cd1064a"), + "11.12.0-linux_amd64": ("node-v11.12.0-linux-x64.tar.xz", "node-v11.12.0-linux-x64", "1c6bb93a24eda832708c1c10ec20316e1e4f30b3cfca9c5ee5d446762414b116"), + "11.12.0-windows_amd64": ("node-v11.12.0-win-x64.zip", "node-v11.12.0-win-x64", "68e5bca1d6dd6b3de20870e7c593f9a890c48d2c9c83e15034baad6f7c0da426"), + # 11.13.0 + "11.13.0-darwin_amd64": ("node-v11.13.0-darwin-x64.tar.gz", "node-v11.13.0-darwin-x64", "c1a8f94b4778dad2d9f513cfdf9091810dc733a2daf4fa7e03d49ad133415b5d"), + "11.13.0-linux_arm64": ("node-v11.13.0-linux-arm64.tar.xz", "node-v11.13.0-linux-arm64", "0edb29004fdbb5808331e765b4adde8b025a13d6619f49fec60a14582aba9ed7"), + "11.13.0-linux_amd64": ("node-v11.13.0-linux-x64.tar.xz", "node-v11.13.0-linux-x64", "c2ae3caced5f181df282a6974ab3f5e232b5decb821aa8ea8fe758b0e0528223"), + "11.13.0-windows_amd64": ("node-v11.13.0-win-x64.zip", "node-v11.13.0-win-x64", "f3dafd1f19841244f8f12952f9919c0a2857f6920b11f2a89554b061cd5a4525"), + # 11.14.0 + "11.14.0-darwin_amd64": ("node-v11.14.0-darwin-x64.tar.gz", "node-v11.14.0-darwin-x64", "37b8db4f6700a4b5aa3b6d4283538753953f6293aff99866aa9a81038848a4d9"), + "11.14.0-linux_arm64": ("node-v11.14.0-linux-arm64.tar.xz", "node-v11.14.0-linux-arm64", "3d463f3b48e1060027f8a552657de6f3ee4724d718d546aa4ea5c301ee4ed083"), + "11.14.0-linux_amd64": ("node-v11.14.0-linux-x64.tar.xz", "node-v11.14.0-linux-x64", "89e2cb0effa9bf075ee8bb6d92a6a50f7ccfdad03dd687f52ecdfab91230f9a1"), + "11.14.0-windows_amd64": ("node-v11.14.0-win-x64.zip", "node-v11.14.0-win-x64", "58a5d3316c04335ff3da2ce66b89f3cce86b1d1ca878d1d6d68478160c66dc12"), + # 11.15.0 + "11.15.0-darwin_amd64": ("node-v11.15.0-darwin-x64.tar.gz", "node-v11.15.0-darwin-x64", "e953b657b1049e1de509a3fd0700cfeecd175f75a0d141d71393aa0d71fa29a9"), + "11.15.0-linux_arm64": ("node-v11.15.0-linux-arm64.tar.xz", "node-v11.15.0-linux-arm64", "e458aa4c69da9ca2ae566c8eb56dc8b36d573b415bfd8eebca4ff2229fc4983d"), + "11.15.0-linux_amd64": ("node-v11.15.0-linux-x64.tar.xz", "node-v11.15.0-linux-x64", "17424aef198fa322b93c79217ce7e8cdd264fed40383abbbd3e63c305ce1d7d8"), + "11.15.0-windows_amd64": ("node-v11.15.0-win-x64.zip", "node-v11.15.0-win-x64", "f3cef50acf566724a5ec5df7697fb527d7339cafdae6c7c406a39358aee6cdf8"), + # 12.0.0 + "12.0.0-darwin_amd64": ("node-v12.0.0-darwin-x64.tar.gz", "node-v12.0.0-darwin-x64", "92c81a284e909424b50dd01e175260b75bbbdb487fdfe1885229817187ea76bc"), + "12.0.0-linux_arm64": ("node-v12.0.0-linux-arm64.tar.xz", "node-v12.0.0-linux-arm64", "2ac36aa51f76654a8914d41a32bd5c3d3213cba14eea84abd9919d022b5694b4"), + "12.0.0-linux_amd64": ("node-v12.0.0-linux-x64.tar.xz", "node-v12.0.0-linux-x64", "7a5609167265954cfb912e4dc8f36e5469335b6be1bb11d60d8427f92c03f5f9"), + "12.0.0-windows_amd64": ("node-v12.0.0-win-x64.zip", "node-v12.0.0-win-x64", "96ab5f9f61d75daf3fb1072930b6e9249f15b77bc3b3dca516ae8439dc1500fb"), + # 12.1.0 + "12.1.0-darwin_amd64": ("node-v12.1.0-darwin-x64.tar.gz", "node-v12.1.0-darwin-x64", "57c592b13940aa44611aec08e7b425f35565a2c95c51736f433cb36eb65105b7"), + "12.1.0-linux_arm64": ("node-v12.1.0-linux-arm64.tar.xz", "node-v12.1.0-linux-arm64", "67805a7976bef30d0e12211f18a99c6de405931e493fd32f451512473661ee10"), + "12.1.0-linux_amd64": ("node-v12.1.0-linux-x64.tar.xz", "node-v12.1.0-linux-x64", "331c43176a20e705c6f4fdb61c69fee44dd3c2c93a20410be2c13b4f8515ef7b"), + "12.1.0-windows_amd64": ("node-v12.1.0-win-x64.zip", "node-v12.1.0-win-x64", "6dc3ef4a6b4ce527f187270a1b0c5560771126df487ab9ddc4c3cd3b37d57eb6"), + # 12.2.0 + "12.2.0-darwin_amd64": ("node-v12.2.0-darwin-x64.tar.gz", "node-v12.2.0-darwin-x64", "c72ae8a2b989138c6e6e9b393812502df8c28546a016cf24e7a82dd27e3838af"), + "12.2.0-linux_arm64": ("node-v12.2.0-linux-arm64.tar.xz", "node-v12.2.0-linux-arm64", "42e4a5c6ad0b402e281daf46a27a269249bdb8b4e31ff8869701aaddac2cc8c4"), + "12.2.0-linux_amd64": ("node-v12.2.0-linux-x64.tar.xz", "node-v12.2.0-linux-x64", "89059969861606e2a435ff2619c4df6f41c040120e507d9c4f03374353357307"), + "12.2.0-windows_amd64": ("node-v12.2.0-win-x64.zip", "node-v12.2.0-win-x64", "c1e7fb3c1c15d8f2ab5c1db9c9662097f9c682164b3f7397955ccce946442c97"), + # 12.3.0 + "12.3.0-darwin_amd64": ("node-v12.3.0-darwin-x64.tar.gz", "node-v12.3.0-darwin-x64", "4a9faa038fb4e6e930a0fecd9818a4820b4ca91d1c45a1c1279fe49cdbd28160"), + "12.3.0-linux_arm64": ("node-v12.3.0-linux-arm64.tar.xz", "node-v12.3.0-linux-arm64", "3d6e7046b938ff1f2535bdcc892a82abf44d875d1e96779cc3ea9a074ccfa200"), + "12.3.0-linux_amd64": ("node-v12.3.0-linux-x64.tar.xz", "node-v12.3.0-linux-x64", "2ce2c7a4d7fe3c560415e8dcbc5905a66a8bf28e2a2b2cff7e7a4eeb5753015d"), + "12.3.0-windows_amd64": ("node-v12.3.0-win-x64.zip", "node-v12.3.0-win-x64", "b36c9f9809c90ce704465f066861314d6e33176a5d45da14c1519c3e4f35063e"), + # 12.3.1 + "12.3.1-darwin_amd64": ("node-v12.3.1-darwin-x64.tar.gz", "node-v12.3.1-darwin-x64", "b9c979f63a356090d8ff88ed141fd856ad853165c73633794a9d3a060334378e"), + "12.3.1-linux_arm64": ("node-v12.3.1-linux-arm64.tar.xz", "node-v12.3.1-linux-arm64", "88df7f2e0c4a58661bb79b637daa417929efc6c4d6a77bba42a5127c5c383257"), + "12.3.1-linux_amd64": ("node-v12.3.1-linux-x64.tar.xz", "node-v12.3.1-linux-x64", "46f52868c0643fe0d167ce24c3c873880c8e1494276c89c07114fb099da4f75a"), + "12.3.1-windows_amd64": ("node-v12.3.1-win-x64.zip", "node-v12.3.1-win-x64", "aac3c4543f846c7ebf63e1498dec7955119dffffe65722bd8c6d2124ed4ecbd7"), + # 12.4.0 + "12.4.0-darwin_amd64": ("node-v12.4.0-darwin-x64.tar.gz", "node-v12.4.0-darwin-x64", "aaff97d59cda775165ef966ae74e70f55f3267e86d735ed3740ae9bf1d40531e"), + "12.4.0-linux_arm64": ("node-v12.4.0-linux-arm64.tar.xz", "node-v12.4.0-linux-arm64", "bb2e7eabebdceb52424516dabce94cb37f55419e6ed19493916843a323c423cd"), + "12.4.0-linux_amd64": ("node-v12.4.0-linux-x64.tar.xz", "node-v12.4.0-linux-x64", "9aec6a2a50c1791704a6069cbda6da62781361e44814d024e8bbaaf0deb41c5e"), + "12.4.0-windows_amd64": ("node-v12.4.0-win-x64.zip", "node-v12.4.0-win-x64", "ec8623e2528a35d3219200308e7ed41e24d4f7cd96530a4e6ac2513e44f7fad1"), + # 12.5.0 + "12.5.0-darwin_amd64": ("node-v12.5.0-darwin-x64.tar.gz", "node-v12.5.0-darwin-x64", "a9ba9f584f015f1705063c10dd8d84d43f5b09dc7ecf4ee3968ab1ff1fe5d2b5"), + "12.5.0-linux_arm64": ("node-v12.5.0-linux-arm64.tar.xz", "node-v12.5.0-linux-arm64", "d43b71a97f5484d13b655a8a0c1b1c0fc7e83b3719063cc362fe557d6e26bd69"), + "12.5.0-linux_amd64": ("node-v12.5.0-linux-x64.tar.xz", "node-v12.5.0-linux-x64", "37c0c539aae69370f3c014cc4947748ce45ac5fa560f9b085724f22029834b27"), + "12.5.0-windows_amd64": ("node-v12.5.0-win-x64.zip", "node-v12.5.0-win-x64", "f1b426fcd39ffdfec5d8ba60c6842cc11e9f49269cd49bc34c4fcee0517ddf66"), + # 12.6.0 + "12.6.0-darwin_amd64": ("node-v12.6.0-darwin-x64.tar.gz", "node-v12.6.0-darwin-x64", "004b7992a2621eb35a47c94d258510ca5744b5a8072364f235dc7e3d4bff7457"), + "12.6.0-linux_arm64": ("node-v12.6.0-linux-arm64.tar.xz", "node-v12.6.0-linux-arm64", "b7a6580f0c5406b990b3c9f0d91297b103e38e2752b8b745c4d15310a9dd79d1"), + "12.6.0-linux_amd64": ("node-v12.6.0-linux-x64.tar.xz", "node-v12.6.0-linux-x64", "1ac14567e2be5562df209900e28430bd11575d985a85e8a6df2743428570de33"), + "12.6.0-windows_amd64": ("node-v12.6.0-win-x64.zip", "node-v12.6.0-win-x64", "0c5ac670c5bb0ea0d389bb7269cb84104702826f791a1d057eae02cdb9eed717"), + # 12.7.0 + "12.7.0-darwin_amd64": ("node-v12.7.0-darwin-x64.tar.gz", "node-v12.7.0-darwin-x64", "1a76bea7f7ed8c5c921852269ddd1300c9baba2f1e3f0377200a22c22cdea177"), + "12.7.0-linux_arm64": ("node-v12.7.0-linux-arm64.tar.xz", "node-v12.7.0-linux-arm64", "abc4500eff8437503d475726b8ac2ed3463d2982bd66925a782f91b7d96e31de"), + "12.7.0-linux_amd64": ("node-v12.7.0-linux-x64.tar.xz", "node-v12.7.0-linux-x64", "95867fdcfd4f821d84b3dd9fab5803fb29e093e911f2ab3c7111bcaf8bd5b9da"), + "12.7.0-windows_amd64": ("node-v12.7.0-win-x64.zip", "node-v12.7.0-win-x64", "68802316ca4eb4d72ec5f9ff837752a6ec8cd73537ad7c346f30899ee523f4b7"), + # 12.8.0 + "12.8.0-darwin_amd64": ("node-v12.8.0-darwin-x64.tar.gz", "node-v12.8.0-darwin-x64", "5229571a1736befd6426dc0a6907be416e9f5c24695e3ef275ed2ba70f496499"), + "12.8.0-linux_arm64": ("node-v12.8.0-linux-arm64.tar.xz", "node-v12.8.0-linux-arm64", "9f22aff38a8622b05821129f69dbe90695e01166f55c8d2a39b6c6a5aef8c6a8"), + "12.8.0-linux_amd64": ("node-v12.8.0-linux-x64.tar.xz", "node-v12.8.0-linux-x64", "b6a9ab2e6e872375e0e27eda0698820a64495b31b1beab36cc54f9876b3a2052"), + "12.8.0-windows_amd64": ("node-v12.8.0-win-x64.zip", "node-v12.8.0-win-x64", "b295aedebde069c4148534a9dfb2394ceba28cf367ddd8204a27d69c095a9e00"), + # 12.8.1 + "12.8.1-darwin_amd64": ("node-v12.8.1-darwin-x64.tar.gz", "node-v12.8.1-darwin-x64", "caccf8b409af342e35672cc766430587664f88d01dab622a5de44c8be1336e44"), + "12.8.1-linux_arm64": ("node-v12.8.1-linux-arm64.tar.xz", "node-v12.8.1-linux-arm64", "3707240c402aae0b5879ce1ba17b32ebd224d47f5147639c6881a1b71ce65383"), + "12.8.1-linux_amd64": ("node-v12.8.1-linux-x64.tar.xz", "node-v12.8.1-linux-x64", "1c7cf61cb8fa98a76d92445823d6dd1649e985899e16900b39eacdd8cd4094f3"), + "12.8.1-windows_amd64": ("node-v12.8.1-win-x64.zip", "node-v12.8.1-win-x64", "c81ecaa03dc882dde36087c854e4831c13d3eb237f262f9ce74ccc6f156684da"), + # 12.9.0 + "12.9.0-darwin_amd64": ("node-v12.9.0-darwin-x64.tar.gz", "node-v12.9.0-darwin-x64", "24c1f0c93e485961446814662db942f1b309d843fb4ecbe50466d9857a51b343"), + "12.9.0-linux_arm64": ("node-v12.9.0-linux-arm64.tar.xz", "node-v12.9.0-linux-arm64", "f7f6f102d097d64eba26f84f2760597f9831886ef7d0db3cba88459847f2743d"), + "12.9.0-linux_amd64": ("node-v12.9.0-linux-x64.tar.xz", "node-v12.9.0-linux-x64", "7110bdd16e397870142ff0e8d92d4a4502d43ec047d970c843a9a4e5f9e79283"), + "12.9.0-windows_amd64": ("node-v12.9.0-win-x64.zip", "node-v12.9.0-win-x64", "b5f05deb31ac04b9c3a487542daf151e01c05017403a56ba443da623f36b153b"), + # 12.9.1 + "12.9.1-darwin_amd64": ("node-v12.9.1-darwin-x64.tar.gz", "node-v12.9.1-darwin-x64", "9aaf29d30056e2233fd15dfac56eec12e8342d91bb6c13d54fb5e599383dddb9"), + "12.9.1-linux_arm64": ("node-v12.9.1-linux-arm64.tar.xz", "node-v12.9.1-linux-arm64", "b6d986faf3a77b6c353c344645c93f2a0e0436c43865e6c215a24301a076a11f"), + "12.9.1-linux_amd64": ("node-v12.9.1-linux-x64.tar.xz", "node-v12.9.1-linux-x64", "680a1263c9f5f91adadcada549f0a9c29f1b26d09658d2b501c334c3f63719e5"), + "12.9.1-windows_amd64": ("node-v12.9.1-win-x64.zip", "node-v12.9.1-win-x64", "6a4e54bda091bd02dbd8ff1b9f6671e036297da012a53891e3834d4bf4bed297"), + # 12.10.0 + "12.10.0-darwin_amd64": ("node-v12.10.0-darwin-x64.tar.gz", "node-v12.10.0-darwin-x64", "4c16d1f6454f5dc3977ad00cea123792b8d4e1d6d1bf42bbc82a4202039a5971"), + "12.10.0-linux_arm64": ("node-v12.10.0-linux-arm64.tar.xz", "node-v12.10.0-linux-arm64", "fa1afb9e8cfd964867351b6dac6cd918784ff309291612251c4745aeb0b10e02"), + "12.10.0-linux_amd64": ("node-v12.10.0-linux-x64.tar.xz", "node-v12.10.0-linux-x64", "e8d2e6b62dd8183dc59a139a9ca3edc7c419a0d3d92e90fea9cb0ad52489843a"), + "12.10.0-windows_amd64": ("node-v12.10.0-win-x64.zip", "node-v12.10.0-win-x64", "de341476711c71f82d06fabcc9874c1ff9e865fd7274334d64a67b1e31a53fd0"), + # 12.11.0 + "12.11.0-darwin_amd64": ("node-v12.11.0-darwin-x64.tar.gz", "node-v12.11.0-darwin-x64", "a0fd5c1c9e67099f52b73c732aa52a878c6ff67f50ff0e94c2c5628a87455130"), + "12.11.0-linux_arm64": ("node-v12.11.0-linux-arm64.tar.xz", "node-v12.11.0-linux-arm64", "d1126439ff6d079b682a7cd6308cb226afd247e5cb0f7cc60cfb0e609a096622"), + "12.11.0-linux_amd64": ("node-v12.11.0-linux-x64.tar.xz", "node-v12.11.0-linux-x64", "c0dc88110ac3ee095e3d09077545435b72d4cd52e35c43cd3fa666cff7446d46"), + "12.11.0-windows_amd64": ("node-v12.11.0-win-x64.zip", "node-v12.11.0-win-x64", "457157358bd029196d47865dee66f8c263a3a4a5a8cdd1c0a8cf43ac45e9eda3"), + # 12.11.1 + "12.11.1-darwin_amd64": ("node-v12.11.1-darwin-x64.tar.gz", "node-v12.11.1-darwin-x64", "7dd24ee6d81668e65ce1b77b4bb4cdaf517d8f80bb19740d286606028506970b"), + "12.11.1-linux_arm64": ("node-v12.11.1-linux-arm64.tar.xz", "node-v12.11.1-linux-arm64", "12777294258da80410fd7d5cbed46ead5d3cabacf376ee10ddb9e1a335b114e7"), + "12.11.1-linux_amd64": ("node-v12.11.1-linux-x64.tar.xz", "node-v12.11.1-linux-x64", "00f7a0b59ff38c1c74d81732df925aa5ac5788b58412437327421f796878793d"), + "12.11.1-windows_amd64": ("node-v12.11.1-win-x64.zip", "node-v12.11.1-win-x64", "0bab4473cd2ba03511b8859ddf2202bb012d5c541f9d57b555a5bbbf101fcb35"), + # 12.12.0 + "12.12.0-darwin_amd64": ("node-v12.12.0-darwin-x64.tar.gz", "node-v12.12.0-darwin-x64", "14a98237e8859bc22695719dbc2e9db5529a33ada0c6c377df4dc27b5622ffbb"), + "12.12.0-linux_arm64": ("node-v12.12.0-linux-arm64.tar.xz", "node-v12.12.0-linux-arm64", "ad536aba218df64d8e901b28985f4c5f72f634bf903c449b0c84929f6940853c"), + "12.12.0-linux_amd64": ("node-v12.12.0-linux-x64.tar.xz", "node-v12.12.0-linux-x64", "e3a38dfaf1233a3c43c2528869af52e74575781984369a5b705c89d84dfa3ac2"), + "12.12.0-windows_amd64": ("node-v12.12.0-win-x64.zip", "node-v12.12.0-win-x64", "930e7bcd2ae5bcb1d4163c2adf09a392ed0e9a824b069d19daeb4f9f3430a195"), + # 12.13.0 + "12.13.0-darwin_amd64": ("node-v12.13.0-darwin-x64.tar.gz", "node-v12.13.0-darwin-x64", "49a7374670a111b033ce16611b20fd1aafd3296bbc662b184fe8fb26a29c22cc"), + "12.13.0-linux_arm64": ("node-v12.13.0-linux-arm64.tar.xz", "node-v12.13.0-linux-arm64", "d65b3ce27639f15ae22941e3ff98a1c900aa9049fcc15518038615b0676037d5"), + "12.13.0-linux_amd64": ("node-v12.13.0-linux-x64.tar.xz", "node-v12.13.0-linux-x64", "7a57ef2cb3036d7eacd50ae7ba07245a28336a93652641c065f747adb2a356d9"), + "12.13.0-windows_amd64": ("node-v12.13.0-win-x64.zip", "node-v12.13.0-win-x64", "6f920cebeecb4957b4ef0def6d9b04c49d4582864f8d1a207ce8d0665865781a"), + # 12.13.1 + "12.13.1-darwin_amd64": ("node-v12.13.1-darwin-x64.tar.gz", "node-v12.13.1-darwin-x64", "12d14c7fbd98876a163a2b7e0aeb13657dc3e967e993efaf2dcacbe475a285e8"), + "12.13.1-linux_arm64": ("node-v12.13.1-linux-arm64.tar.xz", "node-v12.13.1-linux-arm64", "3aef0178a8ab74c8e5c133e23d1896e53ed5c273415d165a0e72e005f5467cba"), + "12.13.1-linux_amd64": ("node-v12.13.1-linux-x64.tar.xz", "node-v12.13.1-linux-x64", "aca06db37589966829b1ef0f163a5859b156a1d8e51b415bf47590f667c30a25"), + "12.13.1-windows_amd64": ("node-v12.13.1-win-x64.zip", "node-v12.13.1-win-x64", "db33fb758ba49b96d073311ef9e9134b51bf96246ffd938909b2e02c65a6e890"), + # 12.14.0 + "12.14.0-darwin_amd64": ("node-v12.14.0-darwin-x64.tar.gz", "node-v12.14.0-darwin-x64", "5f3170b346b29e6902c0ca7e0993e3d1b4b650615348aa866de17ad965377048"), + "12.14.0-linux_arm64": ("node-v12.14.0-linux-arm64.tar.xz", "node-v12.14.0-linux-arm64", "733b4f71ccdf114038bbe0f20574a1e8f4f60b53d39caf445f518745596eadda"), + "12.14.0-linux_amd64": ("node-v12.14.0-linux-x64.tar.xz", "node-v12.14.0-linux-x64", "82ae74ee0a204de7ebf7767eaa8e382518d9b49668dcbb5bd7fd003154445d1f"), + "12.14.0-windows_amd64": ("node-v12.14.0-win-x64.zip", "node-v12.14.0-win-x64", "526f4b01ffb270bdd8213b58b38843fa3c88f03c89b1898c641bc0e32607913e"), + # 12.14.1 + "12.14.1-darwin_amd64": ("node-v12.14.1-darwin-x64.tar.gz", "node-v12.14.1-darwin-x64", "0be10a28737527a1e5e3784d3ad844d742fe8b0718acd701fd48f718fd3af78f"), + "12.14.1-linux_arm64": ("node-v12.14.1-linux-arm64.tar.xz", "node-v12.14.1-linux-arm64", "6cd28a5e6340f596aec8dbfd6720f444f011e6b9018622290a60dbd17f9baff6"), + "12.14.1-linux_amd64": ("node-v12.14.1-linux-x64.tar.xz", "node-v12.14.1-linux-x64", "07cfcaa0aa9d0fcb6e99725408d9e0b07be03b844701588e3ab5dbc395b98e1b"), + "12.14.1-windows_amd64": ("node-v12.14.1-win-x64.zip", "node-v12.14.1-win-x64", "1f96ccce3ba045ecea3f458e189500adb90b8bc1a34de5d82fc10a5bf66ce7e3"), + # 12.15.0 + "12.15.0-darwin_amd64": ("node-v12.15.0-darwin-x64.tar.gz", "node-v12.15.0-darwin-x64", "b6449cec39ac15b37abe4e59ef0eae50dcdfbf060c5276a01cc590f2a3372b7d"), + "12.15.0-linux_arm64": ("node-v12.15.0-linux-arm64.tar.xz", "node-v12.15.0-linux-arm64", "c582cb65a0ec7f648618d3d33b4f87c374a3f930518b57eca1693828c965d6e5"), + "12.15.0-linux_amd64": ("node-v12.15.0-linux-x64.tar.xz", "node-v12.15.0-linux-x64", "63df953deb091c1500e1044bef01d1953117970e757e74e90d915e1a4a0d1c9c"), + "12.15.0-windows_amd64": ("node-v12.15.0-win-x64.zip", "node-v12.15.0-win-x64", "48b29cab597962f12b0aac081522e6192bc8642c582cd0fc1bf51557273888da"), + # 12.16.0 + "12.16.0-darwin_amd64": ("node-v12.16.0-darwin-x64.tar.gz", "node-v12.16.0-darwin-x64", "af3b9bbfdd9ae1b46390e7deeb77a2c1d8dbc6fb4171bbb0cfe8686fc1ecef1d"), + "12.16.0-linux_arm64": ("node-v12.16.0-linux-arm64.tar.xz", "node-v12.16.0-linux-arm64", "f2d97187bd8d3175bf6266193107a030bfb827003d57ba6dd21de16aa622548d"), + "12.16.0-linux_amd64": ("node-v12.16.0-linux-x64.tar.xz", "node-v12.16.0-linux-x64", "e8c38659540766db9d85bd7325ba8cce8ded56204f84507f73fdb41a26d9bd73"), + "12.16.0-windows_amd64": ("node-v12.16.0-win-x64.zip", "node-v12.16.0-win-x64", "9a590dd064b491fbd40b366ae4a119fe6cef516a25fb4d78d7c2a64b37574da8"), + # 12.16.1 + "12.16.1-darwin_amd64": ("node-v12.16.1-darwin-x64.tar.gz", "node-v12.16.1-darwin-x64", "34895bce210ca4b3cf19cd480e6563588880dd7f5d798f3782e3650580d35920"), + "12.16.1-linux_arm64": ("node-v12.16.1-linux-arm64.tar.xz", "node-v12.16.1-linux-arm64", "396c43ba507b8ec33c70cdc6f73b4a7c725bddb3f74a85a8b8ed77b436856fed"), + "12.16.1-linux_amd64": ("node-v12.16.1-linux-x64.tar.xz", "node-v12.16.1-linux-x64", "b826753f14df9771609ffb8e7d2cc4cb395247cb704cf0cea0f04132d9cf3505"), + "12.16.1-windows_amd64": ("node-v12.16.1-win-x64.zip", "node-v12.16.1-win-x64", "b93b73572c5e495154a9823d494de5729c77d1c83b041171154c4b5f3f76b590"), + # 12.16.2 + "12.16.2-darwin_amd64": ("node-v12.16.2-darwin-x64.tar.gz", "node-v12.16.2-darwin-x64", "483954e311a5ff649ddf32b473f635a58890790d284b5788bdd8d7ff850c6db2"), + "12.16.2-linux_arm64": ("node-v12.16.2-linux-arm64.tar.xz", "node-v12.16.2-linux-arm64", "c88005467f6dcdb621d454b35ec39bb42e165c6a2e1cee74cabcdc01af307e81"), + "12.16.2-linux_amd64": ("node-v12.16.2-linux-x64.tar.xz", "node-v12.16.2-linux-x64", "f94a6eb06e80ef2794ebf51a2baed0b89ed307d3196ab5579f16c0fa7cc62901"), + "12.16.2-windows_amd64": ("node-v12.16.2-win-x64.zip", "node-v12.16.2-win-x64", "f34303a49384aee2e5daab5f248c5a719e850a9ebb19e7098fe2bfffb26efe03"), + # 12.16.3 + "12.16.3-darwin_amd64": ("node-v12.16.3-darwin-x64.tar.gz", "node-v12.16.3-darwin-x64", "0718812b3ab8e77e8d1354f4d10428ae99d78f721bdcceee527c4b592ea7fed0"), + "12.16.3-linux_arm64": ("node-v12.16.3-linux-arm64.tar.xz", "node-v12.16.3-linux-arm64", "8311f513a7d1911200502dd3e00142cef56d600c851d5870f68d939802205b73"), + "12.16.3-linux_amd64": ("node-v12.16.3-linux-x64.tar.xz", "node-v12.16.3-linux-x64", "1956e196e3c3c8ef5f0c45db76d7c1245af4ccdda2b7ab30a57ce91d6e165caa"), + "12.16.3-windows_amd64": ("node-v12.16.3-win-x64.zip", "node-v12.16.3-win-x64", "d0bb0e0b1f1a948529ddd543e2cfe0bfe209eb843defc70217b3d2f84cbf3b78"), + # 12.17.0 + "12.17.0-darwin_amd64": ("node-v12.17.0-darwin-x64.tar.gz", "node-v12.17.0-darwin-x64", "8c3b9459462b8adaa10549f4da6a5ff5cdfaf7140a8a8020a87cc96d79022cc0"), + "12.17.0-linux_arm64": ("node-v12.17.0-linux-arm64.tar.xz", "node-v12.17.0-linux-arm64", "54a0dbb203ff1700341d258cefa304bd31044bf0226e9e59a0de1128418cb5aa"), + "12.17.0-linux_amd64": ("node-v12.17.0-linux-x64.tar.xz", "node-v12.17.0-linux-x64", "988653492a4f422fb112421c5c9d1c140146b665b480c2b24c66fffdd0b88a88"), + "12.17.0-windows_amd64": ("node-v12.17.0-win-x64.zip", "node-v12.17.0-win-x64", "f3a64dc6ad48577f1f81521aa144c028beb7e353d0fcd05d7b420a72a84f50fc"), + # 12.18.0 + "12.18.0-darwin_amd64": ("node-v12.18.0-darwin-x64.tar.gz", "node-v12.18.0-darwin-x64", "11fe50e670315d2d3c46317d23f7a019f46a3d08b534fbadee9a1bc3d4f81852"), + "12.18.0-linux_arm64": ("node-v12.18.0-linux-arm64.tar.xz", "node-v12.18.0-linux-arm64", "51b301102984ff73a74894396b774d00259bb3bb8c1de7c82674713acec7a214"), + "12.18.0-linux_amd64": ("node-v12.18.0-linux-x64.tar.xz", "node-v12.18.0-linux-x64", "2febc2506c298048bfddf896056be6191c1f08716876d960a4990bd63a7fe05a"), + "12.18.0-windows_amd64": ("node-v12.18.0-win-x64.zip", "node-v12.18.0-win-x64", "ca73a989eba5e863971cb600e5520cb4c5edf9c600fe8f76d9e4771ad03b5d08"), + # 12.18.1 + "12.18.1-darwin_amd64": ("node-v12.18.1-darwin-x64.tar.gz", "node-v12.18.1-darwin-x64", "80e1d644fe78838da47cd16de234b612c20e06ffe14447125db9622e381ed1ba"), + "12.18.1-linux_arm64": ("node-v12.18.1-linux-arm64.tar.xz", "node-v12.18.1-linux-arm64", "b6683e6e887c6c44a3fe9ff419e80d36eaafed39eb2c2d1b04ee54b440a03217"), + "12.18.1-linux_amd64": ("node-v12.18.1-linux-x64.tar.xz", "node-v12.18.1-linux-x64", "863f816967e297c9eb221ad3cf32521f7ac46fffc66750e60f159ed63809affa"), + "12.18.1-windows_amd64": ("node-v12.18.1-win-x64.zip", "node-v12.18.1-win-x64", "93039ebfc7c5bfad168b015f77667757925070fff3ae84c3eb73348b3123a82a"), + # 12.18.2 + "12.18.2-darwin_amd64": ("node-v12.18.2-darwin-x64.tar.gz", "node-v12.18.2-darwin-x64", "6e6e7311943e4f3880db5038b8b8034a30469342fe436c8aaacf2997dfa305a6"), + "12.18.2-linux_arm64": ("node-v12.18.2-linux-arm64.tar.xz", "node-v12.18.2-linux-arm64", "d7d3a05f36de9eb079b7b25e0fc1aaa0c960afdf36fb24b498f7303365eb945c"), + "12.18.2-linux_amd64": ("node-v12.18.2-linux-x64.tar.xz", "node-v12.18.2-linux-x64", "b8dc634798ee783482c2ae1755bd7dff09d83fa7bb037cdc370b601d0a5e5cbb"), + "12.18.2-windows_amd64": ("node-v12.18.2-win-x64.zip", "node-v12.18.2-win-x64", "91fdd5b5df16873c63541bc844c9eb66870d366b2076d114f9ab7528b5e2f9a3"), + # 12.18.3 + "12.18.3-darwin_amd64": ("node-v12.18.3-darwin-x64.tar.gz", "node-v12.18.3-darwin-x64", "af376caf114bdd5d7e566dbf7590e9077ffc01f9b2692eb2651f31d7219a30bb"), + "12.18.3-linux_arm64": ("node-v12.18.3-linux-arm64.tar.xz", "node-v12.18.3-linux-arm64", "d330aab40029afc34f8b5d1abc2e67be233df4b31331cf08d538be2a666737bb"), + "12.18.3-linux_amd64": ("node-v12.18.3-linux-x64.tar.xz", "node-v12.18.3-linux-x64", "b79e02e48d0a1ee4cd4ae138de97fda5413542f2a4f441a7d0e189697b8da563"), + "12.18.3-windows_amd64": ("node-v12.18.3-win-x64.zip", "node-v12.18.3-win-x64", "1fcd30c09f0ac9fbecf45161519eff2cf621c199eef4663b1db41b3f2fef4041"), + # 13.0.0 + "13.0.0-darwin_amd64": ("node-v13.0.0-darwin-x64.tar.gz", "node-v13.0.0-darwin-x64", "612556a8c7e6b4cd08f6134b8afe5a05bf84c0121225fa9c542be1c98af04a35"), + "13.0.0-linux_arm64": ("node-v13.0.0-linux-arm64.tar.xz", "node-v13.0.0-linux-arm64", "6ed882e17123861b5b81683de2b2c86be02c5916ef0beda04fd176329888fd12"), + "13.0.0-linux_amd64": ("node-v13.0.0-linux-x64.tar.xz", "node-v13.0.0-linux-x64", "799d890f00a3a2a7415b813b286d32d38573df6525bc8ef80f40077cdd210d39"), + "13.0.0-windows_amd64": ("node-v13.0.0-win-x64.zip", "node-v13.0.0-win-x64", "8ffcefde5e080d70790a9a2e1aab0724cc88b5526d5128b53fc59bf94f6ad5de"), + # 13.0.1 + "13.0.1-darwin_amd64": ("node-v13.0.1-darwin-x64.tar.gz", "node-v13.0.1-darwin-x64", "25621359a51ff218ecf4bb2ffc657815154230a967224f22b722840a2b9ad061"), + "13.0.1-linux_arm64": ("node-v13.0.1-linux-arm64.tar.xz", "node-v13.0.1-linux-arm64", "ad6e051aede160d8be5cbab9c60a155b06a5696e8088d895e6eff3dd36f9a688"), + "13.0.1-linux_amd64": ("node-v13.0.1-linux-x64.tar.xz", "node-v13.0.1-linux-x64", "d5657c19bb30b267bf2e0f2b61f6a96d8955aa30b69240f22d3fd2c65e123cf7"), + "13.0.1-windows_amd64": ("node-v13.0.1-win-x64.zip", "node-v13.0.1-win-x64", "1a2552b630651e08e9027339f71a65fbe3944540f0875563ea25639a091e1f33"), + # 13.1.0 + "13.1.0-darwin_amd64": ("node-v13.1.0-darwin-x64.tar.gz", "node-v13.1.0-darwin-x64", "6501c1bcf2babb5b9c81dcff8b52021f726da8f6ee28df1637acade1a16c7d39"), + "13.1.0-linux_arm64": ("node-v13.1.0-linux-arm64.tar.xz", "node-v13.1.0-linux-arm64", "646d597e6b0dc400429e46b703a5135c77bd71e653ea4c8254d0b60c17b6ec1d"), + "13.1.0-linux_amd64": ("node-v13.1.0-linux-x64.tar.xz", "node-v13.1.0-linux-x64", "2eecb5a4b7975c3b406bee36b12c9a29e8bedf9553c88cad310b8f076db00881"), + "13.1.0-windows_amd64": ("node-v13.1.0-win-x64.zip", "node-v13.1.0-win-x64", "d735e97bdeb7b74551b9d165c708a3fdea4dbb3801a65e70f6d6ae3539d48a03"), + # 13.2.0 + "13.2.0-darwin_amd64": ("node-v13.2.0-darwin-x64.tar.gz", "node-v13.2.0-darwin-x64", "2bcba358ef68ea21655728126c678063c60119e18e65d04f615d6b22dba8f7a5"), + "13.2.0-linux_arm64": ("node-v13.2.0-linux-arm64.tar.xz", "node-v13.2.0-linux-arm64", "e6c4a5fe57585f69a20bd028275db31f43de421308e31d117f319b577210e527"), + "13.2.0-linux_amd64": ("node-v13.2.0-linux-x64.tar.xz", "node-v13.2.0-linux-x64", "366df8a38b522a5899c3f48d8c9e359b3370495cf84867b2673dc10483adbdef"), + "13.2.0-windows_amd64": ("node-v13.2.0-win-x64.zip", "node-v13.2.0-win-x64", "e2866a8f53c45bb544d7b00aed1e5fddbbd7071bd331b02e66a6ce7c38c6918c"), + # 13.3.0 + "13.3.0-darwin_amd64": ("node-v13.3.0-darwin-x64.tar.gz", "node-v13.3.0-darwin-x64", "187ea9028daa6d9abad9c1cbb4e12ba51427c3748da29eae616fa352c0f4cd49"), + "13.3.0-linux_arm64": ("node-v13.3.0-linux-arm64.tar.xz", "node-v13.3.0-linux-arm64", "fb201a908bea36be828eee36a7cd898c67ad4ae6846982f393466e2b8b826c16"), + "13.3.0-linux_amd64": ("node-v13.3.0-linux-x64.tar.xz", "node-v13.3.0-linux-x64", "b208393ae411bd55188e903171901765aaa8381c08155e4a7b34174737a1bc65"), + "13.3.0-windows_amd64": ("node-v13.3.0-win-x64.zip", "node-v13.3.0-win-x64", "82e0f43aea81374a8028a7d3c9993245c4910ac95cd0f66ee5b29b940a6f3d93"), + # 13.4.0 + "13.4.0-darwin_amd64": ("node-v13.4.0-darwin-x64.tar.gz", "node-v13.4.0-darwin-x64", "4de08a89054416595228d6ff40fcf20c375d00556f2e95dfde8602cbb42c0b6e"), + "13.4.0-linux_arm64": ("node-v13.4.0-linux-arm64.tar.xz", "node-v13.4.0-linux-arm64", "382d5fb2983ab55d495e42145e812b3859d2a311e426307fd373f47825d55fe9"), + "13.4.0-linux_amd64": ("node-v13.4.0-linux-x64.tar.xz", "node-v13.4.0-linux-x64", "5cab49240c521efb80efd0a0bb3ba1071e5498c55ecbebd723d78648c91b1cc8"), + "13.4.0-windows_amd64": ("node-v13.4.0-win-x64.zip", "node-v13.4.0-win-x64", "56de9ed20332cdf22bb9b048c3fb3977662ef2de9d2e8ac2d2a27d28e9be276f"), + # 13.5.0 + "13.5.0-darwin_amd64": ("node-v13.5.0-darwin-x64.tar.gz", "node-v13.5.0-darwin-x64", "3322c601dc032677e5b5f87f393d4b1d70073bcab24fe74378eff8eb49364001"), + "13.5.0-linux_arm64": ("node-v13.5.0-linux-arm64.tar.xz", "node-v13.5.0-linux-arm64", "fe52f4e3a60a372138102da741e5b5d34310a74b3fc6f2000e4c254e3f0c4f51"), + "13.5.0-linux_amd64": ("node-v13.5.0-linux-x64.tar.xz", "node-v13.5.0-linux-x64", "4d2b2cea13388658e95d8b2dc7ff918718155473ef6ef38928d92eb8cbbe210a"), + "13.5.0-windows_amd64": ("node-v13.5.0-win-x64.zip", "node-v13.5.0-win-x64", "e286a84f2861b9f3c0290a9afbbecd09f303a39b2573af001ef8a4c1413eee7c"), + # 13.6.0 + "13.6.0-darwin_amd64": ("node-v13.6.0-darwin-x64.tar.gz", "node-v13.6.0-darwin-x64", "da13adb864777b322dda7af20410a9b0c63aa69de4b5574008d1e6910768bf69"), + "13.6.0-linux_arm64": ("node-v13.6.0-linux-arm64.tar.xz", "node-v13.6.0-linux-arm64", "1f34ed8668207e03cb832763319a82b4c753839a3655207adc5bbe52f65e154a"), + "13.6.0-linux_amd64": ("node-v13.6.0-linux-x64.tar.xz", "node-v13.6.0-linux-x64", "00f01315a867da16d1638f7a02966c608e344ac6c5b7d04d1fdae3138fa9d798"), + "13.6.0-windows_amd64": ("node-v13.6.0-win-x64.zip", "node-v13.6.0-win-x64", "7fe37b34a4673a071bea52fcaf913ec422cf6fd79fd025bfb22de42ccc77f386"), + # 13.7.0 + "13.7.0-darwin_amd64": ("node-v13.7.0-darwin-x64.tar.gz", "node-v13.7.0-darwin-x64", "866ea9bdbd7b734c593af96b946397d9c7cb9c291aa8ea52a6a2af271b972169"), + "13.7.0-linux_arm64": ("node-v13.7.0-linux-arm64.tar.xz", "node-v13.7.0-linux-arm64", "2823b199c7c4e6c547caf95139e28341444a5ffc52481a5ba704067291771579"), + "13.7.0-linux_amd64": ("node-v13.7.0-linux-x64.tar.xz", "node-v13.7.0-linux-x64", "02578025b82de24f4cfb3ffeb3824990431d739d09220f2db9ef9f454f475470"), + "13.7.0-windows_amd64": ("node-v13.7.0-win-x64.zip", "node-v13.7.0-win-x64", "26b41de81ead8f51de2964d7c7526533f46387ff436b61596e09d678bcd7503f"), + # 13.8.0 + "13.8.0-darwin_amd64": ("node-v13.8.0-darwin-x64.tar.gz", "node-v13.8.0-darwin-x64", "ae480e2b124cb55667763848b8ec0fde1bc35d5e0b76debe881034689a68eaea"), + "13.8.0-linux_arm64": ("node-v13.8.0-linux-arm64.tar.xz", "node-v13.8.0-linux-arm64", "f1d4167a6911e42d836a5459c992cdaf35a03ab0700ea80831d7df5d706d1baf"), + "13.8.0-linux_amd64": ("node-v13.8.0-linux-x64.tar.xz", "node-v13.8.0-linux-x64", "47a8cb675358f2ff534ad3d6709f14de0433f76d3af92cf389b8dcc78a1236ad"), + "13.8.0-windows_amd64": ("node-v13.8.0-win-x64.zip", "node-v13.8.0-win-x64", "f198f3e4b120fc84b61d12e7222530c5bb9c6f864735bb41a8db1cf1b94a64c3"), + # 13.9.0 + "13.9.0-darwin_amd64": ("node-v13.9.0-darwin-x64.tar.gz", "node-v13.9.0-darwin-x64", "b2a5a539b9b2d1733bda301913c99d220968de801bf313b762fa932820ea797b"), + "13.9.0-linux_arm64": ("node-v13.9.0-linux-arm64.tar.xz", "node-v13.9.0-linux-arm64", "c668afc06e4094b68ae758b823fc3244b34f0468fc0c2feee45278788989b8a1"), + "13.9.0-linux_amd64": ("node-v13.9.0-linux-x64.tar.xz", "node-v13.9.0-linux-x64", "f1e093303468032a1ecb0e290e19b43bf7771d4efbf589560df0060149614272"), + "13.9.0-windows_amd64": ("node-v13.9.0-win-x64.zip", "node-v13.9.0-win-x64", "ec0a55bb703906494e738cd3d09e3274b34f0a3fbe207b9e67502092ed017500"), + # 13.10.0 + "13.10.0-darwin_amd64": ("node-v13.10.0-darwin-x64.tar.gz", "node-v13.10.0-darwin-x64", "67269fb9061402e446bb61776be2e5d0ec330b5274326df77979698d05f503da"), + "13.10.0-linux_arm64": ("node-v13.10.0-linux-arm64.tar.xz", "node-v13.10.0-linux-arm64", "adb145535d2e03fe508fa7a34897a130ba903d6f718a21cd29d1760e298f715b"), + "13.10.0-linux_amd64": ("node-v13.10.0-linux-x64.tar.xz", "node-v13.10.0-linux-x64", "62081af005257d3db7ebd5a64b43f1a8e4a57bafd229be3acd7ce2704607eaac"), + "13.10.0-windows_amd64": ("node-v13.10.0-win-x64.zip", "node-v13.10.0-win-x64", "d428b6d3e127716191fa6df630d03a25d3186fda1ede04a9a8d5c07e526dbb9e"), + # 13.10.1 + "13.10.1-darwin_amd64": ("node-v13.10.1-darwin-x64.tar.gz", "node-v13.10.1-darwin-x64", "a6a66fdc79e70267fc191f10ee045793240974e1268fdea6c2d28afbc1d635e8"), + "13.10.1-linux_arm64": ("node-v13.10.1-linux-arm64.tar.xz", "node-v13.10.1-linux-arm64", "f73effcef784251e53b5e3938b8316c36bd49628c3588de7976e8569e560c12c"), + "13.10.1-linux_amd64": ("node-v13.10.1-linux-x64.tar.xz", "node-v13.10.1-linux-x64", "69d69165282d88f321e751f03ee5d3370db65e5ca4c587af24994b12f31d4827"), + "13.10.1-windows_amd64": ("node-v13.10.1-win-x64.zip", "node-v13.10.1-win-x64", "f9d0aac273a44dbd52dd8cdb3d6c684b68b860d128af58d77a0c08f39f51f229"), + # 13.11.0 + "13.11.0-darwin_amd64": ("node-v13.11.0-darwin-x64.tar.gz", "node-v13.11.0-darwin-x64", "2d87989fb1e0d425667c5ca9893cb3ecfb30cd3344d543870246d65f8d9b892f"), + "13.11.0-linux_arm64": ("node-v13.11.0-linux-arm64.tar.xz", "node-v13.11.0-linux-arm64", "63ce9871b9802a1f021c84f282c63e1890524a32dc97d3e7a7ab8d52b4bde19e"), + "13.11.0-linux_amd64": ("node-v13.11.0-linux-x64.tar.xz", "node-v13.11.0-linux-x64", "c127cf38f9a56d97646eb1fedb93712f304950c7143705de7180a701becc0fbb"), + "13.11.0-windows_amd64": ("node-v13.11.0-win-x64.zip", "node-v13.11.0-win-x64", "dc93aa5a82988f741dca6f1869c7b1aeda6f339293d13a968279a6dc9fcc8dd0"), + # 13.12.0 + "13.12.0-darwin_amd64": ("node-v13.12.0-darwin-x64.tar.gz", "node-v13.12.0-darwin-x64", "1fe3103610e8eb66ae71872ea1b4e868a638292a4e7ad0e41976a9fe417a09c7"), + "13.12.0-linux_arm64": ("node-v13.12.0-linux-arm64.tar.xz", "node-v13.12.0-linux-arm64", "2e8c12e575fcceb2d6f46eb3c50c6bfa98e91540bddaf91ca1c0fe739619ca0b"), + "13.12.0-linux_amd64": ("node-v13.12.0-linux-x64.tar.xz", "node-v13.12.0-linux-x64", "95eb1188872e243323cbc31fc80048be3fdfdda91505c62c80c599281de357ed"), + "13.12.0-windows_amd64": ("node-v13.12.0-win-x64.zip", "node-v13.12.0-win-x64", "de8445794ecbcfe895f4775417d1e2cc023e2212b1f5d4ff5cc0ed6875f7c911"), + # 13.13.0 + "13.13.0-darwin_amd64": ("node-v13.13.0-darwin-x64.tar.gz", "node-v13.13.0-darwin-x64", "28ae2abedafb250a9bbe706650fd79d2b25273f6445adcc1d85c777359dc5390"), + "13.13.0-linux_arm64": ("node-v13.13.0-linux-arm64.tar.xz", "node-v13.13.0-linux-arm64", "eded8da4633134cae0766a2f6f3c2237f8e728df77895c85607acaca13216226"), + "13.13.0-linux_amd64": ("node-v13.13.0-linux-x64.tar.xz", "node-v13.13.0-linux-x64", "41d60cda7422f53156711626d670f9b5079075b1ecc6736aea99319fe36c20a6"), + "13.13.0-windows_amd64": ("node-v13.13.0-win-x64.zip", "node-v13.13.0-win-x64", "79f2a39c1047666f2bbf2efe53c069a38b8f6ef18d569bf338463aea1914b89d"), + # 13.14.0 + "13.14.0-darwin_amd64": ("node-v13.14.0-darwin-x64.tar.gz", "node-v13.14.0-darwin-x64", "a56eb353fecd45f731d74fc77c58dde052320c1bc272de9b03151fbaf962feaf"), + "13.14.0-linux_arm64": ("node-v13.14.0-linux-arm64.tar.xz", "node-v13.14.0-linux-arm64", "e4736df097846bbe8195a185cc67ada3410a1f8993949e516bbf62b62198d2a7"), + "13.14.0-linux_amd64": ("node-v13.14.0-linux-x64.tar.xz", "node-v13.14.0-linux-x64", "9ab808ba3872d58e827ea60a6e43a352f59361bc8eb36fe0327a587086b466f9"), + "13.14.0-windows_amd64": ("node-v13.14.0-win-x64.zip", "node-v13.14.0-win-x64", "8c6e77fac5e911a2e70b6ca34804b3b59b6a3c685ab4e3b17756397df86063fa"), + # 14.0.0 + "14.0.0-darwin_amd64": ("node-v14.0.0-darwin-x64.tar.gz", "node-v14.0.0-darwin-x64", "4e50cec7aeef91c6d00d08a3bab938358da182984aa549c2aeab9868e3342f55"), + "14.0.0-linux_arm64": ("node-v14.0.0-linux-arm64.tar.xz", "node-v14.0.0-linux-arm64", "29c612fcdb40133171959b269878138bbfe7723d46681f70e2017ee30134e7ad"), + "14.0.0-linux_amd64": ("node-v14.0.0-linux-x64.tar.xz", "node-v14.0.0-linux-x64", "a2aaaa621074e1b56bb751bda53ce726319fac617587443371c0a7742481e5b6"), + "14.0.0-windows_amd64": ("node-v14.0.0-win-x64.zip", "node-v14.0.0-win-x64", "e8f73d4f2e9935df929360c09ae932ceb316784a7450b256024af5d01fe29b75"), + # 14.1.0 + "14.1.0-darwin_amd64": ("node-v14.1.0-darwin-x64.tar.gz", "node-v14.1.0-darwin-x64", "7f08bd365df4e7a5625ad393257f48e8cd79f77391ab87a64426b0c6448dd226"), + "14.1.0-linux_arm64": ("node-v14.1.0-linux-arm64.tar.xz", "node-v14.1.0-linux-arm64", "9dd3a4867f679f40075e2a364d3b3566702139274da9fcd59a182198ff7c7b52"), + "14.1.0-linux_amd64": ("node-v14.1.0-linux-x64.tar.xz", "node-v14.1.0-linux-x64", "959fab0c8ae0830f1ab987699cd2941cab97169991630a2e0c99db7c144f9e42"), + "14.1.0-windows_amd64": ("node-v14.1.0-win-x64.zip", "node-v14.1.0-win-x64", "1d3890d0d2f996cce57bcb0206e49b67233623e3cdb50eee77b8acc8f006b955"), + # 14.2.0 + "14.2.0-darwin_amd64": ("node-v14.2.0-darwin-x64.tar.gz", "node-v14.2.0-darwin-x64", "2447241aefe71dea8ba1552549e4df2e894d1ac12203630db3af63d4ae35c016"), + "14.2.0-linux_arm64": ("node-v14.2.0-linux-arm64.tar.xz", "node-v14.2.0-linux-arm64", "4587d2c52cd348094bd46ee4ee8cdfeb549462ead9b4aadc9cfc3c5fc3ba7215"), + "14.2.0-linux_amd64": ("node-v14.2.0-linux-x64.tar.xz", "node-v14.2.0-linux-x64", "468cbd92271da8c0cacaa3fa432a73a332e398bade8ad7359a94aa8ab3cc3cca"), + "14.2.0-windows_amd64": ("node-v14.2.0-win-x64.zip", "node-v14.2.0-win-x64", "99085f45a894e257123d7c729113cc00ed1413df432dbdce5fe53867e7c53b11"), + # 14.3.0 + "14.3.0-darwin_amd64": ("node-v14.3.0-darwin-x64.tar.gz", "node-v14.3.0-darwin-x64", "fd6a44303646f28b7e7577de687c2681cb565bef534e84deef44202e7919d7f3"), + "14.3.0-linux_arm64": ("node-v14.3.0-linux-arm64.tar.xz", "node-v14.3.0-linux-arm64", "53bb110ea135ae3c819f535373ce1b779e86c7aa49a9b93fc5f26969a72365d2"), + "14.3.0-linux_amd64": ("node-v14.3.0-linux-x64.tar.xz", "node-v14.3.0-linux-x64", "17236db7b9447080b58c2e50937982c386fe8a60e644b8d7f23e546068a8acba"), + "14.3.0-windows_amd64": ("node-v14.3.0-win-x64.zip", "node-v14.3.0-win-x64", "07bebc231dd8d773ab41cdcfbcb8b48e2336fbee20deb961b4300b9ba86afa04"), + # 14.4.0 + "14.4.0-darwin_amd64": ("node-v14.4.0-darwin-x64.tar.gz", "node-v14.4.0-darwin-x64", "d95eaa6950d67895b5cdd0e2f913d2c44034178234f0cb7436c3397b54f64023"), + "14.4.0-linux_arm64": ("node-v14.4.0-linux-arm64.tar.xz", "node-v14.4.0-linux-arm64", "9c9f84589b7bc6a05ac12a137e5097a5adb20b5c63ae9e4e912942da2c06d99d"), + "14.4.0-linux_amd64": ("node-v14.4.0-linux-x64.tar.xz", "node-v14.4.0-linux-x64", "d65a9a8a547bfe67c6c08dae733a3e5a846700d5377c5f150164cc6bb5f6a039"), + "14.4.0-windows_amd64": ("node-v14.4.0-win-x64.zip", "node-v14.4.0-win-x64", "a4bac45af8252f6b677a79ed19be4913f4939c4509fb08b6f14f972597550bbe"), + # 14.5.0 + "14.5.0-darwin_amd64": ("node-v14.5.0-darwin-x64.tar.gz", "node-v14.5.0-darwin-x64", "47dfd88abcd4d6d6f7b7516c95645f9760ba9c93d04b51a92895584c945b2953"), + "14.5.0-linux_arm64": ("node-v14.5.0-linux-arm64.tar.xz", "node-v14.5.0-linux-arm64", "c5ab67fbc73ea8858b4a989b6e92d6630decfc47c4703be7bcda3c6e39adff0b"), + "14.5.0-linux_amd64": ("node-v14.5.0-linux-x64.tar.xz", "node-v14.5.0-linux-x64", "8b0235c318de87ecf8eec9a39e5c5df80757dbec571addda7123276dfcb34d5b"), + "14.5.0-windows_amd64": ("node-v14.5.0-win-x64.zip", "node-v14.5.0-win-x64", "ab5728c85ece98210036fc9c38984fa2410a882dd99075b3d5bece58e4cc6ea2"), + # 14.6.0 + "14.6.0-darwin_amd64": ("node-v14.6.0-darwin-x64.tar.gz", "node-v14.6.0-darwin-x64", "7907a18605b900ce977ff4c7e67f7507f937f85738659865d31779c3b2990756"), + "14.6.0-linux_arm64": ("node-v14.6.0-linux-arm64.tar.xz", "node-v14.6.0-linux-arm64", "853f2c99f0e5fa65e6f222821e29c9d1a49f2d358a97c1de080ddf5c74e4ec70"), + "14.6.0-linux_amd64": ("node-v14.6.0-linux-x64.tar.xz", "node-v14.6.0-linux-x64", "b8a39b2dac8e200e96586356c5525d20b0b43dba8bf9f7eb4e8c2d5366be2bb2"), + "14.6.0-windows_amd64": ("node-v14.6.0-win-x64.zip", "node-v14.6.0-win-x64", "57ea75a7ec70cc8158e6f9774f9728fb9e3d08212b1af3e206db2de46ca304ca"), + # 14.7.0 + "14.7.0-darwin_amd64": ("node-v14.7.0-darwin-x64.tar.gz", "node-v14.7.0-darwin-x64", "47c94ec84706fd6851db27af54abdab569941fcbfcdc28e386d8fa7d49c6a619"), + "14.7.0-linux_arm64": ("node-v14.7.0-linux-arm64.tar.xz", "node-v14.7.0-linux-arm64", "12540328aeb5baa524a4e9c3b493b5eceb54cfa630f8bce64c19e674871e2f4b"), + "14.7.0-linux_amd64": ("node-v14.7.0-linux-x64.tar.xz", "node-v14.7.0-linux-x64", "48929b03deb2915b64ba67355d2deffeed3c8df798b0c5f2b821ffc7a8116a23"), + "14.7.0-windows_amd64": ("node-v14.7.0-win-x64.zip", "node-v14.7.0-win-x64", "a899693c9a31089a1eda14b1e613cf8cd60361e6e574b351551d832cf864c8f8"), + # 14.8.0 + "14.8.0-darwin_amd64": ("node-v14.8.0-darwin-x64.tar.gz", "node-v14.8.0-darwin-x64", "b6db32f2ff37475ae68502c76fc777a604cbc589bf57158fb4eed4db9ac5f62d"), + "14.8.0-linux_arm64": ("node-v14.8.0-linux-arm64.tar.xz", "node-v14.8.0-linux-arm64", "0c66a6468c36552c00d45cff0eaa924240f3d2e625be0306f33f8b0d81af4224"), + "14.8.0-linux_amd64": ("node-v14.8.0-linux-x64.tar.xz", "node-v14.8.0-linux-x64", "c7761fe5d56d045d1540b1f0bc8a20d7edf03e6fd695ee5fbffc1dd9416ccc75"), + "14.8.0-windows_amd64": ("node-v14.8.0-win-x64.zip", "node-v14.8.0-win-x64", "848ca582bdf8b7fdc21a38d9f3887a45bdf6381b04549fc0f918852889157c9a"), +} diff --git a/package.json b/package.json index 35f4444415..463d76dc82 100644 --- a/package.json +++ b/package.json @@ -125,6 +125,7 @@ "// See comment in .bazelrc": "", "bazel:update-deleted-packages": "sed -i.bak \"/--deleted_packages/s#=.*#=$(find {examples,e2e}/*/* \\( -name BUILD -or -name BUILD.bazel \\) | xargs -n 1 dirname | paste -sd, -)#\" .bazelrc && rm .bazelrc.bak", "update-codeowners": "./scripts/update_codeowners.sh", + "update-nodejs-versions": "node ./scripts/update-nodejs-versions.js > internal/node/node_versions.bzl", "format": "git-clang-format", "format-all": "clang-format --glob='{internal/**/,examples/**/}*.{js,ts}' -i", "stardoc": "bazel build //docs && cp -f dist/bin/docs/*.md docs", diff --git a/scripts/update-nodejs-versions.js b/scripts/update-nodejs-versions.js index 6a8cbda143..24b2235de8 100644 --- a/scripts/update-nodejs-versions.js +++ b/scripts/update-nodejs-versions.js @@ -1,5 +1,6 @@ -// This script creates output that can be copy/pasted into /internal/node/node_repositories.bzl to +// This script creates output that is copy/pasted into /internal/node/node_versions.bzl to // add all published NodeJS versions >= 8.0.0. +// See the update-nodejs-versions script in package.json const https = require("https"); @@ -70,7 +71,11 @@ async function getNodeJsVersion(version) { async function main() { const versions = await getNodeJsVersions(); const nodeRepositories = await Promise.all(versions.map(getNodeJsVersion)); - + console.log('""" Generated code; do not edit'); + console.log('Update by running yarn update-nodejs-versions\n"""\n'); + // Suppress buildifier + console.log('# @unsorted-dict-items'); + console.log('NODE_VERSIONS = {'); nodeRepositories.forEach(({ version, repositories }) => { console.log( [ @@ -85,10 +90,13 @@ async function main() { )}", "${sha}"),` ), ] - .map((line) => ` ${line}`) + .map((line) => ` ${line}`) .join("\n") ); }); + console.log("}"); } -main(); +if (require.main === module) { + main(); +} From 4d78d25fd13472f4f6ce473899f9dc270131180b Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Tue, 18 Aug 2020 15:50:28 -0700 Subject: [PATCH 0824/1134] docs: update docs for release --- docs/Built-ins.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Built-ins.md b/docs/Built-ins.md index 2195ed6a56..eb4527ff9c 100755 --- a/docs/Built-ins.md +++ b/docs/Built-ins.md @@ -92,7 +92,7 @@ node_repositories( ) ``` -Defaults to `{"8.9.1-darwin_amd64": ("node-v8.9.1-darwin-x64.tar.gz", "node-v8.9.1-darwin-x64", "05c992a6621d28d564b92bf3051a5dc0adf83839237c0d4653a8cdb8a1c73b94"), "8.9.1-linux_amd64": ("node-v8.9.1-linux-x64.tar.xz", "node-v8.9.1-linux-x64", "8be82805f7c1ab3e64d4569fb9a90ded2de78dd27cadbb91bad1bf975dae1e2d"), "8.9.1-windows_amd64": ("node-v8.9.1-win-x64.zip", "node-v8.9.1-win-x64", "db89c6e041da359561fbe7da075bb4f9881a0f7d3e98c203e83732cfb283fa4a"), "8.11.1-darwin_amd64": ("node-v8.11.1-darwin-x64.tar.gz", "node-v8.11.1-darwin-x64", "5c7b05899ff56910a2b8180f139d48612f349ac2c5d20f08dbbeffbed9e3a089"), "8.11.1-linux_amd64": ("node-v8.11.1-linux-x64.tar.xz", "node-v8.11.1-linux-x64", "6617e245fa0f7fbe0e373e71d543fea878315324ab31dc64b4eba10e42d04c11"), "8.11.1-windows_amd64": ("node-v8.11.1-win-x64.zip", "node-v8.11.1-win-x64", "7d49b59c2b5d73a14c138e8a215d558a64a5241cd5035d9824f608e7bba097b1"), "8.12.0-darwin_amd64": ("node-v8.12.0-darwin-x64.tar.gz", "node-v8.12.0-darwin-x64", "ca131b84dfcf2b6f653a6521d31f7a108ad7d83f4d7e781945b2eca8172064aa"), "8.12.0-linux_amd64": ("node-v8.12.0-linux-x64.tar.xz", "node-v8.12.0-linux-x64", "29a20479cd1e3a03396a4e74a1784ccdd1cf2f96928b56f6ffa4c8dae40c88f2"), "8.12.0-windows_amd64": ("node-v8.12.0-win-x64.zip", "node-v8.12.0-win-x64", "9b22c9b23148b61ea0052826b3ac0255b8a3a542c125272b8f014f15bf11b091"), "9.11.1-darwin_amd64": ("node-v9.11.1-darwin-x64.tar.gz", "node-v9.11.1-darwin-x64", "7b1fb394aa41a62b477e36df16644bd383cc9084808511f6cd318b835a06aac6"), "9.11.1-linux_amd64": ("node-v9.11.1-linux-x64.tar.xz", "node-v9.11.1-linux-x64", "4d27a95d5c2f1c8ef99118794c9c4903e63963418d3e16ca7576760cff39879b"), "9.11.1-windows_amd64": ("node-v9.11.1-win-x64.zip", "node-v9.11.1-win-x64", "0a3566d57ccb7fed95d18fc6c3bc1552a1b1e4753f9bc6c5d45e04f325e1ee53"), "10.3.0-darwin_amd64": ("node-v10.3.0-darwin-x64.tar.gz", "node-v10.3.0-darwin-x64", "0bb5b7e3fe8cccda2abda958d1eb0408f1518a8b0cb58b75ade5d507cd5d6053"), "10.3.0-linux_amd64": ("node-v10.3.0-linux-x64.tar.xz", "node-v10.3.0-linux-x64", "eb3c3e2585494699716ad3197c8eedf4003d3f110829b30c5a0dc34414c47423"), "10.3.0-windows_amd64": ("node-v10.3.0-win-x64.zip", "node-v10.3.0-win-x64", "65d586afb087406a2800d8e51f664c88b26d510f077b85a3b177a1bb79f73677"), "10.9.0-darwin_amd64": ("node-v10.9.0-darwin-x64.tar.gz", "node-v10.9.0-darwin-x64", "3c4fe75dacfcc495a432a7ba2dec9045cff359af2a5d7d0429c84a424ef686fc"), "10.9.0-linux_amd64": ("node-v10.9.0-linux-x64.tar.xz", "node-v10.9.0-linux-x64", "c5acb8b7055ee0b6ac653dc4e458c5db45348cecc564b388f4ed1def84a329ff"), "10.9.0-windows_amd64": ("node-v10.9.0-win-x64.zip", "node-v10.9.0-win-x64", "6a75cdbb69d62ed242d6cbf0238a470bcbf628567ee339d4d098a5efcda2401e"), "10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e"), "10.10.0-linux_amd64": ("node-v10.10.0-linux-x64.tar.xz", "node-v10.10.0-linux-x64", "686d2c7b7698097e67bcd68edc3d6b5d28d81f62436c7cf9e7779d134ec262a9"), "10.10.0-windows_amd64": ("node-v10.10.0-win-x64.zip", "node-v10.10.0-win-x64", "70c46e6451798be9d052b700ce5dadccb75cf917f6bf0d6ed54344c856830cfb"), "10.13.0-darwin_amd64": ("node-v10.13.0-darwin-x64.tar.gz", "node-v10.13.0-darwin-x64", "815a5d18516934a3963ace9f0574f7d41f0c0ce9186a19be3d89e039e57598c5"), "10.13.0-linux_amd64": ("node-v10.13.0-linux-x64.tar.xz", "node-v10.13.0-linux-x64", "0dc6dba645550b66f8f00541a428c29da7c3cde32fb7eda2eb626a9db3bbf08d"), "10.13.0-windows_amd64": ("node-v10.13.0-win-x64.zip", "node-v10.13.0-win-x64", "eb09c9e9677f1919ec1ca78623c09b2a718ec5388b72b7662d5c41e5f628a52c"), "10.16.0-darwin_amd64": ("node-v10.16.0-darwin-x64.tar.gz", "node-v10.16.0-darwin-x64", "6c009df1b724026d84ae9a838c5b382662e30f6c5563a0995532f2bece39fa9c"), "10.16.0-linux_amd64": ("node-v10.16.0-linux-x64.tar.xz", "node-v10.16.0-linux-x64", "1827f5b99084740234de0c506f4dd2202a696ed60f76059696747c34339b9d48"), "10.16.0-windows_amd64": ("node-v10.16.0-win-x64.zip", "node-v10.16.0-win-x64", "aa22cb357f0fb54ccbc06b19b60e37eefea5d7dd9940912675d3ed988bf9a059"), "12.13.0-darwin_amd64": ("node-v12.13.0-darwin-x64.tar.gz", "node-v12.13.0-darwin-x64", "49a7374670a111b033ce16611b20fd1aafd3296bbc662b184fe8fb26a29c22cc"), "12.13.0-linux_amd64": ("node-v12.13.0-linux-x64.tar.xz", "node-v12.13.0-linux-x64", "7a57ef2cb3036d7eacd50ae7ba07245a28336a93652641c065f747adb2a356d9"), "12.13.0-linux_arm64": ("node-v12.13.0-linux-arm64.tar.xz", "node-v12.13.0-linux-arm64", "d65b3ce27639f15ae22941e3ff98a1c900aa9049fcc15518038615b0676037d5"), "12.13.0-windows_amd64": ("node-v12.13.0-win-x64.zip", "node-v12.13.0-win-x64", "6f920cebeecb4957b4ef0def6d9b04c49d4582864f8d1a207ce8d0665865781a")}` +Defaults to `{"8.0.0-darwin_amd64": ("node-v8.0.0-darwin-x64.tar.gz", "node-v8.0.0-darwin-x64", "6e4a66917e2c11d5adc537c899941c973ae586293352b8172a4f32be0b7f0300"), "8.0.0-linux_arm64": ("node-v8.0.0-linux-arm64.tar.xz", "node-v8.0.0-linux-arm64", "8d6eaefcc252055de54a666d4e00eec78caf2143cd7a13b63f109e9eb78a795e"), "8.0.0-linux_amd64": ("node-v8.0.0-linux-x64.tar.xz", "node-v8.0.0-linux-x64", "0a536bb83eeccca23626e5e5ead52563a641e4331c35e367662892921dc7e8a4"), "8.0.0-windows_amd64": ("node-v8.0.0-win-x64.zip", "node-v8.0.0-win-x64", "84410377118857674e0fb6e7bc7627ffb8cc67a72f162a050276b076e328a9bb"), "8.1.0-darwin_amd64": ("node-v8.1.0-darwin-x64.tar.gz", "node-v8.1.0-darwin-x64", "08af5f1a7441728cabf9b11af25da28ee1725903524968dd9621b885b13303c7"), "8.1.0-linux_arm64": ("node-v8.1.0-linux-arm64.tar.xz", "node-v8.1.0-linux-arm64", "adf2f517c9847cbb5904b282c0819526b5264c256477ed5e4b258584daa1a2ea"), "8.1.0-linux_amd64": ("node-v8.1.0-linux-x64.tar.xz", "node-v8.1.0-linux-x64", "1638a0083c6eee122cbbefdf39cb8bcc43cf19fedff331a0317b05fd38dcb6df"), "8.1.0-windows_amd64": ("node-v8.1.0-win-x64.zip", "node-v8.1.0-win-x64", "cee1fd1c828e8996824a2d9f9056dfae771b77c05b15ad015bc7f8800409215c"), "8.1.1-darwin_amd64": ("node-v8.1.1-darwin-x64.tar.gz", "node-v8.1.1-darwin-x64", "2f67890a5a46564672cfd4522cc00c7ac04d307e6a942ae1ad38b6aee94c29e2"), "8.1.1-linux_arm64": ("node-v8.1.1-linux-arm64.tar.xz", "node-v8.1.1-linux-arm64", "3971543f9d29f77ddb8f47a54e4b99422a822173599748ab7fcd9c35c8e25124"), "8.1.1-linux_amd64": ("node-v8.1.1-linux-x64.tar.xz", "node-v8.1.1-linux-x64", "6a735e77bdd21c92fe85ea5f9f567d0d6930fa33e0e111946b17cdb7efefb8d5"), "8.1.1-windows_amd64": ("node-v8.1.1-win-x64.zip", "node-v8.1.1-win-x64", "459f3b62e58f4fac3b9b5e49694855f338f3dcf2fcf955299ee2a47f7687625a"), "8.1.2-darwin_amd64": ("node-v8.1.2-darwin-x64.tar.gz", "node-v8.1.2-darwin-x64", "70f353449b19d6d36262f5e38f9cc23e80b2034c21ae48623a6a4890f513eb53"), "8.1.2-linux_arm64": ("node-v8.1.2-linux-arm64.tar.xz", "node-v8.1.2-linux-arm64", "d468ac671047a5a5edb6edd34a9a625645505551c35ef73e2102c504535a09d4"), "8.1.2-linux_amd64": ("node-v8.1.2-linux-x64.tar.xz", "node-v8.1.2-linux-x64", "f5dc173d3005fbcfd107c83a15d4dbff9a28ff53ab42c23344a572d84814ecfe"), "8.1.2-windows_amd64": ("node-v8.1.2-win-x64.zip", "node-v8.1.2-win-x64", "5463c812afeb498ad8ab9c396246e455d9353ab48ae409c82a2a45193e161f66"), "8.1.3-darwin_amd64": ("node-v8.1.3-darwin-x64.tar.gz", "node-v8.1.3-darwin-x64", "ae588038480a6acc57b6b04802fa876e0b602231e9846944dd1b4437e8c1205f"), "8.1.3-linux_arm64": ("node-v8.1.3-linux-arm64.tar.xz", "node-v8.1.3-linux-arm64", "cebc2edd89f20613a530509a2435ecc42757ce16032559ef174ebe84875a1536"), "8.1.3-linux_amd64": ("node-v8.1.3-linux-x64.tar.xz", "node-v8.1.3-linux-x64", "d41dc375ea7e33fadf0fb1bf89d9dfd222a2fb85633fba3d2cf48ac03522ba71"), "8.1.3-windows_amd64": ("node-v8.1.3-win-x64.zip", "node-v8.1.3-win-x64", "be582920c723124ebad48c968f539ef66b1f628d8b6f2338dc68a32f95104856"), "8.1.4-darwin_amd64": ("node-v8.1.4-darwin-x64.tar.gz", "node-v8.1.4-darwin-x64", "a24858a10dd4ca8ad55fd61a7472b4fe9140eb3fa347c41717360c3f29438748"), "8.1.4-linux_arm64": ("node-v8.1.4-linux-arm64.tar.xz", "node-v8.1.4-linux-arm64", "3553c617f594286fea7052678d04aec9e167adddf702b70431d88ce42573c339"), "8.1.4-linux_amd64": ("node-v8.1.4-linux-x64.tar.xz", "node-v8.1.4-linux-x64", "d82fe7ef7e0f8ca1c343f00e3e490996553507ec7d42034f5df034cc7908caaf"), "8.1.4-windows_amd64": ("node-v8.1.4-win-x64.zip", "node-v8.1.4-win-x64", "cc3689ffefc738f6256aab1713343c3c64c24ec997600c0a48243fb26f5e0bce"), "8.2.0-darwin_amd64": ("node-v8.2.0-darwin-x64.tar.gz", "node-v8.2.0-darwin-x64", "da5cca37ae0afdbff3a269bb3dc71ff0d86e282920286f71ae5eb6757cfa5356"), "8.2.0-linux_arm64": ("node-v8.2.0-linux-arm64.tar.xz", "node-v8.2.0-linux-arm64", "3298ae4ae67c4ad714bed23383fd08db5711b164a077a25fb6b282533e65cf77"), "8.2.0-linux_amd64": ("node-v8.2.0-linux-x64.tar.xz", "node-v8.2.0-linux-x64", "e8ceaac3ee4385d53bcebc552a7a6b545b09b9652f5ca1b254aae698fd9a25f9"), "8.2.0-windows_amd64": ("node-v8.2.0-win-x64.zip", "node-v8.2.0-win-x64", "6bc3cc580f0e8190e6a03d6a5967c861c29d6a6eb50f995b3afb7d60b8cee4e1"), "8.2.1-darwin_amd64": ("node-v8.2.1-darwin-x64.tar.gz", "node-v8.2.1-darwin-x64", "32d0923c147470d57f18f055014f5a9fe8a3919406010a2e80ba85952d3c9923"), "8.2.1-linux_arm64": ("node-v8.2.1-linux-arm64.tar.xz", "node-v8.2.1-linux-arm64", "9ed01737f37d410067beeb42066e51f6d0385677c7d0daeeaf2e32cb2aca854a"), "8.2.1-linux_amd64": ("node-v8.2.1-linux-x64.tar.xz", "node-v8.2.1-linux-x64", "abcddeb95cc4465953b1edb0922d20e9b0b3de83688fc8150b863117032a978a"), "8.2.1-windows_amd64": ("node-v8.2.1-win-x64.zip", "node-v8.2.1-win-x64", "37e84e54c67e3d1e52d657c04835b211c94631a0b358f4e7dc351618fdb6c083"), "8.3.0-darwin_amd64": ("node-v8.3.0-darwin-x64.tar.gz", "node-v8.3.0-darwin-x64", "a627354982a514e77e5c37ed5952edc81a7dd9c4f661fd919f192c21ae548654"), "8.3.0-linux_arm64": ("node-v8.3.0-linux-arm64.tar.xz", "node-v8.3.0-linux-arm64", "9e0dab4913585a1b8117bda03c4b5581d9140aec67bb4be0e0b6a4999b41b4ab"), "8.3.0-linux_amd64": ("node-v8.3.0-linux-x64.tar.xz", "node-v8.3.0-linux-x64", "ae377995c6e1af8e2a60c4a929f77562ebed9a2c6897cbd311a2c331f76b4e0f"), "8.3.0-windows_amd64": ("node-v8.3.0-win-x64.zip", "node-v8.3.0-win-x64", "e762fa218465e5aa0952336eee2c3e42e5b48390b36838ca7b6a243812e0b7e5"), "8.4.0-darwin_amd64": ("node-v8.4.0-darwin-x64.tar.gz", "node-v8.4.0-darwin-x64", "cc10ffbd11586bd27a7cc5e6e2d03fd3e0b341368387a03ee9a0117a0288599d"), "8.4.0-linux_arm64": ("node-v8.4.0-linux-arm64.tar.xz", "node-v8.4.0-linux-arm64", "0a811bbe4905fc879f3cbfc976e5a37cca05bbd609774abe4332b29fea75f073"), "8.4.0-linux_amd64": ("node-v8.4.0-linux-x64.tar.xz", "node-v8.4.0-linux-x64", "7fd86abad06f96cb2f889c2a0e25686a3de3e9a078ad946ded91ee4f28d8218a"), "8.4.0-windows_amd64": ("node-v8.4.0-win-x64.zip", "node-v8.4.0-win-x64", "0f60c99479f74d75c7239795c90698826ba8252019d4c23e82ed0d72ceb8974f"), "8.5.0-darwin_amd64": ("node-v8.5.0-darwin-x64.tar.gz", "node-v8.5.0-darwin-x64", "0c8d4c4d90f858a19a29fe1ae7f42b2b7f1a4d3caaa25bea2e08479c00ebbd5f"), "8.5.0-linux_arm64": ("node-v8.5.0-linux-arm64.tar.xz", "node-v8.5.0-linux-arm64", "e0decdebe73dba516d6c72401e337cee6277c6e00f817b0bf1c592360adfd4e6"), "8.5.0-linux_amd64": ("node-v8.5.0-linux-x64.tar.xz", "node-v8.5.0-linux-x64", "a9651fcc6259b4a944ebb72e6dd116602c7b26ddf939599b060d1d3e6ead8c36"), "8.5.0-windows_amd64": ("node-v8.5.0-win-x64.zip", "node-v8.5.0-win-x64", "c385d162c15a7a85d42755ee8c78c1c73bd251e2f7cbf82e5e20c824564aa9df"), "8.6.0-darwin_amd64": ("node-v8.6.0-darwin-x64.tar.gz", "node-v8.6.0-darwin-x64", "2c95f3194a92e8b37aab8895fbaeb1f5fabef3494600ef78a7b7e078dba9a7c9"), "8.6.0-linux_arm64": ("node-v8.6.0-linux-arm64.tar.xz", "node-v8.6.0-linux-arm64", "6848567ab32d04694120e18c20ef47d0f4163229634f236e4bdbb8d135f3204e"), "8.6.0-linux_amd64": ("node-v8.6.0-linux-x64.tar.xz", "node-v8.6.0-linux-x64", "e6f52c3ed7e2cc34ebddbc563434fdf043feb449a60f028101eb45227aec3444"), "8.6.0-windows_amd64": ("node-v8.6.0-win-x64.zip", "node-v8.6.0-win-x64", "08e9b29c47567517ca95ca01d5cdb255279be5463952f92da5c372a99d620b23"), "8.7.0-darwin_amd64": ("node-v8.7.0-darwin-x64.tar.gz", "node-v8.7.0-darwin-x64", "5e59798c1deafd671a35ef4dcdb9b97ce98f9255a056832dc98d454613e9ea08"), "8.7.0-linux_arm64": ("node-v8.7.0-linux-arm64.tar.xz", "node-v8.7.0-linux-arm64", "5a1a1907fbb6d90667ce70ad42602534f6cc6eda873d1c50a3259349aee73418"), "8.7.0-linux_amd64": ("node-v8.7.0-linux-x64.tar.xz", "node-v8.7.0-linux-x64", "9d6f649576cac74ef0b6634af8265156370cf8fdf3676f03e867347d3207675d"), "8.7.0-windows_amd64": ("node-v8.7.0-win-x64.zip", "node-v8.7.0-win-x64", "e95be435674e82ea7133c3268cb70044eabde2d0aef28b2a3df5c7d8d23cadcc"), "8.8.0-darwin_amd64": ("node-v8.8.0-darwin-x64.tar.gz", "node-v8.8.0-darwin-x64", "69a37e240fac48289a2a5bb75ab96091f8d6457eeaf23c0a5125250abe418176"), "8.8.0-linux_arm64": ("node-v8.8.0-linux-arm64.tar.xz", "node-v8.8.0-linux-arm64", "454617ff94882d9a81dca0840065fb5a928ff68e8e8efe7c1748d996ab757b2e"), "8.8.0-linux_amd64": ("node-v8.8.0-linux-x64.tar.xz", "node-v8.8.0-linux-x64", "4304c297f41085ac1f7a6a8e68496d9fd5aa3b92590e7c3c6015a23939767e72"), "8.8.0-windows_amd64": ("node-v8.8.0-win-x64.zip", "node-v8.8.0-win-x64", "a7a1fd2c5f5c967d7df70fdec1a8b2d2d2b1b411fcdd4f23bcf8c9c837a7c3cb"), "8.8.1-darwin_amd64": ("node-v8.8.1-darwin-x64.tar.gz", "node-v8.8.1-darwin-x64", "bf208e29418fb3efc836d3d32b62b9162f0f0b36a0665abc0990f4e292cfc84b"), "8.8.1-linux_arm64": ("node-v8.8.1-linux-arm64.tar.xz", "node-v8.8.1-linux-arm64", "ea8ad0286a31e7519e979fcf99e503845a95da640cd140be5cff418a68fa6263"), "8.8.1-linux_amd64": ("node-v8.8.1-linux-x64.tar.xz", "node-v8.8.1-linux-x64", "004bc95267ef5d5b928f560582f681a679bada2201bf221735a02f4956f67b09"), "8.8.1-windows_amd64": ("node-v8.8.1-win-x64.zip", "node-v8.8.1-win-x64", "a7e60a1a5f46ef309cbe74e423c17e69dd0a573f0c92c9e325caade3388d192a"), "8.9.0-darwin_amd64": ("node-v8.9.0-darwin-x64.tar.gz", "node-v8.9.0-darwin-x64", "aaf165348bc6d20012b048a88a8f3a35cba6799496e8f4c1246d85c524a84dbc"), "8.9.0-linux_arm64": ("node-v8.9.0-linux-arm64.tar.xz", "node-v8.9.0-linux-arm64", "30cb00ac1cf6b466b1f27e7ce41363a67a66dbb64227c2dc5e33d221b09fc579"), "8.9.0-linux_amd64": ("node-v8.9.0-linux-x64.tar.xz", "node-v8.9.0-linux-x64", "e92b91fa473f9ad805a1241907b6f1bd3f8ceac8426a8b4cb05428e62e243bdd"), "8.9.0-windows_amd64": ("node-v8.9.0-win-x64.zip", "node-v8.9.0-win-x64", "dd971e43ff003213b0be31c1a8ce3421f72e0db2a703bc254ac685be4f7f609e"), "8.9.1-darwin_amd64": ("node-v8.9.1-darwin-x64.tar.gz", "node-v8.9.1-darwin-x64", "05c992a6621d28d564b92bf3051a5dc0adf83839237c0d4653a8cdb8a1c73b94"), "8.9.1-linux_arm64": ("node-v8.9.1-linux-arm64.tar.xz", "node-v8.9.1-linux-arm64", "f774660980dcf931bf29847a5f26317823a063fa4a56f85f37c3222d77cce7c1"), "8.9.1-linux_amd64": ("node-v8.9.1-linux-x64.tar.xz", "node-v8.9.1-linux-x64", "8be82805f7c1ab3e64d4569fb9a90ded2de78dd27cadbb91bad1bf975dae1e2d"), "8.9.1-windows_amd64": ("node-v8.9.1-win-x64.zip", "node-v8.9.1-win-x64", "db89c6e041da359561fbe7da075bb4f9881a0f7d3e98c203e83732cfb283fa4a"), "8.9.2-darwin_amd64": ("node-v8.9.2-darwin-x64.tar.gz", "node-v8.9.2-darwin-x64", "ba03ae4c0ebd33e8661b5b241211ddb9f7e3b5b959d8cbd68f5941cb1ed5784d"), "8.9.2-linux_arm64": ("node-v8.9.2-linux-arm64.tar.xz", "node-v8.9.2-linux-arm64", "cc222b4f910ff27ff66ccc96d5c7e2117942bcd161ec253d83cf430146b79bdf"), "8.9.2-linux_amd64": ("node-v8.9.2-linux-x64.tar.xz", "node-v8.9.2-linux-x64", "d4065724e7f5f11e999f78de50fb0faac74341799cb0c0dafcbe87e0ecb0be86"), "8.9.2-windows_amd64": ("node-v8.9.2-win-x64.zip", "node-v8.9.2-win-x64", "2afa8b899c0dddea50dcf5dda66ae7b0ca32326dbf66c52f947c082e7c95d090"), "8.9.3-darwin_amd64": ("node-v8.9.3-darwin-x64.tar.gz", "node-v8.9.3-darwin-x64", "fa7962f25db420a374e9e60d8a410188bd690a2f0ce8d403aa9b09d9b7ae8c1f"), "8.9.3-linux_arm64": ("node-v8.9.3-linux-arm64.tar.xz", "node-v8.9.3-linux-arm64", "8860678ad0c24059380af254574e5a12371a2d5c92ca5e1ac7267314af7df04f"), "8.9.3-linux_amd64": ("node-v8.9.3-linux-x64.tar.xz", "node-v8.9.3-linux-x64", "86f3aa593315f0503d069e3f4805019583ab8d86c0244a83c795d1942e3f99b7"), "8.9.3-windows_amd64": ("node-v8.9.3-win-x64.zip", "node-v8.9.3-win-x64", "17dee0c06d088269123a27db3905a39a17a51cc0ea65435ae942c718f0f94403"), "8.9.4-darwin_amd64": ("node-v8.9.4-darwin-x64.tar.gz", "node-v8.9.4-darwin-x64", "ca50f7d2035eb805306e303b644bb1cde170ce2615e0a2c6e95fb80881c48c24"), "8.9.4-linux_arm64": ("node-v8.9.4-linux-arm64.tar.xz", "node-v8.9.4-linux-arm64", "7c0369a5dbc98d0989c208ca3ee1b6db4cba576343014fdbf7d36fd2659f7089"), "8.9.4-linux_amd64": ("node-v8.9.4-linux-x64.tar.xz", "node-v8.9.4-linux-x64", "68b94aac38cd5d87ab79c5b38306e34a20575f31a3ea788d117c20fffcca3370"), "8.9.4-windows_amd64": ("node-v8.9.4-win-x64.zip", "node-v8.9.4-win-x64", "48946e99ac4484e071df25741d2300f3a656f476c5ff3f8116a4746c07ebe3b7"), "8.10.0-darwin_amd64": ("node-v8.10.0-darwin-x64.tar.gz", "node-v8.10.0-darwin-x64", "7d77bd35bc781f02ba7383779da30bd529f21849b86f14d87e097497671b0271"), "8.10.0-linux_arm64": ("node-v8.10.0-linux-arm64.tar.xz", "node-v8.10.0-linux-arm64", "cbec410109664f75d3c988a43483576fc56f745e05e3884891df9c509fbb1b12"), "8.10.0-linux_amd64": ("node-v8.10.0-linux-x64.tar.xz", "node-v8.10.0-linux-x64", "92220638d661a43bd0fee2bf478cb283ead6524f231aabccf14c549ebc2bc338"), "8.10.0-windows_amd64": ("node-v8.10.0-win-x64.zip", "node-v8.10.0-win-x64", "936ada36cb6f09a5565571e15eb8006e45c5a513529c19e21d070acf0e50321b"), "8.11.0-darwin_amd64": ("node-v8.11.0-darwin-x64.tar.gz", "node-v8.11.0-darwin-x64", "408323335b8c691d75397c76ddd7b00490852652c78c813c586ba7eccc5c382b"), "8.11.0-linux_arm64": ("node-v8.11.0-linux-arm64.tar.xz", "node-v8.11.0-linux-arm64", "a28f599a14ca9ef4062fa1e605b69cd046f81d3fc9a7d6dde1856fb593004b3a"), "8.11.0-linux_amd64": ("node-v8.11.0-linux-x64.tar.xz", "node-v8.11.0-linux-x64", "180ef8c2a39c1696b9a05832883ed981ba11475ffa44ca77781a8d1c1954f944"), "8.11.0-windows_amd64": ("node-v8.11.0-win-x64.zip", "node-v8.11.0-win-x64", "55b9c8d48b59569117a63fdb26e1de05e792c37f563feb7d44b4cd59be96aff8"), "8.11.1-darwin_amd64": ("node-v8.11.1-darwin-x64.tar.gz", "node-v8.11.1-darwin-x64", "5c7b05899ff56910a2b8180f139d48612f349ac2c5d20f08dbbeffbed9e3a089"), "8.11.1-linux_arm64": ("node-v8.11.1-linux-arm64.tar.xz", "node-v8.11.1-linux-arm64", "ff518f33751baa8ea4f18853d446357c2edecd930a1526ac9b2eaa79baddc1bf"), "8.11.1-linux_amd64": ("node-v8.11.1-linux-x64.tar.xz", "node-v8.11.1-linux-x64", "6617e245fa0f7fbe0e373e71d543fea878315324ab31dc64b4eba10e42d04c11"), "8.11.1-windows_amd64": ("node-v8.11.1-win-x64.zip", "node-v8.11.1-win-x64", "7d49b59c2b5d73a14c138e8a215d558a64a5241cd5035d9824f608e7bba097b1"), "8.11.2-darwin_amd64": ("node-v8.11.2-darwin-x64.tar.gz", "node-v8.11.2-darwin-x64", "6bd619ab577a1256531e50e31924d99a094eb920de8b5bd060a056a2608282b9"), "8.11.2-linux_arm64": ("node-v8.11.2-linux-arm64.tar.xz", "node-v8.11.2-linux-arm64", "c8e9833402277c1a5a31b41cc31c9cedad68ba87c2ef78aed6a3ced81af9da7f"), "8.11.2-linux_amd64": ("node-v8.11.2-linux-x64.tar.xz", "node-v8.11.2-linux-x64", "213599127d24496cbf1cbb2a7c51060a3506d6b11132c59bb7f9f8a0edd210a7"), "8.11.2-windows_amd64": ("node-v8.11.2-win-x64.zip", "node-v8.11.2-win-x64", "bbac1f56e8001a093acb2942f8a43c3bf22aec58216f446b7bf01f6f822dfe3f"), "8.11.3-darwin_amd64": ("node-v8.11.3-darwin-x64.tar.gz", "node-v8.11.3-darwin-x64", "77fa26b4c2fc34bdf5a5dd1cd39c93b12087fbd25148c6f04bf409698ee48b86"), "8.11.3-linux_arm64": ("node-v8.11.3-linux-arm64.tar.xz", "node-v8.11.3-linux-arm64", "b8fddec18f20533929a07bc1d38ae63b1999a0252740094f0974b2cbea76eaa4"), "8.11.3-linux_amd64": ("node-v8.11.3-linux-x64.tar.xz", "node-v8.11.3-linux-x64", "08e2fcfea66746bd966ea3a89f26851f1238d96f86c33eaf6274f67fce58421a"), "8.11.3-windows_amd64": ("node-v8.11.3-win-x64.zip", "node-v8.11.3-win-x64", "91b779def1b21dcd1def7fc9671a869a1e2f989952e76fdc08a5d73570075f31"), "8.11.4-darwin_amd64": ("node-v8.11.4-darwin-x64.tar.gz", "node-v8.11.4-darwin-x64", "aa1de83b388581d0d9ec3276f4526ee67e17e0f1bc0deb5133f960ce5dc9f1ef"), "8.11.4-linux_arm64": ("node-v8.11.4-linux-arm64.tar.xz", "node-v8.11.4-linux-arm64", "46e90dd916ddbf88c866de300c1b2a26f9216b19abd92b29e89439f62fb6fc1c"), "8.11.4-linux_amd64": ("node-v8.11.4-linux-x64.tar.xz", "node-v8.11.4-linux-x64", "85ea7cbb5bf624e130585bfe3946e99c85ce5cb84c2aee474038bdbe912f908c"), "8.11.4-windows_amd64": ("node-v8.11.4-win-x64.zip", "node-v8.11.4-win-x64", "72a21e2fcd3703994f57cf707b92e7f939df99c3e0298102e7436849e4948536"), "8.12.0-darwin_amd64": ("node-v8.12.0-darwin-x64.tar.gz", "node-v8.12.0-darwin-x64", "ca131b84dfcf2b6f653a6521d31f7a108ad7d83f4d7e781945b2eca8172064aa"), "8.12.0-linux_arm64": ("node-v8.12.0-linux-arm64.tar.xz", "node-v8.12.0-linux-arm64", "0fbdcfd8cf0cb5e8f5beff84ba091fd47126ba44c628e3a351501419b211aa1a"), "8.12.0-linux_amd64": ("node-v8.12.0-linux-x64.tar.xz", "node-v8.12.0-linux-x64", "29a20479cd1e3a03396a4e74a1784ccdd1cf2f96928b56f6ffa4c8dae40c88f2"), "8.12.0-windows_amd64": ("node-v8.12.0-win-x64.zip", "node-v8.12.0-win-x64", "9b22c9b23148b61ea0052826b3ac0255b8a3a542c125272b8f014f15bf11b091"), "8.13.0-darwin_amd64": ("node-v8.13.0-darwin-x64.tar.gz", "node-v8.13.0-darwin-x64", "f6261c7a09a2c8bd77a8760a0e110410f508e5641ca132511b4883600f2d65f0"), "8.13.0-linux_arm64": ("node-v8.13.0-linux-arm64.tar.xz", "node-v8.13.0-linux-arm64", "e8e0daab515dfd0c2323b8e1274475f61c8ca1cf582dcc254583cbf8593425e3"), "8.13.0-linux_amd64": ("node-v8.13.0-linux-x64.tar.xz", "node-v8.13.0-linux-x64", "8fa1227b28113e25a8960d7fa6779a8c18bf20cfaafc9c5d0e46a3ee88373669"), "8.13.0-windows_amd64": ("node-v8.13.0-win-x64.zip", "node-v8.13.0-win-x64", "46293121d207350bd8d334efb67303337933c4dac886a840f88ff6059bff9443"), "8.14.0-darwin_amd64": ("node-v8.14.0-darwin-x64.tar.gz", "node-v8.14.0-darwin-x64", "1e9bb233bb3c3b01826f9d7e1b3ecf1047840ce96a3a7d1921ddcb569c467329"), "8.14.0-linux_arm64": ("node-v8.14.0-linux-arm64.tar.xz", "node-v8.14.0-linux-arm64", "fbcef89a60f1f40699589850f861fc84354a6f240610e2726c3743455dd82525"), "8.14.0-linux_amd64": ("node-v8.14.0-linux-x64.tar.xz", "node-v8.14.0-linux-x64", "a56d1af4d7da81504338b09809cf10b3144808d47d4117b9bd9a5a4ec4d5d9b9"), "8.14.0-windows_amd64": ("node-v8.14.0-win-x64.zip", "node-v8.14.0-win-x64", "d0be7c96a25c5d2b69f8a3510e9f4414643d5fe361b4509d455249e57f9a50af"), "8.14.1-darwin_amd64": ("node-v8.14.1-darwin-x64.tar.gz", "node-v8.14.1-darwin-x64", "d180a9b70de569e4c3d10c0c4a0af74e40dbca3e845df43ce1ec522bb4252eda"), "8.14.1-linux_arm64": ("node-v8.14.1-linux-arm64.tar.xz", "node-v8.14.1-linux-arm64", "488a66288052c6497133179e4546efb7fbaf105e432cd0d9aab3471901ab5e58"), "8.14.1-linux_amd64": ("node-v8.14.1-linux-x64.tar.xz", "node-v8.14.1-linux-x64", "1fec92a0110f692c68f7bdbec41b340c474bd77063323520786a7b9b00473daf"), "8.14.1-windows_amd64": ("node-v8.14.1-win-x64.zip", "node-v8.14.1-win-x64", "41793b873f98ceed632b24120ef44b2df89625f3dfa90eb9298dad698249167c"), "8.15.0-darwin_amd64": ("node-v8.15.0-darwin-x64.tar.gz", "node-v8.15.0-darwin-x64", "a393971136408f837fbc0f7d71a63754f91cfb1851d48bd612d8219eb61956f1"), "8.15.0-linux_arm64": ("node-v8.15.0-linux-arm64.tar.xz", "node-v8.15.0-linux-arm64", "5985c6dce65b1161ff41253da5aa4e64b8f10eb010a5d2712ea9b659f70179d7"), "8.15.0-linux_amd64": ("node-v8.15.0-linux-x64.tar.xz", "node-v8.15.0-linux-x64", "c1f0c5facdba78b5dec5136aec40dcb00b5c7cf404d9236a99c955994f91d969"), "8.15.0-windows_amd64": ("node-v8.15.0-win-x64.zip", "node-v8.15.0-win-x64", "13d8eab29c191bd16c69a70a556178a5adc988b243a036aaf3d5158861b60d8e"), "8.15.1-darwin_amd64": ("node-v8.15.1-darwin-x64.tar.gz", "node-v8.15.1-darwin-x64", "f3da0b4397150226c008a86c99d77dbb835dc62219d863654913a78332ab19a5"), "8.15.1-linux_arm64": ("node-v8.15.1-linux-arm64.tar.xz", "node-v8.15.1-linux-arm64", "69e000d78342c3d39583922c57947a906ad723789d6294951deb10cbe8709605"), "8.15.1-linux_amd64": ("node-v8.15.1-linux-x64.tar.xz", "node-v8.15.1-linux-x64", "5643b54c583eebaa40c1623b16cba4e3955ff5dfdd44036f6bafd761160c993d"), "8.15.1-windows_amd64": ("node-v8.15.1-win-x64.zip", "node-v8.15.1-win-x64", "f636fa578dc079bacc6c4bef13284ddb893c99f7640b96701c2690bd9c1431f5"), "8.16.0-darwin_amd64": ("node-v8.16.0-darwin-x64.tar.gz", "node-v8.16.0-darwin-x64", "a6710b8af0862fab0ccdba0549dbcdad76b5f99070652e64f6a85158038fc9a6"), "8.16.0-linux_arm64": ("node-v8.16.0-linux-arm64.tar.xz", "node-v8.16.0-linux-arm64", "4583d1cb44ff8b51cbf0402a78f2fe086c13a6c900c20c8be14e3b0e28e34335"), "8.16.0-linux_amd64": ("node-v8.16.0-linux-x64.tar.xz", "node-v8.16.0-linux-x64", "e538ffaaf2f808c084e70f1a1d2ff5559cff892cfd56e0bb67d00b0a95fc3a7a"), "8.16.0-windows_amd64": ("node-v8.16.0-win-x64.zip", "node-v8.16.0-win-x64", "d6baa929bacb78b347b29ebb0263220ea649ce82f3cdfd3f0b41ac725d1bbba5"), "8.16.1-darwin_amd64": ("node-v8.16.1-darwin-x64.tar.gz", "node-v8.16.1-darwin-x64", "ef1cb93f03bca4b9528e5d3226bdf8efa135e4b12285eee1e4760da06bac631a"), "8.16.1-linux_arm64": ("node-v8.16.1-linux-arm64.tar.xz", "node-v8.16.1-linux-arm64", "0c61c6ae8a70d96ab19848a09b2010d29b806f2dd79177da22c743fd5e352a98"), "8.16.1-linux_amd64": ("node-v8.16.1-linux-x64.tar.xz", "node-v8.16.1-linux-x64", "22a2580569c787ea83960bda0eae5dfaf1fe79382a52ad5fa5cd3accb93a1818"), "8.16.1-windows_amd64": ("node-v8.16.1-win-x64.zip", "node-v8.16.1-win-x64", "396dc41740bca0355d11865780e2af8e88eb17581cd2c445ccaf29b862901ab8"), "8.16.2-darwin_amd64": ("node-v8.16.2-darwin-x64.tar.gz", "node-v8.16.2-darwin-x64", "359331120e83f0707219398fc543b05eee9476446ecce549c20c4d9c7c103d29"), "8.16.2-linux_arm64": ("node-v8.16.2-linux-arm64.tar.xz", "node-v8.16.2-linux-arm64", "5afe366affb05136d25e99ec97a7a1ee1b690cc26df43567af0509f36b45e682"), "8.16.2-linux_amd64": ("node-v8.16.2-linux-x64.tar.xz", "node-v8.16.2-linux-x64", "88617a293f5828cc94ee99c94a43fbea12b989e34fe643fc14885a14748a8da6"), "8.16.2-windows_amd64": ("node-v8.16.2-win-x64.zip", "node-v8.16.2-win-x64", "98c615221500434155a8a5aff5fe96cd000400f3e76858ca97e6624f1d15eb73"), "8.17.0-darwin_amd64": ("node-v8.17.0-darwin-x64.tar.gz", "node-v8.17.0-darwin-x64", "3117430fc93e9865e4a1842616cc98767b5d6987fd9d727c8be4068714570e16"), "8.17.0-linux_arm64": ("node-v8.17.0-linux-arm64.tar.xz", "node-v8.17.0-linux-arm64", "8318d1ee0265d84025ecbea76aaecd732974a6f4ac8492ddd84231cee77ba948"), "8.17.0-linux_amd64": ("node-v8.17.0-linux-x64.tar.xz", "node-v8.17.0-linux-x64", "b7f6dd77fb173c8c7c30d61d0702eefc236bba74398538aa77bfa2bb47bddce6"), "8.17.0-windows_amd64": ("node-v8.17.0-win-x64.zip", "node-v8.17.0-win-x64", "e95a63e81b27e78872c0efb9dd5809403014dbf9896035cc17adf51a350f88fa"), "9.0.0-darwin_amd64": ("node-v9.0.0-darwin-x64.tar.gz", "node-v9.0.0-darwin-x64", "40fe905e492deadbf84c46baba413294e516fa844ed8e68adb4117f8acabe9a9"), "9.0.0-linux_arm64": ("node-v9.0.0-linux-arm64.tar.xz", "node-v9.0.0-linux-arm64", "0250e13705259dcf736ac4216833c2ade459e3ade94d89af68bd98ded1783cb6"), "9.0.0-linux_amd64": ("node-v9.0.0-linux-x64.tar.xz", "node-v9.0.0-linux-x64", "8313d2f6d69dbea4cb860803a156f093041cbe352a843c06f9f05cab1f30e9cc"), "9.0.0-windows_amd64": ("node-v9.0.0-win-x64.zip", "node-v9.0.0-win-x64", "d25901007e7c48da3af162bc1917d5bdd78c7e3b9cb64f16f90c38b59ef7b412"), "9.1.0-darwin_amd64": ("node-v9.1.0-darwin-x64.tar.gz", "node-v9.1.0-darwin-x64", "8e180de9b3f6a79f09a391c89de54920bbf5375337d3e13c5bfcbce85af711ab"), "9.1.0-linux_arm64": ("node-v9.1.0-linux-arm64.tar.xz", "node-v9.1.0-linux-arm64", "37d329fa06b22e30243c503b64d9666d56abb6c0ce903251d4b43e7ad0833fb3"), "9.1.0-linux_amd64": ("node-v9.1.0-linux-x64.tar.xz", "node-v9.1.0-linux-x64", "b796ed115c97acd23211c294129b0a834ff3a6a0f583111443b89d2b24e0d4d9"), "9.1.0-windows_amd64": ("node-v9.1.0-win-x64.zip", "node-v9.1.0-win-x64", "f2e76f536ff4fedd9884684f0b1979e04d0fd1c2a65d7d1a5a013de885dd07b3"), "9.2.0-darwin_amd64": ("node-v9.2.0-darwin-x64.tar.gz", "node-v9.2.0-darwin-x64", "42f78982b8614f099bc70819db40074ff7c1c49d4bac71eca5ffe4120452f289"), "9.2.0-linux_arm64": ("node-v9.2.0-linux-arm64.tar.xz", "node-v9.2.0-linux-arm64", "1b5c44160b7bfc9e5d63697d63c82330ae3e6094ab48449bd958ebe0baef73f0"), "9.2.0-linux_amd64": ("node-v9.2.0-linux-x64.tar.xz", "node-v9.2.0-linux-x64", "ded9cef0243bbe8ac5a417be0c6471bed6ed82367714ccb23f79a5be0ba2bd5d"), "9.2.0-windows_amd64": ("node-v9.2.0-win-x64.zip", "node-v9.2.0-win-x64", "5e7feb536547c715155d772f90857239b37897c1a1a664809fd84a7aeae1a724"), "9.2.1-darwin_amd64": ("node-v9.2.1-darwin-x64.tar.gz", "node-v9.2.1-darwin-x64", "4263f3da0280e2decd3a2ab97672e6f718acdf704664a3f1251e4ea267ccc971"), "9.2.1-linux_arm64": ("node-v9.2.1-linux-arm64.tar.xz", "node-v9.2.1-linux-arm64", "09d362e2ed5f4af5e5dc2253bb4523d7bcb92135bcc11d9eb89ad8336229b756"), "9.2.1-linux_amd64": ("node-v9.2.1-linux-x64.tar.xz", "node-v9.2.1-linux-x64", "548d2959939235ca56c98740f64b64058e43d1499d760603b7941b7c37ad10fe"), "9.2.1-windows_amd64": ("node-v9.2.1-win-x64.zip", "node-v9.2.1-win-x64", "7b48ef7c718fe5748844f93101f9276a88ae1cf3c4c228f85306a6a266471b5b"), "9.3.0-darwin_amd64": ("node-v9.3.0-darwin-x64.tar.gz", "node-v9.3.0-darwin-x64", "0539601e67e9be6995d4ba4abe565a748e25699060631369f59166d5de43d21a"), "9.3.0-linux_arm64": ("node-v9.3.0-linux-arm64.tar.xz", "node-v9.3.0-linux-arm64", "11300e878220962adade33238dd6e55928ad6d1362e0daa1f12e272137e68c0b"), "9.3.0-linux_amd64": ("node-v9.3.0-linux-x64.tar.xz", "node-v9.3.0-linux-x64", "0424dd6fa059fc32e0b73f460cb587b92b13c7b0af56331bbdc53a52e43f24ea"), "9.3.0-windows_amd64": ("node-v9.3.0-win-x64.zip", "node-v9.3.0-win-x64", "53bceda79c8d5dd8a185221a5ea2fc8f2b24ed7e0c9c91d18f6016b3624ff096"), "9.4.0-darwin_amd64": ("node-v9.4.0-darwin-x64.tar.gz", "node-v9.4.0-darwin-x64", "fa271c6012d517851603829af2131b92dc7b03d6f167dcd197cb83468a4971e8"), "9.4.0-linux_arm64": ("node-v9.4.0-linux-arm64.tar.xz", "node-v9.4.0-linux-arm64", "ceed69e91723cb902fcf70e790d34147a91241509257c77a62327871dfad04fa"), "9.4.0-linux_amd64": ("node-v9.4.0-linux-x64.tar.xz", "node-v9.4.0-linux-x64", "6d331d75a39fc5292dd128ad83f6dd14bbbdcb84ba0dfe793fade833be5de95a"), "9.4.0-windows_amd64": ("node-v9.4.0-win-x64.zip", "node-v9.4.0-win-x64", "89d49d73eb92483af0133c97e57a5b521c523960c130c76727daa3412af7d5d8"), "9.5.0-darwin_amd64": ("node-v9.5.0-darwin-x64.tar.gz", "node-v9.5.0-darwin-x64", "bc5c6eb21a90dbcaf90479838416c90524fe6d47e92c928ef57d7e96a54eb5fe"), "9.5.0-linux_arm64": ("node-v9.5.0-linux-arm64.tar.xz", "node-v9.5.0-linux-arm64", "d6a98a51c032963014f606acc80babb456f3dc4c041534ca565f573a2382b253"), "9.5.0-linux_amd64": ("node-v9.5.0-linux-x64.tar.xz", "node-v9.5.0-linux-x64", "76dd38bb5a16a610894353228ef020653f81209a2e509d38aee78ace4410599e"), "9.5.0-windows_amd64": ("node-v9.5.0-win-x64.zip", "node-v9.5.0-win-x64", "2fd1c3865a34827af6b5d799aee68e011a16a637276cbf71e923c8bedd010ee8"), "9.6.0-darwin_amd64": ("node-v9.6.0-darwin-x64.tar.gz", "node-v9.6.0-darwin-x64", "4f2001075b724791bf652b5432073aaaaec03cb00b17cda054ab0a05126035fe"), "9.6.0-linux_arm64": ("node-v9.6.0-linux-arm64.tar.xz", "node-v9.6.0-linux-arm64", "eb10815b1d21e8f5111b90c15b19050279b44666d08a12f26906271e9f6b02dd"), "9.6.0-linux_amd64": ("node-v9.6.0-linux-x64.tar.xz", "node-v9.6.0-linux-x64", "24b8670c819278135b4b8851d880615dee8458fdb5f5390ed0c88c383377f5d3"), "9.6.0-windows_amd64": ("node-v9.6.0-win-x64.zip", "node-v9.6.0-win-x64", "5f1da1ef6ba776449900c931e7acc3b60e47f3080425bf0e6a1c0c5a07dbd6fd"), "9.6.1-darwin_amd64": ("node-v9.6.1-darwin-x64.tar.gz", "node-v9.6.1-darwin-x64", "de486bc479817df2df1f91468e85e5da228a19101422c0c9a27153c1d0013c6d"), "9.6.1-linux_arm64": ("node-v9.6.1-linux-arm64.tar.xz", "node-v9.6.1-linux-arm64", "6246c85acab2dd92463fa1c456db31a24cd7b50b3fa556c4976c5a91473b8c8f"), "9.6.1-linux_amd64": ("node-v9.6.1-linux-x64.tar.xz", "node-v9.6.1-linux-x64", "d38f1707faccc54fae3cb201c25b02c4a3474d2c409c64f2a1d08925b238f8ad"), "9.6.1-windows_amd64": ("node-v9.6.1-win-x64.zip", "node-v9.6.1-win-x64", "c8176d317945ce6221473d70999ec7e725f1c9a7477e991bd7c729026c46dffb"), "9.7.0-darwin_amd64": ("node-v9.7.0-darwin-x64.tar.gz", "node-v9.7.0-darwin-x64", "9730cf3c4c5e228d4855c3362b63dbe59041202d89ae30d7f5ca42f60f742c5d"), "9.7.0-linux_arm64": ("node-v9.7.0-linux-arm64.tar.xz", "node-v9.7.0-linux-arm64", "18bec2bec5e2496f33b4d9d7f3bea7411cdb5d108f390b5c1949ddeda0e61125"), "9.7.0-linux_amd64": ("node-v9.7.0-linux-x64.tar.xz", "node-v9.7.0-linux-x64", "5c7549ceeebdc7ac5acdcae5fffbeb9585e3b9e2003e70e116d9f19c768f73d1"), "9.7.0-windows_amd64": ("node-v9.7.0-win-x64.zip", "node-v9.7.0-win-x64", "a17796c9c888e88a9a086dc1a22cdd872d8e948fbf1e988a8132fef716990530"), "9.7.1-darwin_amd64": ("node-v9.7.1-darwin-x64.tar.gz", "node-v9.7.1-darwin-x64", "9ee0fa891787865b1eccc63ef56134e7de8bbf67b660a1dde9e309305a1dc3b0"), "9.7.1-linux_arm64": ("node-v9.7.1-linux-arm64.tar.xz", "node-v9.7.1-linux-arm64", "d9143c23f7aa171449229abd456c8a9e07dc1033a1e791132b3387d439e2475d"), "9.7.1-linux_amd64": ("node-v9.7.1-linux-x64.tar.xz", "node-v9.7.1-linux-x64", "33b3ecd0a1de891a4a2f3586f1c6498c95c1ecc15864a6e3f4f7826792850d99"), "9.7.1-windows_amd64": ("node-v9.7.1-win-x64.zip", "node-v9.7.1-win-x64", "8590ff193e645d7f719e25d9519633376c72cfa1b36192031705e0065b7d69b2"), "9.8.0-darwin_amd64": ("node-v9.8.0-darwin-x64.tar.gz", "node-v9.8.0-darwin-x64", "c95326d6d8d01e5d4fbf0ca1b1e4fc0d800d00516f38532cc887e17c78f2af07"), "9.8.0-linux_arm64": ("node-v9.8.0-linux-arm64.tar.xz", "node-v9.8.0-linux-arm64", "f3537d06f010e77739be073003fca0b477efec8a72d503dc5a1d942a19973b07"), "9.8.0-linux_amd64": ("node-v9.8.0-linux-x64.tar.xz", "node-v9.8.0-linux-x64", "9f631739b0a9b96b8760c42869e88592db9c3fda2425202bd8b2d09e6371133a"), "9.8.0-windows_amd64": ("node-v9.8.0-win-x64.zip", "node-v9.8.0-win-x64", "dd3971c126907a033f2bc93fdd29327af3ff5b9d151b3b90eb5db1832fe6df9e"), "9.9.0-darwin_amd64": ("node-v9.9.0-darwin-x64.tar.gz", "node-v9.9.0-darwin-x64", "15e71817fe172119d6f9e0166ab869f12c67bdb7371d27a78b0621c408239692"), "9.9.0-linux_arm64": ("node-v9.9.0-linux-arm64.tar.xz", "node-v9.9.0-linux-arm64", "06feb32656c91c3963270de18d4a7befe52d2d8c0fd78fbbb7792a881ffeec7a"), "9.9.0-linux_amd64": ("node-v9.9.0-linux-x64.tar.xz", "node-v9.9.0-linux-x64", "457151b4e6f27222232742ce44de1df73768a251309dddbfca2b385052ee977f"), "9.9.0-windows_amd64": ("node-v9.9.0-win-x64.zip", "node-v9.9.0-win-x64", "5186747c7cab6ff153e725c42446727e460d54e6c62353d5dc550046f5c05653"), "9.10.0-darwin_amd64": ("node-v9.10.0-darwin-x64.tar.gz", "node-v9.10.0-darwin-x64", "c4b98cc2f3c00b770f24549de112902b56d57be7963a1047cd116b357bc61569"), "9.10.0-linux_arm64": ("node-v9.10.0-linux-arm64.tar.xz", "node-v9.10.0-linux-arm64", "ba1d682aa1d5a12eeb39e7f51e4c67c6122b24482869ca2547c6f094eae90658"), "9.10.0-linux_amd64": ("node-v9.10.0-linux-x64.tar.xz", "node-v9.10.0-linux-x64", "b9bfffc03ef0e2c97d463619911552c7f5b1b8699de07bb913990a8b33800cb9"), "9.10.0-windows_amd64": ("node-v9.10.0-win-x64.zip", "node-v9.10.0-win-x64", "3f159de87fd987e7bf30bbffce722e2e5133c44fc847883053359e9b08d6fa88"), "9.10.1-darwin_amd64": ("node-v9.10.1-darwin-x64.tar.gz", "node-v9.10.1-darwin-x64", "ae2d9dfdd3fdb6a6fe588e5479a768ee502968f6544ac8ad6133cb2e05726793"), "9.10.1-linux_arm64": ("node-v9.10.1-linux-arm64.tar.xz", "node-v9.10.1-linux-arm64", "9b084b30e48a3a145fcc6cb282a1b46145b703c13a5eaee40afc7f9d82ad697b"), "9.10.1-linux_amd64": ("node-v9.10.1-linux-x64.tar.xz", "node-v9.10.1-linux-x64", "fc810056be2a0665d0f67b42d25e1b8442bd885d4893b3256a7cfe676bd973de"), "9.10.1-windows_amd64": ("node-v9.10.1-win-x64.zip", "node-v9.10.1-win-x64", "43bf882dec1550e00a039f77190a3e2a778354577e542563be4b5c205de17df1"), "9.11.0-darwin_amd64": ("node-v9.11.0-darwin-x64.tar.gz", "node-v9.11.0-darwin-x64", "e562cfc01a4d8e62c1d86f59cef4f00439b4ad279c97f95f76a39f4b3530b8e5"), "9.11.0-linux_arm64": ("node-v9.11.0-linux-arm64.tar.xz", "node-v9.11.0-linux-arm64", "8df1dd7a1ec298900cf699a7ee8e5f0f478075d0e4c4fd3fb6e3a4ad3527545c"), "9.11.0-linux_amd64": ("node-v9.11.0-linux-x64.tar.xz", "node-v9.11.0-linux-x64", "a4349420b74804b3404a4eea27341297968f61998b01f6504dbbad603700e944"), "9.11.0-windows_amd64": ("node-v9.11.0-win-x64.zip", "node-v9.11.0-win-x64", "6e7f586ece923fd71e36d5db80b6a6d731a2b156464058cb2304f6c0192637cb"), "9.11.1-darwin_amd64": ("node-v9.11.1-darwin-x64.tar.gz", "node-v9.11.1-darwin-x64", "7b1fb394aa41a62b477e36df16644bd383cc9084808511f6cd318b835a06aac6"), "9.11.1-linux_arm64": ("node-v9.11.1-linux-arm64.tar.xz", "node-v9.11.1-linux-arm64", "dba2de106fbde2013a204ca9fafdfe67c0426b4e63d186f888e59432ad2dbb03"), "9.11.1-linux_amd64": ("node-v9.11.1-linux-x64.tar.xz", "node-v9.11.1-linux-x64", "4d27a95d5c2f1c8ef99118794c9c4903e63963418d3e16ca7576760cff39879b"), "9.11.1-windows_amd64": ("node-v9.11.1-win-x64.zip", "node-v9.11.1-win-x64", "0a3566d57ccb7fed95d18fc6c3bc1552a1b1e4753f9bc6c5d45e04f325e1ee53"), "9.11.2-darwin_amd64": ("node-v9.11.2-darwin-x64.tar.gz", "node-v9.11.2-darwin-x64", "340993096108d1dc0e0b598560d87ec645fc94b0fc83a423c36343f2da45f4b8"), "9.11.2-linux_arm64": ("node-v9.11.2-linux-arm64.tar.xz", "node-v9.11.2-linux-arm64", "9a713a6f4473425b83bf67e13e4b3c9f1f683c996b913f1f6854d208996367b6"), "9.11.2-linux_amd64": ("node-v9.11.2-linux-x64.tar.xz", "node-v9.11.2-linux-x64", "a2e7fe4ee3c4e3f31e00dff241c92c2ed779a9f36735578603d2be966f938a4b"), "9.11.2-windows_amd64": ("node-v9.11.2-win-x64.zip", "node-v9.11.2-win-x64", "051db8f4d3c0503e3082173f16b25e2362de8f9a5e509c403992b2069d826c25"), "10.0.0-darwin_amd64": ("node-v10.0.0-darwin-x64.tar.gz", "node-v10.0.0-darwin-x64", "37447fdb5f5cbcf1307ca1661ed67e6e911e0e988c0cb6d15f92eebb211dce88"), "10.0.0-linux_arm64": ("node-v10.0.0-linux-arm64.tar.xz", "node-v10.0.0-linux-arm64", "18f626a967d72294d969bdf000ca80ef483a8bb75482a2c4d14f5e0141626611"), "10.0.0-linux_amd64": ("node-v10.0.0-linux-x64.tar.xz", "node-v10.0.0-linux-x64", "d57c391daef40e706ca71abeaf9d53271c9d0fdb9cd18a80f6296b04dbaf2d5a"), "10.0.0-windows_amd64": ("node-v10.0.0-win-x64.zip", "node-v10.0.0-win-x64", "a95d88e2c28cbcbadb1fa431ec0b686f196dda00d4a25b0829450dc8f5214ec3"), "10.1.0-darwin_amd64": ("node-v10.1.0-darwin-x64.tar.gz", "node-v10.1.0-darwin-x64", "383ef526e27b92113f8dc0dad406b771f6ecaf9e3fddd4f5357590a3cf543d7b"), "10.1.0-linux_arm64": ("node-v10.1.0-linux-arm64.tar.xz", "node-v10.1.0-linux-arm64", "01e252589cf1ce61d2aaa316895001eb24c90a48b04a0e4896de252d2840ffe9"), "10.1.0-linux_amd64": ("node-v10.1.0-linux-x64.tar.xz", "node-v10.1.0-linux-x64", "cb5860c0d3249330d882fb8c6619c082cf3cda177536d4ed979388dde0034f22"), "10.1.0-windows_amd64": ("node-v10.1.0-win-x64.zip", "node-v10.1.0-win-x64", "8448bbd50731e98a4ed8bb4f3f3964170ff3a26418e9bcb3caf770faa9fb06d7"), "10.2.0-darwin_amd64": ("node-v10.2.0-darwin-x64.tar.gz", "node-v10.2.0-darwin-x64", "35fcc482d07218119ce5fde62620994324f03f8c4426dd680886c6844b62232a"), "10.2.0-linux_arm64": ("node-v10.2.0-linux-arm64.tar.xz", "node-v10.2.0-linux-arm64", "8f970be59a6a11f511a04ae1bd303746f0c5409498e062fb1d263d3c3c1093bd"), "10.2.0-linux_amd64": ("node-v10.2.0-linux-x64.tar.xz", "node-v10.2.0-linux-x64", "a6ef9adc824db795b36f81ad0856adc5c878395c4ce2af20f5ba7b76a1ca9982"), "10.2.0-windows_amd64": ("node-v10.2.0-win-x64.zip", "node-v10.2.0-win-x64", "7d7144d57b1b910d10f51d5445ae4306f10d3d9f45ca08b49e8777472993db51"), "10.2.1-darwin_amd64": ("node-v10.2.1-darwin-x64.tar.gz", "node-v10.2.1-darwin-x64", "6ffa149f67e8bd68d291d62591b6573146a65682affd99eefe2835a9c048d3ef"), "10.2.1-linux_arm64": ("node-v10.2.1-linux-arm64.tar.xz", "node-v10.2.1-linux-arm64", "6899cab91fd01af6b73183d23693120ff0de547601d01822b53647d0f5d934ee"), "10.2.1-linux_amd64": ("node-v10.2.1-linux-x64.tar.xz", "node-v10.2.1-linux-x64", "59ffaba5f54ea6a62ada1013a0cc1741c6e6fa790ab9ab2302a98932e7fb85d5"), "10.2.1-windows_amd64": ("node-v10.2.1-win-x64.zip", "node-v10.2.1-win-x64", "ebe78920d72b7a226a345653f3f718f99dc531add35157d37d229050f3685705"), "10.3.0-darwin_amd64": ("node-v10.3.0-darwin-x64.tar.gz", "node-v10.3.0-darwin-x64", "0bb5b7e3fe8cccda2abda958d1eb0408f1518a8b0cb58b75ade5d507cd5d6053"), "10.3.0-linux_arm64": ("node-v10.3.0-linux-arm64.tar.xz", "node-v10.3.0-linux-arm64", "6811b7b9807135902990508143605c0c758d07f7726092ed1b2e27cc60111bd0"), "10.3.0-linux_amd64": ("node-v10.3.0-linux-x64.tar.xz", "node-v10.3.0-linux-x64", "eb3c3e2585494699716ad3197c8eedf4003d3f110829b30c5a0dc34414c47423"), "10.3.0-windows_amd64": ("node-v10.3.0-win-x64.zip", "node-v10.3.0-win-x64", "65d586afb087406a2800d8e51f664c88b26d510f077b85a3b177a1bb79f73677"), "10.4.0-darwin_amd64": ("node-v10.4.0-darwin-x64.tar.gz", "node-v10.4.0-darwin-x64", "82b27983c990a6860e8d729e0b15acf9643ffca0eff282a926268849dfd2c3d2"), "10.4.0-linux_arm64": ("node-v10.4.0-linux-arm64.tar.xz", "node-v10.4.0-linux-arm64", "18d01e0937cdd05386f59f792613aac7b6614a37312ede0c299bd589584976e9"), "10.4.0-linux_amd64": ("node-v10.4.0-linux-x64.tar.xz", "node-v10.4.0-linux-x64", "ce2232578408f7d6bdc7d8bbb49d3416225fe68c52540ac23f4a6e0294d947f6"), "10.4.0-windows_amd64": ("node-v10.4.0-win-x64.zip", "node-v10.4.0-win-x64", "315fc4099902a71b634fee15e4e160a0780703c59a66e7e4542045f6f2b91451"), "10.4.1-darwin_amd64": ("node-v10.4.1-darwin-x64.tar.gz", "node-v10.4.1-darwin-x64", "c232241c97e1f4659186205d50b44132e62b61cdc517f1fb86905a21d03e9189"), "10.4.1-linux_arm64": ("node-v10.4.1-linux-arm64.tar.xz", "node-v10.4.1-linux-arm64", "c00b75a28eb69e4238c9d560f50da3652395ba7bfa6e325d5a2b0cd0926070f7"), "10.4.1-linux_amd64": ("node-v10.4.1-linux-x64.tar.xz", "node-v10.4.1-linux-x64", "6196daea2b291cdb865b3597e6b819b13068cb2c9dbf27cb150256c557a81082"), "10.4.1-windows_amd64": ("node-v10.4.1-win-x64.zip", "node-v10.4.1-win-x64", "70e0b9f0036f878884fdfc585c1001a439508d1d4e6448c4aced60274a2dc191"), "10.5.0-darwin_amd64": ("node-v10.5.0-darwin-x64.tar.gz", "node-v10.5.0-darwin-x64", "a85bda6ab91da8595e71736944cbd77c61afe05092217defd0fb74d9f77109f0"), "10.5.0-linux_arm64": ("node-v10.5.0-linux-arm64.tar.xz", "node-v10.5.0-linux-arm64", "28e6baa2a4ac5b0f0f5adf85489574038d0a4ca48efe76a4e5831b6b222652ba"), "10.5.0-linux_amd64": ("node-v10.5.0-linux-x64.tar.xz", "node-v10.5.0-linux-x64", "8b12be967f5962a8173dca235e1a6f642ee29dcf5fc27697004af898ffeca187"), "10.5.0-windows_amd64": ("node-v10.5.0-win-x64.zip", "node-v10.5.0-win-x64", "ce2b1f9976de64bcc0a5ce877edee0d29c4db1ebab5a7fd713afffd661e99e08"), "10.6.0-darwin_amd64": ("node-v10.6.0-darwin-x64.tar.gz", "node-v10.6.0-darwin-x64", "537efef0c6fd998502fa10baf82ee21edf513256cc73575991354e19442d0b69"), "10.6.0-linux_arm64": ("node-v10.6.0-linux-arm64.tar.xz", "node-v10.6.0-linux-arm64", "be37aade1c085093e276b5822a05233a1057bcafe77f5b9526dbdf622330c4bb"), "10.6.0-linux_amd64": ("node-v10.6.0-linux-x64.tar.xz", "node-v10.6.0-linux-x64", "cfd47380729f2451169b8900b3bd65e4b9db669d1d540613758cd2ededf7b5e6"), "10.6.0-windows_amd64": ("node-v10.6.0-win-x64.zip", "node-v10.6.0-win-x64", "0b58e0414d76e48432588910ea682f002ba69d7be88deb3355ceffb2fe472f6d"), "10.7.0-darwin_amd64": ("node-v10.7.0-darwin-x64.tar.gz", "node-v10.7.0-darwin-x64", "913473055605c8ae92f46923e6ac400133895aafe7766574fd46899bc6b0c5a4"), "10.7.0-linux_arm64": ("node-v10.7.0-linux-arm64.tar.xz", "node-v10.7.0-linux-arm64", "c23856b3123f9e2cfae3f8b0668019f83e9450ee78dede02a8d43031255b7ba0"), "10.7.0-linux_amd64": ("node-v10.7.0-linux-x64.tar.xz", "node-v10.7.0-linux-x64", "ad1d44cbe64ef44db5d8d42690a76dd186d6a6f71a3c3d38449757fe73135329"), "10.7.0-windows_amd64": ("node-v10.7.0-win-x64.zip", "node-v10.7.0-win-x64", "a0914d4c1fb82f51a03a4f57c66c9ce6a65ccd4f3237706042c55799843f4b14"), "10.8.0-darwin_amd64": ("node-v10.8.0-darwin-x64.tar.gz", "node-v10.8.0-darwin-x64", "b800d8b55c234b1f7d972e9464b00328a1caea5f86f94fdb5fc88ebbed7852b7"), "10.8.0-linux_arm64": ("node-v10.8.0-linux-arm64.tar.xz", "node-v10.8.0-linux-arm64", "0333da24d1fe54abac26b0a06437d3336c0fb4816b280507a9851ab3742ef2e4"), "10.8.0-linux_amd64": ("node-v10.8.0-linux-x64.tar.xz", "node-v10.8.0-linux-x64", "497f3b243d7374ee0fe9ab200b175868b172c3a22282cedc6d7fb0cad82471f0"), "10.8.0-windows_amd64": ("node-v10.8.0-win-x64.zip", "node-v10.8.0-win-x64", "f98575fb551d78691a6f74ca4f9c254bbd9fb62135e9ec0ab7ec8c40a03648b0"), "10.9.0-darwin_amd64": ("node-v10.9.0-darwin-x64.tar.gz", "node-v10.9.0-darwin-x64", "3c4fe75dacfcc495a432a7ba2dec9045cff359af2a5d7d0429c84a424ef686fc"), "10.9.0-linux_arm64": ("node-v10.9.0-linux-arm64.tar.xz", "node-v10.9.0-linux-arm64", "3d6aa717d98bbf901c5325a02a81048eb47212bdc44963ef8d59c6e52e987b7c"), "10.9.0-linux_amd64": ("node-v10.9.0-linux-x64.tar.xz", "node-v10.9.0-linux-x64", "c5acb8b7055ee0b6ac653dc4e458c5db45348cecc564b388f4ed1def84a329ff"), "10.9.0-windows_amd64": ("node-v10.9.0-win-x64.zip", "node-v10.9.0-win-x64", "6a75cdbb69d62ed242d6cbf0238a470bcbf628567ee339d4d098a5efcda2401e"), "10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e"), "10.10.0-linux_arm64": ("node-v10.10.0-linux-arm64.tar.xz", "node-v10.10.0-linux-arm64", "7d57961d18ea70b4e99906d87f9de1a2defc45a36fcd8cd84295e9ae5c4281da"), "10.10.0-linux_amd64": ("node-v10.10.0-linux-x64.tar.xz", "node-v10.10.0-linux-x64", "686d2c7b7698097e67bcd68edc3d6b5d28d81f62436c7cf9e7779d134ec262a9"), "10.10.0-windows_amd64": ("node-v10.10.0-win-x64.zip", "node-v10.10.0-win-x64", "70c46e6451798be9d052b700ce5dadccb75cf917f6bf0d6ed54344c856830cfb"), "10.11.0-darwin_amd64": ("node-v10.11.0-darwin-x64.tar.gz", "node-v10.11.0-darwin-x64", "32ad850a0e5cfdefc32d4267707abad05bd5c9eabb047e8ed9bf97faeffc52b6"), "10.11.0-linux_arm64": ("node-v10.11.0-linux-arm64.tar.xz", "node-v10.11.0-linux-arm64", "289302470520fd63e2a92a878869061dda557fe1aabfea2bd5ff88f7af76d98d"), "10.11.0-linux_amd64": ("node-v10.11.0-linux-x64.tar.xz", "node-v10.11.0-linux-x64", "c2eab149e7f0712a6a3eb672a76d657b049a3b3ae0c2edc2e0571df5049fe82c"), "10.11.0-windows_amd64": ("node-v10.11.0-win-x64.zip", "node-v10.11.0-win-x64", "78b2a7a4305aa108b9a82ac7586d7200ab51428c2b882d1318fb44ca300a8609"), "10.12.0-darwin_amd64": ("node-v10.12.0-darwin-x64.tar.gz", "node-v10.12.0-darwin-x64", "f275c901b9aeaacea2bf22648329c2e9ade5e1ff63a446b83446d5d4e19464cc"), "10.12.0-linux_arm64": ("node-v10.12.0-linux-arm64.tar.xz", "node-v10.12.0-linux-arm64", "b327deca4e380559c8c1fbacb9e668b49127ea998de4c8fe83912838cf786786"), "10.12.0-linux_amd64": ("node-v10.12.0-linux-x64.tar.xz", "node-v10.12.0-linux-x64", "4eba2e9a6db95745b769915d58e57df6ca6724ec1f023f76556fce30ceca2367"), "10.12.0-windows_amd64": ("node-v10.12.0-win-x64.zip", "node-v10.12.0-win-x64", "44c938cf1409562d25d23b7c6bce110b53cd2a73774bed573b2979f0d88f51f8"), "10.13.0-darwin_amd64": ("node-v10.13.0-darwin-x64.tar.gz", "node-v10.13.0-darwin-x64", "815a5d18516934a3963ace9f0574f7d41f0c0ce9186a19be3d89e039e57598c5"), "10.13.0-linux_arm64": ("node-v10.13.0-linux-arm64.tar.xz", "node-v10.13.0-linux-arm64", "1537ebe64dc34a2a9b8ab6254213079789e9d59ed0ed26987afb1da37b6a8f87"), "10.13.0-linux_amd64": ("node-v10.13.0-linux-x64.tar.xz", "node-v10.13.0-linux-x64", "0dc6dba645550b66f8f00541a428c29da7c3cde32fb7eda2eb626a9db3bbf08d"), "10.13.0-windows_amd64": ("node-v10.13.0-win-x64.zip", "node-v10.13.0-win-x64", "eb09c9e9677f1919ec1ca78623c09b2a718ec5388b72b7662d5c41e5f628a52c"), "10.14.0-darwin_amd64": ("node-v10.14.0-darwin-x64.tar.gz", "node-v10.14.0-darwin-x64", "dd044aa0ddeb5e32fefa80a13b33bafe3f7e0536e15fe93c1e81b052c2f1965c"), "10.14.0-linux_arm64": ("node-v10.14.0-linux-arm64.tar.xz", "node-v10.14.0-linux-arm64", "4d80efe675c40d6d3af697e17e33cad8af1caf50655276ca99d0c4ca8e2f2cf2"), "10.14.0-linux_amd64": ("node-v10.14.0-linux-x64.tar.xz", "node-v10.14.0-linux-x64", "5f576f9893e0335f0c1b071a42fdf8b3e302577ad6ea38237aaef08ad0ca898e"), "10.14.0-windows_amd64": ("node-v10.14.0-win-x64.zip", "node-v10.14.0-win-x64", "a3acbbdbbdb6ff6d5ae6e6f5ccea55aef83cfa54f52c080538edc3ac6326797b"), "10.14.1-darwin_amd64": ("node-v10.14.1-darwin-x64.tar.gz", "node-v10.14.1-darwin-x64", "91ebe7d6da8a40c72618ac9d0b0a8e224ae01febd3f5595b43b1a58190dcacb1"), "10.14.1-linux_arm64": ("node-v10.14.1-linux-arm64.tar.xz", "node-v10.14.1-linux-arm64", "c1ca91356b007cc7624c7a9e00f3b7bed8dd10aba959be5f55e4ff13da334828"), "10.14.1-linux_amd64": ("node-v10.14.1-linux-x64.tar.xz", "node-v10.14.1-linux-x64", "b65e735cdf61fb80f114c498c8955efe8e096e4b3e173281d68aa9d2c05b0f97"), "10.14.1-windows_amd64": ("node-v10.14.1-win-x64.zip", "node-v10.14.1-win-x64", "7d51aa233ad290eb916a4c3134815204eb34ecb0a001dcecc5ea57333030f303"), "10.14.2-darwin_amd64": ("node-v10.14.2-darwin-x64.tar.gz", "node-v10.14.2-darwin-x64", "5306da5db576d9c984167b4693600a2e3074cc5a701961279837753fa2139baa"), "10.14.2-linux_arm64": ("node-v10.14.2-linux-arm64.tar.xz", "node-v10.14.2-linux-arm64", "8493b30c99d697b24fbaa5bfb3b43108ab3e334ab674188b7b7982fef903aa04"), "10.14.2-linux_amd64": ("node-v10.14.2-linux-x64.tar.xz", "node-v10.14.2-linux-x64", "e43de13bf7bee440a106a844c1bc3a2adb8829fd58b857702c8f1838fdd02a2a"), "10.14.2-windows_amd64": ("node-v10.14.2-win-x64.zip", "node-v10.14.2-win-x64", "45841fe5ffe87378c748dcb9799507f6192c34117409b2c6c18480d112a337de"), "10.15.0-darwin_amd64": ("node-v10.15.0-darwin-x64.tar.gz", "node-v10.15.0-darwin-x64", "353402461c898c569658d0a963790476f4d9828cc6c9286d81617ee8afcba4e8"), "10.15.0-linux_arm64": ("node-v10.15.0-linux-arm64.tar.xz", "node-v10.15.0-linux-arm64", "77aa4a02c5471b6eb7ba935cbc6829889a27115353cff7226a208c08b654e972"), "10.15.0-linux_amd64": ("node-v10.15.0-linux-x64.tar.xz", "node-v10.15.0-linux-x64", "4ee8503c1133797777880ebf75dcf6ae3f9b894c66fd2d5da507e407064c13b5"), "10.15.0-windows_amd64": ("node-v10.15.0-win-x64.zip", "node-v10.15.0-win-x64", "c1dbc9372ad789cd21727cb5f63b4a44ed3eae216763959cff8e68e68c6fcfe1"), "10.15.1-darwin_amd64": ("node-v10.15.1-darwin-x64.tar.gz", "node-v10.15.1-darwin-x64", "327dcef4b61dead1ae04d2743d3390a2b7e6cc6c389c62cfcfeb0486c5a9f181"), "10.15.1-linux_arm64": ("node-v10.15.1-linux-arm64.tar.xz", "node-v10.15.1-linux-arm64", "0fb6d24972fd991f476a942b1b21aca5059f93b9302318c5883120445ee6cd54"), "10.15.1-linux_amd64": ("node-v10.15.1-linux-x64.tar.xz", "node-v10.15.1-linux-x64", "77db68544c7812e925b82ccc41cd4669fdeb191cea8e20053e3f0e86889c4fce"), "10.15.1-windows_amd64": ("node-v10.15.1-win-x64.zip", "node-v10.15.1-win-x64", "bb5bdc9363e4050c94b3f82888141b81630230f86e520abb7dde49081f1292b9"), "10.15.2-darwin_amd64": ("node-v10.15.2-darwin-x64.tar.gz", "node-v10.15.2-darwin-x64", "8bbb6c15a0572f493d33ef044d06ccd0ff7ead8daa67f9a32df3e863277568e8"), "10.15.2-linux_arm64": ("node-v10.15.2-linux-arm64.tar.xz", "node-v10.15.2-linux-arm64", "2978e82d85654505d732b40dfa58f21276d99712d5d001101eaf87100d350139"), "10.15.2-linux_amd64": ("node-v10.15.2-linux-x64.tar.xz", "node-v10.15.2-linux-x64", "c10eece562cfeef1627f0d2bde7dc0be810948f6bf9a932e30a8c3b425652015"), "10.15.2-windows_amd64": ("node-v10.15.2-win-x64.zip", "node-v10.15.2-win-x64", "d97cf4788ccea6deef037ce27c91cc1a814644b878311b71811ab04d0bb8c47f"), "10.15.3-darwin_amd64": ("node-v10.15.3-darwin-x64.tar.gz", "node-v10.15.3-darwin-x64", "7a5eaa1f69614375a695ccb62017248e5dcc15b0b8edffa7db5b52997cf992ba"), "10.15.3-linux_arm64": ("node-v10.15.3-linux-arm64.tar.xz", "node-v10.15.3-linux-arm64", "3d7abbf64bffb07c55168ca0f1c17be12b0d93affe9b6cadd39724649215fab9"), "10.15.3-linux_amd64": ("node-v10.15.3-linux-x64.tar.xz", "node-v10.15.3-linux-x64", "faddbe418064baf2226c2fcbd038c3ef4ae6f936eb952a1138c7ff8cfe862438"), "10.15.3-windows_amd64": ("node-v10.15.3-win-x64.zip", "node-v10.15.3-win-x64", "93c881fdc0455a932dd5b506a7a03df27d9fe36155c1d3f351ebfa4e20bf1c0d"), "10.16.0-darwin_amd64": ("node-v10.16.0-darwin-x64.tar.gz", "node-v10.16.0-darwin-x64", "6c009df1b724026d84ae9a838c5b382662e30f6c5563a0995532f2bece39fa9c"), "10.16.0-linux_arm64": ("node-v10.16.0-linux-arm64.tar.xz", "node-v10.16.0-linux-arm64", "ae2e74ab2f5dbff96bf0b7d8457004bf3538233916f8834740bbe2d5a35442e5"), "10.16.0-linux_amd64": ("node-v10.16.0-linux-x64.tar.xz", "node-v10.16.0-linux-x64", "1827f5b99084740234de0c506f4dd2202a696ed60f76059696747c34339b9d48"), "10.16.0-windows_amd64": ("node-v10.16.0-win-x64.zip", "node-v10.16.0-win-x64", "aa22cb357f0fb54ccbc06b19b60e37eefea5d7dd9940912675d3ed988bf9a059"), "10.16.1-darwin_amd64": ("node-v10.16.1-darwin-x64.tar.gz", "node-v10.16.1-darwin-x64", "328e61fdacfe2f6f1a049d57e248b3eafc0345747831323a14fe1edf98d9b3bb"), "10.16.1-linux_arm64": ("node-v10.16.1-linux-arm64.tar.xz", "node-v10.16.1-linux-arm64", "c46ba1a8e9b9c0490ae81f8b2b13d332ed6f5c86d172fa817f749042ab329b93"), "10.16.1-linux_amd64": ("node-v10.16.1-linux-x64.tar.xz", "node-v10.16.1-linux-x64", "127d9b2f485523805208f867fc513842570b29b4d6831773eeb6dd403a22ba9d"), "10.16.1-windows_amd64": ("node-v10.16.1-win-x64.zip", "node-v10.16.1-win-x64", "1ff8b26670e1b935b51f4b795728f29845c31a3c38b3220b4fe71fb139bc5623"), "10.16.2-darwin_amd64": ("node-v10.16.2-darwin-x64.tar.gz", "node-v10.16.2-darwin-x64", "21ee8bdb04909f553e97af7c6e41009e15d06b886dd3e2ca8a92ce3e0a148a09"), "10.16.2-linux_arm64": ("node-v10.16.2-linux-arm64.tar.xz", "node-v10.16.2-linux-arm64", "5fb2b7d3c2b6b40e237cdc172eabfac2e485ee309ac2bcfbff413de1ed79a59e"), "10.16.2-linux_amd64": ("node-v10.16.2-linux-x64.tar.xz", "node-v10.16.2-linux-x64", "406718dc2f3164b3d1981c36b68b70ea448fbbac29cefbe23ff286b3cd55f264"), "10.16.2-windows_amd64": ("node-v10.16.2-win-x64.zip", "node-v10.16.2-win-x64", "01654dc79d82e9f3c89d01c8cf1cdce68d3a9118dbe968ee86a3ffd6ee153567"), "10.16.3-darwin_amd64": ("node-v10.16.3-darwin-x64.tar.gz", "node-v10.16.3-darwin-x64", "6febc571e1543c2845fa919c6d06b36a24e4e142c91aedbe28b6ff7d296119e4"), "10.16.3-linux_arm64": ("node-v10.16.3-linux-arm64.tar.xz", "node-v10.16.3-linux-arm64", "8ee77bad022bd460bf2867a97bf56ce7ddc4aa2ace067e45995fb1721a958428"), "10.16.3-linux_amd64": ("node-v10.16.3-linux-x64.tar.xz", "node-v10.16.3-linux-x64", "d2271fd8cf997fa7447d638dfa92749ff18ca4b0d796bf89f2a82bf7800d5506"), "10.16.3-windows_amd64": ("node-v10.16.3-win-x64.zip", "node-v10.16.3-win-x64", "19aa47de7c5950d7bd71a1e878013b98d93871cc311d7185f5472e6d3f633146"), "10.17.0-darwin_amd64": ("node-v10.17.0-darwin-x64.tar.gz", "node-v10.17.0-darwin-x64", "9b96140ad74b217f216c83ddf50d1f70a4296576f6edbbbfb65d0f478015d9df"), "10.17.0-linux_arm64": ("node-v10.17.0-linux-arm64.tar.xz", "node-v10.17.0-linux-arm64", "3ab8ee2b5c9aa4d060c68667ddef70cc2960e12bcfe4a0f2de7ebc0f008bf13d"), "10.17.0-linux_amd64": ("node-v10.17.0-linux-x64.tar.xz", "node-v10.17.0-linux-x64", "2b49cd296f969ef0ffb7922719ffa6542bedb89d6c959a47c023d11ce222f5d6"), "10.17.0-windows_amd64": ("node-v10.17.0-win-x64.zip", "node-v10.17.0-win-x64", "e84a1f3685219811bb4662eb3e3b55abd0c764c24cd2b224ba31b3f9f162baf6"), "10.18.0-darwin_amd64": ("node-v10.18.0-darwin-x64.tar.gz", "node-v10.18.0-darwin-x64", "a7af53e3363e8ab654b97387bc7cf352dddb324562404c1d35fe10cba3f27e0f"), "10.18.0-linux_arm64": ("node-v10.18.0-linux-arm64.tar.xz", "node-v10.18.0-linux-arm64", "b2b34dd43ea3979890663afa270e09e09c219f046e39e8e439eeda2821cc9643"), "10.18.0-linux_amd64": ("node-v10.18.0-linux-x64.tar.xz", "node-v10.18.0-linux-x64", "eac160acfc2c5b6fca021baa9943341fea50859f19c7ccbd56669b1fe04e691e"), "10.18.0-windows_amd64": ("node-v10.18.0-win-x64.zip", "node-v10.18.0-win-x64", "56afcc9c191dfc99017725be92ac1331e23afb1930913446eb91852cb02a8687"), "10.18.1-darwin_amd64": ("node-v10.18.1-darwin-x64.tar.gz", "node-v10.18.1-darwin-x64", "2b2d3379420e626eee393cabf1c90bc55957ff5bb067b82a74eb2f92147d6757"), "10.18.1-linux_arm64": ("node-v10.18.1-linux-arm64.tar.xz", "node-v10.18.1-linux-arm64", "9a6203697e0087a1c909961481d579c76777df1df622921e4ce16198851f30fe"), "10.18.1-linux_amd64": ("node-v10.18.1-linux-x64.tar.xz", "node-v10.18.1-linux-x64", "8cc40f45c2c62529b15e83a6bbe0ac1febf57af3c5720df68067c96c0fddbbdf"), "10.18.1-windows_amd64": ("node-v10.18.1-win-x64.zip", "node-v10.18.1-win-x64", "fb27bb95c27c72f2e25d0c41309b606b2ae48ba0d6094a19f206ad1df9dc5e19"), "10.19.0-darwin_amd64": ("node-v10.19.0-darwin-x64.tar.gz", "node-v10.19.0-darwin-x64", "b16328570651be44213a2303c1f9515fc506e0a96a273806f71ed000e3ca3cb3"), "10.19.0-linux_arm64": ("node-v10.19.0-linux-arm64.tar.xz", "node-v10.19.0-linux-arm64", "77bdbf859fc38e6e860efd479b0a7b7b6bd3e7cb05337e5cc5638251eb5d3a59"), "10.19.0-linux_amd64": ("node-v10.19.0-linux-x64.tar.xz", "node-v10.19.0-linux-x64", "34127c7c6b1ba02d6d4dc3a926f38a5fb88bb37fc7f051349005ce331c7a53c6"), "10.19.0-windows_amd64": ("node-v10.19.0-win-x64.zip", "node-v10.19.0-win-x64", "210efd45a7f79cf4c350d8f575f990becdd3833cd922796a4c83b27996f5679e"), "10.20.0-darwin_amd64": ("node-v10.20.0-darwin-x64.tar.gz", "node-v10.20.0-darwin-x64", "c153832774afcae89a82efb55ed80557d1a41e1880638ad57128a9a3762d212f"), "10.20.0-linux_arm64": ("node-v10.20.0-linux-arm64.tar.xz", "node-v10.20.0-linux-arm64", "f3567924d6b7f0fa55c4ee0a7330ec0dcaeec557982794796d6b312e7053c674"), "10.20.0-linux_amd64": ("node-v10.20.0-linux-x64.tar.xz", "node-v10.20.0-linux-x64", "c5721a89feecc0e98d42386e171cb763c077f782033ddc998819edcf9d93b691"), "10.20.0-windows_amd64": ("node-v10.20.0-win-x64.zip", "node-v10.20.0-win-x64", "d266313fa22885a6ec76eea521fb8a1131b4d9fb3a57afb045a98301aeb7d24e"), "10.20.1-darwin_amd64": ("node-v10.20.1-darwin-x64.tar.gz", "node-v10.20.1-darwin-x64", "6437e364cd93be246ffb67dd40775cbb467bb8d28d8af4413123f478bb6234b9"), "10.20.1-linux_arm64": ("node-v10.20.1-linux-arm64.tar.xz", "node-v10.20.1-linux-arm64", "e33cafff94a6308916530b4b724bbc138399484d96f71b1c23677596bec268d0"), "10.20.1-linux_amd64": ("node-v10.20.1-linux-x64.tar.xz", "node-v10.20.1-linux-x64", "5e0b1fbc6cf8c2c34dc33d880670ee1bc1c1e931099de3796a96143a962c92ee"), "10.20.1-windows_amd64": ("node-v10.20.1-win-x64.zip", "node-v10.20.1-win-x64", "5e4ec0936c51047c218c0c164cc80283cd36ecd40e0a6979281d395c1be8ee10"), "10.21.0-darwin_amd64": ("node-v10.21.0-darwin-x64.tar.gz", "node-v10.21.0-darwin-x64", "596900700c4a0de0303bb4c378a1abcd63f31efc848704c5fbc1230de628577a"), "10.21.0-linux_arm64": ("node-v10.21.0-linux-arm64.tar.xz", "node-v10.21.0-linux-arm64", "3af40706ff0da7fe0baa4683ead6c74445405a2553e7373e627f24d19d4ac100"), "10.21.0-linux_amd64": ("node-v10.21.0-linux-x64.tar.xz", "node-v10.21.0-linux-x64", "1d3296763e46540047099e4910812e81c4899c0595f2d82474e2099c1e1603e2"), "10.21.0-windows_amd64": ("node-v10.21.0-win-x64.zip", "node-v10.21.0-win-x64", "03dddcdaccdb40978ddf15d189acdc20409d9a666636db2595118690ff83ce82"), "10.22.0-darwin_amd64": ("node-v10.22.0-darwin-x64.tar.gz", "node-v10.22.0-darwin-x64", "c7583a297ba9c6cfc03688a32776155d02fabf9ff45847c63b12a68d400f1dc1"), "10.22.0-linux_arm64": ("node-v10.22.0-linux-arm64.tar.xz", "node-v10.22.0-linux-arm64", "abacc6f37e8dfbe398843c7dc7b9bb7153ff6e653ad50e85d73d86088da48372"), "10.22.0-linux_amd64": ("node-v10.22.0-linux-x64.tar.xz", "node-v10.22.0-linux-x64", "ddf33e038c593d6df36b1dd4b25c1b6fa8230c615e6312ad33e80ef863e4a74f"), "10.22.0-windows_amd64": ("node-v10.22.0-win-x64.zip", "node-v10.22.0-win-x64", "931c2907450790f89aa178fa84c1adbd1f7cb7ab0a34f8bfb4af25640e8d4e06"), "11.0.0-darwin_amd64": ("node-v11.0.0-darwin-x64.tar.gz", "node-v11.0.0-darwin-x64", "f70e12d246ba35e88c5c08a195215c5c913ce66c9d95d0bd21cc1d3e69904279"), "11.0.0-linux_arm64": ("node-v11.0.0-linux-arm64.tar.xz", "node-v11.0.0-linux-arm64", "0d0c7013fd00a8e713c36aa96bcc268eeadbad2ce48d87e19849d66f4c618cad"), "11.0.0-linux_amd64": ("node-v11.0.0-linux-x64.tar.xz", "node-v11.0.0-linux-x64", "418b1a73bcafbf5dd3bc787f0440c2b4123dfecc2b239f5651f0256cb5ab606d"), "11.0.0-windows_amd64": ("node-v11.0.0-win-x64.zip", "node-v11.0.0-win-x64", "4dd3ef7f5c8181be39cd45476b22ed34b6da2bf77377b699384d426702f8c969"), "11.1.0-darwin_amd64": ("node-v11.1.0-darwin-x64.tar.gz", "node-v11.1.0-darwin-x64", "5d6b84d2b0fd6afee07c371bc815a9e4b6671b85bedcb38815310bd0f884d3c8"), "11.1.0-linux_arm64": ("node-v11.1.0-linux-arm64.tar.xz", "node-v11.1.0-linux-arm64", "cbba27e1c90701fbb9db66cc2c6cc3049aaf08adb16cabd0cad970b74cdaf6d3"), "11.1.0-linux_amd64": ("node-v11.1.0-linux-x64.tar.xz", "node-v11.1.0-linux-x64", "c70419674d932452017556080264de2b6d1105c112647dd1dd495b739456dd91"), "11.1.0-windows_amd64": ("node-v11.1.0-win-x64.zip", "node-v11.1.0-win-x64", "985e4edc758cb5f77f85cddda0155616b92f163b8d3842c542b1c8a395068418"), "11.2.0-darwin_amd64": ("node-v11.2.0-darwin-x64.tar.gz", "node-v11.2.0-darwin-x64", "cd17fafcdb21ae80fb94e455e63567c70b3bceedf982b93ae9e4aea411f6a6ea"), "11.2.0-linux_arm64": ("node-v11.2.0-linux-arm64.tar.xz", "node-v11.2.0-linux-arm64", "3e6c47a29b85030b4305bdc2e15cbe37e1b54a2338ce1790637384ce349ed1fd"), "11.2.0-linux_amd64": ("node-v11.2.0-linux-x64.tar.xz", "node-v11.2.0-linux-x64", "629a603443c275f8ecd851994b81a9c02a36343dbcbafc279cbecb9ccd9cf906"), "11.2.0-windows_amd64": ("node-v11.2.0-win-x64.zip", "node-v11.2.0-win-x64", "3440b2880b4e3b78c9c18865df263317e7d3c3e179dad960d526004dc7e6ba9a"), "11.3.0-darwin_amd64": ("node-v11.3.0-darwin-x64.tar.gz", "node-v11.3.0-darwin-x64", "54acc7bdeffae79fdd73f959712305aee1d8d487d56813b43cae96d151ec79db"), "11.3.0-linux_arm64": ("node-v11.3.0-linux-arm64.tar.xz", "node-v11.3.0-linux-arm64", "642cc3fc94a856ad6d09e76eaf869672bef925308afdad398a58f18eeaf4e4b8"), "11.3.0-linux_amd64": ("node-v11.3.0-linux-x64.tar.xz", "node-v11.3.0-linux-x64", "d37fb7fae8a185409bccf106e91d8ffa3450115852795512fc62e6da0b5e3dbb"), "11.3.0-windows_amd64": ("node-v11.3.0-win-x64.zip", "node-v11.3.0-win-x64", "b801e908ec36a07f06df388845e22e0b7f3cede7a4030896712c8ee28cdb3f05"), "11.4.0-darwin_amd64": ("node-v11.4.0-darwin-x64.tar.gz", "node-v11.4.0-darwin-x64", "05a515146d5bc397625f442a6ecbbc7f0d071a2a7efbf1e2b2ed46d728bc7b30"), "11.4.0-linux_arm64": ("node-v11.4.0-linux-arm64.tar.xz", "node-v11.4.0-linux-arm64", "c32e752e74794a4254ae4caa892b7beb3be60dba6851e8e5d637febfb659ee3a"), "11.4.0-linux_amd64": ("node-v11.4.0-linux-x64.tar.xz", "node-v11.4.0-linux-x64", "24d9be161e7fb28e761801639cb452ff223269ed53d967e5745b5c6391eb3fbd"), "11.4.0-windows_amd64": ("node-v11.4.0-win-x64.zip", "node-v11.4.0-win-x64", "30b84ab0101c8916694e6cd6c0ccb5182e4555da5e06deb080e906ef5b3893df"), "11.5.0-darwin_amd64": ("node-v11.5.0-darwin-x64.tar.gz", "node-v11.5.0-darwin-x64", "741abd58ac67b4bf8d2ef991a7487ea17e421b2248688b93be0d2f34886c6aa2"), "11.5.0-linux_arm64": ("node-v11.5.0-linux-arm64.tar.xz", "node-v11.5.0-linux-arm64", "3f1436c1de70b2e34f7a63a5af7e6b106a8ebe9289b3f7d045ac4a4856570164"), "11.5.0-linux_amd64": ("node-v11.5.0-linux-x64.tar.xz", "node-v11.5.0-linux-x64", "ada54407b505b7e6f516c753f0e49220917dd11efa5ee892d3252bdd65d4a54c"), "11.5.0-windows_amd64": ("node-v11.5.0-win-x64.zip", "node-v11.5.0-win-x64", "3692939b1bbd7ee8b0a967429eef6b1d45078c2f4fc289aae261ca5bde5a0607"), "11.6.0-darwin_amd64": ("node-v11.6.0-darwin-x64.tar.gz", "node-v11.6.0-darwin-x64", "c880063b112c48130dba8f7b058de61959ae46fddcfa363715571b22c1cbeb26"), "11.6.0-linux_arm64": ("node-v11.6.0-linux-arm64.tar.xz", "node-v11.6.0-linux-arm64", "956016db41f4f96f8e005d36c738d7c833442d09a970462552eb214027e0268a"), "11.6.0-linux_amd64": ("node-v11.6.0-linux-x64.tar.xz", "node-v11.6.0-linux-x64", "2251a6c5b332e7ea69bbefba11950cb6c27ba50fa700468711f729da6a6f5324"), "11.6.0-windows_amd64": ("node-v11.6.0-win-x64.zip", "node-v11.6.0-win-x64", "d230828c1cc9863c9768106ffee0320ba42049b594bd2689e430b872e8f0b2dd"), "11.7.0-darwin_amd64": ("node-v11.7.0-darwin-x64.tar.gz", "node-v11.7.0-darwin-x64", "873b47e6fc97aef2f73b0e8dde641967b2a84a3b63d1697b9d8813e14fb3b01c"), "11.7.0-linux_arm64": ("node-v11.7.0-linux-arm64.tar.xz", "node-v11.7.0-linux-arm64", "82b9726c6b367a43530f868f61b1b2a05c942d3decdf9d2e18b4a9bdf353c223"), "11.7.0-linux_amd64": ("node-v11.7.0-linux-x64.tar.xz", "node-v11.7.0-linux-x64", "b2a0a7dde17fe0da5f86ce5fea3da2861d652a5e702e2177ee62813ff86451c0"), "11.7.0-windows_amd64": ("node-v11.7.0-win-x64.zip", "node-v11.7.0-win-x64", "00834d16532f24583bf56d2baab03904b0220154cc712344be95e4d05c6234dd"), "11.8.0-darwin_amd64": ("node-v11.8.0-darwin-x64.tar.gz", "node-v11.8.0-darwin-x64", "fbb26b38f408c2f2324a5821062c16103f54de16d24f9f24c4e270a3a41f4832"), "11.8.0-linux_arm64": ("node-v11.8.0-linux-arm64.tar.xz", "node-v11.8.0-linux-arm64", "42b190c686cb8bafbdbf418a6c20c6785a23ba0f1a1a85af44595057a3d5e25e"), "11.8.0-linux_amd64": ("node-v11.8.0-linux-x64.tar.xz", "node-v11.8.0-linux-x64", "85ca19c495d5cac6acf6ee4a3c8dfb4489fb67fefc184c61eb4513eb5ef99a88"), "11.8.0-windows_amd64": ("node-v11.8.0-win-x64.zip", "node-v11.8.0-win-x64", "cd4db1b9e7ac29ed81d433f2de85582902670a121961aa3f350533d5b2fd44c6"), "11.9.0-darwin_amd64": ("node-v11.9.0-darwin-x64.tar.gz", "node-v11.9.0-darwin-x64", "1df3dd99d174bb8cb61cc8e2aa419a4998c7ada9454123c34991ce30632f1ef8"), "11.9.0-linux_arm64": ("node-v11.9.0-linux-arm64.tar.xz", "node-v11.9.0-linux-arm64", "f39baa8d212e9676bfa7f1601f94d789c6dc6b35caf440df6ec815d238978457"), "11.9.0-linux_amd64": ("node-v11.9.0-linux-x64.tar.xz", "node-v11.9.0-linux-x64", "9bc461fb7f5fd3344301abfda834160d5397a4e289f9749ab03ba0b7e9a4c853"), "11.9.0-windows_amd64": ("node-v11.9.0-win-x64.zip", "node-v11.9.0-win-x64", "c62c01436f632858fea0194d4168b483e1aa485c3fc72247add4899a103c2677"), "11.10.0-darwin_amd64": ("node-v11.10.0-darwin-x64.tar.gz", "node-v11.10.0-darwin-x64", "1956528c6f3934a97508e36a4855c154f40f1923ccd61e296d5a85679103e3a1"), "11.10.0-linux_arm64": ("node-v11.10.0-linux-arm64.tar.xz", "node-v11.10.0-linux-arm64", "60ed6caa90d8188a55f0dbc63f4aef263fb4863e036d32989b820a2e40582c66"), "11.10.0-linux_amd64": ("node-v11.10.0-linux-x64.tar.xz", "node-v11.10.0-linux-x64", "fe4c617aaf88b5228bce0341d1c77bbae2622d69eaa17a15b7d4bcc60c4777c5"), "11.10.0-windows_amd64": ("node-v11.10.0-win-x64.zip", "node-v11.10.0-win-x64", "c39e711aebe678455fa74edf6d8f6184d6d93e20f160197799040a0c17005dba"), "11.10.1-darwin_amd64": ("node-v11.10.1-darwin-x64.tar.gz", "node-v11.10.1-darwin-x64", "dea52b86f6875efae26fbb6d0269d9769da7ca69408b74b6ab724d4b64004b07"), "11.10.1-linux_arm64": ("node-v11.10.1-linux-arm64.tar.xz", "node-v11.10.1-linux-arm64", "b116e57906ed73c970d64e7518b08c6de236575c5cd8bf09f4c1bd668524a014"), "11.10.1-linux_amd64": ("node-v11.10.1-linux-x64.tar.xz", "node-v11.10.1-linux-x64", "414216a7e47dbfb77141dce7a4452901ae2cdb4cd0deef3ab3ab49e0b2111f82"), "11.10.1-windows_amd64": ("node-v11.10.1-win-x64.zip", "node-v11.10.1-win-x64", "80cf14abacbc6b636bc192f4eee49421f082f21cdaa9c1ea5995c38f8c1375e5"), "11.11.0-darwin_amd64": ("node-v11.11.0-darwin-x64.tar.gz", "node-v11.11.0-darwin-x64", "6b7c8d93096bf065de0d0a42e8f027c424172c82df6f015d3149a5dbfa03c1cc"), "11.11.0-linux_arm64": ("node-v11.11.0-linux-arm64.tar.xz", "node-v11.11.0-linux-arm64", "febb698e74264ec0ecc738c86347e6bfb5d27e33ed492a031626df988a5fb4f3"), "11.11.0-linux_amd64": ("node-v11.11.0-linux-x64.tar.xz", "node-v11.11.0-linux-x64", "ee09c7712e741f84948f76a72b651bf088e516c3f38569b9e6f30c38c026c262"), "11.11.0-windows_amd64": ("node-v11.11.0-win-x64.zip", "node-v11.11.0-win-x64", "154a5b7ca7033382743c4752fa465a5d9902f4abed4263a38ea3f41ffa113910"), "11.12.0-darwin_amd64": ("node-v11.12.0-darwin-x64.tar.gz", "node-v11.12.0-darwin-x64", "93d68c1af41d02b262b3383d69b46eb326707ec010b321ad5655b91c4956e783"), "11.12.0-linux_arm64": ("node-v11.12.0-linux-arm64.tar.xz", "node-v11.12.0-linux-arm64", "9e89838e290c9bb478351bd403707d0b741ec56021c379c9f6da515a4cd1064a"), "11.12.0-linux_amd64": ("node-v11.12.0-linux-x64.tar.xz", "node-v11.12.0-linux-x64", "1c6bb93a24eda832708c1c10ec20316e1e4f30b3cfca9c5ee5d446762414b116"), "11.12.0-windows_amd64": ("node-v11.12.0-win-x64.zip", "node-v11.12.0-win-x64", "68e5bca1d6dd6b3de20870e7c593f9a890c48d2c9c83e15034baad6f7c0da426"), "11.13.0-darwin_amd64": ("node-v11.13.0-darwin-x64.tar.gz", "node-v11.13.0-darwin-x64", "c1a8f94b4778dad2d9f513cfdf9091810dc733a2daf4fa7e03d49ad133415b5d"), "11.13.0-linux_arm64": ("node-v11.13.0-linux-arm64.tar.xz", "node-v11.13.0-linux-arm64", "0edb29004fdbb5808331e765b4adde8b025a13d6619f49fec60a14582aba9ed7"), "11.13.0-linux_amd64": ("node-v11.13.0-linux-x64.tar.xz", "node-v11.13.0-linux-x64", "c2ae3caced5f181df282a6974ab3f5e232b5decb821aa8ea8fe758b0e0528223"), "11.13.0-windows_amd64": ("node-v11.13.0-win-x64.zip", "node-v11.13.0-win-x64", "f3dafd1f19841244f8f12952f9919c0a2857f6920b11f2a89554b061cd5a4525"), "11.14.0-darwin_amd64": ("node-v11.14.0-darwin-x64.tar.gz", "node-v11.14.0-darwin-x64", "37b8db4f6700a4b5aa3b6d4283538753953f6293aff99866aa9a81038848a4d9"), "11.14.0-linux_arm64": ("node-v11.14.0-linux-arm64.tar.xz", "node-v11.14.0-linux-arm64", "3d463f3b48e1060027f8a552657de6f3ee4724d718d546aa4ea5c301ee4ed083"), "11.14.0-linux_amd64": ("node-v11.14.0-linux-x64.tar.xz", "node-v11.14.0-linux-x64", "89e2cb0effa9bf075ee8bb6d92a6a50f7ccfdad03dd687f52ecdfab91230f9a1"), "11.14.0-windows_amd64": ("node-v11.14.0-win-x64.zip", "node-v11.14.0-win-x64", "58a5d3316c04335ff3da2ce66b89f3cce86b1d1ca878d1d6d68478160c66dc12"), "11.15.0-darwin_amd64": ("node-v11.15.0-darwin-x64.tar.gz", "node-v11.15.0-darwin-x64", "e953b657b1049e1de509a3fd0700cfeecd175f75a0d141d71393aa0d71fa29a9"), "11.15.0-linux_arm64": ("node-v11.15.0-linux-arm64.tar.xz", "node-v11.15.0-linux-arm64", "e458aa4c69da9ca2ae566c8eb56dc8b36d573b415bfd8eebca4ff2229fc4983d"), "11.15.0-linux_amd64": ("node-v11.15.0-linux-x64.tar.xz", "node-v11.15.0-linux-x64", "17424aef198fa322b93c79217ce7e8cdd264fed40383abbbd3e63c305ce1d7d8"), "11.15.0-windows_amd64": ("node-v11.15.0-win-x64.zip", "node-v11.15.0-win-x64", "f3cef50acf566724a5ec5df7697fb527d7339cafdae6c7c406a39358aee6cdf8"), "12.0.0-darwin_amd64": ("node-v12.0.0-darwin-x64.tar.gz", "node-v12.0.0-darwin-x64", "92c81a284e909424b50dd01e175260b75bbbdb487fdfe1885229817187ea76bc"), "12.0.0-linux_arm64": ("node-v12.0.0-linux-arm64.tar.xz", "node-v12.0.0-linux-arm64", "2ac36aa51f76654a8914d41a32bd5c3d3213cba14eea84abd9919d022b5694b4"), "12.0.0-linux_amd64": ("node-v12.0.0-linux-x64.tar.xz", "node-v12.0.0-linux-x64", "7a5609167265954cfb912e4dc8f36e5469335b6be1bb11d60d8427f92c03f5f9"), "12.0.0-windows_amd64": ("node-v12.0.0-win-x64.zip", "node-v12.0.0-win-x64", "96ab5f9f61d75daf3fb1072930b6e9249f15b77bc3b3dca516ae8439dc1500fb"), "12.1.0-darwin_amd64": ("node-v12.1.0-darwin-x64.tar.gz", "node-v12.1.0-darwin-x64", "57c592b13940aa44611aec08e7b425f35565a2c95c51736f433cb36eb65105b7"), "12.1.0-linux_arm64": ("node-v12.1.0-linux-arm64.tar.xz", "node-v12.1.0-linux-arm64", "67805a7976bef30d0e12211f18a99c6de405931e493fd32f451512473661ee10"), "12.1.0-linux_amd64": ("node-v12.1.0-linux-x64.tar.xz", "node-v12.1.0-linux-x64", "331c43176a20e705c6f4fdb61c69fee44dd3c2c93a20410be2c13b4f8515ef7b"), "12.1.0-windows_amd64": ("node-v12.1.0-win-x64.zip", "node-v12.1.0-win-x64", "6dc3ef4a6b4ce527f187270a1b0c5560771126df487ab9ddc4c3cd3b37d57eb6"), "12.2.0-darwin_amd64": ("node-v12.2.0-darwin-x64.tar.gz", "node-v12.2.0-darwin-x64", "c72ae8a2b989138c6e6e9b393812502df8c28546a016cf24e7a82dd27e3838af"), "12.2.0-linux_arm64": ("node-v12.2.0-linux-arm64.tar.xz", "node-v12.2.0-linux-arm64", "42e4a5c6ad0b402e281daf46a27a269249bdb8b4e31ff8869701aaddac2cc8c4"), "12.2.0-linux_amd64": ("node-v12.2.0-linux-x64.tar.xz", "node-v12.2.0-linux-x64", "89059969861606e2a435ff2619c4df6f41c040120e507d9c4f03374353357307"), "12.2.0-windows_amd64": ("node-v12.2.0-win-x64.zip", "node-v12.2.0-win-x64", "c1e7fb3c1c15d8f2ab5c1db9c9662097f9c682164b3f7397955ccce946442c97"), "12.3.0-darwin_amd64": ("node-v12.3.0-darwin-x64.tar.gz", "node-v12.3.0-darwin-x64", "4a9faa038fb4e6e930a0fecd9818a4820b4ca91d1c45a1c1279fe49cdbd28160"), "12.3.0-linux_arm64": ("node-v12.3.0-linux-arm64.tar.xz", "node-v12.3.0-linux-arm64", "3d6e7046b938ff1f2535bdcc892a82abf44d875d1e96779cc3ea9a074ccfa200"), "12.3.0-linux_amd64": ("node-v12.3.0-linux-x64.tar.xz", "node-v12.3.0-linux-x64", "2ce2c7a4d7fe3c560415e8dcbc5905a66a8bf28e2a2b2cff7e7a4eeb5753015d"), "12.3.0-windows_amd64": ("node-v12.3.0-win-x64.zip", "node-v12.3.0-win-x64", "b36c9f9809c90ce704465f066861314d6e33176a5d45da14c1519c3e4f35063e"), "12.3.1-darwin_amd64": ("node-v12.3.1-darwin-x64.tar.gz", "node-v12.3.1-darwin-x64", "b9c979f63a356090d8ff88ed141fd856ad853165c73633794a9d3a060334378e"), "12.3.1-linux_arm64": ("node-v12.3.1-linux-arm64.tar.xz", "node-v12.3.1-linux-arm64", "88df7f2e0c4a58661bb79b637daa417929efc6c4d6a77bba42a5127c5c383257"), "12.3.1-linux_amd64": ("node-v12.3.1-linux-x64.tar.xz", "node-v12.3.1-linux-x64", "46f52868c0643fe0d167ce24c3c873880c8e1494276c89c07114fb099da4f75a"), "12.3.1-windows_amd64": ("node-v12.3.1-win-x64.zip", "node-v12.3.1-win-x64", "aac3c4543f846c7ebf63e1498dec7955119dffffe65722bd8c6d2124ed4ecbd7"), "12.4.0-darwin_amd64": ("node-v12.4.0-darwin-x64.tar.gz", "node-v12.4.0-darwin-x64", "aaff97d59cda775165ef966ae74e70f55f3267e86d735ed3740ae9bf1d40531e"), "12.4.0-linux_arm64": ("node-v12.4.0-linux-arm64.tar.xz", "node-v12.4.0-linux-arm64", "bb2e7eabebdceb52424516dabce94cb37f55419e6ed19493916843a323c423cd"), "12.4.0-linux_amd64": ("node-v12.4.0-linux-x64.tar.xz", "node-v12.4.0-linux-x64", "9aec6a2a50c1791704a6069cbda6da62781361e44814d024e8bbaaf0deb41c5e"), "12.4.0-windows_amd64": ("node-v12.4.0-win-x64.zip", "node-v12.4.0-win-x64", "ec8623e2528a35d3219200308e7ed41e24d4f7cd96530a4e6ac2513e44f7fad1"), "12.5.0-darwin_amd64": ("node-v12.5.0-darwin-x64.tar.gz", "node-v12.5.0-darwin-x64", "a9ba9f584f015f1705063c10dd8d84d43f5b09dc7ecf4ee3968ab1ff1fe5d2b5"), "12.5.0-linux_arm64": ("node-v12.5.0-linux-arm64.tar.xz", "node-v12.5.0-linux-arm64", "d43b71a97f5484d13b655a8a0c1b1c0fc7e83b3719063cc362fe557d6e26bd69"), "12.5.0-linux_amd64": ("node-v12.5.0-linux-x64.tar.xz", "node-v12.5.0-linux-x64", "37c0c539aae69370f3c014cc4947748ce45ac5fa560f9b085724f22029834b27"), "12.5.0-windows_amd64": ("node-v12.5.0-win-x64.zip", "node-v12.5.0-win-x64", "f1b426fcd39ffdfec5d8ba60c6842cc11e9f49269cd49bc34c4fcee0517ddf66"), "12.6.0-darwin_amd64": ("node-v12.6.0-darwin-x64.tar.gz", "node-v12.6.0-darwin-x64", "004b7992a2621eb35a47c94d258510ca5744b5a8072364f235dc7e3d4bff7457"), "12.6.0-linux_arm64": ("node-v12.6.0-linux-arm64.tar.xz", "node-v12.6.0-linux-arm64", "b7a6580f0c5406b990b3c9f0d91297b103e38e2752b8b745c4d15310a9dd79d1"), "12.6.0-linux_amd64": ("node-v12.6.0-linux-x64.tar.xz", "node-v12.6.0-linux-x64", "1ac14567e2be5562df209900e28430bd11575d985a85e8a6df2743428570de33"), "12.6.0-windows_amd64": ("node-v12.6.0-win-x64.zip", "node-v12.6.0-win-x64", "0c5ac670c5bb0ea0d389bb7269cb84104702826f791a1d057eae02cdb9eed717"), "12.7.0-darwin_amd64": ("node-v12.7.0-darwin-x64.tar.gz", "node-v12.7.0-darwin-x64", "1a76bea7f7ed8c5c921852269ddd1300c9baba2f1e3f0377200a22c22cdea177"), "12.7.0-linux_arm64": ("node-v12.7.0-linux-arm64.tar.xz", "node-v12.7.0-linux-arm64", "abc4500eff8437503d475726b8ac2ed3463d2982bd66925a782f91b7d96e31de"), "12.7.0-linux_amd64": ("node-v12.7.0-linux-x64.tar.xz", "node-v12.7.0-linux-x64", "95867fdcfd4f821d84b3dd9fab5803fb29e093e911f2ab3c7111bcaf8bd5b9da"), "12.7.0-windows_amd64": ("node-v12.7.0-win-x64.zip", "node-v12.7.0-win-x64", "68802316ca4eb4d72ec5f9ff837752a6ec8cd73537ad7c346f30899ee523f4b7"), "12.8.0-darwin_amd64": ("node-v12.8.0-darwin-x64.tar.gz", "node-v12.8.0-darwin-x64", "5229571a1736befd6426dc0a6907be416e9f5c24695e3ef275ed2ba70f496499"), "12.8.0-linux_arm64": ("node-v12.8.0-linux-arm64.tar.xz", "node-v12.8.0-linux-arm64", "9f22aff38a8622b05821129f69dbe90695e01166f55c8d2a39b6c6a5aef8c6a8"), "12.8.0-linux_amd64": ("node-v12.8.0-linux-x64.tar.xz", "node-v12.8.0-linux-x64", "b6a9ab2e6e872375e0e27eda0698820a64495b31b1beab36cc54f9876b3a2052"), "12.8.0-windows_amd64": ("node-v12.8.0-win-x64.zip", "node-v12.8.0-win-x64", "b295aedebde069c4148534a9dfb2394ceba28cf367ddd8204a27d69c095a9e00"), "12.8.1-darwin_amd64": ("node-v12.8.1-darwin-x64.tar.gz", "node-v12.8.1-darwin-x64", "caccf8b409af342e35672cc766430587664f88d01dab622a5de44c8be1336e44"), "12.8.1-linux_arm64": ("node-v12.8.1-linux-arm64.tar.xz", "node-v12.8.1-linux-arm64", "3707240c402aae0b5879ce1ba17b32ebd224d47f5147639c6881a1b71ce65383"), "12.8.1-linux_amd64": ("node-v12.8.1-linux-x64.tar.xz", "node-v12.8.1-linux-x64", "1c7cf61cb8fa98a76d92445823d6dd1649e985899e16900b39eacdd8cd4094f3"), "12.8.1-windows_amd64": ("node-v12.8.1-win-x64.zip", "node-v12.8.1-win-x64", "c81ecaa03dc882dde36087c854e4831c13d3eb237f262f9ce74ccc6f156684da"), "12.9.0-darwin_amd64": ("node-v12.9.0-darwin-x64.tar.gz", "node-v12.9.0-darwin-x64", "24c1f0c93e485961446814662db942f1b309d843fb4ecbe50466d9857a51b343"), "12.9.0-linux_arm64": ("node-v12.9.0-linux-arm64.tar.xz", "node-v12.9.0-linux-arm64", "f7f6f102d097d64eba26f84f2760597f9831886ef7d0db3cba88459847f2743d"), "12.9.0-linux_amd64": ("node-v12.9.0-linux-x64.tar.xz", "node-v12.9.0-linux-x64", "7110bdd16e397870142ff0e8d92d4a4502d43ec047d970c843a9a4e5f9e79283"), "12.9.0-windows_amd64": ("node-v12.9.0-win-x64.zip", "node-v12.9.0-win-x64", "b5f05deb31ac04b9c3a487542daf151e01c05017403a56ba443da623f36b153b"), "12.9.1-darwin_amd64": ("node-v12.9.1-darwin-x64.tar.gz", "node-v12.9.1-darwin-x64", "9aaf29d30056e2233fd15dfac56eec12e8342d91bb6c13d54fb5e599383dddb9"), "12.9.1-linux_arm64": ("node-v12.9.1-linux-arm64.tar.xz", "node-v12.9.1-linux-arm64", "b6d986faf3a77b6c353c344645c93f2a0e0436c43865e6c215a24301a076a11f"), "12.9.1-linux_amd64": ("node-v12.9.1-linux-x64.tar.xz", "node-v12.9.1-linux-x64", "680a1263c9f5f91adadcada549f0a9c29f1b26d09658d2b501c334c3f63719e5"), "12.9.1-windows_amd64": ("node-v12.9.1-win-x64.zip", "node-v12.9.1-win-x64", "6a4e54bda091bd02dbd8ff1b9f6671e036297da012a53891e3834d4bf4bed297"), "12.10.0-darwin_amd64": ("node-v12.10.0-darwin-x64.tar.gz", "node-v12.10.0-darwin-x64", "4c16d1f6454f5dc3977ad00cea123792b8d4e1d6d1bf42bbc82a4202039a5971"), "12.10.0-linux_arm64": ("node-v12.10.0-linux-arm64.tar.xz", "node-v12.10.0-linux-arm64", "fa1afb9e8cfd964867351b6dac6cd918784ff309291612251c4745aeb0b10e02"), "12.10.0-linux_amd64": ("node-v12.10.0-linux-x64.tar.xz", "node-v12.10.0-linux-x64", "e8d2e6b62dd8183dc59a139a9ca3edc7c419a0d3d92e90fea9cb0ad52489843a"), "12.10.0-windows_amd64": ("node-v12.10.0-win-x64.zip", "node-v12.10.0-win-x64", "de341476711c71f82d06fabcc9874c1ff9e865fd7274334d64a67b1e31a53fd0"), "12.11.0-darwin_amd64": ("node-v12.11.0-darwin-x64.tar.gz", "node-v12.11.0-darwin-x64", "a0fd5c1c9e67099f52b73c732aa52a878c6ff67f50ff0e94c2c5628a87455130"), "12.11.0-linux_arm64": ("node-v12.11.0-linux-arm64.tar.xz", "node-v12.11.0-linux-arm64", "d1126439ff6d079b682a7cd6308cb226afd247e5cb0f7cc60cfb0e609a096622"), "12.11.0-linux_amd64": ("node-v12.11.0-linux-x64.tar.xz", "node-v12.11.0-linux-x64", "c0dc88110ac3ee095e3d09077545435b72d4cd52e35c43cd3fa666cff7446d46"), "12.11.0-windows_amd64": ("node-v12.11.0-win-x64.zip", "node-v12.11.0-win-x64", "457157358bd029196d47865dee66f8c263a3a4a5a8cdd1c0a8cf43ac45e9eda3"), "12.11.1-darwin_amd64": ("node-v12.11.1-darwin-x64.tar.gz", "node-v12.11.1-darwin-x64", "7dd24ee6d81668e65ce1b77b4bb4cdaf517d8f80bb19740d286606028506970b"), "12.11.1-linux_arm64": ("node-v12.11.1-linux-arm64.tar.xz", "node-v12.11.1-linux-arm64", "12777294258da80410fd7d5cbed46ead5d3cabacf376ee10ddb9e1a335b114e7"), "12.11.1-linux_amd64": ("node-v12.11.1-linux-x64.tar.xz", "node-v12.11.1-linux-x64", "00f7a0b59ff38c1c74d81732df925aa5ac5788b58412437327421f796878793d"), "12.11.1-windows_amd64": ("node-v12.11.1-win-x64.zip", "node-v12.11.1-win-x64", "0bab4473cd2ba03511b8859ddf2202bb012d5c541f9d57b555a5bbbf101fcb35"), "12.12.0-darwin_amd64": ("node-v12.12.0-darwin-x64.tar.gz", "node-v12.12.0-darwin-x64", "14a98237e8859bc22695719dbc2e9db5529a33ada0c6c377df4dc27b5622ffbb"), "12.12.0-linux_arm64": ("node-v12.12.0-linux-arm64.tar.xz", "node-v12.12.0-linux-arm64", "ad536aba218df64d8e901b28985f4c5f72f634bf903c449b0c84929f6940853c"), "12.12.0-linux_amd64": ("node-v12.12.0-linux-x64.tar.xz", "node-v12.12.0-linux-x64", "e3a38dfaf1233a3c43c2528869af52e74575781984369a5b705c89d84dfa3ac2"), "12.12.0-windows_amd64": ("node-v12.12.0-win-x64.zip", "node-v12.12.0-win-x64", "930e7bcd2ae5bcb1d4163c2adf09a392ed0e9a824b069d19daeb4f9f3430a195"), "12.13.0-darwin_amd64": ("node-v12.13.0-darwin-x64.tar.gz", "node-v12.13.0-darwin-x64", "49a7374670a111b033ce16611b20fd1aafd3296bbc662b184fe8fb26a29c22cc"), "12.13.0-linux_arm64": ("node-v12.13.0-linux-arm64.tar.xz", "node-v12.13.0-linux-arm64", "d65b3ce27639f15ae22941e3ff98a1c900aa9049fcc15518038615b0676037d5"), "12.13.0-linux_amd64": ("node-v12.13.0-linux-x64.tar.xz", "node-v12.13.0-linux-x64", "7a57ef2cb3036d7eacd50ae7ba07245a28336a93652641c065f747adb2a356d9"), "12.13.0-windows_amd64": ("node-v12.13.0-win-x64.zip", "node-v12.13.0-win-x64", "6f920cebeecb4957b4ef0def6d9b04c49d4582864f8d1a207ce8d0665865781a"), "12.13.1-darwin_amd64": ("node-v12.13.1-darwin-x64.tar.gz", "node-v12.13.1-darwin-x64", "12d14c7fbd98876a163a2b7e0aeb13657dc3e967e993efaf2dcacbe475a285e8"), "12.13.1-linux_arm64": ("node-v12.13.1-linux-arm64.tar.xz", "node-v12.13.1-linux-arm64", "3aef0178a8ab74c8e5c133e23d1896e53ed5c273415d165a0e72e005f5467cba"), "12.13.1-linux_amd64": ("node-v12.13.1-linux-x64.tar.xz", "node-v12.13.1-linux-x64", "aca06db37589966829b1ef0f163a5859b156a1d8e51b415bf47590f667c30a25"), "12.13.1-windows_amd64": ("node-v12.13.1-win-x64.zip", "node-v12.13.1-win-x64", "db33fb758ba49b96d073311ef9e9134b51bf96246ffd938909b2e02c65a6e890"), "12.14.0-darwin_amd64": ("node-v12.14.0-darwin-x64.tar.gz", "node-v12.14.0-darwin-x64", "5f3170b346b29e6902c0ca7e0993e3d1b4b650615348aa866de17ad965377048"), "12.14.0-linux_arm64": ("node-v12.14.0-linux-arm64.tar.xz", "node-v12.14.0-linux-arm64", "733b4f71ccdf114038bbe0f20574a1e8f4f60b53d39caf445f518745596eadda"), "12.14.0-linux_amd64": ("node-v12.14.0-linux-x64.tar.xz", "node-v12.14.0-linux-x64", "82ae74ee0a204de7ebf7767eaa8e382518d9b49668dcbb5bd7fd003154445d1f"), "12.14.0-windows_amd64": ("node-v12.14.0-win-x64.zip", "node-v12.14.0-win-x64", "526f4b01ffb270bdd8213b58b38843fa3c88f03c89b1898c641bc0e32607913e"), "12.14.1-darwin_amd64": ("node-v12.14.1-darwin-x64.tar.gz", "node-v12.14.1-darwin-x64", "0be10a28737527a1e5e3784d3ad844d742fe8b0718acd701fd48f718fd3af78f"), "12.14.1-linux_arm64": ("node-v12.14.1-linux-arm64.tar.xz", "node-v12.14.1-linux-arm64", "6cd28a5e6340f596aec8dbfd6720f444f011e6b9018622290a60dbd17f9baff6"), "12.14.1-linux_amd64": ("node-v12.14.1-linux-x64.tar.xz", "node-v12.14.1-linux-x64", "07cfcaa0aa9d0fcb6e99725408d9e0b07be03b844701588e3ab5dbc395b98e1b"), "12.14.1-windows_amd64": ("node-v12.14.1-win-x64.zip", "node-v12.14.1-win-x64", "1f96ccce3ba045ecea3f458e189500adb90b8bc1a34de5d82fc10a5bf66ce7e3"), "12.15.0-darwin_amd64": ("node-v12.15.0-darwin-x64.tar.gz", "node-v12.15.0-darwin-x64", "b6449cec39ac15b37abe4e59ef0eae50dcdfbf060c5276a01cc590f2a3372b7d"), "12.15.0-linux_arm64": ("node-v12.15.0-linux-arm64.tar.xz", "node-v12.15.0-linux-arm64", "c582cb65a0ec7f648618d3d33b4f87c374a3f930518b57eca1693828c965d6e5"), "12.15.0-linux_amd64": ("node-v12.15.0-linux-x64.tar.xz", "node-v12.15.0-linux-x64", "63df953deb091c1500e1044bef01d1953117970e757e74e90d915e1a4a0d1c9c"), "12.15.0-windows_amd64": ("node-v12.15.0-win-x64.zip", "node-v12.15.0-win-x64", "48b29cab597962f12b0aac081522e6192bc8642c582cd0fc1bf51557273888da"), "12.16.0-darwin_amd64": ("node-v12.16.0-darwin-x64.tar.gz", "node-v12.16.0-darwin-x64", "af3b9bbfdd9ae1b46390e7deeb77a2c1d8dbc6fb4171bbb0cfe8686fc1ecef1d"), "12.16.0-linux_arm64": ("node-v12.16.0-linux-arm64.tar.xz", "node-v12.16.0-linux-arm64", "f2d97187bd8d3175bf6266193107a030bfb827003d57ba6dd21de16aa622548d"), "12.16.0-linux_amd64": ("node-v12.16.0-linux-x64.tar.xz", "node-v12.16.0-linux-x64", "e8c38659540766db9d85bd7325ba8cce8ded56204f84507f73fdb41a26d9bd73"), "12.16.0-windows_amd64": ("node-v12.16.0-win-x64.zip", "node-v12.16.0-win-x64", "9a590dd064b491fbd40b366ae4a119fe6cef516a25fb4d78d7c2a64b37574da8"), "12.16.1-darwin_amd64": ("node-v12.16.1-darwin-x64.tar.gz", "node-v12.16.1-darwin-x64", "34895bce210ca4b3cf19cd480e6563588880dd7f5d798f3782e3650580d35920"), "12.16.1-linux_arm64": ("node-v12.16.1-linux-arm64.tar.xz", "node-v12.16.1-linux-arm64", "396c43ba507b8ec33c70cdc6f73b4a7c725bddb3f74a85a8b8ed77b436856fed"), "12.16.1-linux_amd64": ("node-v12.16.1-linux-x64.tar.xz", "node-v12.16.1-linux-x64", "b826753f14df9771609ffb8e7d2cc4cb395247cb704cf0cea0f04132d9cf3505"), "12.16.1-windows_amd64": ("node-v12.16.1-win-x64.zip", "node-v12.16.1-win-x64", "b93b73572c5e495154a9823d494de5729c77d1c83b041171154c4b5f3f76b590"), "12.16.2-darwin_amd64": ("node-v12.16.2-darwin-x64.tar.gz", "node-v12.16.2-darwin-x64", "483954e311a5ff649ddf32b473f635a58890790d284b5788bdd8d7ff850c6db2"), "12.16.2-linux_arm64": ("node-v12.16.2-linux-arm64.tar.xz", "node-v12.16.2-linux-arm64", "c88005467f6dcdb621d454b35ec39bb42e165c6a2e1cee74cabcdc01af307e81"), "12.16.2-linux_amd64": ("node-v12.16.2-linux-x64.tar.xz", "node-v12.16.2-linux-x64", "f94a6eb06e80ef2794ebf51a2baed0b89ed307d3196ab5579f16c0fa7cc62901"), "12.16.2-windows_amd64": ("node-v12.16.2-win-x64.zip", "node-v12.16.2-win-x64", "f34303a49384aee2e5daab5f248c5a719e850a9ebb19e7098fe2bfffb26efe03"), "12.16.3-darwin_amd64": ("node-v12.16.3-darwin-x64.tar.gz", "node-v12.16.3-darwin-x64", "0718812b3ab8e77e8d1354f4d10428ae99d78f721bdcceee527c4b592ea7fed0"), "12.16.3-linux_arm64": ("node-v12.16.3-linux-arm64.tar.xz", "node-v12.16.3-linux-arm64", "8311f513a7d1911200502dd3e00142cef56d600c851d5870f68d939802205b73"), "12.16.3-linux_amd64": ("node-v12.16.3-linux-x64.tar.xz", "node-v12.16.3-linux-x64", "1956e196e3c3c8ef5f0c45db76d7c1245af4ccdda2b7ab30a57ce91d6e165caa"), "12.16.3-windows_amd64": ("node-v12.16.3-win-x64.zip", "node-v12.16.3-win-x64", "d0bb0e0b1f1a948529ddd543e2cfe0bfe209eb843defc70217b3d2f84cbf3b78"), "12.17.0-darwin_amd64": ("node-v12.17.0-darwin-x64.tar.gz", "node-v12.17.0-darwin-x64", "8c3b9459462b8adaa10549f4da6a5ff5cdfaf7140a8a8020a87cc96d79022cc0"), "12.17.0-linux_arm64": ("node-v12.17.0-linux-arm64.tar.xz", "node-v12.17.0-linux-arm64", "54a0dbb203ff1700341d258cefa304bd31044bf0226e9e59a0de1128418cb5aa"), "12.17.0-linux_amd64": ("node-v12.17.0-linux-x64.tar.xz", "node-v12.17.0-linux-x64", "988653492a4f422fb112421c5c9d1c140146b665b480c2b24c66fffdd0b88a88"), "12.17.0-windows_amd64": ("node-v12.17.0-win-x64.zip", "node-v12.17.0-win-x64", "f3a64dc6ad48577f1f81521aa144c028beb7e353d0fcd05d7b420a72a84f50fc"), "12.18.0-darwin_amd64": ("node-v12.18.0-darwin-x64.tar.gz", "node-v12.18.0-darwin-x64", "11fe50e670315d2d3c46317d23f7a019f46a3d08b534fbadee9a1bc3d4f81852"), "12.18.0-linux_arm64": ("node-v12.18.0-linux-arm64.tar.xz", "node-v12.18.0-linux-arm64", "51b301102984ff73a74894396b774d00259bb3bb8c1de7c82674713acec7a214"), "12.18.0-linux_amd64": ("node-v12.18.0-linux-x64.tar.xz", "node-v12.18.0-linux-x64", "2febc2506c298048bfddf896056be6191c1f08716876d960a4990bd63a7fe05a"), "12.18.0-windows_amd64": ("node-v12.18.0-win-x64.zip", "node-v12.18.0-win-x64", "ca73a989eba5e863971cb600e5520cb4c5edf9c600fe8f76d9e4771ad03b5d08"), "12.18.1-darwin_amd64": ("node-v12.18.1-darwin-x64.tar.gz", "node-v12.18.1-darwin-x64", "80e1d644fe78838da47cd16de234b612c20e06ffe14447125db9622e381ed1ba"), "12.18.1-linux_arm64": ("node-v12.18.1-linux-arm64.tar.xz", "node-v12.18.1-linux-arm64", "b6683e6e887c6c44a3fe9ff419e80d36eaafed39eb2c2d1b04ee54b440a03217"), "12.18.1-linux_amd64": ("node-v12.18.1-linux-x64.tar.xz", "node-v12.18.1-linux-x64", "863f816967e297c9eb221ad3cf32521f7ac46fffc66750e60f159ed63809affa"), "12.18.1-windows_amd64": ("node-v12.18.1-win-x64.zip", "node-v12.18.1-win-x64", "93039ebfc7c5bfad168b015f77667757925070fff3ae84c3eb73348b3123a82a"), "12.18.2-darwin_amd64": ("node-v12.18.2-darwin-x64.tar.gz", "node-v12.18.2-darwin-x64", "6e6e7311943e4f3880db5038b8b8034a30469342fe436c8aaacf2997dfa305a6"), "12.18.2-linux_arm64": ("node-v12.18.2-linux-arm64.tar.xz", "node-v12.18.2-linux-arm64", "d7d3a05f36de9eb079b7b25e0fc1aaa0c960afdf36fb24b498f7303365eb945c"), "12.18.2-linux_amd64": ("node-v12.18.2-linux-x64.tar.xz", "node-v12.18.2-linux-x64", "b8dc634798ee783482c2ae1755bd7dff09d83fa7bb037cdc370b601d0a5e5cbb"), "12.18.2-windows_amd64": ("node-v12.18.2-win-x64.zip", "node-v12.18.2-win-x64", "91fdd5b5df16873c63541bc844c9eb66870d366b2076d114f9ab7528b5e2f9a3"), "12.18.3-darwin_amd64": ("node-v12.18.3-darwin-x64.tar.gz", "node-v12.18.3-darwin-x64", "af376caf114bdd5d7e566dbf7590e9077ffc01f9b2692eb2651f31d7219a30bb"), "12.18.3-linux_arm64": ("node-v12.18.3-linux-arm64.tar.xz", "node-v12.18.3-linux-arm64", "d330aab40029afc34f8b5d1abc2e67be233df4b31331cf08d538be2a666737bb"), "12.18.3-linux_amd64": ("node-v12.18.3-linux-x64.tar.xz", "node-v12.18.3-linux-x64", "b79e02e48d0a1ee4cd4ae138de97fda5413542f2a4f441a7d0e189697b8da563"), "12.18.3-windows_amd64": ("node-v12.18.3-win-x64.zip", "node-v12.18.3-win-x64", "1fcd30c09f0ac9fbecf45161519eff2cf621c199eef4663b1db41b3f2fef4041"), "13.0.0-darwin_amd64": ("node-v13.0.0-darwin-x64.tar.gz", "node-v13.0.0-darwin-x64", "612556a8c7e6b4cd08f6134b8afe5a05bf84c0121225fa9c542be1c98af04a35"), "13.0.0-linux_arm64": ("node-v13.0.0-linux-arm64.tar.xz", "node-v13.0.0-linux-arm64", "6ed882e17123861b5b81683de2b2c86be02c5916ef0beda04fd176329888fd12"), "13.0.0-linux_amd64": ("node-v13.0.0-linux-x64.tar.xz", "node-v13.0.0-linux-x64", "799d890f00a3a2a7415b813b286d32d38573df6525bc8ef80f40077cdd210d39"), "13.0.0-windows_amd64": ("node-v13.0.0-win-x64.zip", "node-v13.0.0-win-x64", "8ffcefde5e080d70790a9a2e1aab0724cc88b5526d5128b53fc59bf94f6ad5de"), "13.0.1-darwin_amd64": ("node-v13.0.1-darwin-x64.tar.gz", "node-v13.0.1-darwin-x64", "25621359a51ff218ecf4bb2ffc657815154230a967224f22b722840a2b9ad061"), "13.0.1-linux_arm64": ("node-v13.0.1-linux-arm64.tar.xz", "node-v13.0.1-linux-arm64", "ad6e051aede160d8be5cbab9c60a155b06a5696e8088d895e6eff3dd36f9a688"), "13.0.1-linux_amd64": ("node-v13.0.1-linux-x64.tar.xz", "node-v13.0.1-linux-x64", "d5657c19bb30b267bf2e0f2b61f6a96d8955aa30b69240f22d3fd2c65e123cf7"), "13.0.1-windows_amd64": ("node-v13.0.1-win-x64.zip", "node-v13.0.1-win-x64", "1a2552b630651e08e9027339f71a65fbe3944540f0875563ea25639a091e1f33"), "13.1.0-darwin_amd64": ("node-v13.1.0-darwin-x64.tar.gz", "node-v13.1.0-darwin-x64", "6501c1bcf2babb5b9c81dcff8b52021f726da8f6ee28df1637acade1a16c7d39"), "13.1.0-linux_arm64": ("node-v13.1.0-linux-arm64.tar.xz", "node-v13.1.0-linux-arm64", "646d597e6b0dc400429e46b703a5135c77bd71e653ea4c8254d0b60c17b6ec1d"), "13.1.0-linux_amd64": ("node-v13.1.0-linux-x64.tar.xz", "node-v13.1.0-linux-x64", "2eecb5a4b7975c3b406bee36b12c9a29e8bedf9553c88cad310b8f076db00881"), "13.1.0-windows_amd64": ("node-v13.1.0-win-x64.zip", "node-v13.1.0-win-x64", "d735e97bdeb7b74551b9d165c708a3fdea4dbb3801a65e70f6d6ae3539d48a03"), "13.2.0-darwin_amd64": ("node-v13.2.0-darwin-x64.tar.gz", "node-v13.2.0-darwin-x64", "2bcba358ef68ea21655728126c678063c60119e18e65d04f615d6b22dba8f7a5"), "13.2.0-linux_arm64": ("node-v13.2.0-linux-arm64.tar.xz", "node-v13.2.0-linux-arm64", "e6c4a5fe57585f69a20bd028275db31f43de421308e31d117f319b577210e527"), "13.2.0-linux_amd64": ("node-v13.2.0-linux-x64.tar.xz", "node-v13.2.0-linux-x64", "366df8a38b522a5899c3f48d8c9e359b3370495cf84867b2673dc10483adbdef"), "13.2.0-windows_amd64": ("node-v13.2.0-win-x64.zip", "node-v13.2.0-win-x64", "e2866a8f53c45bb544d7b00aed1e5fddbbd7071bd331b02e66a6ce7c38c6918c"), "13.3.0-darwin_amd64": ("node-v13.3.0-darwin-x64.tar.gz", "node-v13.3.0-darwin-x64", "187ea9028daa6d9abad9c1cbb4e12ba51427c3748da29eae616fa352c0f4cd49"), "13.3.0-linux_arm64": ("node-v13.3.0-linux-arm64.tar.xz", "node-v13.3.0-linux-arm64", "fb201a908bea36be828eee36a7cd898c67ad4ae6846982f393466e2b8b826c16"), "13.3.0-linux_amd64": ("node-v13.3.0-linux-x64.tar.xz", "node-v13.3.0-linux-x64", "b208393ae411bd55188e903171901765aaa8381c08155e4a7b34174737a1bc65"), "13.3.0-windows_amd64": ("node-v13.3.0-win-x64.zip", "node-v13.3.0-win-x64", "82e0f43aea81374a8028a7d3c9993245c4910ac95cd0f66ee5b29b940a6f3d93"), "13.4.0-darwin_amd64": ("node-v13.4.0-darwin-x64.tar.gz", "node-v13.4.0-darwin-x64", "4de08a89054416595228d6ff40fcf20c375d00556f2e95dfde8602cbb42c0b6e"), "13.4.0-linux_arm64": ("node-v13.4.0-linux-arm64.tar.xz", "node-v13.4.0-linux-arm64", "382d5fb2983ab55d495e42145e812b3859d2a311e426307fd373f47825d55fe9"), "13.4.0-linux_amd64": ("node-v13.4.0-linux-x64.tar.xz", "node-v13.4.0-linux-x64", "5cab49240c521efb80efd0a0bb3ba1071e5498c55ecbebd723d78648c91b1cc8"), "13.4.0-windows_amd64": ("node-v13.4.0-win-x64.zip", "node-v13.4.0-win-x64", "56de9ed20332cdf22bb9b048c3fb3977662ef2de9d2e8ac2d2a27d28e9be276f"), "13.5.0-darwin_amd64": ("node-v13.5.0-darwin-x64.tar.gz", "node-v13.5.0-darwin-x64", "3322c601dc032677e5b5f87f393d4b1d70073bcab24fe74378eff8eb49364001"), "13.5.0-linux_arm64": ("node-v13.5.0-linux-arm64.tar.xz", "node-v13.5.0-linux-arm64", "fe52f4e3a60a372138102da741e5b5d34310a74b3fc6f2000e4c254e3f0c4f51"), "13.5.0-linux_amd64": ("node-v13.5.0-linux-x64.tar.xz", "node-v13.5.0-linux-x64", "4d2b2cea13388658e95d8b2dc7ff918718155473ef6ef38928d92eb8cbbe210a"), "13.5.0-windows_amd64": ("node-v13.5.0-win-x64.zip", "node-v13.5.0-win-x64", "e286a84f2861b9f3c0290a9afbbecd09f303a39b2573af001ef8a4c1413eee7c"), "13.6.0-darwin_amd64": ("node-v13.6.0-darwin-x64.tar.gz", "node-v13.6.0-darwin-x64", "da13adb864777b322dda7af20410a9b0c63aa69de4b5574008d1e6910768bf69"), "13.6.0-linux_arm64": ("node-v13.6.0-linux-arm64.tar.xz", "node-v13.6.0-linux-arm64", "1f34ed8668207e03cb832763319a82b4c753839a3655207adc5bbe52f65e154a"), "13.6.0-linux_amd64": ("node-v13.6.0-linux-x64.tar.xz", "node-v13.6.0-linux-x64", "00f01315a867da16d1638f7a02966c608e344ac6c5b7d04d1fdae3138fa9d798"), "13.6.0-windows_amd64": ("node-v13.6.0-win-x64.zip", "node-v13.6.0-win-x64", "7fe37b34a4673a071bea52fcaf913ec422cf6fd79fd025bfb22de42ccc77f386"), "13.7.0-darwin_amd64": ("node-v13.7.0-darwin-x64.tar.gz", "node-v13.7.0-darwin-x64", "866ea9bdbd7b734c593af96b946397d9c7cb9c291aa8ea52a6a2af271b972169"), "13.7.0-linux_arm64": ("node-v13.7.0-linux-arm64.tar.xz", "node-v13.7.0-linux-arm64", "2823b199c7c4e6c547caf95139e28341444a5ffc52481a5ba704067291771579"), "13.7.0-linux_amd64": ("node-v13.7.0-linux-x64.tar.xz", "node-v13.7.0-linux-x64", "02578025b82de24f4cfb3ffeb3824990431d739d09220f2db9ef9f454f475470"), "13.7.0-windows_amd64": ("node-v13.7.0-win-x64.zip", "node-v13.7.0-win-x64", "26b41de81ead8f51de2964d7c7526533f46387ff436b61596e09d678bcd7503f"), "13.8.0-darwin_amd64": ("node-v13.8.0-darwin-x64.tar.gz", "node-v13.8.0-darwin-x64", "ae480e2b124cb55667763848b8ec0fde1bc35d5e0b76debe881034689a68eaea"), "13.8.0-linux_arm64": ("node-v13.8.0-linux-arm64.tar.xz", "node-v13.8.0-linux-arm64", "f1d4167a6911e42d836a5459c992cdaf35a03ab0700ea80831d7df5d706d1baf"), "13.8.0-linux_amd64": ("node-v13.8.0-linux-x64.tar.xz", "node-v13.8.0-linux-x64", "47a8cb675358f2ff534ad3d6709f14de0433f76d3af92cf389b8dcc78a1236ad"), "13.8.0-windows_amd64": ("node-v13.8.0-win-x64.zip", "node-v13.8.0-win-x64", "f198f3e4b120fc84b61d12e7222530c5bb9c6f864735bb41a8db1cf1b94a64c3"), "13.9.0-darwin_amd64": ("node-v13.9.0-darwin-x64.tar.gz", "node-v13.9.0-darwin-x64", "b2a5a539b9b2d1733bda301913c99d220968de801bf313b762fa932820ea797b"), "13.9.0-linux_arm64": ("node-v13.9.0-linux-arm64.tar.xz", "node-v13.9.0-linux-arm64", "c668afc06e4094b68ae758b823fc3244b34f0468fc0c2feee45278788989b8a1"), "13.9.0-linux_amd64": ("node-v13.9.0-linux-x64.tar.xz", "node-v13.9.0-linux-x64", "f1e093303468032a1ecb0e290e19b43bf7771d4efbf589560df0060149614272"), "13.9.0-windows_amd64": ("node-v13.9.0-win-x64.zip", "node-v13.9.0-win-x64", "ec0a55bb703906494e738cd3d09e3274b34f0a3fbe207b9e67502092ed017500"), "13.10.0-darwin_amd64": ("node-v13.10.0-darwin-x64.tar.gz", "node-v13.10.0-darwin-x64", "67269fb9061402e446bb61776be2e5d0ec330b5274326df77979698d05f503da"), "13.10.0-linux_arm64": ("node-v13.10.0-linux-arm64.tar.xz", "node-v13.10.0-linux-arm64", "adb145535d2e03fe508fa7a34897a130ba903d6f718a21cd29d1760e298f715b"), "13.10.0-linux_amd64": ("node-v13.10.0-linux-x64.tar.xz", "node-v13.10.0-linux-x64", "62081af005257d3db7ebd5a64b43f1a8e4a57bafd229be3acd7ce2704607eaac"), "13.10.0-windows_amd64": ("node-v13.10.0-win-x64.zip", "node-v13.10.0-win-x64", "d428b6d3e127716191fa6df630d03a25d3186fda1ede04a9a8d5c07e526dbb9e"), "13.10.1-darwin_amd64": ("node-v13.10.1-darwin-x64.tar.gz", "node-v13.10.1-darwin-x64", "a6a66fdc79e70267fc191f10ee045793240974e1268fdea6c2d28afbc1d635e8"), "13.10.1-linux_arm64": ("node-v13.10.1-linux-arm64.tar.xz", "node-v13.10.1-linux-arm64", "f73effcef784251e53b5e3938b8316c36bd49628c3588de7976e8569e560c12c"), "13.10.1-linux_amd64": ("node-v13.10.1-linux-x64.tar.xz", "node-v13.10.1-linux-x64", "69d69165282d88f321e751f03ee5d3370db65e5ca4c587af24994b12f31d4827"), "13.10.1-windows_amd64": ("node-v13.10.1-win-x64.zip", "node-v13.10.1-win-x64", "f9d0aac273a44dbd52dd8cdb3d6c684b68b860d128af58d77a0c08f39f51f229"), "13.11.0-darwin_amd64": ("node-v13.11.0-darwin-x64.tar.gz", "node-v13.11.0-darwin-x64", "2d87989fb1e0d425667c5ca9893cb3ecfb30cd3344d543870246d65f8d9b892f"), "13.11.0-linux_arm64": ("node-v13.11.0-linux-arm64.tar.xz", "node-v13.11.0-linux-arm64", "63ce9871b9802a1f021c84f282c63e1890524a32dc97d3e7a7ab8d52b4bde19e"), "13.11.0-linux_amd64": ("node-v13.11.0-linux-x64.tar.xz", "node-v13.11.0-linux-x64", "c127cf38f9a56d97646eb1fedb93712f304950c7143705de7180a701becc0fbb"), "13.11.0-windows_amd64": ("node-v13.11.0-win-x64.zip", "node-v13.11.0-win-x64", "dc93aa5a82988f741dca6f1869c7b1aeda6f339293d13a968279a6dc9fcc8dd0"), "13.12.0-darwin_amd64": ("node-v13.12.0-darwin-x64.tar.gz", "node-v13.12.0-darwin-x64", "1fe3103610e8eb66ae71872ea1b4e868a638292a4e7ad0e41976a9fe417a09c7"), "13.12.0-linux_arm64": ("node-v13.12.0-linux-arm64.tar.xz", "node-v13.12.0-linux-arm64", "2e8c12e575fcceb2d6f46eb3c50c6bfa98e91540bddaf91ca1c0fe739619ca0b"), "13.12.0-linux_amd64": ("node-v13.12.0-linux-x64.tar.xz", "node-v13.12.0-linux-x64", "95eb1188872e243323cbc31fc80048be3fdfdda91505c62c80c599281de357ed"), "13.12.0-windows_amd64": ("node-v13.12.0-win-x64.zip", "node-v13.12.0-win-x64", "de8445794ecbcfe895f4775417d1e2cc023e2212b1f5d4ff5cc0ed6875f7c911"), "13.13.0-darwin_amd64": ("node-v13.13.0-darwin-x64.tar.gz", "node-v13.13.0-darwin-x64", "28ae2abedafb250a9bbe706650fd79d2b25273f6445adcc1d85c777359dc5390"), "13.13.0-linux_arm64": ("node-v13.13.0-linux-arm64.tar.xz", "node-v13.13.0-linux-arm64", "eded8da4633134cae0766a2f6f3c2237f8e728df77895c85607acaca13216226"), "13.13.0-linux_amd64": ("node-v13.13.0-linux-x64.tar.xz", "node-v13.13.0-linux-x64", "41d60cda7422f53156711626d670f9b5079075b1ecc6736aea99319fe36c20a6"), "13.13.0-windows_amd64": ("node-v13.13.0-win-x64.zip", "node-v13.13.0-win-x64", "79f2a39c1047666f2bbf2efe53c069a38b8f6ef18d569bf338463aea1914b89d"), "13.14.0-darwin_amd64": ("node-v13.14.0-darwin-x64.tar.gz", "node-v13.14.0-darwin-x64", "a56eb353fecd45f731d74fc77c58dde052320c1bc272de9b03151fbaf962feaf"), "13.14.0-linux_arm64": ("node-v13.14.0-linux-arm64.tar.xz", "node-v13.14.0-linux-arm64", "e4736df097846bbe8195a185cc67ada3410a1f8993949e516bbf62b62198d2a7"), "13.14.0-linux_amd64": ("node-v13.14.0-linux-x64.tar.xz", "node-v13.14.0-linux-x64", "9ab808ba3872d58e827ea60a6e43a352f59361bc8eb36fe0327a587086b466f9"), "13.14.0-windows_amd64": ("node-v13.14.0-win-x64.zip", "node-v13.14.0-win-x64", "8c6e77fac5e911a2e70b6ca34804b3b59b6a3c685ab4e3b17756397df86063fa"), "14.0.0-darwin_amd64": ("node-v14.0.0-darwin-x64.tar.gz", "node-v14.0.0-darwin-x64", "4e50cec7aeef91c6d00d08a3bab938358da182984aa549c2aeab9868e3342f55"), "14.0.0-linux_arm64": ("node-v14.0.0-linux-arm64.tar.xz", "node-v14.0.0-linux-arm64", "29c612fcdb40133171959b269878138bbfe7723d46681f70e2017ee30134e7ad"), "14.0.0-linux_amd64": ("node-v14.0.0-linux-x64.tar.xz", "node-v14.0.0-linux-x64", "a2aaaa621074e1b56bb751bda53ce726319fac617587443371c0a7742481e5b6"), "14.0.0-windows_amd64": ("node-v14.0.0-win-x64.zip", "node-v14.0.0-win-x64", "e8f73d4f2e9935df929360c09ae932ceb316784a7450b256024af5d01fe29b75"), "14.1.0-darwin_amd64": ("node-v14.1.0-darwin-x64.tar.gz", "node-v14.1.0-darwin-x64", "7f08bd365df4e7a5625ad393257f48e8cd79f77391ab87a64426b0c6448dd226"), "14.1.0-linux_arm64": ("node-v14.1.0-linux-arm64.tar.xz", "node-v14.1.0-linux-arm64", "9dd3a4867f679f40075e2a364d3b3566702139274da9fcd59a182198ff7c7b52"), "14.1.0-linux_amd64": ("node-v14.1.0-linux-x64.tar.xz", "node-v14.1.0-linux-x64", "959fab0c8ae0830f1ab987699cd2941cab97169991630a2e0c99db7c144f9e42"), "14.1.0-windows_amd64": ("node-v14.1.0-win-x64.zip", "node-v14.1.0-win-x64", "1d3890d0d2f996cce57bcb0206e49b67233623e3cdb50eee77b8acc8f006b955"), "14.2.0-darwin_amd64": ("node-v14.2.0-darwin-x64.tar.gz", "node-v14.2.0-darwin-x64", "2447241aefe71dea8ba1552549e4df2e894d1ac12203630db3af63d4ae35c016"), "14.2.0-linux_arm64": ("node-v14.2.0-linux-arm64.tar.xz", "node-v14.2.0-linux-arm64", "4587d2c52cd348094bd46ee4ee8cdfeb549462ead9b4aadc9cfc3c5fc3ba7215"), "14.2.0-linux_amd64": ("node-v14.2.0-linux-x64.tar.xz", "node-v14.2.0-linux-x64", "468cbd92271da8c0cacaa3fa432a73a332e398bade8ad7359a94aa8ab3cc3cca"), "14.2.0-windows_amd64": ("node-v14.2.0-win-x64.zip", "node-v14.2.0-win-x64", "99085f45a894e257123d7c729113cc00ed1413df432dbdce5fe53867e7c53b11"), "14.3.0-darwin_amd64": ("node-v14.3.0-darwin-x64.tar.gz", "node-v14.3.0-darwin-x64", "fd6a44303646f28b7e7577de687c2681cb565bef534e84deef44202e7919d7f3"), "14.3.0-linux_arm64": ("node-v14.3.0-linux-arm64.tar.xz", "node-v14.3.0-linux-arm64", "53bb110ea135ae3c819f535373ce1b779e86c7aa49a9b93fc5f26969a72365d2"), "14.3.0-linux_amd64": ("node-v14.3.0-linux-x64.tar.xz", "node-v14.3.0-linux-x64", "17236db7b9447080b58c2e50937982c386fe8a60e644b8d7f23e546068a8acba"), "14.3.0-windows_amd64": ("node-v14.3.0-win-x64.zip", "node-v14.3.0-win-x64", "07bebc231dd8d773ab41cdcfbcb8b48e2336fbee20deb961b4300b9ba86afa04"), "14.4.0-darwin_amd64": ("node-v14.4.0-darwin-x64.tar.gz", "node-v14.4.0-darwin-x64", "d95eaa6950d67895b5cdd0e2f913d2c44034178234f0cb7436c3397b54f64023"), "14.4.0-linux_arm64": ("node-v14.4.0-linux-arm64.tar.xz", "node-v14.4.0-linux-arm64", "9c9f84589b7bc6a05ac12a137e5097a5adb20b5c63ae9e4e912942da2c06d99d"), "14.4.0-linux_amd64": ("node-v14.4.0-linux-x64.tar.xz", "node-v14.4.0-linux-x64", "d65a9a8a547bfe67c6c08dae733a3e5a846700d5377c5f150164cc6bb5f6a039"), "14.4.0-windows_amd64": ("node-v14.4.0-win-x64.zip", "node-v14.4.0-win-x64", "a4bac45af8252f6b677a79ed19be4913f4939c4509fb08b6f14f972597550bbe"), "14.5.0-darwin_amd64": ("node-v14.5.0-darwin-x64.tar.gz", "node-v14.5.0-darwin-x64", "47dfd88abcd4d6d6f7b7516c95645f9760ba9c93d04b51a92895584c945b2953"), "14.5.0-linux_arm64": ("node-v14.5.0-linux-arm64.tar.xz", "node-v14.5.0-linux-arm64", "c5ab67fbc73ea8858b4a989b6e92d6630decfc47c4703be7bcda3c6e39adff0b"), "14.5.0-linux_amd64": ("node-v14.5.0-linux-x64.tar.xz", "node-v14.5.0-linux-x64", "8b0235c318de87ecf8eec9a39e5c5df80757dbec571addda7123276dfcb34d5b"), "14.5.0-windows_amd64": ("node-v14.5.0-win-x64.zip", "node-v14.5.0-win-x64", "ab5728c85ece98210036fc9c38984fa2410a882dd99075b3d5bece58e4cc6ea2"), "14.6.0-darwin_amd64": ("node-v14.6.0-darwin-x64.tar.gz", "node-v14.6.0-darwin-x64", "7907a18605b900ce977ff4c7e67f7507f937f85738659865d31779c3b2990756"), "14.6.0-linux_arm64": ("node-v14.6.0-linux-arm64.tar.xz", "node-v14.6.0-linux-arm64", "853f2c99f0e5fa65e6f222821e29c9d1a49f2d358a97c1de080ddf5c74e4ec70"), "14.6.0-linux_amd64": ("node-v14.6.0-linux-x64.tar.xz", "node-v14.6.0-linux-x64", "b8a39b2dac8e200e96586356c5525d20b0b43dba8bf9f7eb4e8c2d5366be2bb2"), "14.6.0-windows_amd64": ("node-v14.6.0-win-x64.zip", "node-v14.6.0-win-x64", "57ea75a7ec70cc8158e6f9774f9728fb9e3d08212b1af3e206db2de46ca304ca"), "14.7.0-darwin_amd64": ("node-v14.7.0-darwin-x64.tar.gz", "node-v14.7.0-darwin-x64", "47c94ec84706fd6851db27af54abdab569941fcbfcdc28e386d8fa7d49c6a619"), "14.7.0-linux_arm64": ("node-v14.7.0-linux-arm64.tar.xz", "node-v14.7.0-linux-arm64", "12540328aeb5baa524a4e9c3b493b5eceb54cfa630f8bce64c19e674871e2f4b"), "14.7.0-linux_amd64": ("node-v14.7.0-linux-x64.tar.xz", "node-v14.7.0-linux-x64", "48929b03deb2915b64ba67355d2deffeed3c8df798b0c5f2b821ffc7a8116a23"), "14.7.0-windows_amd64": ("node-v14.7.0-win-x64.zip", "node-v14.7.0-win-x64", "a899693c9a31089a1eda14b1e613cf8cd60361e6e574b351551d832cf864c8f8"), "14.8.0-darwin_amd64": ("node-v14.8.0-darwin-x64.tar.gz", "node-v14.8.0-darwin-x64", "b6db32f2ff37475ae68502c76fc777a604cbc589bf57158fb4eed4db9ac5f62d"), "14.8.0-linux_arm64": ("node-v14.8.0-linux-arm64.tar.xz", "node-v14.8.0-linux-arm64", "0c66a6468c36552c00d45cff0eaa924240f3d2e625be0306f33f8b0d81af4224"), "14.8.0-linux_amd64": ("node-v14.8.0-linux-x64.tar.xz", "node-v14.8.0-linux-x64", "c7761fe5d56d045d1540b1f0bc8a20d7edf03e6fd695ee5fbffc1dd9416ccc75"), "14.8.0-windows_amd64": ("node-v14.8.0-win-x64.zip", "node-v14.8.0-win-x64", "848ca582bdf8b7fdc21a38d9f3887a45bdf6381b04549fc0f918852889157c9a")}` #### `node_urls` (*List of strings*): custom list of URLs to use to download NodeJS From 20fb984e3781bdddbbb92620bb9adc078b75ae77 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Tue, 18 Aug 2020 15:50:50 -0700 Subject: [PATCH 0825/1134] chore(release): 2.0.3 --- CHANGELOG.md | 17 +++++++++++++++++ docs/install.md | 4 ++-- e2e/bazel_managed_deps/WORKSPACE | 4 ++-- e2e/coverage/WORKSPACE | 4 ++-- e2e/fine_grained_symlinks/WORKSPACE | 4 ++-- e2e/jasmine/WORKSPACE | 4 ++-- e2e/node_loader_no_preserve_symlinks/WORKSPACE | 4 ++-- e2e/node_loader_preserve_symlinks/WORKSPACE | 4 ++-- e2e/nodejs_image/WORKSPACE | 4 ++-- e2e/packages/WORKSPACE | 4 ++-- e2e/ts_devserver/WORKSPACE | 4 ++-- e2e/typescript/WORKSPACE | 4 ++-- e2e/webapp/WORKSPACE | 4 ++-- examples/angular/WORKSPACE | 4 ++-- examples/angular_bazel_architect/WORKSPACE | 4 ++-- examples/angular_view_engine/WORKSPACE | 4 ++-- examples/app/WORKSPACE | 4 ++-- examples/closure/WORKSPACE | 4 ++-- examples/create-react-app/WORKSPACE | 4 ++-- examples/cypress/WORKSPACE | 4 ++-- examples/jest/WORKSPACE | 4 ++-- examples/kotlin/WORKSPACE | 4 ++-- examples/nestjs/WORKSPACE | 4 ++-- examples/parcel/WORKSPACE | 4 ++-- examples/protocol_buffers/WORKSPACE | 4 ++-- examples/react_webpack/WORKSPACE | 4 ++-- examples/vendored_node/WORKSPACE | 4 ++-- examples/vendored_node_and_yarn/WORKSPACE | 4 ++-- examples/vue/WORKSPACE | 4 ++-- examples/web_testing/WORKSPACE | 4 ++-- examples/webapp/WORKSPACE | 4 ++-- examples/worker/WORKSPACE | 4 ++-- package.json | 2 +- packages/create/index.js | 4 ++-- version.bzl | 2 +- 35 files changed, 83 insertions(+), 66 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d6966c9498..28fc6588e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,20 @@ +## [2.0.3](https://github.com/bazelbuild/rules_nodejs/compare/2.0.2...2.0.3) (2020-08-18) + + +### Bug Fixes + +* **examples:** use ./ prefix on babel config file ([374f56f](https://github.com/bazelbuild/rules_nodejs/commit/374f56f)) +* **typescript:** only expect .js outs for .tsx? srcs ([#2118](https://github.com/bazelbuild/rules_nodejs/issues/2118)) ([83688a1](https://github.com/bazelbuild/rules_nodejs/commit/83688a1)), closes [#2115](https://github.com/bazelbuild/rules_nodejs/issues/2115) +* **typescript:** produce .d.ts as default output rather than empty ([#2117](https://github.com/bazelbuild/rules_nodejs/issues/2117)) ([3d885e8](https://github.com/bazelbuild/rules_nodejs/commit/3d885e8)), closes [#2116](https://github.com/bazelbuild/rules_nodejs/issues/2116) + + +### Features + +* **builtin:** new js_library rule ([#2109](https://github.com/bazelbuild/rules_nodejs/issues/2109)) ([4fe1a17](https://github.com/bazelbuild/rules_nodejs/commit/4fe1a17)) +* **example:** add targets in angular_bazel_architect for production serve and build ([746a6f8](https://github.com/bazelbuild/rules_nodejs/commit/746a6f8)) + + + ## [2.0.2](https://github.com/bazelbuild/rules_nodejs/compare/2.0.1...2.0.2) (2020-08-10) diff --git a/docs/install.md b/docs/install.md index 7243cc439e..312f25a690 100644 --- a/docs/install.md +++ b/docs/install.md @@ -31,8 +31,8 @@ containing: load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories") diff --git a/e2e/bazel_managed_deps/WORKSPACE b/e2e/bazel_managed_deps/WORKSPACE index 44addd5d04..8d56ab27d5 100644 --- a/e2e/bazel_managed_deps/WORKSPACE +++ b/e2e/bazel_managed_deps/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/coverage/WORKSPACE b/e2e/coverage/WORKSPACE index fd3439077c..d24d7d00d4 100644 --- a/e2e/coverage/WORKSPACE +++ b/e2e/coverage/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/fine_grained_symlinks/WORKSPACE b/e2e/fine_grained_symlinks/WORKSPACE index d474eb5d3c..f0699b340a 100644 --- a/e2e/fine_grained_symlinks/WORKSPACE +++ b/e2e/fine_grained_symlinks/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") diff --git a/e2e/jasmine/WORKSPACE b/e2e/jasmine/WORKSPACE index 5723e57546..2199d66417 100644 --- a/e2e/jasmine/WORKSPACE +++ b/e2e/jasmine/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/node_loader_no_preserve_symlinks/WORKSPACE b/e2e/node_loader_no_preserve_symlinks/WORKSPACE index bc26fda073..821eb78370 100644 --- a/e2e/node_loader_no_preserve_symlinks/WORKSPACE +++ b/e2e/node_loader_no_preserve_symlinks/WORKSPACE @@ -9,8 +9,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") diff --git a/e2e/node_loader_preserve_symlinks/WORKSPACE b/e2e/node_loader_preserve_symlinks/WORKSPACE index 6a9adc3c4a..008bd13825 100644 --- a/e2e/node_loader_preserve_symlinks/WORKSPACE +++ b/e2e/node_loader_preserve_symlinks/WORKSPACE @@ -9,8 +9,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/nodejs_image/WORKSPACE b/e2e/nodejs_image/WORKSPACE index ec54c1be66..6417c8d799 100644 --- a/e2e/nodejs_image/WORKSPACE +++ b/e2e/nodejs_image/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/packages/WORKSPACE b/e2e/packages/WORKSPACE index b9f8397636..13536c7dcf 100644 --- a/e2e/packages/WORKSPACE +++ b/e2e/packages/WORKSPACE @@ -4,8 +4,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "check_rules_nodejs_version", "node_repositories", "npm_install", "yarn_install") diff --git a/e2e/ts_devserver/WORKSPACE b/e2e/ts_devserver/WORKSPACE index 2efcd0f3d0..ff45db0f1b 100644 --- a/e2e/ts_devserver/WORKSPACE +++ b/e2e/ts_devserver/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/typescript/WORKSPACE b/e2e/typescript/WORKSPACE index f8bb38eb78..b47bc15b40 100644 --- a/e2e/typescript/WORKSPACE +++ b/e2e/typescript/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/e2e/webapp/WORKSPACE b/e2e/webapp/WORKSPACE index fabfb3a580..36d9310cef 100644 --- a/e2e/webapp/WORKSPACE +++ b/e2e/webapp/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/angular/WORKSPACE b/examples/angular/WORKSPACE index 672429ed70..b81d827582 100644 --- a/examples/angular/WORKSPACE +++ b/examples/angular/WORKSPACE @@ -16,8 +16,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch rules_nodejs so we can install our npm dependencies http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) # Fetch sass rules for compiling sass files diff --git a/examples/angular_bazel_architect/WORKSPACE b/examples/angular_bazel_architect/WORKSPACE index 71708bad29..45f05b3d16 100644 --- a/examples/angular_bazel_architect/WORKSPACE +++ b/examples/angular_bazel_architect/WORKSPACE @@ -12,8 +12,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) # The yarn_install rule runs yarn anytime the package.json or yarn.lock file changes. diff --git a/examples/angular_view_engine/WORKSPACE b/examples/angular_view_engine/WORKSPACE index 35acbf7614..b03660fa9e 100644 --- a/examples/angular_view_engine/WORKSPACE +++ b/examples/angular_view_engine/WORKSPACE @@ -16,8 +16,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch rules_nodejs so we can install our npm dependencies http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) # Fetch sass rules for compiling sass files diff --git a/examples/app/WORKSPACE b/examples/app/WORKSPACE index ed167dac0e..677ec95059 100644 --- a/examples/app/WORKSPACE +++ b/examples/app/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/closure/WORKSPACE b/examples/closure/WORKSPACE index 5ffceb8960..388d0c76bf 100644 --- a/examples/closure/WORKSPACE +++ b/examples/closure/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/create-react-app/WORKSPACE b/examples/create-react-app/WORKSPACE index b33790729c..75ccaf66e9 100644 --- a/examples/create-react-app/WORKSPACE +++ b/examples/create-react-app/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) http_archive( diff --git a/examples/cypress/WORKSPACE b/examples/cypress/WORKSPACE index bf02c851bb..9f7389bebc 100644 --- a/examples/cypress/WORKSPACE +++ b/examples/cypress/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/jest/WORKSPACE b/examples/jest/WORKSPACE index 82a7bf8d77..400d53697f 100644 --- a/examples/jest/WORKSPACE +++ b/examples/jest/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/kotlin/WORKSPACE b/examples/kotlin/WORKSPACE index 338675664b..ef2f2f2850 100644 --- a/examples/kotlin/WORKSPACE +++ b/examples/kotlin/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) # Install external npm dependencies diff --git a/examples/nestjs/WORKSPACE b/examples/nestjs/WORKSPACE index e41f9a3823..b3387ccb43 100644 --- a/examples/nestjs/WORKSPACE +++ b/examples/nestjs/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/parcel/WORKSPACE b/examples/parcel/WORKSPACE index de3c9e6734..bf9b75d459 100644 --- a/examples/parcel/WORKSPACE +++ b/examples/parcel/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "npm_install") diff --git a/examples/protocol_buffers/WORKSPACE b/examples/protocol_buffers/WORKSPACE index 3fc95e441c..ea29c9aea2 100644 --- a/examples/protocol_buffers/WORKSPACE +++ b/examples/protocol_buffers/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) http_archive( diff --git a/examples/react_webpack/WORKSPACE b/examples/react_webpack/WORKSPACE index 1ff4d637af..da96ad96e9 100644 --- a/examples/react_webpack/WORKSPACE +++ b/examples/react_webpack/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/vendored_node/WORKSPACE b/examples/vendored_node/WORKSPACE index e9f9580ad7..3c435c44a4 100644 --- a/examples/vendored_node/WORKSPACE +++ b/examples/vendored_node/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) http_archive( diff --git a/examples/vendored_node_and_yarn/WORKSPACE b/examples/vendored_node_and_yarn/WORKSPACE index fa3f1a1943..85fabdcd98 100644 --- a/examples/vendored_node_and_yarn/WORKSPACE +++ b/examples/vendored_node_and_yarn/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) http_archive( diff --git a/examples/vue/WORKSPACE b/examples/vue/WORKSPACE index 2057465894..4f4eee70d4 100644 --- a/examples/vue/WORKSPACE +++ b/examples/vue/WORKSPACE @@ -7,8 +7,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "npm_install") diff --git a/examples/web_testing/WORKSPACE b/examples/web_testing/WORKSPACE index 8a81352d04..c68e7ef678 100644 --- a/examples/web_testing/WORKSPACE +++ b/examples/web_testing/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/webapp/WORKSPACE b/examples/webapp/WORKSPACE index 61bc70904b..e1bc28fcd6 100644 --- a/examples/webapp/WORKSPACE +++ b/examples/webapp/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/examples/worker/WORKSPACE b/examples/worker/WORKSPACE index 8d45d5d84e..c99000470c 100644 --- a/examples/worker/WORKSPACE +++ b/examples/worker/WORKSPACE @@ -21,8 +21,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") diff --git a/package.json b/package.json index 463d76dc82..403f782f55 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@bazel/javascript", "description": "Build JavaScript with Bazel", - "version": "2.0.2", + "version": "2.0.3", "keywords": [ "javascript", "bazel" diff --git a/packages/create/index.js b/packages/create/index.js index 660fe213bc..08e840f640 100644 --- a/packages/create/index.js +++ b/packages/create/index.js @@ -157,8 +157,8 @@ workspace( load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", - sha256 = "6a67a8a1bf6fddc9113f73471029b819eef4575c3a936a4a01d57e411894d692", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.2/rules_nodejs-2.0.2.tar.gz"], + sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"], ) ${pkgMgr === 'yarn' ? yarnInstallCmd : npmInstallCmd}`; diff --git a/version.bzl b/version.bzl index 5ddb2f0179..2ff3d4ae48 100644 --- a/version.bzl +++ b/version.bzl @@ -19,4 +19,4 @@ # It will be automatically synced via the npm "version" script # that is run when running `npm version` during the release # process. See `Releasing` section in README.md. -VERSION = "2.0.2" +VERSION = "2.0.3" From 660b4563ca5e3f8ae25e5680cb20e494febadb79 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Tue, 18 Aug 2020 18:20:06 -0700 Subject: [PATCH 0826/1134] chore: update lock files for release --- e2e/bazel_managed_deps/package.json | 2 +- e2e/bazel_managed_deps/yarn.lock | 8 +-- e2e/coverage/package.json | 4 +- e2e/coverage/yarn.lock | 16 +++--- e2e/jasmine/package.json | 2 +- e2e/jasmine/yarn.lock | 8 +-- e2e/ts_devserver/package.json | 4 +- e2e/ts_devserver/yarn.lock | 18 +++--- e2e/typescript/package.json | 4 +- e2e/typescript/yarn.lock | 16 +++--- e2e/webapp/package.json | 4 +- e2e/webapp/yarn.lock | 18 +++--- examples/angular/package.json | 14 ++--- examples/angular/yarn.lock | 56 +++++++++---------- examples/angular_bazel_architect/package.json | 2 +- examples/angular_bazel_architect/yarn.lock | 8 +-- examples/angular_view_engine/package.json | 12 ++-- examples/angular_view_engine/yarn.lock | 48 ++++++++-------- examples/app/package.json | 8 +-- examples/app/yarn.lock | 38 ++++++------- examples/create-react-app/package.json | 2 +- examples/create-react-app/yarn.lock | 8 +-- examples/cypress/package.json | 6 +- examples/cypress/yarn.lock | 24 ++++---- examples/kotlin/package-lock.json | 18 +++--- examples/kotlin/package.json | 6 +- examples/nestjs/package.json | 6 +- examples/nestjs/yarn.lock | 24 ++++---- examples/protocol_buffers/package.json | 12 ++-- examples/protocol_buffers/yarn.lock | 48 ++++++++-------- examples/react_webpack/package.json | 4 +- examples/react_webpack/yarn.lock | 16 +++--- examples/vendored_node/package-lock.json | 6 +- examples/vendored_node/package.json | 2 +- examples/vendored_node_and_yarn/package.json | 2 +- examples/vendored_node_and_yarn/yarn.lock | 8 +-- examples/vue/package-lock.json | 6 +- examples/vue/package.json | 2 +- examples/web_testing/package.json | 4 +- examples/web_testing/yarn.lock | 16 +++--- examples/webapp/package.json | 8 +-- examples/webapp/yarn.lock | 32 +++++------ examples/worker/package.json | 2 +- examples/worker/yarn.lock | 8 +-- 44 files changed, 280 insertions(+), 280 deletions(-) diff --git a/e2e/bazel_managed_deps/package.json b/e2e/bazel_managed_deps/package.json index ad2ea4ea7f..4eb243038f 100644 --- a/e2e/bazel_managed_deps/package.json +++ b/e2e/bazel_managed_deps/package.json @@ -1,7 +1,7 @@ { "description": "runtime dependencies for bazel_managed_deps example", "devDependencies": { - "@bazel/jasmine": "^2.0.2", + "@bazel/jasmine": "^2.0.3", "jasmine": "^3.5.0", "typescript": "^3.0.1" }, diff --git a/e2e/bazel_managed_deps/yarn.lock b/e2e/bazel_managed_deps/yarn.lock index 7212284485..db053b2456 100644 --- a/e2e/bazel_managed_deps/yarn.lock +++ b/e2e/bazel_managed_deps/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.2.tgz#a4ccd3bf0b780d3d617cee07d146d459076385e4" - integrity sha512-tmQY124GSTJFN67zIjTn34YAUUaPqBcC9MnDhYPyZDWqdbJ5SqDQ4aNQpRDmZvnOV3c14dKKHpXZy28nyFovOA== +"@bazel/jasmine@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.3.tgz#91416eab2eb3da265a21cbc829294d51e93f0c52" + integrity sha512-szLfDDw+nuUoX51drpq0C32CJ3FuOIl7X06ljX7YpX15GyCjLzCRnX2antZCUq2gau/AcBJ3RY+3yruzD6RZiQ== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/e2e/coverage/package.json b/e2e/coverage/package.json index fef13085a7..cff1e79855 100644 --- a/e2e/coverage/package.json +++ b/e2e/coverage/package.json @@ -1,8 +1,8 @@ { "name": "e2e-coverage", "dependencies": { - "@bazel/jasmine": "^2.0.2", - "@bazel/typescript": "^2.0.2", + "@bazel/jasmine": "^2.0.3", + "@bazel/typescript": "^2.0.3", "jasmine": "3.6.1", "typescript": "3.9.7" }, diff --git a/e2e/coverage/yarn.lock b/e2e/coverage/yarn.lock index 30eba26067..802be3b22b 100644 --- a/e2e/coverage/yarn.lock +++ b/e2e/coverage/yarn.lock @@ -2,18 +2,18 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.2.tgz#a4ccd3bf0b780d3d617cee07d146d459076385e4" - integrity sha512-tmQY124GSTJFN67zIjTn34YAUUaPqBcC9MnDhYPyZDWqdbJ5SqDQ4aNQpRDmZvnOV3c14dKKHpXZy28nyFovOA== +"@bazel/jasmine@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.3.tgz#91416eab2eb3da265a21cbc829294d51e93f0c52" + integrity sha512-szLfDDw+nuUoX51drpq0C32CJ3FuOIl7X06ljX7YpX15GyCjLzCRnX2antZCUq2gau/AcBJ3RY+3yruzD6RZiQ== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" -"@bazel/typescript@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" - integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== +"@bazel/typescript@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.3.tgz#0be019014ef973f3a415c4671c65d943afc62023" + integrity sha512-yESlesTHX7gOuBzuc61HtHB8h/gRCaEB3C6guJnBVPuz4tGMLJ069fJz/SW/pfgrACP7ixqWqHXIAEnPsRU+tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/e2e/jasmine/package.json b/e2e/jasmine/package.json index 10921ceb2a..ded8a229a9 100644 --- a/e2e/jasmine/package.json +++ b/e2e/jasmine/package.json @@ -1,7 +1,7 @@ { "name": "e2e-jasmine", "dependencies": { - "@bazel/jasmine": "^2.0.2", + "@bazel/jasmine": "^2.0.3", "zone.js": "0.8.29" }, "//": "Include an incompatible jasmine as a devDependency to verify that jasmine_node_test works regardless", diff --git a/e2e/jasmine/yarn.lock b/e2e/jasmine/yarn.lock index c6e2710101..4e956be722 100644 --- a/e2e/jasmine/yarn.lock +++ b/e2e/jasmine/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.2.tgz#a4ccd3bf0b780d3d617cee07d146d459076385e4" - integrity sha512-tmQY124GSTJFN67zIjTn34YAUUaPqBcC9MnDhYPyZDWqdbJ5SqDQ4aNQpRDmZvnOV3c14dKKHpXZy28nyFovOA== +"@bazel/jasmine@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.3.tgz#91416eab2eb3da265a21cbc829294d51e93f0c52" + integrity sha512-szLfDDw+nuUoX51drpq0C32CJ3FuOIl7X06ljX7YpX15GyCjLzCRnX2antZCUq2gau/AcBJ3RY+3yruzD6RZiQ== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/e2e/ts_devserver/package.json b/e2e/ts_devserver/package.json index b465dcfd2e..949e3c0149 100644 --- a/e2e/ts_devserver/package.json +++ b/e2e/ts_devserver/package.json @@ -1,7 +1,7 @@ { "dependencies": { - "@bazel/protractor": "^2.0.2", - "@bazel/typescript": "^2.0.2", + "@bazel/protractor": "^2.0.3", + "@bazel/typescript": "^2.0.3", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "date-fns": "1.30.1", diff --git a/e2e/ts_devserver/yarn.lock b/e2e/ts_devserver/yarn.lock index de9a69ce29..787054d024 100644 --- a/e2e/ts_devserver/yarn.lock +++ b/e2e/ts_devserver/yarn.lock @@ -2,15 +2,15 @@ # yarn lockfile v1 -"@bazel/protractor@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.2.tgz#da276a82799b24de947b2ed19ed1acc4ce5bf895" - integrity sha512-JGFILIrqroJoa91iC0dSjQA2aXFM9c5BEN2LQuqn/NxTU4dPbLUXrrEZ/dzJOnlQvnfRhYQIFiA3gMFbG+/RnA== - -"@bazel/typescript@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" - integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== +"@bazel/protractor@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.3.tgz#900a522035417f47c4ab3f88967fa3a6a187dff3" + integrity sha512-6FhSHWYOsZrl1Rj0Q8DCwdqYCUxOxjEynVXzj8Jkgl9yK7ltnCWwLkP/LqRxiNIsKDX5tgCSJARxSPRA2EDYBA== + +"@bazel/typescript@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.3.tgz#0be019014ef973f3a415c4671c65d943afc62023" + integrity sha512-yESlesTHX7gOuBzuc61HtHB8h/gRCaEB3C6guJnBVPuz4tGMLJ069fJz/SW/pfgrACP7ixqWqHXIAEnPsRU+tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/e2e/typescript/package.json b/e2e/typescript/package.json index 17aa5cce03..9ab4ad935d 100644 --- a/e2e/typescript/package.json +++ b/e2e/typescript/package.json @@ -1,7 +1,7 @@ { "dependencies": { - "@bazel/jasmine": "^2.0.2", - "@bazel/typescript": "^2.0.2", + "@bazel/jasmine": "^2.0.3", + "@bazel/typescript": "^2.0.3", "@types/jasmine": "2.8.2", "@types/node": "7.0.18", "date-fns": "^1.30.1", diff --git a/e2e/typescript/yarn.lock b/e2e/typescript/yarn.lock index 9858ca2f22..e68b02c5d7 100644 --- a/e2e/typescript/yarn.lock +++ b/e2e/typescript/yarn.lock @@ -2,18 +2,18 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.2.tgz#a4ccd3bf0b780d3d617cee07d146d459076385e4" - integrity sha512-tmQY124GSTJFN67zIjTn34YAUUaPqBcC9MnDhYPyZDWqdbJ5SqDQ4aNQpRDmZvnOV3c14dKKHpXZy28nyFovOA== +"@bazel/jasmine@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.3.tgz#91416eab2eb3da265a21cbc829294d51e93f0c52" + integrity sha512-szLfDDw+nuUoX51drpq0C32CJ3FuOIl7X06ljX7YpX15GyCjLzCRnX2antZCUq2gau/AcBJ3RY+3yruzD6RZiQ== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" -"@bazel/typescript@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" - integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== +"@bazel/typescript@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.3.tgz#0be019014ef973f3a415c4671c65d943afc62023" + integrity sha512-yESlesTHX7gOuBzuc61HtHB8h/gRCaEB3C6guJnBVPuz4tGMLJ069fJz/SW/pfgrACP7ixqWqHXIAEnPsRU+tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/e2e/webapp/package.json b/e2e/webapp/package.json index c2cb755d4d..dbd100e8cf 100644 --- a/e2e/webapp/package.json +++ b/e2e/webapp/package.json @@ -2,8 +2,8 @@ "name": "e2e-terser", "private": true, "devDependencies": { - "@bazel/rollup": "^2.0.2", - "@bazel/terser": "^2.0.2", + "@bazel/rollup": "^2.0.3", + "@bazel/terser": "^2.0.3", "rollup": "2.3.0", "terser": "4.3.1" }, diff --git a/e2e/webapp/yarn.lock b/e2e/webapp/yarn.lock index 85bced2d71..ad8302883c 100644 --- a/e2e/webapp/yarn.lock +++ b/e2e/webapp/yarn.lock @@ -2,15 +2,15 @@ # yarn lockfile v1 -"@bazel/rollup@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.2.tgz#9bf0df17d94314e67d6ddce1c9d7366a212c83b0" - integrity sha512-W8G7XCbSS5cVwIc1mZ11QOmfjqGb/5psATeyB8Z5E77nSPiuYla1tFfgUJn8MOJ9C6wYVQwqIS9l5X44jLmZWg== - -"@bazel/terser@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.2.tgz#509109ffdaecc2c466756918f6354644721d714f" - integrity sha512-c3VFfgn0HZHhaav9NPpDTxmCuD6yCyFtENZXr3JbM151qPFrkDuJU0hwTe/o5f07m1HC3u6zuchzYGzPpBFyGQ== +"@bazel/rollup@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.3.tgz#2cbc2b54fcd234aae732f795275b811144c370d1" + integrity sha512-b7S8gZvHK+//o7IMrWrsNncDkOdZKckbV7UYC7ozwkVYfgSzrVc67ijUdTVmMq1/tyMsoWyrIauldbh6ayECmQ== + +"@bazel/terser@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.3.tgz#0e30d311e0a5f08a35c727b158775bd45bd3d8c5" + integrity sha512-rOcrrCuI0gUsdTeOOom0DTj6ekI+gPt9tv6doZtDhwg//DXUnh3OBZlvyhX+j6lBB2efTJurisIBwqPDgu1n7g== buffer-from@^1.0.0: version "1.1.1" diff --git a/examples/angular/package.json b/examples/angular/package.json index 5f33cbaf49..bc3fbaef63 100644 --- a/examples/angular/package.json +++ b/examples/angular/package.json @@ -33,16 +33,16 @@ "@babel/cli": "^7.6.0", "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", - "@bazel/angular": "^2.0.2", - "@bazel/bazelisk": "^1.6.0", + "@bazel/angular": "^2.0.3", + "@bazel/bazelisk": "^1.6.1", "@bazel/benchmark-runner": "^0.1.0", "@bazel/buildifier": "^3.4.0", "@bazel/ibazel": "^0.13.1", - "@bazel/karma": "^2.0.2", - "@bazel/protractor": "^2.0.2", - "@bazel/rollup": "^2.0.2", - "@bazel/terser": "^2.0.2", - "@bazel/typescript": "^2.0.2", + "@bazel/karma": "^2.0.3", + "@bazel/protractor": "^2.0.3", + "@bazel/rollup": "^2.0.3", + "@bazel/terser": "^2.0.3", + "@bazel/typescript": "^2.0.3", "@rollup/plugin-commonjs": "^14.0.0", "@rollup/plugin-node-resolve": "^8.4.0", "@types/jasmine": "3.4.0", diff --git a/examples/angular/yarn.lock b/examples/angular/yarn.lock index 3d44c70c05..dfc956639d 100644 --- a/examples/angular/yarn.lock +++ b/examples/angular/yarn.lock @@ -827,10 +827,10 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/angular@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/angular/-/angular-2.0.2.tgz#4eae8bc9af6b9efc0b8a6ea144a8adeb6d2eb2af" - integrity sha512-pT46G8UTor/EuFkMOi/AspLHKRL6XLOwduOEINL/Qp1BToBMsgvzKYKohEDsjPxRJ/v9RAOaPKP/FHoLTBsvcw== +"@bazel/angular@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/angular/-/angular-2.0.3.tgz#aaa7582e3ab9d34e5e828453d441d355a75a2835" + integrity sha512-N04Zj/dYZJGe8l6CEIsZ9OuDpqgZOfSeI/XtTQYTznc0QCdITFaKPiwDN+nK5599NhZgK7Ixg8zD8bJobNxKrg== dependencies: "@angular-devkit/architect" "^0.901.7" "@bazel/bazelisk" "^1.4.0" @@ -841,10 +841,10 @@ resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.4.0.tgz#401d7b89b8d89dd579d1e16cc24cd4d9281a4fbb" integrity sha512-VNI/jF7baQiBy4x+u8gmSDsFehqaAuzMyLuCj0j6/aZCZSw2OssytJVj73m8sFYbXgj67D8iYEQ0gbuoafDk6w== -"@bazel/bazelisk@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.0.tgz#3742e9bd2ddaa43ac0c3b4ba167f95cfaf881400" - integrity sha512-lHFsZFR5ofj3yL2BtlbblbrglB/okocuY4T53M+tHLG/pV5H8LdzYPXrymzab/qXyyW4zKSPEpX20QITITsvtw== +"@bazel/bazelisk@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.1.tgz#f9e279d2fecaf6cec6ed676bc8714846f3704e40" + integrity sha512-2JpfZb6eYCGrdLdUJamncIpI4pgEAhPURYGg+rCgqoZDJxzADuOnpf/00dEBXPM2XByXNXTqsKEFN2gTaZz2mA== "@bazel/benchmark-runner@^0.1.0": version "0.1.0" @@ -871,32 +871,32 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/karma@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.2.tgz#9863ec7f2e4cfe675b3b3f6e28340c351600758c" - integrity sha512-/bgtIQNHIgFYnH1Ts9D1fLE4n0StT8a8AayZrWklTaGSA56UjmTh1l30dACpQuiwV0VVIDlZJrQMAIBacTzwug== +"@bazel/karma@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.3.tgz#fae59ec239b9b917680e48ef7252925d13673ce2" + integrity sha512-PkaBdWHrgyWxmja8Xg580U0NEpNAfCc2l0l896hOW4JT2vvfd628YPQz0bC5dRCpMbWlFA7eaGoGeWg3S0K+HQ== dependencies: tmp "0.1.0" -"@bazel/protractor@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.2.tgz#da276a82799b24de947b2ed19ed1acc4ce5bf895" - integrity sha512-JGFILIrqroJoa91iC0dSjQA2aXFM9c5BEN2LQuqn/NxTU4dPbLUXrrEZ/dzJOnlQvnfRhYQIFiA3gMFbG+/RnA== +"@bazel/protractor@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.3.tgz#900a522035417f47c4ab3f88967fa3a6a187dff3" + integrity sha512-6FhSHWYOsZrl1Rj0Q8DCwdqYCUxOxjEynVXzj8Jkgl9yK7ltnCWwLkP/LqRxiNIsKDX5tgCSJARxSPRA2EDYBA== -"@bazel/rollup@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.2.tgz#9bf0df17d94314e67d6ddce1c9d7366a212c83b0" - integrity sha512-W8G7XCbSS5cVwIc1mZ11QOmfjqGb/5psATeyB8Z5E77nSPiuYla1tFfgUJn8MOJ9C6wYVQwqIS9l5X44jLmZWg== +"@bazel/rollup@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.3.tgz#2cbc2b54fcd234aae732f795275b811144c370d1" + integrity sha512-b7S8gZvHK+//o7IMrWrsNncDkOdZKckbV7UYC7ozwkVYfgSzrVc67ijUdTVmMq1/tyMsoWyrIauldbh6ayECmQ== -"@bazel/terser@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.2.tgz#509109ffdaecc2c466756918f6354644721d714f" - integrity sha512-c3VFfgn0HZHhaav9NPpDTxmCuD6yCyFtENZXr3JbM151qPFrkDuJU0hwTe/o5f07m1HC3u6zuchzYGzPpBFyGQ== +"@bazel/terser@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.3.tgz#0e30d311e0a5f08a35c727b158775bd45bd3d8c5" + integrity sha512-rOcrrCuI0gUsdTeOOom0DTj6ekI+gPt9tv6doZtDhwg//DXUnh3OBZlvyhX+j6lBB2efTJurisIBwqPDgu1n7g== -"@bazel/typescript@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" - integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== +"@bazel/typescript@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.3.tgz#0be019014ef973f3a415c4671c65d943afc62023" + integrity sha512-yESlesTHX7gOuBzuc61HtHB8h/gRCaEB3C6guJnBVPuz4tGMLJ069fJz/SW/pfgrACP7ixqWqHXIAEnPsRU+tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/angular_bazel_architect/package.json b/examples/angular_bazel_architect/package.json index 20f7aeb2c0..38c332e35f 100644 --- a/examples/angular_bazel_architect/package.json +++ b/examples/angular_bazel_architect/package.json @@ -33,7 +33,7 @@ "@angular/cli": "10.0.3", "@angular/compiler-cli": "10.0.4", "@angular/language-service": "10.0.4", - "@bazel/bazelisk": "^1.6.0", + "@bazel/bazelisk": "^1.6.1", "@bazel/buildifier": "^3.4.0", "@bazel/ibazel": "^0.13.1", "@types/jasmine": "~3.3.8", diff --git a/examples/angular_bazel_architect/yarn.lock b/examples/angular_bazel_architect/yarn.lock index 7348f34162..c6620043bb 100644 --- a/examples/angular_bazel_architect/yarn.lock +++ b/examples/angular_bazel_architect/yarn.lock @@ -1200,10 +1200,10 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/bazelisk@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.0.tgz#3742e9bd2ddaa43ac0c3b4ba167f95cfaf881400" - integrity sha512-lHFsZFR5ofj3yL2BtlbblbrglB/okocuY4T53M+tHLG/pV5H8LdzYPXrymzab/qXyyW4zKSPEpX20QITITsvtw== +"@bazel/bazelisk@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.1.tgz#f9e279d2fecaf6cec6ed676bc8714846f3704e40" + integrity sha512-2JpfZb6eYCGrdLdUJamncIpI4pgEAhPURYGg+rCgqoZDJxzADuOnpf/00dEBXPM2XByXNXTqsKEFN2gTaZz2mA== "@bazel/buildifier@^3.4.0": version "3.4.0" diff --git a/examples/angular_view_engine/package.json b/examples/angular_view_engine/package.json index 5d7981dcb0..d325b8e095 100644 --- a/examples/angular_view_engine/package.json +++ b/examples/angular_view_engine/package.json @@ -32,15 +32,15 @@ "@babel/cli": "^7.6.0", "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", - "@bazel/bazelisk": "^1.6.0", + "@bazel/bazelisk": "^1.6.1", "@bazel/benchmark-runner": "^0.1.0", "@bazel/buildifier": "^3.4.0", "@bazel/ibazel": "^0.13.1", - "@bazel/karma": "^2.0.2", - "@bazel/protractor": "^2.0.2", - "@bazel/rollup": "^2.0.2", - "@bazel/terser": "^2.0.2", - "@bazel/typescript": "^2.0.2", + "@bazel/karma": "^2.0.3", + "@bazel/protractor": "^2.0.3", + "@bazel/rollup": "^2.0.3", + "@bazel/terser": "^2.0.3", + "@bazel/typescript": "^2.0.3", "@rollup/plugin-commonjs": "^14.0.0", "@rollup/plugin-node-resolve": "^8.4.0", "@types/jasmine": "3.4.0", diff --git a/examples/angular_view_engine/yarn.lock b/examples/angular_view_engine/yarn.lock index ba5bda8c8a..0c223eb0dc 100644 --- a/examples/angular_view_engine/yarn.lock +++ b/examples/angular_view_engine/yarn.lock @@ -803,10 +803,10 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/bazelisk@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.0.tgz#3742e9bd2ddaa43ac0c3b4ba167f95cfaf881400" - integrity sha512-lHFsZFR5ofj3yL2BtlbblbrglB/okocuY4T53M+tHLG/pV5H8LdzYPXrymzab/qXyyW4zKSPEpX20QITITsvtw== +"@bazel/bazelisk@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.1.tgz#f9e279d2fecaf6cec6ed676bc8714846f3704e40" + integrity sha512-2JpfZb6eYCGrdLdUJamncIpI4pgEAhPURYGg+rCgqoZDJxzADuOnpf/00dEBXPM2XByXNXTqsKEFN2gTaZz2mA== "@bazel/benchmark-runner@^0.1.0": version "0.1.0" @@ -833,32 +833,32 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/karma@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.2.tgz#9863ec7f2e4cfe675b3b3f6e28340c351600758c" - integrity sha512-/bgtIQNHIgFYnH1Ts9D1fLE4n0StT8a8AayZrWklTaGSA56UjmTh1l30dACpQuiwV0VVIDlZJrQMAIBacTzwug== +"@bazel/karma@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.3.tgz#fae59ec239b9b917680e48ef7252925d13673ce2" + integrity sha512-PkaBdWHrgyWxmja8Xg580U0NEpNAfCc2l0l896hOW4JT2vvfd628YPQz0bC5dRCpMbWlFA7eaGoGeWg3S0K+HQ== dependencies: tmp "0.1.0" -"@bazel/protractor@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.2.tgz#da276a82799b24de947b2ed19ed1acc4ce5bf895" - integrity sha512-JGFILIrqroJoa91iC0dSjQA2aXFM9c5BEN2LQuqn/NxTU4dPbLUXrrEZ/dzJOnlQvnfRhYQIFiA3gMFbG+/RnA== +"@bazel/protractor@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.3.tgz#900a522035417f47c4ab3f88967fa3a6a187dff3" + integrity sha512-6FhSHWYOsZrl1Rj0Q8DCwdqYCUxOxjEynVXzj8Jkgl9yK7ltnCWwLkP/LqRxiNIsKDX5tgCSJARxSPRA2EDYBA== -"@bazel/rollup@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.2.tgz#9bf0df17d94314e67d6ddce1c9d7366a212c83b0" - integrity sha512-W8G7XCbSS5cVwIc1mZ11QOmfjqGb/5psATeyB8Z5E77nSPiuYla1tFfgUJn8MOJ9C6wYVQwqIS9l5X44jLmZWg== +"@bazel/rollup@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.3.tgz#2cbc2b54fcd234aae732f795275b811144c370d1" + integrity sha512-b7S8gZvHK+//o7IMrWrsNncDkOdZKckbV7UYC7ozwkVYfgSzrVc67ijUdTVmMq1/tyMsoWyrIauldbh6ayECmQ== -"@bazel/terser@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.2.tgz#509109ffdaecc2c466756918f6354644721d714f" - integrity sha512-c3VFfgn0HZHhaav9NPpDTxmCuD6yCyFtENZXr3JbM151qPFrkDuJU0hwTe/o5f07m1HC3u6zuchzYGzPpBFyGQ== +"@bazel/terser@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.3.tgz#0e30d311e0a5f08a35c727b158775bd45bd3d8c5" + integrity sha512-rOcrrCuI0gUsdTeOOom0DTj6ekI+gPt9tv6doZtDhwg//DXUnh3OBZlvyhX+j6lBB2efTJurisIBwqPDgu1n7g== -"@bazel/typescript@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" - integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== +"@bazel/typescript@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.3.tgz#0be019014ef973f3a415c4671c65d943afc62023" + integrity sha512-yESlesTHX7gOuBzuc61HtHB8h/gRCaEB3C6guJnBVPuz4tGMLJ069fJz/SW/pfgrACP7ixqWqHXIAEnPsRU+tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/app/package.json b/examples/app/package.json index c6fc1ae084..46c0691fc6 100644 --- a/examples/app/package.json +++ b/examples/app/package.json @@ -1,9 +1,9 @@ { "devDependencies": { - "@bazel/protractor": "^2.0.2", - "@bazel/rollup": "^2.0.2", - "@bazel/terser": "^2.0.2", - "@bazel/typescript": "^2.0.2", + "@bazel/protractor": "^2.0.3", + "@bazel/rollup": "^2.0.3", + "@bazel/terser": "^2.0.3", + "@bazel/typescript": "^2.0.3", "@types/jasmine": "3.3.15", "html-insert-assets": "^0.6.0", "http-server": "^0.11.1", diff --git a/examples/app/yarn.lock b/examples/app/yarn.lock index 6d05611f0a..e7c2f5c1b0 100644 --- a/examples/app/yarn.lock +++ b/examples/app/yarn.lock @@ -2,25 +2,25 @@ # yarn lockfile v1 -"@bazel/protractor@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.2.tgz#da276a82799b24de947b2ed19ed1acc4ce5bf895" - integrity sha512-JGFILIrqroJoa91iC0dSjQA2aXFM9c5BEN2LQuqn/NxTU4dPbLUXrrEZ/dzJOnlQvnfRhYQIFiA3gMFbG+/RnA== - -"@bazel/rollup@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.2.tgz#9bf0df17d94314e67d6ddce1c9d7366a212c83b0" - integrity sha512-W8G7XCbSS5cVwIc1mZ11QOmfjqGb/5psATeyB8Z5E77nSPiuYla1tFfgUJn8MOJ9C6wYVQwqIS9l5X44jLmZWg== - -"@bazel/terser@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.2.tgz#509109ffdaecc2c466756918f6354644721d714f" - integrity sha512-c3VFfgn0HZHhaav9NPpDTxmCuD6yCyFtENZXr3JbM151qPFrkDuJU0hwTe/o5f07m1HC3u6zuchzYGzPpBFyGQ== - -"@bazel/typescript@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" - integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== +"@bazel/protractor@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.3.tgz#900a522035417f47c4ab3f88967fa3a6a187dff3" + integrity sha512-6FhSHWYOsZrl1Rj0Q8DCwdqYCUxOxjEynVXzj8Jkgl9yK7ltnCWwLkP/LqRxiNIsKDX5tgCSJARxSPRA2EDYBA== + +"@bazel/rollup@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.3.tgz#2cbc2b54fcd234aae732f795275b811144c370d1" + integrity sha512-b7S8gZvHK+//o7IMrWrsNncDkOdZKckbV7UYC7ozwkVYfgSzrVc67ijUdTVmMq1/tyMsoWyrIauldbh6ayECmQ== + +"@bazel/terser@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.3.tgz#0e30d311e0a5f08a35c727b158775bd45bd3d8c5" + integrity sha512-rOcrrCuI0gUsdTeOOom0DTj6ekI+gPt9tv6doZtDhwg//DXUnh3OBZlvyhX+j6lBB2efTJurisIBwqPDgu1n7g== + +"@bazel/typescript@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.3.tgz#0be019014ef973f3a415c4671c65d943afc62023" + integrity sha512-yESlesTHX7gOuBzuc61HtHB8h/gRCaEB3C6guJnBVPuz4tGMLJ069fJz/SW/pfgrACP7ixqWqHXIAEnPsRU+tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/create-react-app/package.json b/examples/create-react-app/package.json index f826a88677..2c50b1da04 100644 --- a/examples/create-react-app/package.json +++ b/examples/create-react-app/package.json @@ -16,7 +16,7 @@ "typescript": "~3.7.2" }, "devDependencies": { - "@bazel/bazelisk": "^1.6.0", + "@bazel/bazelisk": "^1.6.1", "@bazel/ibazel": "^0.13.1", "patch-package": "^6.2.2" }, diff --git a/examples/create-react-app/yarn.lock b/examples/create-react-app/yarn.lock index 25e22fcc75..5e89e839aa 100644 --- a/examples/create-react-app/yarn.lock +++ b/examples/create-react-app/yarn.lock @@ -1078,10 +1078,10 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/bazelisk@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.0.tgz#3742e9bd2ddaa43ac0c3b4ba167f95cfaf881400" - integrity sha512-lHFsZFR5ofj3yL2BtlbblbrglB/okocuY4T53M+tHLG/pV5H8LdzYPXrymzab/qXyyW4zKSPEpX20QITITsvtw== +"@bazel/bazelisk@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.1.tgz#f9e279d2fecaf6cec6ed676bc8714846f3704e40" + integrity sha512-2JpfZb6eYCGrdLdUJamncIpI4pgEAhPURYGg+rCgqoZDJxzADuOnpf/00dEBXPM2XByXNXTqsKEFN2gTaZz2mA== "@bazel/ibazel@^0.13.1": version "0.13.1" diff --git a/examples/cypress/package.json b/examples/cypress/package.json index ec434ee9f5..c7a171b838 100644 --- a/examples/cypress/package.json +++ b/examples/cypress/package.json @@ -5,10 +5,10 @@ "express": "4.17.1" }, "devDependencies": { - "@bazel/bazelisk": "^1.6.0", - "@bazel/cypress": "^2.0.2", + "@bazel/bazelisk": "^1.6.1", + "@bazel/cypress": "^2.0.3", "@bazel/ibazel": "^0.13.1", - "@bazel/typescript": "^2.0.2", + "@bazel/typescript": "^2.0.3", "@cypress/browserify-preprocessor": "^3.0.0", "@types/node": "14.0.13", "cypress": "^4.8.0", diff --git a/examples/cypress/yarn.lock b/examples/cypress/yarn.lock index 06ecbc615e..3c7ea1cf82 100644 --- a/examples/cypress/yarn.lock +++ b/examples/cypress/yarn.lock @@ -744,25 +744,25 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/bazelisk@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.0.tgz#3742e9bd2ddaa43ac0c3b4ba167f95cfaf881400" - integrity sha512-lHFsZFR5ofj3yL2BtlbblbrglB/okocuY4T53M+tHLG/pV5H8LdzYPXrymzab/qXyyW4zKSPEpX20QITITsvtw== +"@bazel/bazelisk@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.1.tgz#f9e279d2fecaf6cec6ed676bc8714846f3704e40" + integrity sha512-2JpfZb6eYCGrdLdUJamncIpI4pgEAhPURYGg+rCgqoZDJxzADuOnpf/00dEBXPM2XByXNXTqsKEFN2gTaZz2mA== -"@bazel/cypress@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/cypress/-/cypress-2.0.2.tgz#f72e1cb736e5905f498220d1d5d34f1554274906" - integrity sha512-uxcOACM/xTz0rM65y+YueYNdunjEcBm0wQ0/lOGh9f3rv7hctM7yM+XZASdfnPNmOoM79y98IULU2A30CcSvTg== +"@bazel/cypress@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/cypress/-/cypress-2.0.3.tgz#823337d5f44461b596b87a4d3cc897e4dda7cc5f" + integrity sha512-PqUYYqWAxGYO0hhrZ5fZXhU03Q2LYlp2lTiCfzWEAZlIJQnP+tCqNuvHJqdbX9iTm6U13wGr1RHULMyiDCF1qQ== "@bazel/ibazel@^0.13.1": version "0.13.1" resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/typescript@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" - integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== +"@bazel/typescript@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.3.tgz#0be019014ef973f3a415c4671c65d943afc62023" + integrity sha512-yESlesTHX7gOuBzuc61HtHB8h/gRCaEB3C6guJnBVPuz4tGMLJ069fJz/SW/pfgrACP7ixqWqHXIAEnPsRU+tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/kotlin/package-lock.json b/examples/kotlin/package-lock.json index 03cae00112..c5ce178e85 100644 --- a/examples/kotlin/package-lock.json +++ b/examples/kotlin/package-lock.json @@ -4,9 +4,9 @@ "lockfileVersion": 1, "dependencies": { "@bazel/jasmine": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.2.tgz", - "integrity": "sha512-tmQY124GSTJFN67zIjTn34YAUUaPqBcC9MnDhYPyZDWqdbJ5SqDQ4aNQpRDmZvnOV3c14dKKHpXZy28nyFovOA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.3.tgz", + "integrity": "sha512-szLfDDw+nuUoX51drpq0C32CJ3FuOIl7X06ljX7YpX15GyCjLzCRnX2antZCUq2gau/AcBJ3RY+3yruzD6RZiQ==", "dev": true, "requires": { "c8": "~7.1.0", @@ -14,15 +14,15 @@ } }, "@bazel/rollup": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@bazel/rollup/-/rollup-2.0.2.tgz", - "integrity": "sha512-W8G7XCbSS5cVwIc1mZ11QOmfjqGb/5psATeyB8Z5E77nSPiuYla1tFfgUJn8MOJ9C6wYVQwqIS9l5X44jLmZWg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@bazel/rollup/-/rollup-2.0.3.tgz", + "integrity": "sha512-b7S8gZvHK+//o7IMrWrsNncDkOdZKckbV7UYC7ozwkVYfgSzrVc67ijUdTVmMq1/tyMsoWyrIauldbh6ayECmQ==", "dev": true }, "@bazel/terser": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@bazel/terser/-/terser-2.0.2.tgz", - "integrity": "sha512-c3VFfgn0HZHhaav9NPpDTxmCuD6yCyFtENZXr3JbM151qPFrkDuJU0hwTe/o5f07m1HC3u6zuchzYGzPpBFyGQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@bazel/terser/-/terser-2.0.3.tgz", + "integrity": "sha512-rOcrrCuI0gUsdTeOOom0DTj6ekI+gPt9tv6doZtDhwg//DXUnh3OBZlvyhX+j6lBB2efTJurisIBwqPDgu1n7g==", "dev": true }, "@bcoe/v8-coverage": { diff --git a/examples/kotlin/package.json b/examples/kotlin/package.json index da97d300f2..3ff610e17f 100644 --- a/examples/kotlin/package.json +++ b/examples/kotlin/package.json @@ -2,9 +2,9 @@ "name": "kotlin_example", "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.2", - "@bazel/rollup": "^2.0.2", - "@bazel/terser": "^2.0.2", + "@bazel/jasmine": "^2.0.3", + "@bazel/rollup": "^2.0.3", + "@bazel/terser": "^2.0.3", "@rollup/plugin-commonjs": "14.0.0", "@rollup/plugin-node-resolve": "8.4.0", "domino": "^2.1.3", diff --git a/examples/nestjs/package.json b/examples/nestjs/package.json index 1f54759aea..6921aac67b 100644 --- a/examples/nestjs/package.json +++ b/examples/nestjs/package.json @@ -1,9 +1,9 @@ { "private": true, "dependencies": { - "@bazel/bazelisk": "^1.6.0", + "@bazel/bazelisk": "^1.6.1", "@bazel/ibazel": "^0.13.1", - "@bazel/jasmine": "^2.0.2", + "@bazel/jasmine": "^2.0.3", "@nestjs/common": "6.5.2", "@nestjs/core": "6.5.2", "@nestjs/platform-express": "6.5.2", @@ -17,7 +17,7 @@ "supertest": "^4.0.2" }, "devDependencies": { - "@bazel/typescript": "^2.0.2", + "@bazel/typescript": "^2.0.3", "@types/node": "12.6.3", "typescript": "3.5.3" }, diff --git a/examples/nestjs/yarn.lock b/examples/nestjs/yarn.lock index 86bc75c1ff..e4982df321 100644 --- a/examples/nestjs/yarn.lock +++ b/examples/nestjs/yarn.lock @@ -2,28 +2,28 @@ # yarn lockfile v1 -"@bazel/bazelisk@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.0.tgz#3742e9bd2ddaa43ac0c3b4ba167f95cfaf881400" - integrity sha512-lHFsZFR5ofj3yL2BtlbblbrglB/okocuY4T53M+tHLG/pV5H8LdzYPXrymzab/qXyyW4zKSPEpX20QITITsvtw== +"@bazel/bazelisk@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.1.tgz#f9e279d2fecaf6cec6ed676bc8714846f3704e40" + integrity sha512-2JpfZb6eYCGrdLdUJamncIpI4pgEAhPURYGg+rCgqoZDJxzADuOnpf/00dEBXPM2XByXNXTqsKEFN2gTaZz2mA== "@bazel/ibazel@^0.13.1": version "0.13.1" resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/jasmine@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.2.tgz#a4ccd3bf0b780d3d617cee07d146d459076385e4" - integrity sha512-tmQY124GSTJFN67zIjTn34YAUUaPqBcC9MnDhYPyZDWqdbJ5SqDQ4aNQpRDmZvnOV3c14dKKHpXZy28nyFovOA== +"@bazel/jasmine@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.3.tgz#91416eab2eb3da265a21cbc829294d51e93f0c52" + integrity sha512-szLfDDw+nuUoX51drpq0C32CJ3FuOIl7X06ljX7YpX15GyCjLzCRnX2antZCUq2gau/AcBJ3RY+3yruzD6RZiQ== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" -"@bazel/typescript@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" - integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== +"@bazel/typescript@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.3.tgz#0be019014ef973f3a415c4671c65d943afc62023" + integrity sha512-yESlesTHX7gOuBzuc61HtHB8h/gRCaEB3C6guJnBVPuz4tGMLJ069fJz/SW/pfgrACP7ixqWqHXIAEnPsRU+tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/protocol_buffers/package.json b/examples/protocol_buffers/package.json index 7fa259b0a9..3f6e115851 100644 --- a/examples/protocol_buffers/package.json +++ b/examples/protocol_buffers/package.json @@ -1,11 +1,11 @@ { "devDependencies": { - "@bazel/karma": "^2.0.2", - "@bazel/labs": "^2.0.2", - "@bazel/protractor": "^2.0.2", - "@bazel/rollup": "^2.0.2", - "@bazel/terser": "^2.0.2", - "@bazel/typescript": "^2.0.2", + "@bazel/karma": "^2.0.3", + "@bazel/labs": "^2.0.3", + "@bazel/protractor": "^2.0.3", + "@bazel/rollup": "^2.0.3", + "@bazel/terser": "^2.0.3", + "@bazel/typescript": "^2.0.3", "@rollup/plugin-commonjs": "14.0.0", "@rollup/plugin-node-resolve": "8.4.0", "@types/jasmine": "2.8.2", diff --git a/examples/protocol_buffers/yarn.lock b/examples/protocol_buffers/yarn.lock index fd4f205604..a7777efb1b 100644 --- a/examples/protocol_buffers/yarn.lock +++ b/examples/protocol_buffers/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@bazel/karma@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.2.tgz#9863ec7f2e4cfe675b3b3f6e28340c351600758c" - integrity sha512-/bgtIQNHIgFYnH1Ts9D1fLE4n0StT8a8AayZrWklTaGSA56UjmTh1l30dACpQuiwV0VVIDlZJrQMAIBacTzwug== +"@bazel/karma@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.3.tgz#fae59ec239b9b917680e48ef7252925d13673ce2" + integrity sha512-PkaBdWHrgyWxmja8Xg580U0NEpNAfCc2l0l896hOW4JT2vvfd628YPQz0bC5dRCpMbWlFA7eaGoGeWg3S0K+HQ== dependencies: tmp "0.1.0" -"@bazel/labs@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/labs/-/labs-2.0.2.tgz#0240aa3abd7559ebc4f54f49955d3b5be061ce37" - integrity sha512-6ZgiD8fuRR1W9GhYJ/szd6n2/PvpC2/FAQ3qHwo6qdjcysHbwmjy/Jt7zZcC27HgRnwE1UJiSFdjleeo9pY7UQ== +"@bazel/labs@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/labs/-/labs-2.0.3.tgz#98c2a4c2055372ecf0020c55eb6a33f065e65252" + integrity sha512-8E2gqSpi+RgJPdqeKgt3Jc/UGl8R22xROukdYddUGygLHbQxaYLVJ/LboLX00316S+pNIpA/t5S3+Y4CguWtOg== -"@bazel/protractor@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.2.tgz#da276a82799b24de947b2ed19ed1acc4ce5bf895" - integrity sha512-JGFILIrqroJoa91iC0dSjQA2aXFM9c5BEN2LQuqn/NxTU4dPbLUXrrEZ/dzJOnlQvnfRhYQIFiA3gMFbG+/RnA== +"@bazel/protractor@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.3.tgz#900a522035417f47c4ab3f88967fa3a6a187dff3" + integrity sha512-6FhSHWYOsZrl1Rj0Q8DCwdqYCUxOxjEynVXzj8Jkgl9yK7ltnCWwLkP/LqRxiNIsKDX5tgCSJARxSPRA2EDYBA== -"@bazel/rollup@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.2.tgz#9bf0df17d94314e67d6ddce1c9d7366a212c83b0" - integrity sha512-W8G7XCbSS5cVwIc1mZ11QOmfjqGb/5psATeyB8Z5E77nSPiuYla1tFfgUJn8MOJ9C6wYVQwqIS9l5X44jLmZWg== +"@bazel/rollup@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.3.tgz#2cbc2b54fcd234aae732f795275b811144c370d1" + integrity sha512-b7S8gZvHK+//o7IMrWrsNncDkOdZKckbV7UYC7ozwkVYfgSzrVc67ijUdTVmMq1/tyMsoWyrIauldbh6ayECmQ== -"@bazel/terser@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.2.tgz#509109ffdaecc2c466756918f6354644721d714f" - integrity sha512-c3VFfgn0HZHhaav9NPpDTxmCuD6yCyFtENZXr3JbM151qPFrkDuJU0hwTe/o5f07m1HC3u6zuchzYGzPpBFyGQ== +"@bazel/terser@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.3.tgz#0e30d311e0a5f08a35c727b158775bd45bd3d8c5" + integrity sha512-rOcrrCuI0gUsdTeOOom0DTj6ekI+gPt9tv6doZtDhwg//DXUnh3OBZlvyhX+j6lBB2efTJurisIBwqPDgu1n7g== -"@bazel/typescript@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" - integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== +"@bazel/typescript@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.3.tgz#0be019014ef973f3a415c4671c65d943afc62023" + integrity sha512-yESlesTHX7gOuBzuc61HtHB8h/gRCaEB3C6guJnBVPuz4tGMLJ069fJz/SW/pfgrACP7ixqWqHXIAEnPsRU+tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/react_webpack/package.json b/examples/react_webpack/package.json index 1fb9898246..517c8c95cb 100644 --- a/examples/react_webpack/package.json +++ b/examples/react_webpack/package.json @@ -1,10 +1,10 @@ { "private": true, "devDependencies": { - "@bazel/bazelisk": "^1.6.0", + "@bazel/bazelisk": "^1.6.1", "@bazel/buildifier": "^3.4.0", "@bazel/ibazel": "^0.13.1", - "@bazel/typescript": "^2.0.2", + "@bazel/typescript": "^2.0.3", "@types/react": "^16.9.5", "@types/react-dom": "^16.9.1", "css-loader": "^3.2.0", diff --git a/examples/react_webpack/yarn.lock b/examples/react_webpack/yarn.lock index 0a9d25acbf..1b1b962412 100644 --- a/examples/react_webpack/yarn.lock +++ b/examples/react_webpack/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/bazelisk@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.0.tgz#3742e9bd2ddaa43ac0c3b4ba167f95cfaf881400" - integrity sha512-lHFsZFR5ofj3yL2BtlbblbrglB/okocuY4T53M+tHLG/pV5H8LdzYPXrymzab/qXyyW4zKSPEpX20QITITsvtw== +"@bazel/bazelisk@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.6.1.tgz#f9e279d2fecaf6cec6ed676bc8714846f3704e40" + integrity sha512-2JpfZb6eYCGrdLdUJamncIpI4pgEAhPURYGg+rCgqoZDJxzADuOnpf/00dEBXPM2XByXNXTqsKEFN2gTaZz2mA== "@bazel/buildifier@^3.4.0": version "3.4.0" @@ -17,10 +17,10 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.13.1.tgz#23788f67a6fbe83d96f2d055691df4917c10ac8d" integrity sha512-FO1hBKpzpeBL0adnFYF2Dwl/7gox6ccKM6bb+x26AXrQpLbinXPuTi4zeXRL/MW4383mF6i4RovLCmwUU/YW0w== -"@bazel/typescript@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" - integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== +"@bazel/typescript@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.3.tgz#0be019014ef973f3a415c4671c65d943afc62023" + integrity sha512-yESlesTHX7gOuBzuc61HtHB8h/gRCaEB3C6guJnBVPuz4tGMLJ069fJz/SW/pfgrACP7ixqWqHXIAEnPsRU+tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/vendored_node/package-lock.json b/examples/vendored_node/package-lock.json index ddc8a76d21..a4b84fbad3 100644 --- a/examples/vendored_node/package-lock.json +++ b/examples/vendored_node/package-lock.json @@ -3,9 +3,9 @@ "lockfileVersion": 1, "dependencies": { "@bazel/jasmine": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.2.tgz", - "integrity": "sha512-tmQY124GSTJFN67zIjTn34YAUUaPqBcC9MnDhYPyZDWqdbJ5SqDQ4aNQpRDmZvnOV3c14dKKHpXZy28nyFovOA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@bazel/jasmine/-/jasmine-2.0.3.tgz", + "integrity": "sha512-szLfDDw+nuUoX51drpq0C32CJ3FuOIl7X06ljX7YpX15GyCjLzCRnX2antZCUq2gau/AcBJ3RY+3yruzD6RZiQ==", "dev": true, "requires": { "c8": "~7.1.0", diff --git a/examples/vendored_node/package.json b/examples/vendored_node/package.json index b9a66a5cd6..3701c586e8 100644 --- a/examples/vendored_node/package.json +++ b/examples/vendored_node/package.json @@ -1,7 +1,7 @@ { "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.2", + "@bazel/jasmine": "^2.0.3", "jasmine": "^3.5.0" }, "scripts": { diff --git a/examples/vendored_node_and_yarn/package.json b/examples/vendored_node_and_yarn/package.json index b9a66a5cd6..3701c586e8 100644 --- a/examples/vendored_node_and_yarn/package.json +++ b/examples/vendored_node_and_yarn/package.json @@ -1,7 +1,7 @@ { "private": true, "devDependencies": { - "@bazel/jasmine": "^2.0.2", + "@bazel/jasmine": "^2.0.3", "jasmine": "^3.5.0" }, "scripts": { diff --git a/examples/vendored_node_and_yarn/yarn.lock b/examples/vendored_node_and_yarn/yarn.lock index ee82c2f616..c4c9a5a09d 100644 --- a/examples/vendored_node_and_yarn/yarn.lock +++ b/examples/vendored_node_and_yarn/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/jasmine@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.2.tgz#a4ccd3bf0b780d3d617cee07d146d459076385e4" - integrity sha512-tmQY124GSTJFN67zIjTn34YAUUaPqBcC9MnDhYPyZDWqdbJ5SqDQ4aNQpRDmZvnOV3c14dKKHpXZy28nyFovOA== +"@bazel/jasmine@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-2.0.3.tgz#91416eab2eb3da265a21cbc829294d51e93f0c52" + integrity sha512-szLfDDw+nuUoX51drpq0C32CJ3FuOIl7X06ljX7YpX15GyCjLzCRnX2antZCUq2gau/AcBJ3RY+3yruzD6RZiQ== dependencies: c8 "~7.1.0" jasmine-reporters "~2.3.2" diff --git a/examples/vue/package-lock.json b/examples/vue/package-lock.json index f5a004cef9..526ed47e8c 100644 --- a/examples/vue/package-lock.json +++ b/examples/vue/package-lock.json @@ -1022,9 +1022,9 @@ } }, "@bazel/bazelisk": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@bazel/bazelisk/-/bazelisk-1.6.0.tgz", - "integrity": "sha512-lHFsZFR5ofj3yL2BtlbblbrglB/okocuY4T53M+tHLG/pV5H8LdzYPXrymzab/qXyyW4zKSPEpX20QITITsvtw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@bazel/bazelisk/-/bazelisk-1.6.1.tgz", + "integrity": "sha512-2JpfZb6eYCGrdLdUJamncIpI4pgEAhPURYGg+rCgqoZDJxzADuOnpf/00dEBXPM2XByXNXTqsKEFN2gTaZz2mA==", "dev": true }, "@bazel/ibazel": { diff --git a/examples/vue/package.json b/examples/vue/package.json index 9c82449cdd..1253920651 100644 --- a/examples/vue/package.json +++ b/examples/vue/package.json @@ -13,7 +13,7 @@ "vue": "^2.6.11" }, "devDependencies": { - "@bazel/bazelisk": "^1.6.0", + "@bazel/bazelisk": "^1.6.1", "@bazel/ibazel": "^0.13.1", "@vue/cli-plugin-babel": "~4.4.0", "@vue/cli-plugin-eslint": "~4.4.0", diff --git a/examples/web_testing/package.json b/examples/web_testing/package.json index b7a7058683..4eefd09a7d 100644 --- a/examples/web_testing/package.json +++ b/examples/web_testing/package.json @@ -1,7 +1,7 @@ { "devDependencies": { - "@bazel/karma": "^2.0.2", - "@bazel/typescript": "^2.0.2", + "@bazel/karma": "^2.0.3", + "@bazel/typescript": "^2.0.3", "@types/jasmine": "2.8.2", "@types/node": "11.11.1", "karma": "~4.1.0", diff --git a/examples/web_testing/yarn.lock b/examples/web_testing/yarn.lock index 15c8578d33..8ad42fd953 100644 --- a/examples/web_testing/yarn.lock +++ b/examples/web_testing/yarn.lock @@ -2,17 +2,17 @@ # yarn lockfile v1 -"@bazel/karma@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.2.tgz#9863ec7f2e4cfe675b3b3f6e28340c351600758c" - integrity sha512-/bgtIQNHIgFYnH1Ts9D1fLE4n0StT8a8AayZrWklTaGSA56UjmTh1l30dACpQuiwV0VVIDlZJrQMAIBacTzwug== +"@bazel/karma@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/karma/-/karma-2.0.3.tgz#fae59ec239b9b917680e48ef7252925d13673ce2" + integrity sha512-PkaBdWHrgyWxmja8Xg580U0NEpNAfCc2l0l896hOW4JT2vvfd628YPQz0bC5dRCpMbWlFA7eaGoGeWg3S0K+HQ== dependencies: tmp "0.1.0" -"@bazel/typescript@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" - integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== +"@bazel/typescript@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.3.tgz#0be019014ef973f3a415c4671c65d943afc62023" + integrity sha512-yESlesTHX7gOuBzuc61HtHB8h/gRCaEB3C6guJnBVPuz4tGMLJ069fJz/SW/pfgrACP7ixqWqHXIAEnPsRU+tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/webapp/package.json b/examples/webapp/package.json index c2b0768b03..8a71ea0b0b 100644 --- a/examples/webapp/package.json +++ b/examples/webapp/package.json @@ -4,10 +4,10 @@ "@babel/cli": "^7.6.0", "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", - "@bazel/protractor": "^2.0.2", - "@bazel/rollup": "^2.0.2", - "@bazel/terser": "^2.0.2", - "@bazel/typescript": "^2.0.2", + "@bazel/protractor": "^2.0.3", + "@bazel/rollup": "^2.0.3", + "@bazel/terser": "^2.0.3", + "@bazel/typescript": "^2.0.3", "http-server": "^0.11.1", "mocha": "^6.2.1", "protractor": "^5.4.2", diff --git a/examples/webapp/yarn.lock b/examples/webapp/yarn.lock index 9a85368acc..d236efa79e 100644 --- a/examples/webapp/yarn.lock +++ b/examples/webapp/yarn.lock @@ -655,25 +655,25 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@bazel/protractor@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.2.tgz#da276a82799b24de947b2ed19ed1acc4ce5bf895" - integrity sha512-JGFILIrqroJoa91iC0dSjQA2aXFM9c5BEN2LQuqn/NxTU4dPbLUXrrEZ/dzJOnlQvnfRhYQIFiA3gMFbG+/RnA== +"@bazel/protractor@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-2.0.3.tgz#900a522035417f47c4ab3f88967fa3a6a187dff3" + integrity sha512-6FhSHWYOsZrl1Rj0Q8DCwdqYCUxOxjEynVXzj8Jkgl9yK7ltnCWwLkP/LqRxiNIsKDX5tgCSJARxSPRA2EDYBA== -"@bazel/rollup@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.2.tgz#9bf0df17d94314e67d6ddce1c9d7366a212c83b0" - integrity sha512-W8G7XCbSS5cVwIc1mZ11QOmfjqGb/5psATeyB8Z5E77nSPiuYla1tFfgUJn8MOJ9C6wYVQwqIS9l5X44jLmZWg== +"@bazel/rollup@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-2.0.3.tgz#2cbc2b54fcd234aae732f795275b811144c370d1" + integrity sha512-b7S8gZvHK+//o7IMrWrsNncDkOdZKckbV7UYC7ozwkVYfgSzrVc67ijUdTVmMq1/tyMsoWyrIauldbh6ayECmQ== -"@bazel/terser@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.2.tgz#509109ffdaecc2c466756918f6354644721d714f" - integrity sha512-c3VFfgn0HZHhaav9NPpDTxmCuD6yCyFtENZXr3JbM151qPFrkDuJU0hwTe/o5f07m1HC3u6zuchzYGzPpBFyGQ== +"@bazel/terser@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-2.0.3.tgz#0e30d311e0a5f08a35c727b158775bd45bd3d8c5" + integrity sha512-rOcrrCuI0gUsdTeOOom0DTj6ekI+gPt9tv6doZtDhwg//DXUnh3OBZlvyhX+j6lBB2efTJurisIBwqPDgu1n7g== -"@bazel/typescript@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.2.tgz#02a2b81e5b73224eace8cec4735a2b0f9975f199" - integrity sha512-Ygv3HVxa/y9qnazi8hPvGwXsooeZ2RhgQCJtcIV7QLyGb+X8gv5ZUPlSKkXVI94TFO2x6pxFQHHcgKOEu4HWaw== +"@bazel/typescript@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.0.3.tgz#0be019014ef973f3a415c4671c65d943afc62023" + integrity sha512-yESlesTHX7gOuBzuc61HtHB8h/gRCaEB3C6guJnBVPuz4tGMLJ069fJz/SW/pfgrACP7ixqWqHXIAEnPsRU+tw== dependencies: protobufjs "6.8.8" semver "5.6.0" diff --git a/examples/worker/package.json b/examples/worker/package.json index fc03bbd85a..f6fa8f1776 100644 --- a/examples/worker/package.json +++ b/examples/worker/package.json @@ -1,6 +1,6 @@ { "private": true, "devDependencies": { - "@bazel/worker": "^2.0.2" + "@bazel/worker": "^2.0.3" } } diff --git a/examples/worker/yarn.lock b/examples/worker/yarn.lock index c744f646d3..94307048ce 100644 --- a/examples/worker/yarn.lock +++ b/examples/worker/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@bazel/worker@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-2.0.2.tgz#08bae606428727b848fef250b5ea41d63494df46" - integrity sha512-kdkdIhoWE3fZKBiEb1p9pMR6uR+0LW+Eu98DxLZcXQ1BuOr+IwXXcC1E+i3NLLNJ2fS5Ra1RNuNTQ4B0SiZvTw== +"@bazel/worker@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-2.0.3.tgz#dec5428af9e6a42c4ccdfb3dac67b02041689447" + integrity sha512-p1Y9b7dFAEeW1VSHcz7Y7KuTJc3Ky6W4I1gbTXZWyB+IDQH8HnVJdBac4LrGxI5bg3RkZ2eymFWbWywS2zAz8g== dependencies: protobufjs "6.8.8" From 16def64dbf0e9ba87b5d1f4db3ca4dc6c9fb8b4a Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 24 Aug 2020 15:27:08 -0700 Subject: [PATCH 0827/1134] fix(typescript): add the tsBuildInfoFile option to ts_project (#2138) Like other options that affect tsc outputs, Bazel needs to know the value from the tsconfig if its set. Add it to our validator so there's a buildozer command to sync the option value into the BUILD file. Fixes #2137 --- packages/typescript/internal/ts_project.bzl | 13 ++++++- .../internal/ts_project_options_validator.ts | 34 ++++++++++++++++--- .../ts_project/tsbuildinfofile/BUILD.bazel | 7 ++++ .../test/ts_project/tsbuildinfofile/a.ts | 1 + .../ts_project/tsbuildinfofile/tsconfig.json | 7 ++++ 5 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 packages/typescript/test/ts_project/tsbuildinfofile/BUILD.bazel create mode 100644 packages/typescript/test/ts_project/tsbuildinfofile/a.ts create mode 100644 packages/typescript/test/ts_project/tsbuildinfofile/tsconfig.json diff --git a/packages/typescript/internal/ts_project.bzl b/packages/typescript/internal/ts_project.bzl index fcd0f2d13c..26f5ed10e5 100644 --- a/packages/typescript/internal/ts_project.bzl +++ b/packages/typescript/internal/ts_project.bzl @@ -116,6 +116,10 @@ def _ts_project_impl(ctx): outputs = json_outs + ctx.outputs.js_outs + ctx.outputs.map_outs + ctx.outputs.typings_outs + ctx.outputs.typing_maps_outs if ctx.outputs.buildinfo_out: + arguments.add_all([ + "--tsBuildInfoFile", + ctx.outputs.buildinfo_out.path, + ]) outputs.append(ctx.outputs.buildinfo_out) runtime_outputs = json_outs + ctx.outputs.js_outs + ctx.outputs.map_outs typings_outputs = ctx.outputs.typings_outs + ctx.outputs.typing_maps_outs + [s for s in ctx.files.srcs if s.path.endswith(".d.ts")] @@ -184,6 +188,7 @@ def _validate_options_impl(ctx): emit_declaration_only = ctx.attr.emit_declaration_only, source_map = ctx.attr.source_map, incremental = ctx.attr.incremental, + ts_build_info_file = ctx.attr.ts_build_info_file, ).to_json()]) run_node( @@ -210,6 +215,7 @@ validate_options = rule( "incremental": attr.bool(), "source_map": attr.bool(), "target": attr.string(), + "ts_build_info_file": attr.string(), "tsconfig": attr.label(mandatory = True, allow_single_file = [".json"]), "validator": attr.label(default = Label("//packages/typescript/bin:ts_project_options_validator"), executable = True, cfg = "host"), }, @@ -236,6 +242,7 @@ def ts_project_macro( composite = False, incremental = False, emit_declaration_only = False, + ts_build_info_file = None, tsc = None, validate = True, declaration_dir = None, @@ -394,6 +401,8 @@ def ts_project_macro( Instructs Bazel to expect a `.tsbuildinfo` output. emit_declaration_only: if the `emitDeclarationOnly` bit is set in the tsconfig. Instructs Bazel *not* to expect `.js` or `.js.map` outputs for `.ts` sources. + ts_build_info_file: the user-specified value of `tsBuildInfoFile` from the tsconfig. + Helps Bazel to predict the path where the .tsbuildinfo output is written. **kwargs: passed through to underlying rule, allows eg. visibility, tags """ @@ -416,12 +425,14 @@ def ts_project_macro( composite = composite, incremental = incremental, emit_declaration_only = emit_declaration_only, + ts_build_info_file = ts_build_info_file, tsconfig = tsconfig, extends = extends, ) extra_deps.append("_validate_%s_options" % name) typings_out_dir = declaration_dir if declaration_dir else out_dir + tsbuildinfo_path = ts_build_info_file if ts_build_info_file else tsconfig[:-5] + ".tsbuildinfo" ts_project( name = name, @@ -437,7 +448,7 @@ def ts_project_macro( map_outs = _out_paths(srcs, out_dir, root_dir, ".js.map") if source_map and not emit_declaration_only else [], typings_outs = _out_paths(srcs, typings_out_dir, root_dir, ".d.ts") if declaration or composite else [], typing_maps_outs = _out_paths(srcs, typings_out_dir, root_dir, ".d.ts.map") if declaration_map else [], - buildinfo_out = tsconfig[:-5] + ".tsbuildinfo" if composite or incremental else None, + buildinfo_out = tsbuildinfo_path if composite or incremental else None, tsc = tsc, **kwargs ) diff --git a/packages/typescript/internal/ts_project_options_validator.ts b/packages/typescript/internal/ts_project_options_validator.ts index e33f51f662..a8468446d9 100644 --- a/packages/typescript/internal/ts_project_options_validator.ts +++ b/packages/typescript/internal/ts_project_options_validator.ts @@ -1,3 +1,4 @@ +import {relative} from 'path'; import * as ts from 'typescript'; const diagnosticsHost: ts.FormatDiagnosticsHost = { @@ -29,14 +30,37 @@ function main([tsconfigPath, output, target, attrsStr]: string[]): 0|1 { const failures: string[] = []; const buildozerCmds: string[] = []; + + function getTsOption(option) { + if (typeof (options[option]) === 'string') { + // Currently the only string-typed options are filepaths. + // TypeScript will resolve these to a project path + // so when echoing that back to the user, we need to reverse that resolution. + // First turn //path/to/pkg:tsconfig into path/to/pkg + const packageDir = target.substr(2, target.indexOf(':') - 2); + return relative(packageDir, options[option] as string); + } + return options[option]; + } + function check(option: string, attr?: string) { attr = attr || option; // treat compilerOptions undefined as false - const optionVal = options[option] === undefined ? false : options[option]; - if (optionVal !== attrs[attr]) { + const optionVal = getTsOption(option); + const match = optionVal === attrs[attr] || + (optionVal === undefined && (attrs[attr] === false || attrs[attr] === '')); + if (!match) { failures.push( `attribute ${attr}=${attrs[attr]} does not match compilerOptions.${option}=${optionVal}`); - buildozerCmds.push(`set ${attr} ${optionVal ? 'True' : 'False'}`); + if (typeof (optionVal) === 'boolean') { + buildozerCmds.push(`set ${attr} ${optionVal ? 'True' : 'False'}`); + } else if (typeof (optionVal) === 'string') { + buildozerCmds.push(`set ${attr} \"${optionVal}\"`); + } else if (optionVal === undefined) { + // nothing to sync + } else { + throw new Error(`cannot check option ${option} of type ${typeof (option)}`); + } } } @@ -46,6 +70,7 @@ function main([tsconfigPath, output, target, attrsStr]: string[]): 0|1 { check('composite'); check('declaration'); check('incremental'); + check('tsBuildInfoFile', 'ts_build_info_file'); if (failures.length > 0) { console.error(`ERROR: ts_project rule ${ @@ -70,6 +95,7 @@ function main([tsconfigPath, output, target, attrsStr]: string[]): 0|1 { // incremental: ${attrs.incremental} // source_map: ${attrs.source_map} // emit_declaration_only: ${attrs.emit_declaration_only} +// ts_build_info_file: ${attrs.ts_build_info_file} `, 'utf-8'); return 0; @@ -81,4 +107,4 @@ if (require.main === module) { } catch (e) { console.error(process.argv[1], e); } -} \ No newline at end of file +} diff --git a/packages/typescript/test/ts_project/tsbuildinfofile/BUILD.bazel b/packages/typescript/test/ts_project/tsbuildinfofile/BUILD.bazel new file mode 100644 index 0000000000..0b8d3a94a6 --- /dev/null +++ b/packages/typescript/test/ts_project/tsbuildinfofile/BUILD.bazel @@ -0,0 +1,7 @@ +load("//packages/typescript:index.bzl", "ts_project") + +ts_project( + name = "tsconfig", + composite = True, + ts_build_info_file = "my.tsbuildinfo", +) diff --git a/packages/typescript/test/ts_project/tsbuildinfofile/a.ts b/packages/typescript/test/ts_project/tsbuildinfofile/a.ts new file mode 100644 index 0000000000..db233fb40c --- /dev/null +++ b/packages/typescript/test/ts_project/tsbuildinfofile/a.ts @@ -0,0 +1 @@ +export const a: string = ''; diff --git a/packages/typescript/test/ts_project/tsbuildinfofile/tsconfig.json b/packages/typescript/test/ts_project/tsbuildinfofile/tsconfig.json new file mode 100644 index 0000000000..4f34f64477 --- /dev/null +++ b/packages/typescript/test/ts_project/tsbuildinfofile/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "composite": true, + "tsBuildInfoFile": "my.tsbuildinfo", + "types": [] + } +} From 93844203bf1b0f8b4aa449b7c071cf133106c2d8 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 24 Aug 2020 16:00:48 -0700 Subject: [PATCH 0828/1134] refactor(typescript): remove private _TsConfigInfo in ts_project (#2139) Instead use the same TsConfigInfo that ts_library uses. Fixes #1931 --- packages/typescript/internal/ts_config.bzl | 17 ++++++-- packages/typescript/internal/ts_project.bzl | 42 ++++++++++--------- packages/typescript/test/ts_project/BUILD | 8 ++++ .../test/ts_project/ts_config/BUILD.bazel | 21 ++++++++++ .../typescript/test/ts_project/ts_config/a.ts | 1 + .../ts_config/tsconfig-extended.json | 6 +++ .../test/ts_project/ts_config/tsconfig.json | 6 +++ 7 files changed, 78 insertions(+), 23 deletions(-) create mode 100644 packages/typescript/test/ts_project/ts_config/BUILD.bazel create mode 100644 packages/typescript/test/ts_project/ts_config/a.ts create mode 100644 packages/typescript/test/ts_project/ts_config/tsconfig-extended.json create mode 100644 packages/typescript/test/ts_project/ts_config/tsconfig.json diff --git a/packages/typescript/internal/ts_config.bzl b/packages/typescript/internal/ts_config.bzl index 2fc4f8e690..a54d5c9d99 100644 --- a/packages/typescript/internal/ts_config.bzl +++ b/packages/typescript/internal/ts_config.bzl @@ -14,7 +14,14 @@ "tsconfig.json files using extends" -TsConfigInfo = provider() +TsConfigInfo = provider( + doc = """Provides TypeScript configuration, in the form of a tsconfig.json file + along with any transitively referenced tsconfig.json files chained by the + "extends" feature""", + fields = { + "deps": "all tsconfig.json files needed to configure TypeScript", + }, +) def _ts_config_impl(ctx): files = depset([ctx.file.src]) @@ -22,7 +29,10 @@ def _ts_config_impl(ctx): for dep in ctx.attr.deps: if TsConfigInfo in dep: transitive_deps.extend(dep[TsConfigInfo].deps) - return [DefaultInfo(files = files), TsConfigInfo(deps = ctx.files.deps + transitive_deps)] + return [ + DefaultInfo(files = files), + TsConfigInfo(deps = [ctx.file.src] + ctx.files.deps + transitive_deps), + ] ts_config = rule( implementation = _ts_config_impl, @@ -30,7 +40,6 @@ ts_config = rule( "deps": attr.label_list( doc = """Additional tsconfig.json files referenced via extends""", allow_files = True, - mandatory = True, ), "src": attr.label( doc = """The tsconfig.json file passed to the TypeScript compiler""", @@ -41,7 +50,7 @@ ts_config = rule( doc = """Allows a tsconfig.json file to extend another file. Normally, you just give a single `tsconfig.json` file as the tsconfig attribute -of a `ts_library` rule. However, if your `tsconfig.json` uses the `extends` +of a `ts_library` or `ts_project` rule. However, if your `tsconfig.json` uses the `extends` feature from TypeScript, then the Bazel implementation needs to know about that extended configuration file as well, to pass them both to the TypeScript compiler. """, diff --git a/packages/typescript/internal/ts_project.bzl b/packages/typescript/internal/ts_project.bzl index 26f5ed10e5..7530f7bff5 100644 --- a/packages/typescript/internal/ts_project.bzl +++ b/packages/typescript/internal/ts_project.bzl @@ -2,6 +2,7 @@ load("@build_bazel_rules_nodejs//:providers.bzl", "DeclarationInfo", "NpmPackageInfo", "declaration_info", "js_module_info", "run_node") load("@build_bazel_rules_nodejs//internal/linker:link_node_modules.bzl", "module_mappings_aspect") +load(":ts_config.bzl", "TsConfigInfo") _DEFAULT_TSC = ( # BEGIN-INTERNAL @@ -37,14 +38,6 @@ _OUTPUTS = { "typings_outs": attr.output_list(), } -_TsConfigInfo = provider( - doc = """Passes tsconfig.json files to downstream compilations so that TypeScript can read them. - This is needed to support Project References""", - fields = { - "tsconfigs": "depset of tsconfig.json files", - }, -) - def _join(*elements): return "/".join([f for f in elements if f]) @@ -87,8 +80,8 @@ def _ts_project_impl(ctx): deps_depsets = [] for dep in ctx.attr.deps: - if _TsConfigInfo in dep: - deps_depsets.append(dep[_TsConfigInfo].tsconfigs) + if TsConfigInfo in dep: + deps_depsets.append(dep[TsConfigInfo].deps) if NpmPackageInfo in dep: # TODO: we could maybe filter these to be tsconfig.json or *.d.ts only # we don't expect tsc wants to read any other files from npm packages. @@ -96,7 +89,11 @@ def _ts_project_impl(ctx): if DeclarationInfo in dep: deps_depsets.append(dep[DeclarationInfo].transitive_declarations) - inputs = ctx.files.srcs + depset(transitive = deps_depsets).to_list() + [ctx.file.tsconfig] + inputs = ctx.files.srcs + depset(transitive = deps_depsets).to_list() + if TsConfigInfo in ctx.attr.tsconfig: + inputs.extend(ctx.attr.tsconfig[TsConfigInfo].deps) + else: + inputs.append(ctx.file.tsconfig) if ctx.attr.extends: inputs.extend(ctx.files.extends) @@ -155,10 +152,10 @@ def _ts_project_impl(ctx): sources = depset(runtime_outputs), deps = ctx.attr.deps, ), - _TsConfigInfo(tsconfigs = depset([ctx.file.tsconfig] + ctx.files.extends, transitive = [ - dep[_TsConfigInfo].tsconfigs + TsConfigInfo(deps = depset([ctx.file.tsconfig] + ctx.files.extends, transitive = [ + dep[TsConfigInfo].deps for dep in ctx.attr.deps - if _TsConfigInfo in dep + if TsConfigInfo in dep ])), ] @@ -191,9 +188,15 @@ def _validate_options_impl(ctx): ts_build_info_file = ctx.attr.ts_build_info_file, ).to_json()]) + inputs = ctx.files.extends[:] + if TsConfigInfo in ctx.attr.tsconfig: + inputs.extend(ctx.attr.tsconfig[TsConfigInfo].deps) + else: + inputs.append(ctx.file.tsconfig) + run_node( ctx, - inputs = [ctx.file.tsconfig] + ctx.files.extends, + inputs = inputs, outputs = [marker], arguments = [arguments], executable = "validator", @@ -356,13 +359,14 @@ def ts_project_macro( deps: List of labels of other rules that produce TypeScript typings (.d.ts files) - tsconfig: Label of the tsconfig.json file to use for the compilation. + tsconfig: Label of the tsconfig.json file to use for the compilation, or a target that provides TsConfigInfo. - By default, we add `.json` to the `name` attribute. + By default, we assume the tsconfig file is named by adding `.json` to the `name` attribute. extends: List of labels of tsconfig file(s) referenced in `extends` section of tsconfig. - Must include any tsconfig files "chained" by extends clauses. + Any tsconfig files "chained" by extends clauses must either be transitive deps of the TsConfigInfo + provided to the `tsconfig` attribute, or must be explicitly listed here. args: List of strings of additional command-line arguments to pass to tsc. @@ -432,7 +436,7 @@ def ts_project_macro( extra_deps.append("_validate_%s_options" % name) typings_out_dir = declaration_dir if declaration_dir else out_dir - tsbuildinfo_path = ts_build_info_file if ts_build_info_file else tsconfig[:-5] + ".tsbuildinfo" + tsbuildinfo_path = ts_build_info_file if ts_build_info_file else name + ".tsbuildinfo" ts_project( name = name, diff --git a/packages/typescript/test/ts_project/BUILD b/packages/typescript/test/ts_project/BUILD index 96b6172fd3..c41a53b812 100644 --- a/packages/typescript/test/ts_project/BUILD +++ b/packages/typescript/test/ts_project/BUILD @@ -1 +1,9 @@ +load("//packages/typescript:index.bzl", "ts_config") + exports_files(["tsconfig-base.json"]) + +ts_config( + name = "tsconfig", + src = "tsconfig-base.json", + visibility = ["//packages/typescript/test/ts_project:__subpackages__"], +) diff --git a/packages/typescript/test/ts_project/ts_config/BUILD.bazel b/packages/typescript/test/ts_project/ts_config/BUILD.bazel new file mode 100644 index 0000000000..e16b566eaf --- /dev/null +++ b/packages/typescript/test/ts_project/ts_config/BUILD.bazel @@ -0,0 +1,21 @@ +""" +Test a tree of tsconfig.json files +""" + +load("//packages/typescript:index.bzl", "ts_config", "ts_project") + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "tsconfig-extended.json", + "//packages/typescript/test/ts_project:tsconfig", + ], +) + +ts_project( + name = "compile_ts", + composite = True, + declaration = True, + tsconfig = "tsconfig", +) diff --git a/packages/typescript/test/ts_project/ts_config/a.ts b/packages/typescript/test/ts_project/ts_config/a.ts new file mode 100644 index 0000000000..f32045c3a2 --- /dev/null +++ b/packages/typescript/test/ts_project/ts_config/a.ts @@ -0,0 +1 @@ +export const a: string = 'hello world'; diff --git a/packages/typescript/test/ts_project/ts_config/tsconfig-extended.json b/packages/typescript/test/ts_project/ts_config/tsconfig-extended.json new file mode 100644 index 0000000000..83df99288c --- /dev/null +++ b/packages/typescript/test/ts_project/ts_config/tsconfig-extended.json @@ -0,0 +1,6 @@ +{ + "extends": "../tsconfig-base", + "compilerOptions": { + "declaration": true + }, +} diff --git a/packages/typescript/test/ts_project/ts_config/tsconfig.json b/packages/typescript/test/ts_project/ts_config/tsconfig.json new file mode 100644 index 0000000000..3f14391a0e --- /dev/null +++ b/packages/typescript/test/ts_project/ts_config/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig-extended.json", + "compilerOptions": { + "types": [] + } +} From ca2fee5d6815a9a4aff544b356734be1a59fd005 Mon Sep 17 00:00:00 2001 From: Matt Mackay Date: Thu, 13 Aug 2020 15:11:31 -0400 Subject: [PATCH 0829/1134] docs: refresh docsite --- .bazelci/presubmit.yml | 6 +- docs/BUILD.bazel | 72 +- docs/Built-ins.html | 2863 ++++++++++++++++ docs/Built-ins.md | 2864 +++++++++++------ docs/Cypress.html | 411 +++ docs/Cypress.md | 125 +- docs/Jasmine.html | 395 +++ docs/Jasmine.md | 212 +- docs/Karma.html | 533 +++ docs/Karma.md | 376 ++- docs/Protractor.html | 463 +++ docs/Protractor.md | 331 +- docs/README.md | 18 +- docs/Rollup.html | 607 ++++ docs/Rollup.md | 356 +- docs/Terser.html | 438 +++ docs/Terser.md | 191 +- docs/TypeScript.html | 1491 +++++++++ docs/TypeScript.md | 1321 +++++--- docs/_config.yml | 16 +- docs/_includes/drawer.html | 73 - docs/_includes/footer-content.html | 7 + docs/_includes/footer.html | 184 +- docs/_includes/head.html | 50 +- docs/_includes/header.html | 43 +- docs/_includes/sidenav.html | 39 + docs/_layouts/default.html | 59 +- docs/_layouts/home.html | 23 - docs/changing-rules.html | 300 ++ docs/changing-rules.md | 47 + docs/css/BUILD.bazel | 15 + docs/css/_be.scss | 93 + docs/css/_docs.scss | 7 + docs/css/_footer.scss | 25 + docs/css/_navbar.scss | 96 + docs/css/_sidebar.scss | 166 + docs/css/_styles.scss | 254 ++ docs/css/_syntax.scss | 89 + docs/css/_tables.scss | 63 + docs/css/docs.css | 212 -- docs/css/home.css | 173 - docs/css/main.css | 1 + docs/css/main.scss | 11 + docs/debugging.html | 316 ++ docs/debugging.md | 67 + docs/dependencies.html | 534 +++ docs/dependencies.md | 277 ++ docs/examples.html | 431 +++ docs/examples.md | 47 +- docs/images/bazel-icon.png | Bin 0 -> 4945 bytes docs/images/bazel-icon.svg | 15 + docs/images/bazel-logo.png | Bin 0 -> 12169 bytes docs/images/bazel-logo.svg | 13 + docs/images/bazel-navbar.svg | 38 + docs/images/bazel-og-image.png | Bin 0 -> 15253 bytes docs/images/favicon-16x16.png | Bin 0 -> 553 bytes docs/images/favicon-32x32.png | Bin 0 -> 733 bytes docs/images/favicon.ico | Bin docs/index.html | 438 +++ docs/index.md | 232 +- docs/install.html | 420 +++ docs/install.md | 296 +- docs/repositories.html | 342 ++ docs/repositories.md | 5 +- docs/stamping.html | 323 ++ docs/stamping.md | 70 + internal/common/copy_to_bin.bzl | 2 +- internal/node/node.bzl | 22 +- internal/node/node_repositories.bzl | 128 +- internal/providers/linkable_package_info.bzl | 8 +- package.json | 2 +- packages/cypress/install.md | 4 +- packages/terser/terser_minified.bzl | 5 +- packages/typescript/install.md | 8 +- .../test/ts_project/simple/tsconfig.json | 2 +- tools/stardoc/BUILD.bazel | 5 +- tools/stardoc/index.bzl | 3 + tools/stardoc/jekyll.bzl | 153 + tools/stardoc/jekyll_serve_tpl.sh | 9 + tools/stardoc/post-process-docs.js | 33 + tools/stardoc/templates/aspect.vm | 60 +- tools/stardoc/templates/func.vm | 46 +- tools/stardoc/templates/header.vm | 3 - tools/stardoc/templates/provider.vm | 31 +- tools/stardoc/templates/rule.vm | 48 +- 85 files changed, 15986 insertions(+), 3569 deletions(-) create mode 100755 docs/Built-ins.html create mode 100755 docs/Cypress.html create mode 100755 docs/Jasmine.html create mode 100755 docs/Karma.html create mode 100755 docs/Protractor.html create mode 100755 docs/Rollup.html create mode 100755 docs/Terser.html create mode 100755 docs/TypeScript.html delete mode 100644 docs/_includes/drawer.html create mode 100644 docs/_includes/footer-content.html create mode 100644 docs/_includes/sidenav.html delete mode 100644 docs/_layouts/home.html create mode 100755 docs/changing-rules.html create mode 100644 docs/changing-rules.md create mode 100644 docs/css/BUILD.bazel create mode 100644 docs/css/_be.scss create mode 100644 docs/css/_docs.scss create mode 100644 docs/css/_footer.scss create mode 100644 docs/css/_navbar.scss create mode 100644 docs/css/_sidebar.scss create mode 100644 docs/css/_styles.scss create mode 100644 docs/css/_syntax.scss create mode 100644 docs/css/_tables.scss delete mode 100644 docs/css/docs.css delete mode 100644 docs/css/home.css create mode 100755 docs/css/main.css create mode 100644 docs/css/main.scss create mode 100755 docs/debugging.html create mode 100644 docs/debugging.md create mode 100755 docs/dependencies.html create mode 100644 docs/dependencies.md create mode 100755 docs/examples.html create mode 100644 docs/images/bazel-icon.png create mode 100755 docs/images/bazel-icon.svg create mode 100644 docs/images/bazel-logo.png create mode 100644 docs/images/bazel-logo.svg create mode 100644 docs/images/bazel-navbar.svg create mode 100644 docs/images/bazel-og-image.png create mode 100644 docs/images/favicon-16x16.png create mode 100644 docs/images/favicon-32x32.png mode change 100644 => 100755 docs/images/favicon.ico create mode 100755 docs/index.html create mode 100755 docs/install.html create mode 100755 docs/repositories.html create mode 100755 docs/stamping.html create mode 100644 docs/stamping.md create mode 100644 tools/stardoc/jekyll.bzl create mode 100644 tools/stardoc/jekyll_serve_tpl.sh create mode 100644 tools/stardoc/post-process-docs.js diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml index 5e2c576ec9..08931b7c92 100644 --- a/.bazelci/presubmit.yml +++ b/.bazelci/presubmit.yml @@ -128,9 +128,9 @@ tasks: # TODO(gregmagolan): figure out how to install missing shared libs # Without this filter the @cypress external repository will be built and that build will fail due to missing shared libs. - "--build_tag_filters=-cypress" - # This target is tagged "manual" but we want some CI - # coverage of it to make sure it doesn't break. - - "//docs" + # Build the docs up to the point of running Jekyll as this requires some locally installed deps + # Building the stardoc targets provides a little test coverage in formatting etc + - "//docs:builtins_md" test_flags: # Both chrome & firefox are missing shared libs on bazelci ubuntu. # On circleci we have the same issue but we can work around it using apt-get. diff --git a/docs/BUILD.bazel b/docs/BUILD.bazel index eb16ffe8b8..e1c7430ded 100644 --- a/docs/BUILD.bazel +++ b/docs/BUILD.bazel @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//tools/stardoc:index.bzl", "stardoc") +load("//tools/stardoc:index.bzl", "rules_nodejs_docs", "stardoc") stardoc( name = "builtins", @@ -53,45 +53,35 @@ genrule( tags = ["fix-windows"], ) -_PACKAGE_READMES = { - "Built-ins": ":builtins.doc", - "Cypress": "//packages/cypress:README.md", - "Jasmine": "//packages/jasmine:README.md", - "Karma": "//packages/karma:README.md", - "Protractor": "//packages/protractor:README.md", - "Rollup": "//packages/rollup:README.md", - "Terser": "//packages/terser:README.md", - "TypeScript": "//packages/typescript:README.md", -} - -_FRONT_MATTER = "\n".join([ - "---", - "title: %s", - "layout: default", - "stylesheet: docs", - "---", - "", -]) - -[ - genrule( - name = "%s_md" % readme[0], - srcs = [readme[1]], - outs = [readme[0] + ".md"], - cmd = "echo '%s' > $@;" % _FRONT_MATTER % readme[0] + - "cat $< >> $@", - tags = ["fix-windows"], - ) - for readme in _PACKAGE_READMES.items() -] - -filegroup( +rules_nodejs_docs( name = "docs", - srcs = [s + ".md" for s in _PACKAGE_READMES.keys()], - tags = ["fix-windows"], + assets = glob(["images/*"]), + config = "_config.yml", + css = "//docs/css", + docs = [ + "install.md", + "repositories.md", + "debugging.md", + "dependencies.md", + "stamping.md", + "index.md", + "examples.md", + "changing-rules.md", + ], + includes = glob(["_includes/*"]), + layouts = glob(["_layouts/*"]), + readmes = { + "Built-ins": ":builtins.doc", + "Cypress": "//packages/cypress:README.md", + "Jasmine": "//packages/jasmine:README.md", + "Karma": "//packages/karma:README.md", + "Protractor": "//packages/protractor:README.md", + "Rollup": "//packages/rollup:README.md", + "Terser": "//packages/terser:README.md", + "TypeScript": "//packages/typescript:README.md", + }, + tags = [ + "fix-windows", + "manual", + ], ) diff --git a/docs/Built-ins.html b/docs/Built-ins.html new file mode 100755 index 0000000000..fd5726f09e --- /dev/null +++ b/docs/Built-ins.html @@ -0,0 +1,2863 @@ + + + + + + + + + + rules_nodejs - Built-ins + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + +
      +
      + +

      Built-in rules

      + +

      These rules are available without any npm installation, via the WORKSPACE install of the build_bazel_rules_nodejs workspace. This is necessary to bootstrap Bazel to run the package manager to download other rules from NPM.

      + +

      node_repositories

      + +

      To be run in user’s WORKSPACE to install rules_nodejs dependencies.

      + +

      This rule sets up node, npm, and yarn. The versions of these tools can be specified in one of three ways

      + +

      Simplest Usage

      + +

      Specify no explicit versions. This will download and use the latest NodeJS & Yarn that were available when the +version of rules_nodejs you’re using was released. +Note that you can skip calling node_repositories in your WORKSPACE file - if you later try to yarn_install or npm_install, +we’ll automatically select this simple usage for you.

      + +

      Forced version(s)

      + +

      You can select the version of NodeJS and/or Yarn to download & use by specifying it when you call node_repositories, +using a value that matches a known version (see the default values)

      + +

      Using a custom version

      + +

      You can pass in a custom list of NodeJS and/or Yarn repositories and URLs for node_resositories to use.

      + +

      Custom NodeJS versions

      + +

      To specify custom NodeJS versions, use the node_repositories attribute

      + +
      node_repositories(
      +    node_repositories = {
      +        "10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e"),
      +        "10.10.0-linux_amd64": ("node-v10.10.0-linux-x64.tar.xz", "node-v10.10.0-linux-x64", "686d2c7b7698097e67bcd68edc3d6b5d28d81f62436c7cf9e7779d134ec262a9"),
      +        "10.10.0-windows_amd64": ("node-v10.10.0-win-x64.zip", "node-v10.10.0-win-x64", "70c46e6451798be9d052b700ce5dadccb75cf917f6bf0d6ed54344c856830cfb"),
      +    },
      +)
      + +

      These can be mapped to a custom download URL, using node_urls

      + +
      node_repositories(
      +    node_version = "10.10.0",
      +    node_repositories = {"10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e")},
      +    node_urls = ["https://mycorpproxy/mirror/node/v{version}/{filename}"],
      +)
      + +

      A Mac client will try to download node from https://mycorpproxy/mirror/node/v10.10.0/node-v10.10.0-darwin-x64.tar.gz +and expect that file to have sha256sum 00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e

      + +

      Custom Yarn versions

      + +

      To specify custom Yarn versions, use the yarn_repositories attribute

      + +
      node_repositories(
      +    yarn_repositories = {
      +        "1.12.1": ("yarn-v1.12.1.tar.gz", "yarn-v1.12.1", "09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d"),
      +    },
      +)
      + +

      Like node_urls, the yarn_urls attribute can be used to provide a list of custom URLs to use to download yarn

      + +
      node_repositories(
      +    yarn_repositories = {
      +        "1.12.1": ("yarn-v1.12.1.tar.gz", "yarn-v1.12.1", "09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d"),
      +    },
      +    yarn_version = "1.12.1",
      +    yarn_urls = [
      +        "https://github.com/yarnpkg/yarn/releases/download/v{version}/{filename}",
      +    ],
      +)
      + +

      Will download yarn from https://github.com/yarnpkg/yarn/releases/download/v1.2.1/yarn-v1.12.1.tar.gz +and expect the file to have sha256sum 09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d.

      + +

      Using a local version

      + +

      To avoid downloads, you can check in vendored copies of NodeJS and/or Yarn and set vendored_node and or vendored_yarn +to point to those before calling node_repositories. You can also point to a location where node is installed on your computer, +but we don’t recommend this because it leads to version skew between you, your coworkers, and your Continuous Integration environment. +It also ties your build to a single platform, preventing you from cross-compiling into a Linux docker image on Mac for example.

      + +

      See the the repositories documentation for how to use the resulting repositories.

      + +

      Creating dependency installation scripts for manually-managed dependencies

      + +

      You can optionally pass a </code>package_json array to node_repositories. This lets you use Bazel's version of yarn or npm, yet always run the package manager yourself. +This is an advanced scenario you can use in place of the npm_install or yarn_install` rules, but we don’t recommend it, and might remove it in the future.

      + +
      load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories")
      +node_repositories(package_json = ["//:package.json", "//subpkg:package.json"])
      + +

      Running bazel run @nodejs//:yarn_node_repositories in this repo would create /node_modules and /subpkg/node_modules.

      + +

      Note that the dependency installation scripts will run in each subpackage indicated by the package_json attribute.

      + +
      +node_repositories(name, node_repositories, node_urls, node_version, package_json, preserve_symlinks,
      +                  vendored_node, vendored_yarn, yarn_repositories, yarn_urls, yarn_version)
      +
      + +

      ATTRIBUTES

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this repository. + Namerequired + +
      node_repositories + Custom list of node repositories to use + +A dictionary mapping NodeJS versions to sets of hosts and their corresponding (filename, strip_prefix, sha256) tuples. +You should list a node binary for every platform users have, likely Mac, Windows, and Linux. + Dictionary: String -> List of stringsoptional + {"8.0.0-darwin_amd64": ("node-v8.0.0-darwin-x64.tar.gz", "node-v8.0.0-darwin-x64", "6e4a66917e2c11d5adc537c899941c973ae586293352b8172a4f32be0b7f0300"), "8.0.0-linux_arm64": ("node-v8.0.0-linux-arm64.tar.xz", "node-v8.0.0-linux-arm64", "8d6eaefcc252055de54a666d4e00eec78caf2143cd7a13b63f109e9eb78a795e"), "8.0.0-linux_amd64": ("node-v8.0.0-linux-x64.tar.xz", "node-v8.0.0-linux-x64", "0a536bb83eeccca23626e5e5ead52563a641e4331c35e367662892921dc7e8a4"), "8.0.0-windows_amd64": ("node-v8.0.0-win-x64.zip", "node-v8.0.0-win-x64", "84410377118857674e0fb6e7bc7627ffb8cc67a72f162a050276b076e328a9bb"), "8.1.0-darwin_amd64": ("node-v8.1.0-darwin-x64.tar.gz", "node-v8.1.0-darwin-x64", "08af5f1a7441728cabf9b11af25da28ee1725903524968dd9621b885b13303c7"), "8.1.0-linux_arm64": ("node-v8.1.0-linux-arm64.tar.xz", "node-v8.1.0-linux-arm64", "adf2f517c9847cbb5904b282c0819526b5264c256477ed5e4b258584daa1a2ea"), "8.1.0-linux_amd64": ("node-v8.1.0-linux-x64.tar.xz", "node-v8.1.0-linux-x64", "1638a0083c6eee122cbbefdf39cb8bcc43cf19fedff331a0317b05fd38dcb6df"), "8.1.0-windows_amd64": ("node-v8.1.0-win-x64.zip", "node-v8.1.0-win-x64", "cee1fd1c828e8996824a2d9f9056dfae771b77c05b15ad015bc7f8800409215c"), "8.1.1-darwin_amd64": ("node-v8.1.1-darwin-x64.tar.gz", "node-v8.1.1-darwin-x64", "2f67890a5a46564672cfd4522cc00c7ac04d307e6a942ae1ad38b6aee94c29e2"), "8.1.1-linux_arm64": ("node-v8.1.1-linux-arm64.tar.xz", "node-v8.1.1-linux-arm64", "3971543f9d29f77ddb8f47a54e4b99422a822173599748ab7fcd9c35c8e25124"), "8.1.1-linux_amd64": ("node-v8.1.1-linux-x64.tar.xz", "node-v8.1.1-linux-x64", "6a735e77bdd21c92fe85ea5f9f567d0d6930fa33e0e111946b17cdb7efefb8d5"), "8.1.1-windows_amd64": ("node-v8.1.1-win-x64.zip", "node-v8.1.1-win-x64", "459f3b62e58f4fac3b9b5e49694855f338f3dcf2fcf955299ee2a47f7687625a"), "8.1.2-darwin_amd64": ("node-v8.1.2-darwin-x64.tar.gz", "node-v8.1.2-darwin-x64", "70f353449b19d6d36262f5e38f9cc23e80b2034c21ae48623a6a4890f513eb53"), "8.1.2-linux_arm64": ("node-v8.1.2-linux-arm64.tar.xz", "node-v8.1.2-linux-arm64", "d468ac671047a5a5edb6edd34a9a625645505551c35ef73e2102c504535a09d4"), "8.1.2-linux_amd64": ("node-v8.1.2-linux-x64.tar.xz", "node-v8.1.2-linux-x64", "f5dc173d3005fbcfd107c83a15d4dbff9a28ff53ab42c23344a572d84814ecfe"), "8.1.2-windows_amd64": ("node-v8.1.2-win-x64.zip", "node-v8.1.2-win-x64", "5463c812afeb498ad8ab9c396246e455d9353ab48ae409c82a2a45193e161f66"), "8.1.3-darwin_amd64": ("node-v8.1.3-darwin-x64.tar.gz", "node-v8.1.3-darwin-x64", "ae588038480a6acc57b6b04802fa876e0b602231e9846944dd1b4437e8c1205f"), "8.1.3-linux_arm64": ("node-v8.1.3-linux-arm64.tar.xz", "node-v8.1.3-linux-arm64", "cebc2edd89f20613a530509a2435ecc42757ce16032559ef174ebe84875a1536"), "8.1.3-linux_amd64": ("node-v8.1.3-linux-x64.tar.xz", "node-v8.1.3-linux-x64", "d41dc375ea7e33fadf0fb1bf89d9dfd222a2fb85633fba3d2cf48ac03522ba71"), "8.1.3-windows_amd64": ("node-v8.1.3-win-x64.zip", "node-v8.1.3-win-x64", "be582920c723124ebad48c968f539ef66b1f628d8b6f2338dc68a32f95104856"), "8.1.4-darwin_amd64": ("node-v8.1.4-darwin-x64.tar.gz", "node-v8.1.4-darwin-x64", "a24858a10dd4ca8ad55fd61a7472b4fe9140eb3fa347c41717360c3f29438748"), "8.1.4-linux_arm64": ("node-v8.1.4-linux-arm64.tar.xz", "node-v8.1.4-linux-arm64", "3553c617f594286fea7052678d04aec9e167adddf702b70431d88ce42573c339"), "8.1.4-linux_amd64": ("node-v8.1.4-linux-x64.tar.xz", "node-v8.1.4-linux-x64", "d82fe7ef7e0f8ca1c343f00e3e490996553507ec7d42034f5df034cc7908caaf"), "8.1.4-windows_amd64": ("node-v8.1.4-win-x64.zip", "node-v8.1.4-win-x64", "cc3689ffefc738f6256aab1713343c3c64c24ec997600c0a48243fb26f5e0bce"), "8.2.0-darwin_amd64": ("node-v8.2.0-darwin-x64.tar.gz", "node-v8.2.0-darwin-x64", "da5cca37ae0afdbff3a269bb3dc71ff0d86e282920286f71ae5eb6757cfa5356"), "8.2.0-linux_arm64": ("node-v8.2.0-linux-arm64.tar.xz", "node-v8.2.0-linux-arm64", "3298ae4ae67c4ad714bed23383fd08db5711b164a077a25fb6b282533e65cf77"), "8.2.0-linux_amd64": ("node-v8.2.0-linux-x64.tar.xz", "node-v8.2.0-linux-x64", "e8ceaac3ee4385d53bcebc552a7a6b545b09b9652f5ca1b254aae698fd9a25f9"), "8.2.0-windows_amd64": ("node-v8.2.0-win-x64.zip", "node-v8.2.0-win-x64", "6bc3cc580f0e8190e6a03d6a5967c861c29d6a6eb50f995b3afb7d60b8cee4e1"), "8.2.1-darwin_amd64": ("node-v8.2.1-darwin-x64.tar.gz", "node-v8.2.1-darwin-x64", "32d0923c147470d57f18f055014f5a9fe8a3919406010a2e80ba85952d3c9923"), "8.2.1-linux_arm64": ("node-v8.2.1-linux-arm64.tar.xz", "node-v8.2.1-linux-arm64", "9ed01737f37d410067beeb42066e51f6d0385677c7d0daeeaf2e32cb2aca854a"), "8.2.1-linux_amd64": ("node-v8.2.1-linux-x64.tar.xz", "node-v8.2.1-linux-x64", "abcddeb95cc4465953b1edb0922d20e9b0b3de83688fc8150b863117032a978a"), "8.2.1-windows_amd64": ("node-v8.2.1-win-x64.zip", "node-v8.2.1-win-x64", "37e84e54c67e3d1e52d657c04835b211c94631a0b358f4e7dc351618fdb6c083"), "8.3.0-darwin_amd64": ("node-v8.3.0-darwin-x64.tar.gz", "node-v8.3.0-darwin-x64", "a627354982a514e77e5c37ed5952edc81a7dd9c4f661fd919f192c21ae548654"), "8.3.0-linux_arm64": ("node-v8.3.0-linux-arm64.tar.xz", "node-v8.3.0-linux-arm64", "9e0dab4913585a1b8117bda03c4b5581d9140aec67bb4be0e0b6a4999b41b4ab"), "8.3.0-linux_amd64": ("node-v8.3.0-linux-x64.tar.xz", "node-v8.3.0-linux-x64", "ae377995c6e1af8e2a60c4a929f77562ebed9a2c6897cbd311a2c331f76b4e0f"), "8.3.0-windows_amd64": ("node-v8.3.0-win-x64.zip", "node-v8.3.0-win-x64", "e762fa218465e5aa0952336eee2c3e42e5b48390b36838ca7b6a243812e0b7e5"), "8.4.0-darwin_amd64": ("node-v8.4.0-darwin-x64.tar.gz", "node-v8.4.0-darwin-x64", "cc10ffbd11586bd27a7cc5e6e2d03fd3e0b341368387a03ee9a0117a0288599d"), "8.4.0-linux_arm64": ("node-v8.4.0-linux-arm64.tar.xz", "node-v8.4.0-linux-arm64", "0a811bbe4905fc879f3cbfc976e5a37cca05bbd609774abe4332b29fea75f073"), "8.4.0-linux_amd64": ("node-v8.4.0-linux-x64.tar.xz", "node-v8.4.0-linux-x64", "7fd86abad06f96cb2f889c2a0e25686a3de3e9a078ad946ded91ee4f28d8218a"), "8.4.0-windows_amd64": ("node-v8.4.0-win-x64.zip", "node-v8.4.0-win-x64", "0f60c99479f74d75c7239795c90698826ba8252019d4c23e82ed0d72ceb8974f"), "8.5.0-darwin_amd64": ("node-v8.5.0-darwin-x64.tar.gz", "node-v8.5.0-darwin-x64", "0c8d4c4d90f858a19a29fe1ae7f42b2b7f1a4d3caaa25bea2e08479c00ebbd5f"), "8.5.0-linux_arm64": ("node-v8.5.0-linux-arm64.tar.xz", "node-v8.5.0-linux-arm64", "e0decdebe73dba516d6c72401e337cee6277c6e00f817b0bf1c592360adfd4e6"), "8.5.0-linux_amd64": ("node-v8.5.0-linux-x64.tar.xz", "node-v8.5.0-linux-x64", "a9651fcc6259b4a944ebb72e6dd116602c7b26ddf939599b060d1d3e6ead8c36"), "8.5.0-windows_amd64": ("node-v8.5.0-win-x64.zip", "node-v8.5.0-win-x64", "c385d162c15a7a85d42755ee8c78c1c73bd251e2f7cbf82e5e20c824564aa9df"), "8.6.0-darwin_amd64": ("node-v8.6.0-darwin-x64.tar.gz", "node-v8.6.0-darwin-x64", "2c95f3194a92e8b37aab8895fbaeb1f5fabef3494600ef78a7b7e078dba9a7c9"), "8.6.0-linux_arm64": ("node-v8.6.0-linux-arm64.tar.xz", "node-v8.6.0-linux-arm64", "6848567ab32d04694120e18c20ef47d0f4163229634f236e4bdbb8d135f3204e"), "8.6.0-linux_amd64": ("node-v8.6.0-linux-x64.tar.xz", "node-v8.6.0-linux-x64", "e6f52c3ed7e2cc34ebddbc563434fdf043feb449a60f028101eb45227aec3444"), "8.6.0-windows_amd64": ("node-v8.6.0-win-x64.zip", "node-v8.6.0-win-x64", "08e9b29c47567517ca95ca01d5cdb255279be5463952f92da5c372a99d620b23"), "8.7.0-darwin_amd64": ("node-v8.7.0-darwin-x64.tar.gz", "node-v8.7.0-darwin-x64", "5e59798c1deafd671a35ef4dcdb9b97ce98f9255a056832dc98d454613e9ea08"), "8.7.0-linux_arm64": ("node-v8.7.0-linux-arm64.tar.xz", "node-v8.7.0-linux-arm64", "5a1a1907fbb6d90667ce70ad42602534f6cc6eda873d1c50a3259349aee73418"), "8.7.0-linux_amd64": ("node-v8.7.0-linux-x64.tar.xz", "node-v8.7.0-linux-x64", "9d6f649576cac74ef0b6634af8265156370cf8fdf3676f03e867347d3207675d"), "8.7.0-windows_amd64": ("node-v8.7.0-win-x64.zip", "node-v8.7.0-win-x64", "e95be435674e82ea7133c3268cb70044eabde2d0aef28b2a3df5c7d8d23cadcc"), "8.8.0-darwin_amd64": ("node-v8.8.0-darwin-x64.tar.gz", "node-v8.8.0-darwin-x64", "69a37e240fac48289a2a5bb75ab96091f8d6457eeaf23c0a5125250abe418176"), "8.8.0-linux_arm64": ("node-v8.8.0-linux-arm64.tar.xz", "node-v8.8.0-linux-arm64", "454617ff94882d9a81dca0840065fb5a928ff68e8e8efe7c1748d996ab757b2e"), "8.8.0-linux_amd64": ("node-v8.8.0-linux-x64.tar.xz", "node-v8.8.0-linux-x64", "4304c297f41085ac1f7a6a8e68496d9fd5aa3b92590e7c3c6015a23939767e72"), "8.8.0-windows_amd64": ("node-v8.8.0-win-x64.zip", "node-v8.8.0-win-x64", "a7a1fd2c5f5c967d7df70fdec1a8b2d2d2b1b411fcdd4f23bcf8c9c837a7c3cb"), "8.8.1-darwin_amd64": ("node-v8.8.1-darwin-x64.tar.gz", "node-v8.8.1-darwin-x64", "bf208e29418fb3efc836d3d32b62b9162f0f0b36a0665abc0990f4e292cfc84b"), "8.8.1-linux_arm64": ("node-v8.8.1-linux-arm64.tar.xz", "node-v8.8.1-linux-arm64", "ea8ad0286a31e7519e979fcf99e503845a95da640cd140be5cff418a68fa6263"), "8.8.1-linux_amd64": ("node-v8.8.1-linux-x64.tar.xz", "node-v8.8.1-linux-x64", "004bc95267ef5d5b928f560582f681a679bada2201bf221735a02f4956f67b09"), "8.8.1-windows_amd64": ("node-v8.8.1-win-x64.zip", "node-v8.8.1-win-x64", "a7e60a1a5f46ef309cbe74e423c17e69dd0a573f0c92c9e325caade3388d192a"), "8.9.0-darwin_amd64": ("node-v8.9.0-darwin-x64.tar.gz", "node-v8.9.0-darwin-x64", "aaf165348bc6d20012b048a88a8f3a35cba6799496e8f4c1246d85c524a84dbc"), "8.9.0-linux_arm64": ("node-v8.9.0-linux-arm64.tar.xz", "node-v8.9.0-linux-arm64", "30cb00ac1cf6b466b1f27e7ce41363a67a66dbb64227c2dc5e33d221b09fc579"), "8.9.0-linux_amd64": ("node-v8.9.0-linux-x64.tar.xz", "node-v8.9.0-linux-x64", "e92b91fa473f9ad805a1241907b6f1bd3f8ceac8426a8b4cb05428e62e243bdd"), "8.9.0-windows_amd64": ("node-v8.9.0-win-x64.zip", "node-v8.9.0-win-x64", "dd971e43ff003213b0be31c1a8ce3421f72e0db2a703bc254ac685be4f7f609e"), "8.9.1-darwin_amd64": ("node-v8.9.1-darwin-x64.tar.gz", "node-v8.9.1-darwin-x64", "05c992a6621d28d564b92bf3051a5dc0adf83839237c0d4653a8cdb8a1c73b94"), "8.9.1-linux_arm64": ("node-v8.9.1-linux-arm64.tar.xz", "node-v8.9.1-linux-arm64", "f774660980dcf931bf29847a5f26317823a063fa4a56f85f37c3222d77cce7c1"), "8.9.1-linux_amd64": ("node-v8.9.1-linux-x64.tar.xz", "node-v8.9.1-linux-x64", "8be82805f7c1ab3e64d4569fb9a90ded2de78dd27cadbb91bad1bf975dae1e2d"), "8.9.1-windows_amd64": ("node-v8.9.1-win-x64.zip", "node-v8.9.1-win-x64", "db89c6e041da359561fbe7da075bb4f9881a0f7d3e98c203e83732cfb283fa4a"), "8.9.2-darwin_amd64": ("node-v8.9.2-darwin-x64.tar.gz", "node-v8.9.2-darwin-x64", "ba03ae4c0ebd33e8661b5b241211ddb9f7e3b5b959d8cbd68f5941cb1ed5784d"), "8.9.2-linux_arm64": ("node-v8.9.2-linux-arm64.tar.xz", "node-v8.9.2-linux-arm64", "cc222b4f910ff27ff66ccc96d5c7e2117942bcd161ec253d83cf430146b79bdf"), "8.9.2-linux_amd64": ("node-v8.9.2-linux-x64.tar.xz", "node-v8.9.2-linux-x64", "d4065724e7f5f11e999f78de50fb0faac74341799cb0c0dafcbe87e0ecb0be86"), "8.9.2-windows_amd64": ("node-v8.9.2-win-x64.zip", "node-v8.9.2-win-x64", "2afa8b899c0dddea50dcf5dda66ae7b0ca32326dbf66c52f947c082e7c95d090"), "8.9.3-darwin_amd64": ("node-v8.9.3-darwin-x64.tar.gz", "node-v8.9.3-darwin-x64", "fa7962f25db420a374e9e60d8a410188bd690a2f0ce8d403aa9b09d9b7ae8c1f"), "8.9.3-linux_arm64": ("node-v8.9.3-linux-arm64.tar.xz", "node-v8.9.3-linux-arm64", "8860678ad0c24059380af254574e5a12371a2d5c92ca5e1ac7267314af7df04f"), "8.9.3-linux_amd64": ("node-v8.9.3-linux-x64.tar.xz", "node-v8.9.3-linux-x64", "86f3aa593315f0503d069e3f4805019583ab8d86c0244a83c795d1942e3f99b7"), "8.9.3-windows_amd64": ("node-v8.9.3-win-x64.zip", "node-v8.9.3-win-x64", "17dee0c06d088269123a27db3905a39a17a51cc0ea65435ae942c718f0f94403"), "8.9.4-darwin_amd64": ("node-v8.9.4-darwin-x64.tar.gz", "node-v8.9.4-darwin-x64", "ca50f7d2035eb805306e303b644bb1cde170ce2615e0a2c6e95fb80881c48c24"), "8.9.4-linux_arm64": ("node-v8.9.4-linux-arm64.tar.xz", "node-v8.9.4-linux-arm64", "7c0369a5dbc98d0989c208ca3ee1b6db4cba576343014fdbf7d36fd2659f7089"), "8.9.4-linux_amd64": ("node-v8.9.4-linux-x64.tar.xz", "node-v8.9.4-linux-x64", "68b94aac38cd5d87ab79c5b38306e34a20575f31a3ea788d117c20fffcca3370"), "8.9.4-windows_amd64": ("node-v8.9.4-win-x64.zip", "node-v8.9.4-win-x64", "48946e99ac4484e071df25741d2300f3a656f476c5ff3f8116a4746c07ebe3b7"), "8.10.0-darwin_amd64": ("node-v8.10.0-darwin-x64.tar.gz", "node-v8.10.0-darwin-x64", "7d77bd35bc781f02ba7383779da30bd529f21849b86f14d87e097497671b0271"), "8.10.0-linux_arm64": ("node-v8.10.0-linux-arm64.tar.xz", "node-v8.10.0-linux-arm64", "cbec410109664f75d3c988a43483576fc56f745e05e3884891df9c509fbb1b12"), "8.10.0-linux_amd64": ("node-v8.10.0-linux-x64.tar.xz", "node-v8.10.0-linux-x64", "92220638d661a43bd0fee2bf478cb283ead6524f231aabccf14c549ebc2bc338"), "8.10.0-windows_amd64": ("node-v8.10.0-win-x64.zip", "node-v8.10.0-win-x64", "936ada36cb6f09a5565571e15eb8006e45c5a513529c19e21d070acf0e50321b"), "8.11.0-darwin_amd64": ("node-v8.11.0-darwin-x64.tar.gz", "node-v8.11.0-darwin-x64", "408323335b8c691d75397c76ddd7b00490852652c78c813c586ba7eccc5c382b"), "8.11.0-linux_arm64": ("node-v8.11.0-linux-arm64.tar.xz", "node-v8.11.0-linux-arm64", "a28f599a14ca9ef4062fa1e605b69cd046f81d3fc9a7d6dde1856fb593004b3a"), "8.11.0-linux_amd64": ("node-v8.11.0-linux-x64.tar.xz", "node-v8.11.0-linux-x64", "180ef8c2a39c1696b9a05832883ed981ba11475ffa44ca77781a8d1c1954f944"), "8.11.0-windows_amd64": ("node-v8.11.0-win-x64.zip", "node-v8.11.0-win-x64", "55b9c8d48b59569117a63fdb26e1de05e792c37f563feb7d44b4cd59be96aff8"), "8.11.1-darwin_amd64": ("node-v8.11.1-darwin-x64.tar.gz", "node-v8.11.1-darwin-x64", "5c7b05899ff56910a2b8180f139d48612f349ac2c5d20f08dbbeffbed9e3a089"), "8.11.1-linux_arm64": ("node-v8.11.1-linux-arm64.tar.xz", "node-v8.11.1-linux-arm64", "ff518f33751baa8ea4f18853d446357c2edecd930a1526ac9b2eaa79baddc1bf"), "8.11.1-linux_amd64": ("node-v8.11.1-linux-x64.tar.xz", "node-v8.11.1-linux-x64", "6617e245fa0f7fbe0e373e71d543fea878315324ab31dc64b4eba10e42d04c11"), "8.11.1-windows_amd64": ("node-v8.11.1-win-x64.zip", "node-v8.11.1-win-x64", "7d49b59c2b5d73a14c138e8a215d558a64a5241cd5035d9824f608e7bba097b1"), "8.11.2-darwin_amd64": ("node-v8.11.2-darwin-x64.tar.gz", "node-v8.11.2-darwin-x64", "6bd619ab577a1256531e50e31924d99a094eb920de8b5bd060a056a2608282b9"), "8.11.2-linux_arm64": ("node-v8.11.2-linux-arm64.tar.xz", "node-v8.11.2-linux-arm64", "c8e9833402277c1a5a31b41cc31c9cedad68ba87c2ef78aed6a3ced81af9da7f"), "8.11.2-linux_amd64": ("node-v8.11.2-linux-x64.tar.xz", "node-v8.11.2-linux-x64", "213599127d24496cbf1cbb2a7c51060a3506d6b11132c59bb7f9f8a0edd210a7"), "8.11.2-windows_amd64": ("node-v8.11.2-win-x64.zip", "node-v8.11.2-win-x64", "bbac1f56e8001a093acb2942f8a43c3bf22aec58216f446b7bf01f6f822dfe3f"), "8.11.3-darwin_amd64": ("node-v8.11.3-darwin-x64.tar.gz", "node-v8.11.3-darwin-x64", "77fa26b4c2fc34bdf5a5dd1cd39c93b12087fbd25148c6f04bf409698ee48b86"), "8.11.3-linux_arm64": ("node-v8.11.3-linux-arm64.tar.xz", "node-v8.11.3-linux-arm64", "b8fddec18f20533929a07bc1d38ae63b1999a0252740094f0974b2cbea76eaa4"), "8.11.3-linux_amd64": ("node-v8.11.3-linux-x64.tar.xz", "node-v8.11.3-linux-x64", "08e2fcfea66746bd966ea3a89f26851f1238d96f86c33eaf6274f67fce58421a"), "8.11.3-windows_amd64": ("node-v8.11.3-win-x64.zip", "node-v8.11.3-win-x64", "91b779def1b21dcd1def7fc9671a869a1e2f989952e76fdc08a5d73570075f31"), "8.11.4-darwin_amd64": ("node-v8.11.4-darwin-x64.tar.gz", "node-v8.11.4-darwin-x64", "aa1de83b388581d0d9ec3276f4526ee67e17e0f1bc0deb5133f960ce5dc9f1ef"), "8.11.4-linux_arm64": ("node-v8.11.4-linux-arm64.tar.xz", "node-v8.11.4-linux-arm64", "46e90dd916ddbf88c866de300c1b2a26f9216b19abd92b29e89439f62fb6fc1c"), "8.11.4-linux_amd64": ("node-v8.11.4-linux-x64.tar.xz", "node-v8.11.4-linux-x64", "85ea7cbb5bf624e130585bfe3946e99c85ce5cb84c2aee474038bdbe912f908c"), "8.11.4-windows_amd64": ("node-v8.11.4-win-x64.zip", "node-v8.11.4-win-x64", "72a21e2fcd3703994f57cf707b92e7f939df99c3e0298102e7436849e4948536"), "8.12.0-darwin_amd64": ("node-v8.12.0-darwin-x64.tar.gz", "node-v8.12.0-darwin-x64", "ca131b84dfcf2b6f653a6521d31f7a108ad7d83f4d7e781945b2eca8172064aa"), "8.12.0-linux_arm64": ("node-v8.12.0-linux-arm64.tar.xz", "node-v8.12.0-linux-arm64", "0fbdcfd8cf0cb5e8f5beff84ba091fd47126ba44c628e3a351501419b211aa1a"), "8.12.0-linux_amd64": ("node-v8.12.0-linux-x64.tar.xz", "node-v8.12.0-linux-x64", "29a20479cd1e3a03396a4e74a1784ccdd1cf2f96928b56f6ffa4c8dae40c88f2"), "8.12.0-windows_amd64": ("node-v8.12.0-win-x64.zip", "node-v8.12.0-win-x64", "9b22c9b23148b61ea0052826b3ac0255b8a3a542c125272b8f014f15bf11b091"), "8.13.0-darwin_amd64": ("node-v8.13.0-darwin-x64.tar.gz", "node-v8.13.0-darwin-x64", "f6261c7a09a2c8bd77a8760a0e110410f508e5641ca132511b4883600f2d65f0"), "8.13.0-linux_arm64": ("node-v8.13.0-linux-arm64.tar.xz", "node-v8.13.0-linux-arm64", "e8e0daab515dfd0c2323b8e1274475f61c8ca1cf582dcc254583cbf8593425e3"), "8.13.0-linux_amd64": ("node-v8.13.0-linux-x64.tar.xz", "node-v8.13.0-linux-x64", "8fa1227b28113e25a8960d7fa6779a8c18bf20cfaafc9c5d0e46a3ee88373669"), "8.13.0-windows_amd64": ("node-v8.13.0-win-x64.zip", "node-v8.13.0-win-x64", "46293121d207350bd8d334efb67303337933c4dac886a840f88ff6059bff9443"), "8.14.0-darwin_amd64": ("node-v8.14.0-darwin-x64.tar.gz", "node-v8.14.0-darwin-x64", "1e9bb233bb3c3b01826f9d7e1b3ecf1047840ce96a3a7d1921ddcb569c467329"), "8.14.0-linux_arm64": ("node-v8.14.0-linux-arm64.tar.xz", "node-v8.14.0-linux-arm64", "fbcef89a60f1f40699589850f861fc84354a6f240610e2726c3743455dd82525"), "8.14.0-linux_amd64": ("node-v8.14.0-linux-x64.tar.xz", "node-v8.14.0-linux-x64", "a56d1af4d7da81504338b09809cf10b3144808d47d4117b9bd9a5a4ec4d5d9b9"), "8.14.0-windows_amd64": ("node-v8.14.0-win-x64.zip", "node-v8.14.0-win-x64", "d0be7c96a25c5d2b69f8a3510e9f4414643d5fe361b4509d455249e57f9a50af"), "8.14.1-darwin_amd64": ("node-v8.14.1-darwin-x64.tar.gz", "node-v8.14.1-darwin-x64", "d180a9b70de569e4c3d10c0c4a0af74e40dbca3e845df43ce1ec522bb4252eda"), "8.14.1-linux_arm64": ("node-v8.14.1-linux-arm64.tar.xz", "node-v8.14.1-linux-arm64", "488a66288052c6497133179e4546efb7fbaf105e432cd0d9aab3471901ab5e58"), "8.14.1-linux_amd64": ("node-v8.14.1-linux-x64.tar.xz", "node-v8.14.1-linux-x64", "1fec92a0110f692c68f7bdbec41b340c474bd77063323520786a7b9b00473daf"), "8.14.1-windows_amd64": ("node-v8.14.1-win-x64.zip", "node-v8.14.1-win-x64", "41793b873f98ceed632b24120ef44b2df89625f3dfa90eb9298dad698249167c"), "8.15.0-darwin_amd64": ("node-v8.15.0-darwin-x64.tar.gz", "node-v8.15.0-darwin-x64", "a393971136408f837fbc0f7d71a63754f91cfb1851d48bd612d8219eb61956f1"), "8.15.0-linux_arm64": ("node-v8.15.0-linux-arm64.tar.xz", "node-v8.15.0-linux-arm64", "5985c6dce65b1161ff41253da5aa4e64b8f10eb010a5d2712ea9b659f70179d7"), "8.15.0-linux_amd64": ("node-v8.15.0-linux-x64.tar.xz", "node-v8.15.0-linux-x64", "c1f0c5facdba78b5dec5136aec40dcb00b5c7cf404d9236a99c955994f91d969"), "8.15.0-windows_amd64": ("node-v8.15.0-win-x64.zip", "node-v8.15.0-win-x64", "13d8eab29c191bd16c69a70a556178a5adc988b243a036aaf3d5158861b60d8e"), "8.15.1-darwin_amd64": ("node-v8.15.1-darwin-x64.tar.gz", "node-v8.15.1-darwin-x64", "f3da0b4397150226c008a86c99d77dbb835dc62219d863654913a78332ab19a5"), "8.15.1-linux_arm64": ("node-v8.15.1-linux-arm64.tar.xz", "node-v8.15.1-linux-arm64", "69e000d78342c3d39583922c57947a906ad723789d6294951deb10cbe8709605"), "8.15.1-linux_amd64": ("node-v8.15.1-linux-x64.tar.xz", "node-v8.15.1-linux-x64", "5643b54c583eebaa40c1623b16cba4e3955ff5dfdd44036f6bafd761160c993d"), "8.15.1-windows_amd64": ("node-v8.15.1-win-x64.zip", "node-v8.15.1-win-x64", "f636fa578dc079bacc6c4bef13284ddb893c99f7640b96701c2690bd9c1431f5"), "8.16.0-darwin_amd64": ("node-v8.16.0-darwin-x64.tar.gz", "node-v8.16.0-darwin-x64", "a6710b8af0862fab0ccdba0549dbcdad76b5f99070652e64f6a85158038fc9a6"), "8.16.0-linux_arm64": ("node-v8.16.0-linux-arm64.tar.xz", "node-v8.16.0-linux-arm64", "4583d1cb44ff8b51cbf0402a78f2fe086c13a6c900c20c8be14e3b0e28e34335"), "8.16.0-linux_amd64": ("node-v8.16.0-linux-x64.tar.xz", "node-v8.16.0-linux-x64", "e538ffaaf2f808c084e70f1a1d2ff5559cff892cfd56e0bb67d00b0a95fc3a7a"), "8.16.0-windows_amd64": ("node-v8.16.0-win-x64.zip", "node-v8.16.0-win-x64", "d6baa929bacb78b347b29ebb0263220ea649ce82f3cdfd3f0b41ac725d1bbba5"), "8.16.1-darwin_amd64": ("node-v8.16.1-darwin-x64.tar.gz", "node-v8.16.1-darwin-x64", "ef1cb93f03bca4b9528e5d3226bdf8efa135e4b12285eee1e4760da06bac631a"), "8.16.1-linux_arm64": ("node-v8.16.1-linux-arm64.tar.xz", "node-v8.16.1-linux-arm64", "0c61c6ae8a70d96ab19848a09b2010d29b806f2dd79177da22c743fd5e352a98"), "8.16.1-linux_amd64": ("node-v8.16.1-linux-x64.tar.xz", "node-v8.16.1-linux-x64", "22a2580569c787ea83960bda0eae5dfaf1fe79382a52ad5fa5cd3accb93a1818"), "8.16.1-windows_amd64": ("node-v8.16.1-win-x64.zip", "node-v8.16.1-win-x64", "396dc41740bca0355d11865780e2af8e88eb17581cd2c445ccaf29b862901ab8"), "8.16.2-darwin_amd64": ("node-v8.16.2-darwin-x64.tar.gz", "node-v8.16.2-darwin-x64", "359331120e83f0707219398fc543b05eee9476446ecce549c20c4d9c7c103d29"), "8.16.2-linux_arm64": ("node-v8.16.2-linux-arm64.tar.xz", "node-v8.16.2-linux-arm64", "5afe366affb05136d25e99ec97a7a1ee1b690cc26df43567af0509f36b45e682"), "8.16.2-linux_amd64": ("node-v8.16.2-linux-x64.tar.xz", "node-v8.16.2-linux-x64", "88617a293f5828cc94ee99c94a43fbea12b989e34fe643fc14885a14748a8da6"), "8.16.2-windows_amd64": ("node-v8.16.2-win-x64.zip", "node-v8.16.2-win-x64", "98c615221500434155a8a5aff5fe96cd000400f3e76858ca97e6624f1d15eb73"), "8.17.0-darwin_amd64": ("node-v8.17.0-darwin-x64.tar.gz", "node-v8.17.0-darwin-x64", "3117430fc93e9865e4a1842616cc98767b5d6987fd9d727c8be4068714570e16"), "8.17.0-linux_arm64": ("node-v8.17.0-linux-arm64.tar.xz", "node-v8.17.0-linux-arm64", "8318d1ee0265d84025ecbea76aaecd732974a6f4ac8492ddd84231cee77ba948"), "8.17.0-linux_amd64": ("node-v8.17.0-linux-x64.tar.xz", "node-v8.17.0-linux-x64", "b7f6dd77fb173c8c7c30d61d0702eefc236bba74398538aa77bfa2bb47bddce6"), "8.17.0-windows_amd64": ("node-v8.17.0-win-x64.zip", "node-v8.17.0-win-x64", "e95a63e81b27e78872c0efb9dd5809403014dbf9896035cc17adf51a350f88fa"), "9.0.0-darwin_amd64": ("node-v9.0.0-darwin-x64.tar.gz", "node-v9.0.0-darwin-x64", "40fe905e492deadbf84c46baba413294e516fa844ed8e68adb4117f8acabe9a9"), "9.0.0-linux_arm64": ("node-v9.0.0-linux-arm64.tar.xz", "node-v9.0.0-linux-arm64", "0250e13705259dcf736ac4216833c2ade459e3ade94d89af68bd98ded1783cb6"), "9.0.0-linux_amd64": ("node-v9.0.0-linux-x64.tar.xz", "node-v9.0.0-linux-x64", "8313d2f6d69dbea4cb860803a156f093041cbe352a843c06f9f05cab1f30e9cc"), "9.0.0-windows_amd64": ("node-v9.0.0-win-x64.zip", "node-v9.0.0-win-x64", "d25901007e7c48da3af162bc1917d5bdd78c7e3b9cb64f16f90c38b59ef7b412"), "9.1.0-darwin_amd64": ("node-v9.1.0-darwin-x64.tar.gz", "node-v9.1.0-darwin-x64", "8e180de9b3f6a79f09a391c89de54920bbf5375337d3e13c5bfcbce85af711ab"), "9.1.0-linux_arm64": ("node-v9.1.0-linux-arm64.tar.xz", "node-v9.1.0-linux-arm64", "37d329fa06b22e30243c503b64d9666d56abb6c0ce903251d4b43e7ad0833fb3"), "9.1.0-linux_amd64": ("node-v9.1.0-linux-x64.tar.xz", "node-v9.1.0-linux-x64", "b796ed115c97acd23211c294129b0a834ff3a6a0f583111443b89d2b24e0d4d9"), "9.1.0-windows_amd64": ("node-v9.1.0-win-x64.zip", "node-v9.1.0-win-x64", "f2e76f536ff4fedd9884684f0b1979e04d0fd1c2a65d7d1a5a013de885dd07b3"), "9.2.0-darwin_amd64": ("node-v9.2.0-darwin-x64.tar.gz", "node-v9.2.0-darwin-x64", "42f78982b8614f099bc70819db40074ff7c1c49d4bac71eca5ffe4120452f289"), "9.2.0-linux_arm64": ("node-v9.2.0-linux-arm64.tar.xz", "node-v9.2.0-linux-arm64", "1b5c44160b7bfc9e5d63697d63c82330ae3e6094ab48449bd958ebe0baef73f0"), "9.2.0-linux_amd64": ("node-v9.2.0-linux-x64.tar.xz", "node-v9.2.0-linux-x64", "ded9cef0243bbe8ac5a417be0c6471bed6ed82367714ccb23f79a5be0ba2bd5d"), "9.2.0-windows_amd64": ("node-v9.2.0-win-x64.zip", "node-v9.2.0-win-x64", "5e7feb536547c715155d772f90857239b37897c1a1a664809fd84a7aeae1a724"), "9.2.1-darwin_amd64": ("node-v9.2.1-darwin-x64.tar.gz", "node-v9.2.1-darwin-x64", "4263f3da0280e2decd3a2ab97672e6f718acdf704664a3f1251e4ea267ccc971"), "9.2.1-linux_arm64": ("node-v9.2.1-linux-arm64.tar.xz", "node-v9.2.1-linux-arm64", "09d362e2ed5f4af5e5dc2253bb4523d7bcb92135bcc11d9eb89ad8336229b756"), "9.2.1-linux_amd64": ("node-v9.2.1-linux-x64.tar.xz", "node-v9.2.1-linux-x64", "548d2959939235ca56c98740f64b64058e43d1499d760603b7941b7c37ad10fe"), "9.2.1-windows_amd64": ("node-v9.2.1-win-x64.zip", "node-v9.2.1-win-x64", "7b48ef7c718fe5748844f93101f9276a88ae1cf3c4c228f85306a6a266471b5b"), "9.3.0-darwin_amd64": ("node-v9.3.0-darwin-x64.tar.gz", "node-v9.3.0-darwin-x64", "0539601e67e9be6995d4ba4abe565a748e25699060631369f59166d5de43d21a"), "9.3.0-linux_arm64": ("node-v9.3.0-linux-arm64.tar.xz", "node-v9.3.0-linux-arm64", "11300e878220962adade33238dd6e55928ad6d1362e0daa1f12e272137e68c0b"), "9.3.0-linux_amd64": ("node-v9.3.0-linux-x64.tar.xz", "node-v9.3.0-linux-x64", "0424dd6fa059fc32e0b73f460cb587b92b13c7b0af56331bbdc53a52e43f24ea"), "9.3.0-windows_amd64": ("node-v9.3.0-win-x64.zip", "node-v9.3.0-win-x64", "53bceda79c8d5dd8a185221a5ea2fc8f2b24ed7e0c9c91d18f6016b3624ff096"), "9.4.0-darwin_amd64": ("node-v9.4.0-darwin-x64.tar.gz", "node-v9.4.0-darwin-x64", "fa271c6012d517851603829af2131b92dc7b03d6f167dcd197cb83468a4971e8"), "9.4.0-linux_arm64": ("node-v9.4.0-linux-arm64.tar.xz", "node-v9.4.0-linux-arm64", "ceed69e91723cb902fcf70e790d34147a91241509257c77a62327871dfad04fa"), "9.4.0-linux_amd64": ("node-v9.4.0-linux-x64.tar.xz", "node-v9.4.0-linux-x64", "6d331d75a39fc5292dd128ad83f6dd14bbbdcb84ba0dfe793fade833be5de95a"), "9.4.0-windows_amd64": ("node-v9.4.0-win-x64.zip", "node-v9.4.0-win-x64", "89d49d73eb92483af0133c97e57a5b521c523960c130c76727daa3412af7d5d8"), "9.5.0-darwin_amd64": ("node-v9.5.0-darwin-x64.tar.gz", "node-v9.5.0-darwin-x64", "bc5c6eb21a90dbcaf90479838416c90524fe6d47e92c928ef57d7e96a54eb5fe"), "9.5.0-linux_arm64": ("node-v9.5.0-linux-arm64.tar.xz", "node-v9.5.0-linux-arm64", "d6a98a51c032963014f606acc80babb456f3dc4c041534ca565f573a2382b253"), "9.5.0-linux_amd64": ("node-v9.5.0-linux-x64.tar.xz", "node-v9.5.0-linux-x64", "76dd38bb5a16a610894353228ef020653f81209a2e509d38aee78ace4410599e"), "9.5.0-windows_amd64": ("node-v9.5.0-win-x64.zip", "node-v9.5.0-win-x64", "2fd1c3865a34827af6b5d799aee68e011a16a637276cbf71e923c8bedd010ee8"), "9.6.0-darwin_amd64": ("node-v9.6.0-darwin-x64.tar.gz", "node-v9.6.0-darwin-x64", "4f2001075b724791bf652b5432073aaaaec03cb00b17cda054ab0a05126035fe"), "9.6.0-linux_arm64": ("node-v9.6.0-linux-arm64.tar.xz", "node-v9.6.0-linux-arm64", "eb10815b1d21e8f5111b90c15b19050279b44666d08a12f26906271e9f6b02dd"), "9.6.0-linux_amd64": ("node-v9.6.0-linux-x64.tar.xz", "node-v9.6.0-linux-x64", "24b8670c819278135b4b8851d880615dee8458fdb5f5390ed0c88c383377f5d3"), "9.6.0-windows_amd64": ("node-v9.6.0-win-x64.zip", "node-v9.6.0-win-x64", "5f1da1ef6ba776449900c931e7acc3b60e47f3080425bf0e6a1c0c5a07dbd6fd"), "9.6.1-darwin_amd64": ("node-v9.6.1-darwin-x64.tar.gz", "node-v9.6.1-darwin-x64", "de486bc479817df2df1f91468e85e5da228a19101422c0c9a27153c1d0013c6d"), "9.6.1-linux_arm64": ("node-v9.6.1-linux-arm64.tar.xz", "node-v9.6.1-linux-arm64", "6246c85acab2dd92463fa1c456db31a24cd7b50b3fa556c4976c5a91473b8c8f"), "9.6.1-linux_amd64": ("node-v9.6.1-linux-x64.tar.xz", "node-v9.6.1-linux-x64", "d38f1707faccc54fae3cb201c25b02c4a3474d2c409c64f2a1d08925b238f8ad"), "9.6.1-windows_amd64": ("node-v9.6.1-win-x64.zip", "node-v9.6.1-win-x64", "c8176d317945ce6221473d70999ec7e725f1c9a7477e991bd7c729026c46dffb"), "9.7.0-darwin_amd64": ("node-v9.7.0-darwin-x64.tar.gz", "node-v9.7.0-darwin-x64", "9730cf3c4c5e228d4855c3362b63dbe59041202d89ae30d7f5ca42f60f742c5d"), "9.7.0-linux_arm64": ("node-v9.7.0-linux-arm64.tar.xz", "node-v9.7.0-linux-arm64", "18bec2bec5e2496f33b4d9d7f3bea7411cdb5d108f390b5c1949ddeda0e61125"), "9.7.0-linux_amd64": ("node-v9.7.0-linux-x64.tar.xz", "node-v9.7.0-linux-x64", "5c7549ceeebdc7ac5acdcae5fffbeb9585e3b9e2003e70e116d9f19c768f73d1"), "9.7.0-windows_amd64": ("node-v9.7.0-win-x64.zip", "node-v9.7.0-win-x64", "a17796c9c888e88a9a086dc1a22cdd872d8e948fbf1e988a8132fef716990530"), "9.7.1-darwin_amd64": ("node-v9.7.1-darwin-x64.tar.gz", "node-v9.7.1-darwin-x64", "9ee0fa891787865b1eccc63ef56134e7de8bbf67b660a1dde9e309305a1dc3b0"), "9.7.1-linux_arm64": ("node-v9.7.1-linux-arm64.tar.xz", "node-v9.7.1-linux-arm64", "d9143c23f7aa171449229abd456c8a9e07dc1033a1e791132b3387d439e2475d"), "9.7.1-linux_amd64": ("node-v9.7.1-linux-x64.tar.xz", "node-v9.7.1-linux-x64", "33b3ecd0a1de891a4a2f3586f1c6498c95c1ecc15864a6e3f4f7826792850d99"), "9.7.1-windows_amd64": ("node-v9.7.1-win-x64.zip", "node-v9.7.1-win-x64", "8590ff193e645d7f719e25d9519633376c72cfa1b36192031705e0065b7d69b2"), "9.8.0-darwin_amd64": ("node-v9.8.0-darwin-x64.tar.gz", "node-v9.8.0-darwin-x64", "c95326d6d8d01e5d4fbf0ca1b1e4fc0d800d00516f38532cc887e17c78f2af07"), "9.8.0-linux_arm64": ("node-v9.8.0-linux-arm64.tar.xz", "node-v9.8.0-linux-arm64", "f3537d06f010e77739be073003fca0b477efec8a72d503dc5a1d942a19973b07"), "9.8.0-linux_amd64": ("node-v9.8.0-linux-x64.tar.xz", "node-v9.8.0-linux-x64", "9f631739b0a9b96b8760c42869e88592db9c3fda2425202bd8b2d09e6371133a"), "9.8.0-windows_amd64": ("node-v9.8.0-win-x64.zip", "node-v9.8.0-win-x64", "dd3971c126907a033f2bc93fdd29327af3ff5b9d151b3b90eb5db1832fe6df9e"), "9.9.0-darwin_amd64": ("node-v9.9.0-darwin-x64.tar.gz", "node-v9.9.0-darwin-x64", "15e71817fe172119d6f9e0166ab869f12c67bdb7371d27a78b0621c408239692"), "9.9.0-linux_arm64": ("node-v9.9.0-linux-arm64.tar.xz", "node-v9.9.0-linux-arm64", "06feb32656c91c3963270de18d4a7befe52d2d8c0fd78fbbb7792a881ffeec7a"), "9.9.0-linux_amd64": ("node-v9.9.0-linux-x64.tar.xz", "node-v9.9.0-linux-x64", "457151b4e6f27222232742ce44de1df73768a251309dddbfca2b385052ee977f"), "9.9.0-windows_amd64": ("node-v9.9.0-win-x64.zip", "node-v9.9.0-win-x64", "5186747c7cab6ff153e725c42446727e460d54e6c62353d5dc550046f5c05653"), "9.10.0-darwin_amd64": ("node-v9.10.0-darwin-x64.tar.gz", "node-v9.10.0-darwin-x64", "c4b98cc2f3c00b770f24549de112902b56d57be7963a1047cd116b357bc61569"), "9.10.0-linux_arm64": ("node-v9.10.0-linux-arm64.tar.xz", "node-v9.10.0-linux-arm64", "ba1d682aa1d5a12eeb39e7f51e4c67c6122b24482869ca2547c6f094eae90658"), "9.10.0-linux_amd64": ("node-v9.10.0-linux-x64.tar.xz", "node-v9.10.0-linux-x64", "b9bfffc03ef0e2c97d463619911552c7f5b1b8699de07bb913990a8b33800cb9"), "9.10.0-windows_amd64": ("node-v9.10.0-win-x64.zip", "node-v9.10.0-win-x64", "3f159de87fd987e7bf30bbffce722e2e5133c44fc847883053359e9b08d6fa88"), "9.10.1-darwin_amd64": ("node-v9.10.1-darwin-x64.tar.gz", "node-v9.10.1-darwin-x64", "ae2d9dfdd3fdb6a6fe588e5479a768ee502968f6544ac8ad6133cb2e05726793"), "9.10.1-linux_arm64": ("node-v9.10.1-linux-arm64.tar.xz", "node-v9.10.1-linux-arm64", "9b084b30e48a3a145fcc6cb282a1b46145b703c13a5eaee40afc7f9d82ad697b"), "9.10.1-linux_amd64": ("node-v9.10.1-linux-x64.tar.xz", "node-v9.10.1-linux-x64", "fc810056be2a0665d0f67b42d25e1b8442bd885d4893b3256a7cfe676bd973de"), "9.10.1-windows_amd64": ("node-v9.10.1-win-x64.zip", "node-v9.10.1-win-x64", "43bf882dec1550e00a039f77190a3e2a778354577e542563be4b5c205de17df1"), "9.11.0-darwin_amd64": ("node-v9.11.0-darwin-x64.tar.gz", "node-v9.11.0-darwin-x64", "e562cfc01a4d8e62c1d86f59cef4f00439b4ad279c97f95f76a39f4b3530b8e5"), "9.11.0-linux_arm64": ("node-v9.11.0-linux-arm64.tar.xz", "node-v9.11.0-linux-arm64", "8df1dd7a1ec298900cf699a7ee8e5f0f478075d0e4c4fd3fb6e3a4ad3527545c"), "9.11.0-linux_amd64": ("node-v9.11.0-linux-x64.tar.xz", "node-v9.11.0-linux-x64", "a4349420b74804b3404a4eea27341297968f61998b01f6504dbbad603700e944"), "9.11.0-windows_amd64": ("node-v9.11.0-win-x64.zip", "node-v9.11.0-win-x64", "6e7f586ece923fd71e36d5db80b6a6d731a2b156464058cb2304f6c0192637cb"), "9.11.1-darwin_amd64": ("node-v9.11.1-darwin-x64.tar.gz", "node-v9.11.1-darwin-x64", "7b1fb394aa41a62b477e36df16644bd383cc9084808511f6cd318b835a06aac6"), "9.11.1-linux_arm64": ("node-v9.11.1-linux-arm64.tar.xz", "node-v9.11.1-linux-arm64", "dba2de106fbde2013a204ca9fafdfe67c0426b4e63d186f888e59432ad2dbb03"), "9.11.1-linux_amd64": ("node-v9.11.1-linux-x64.tar.xz", "node-v9.11.1-linux-x64", "4d27a95d5c2f1c8ef99118794c9c4903e63963418d3e16ca7576760cff39879b"), "9.11.1-windows_amd64": ("node-v9.11.1-win-x64.zip", "node-v9.11.1-win-x64", "0a3566d57ccb7fed95d18fc6c3bc1552a1b1e4753f9bc6c5d45e04f325e1ee53"), "9.11.2-darwin_amd64": ("node-v9.11.2-darwin-x64.tar.gz", "node-v9.11.2-darwin-x64", "340993096108d1dc0e0b598560d87ec645fc94b0fc83a423c36343f2da45f4b8"), "9.11.2-linux_arm64": ("node-v9.11.2-linux-arm64.tar.xz", "node-v9.11.2-linux-arm64", "9a713a6f4473425b83bf67e13e4b3c9f1f683c996b913f1f6854d208996367b6"), "9.11.2-linux_amd64": ("node-v9.11.2-linux-x64.tar.xz", "node-v9.11.2-linux-x64", "a2e7fe4ee3c4e3f31e00dff241c92c2ed779a9f36735578603d2be966f938a4b"), "9.11.2-windows_amd64": ("node-v9.11.2-win-x64.zip", "node-v9.11.2-win-x64", "051db8f4d3c0503e3082173f16b25e2362de8f9a5e509c403992b2069d826c25"), "10.0.0-darwin_amd64": ("node-v10.0.0-darwin-x64.tar.gz", "node-v10.0.0-darwin-x64", "37447fdb5f5cbcf1307ca1661ed67e6e911e0e988c0cb6d15f92eebb211dce88"), "10.0.0-linux_arm64": ("node-v10.0.0-linux-arm64.tar.xz", "node-v10.0.0-linux-arm64", "18f626a967d72294d969bdf000ca80ef483a8bb75482a2c4d14f5e0141626611"), "10.0.0-linux_amd64": ("node-v10.0.0-linux-x64.tar.xz", "node-v10.0.0-linux-x64", "d57c391daef40e706ca71abeaf9d53271c9d0fdb9cd18a80f6296b04dbaf2d5a"), "10.0.0-windows_amd64": ("node-v10.0.0-win-x64.zip", "node-v10.0.0-win-x64", "a95d88e2c28cbcbadb1fa431ec0b686f196dda00d4a25b0829450dc8f5214ec3"), "10.1.0-darwin_amd64": ("node-v10.1.0-darwin-x64.tar.gz", "node-v10.1.0-darwin-x64", "383ef526e27b92113f8dc0dad406b771f6ecaf9e3fddd4f5357590a3cf543d7b"), "10.1.0-linux_arm64": ("node-v10.1.0-linux-arm64.tar.xz", "node-v10.1.0-linux-arm64", "01e252589cf1ce61d2aaa316895001eb24c90a48b04a0e4896de252d2840ffe9"), "10.1.0-linux_amd64": ("node-v10.1.0-linux-x64.tar.xz", "node-v10.1.0-linux-x64", "cb5860c0d3249330d882fb8c6619c082cf3cda177536d4ed979388dde0034f22"), "10.1.0-windows_amd64": ("node-v10.1.0-win-x64.zip", "node-v10.1.0-win-x64", "8448bbd50731e98a4ed8bb4f3f3964170ff3a26418e9bcb3caf770faa9fb06d7"), "10.2.0-darwin_amd64": ("node-v10.2.0-darwin-x64.tar.gz", "node-v10.2.0-darwin-x64", "35fcc482d07218119ce5fde62620994324f03f8c4426dd680886c6844b62232a"), "10.2.0-linux_arm64": ("node-v10.2.0-linux-arm64.tar.xz", "node-v10.2.0-linux-arm64", "8f970be59a6a11f511a04ae1bd303746f0c5409498e062fb1d263d3c3c1093bd"), "10.2.0-linux_amd64": ("node-v10.2.0-linux-x64.tar.xz", "node-v10.2.0-linux-x64", "a6ef9adc824db795b36f81ad0856adc5c878395c4ce2af20f5ba7b76a1ca9982"), "10.2.0-windows_amd64": ("node-v10.2.0-win-x64.zip", "node-v10.2.0-win-x64", "7d7144d57b1b910d10f51d5445ae4306f10d3d9f45ca08b49e8777472993db51"), "10.2.1-darwin_amd64": ("node-v10.2.1-darwin-x64.tar.gz", "node-v10.2.1-darwin-x64", "6ffa149f67e8bd68d291d62591b6573146a65682affd99eefe2835a9c048d3ef"), "10.2.1-linux_arm64": ("node-v10.2.1-linux-arm64.tar.xz", "node-v10.2.1-linux-arm64", "6899cab91fd01af6b73183d23693120ff0de547601d01822b53647d0f5d934ee"), "10.2.1-linux_amd64": ("node-v10.2.1-linux-x64.tar.xz", "node-v10.2.1-linux-x64", "59ffaba5f54ea6a62ada1013a0cc1741c6e6fa790ab9ab2302a98932e7fb85d5"), "10.2.1-windows_amd64": ("node-v10.2.1-win-x64.zip", "node-v10.2.1-win-x64", "ebe78920d72b7a226a345653f3f718f99dc531add35157d37d229050f3685705"), "10.3.0-darwin_amd64": ("node-v10.3.0-darwin-x64.tar.gz", "node-v10.3.0-darwin-x64", "0bb5b7e3fe8cccda2abda958d1eb0408f1518a8b0cb58b75ade5d507cd5d6053"), "10.3.0-linux_arm64": ("node-v10.3.0-linux-arm64.tar.xz", "node-v10.3.0-linux-arm64", "6811b7b9807135902990508143605c0c758d07f7726092ed1b2e27cc60111bd0"), "10.3.0-linux_amd64": ("node-v10.3.0-linux-x64.tar.xz", "node-v10.3.0-linux-x64", "eb3c3e2585494699716ad3197c8eedf4003d3f110829b30c5a0dc34414c47423"), "10.3.0-windows_amd64": ("node-v10.3.0-win-x64.zip", "node-v10.3.0-win-x64", "65d586afb087406a2800d8e51f664c88b26d510f077b85a3b177a1bb79f73677"), "10.4.0-darwin_amd64": ("node-v10.4.0-darwin-x64.tar.gz", "node-v10.4.0-darwin-x64", "82b27983c990a6860e8d729e0b15acf9643ffca0eff282a926268849dfd2c3d2"), "10.4.0-linux_arm64": ("node-v10.4.0-linux-arm64.tar.xz", "node-v10.4.0-linux-arm64", "18d01e0937cdd05386f59f792613aac7b6614a37312ede0c299bd589584976e9"), "10.4.0-linux_amd64": ("node-v10.4.0-linux-x64.tar.xz", "node-v10.4.0-linux-x64", "ce2232578408f7d6bdc7d8bbb49d3416225fe68c52540ac23f4a6e0294d947f6"), "10.4.0-windows_amd64": ("node-v10.4.0-win-x64.zip", "node-v10.4.0-win-x64", "315fc4099902a71b634fee15e4e160a0780703c59a66e7e4542045f6f2b91451"), "10.4.1-darwin_amd64": ("node-v10.4.1-darwin-x64.tar.gz", "node-v10.4.1-darwin-x64", "c232241c97e1f4659186205d50b44132e62b61cdc517f1fb86905a21d03e9189"), "10.4.1-linux_arm64": ("node-v10.4.1-linux-arm64.tar.xz", "node-v10.4.1-linux-arm64", "c00b75a28eb69e4238c9d560f50da3652395ba7bfa6e325d5a2b0cd0926070f7"), "10.4.1-linux_amd64": ("node-v10.4.1-linux-x64.tar.xz", "node-v10.4.1-linux-x64", "6196daea2b291cdb865b3597e6b819b13068cb2c9dbf27cb150256c557a81082"), "10.4.1-windows_amd64": ("node-v10.4.1-win-x64.zip", "node-v10.4.1-win-x64", "70e0b9f0036f878884fdfc585c1001a439508d1d4e6448c4aced60274a2dc191"), "10.5.0-darwin_amd64": ("node-v10.5.0-darwin-x64.tar.gz", "node-v10.5.0-darwin-x64", "a85bda6ab91da8595e71736944cbd77c61afe05092217defd0fb74d9f77109f0"), "10.5.0-linux_arm64": ("node-v10.5.0-linux-arm64.tar.xz", "node-v10.5.0-linux-arm64", "28e6baa2a4ac5b0f0f5adf85489574038d0a4ca48efe76a4e5831b6b222652ba"), "10.5.0-linux_amd64": ("node-v10.5.0-linux-x64.tar.xz", "node-v10.5.0-linux-x64", "8b12be967f5962a8173dca235e1a6f642ee29dcf5fc27697004af898ffeca187"), "10.5.0-windows_amd64": ("node-v10.5.0-win-x64.zip", "node-v10.5.0-win-x64", "ce2b1f9976de64bcc0a5ce877edee0d29c4db1ebab5a7fd713afffd661e99e08"), "10.6.0-darwin_amd64": ("node-v10.6.0-darwin-x64.tar.gz", "node-v10.6.0-darwin-x64", "537efef0c6fd998502fa10baf82ee21edf513256cc73575991354e19442d0b69"), "10.6.0-linux_arm64": ("node-v10.6.0-linux-arm64.tar.xz", "node-v10.6.0-linux-arm64", "be37aade1c085093e276b5822a05233a1057bcafe77f5b9526dbdf622330c4bb"), "10.6.0-linux_amd64": ("node-v10.6.0-linux-x64.tar.xz", "node-v10.6.0-linux-x64", "cfd47380729f2451169b8900b3bd65e4b9db669d1d540613758cd2ededf7b5e6"), "10.6.0-windows_amd64": ("node-v10.6.0-win-x64.zip", "node-v10.6.0-win-x64", "0b58e0414d76e48432588910ea682f002ba69d7be88deb3355ceffb2fe472f6d"), "10.7.0-darwin_amd64": ("node-v10.7.0-darwin-x64.tar.gz", "node-v10.7.0-darwin-x64", "913473055605c8ae92f46923e6ac400133895aafe7766574fd46899bc6b0c5a4"), "10.7.0-linux_arm64": ("node-v10.7.0-linux-arm64.tar.xz", "node-v10.7.0-linux-arm64", "c23856b3123f9e2cfae3f8b0668019f83e9450ee78dede02a8d43031255b7ba0"), "10.7.0-linux_amd64": ("node-v10.7.0-linux-x64.tar.xz", "node-v10.7.0-linux-x64", "ad1d44cbe64ef44db5d8d42690a76dd186d6a6f71a3c3d38449757fe73135329"), "10.7.0-windows_amd64": ("node-v10.7.0-win-x64.zip", "node-v10.7.0-win-x64", "a0914d4c1fb82f51a03a4f57c66c9ce6a65ccd4f3237706042c55799843f4b14"), "10.8.0-darwin_amd64": ("node-v10.8.0-darwin-x64.tar.gz", "node-v10.8.0-darwin-x64", "b800d8b55c234b1f7d972e9464b00328a1caea5f86f94fdb5fc88ebbed7852b7"), "10.8.0-linux_arm64": ("node-v10.8.0-linux-arm64.tar.xz", "node-v10.8.0-linux-arm64", "0333da24d1fe54abac26b0a06437d3336c0fb4816b280507a9851ab3742ef2e4"), "10.8.0-linux_amd64": ("node-v10.8.0-linux-x64.tar.xz", "node-v10.8.0-linux-x64", "497f3b243d7374ee0fe9ab200b175868b172c3a22282cedc6d7fb0cad82471f0"), "10.8.0-windows_amd64": ("node-v10.8.0-win-x64.zip", "node-v10.8.0-win-x64", "f98575fb551d78691a6f74ca4f9c254bbd9fb62135e9ec0ab7ec8c40a03648b0"), "10.9.0-darwin_amd64": ("node-v10.9.0-darwin-x64.tar.gz", "node-v10.9.0-darwin-x64", "3c4fe75dacfcc495a432a7ba2dec9045cff359af2a5d7d0429c84a424ef686fc"), "10.9.0-linux_arm64": ("node-v10.9.0-linux-arm64.tar.xz", "node-v10.9.0-linux-arm64", "3d6aa717d98bbf901c5325a02a81048eb47212bdc44963ef8d59c6e52e987b7c"), "10.9.0-linux_amd64": ("node-v10.9.0-linux-x64.tar.xz", "node-v10.9.0-linux-x64", "c5acb8b7055ee0b6ac653dc4e458c5db45348cecc564b388f4ed1def84a329ff"), "10.9.0-windows_amd64": ("node-v10.9.0-win-x64.zip", "node-v10.9.0-win-x64", "6a75cdbb69d62ed242d6cbf0238a470bcbf628567ee339d4d098a5efcda2401e"), "10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e"), "10.10.0-linux_arm64": ("node-v10.10.0-linux-arm64.tar.xz", "node-v10.10.0-linux-arm64", "7d57961d18ea70b4e99906d87f9de1a2defc45a36fcd8cd84295e9ae5c4281da"), "10.10.0-linux_amd64": ("node-v10.10.0-linux-x64.tar.xz", "node-v10.10.0-linux-x64", "686d2c7b7698097e67bcd68edc3d6b5d28d81f62436c7cf9e7779d134ec262a9"), "10.10.0-windows_amd64": ("node-v10.10.0-win-x64.zip", "node-v10.10.0-win-x64", "70c46e6451798be9d052b700ce5dadccb75cf917f6bf0d6ed54344c856830cfb"), "10.11.0-darwin_amd64": ("node-v10.11.0-darwin-x64.tar.gz", "node-v10.11.0-darwin-x64", "32ad850a0e5cfdefc32d4267707abad05bd5c9eabb047e8ed9bf97faeffc52b6"), "10.11.0-linux_arm64": ("node-v10.11.0-linux-arm64.tar.xz", "node-v10.11.0-linux-arm64", "289302470520fd63e2a92a878869061dda557fe1aabfea2bd5ff88f7af76d98d"), "10.11.0-linux_amd64": ("node-v10.11.0-linux-x64.tar.xz", "node-v10.11.0-linux-x64", "c2eab149e7f0712a6a3eb672a76d657b049a3b3ae0c2edc2e0571df5049fe82c"), "10.11.0-windows_amd64": ("node-v10.11.0-win-x64.zip", "node-v10.11.0-win-x64", "78b2a7a4305aa108b9a82ac7586d7200ab51428c2b882d1318fb44ca300a8609"), "10.12.0-darwin_amd64": ("node-v10.12.0-darwin-x64.tar.gz", "node-v10.12.0-darwin-x64", "f275c901b9aeaacea2bf22648329c2e9ade5e1ff63a446b83446d5d4e19464cc"), "10.12.0-linux_arm64": ("node-v10.12.0-linux-arm64.tar.xz", "node-v10.12.0-linux-arm64", "b327deca4e380559c8c1fbacb9e668b49127ea998de4c8fe83912838cf786786"), "10.12.0-linux_amd64": ("node-v10.12.0-linux-x64.tar.xz", "node-v10.12.0-linux-x64", "4eba2e9a6db95745b769915d58e57df6ca6724ec1f023f76556fce30ceca2367"), "10.12.0-windows_amd64": ("node-v10.12.0-win-x64.zip", "node-v10.12.0-win-x64", "44c938cf1409562d25d23b7c6bce110b53cd2a73774bed573b2979f0d88f51f8"), "10.13.0-darwin_amd64": ("node-v10.13.0-darwin-x64.tar.gz", "node-v10.13.0-darwin-x64", "815a5d18516934a3963ace9f0574f7d41f0c0ce9186a19be3d89e039e57598c5"), "10.13.0-linux_arm64": ("node-v10.13.0-linux-arm64.tar.xz", "node-v10.13.0-linux-arm64", "1537ebe64dc34a2a9b8ab6254213079789e9d59ed0ed26987afb1da37b6a8f87"), "10.13.0-linux_amd64": ("node-v10.13.0-linux-x64.tar.xz", "node-v10.13.0-linux-x64", "0dc6dba645550b66f8f00541a428c29da7c3cde32fb7eda2eb626a9db3bbf08d"), "10.13.0-windows_amd64": ("node-v10.13.0-win-x64.zip", "node-v10.13.0-win-x64", "eb09c9e9677f1919ec1ca78623c09b2a718ec5388b72b7662d5c41e5f628a52c"), "10.14.0-darwin_amd64": ("node-v10.14.0-darwin-x64.tar.gz", "node-v10.14.0-darwin-x64", "dd044aa0ddeb5e32fefa80a13b33bafe3f7e0536e15fe93c1e81b052c2f1965c"), "10.14.0-linux_arm64": ("node-v10.14.0-linux-arm64.tar.xz", "node-v10.14.0-linux-arm64", "4d80efe675c40d6d3af697e17e33cad8af1caf50655276ca99d0c4ca8e2f2cf2"), "10.14.0-linux_amd64": ("node-v10.14.0-linux-x64.tar.xz", "node-v10.14.0-linux-x64", "5f576f9893e0335f0c1b071a42fdf8b3e302577ad6ea38237aaef08ad0ca898e"), "10.14.0-windows_amd64": ("node-v10.14.0-win-x64.zip", "node-v10.14.0-win-x64", "a3acbbdbbdb6ff6d5ae6e6f5ccea55aef83cfa54f52c080538edc3ac6326797b"), "10.14.1-darwin_amd64": ("node-v10.14.1-darwin-x64.tar.gz", "node-v10.14.1-darwin-x64", "91ebe7d6da8a40c72618ac9d0b0a8e224ae01febd3f5595b43b1a58190dcacb1"), "10.14.1-linux_arm64": ("node-v10.14.1-linux-arm64.tar.xz", "node-v10.14.1-linux-arm64", "c1ca91356b007cc7624c7a9e00f3b7bed8dd10aba959be5f55e4ff13da334828"), "10.14.1-linux_amd64": ("node-v10.14.1-linux-x64.tar.xz", "node-v10.14.1-linux-x64", "b65e735cdf61fb80f114c498c8955efe8e096e4b3e173281d68aa9d2c05b0f97"), "10.14.1-windows_amd64": ("node-v10.14.1-win-x64.zip", "node-v10.14.1-win-x64", "7d51aa233ad290eb916a4c3134815204eb34ecb0a001dcecc5ea57333030f303"), "10.14.2-darwin_amd64": ("node-v10.14.2-darwin-x64.tar.gz", "node-v10.14.2-darwin-x64", "5306da5db576d9c984167b4693600a2e3074cc5a701961279837753fa2139baa"), "10.14.2-linux_arm64": ("node-v10.14.2-linux-arm64.tar.xz", "node-v10.14.2-linux-arm64", "8493b30c99d697b24fbaa5bfb3b43108ab3e334ab674188b7b7982fef903aa04"), "10.14.2-linux_amd64": ("node-v10.14.2-linux-x64.tar.xz", "node-v10.14.2-linux-x64", "e43de13bf7bee440a106a844c1bc3a2adb8829fd58b857702c8f1838fdd02a2a"), "10.14.2-windows_amd64": ("node-v10.14.2-win-x64.zip", "node-v10.14.2-win-x64", "45841fe5ffe87378c748dcb9799507f6192c34117409b2c6c18480d112a337de"), "10.15.0-darwin_amd64": ("node-v10.15.0-darwin-x64.tar.gz", "node-v10.15.0-darwin-x64", "353402461c898c569658d0a963790476f4d9828cc6c9286d81617ee8afcba4e8"), "10.15.0-linux_arm64": ("node-v10.15.0-linux-arm64.tar.xz", "node-v10.15.0-linux-arm64", "77aa4a02c5471b6eb7ba935cbc6829889a27115353cff7226a208c08b654e972"), "10.15.0-linux_amd64": ("node-v10.15.0-linux-x64.tar.xz", "node-v10.15.0-linux-x64", "4ee8503c1133797777880ebf75dcf6ae3f9b894c66fd2d5da507e407064c13b5"), "10.15.0-windows_amd64": ("node-v10.15.0-win-x64.zip", "node-v10.15.0-win-x64", "c1dbc9372ad789cd21727cb5f63b4a44ed3eae216763959cff8e68e68c6fcfe1"), "10.15.1-darwin_amd64": ("node-v10.15.1-darwin-x64.tar.gz", "node-v10.15.1-darwin-x64", "327dcef4b61dead1ae04d2743d3390a2b7e6cc6c389c62cfcfeb0486c5a9f181"), "10.15.1-linux_arm64": ("node-v10.15.1-linux-arm64.tar.xz", "node-v10.15.1-linux-arm64", "0fb6d24972fd991f476a942b1b21aca5059f93b9302318c5883120445ee6cd54"), "10.15.1-linux_amd64": ("node-v10.15.1-linux-x64.tar.xz", "node-v10.15.1-linux-x64", "77db68544c7812e925b82ccc41cd4669fdeb191cea8e20053e3f0e86889c4fce"), "10.15.1-windows_amd64": ("node-v10.15.1-win-x64.zip", "node-v10.15.1-win-x64", "bb5bdc9363e4050c94b3f82888141b81630230f86e520abb7dde49081f1292b9"), "10.15.2-darwin_amd64": ("node-v10.15.2-darwin-x64.tar.gz", "node-v10.15.2-darwin-x64", "8bbb6c15a0572f493d33ef044d06ccd0ff7ead8daa67f9a32df3e863277568e8"), "10.15.2-linux_arm64": ("node-v10.15.2-linux-arm64.tar.xz", "node-v10.15.2-linux-arm64", "2978e82d85654505d732b40dfa58f21276d99712d5d001101eaf87100d350139"), "10.15.2-linux_amd64": ("node-v10.15.2-linux-x64.tar.xz", "node-v10.15.2-linux-x64", "c10eece562cfeef1627f0d2bde7dc0be810948f6bf9a932e30a8c3b425652015"), "10.15.2-windows_amd64": ("node-v10.15.2-win-x64.zip", "node-v10.15.2-win-x64", "d97cf4788ccea6deef037ce27c91cc1a814644b878311b71811ab04d0bb8c47f"), "10.15.3-darwin_amd64": ("node-v10.15.3-darwin-x64.tar.gz", "node-v10.15.3-darwin-x64", "7a5eaa1f69614375a695ccb62017248e5dcc15b0b8edffa7db5b52997cf992ba"), "10.15.3-linux_arm64": ("node-v10.15.3-linux-arm64.tar.xz", "node-v10.15.3-linux-arm64", "3d7abbf64bffb07c55168ca0f1c17be12b0d93affe9b6cadd39724649215fab9"), "10.15.3-linux_amd64": ("node-v10.15.3-linux-x64.tar.xz", "node-v10.15.3-linux-x64", "faddbe418064baf2226c2fcbd038c3ef4ae6f936eb952a1138c7ff8cfe862438"), "10.15.3-windows_amd64": ("node-v10.15.3-win-x64.zip", "node-v10.15.3-win-x64", "93c881fdc0455a932dd5b506a7a03df27d9fe36155c1d3f351ebfa4e20bf1c0d"), "10.16.0-darwin_amd64": ("node-v10.16.0-darwin-x64.tar.gz", "node-v10.16.0-darwin-x64", "6c009df1b724026d84ae9a838c5b382662e30f6c5563a0995532f2bece39fa9c"), "10.16.0-linux_arm64": ("node-v10.16.0-linux-arm64.tar.xz", "node-v10.16.0-linux-arm64", "ae2e74ab2f5dbff96bf0b7d8457004bf3538233916f8834740bbe2d5a35442e5"), "10.16.0-linux_amd64": ("node-v10.16.0-linux-x64.tar.xz", "node-v10.16.0-linux-x64", "1827f5b99084740234de0c506f4dd2202a696ed60f76059696747c34339b9d48"), "10.16.0-windows_amd64": ("node-v10.16.0-win-x64.zip", "node-v10.16.0-win-x64", "aa22cb357f0fb54ccbc06b19b60e37eefea5d7dd9940912675d3ed988bf9a059"), "10.16.1-darwin_amd64": ("node-v10.16.1-darwin-x64.tar.gz", "node-v10.16.1-darwin-x64", "328e61fdacfe2f6f1a049d57e248b3eafc0345747831323a14fe1edf98d9b3bb"), "10.16.1-linux_arm64": ("node-v10.16.1-linux-arm64.tar.xz", "node-v10.16.1-linux-arm64", "c46ba1a8e9b9c0490ae81f8b2b13d332ed6f5c86d172fa817f749042ab329b93"), "10.16.1-linux_amd64": ("node-v10.16.1-linux-x64.tar.xz", "node-v10.16.1-linux-x64", "127d9b2f485523805208f867fc513842570b29b4d6831773eeb6dd403a22ba9d"), "10.16.1-windows_amd64": ("node-v10.16.1-win-x64.zip", "node-v10.16.1-win-x64", "1ff8b26670e1b935b51f4b795728f29845c31a3c38b3220b4fe71fb139bc5623"), "10.16.2-darwin_amd64": ("node-v10.16.2-darwin-x64.tar.gz", "node-v10.16.2-darwin-x64", "21ee8bdb04909f553e97af7c6e41009e15d06b886dd3e2ca8a92ce3e0a148a09"), "10.16.2-linux_arm64": ("node-v10.16.2-linux-arm64.tar.xz", "node-v10.16.2-linux-arm64", "5fb2b7d3c2b6b40e237cdc172eabfac2e485ee309ac2bcfbff413de1ed79a59e"), "10.16.2-linux_amd64": ("node-v10.16.2-linux-x64.tar.xz", "node-v10.16.2-linux-x64", "406718dc2f3164b3d1981c36b68b70ea448fbbac29cefbe23ff286b3cd55f264"), "10.16.2-windows_amd64": ("node-v10.16.2-win-x64.zip", "node-v10.16.2-win-x64", "01654dc79d82e9f3c89d01c8cf1cdce68d3a9118dbe968ee86a3ffd6ee153567"), "10.16.3-darwin_amd64": ("node-v10.16.3-darwin-x64.tar.gz", "node-v10.16.3-darwin-x64", "6febc571e1543c2845fa919c6d06b36a24e4e142c91aedbe28b6ff7d296119e4"), "10.16.3-linux_arm64": ("node-v10.16.3-linux-arm64.tar.xz", "node-v10.16.3-linux-arm64", "8ee77bad022bd460bf2867a97bf56ce7ddc4aa2ace067e45995fb1721a958428"), "10.16.3-linux_amd64": ("node-v10.16.3-linux-x64.tar.xz", "node-v10.16.3-linux-x64", "d2271fd8cf997fa7447d638dfa92749ff18ca4b0d796bf89f2a82bf7800d5506"), "10.16.3-windows_amd64": ("node-v10.16.3-win-x64.zip", "node-v10.16.3-win-x64", "19aa47de7c5950d7bd71a1e878013b98d93871cc311d7185f5472e6d3f633146"), "10.17.0-darwin_amd64": ("node-v10.17.0-darwin-x64.tar.gz", "node-v10.17.0-darwin-x64", "9b96140ad74b217f216c83ddf50d1f70a4296576f6edbbbfb65d0f478015d9df"), "10.17.0-linux_arm64": ("node-v10.17.0-linux-arm64.tar.xz", "node-v10.17.0-linux-arm64", "3ab8ee2b5c9aa4d060c68667ddef70cc2960e12bcfe4a0f2de7ebc0f008bf13d"), "10.17.0-linux_amd64": ("node-v10.17.0-linux-x64.tar.xz", "node-v10.17.0-linux-x64", "2b49cd296f969ef0ffb7922719ffa6542bedb89d6c959a47c023d11ce222f5d6"), "10.17.0-windows_amd64": ("node-v10.17.0-win-x64.zip", "node-v10.17.0-win-x64", "e84a1f3685219811bb4662eb3e3b55abd0c764c24cd2b224ba31b3f9f162baf6"), "10.18.0-darwin_amd64": ("node-v10.18.0-darwin-x64.tar.gz", "node-v10.18.0-darwin-x64", "a7af53e3363e8ab654b97387bc7cf352dddb324562404c1d35fe10cba3f27e0f"), "10.18.0-linux_arm64": ("node-v10.18.0-linux-arm64.tar.xz", "node-v10.18.0-linux-arm64", "b2b34dd43ea3979890663afa270e09e09c219f046e39e8e439eeda2821cc9643"), "10.18.0-linux_amd64": ("node-v10.18.0-linux-x64.tar.xz", "node-v10.18.0-linux-x64", "eac160acfc2c5b6fca021baa9943341fea50859f19c7ccbd56669b1fe04e691e"), "10.18.0-windows_amd64": ("node-v10.18.0-win-x64.zip", "node-v10.18.0-win-x64", "56afcc9c191dfc99017725be92ac1331e23afb1930913446eb91852cb02a8687"), "10.18.1-darwin_amd64": ("node-v10.18.1-darwin-x64.tar.gz", "node-v10.18.1-darwin-x64", "2b2d3379420e626eee393cabf1c90bc55957ff5bb067b82a74eb2f92147d6757"), "10.18.1-linux_arm64": ("node-v10.18.1-linux-arm64.tar.xz", "node-v10.18.1-linux-arm64", "9a6203697e0087a1c909961481d579c76777df1df622921e4ce16198851f30fe"), "10.18.1-linux_amd64": ("node-v10.18.1-linux-x64.tar.xz", "node-v10.18.1-linux-x64", "8cc40f45c2c62529b15e83a6bbe0ac1febf57af3c5720df68067c96c0fddbbdf"), "10.18.1-windows_amd64": ("node-v10.18.1-win-x64.zip", "node-v10.18.1-win-x64", "fb27bb95c27c72f2e25d0c41309b606b2ae48ba0d6094a19f206ad1df9dc5e19"), "10.19.0-darwin_amd64": ("node-v10.19.0-darwin-x64.tar.gz", "node-v10.19.0-darwin-x64", "b16328570651be44213a2303c1f9515fc506e0a96a273806f71ed000e3ca3cb3"), "10.19.0-linux_arm64": ("node-v10.19.0-linux-arm64.tar.xz", "node-v10.19.0-linux-arm64", "77bdbf859fc38e6e860efd479b0a7b7b6bd3e7cb05337e5cc5638251eb5d3a59"), "10.19.0-linux_amd64": ("node-v10.19.0-linux-x64.tar.xz", "node-v10.19.0-linux-x64", "34127c7c6b1ba02d6d4dc3a926f38a5fb88bb37fc7f051349005ce331c7a53c6"), "10.19.0-windows_amd64": ("node-v10.19.0-win-x64.zip", "node-v10.19.0-win-x64", "210efd45a7f79cf4c350d8f575f990becdd3833cd922796a4c83b27996f5679e"), "10.20.0-darwin_amd64": ("node-v10.20.0-darwin-x64.tar.gz", "node-v10.20.0-darwin-x64", "c153832774afcae89a82efb55ed80557d1a41e1880638ad57128a9a3762d212f"), "10.20.0-linux_arm64": ("node-v10.20.0-linux-arm64.tar.xz", "node-v10.20.0-linux-arm64", "f3567924d6b7f0fa55c4ee0a7330ec0dcaeec557982794796d6b312e7053c674"), "10.20.0-linux_amd64": ("node-v10.20.0-linux-x64.tar.xz", "node-v10.20.0-linux-x64", "c5721a89feecc0e98d42386e171cb763c077f782033ddc998819edcf9d93b691"), "10.20.0-windows_amd64": ("node-v10.20.0-win-x64.zip", "node-v10.20.0-win-x64", "d266313fa22885a6ec76eea521fb8a1131b4d9fb3a57afb045a98301aeb7d24e"), "10.20.1-darwin_amd64": ("node-v10.20.1-darwin-x64.tar.gz", "node-v10.20.1-darwin-x64", "6437e364cd93be246ffb67dd40775cbb467bb8d28d8af4413123f478bb6234b9"), "10.20.1-linux_arm64": ("node-v10.20.1-linux-arm64.tar.xz", "node-v10.20.1-linux-arm64", "e33cafff94a6308916530b4b724bbc138399484d96f71b1c23677596bec268d0"), "10.20.1-linux_amd64": ("node-v10.20.1-linux-x64.tar.xz", "node-v10.20.1-linux-x64", "5e0b1fbc6cf8c2c34dc33d880670ee1bc1c1e931099de3796a96143a962c92ee"), "10.20.1-windows_amd64": ("node-v10.20.1-win-x64.zip", "node-v10.20.1-win-x64", "5e4ec0936c51047c218c0c164cc80283cd36ecd40e0a6979281d395c1be8ee10"), "10.21.0-darwin_amd64": ("node-v10.21.0-darwin-x64.tar.gz", "node-v10.21.0-darwin-x64", "596900700c4a0de0303bb4c378a1abcd63f31efc848704c5fbc1230de628577a"), "10.21.0-linux_arm64": ("node-v10.21.0-linux-arm64.tar.xz", "node-v10.21.0-linux-arm64", "3af40706ff0da7fe0baa4683ead6c74445405a2553e7373e627f24d19d4ac100"), "10.21.0-linux_amd64": ("node-v10.21.0-linux-x64.tar.xz", "node-v10.21.0-linux-x64", "1d3296763e46540047099e4910812e81c4899c0595f2d82474e2099c1e1603e2"), "10.21.0-windows_amd64": ("node-v10.21.0-win-x64.zip", "node-v10.21.0-win-x64", "03dddcdaccdb40978ddf15d189acdc20409d9a666636db2595118690ff83ce82"), "10.22.0-darwin_amd64": ("node-v10.22.0-darwin-x64.tar.gz", "node-v10.22.0-darwin-x64", "c7583a297ba9c6cfc03688a32776155d02fabf9ff45847c63b12a68d400f1dc1"), "10.22.0-linux_arm64": ("node-v10.22.0-linux-arm64.tar.xz", "node-v10.22.0-linux-arm64", "abacc6f37e8dfbe398843c7dc7b9bb7153ff6e653ad50e85d73d86088da48372"), "10.22.0-linux_amd64": ("node-v10.22.0-linux-x64.tar.xz", "node-v10.22.0-linux-x64", "ddf33e038c593d6df36b1dd4b25c1b6fa8230c615e6312ad33e80ef863e4a74f"), "10.22.0-windows_amd64": ("node-v10.22.0-win-x64.zip", "node-v10.22.0-win-x64", "931c2907450790f89aa178fa84c1adbd1f7cb7ab0a34f8bfb4af25640e8d4e06"), "11.0.0-darwin_amd64": ("node-v11.0.0-darwin-x64.tar.gz", "node-v11.0.0-darwin-x64", "f70e12d246ba35e88c5c08a195215c5c913ce66c9d95d0bd21cc1d3e69904279"), "11.0.0-linux_arm64": ("node-v11.0.0-linux-arm64.tar.xz", "node-v11.0.0-linux-arm64", "0d0c7013fd00a8e713c36aa96bcc268eeadbad2ce48d87e19849d66f4c618cad"), "11.0.0-linux_amd64": ("node-v11.0.0-linux-x64.tar.xz", "node-v11.0.0-linux-x64", "418b1a73bcafbf5dd3bc787f0440c2b4123dfecc2b239f5651f0256cb5ab606d"), "11.0.0-windows_amd64": ("node-v11.0.0-win-x64.zip", "node-v11.0.0-win-x64", "4dd3ef7f5c8181be39cd45476b22ed34b6da2bf77377b699384d426702f8c969"), "11.1.0-darwin_amd64": ("node-v11.1.0-darwin-x64.tar.gz", "node-v11.1.0-darwin-x64", "5d6b84d2b0fd6afee07c371bc815a9e4b6671b85bedcb38815310bd0f884d3c8"), "11.1.0-linux_arm64": ("node-v11.1.0-linux-arm64.tar.xz", "node-v11.1.0-linux-arm64", "cbba27e1c90701fbb9db66cc2c6cc3049aaf08adb16cabd0cad970b74cdaf6d3"), "11.1.0-linux_amd64": ("node-v11.1.0-linux-x64.tar.xz", "node-v11.1.0-linux-x64", "c70419674d932452017556080264de2b6d1105c112647dd1dd495b739456dd91"), "11.1.0-windows_amd64": ("node-v11.1.0-win-x64.zip", "node-v11.1.0-win-x64", "985e4edc758cb5f77f85cddda0155616b92f163b8d3842c542b1c8a395068418"), "11.2.0-darwin_amd64": ("node-v11.2.0-darwin-x64.tar.gz", "node-v11.2.0-darwin-x64", "cd17fafcdb21ae80fb94e455e63567c70b3bceedf982b93ae9e4aea411f6a6ea"), "11.2.0-linux_arm64": ("node-v11.2.0-linux-arm64.tar.xz", "node-v11.2.0-linux-arm64", "3e6c47a29b85030b4305bdc2e15cbe37e1b54a2338ce1790637384ce349ed1fd"), "11.2.0-linux_amd64": ("node-v11.2.0-linux-x64.tar.xz", "node-v11.2.0-linux-x64", "629a603443c275f8ecd851994b81a9c02a36343dbcbafc279cbecb9ccd9cf906"), "11.2.0-windows_amd64": ("node-v11.2.0-win-x64.zip", "node-v11.2.0-win-x64", "3440b2880b4e3b78c9c18865df263317e7d3c3e179dad960d526004dc7e6ba9a"), "11.3.0-darwin_amd64": ("node-v11.3.0-darwin-x64.tar.gz", "node-v11.3.0-darwin-x64", "54acc7bdeffae79fdd73f959712305aee1d8d487d56813b43cae96d151ec79db"), "11.3.0-linux_arm64": ("node-v11.3.0-linux-arm64.tar.xz", "node-v11.3.0-linux-arm64", "642cc3fc94a856ad6d09e76eaf869672bef925308afdad398a58f18eeaf4e4b8"), "11.3.0-linux_amd64": ("node-v11.3.0-linux-x64.tar.xz", "node-v11.3.0-linux-x64", "d37fb7fae8a185409bccf106e91d8ffa3450115852795512fc62e6da0b5e3dbb"), "11.3.0-windows_amd64": ("node-v11.3.0-win-x64.zip", "node-v11.3.0-win-x64", "b801e908ec36a07f06df388845e22e0b7f3cede7a4030896712c8ee28cdb3f05"), "11.4.0-darwin_amd64": ("node-v11.4.0-darwin-x64.tar.gz", "node-v11.4.0-darwin-x64", "05a515146d5bc397625f442a6ecbbc7f0d071a2a7efbf1e2b2ed46d728bc7b30"), "11.4.0-linux_arm64": ("node-v11.4.0-linux-arm64.tar.xz", "node-v11.4.0-linux-arm64", "c32e752e74794a4254ae4caa892b7beb3be60dba6851e8e5d637febfb659ee3a"), "11.4.0-linux_amd64": ("node-v11.4.0-linux-x64.tar.xz", "node-v11.4.0-linux-x64", "24d9be161e7fb28e761801639cb452ff223269ed53d967e5745b5c6391eb3fbd"), "11.4.0-windows_amd64": ("node-v11.4.0-win-x64.zip", "node-v11.4.0-win-x64", "30b84ab0101c8916694e6cd6c0ccb5182e4555da5e06deb080e906ef5b3893df"), "11.5.0-darwin_amd64": ("node-v11.5.0-darwin-x64.tar.gz", "node-v11.5.0-darwin-x64", "741abd58ac67b4bf8d2ef991a7487ea17e421b2248688b93be0d2f34886c6aa2"), "11.5.0-linux_arm64": ("node-v11.5.0-linux-arm64.tar.xz", "node-v11.5.0-linux-arm64", "3f1436c1de70b2e34f7a63a5af7e6b106a8ebe9289b3f7d045ac4a4856570164"), "11.5.0-linux_amd64": ("node-v11.5.0-linux-x64.tar.xz", "node-v11.5.0-linux-x64", "ada54407b505b7e6f516c753f0e49220917dd11efa5ee892d3252bdd65d4a54c"), "11.5.0-windows_amd64": ("node-v11.5.0-win-x64.zip", "node-v11.5.0-win-x64", "3692939b1bbd7ee8b0a967429eef6b1d45078c2f4fc289aae261ca5bde5a0607"), "11.6.0-darwin_amd64": ("node-v11.6.0-darwin-x64.tar.gz", "node-v11.6.0-darwin-x64", "c880063b112c48130dba8f7b058de61959ae46fddcfa363715571b22c1cbeb26"), "11.6.0-linux_arm64": ("node-v11.6.0-linux-arm64.tar.xz", "node-v11.6.0-linux-arm64", "956016db41f4f96f8e005d36c738d7c833442d09a970462552eb214027e0268a"), "11.6.0-linux_amd64": ("node-v11.6.0-linux-x64.tar.xz", "node-v11.6.0-linux-x64", "2251a6c5b332e7ea69bbefba11950cb6c27ba50fa700468711f729da6a6f5324"), "11.6.0-windows_amd64": ("node-v11.6.0-win-x64.zip", "node-v11.6.0-win-x64", "d230828c1cc9863c9768106ffee0320ba42049b594bd2689e430b872e8f0b2dd"), "11.7.0-darwin_amd64": ("node-v11.7.0-darwin-x64.tar.gz", "node-v11.7.0-darwin-x64", "873b47e6fc97aef2f73b0e8dde641967b2a84a3b63d1697b9d8813e14fb3b01c"), "11.7.0-linux_arm64": ("node-v11.7.0-linux-arm64.tar.xz", "node-v11.7.0-linux-arm64", "82b9726c6b367a43530f868f61b1b2a05c942d3decdf9d2e18b4a9bdf353c223"), "11.7.0-linux_amd64": ("node-v11.7.0-linux-x64.tar.xz", "node-v11.7.0-linux-x64", "b2a0a7dde17fe0da5f86ce5fea3da2861d652a5e702e2177ee62813ff86451c0"), "11.7.0-windows_amd64": ("node-v11.7.0-win-x64.zip", "node-v11.7.0-win-x64", "00834d16532f24583bf56d2baab03904b0220154cc712344be95e4d05c6234dd"), "11.8.0-darwin_amd64": ("node-v11.8.0-darwin-x64.tar.gz", "node-v11.8.0-darwin-x64", "fbb26b38f408c2f2324a5821062c16103f54de16d24f9f24c4e270a3a41f4832"), "11.8.0-linux_arm64": ("node-v11.8.0-linux-arm64.tar.xz", "node-v11.8.0-linux-arm64", "42b190c686cb8bafbdbf418a6c20c6785a23ba0f1a1a85af44595057a3d5e25e"), "11.8.0-linux_amd64": ("node-v11.8.0-linux-x64.tar.xz", "node-v11.8.0-linux-x64", "85ca19c495d5cac6acf6ee4a3c8dfb4489fb67fefc184c61eb4513eb5ef99a88"), "11.8.0-windows_amd64": ("node-v11.8.0-win-x64.zip", "node-v11.8.0-win-x64", "cd4db1b9e7ac29ed81d433f2de85582902670a121961aa3f350533d5b2fd44c6"), "11.9.0-darwin_amd64": ("node-v11.9.0-darwin-x64.tar.gz", "node-v11.9.0-darwin-x64", "1df3dd99d174bb8cb61cc8e2aa419a4998c7ada9454123c34991ce30632f1ef8"), "11.9.0-linux_arm64": ("node-v11.9.0-linux-arm64.tar.xz", "node-v11.9.0-linux-arm64", "f39baa8d212e9676bfa7f1601f94d789c6dc6b35caf440df6ec815d238978457"), "11.9.0-linux_amd64": ("node-v11.9.0-linux-x64.tar.xz", "node-v11.9.0-linux-x64", "9bc461fb7f5fd3344301abfda834160d5397a4e289f9749ab03ba0b7e9a4c853"), "11.9.0-windows_amd64": ("node-v11.9.0-win-x64.zip", "node-v11.9.0-win-x64", "c62c01436f632858fea0194d4168b483e1aa485c3fc72247add4899a103c2677"), "11.10.0-darwin_amd64": ("node-v11.10.0-darwin-x64.tar.gz", "node-v11.10.0-darwin-x64", "1956528c6f3934a97508e36a4855c154f40f1923ccd61e296d5a85679103e3a1"), "11.10.0-linux_arm64": ("node-v11.10.0-linux-arm64.tar.xz", "node-v11.10.0-linux-arm64", "60ed6caa90d8188a55f0dbc63f4aef263fb4863e036d32989b820a2e40582c66"), "11.10.0-linux_amd64": ("node-v11.10.0-linux-x64.tar.xz", "node-v11.10.0-linux-x64", "fe4c617aaf88b5228bce0341d1c77bbae2622d69eaa17a15b7d4bcc60c4777c5"), "11.10.0-windows_amd64": ("node-v11.10.0-win-x64.zip", "node-v11.10.0-win-x64", "c39e711aebe678455fa74edf6d8f6184d6d93e20f160197799040a0c17005dba"), "11.10.1-darwin_amd64": ("node-v11.10.1-darwin-x64.tar.gz", "node-v11.10.1-darwin-x64", "dea52b86f6875efae26fbb6d0269d9769da7ca69408b74b6ab724d4b64004b07"), "11.10.1-linux_arm64": ("node-v11.10.1-linux-arm64.tar.xz", "node-v11.10.1-linux-arm64", "b116e57906ed73c970d64e7518b08c6de236575c5cd8bf09f4c1bd668524a014"), "11.10.1-linux_amd64": ("node-v11.10.1-linux-x64.tar.xz", "node-v11.10.1-linux-x64", "414216a7e47dbfb77141dce7a4452901ae2cdb4cd0deef3ab3ab49e0b2111f82"), "11.10.1-windows_amd64": ("node-v11.10.1-win-x64.zip", "node-v11.10.1-win-x64", "80cf14abacbc6b636bc192f4eee49421f082f21cdaa9c1ea5995c38f8c1375e5"), "11.11.0-darwin_amd64": ("node-v11.11.0-darwin-x64.tar.gz", "node-v11.11.0-darwin-x64", "6b7c8d93096bf065de0d0a42e8f027c424172c82df6f015d3149a5dbfa03c1cc"), "11.11.0-linux_arm64": ("node-v11.11.0-linux-arm64.tar.xz", "node-v11.11.0-linux-arm64", "febb698e74264ec0ecc738c86347e6bfb5d27e33ed492a031626df988a5fb4f3"), "11.11.0-linux_amd64": ("node-v11.11.0-linux-x64.tar.xz", "node-v11.11.0-linux-x64", "ee09c7712e741f84948f76a72b651bf088e516c3f38569b9e6f30c38c026c262"), "11.11.0-windows_amd64": ("node-v11.11.0-win-x64.zip", "node-v11.11.0-win-x64", "154a5b7ca7033382743c4752fa465a5d9902f4abed4263a38ea3f41ffa113910"), "11.12.0-darwin_amd64": ("node-v11.12.0-darwin-x64.tar.gz", "node-v11.12.0-darwin-x64", "93d68c1af41d02b262b3383d69b46eb326707ec010b321ad5655b91c4956e783"), "11.12.0-linux_arm64": ("node-v11.12.0-linux-arm64.tar.xz", "node-v11.12.0-linux-arm64", "9e89838e290c9bb478351bd403707d0b741ec56021c379c9f6da515a4cd1064a"), "11.12.0-linux_amd64": ("node-v11.12.0-linux-x64.tar.xz", "node-v11.12.0-linux-x64", "1c6bb93a24eda832708c1c10ec20316e1e4f30b3cfca9c5ee5d446762414b116"), "11.12.0-windows_amd64": ("node-v11.12.0-win-x64.zip", "node-v11.12.0-win-x64", "68e5bca1d6dd6b3de20870e7c593f9a890c48d2c9c83e15034baad6f7c0da426"), "11.13.0-darwin_amd64": ("node-v11.13.0-darwin-x64.tar.gz", "node-v11.13.0-darwin-x64", "c1a8f94b4778dad2d9f513cfdf9091810dc733a2daf4fa7e03d49ad133415b5d"), "11.13.0-linux_arm64": ("node-v11.13.0-linux-arm64.tar.xz", "node-v11.13.0-linux-arm64", "0edb29004fdbb5808331e765b4adde8b025a13d6619f49fec60a14582aba9ed7"), "11.13.0-linux_amd64": ("node-v11.13.0-linux-x64.tar.xz", "node-v11.13.0-linux-x64", "c2ae3caced5f181df282a6974ab3f5e232b5decb821aa8ea8fe758b0e0528223"), "11.13.0-windows_amd64": ("node-v11.13.0-win-x64.zip", "node-v11.13.0-win-x64", "f3dafd1f19841244f8f12952f9919c0a2857f6920b11f2a89554b061cd5a4525"), "11.14.0-darwin_amd64": ("node-v11.14.0-darwin-x64.tar.gz", "node-v11.14.0-darwin-x64", "37b8db4f6700a4b5aa3b6d4283538753953f6293aff99866aa9a81038848a4d9"), "11.14.0-linux_arm64": ("node-v11.14.0-linux-arm64.tar.xz", "node-v11.14.0-linux-arm64", "3d463f3b48e1060027f8a552657de6f3ee4724d718d546aa4ea5c301ee4ed083"), "11.14.0-linux_amd64": ("node-v11.14.0-linux-x64.tar.xz", "node-v11.14.0-linux-x64", "89e2cb0effa9bf075ee8bb6d92a6a50f7ccfdad03dd687f52ecdfab91230f9a1"), "11.14.0-windows_amd64": ("node-v11.14.0-win-x64.zip", "node-v11.14.0-win-x64", "58a5d3316c04335ff3da2ce66b89f3cce86b1d1ca878d1d6d68478160c66dc12"), "11.15.0-darwin_amd64": ("node-v11.15.0-darwin-x64.tar.gz", "node-v11.15.0-darwin-x64", "e953b657b1049e1de509a3fd0700cfeecd175f75a0d141d71393aa0d71fa29a9"), "11.15.0-linux_arm64": ("node-v11.15.0-linux-arm64.tar.xz", "node-v11.15.0-linux-arm64", "e458aa4c69da9ca2ae566c8eb56dc8b36d573b415bfd8eebca4ff2229fc4983d"), "11.15.0-linux_amd64": ("node-v11.15.0-linux-x64.tar.xz", "node-v11.15.0-linux-x64", "17424aef198fa322b93c79217ce7e8cdd264fed40383abbbd3e63c305ce1d7d8"), "11.15.0-windows_amd64": ("node-v11.15.0-win-x64.zip", "node-v11.15.0-win-x64", "f3cef50acf566724a5ec5df7697fb527d7339cafdae6c7c406a39358aee6cdf8"), "12.0.0-darwin_amd64": ("node-v12.0.0-darwin-x64.tar.gz", "node-v12.0.0-darwin-x64", "92c81a284e909424b50dd01e175260b75bbbdb487fdfe1885229817187ea76bc"), "12.0.0-linux_arm64": ("node-v12.0.0-linux-arm64.tar.xz", "node-v12.0.0-linux-arm64", "2ac36aa51f76654a8914d41a32bd5c3d3213cba14eea84abd9919d022b5694b4"), "12.0.0-linux_amd64": ("node-v12.0.0-linux-x64.tar.xz", "node-v12.0.0-linux-x64", "7a5609167265954cfb912e4dc8f36e5469335b6be1bb11d60d8427f92c03f5f9"), "12.0.0-windows_amd64": ("node-v12.0.0-win-x64.zip", "node-v12.0.0-win-x64", "96ab5f9f61d75daf3fb1072930b6e9249f15b77bc3b3dca516ae8439dc1500fb"), "12.1.0-darwin_amd64": ("node-v12.1.0-darwin-x64.tar.gz", "node-v12.1.0-darwin-x64", "57c592b13940aa44611aec08e7b425f35565a2c95c51736f433cb36eb65105b7"), "12.1.0-linux_arm64": ("node-v12.1.0-linux-arm64.tar.xz", "node-v12.1.0-linux-arm64", "67805a7976bef30d0e12211f18a99c6de405931e493fd32f451512473661ee10"), "12.1.0-linux_amd64": ("node-v12.1.0-linux-x64.tar.xz", "node-v12.1.0-linux-x64", "331c43176a20e705c6f4fdb61c69fee44dd3c2c93a20410be2c13b4f8515ef7b"), "12.1.0-windows_amd64": ("node-v12.1.0-win-x64.zip", "node-v12.1.0-win-x64", "6dc3ef4a6b4ce527f187270a1b0c5560771126df487ab9ddc4c3cd3b37d57eb6"), "12.2.0-darwin_amd64": ("node-v12.2.0-darwin-x64.tar.gz", "node-v12.2.0-darwin-x64", "c72ae8a2b989138c6e6e9b393812502df8c28546a016cf24e7a82dd27e3838af"), "12.2.0-linux_arm64": ("node-v12.2.0-linux-arm64.tar.xz", "node-v12.2.0-linux-arm64", "42e4a5c6ad0b402e281daf46a27a269249bdb8b4e31ff8869701aaddac2cc8c4"), "12.2.0-linux_amd64": ("node-v12.2.0-linux-x64.tar.xz", "node-v12.2.0-linux-x64", "89059969861606e2a435ff2619c4df6f41c040120e507d9c4f03374353357307"), "12.2.0-windows_amd64": ("node-v12.2.0-win-x64.zip", "node-v12.2.0-win-x64", "c1e7fb3c1c15d8f2ab5c1db9c9662097f9c682164b3f7397955ccce946442c97"), "12.3.0-darwin_amd64": ("node-v12.3.0-darwin-x64.tar.gz", "node-v12.3.0-darwin-x64", "4a9faa038fb4e6e930a0fecd9818a4820b4ca91d1c45a1c1279fe49cdbd28160"), "12.3.0-linux_arm64": ("node-v12.3.0-linux-arm64.tar.xz", "node-v12.3.0-linux-arm64", "3d6e7046b938ff1f2535bdcc892a82abf44d875d1e96779cc3ea9a074ccfa200"), "12.3.0-linux_amd64": ("node-v12.3.0-linux-x64.tar.xz", "node-v12.3.0-linux-x64", "2ce2c7a4d7fe3c560415e8dcbc5905a66a8bf28e2a2b2cff7e7a4eeb5753015d"), "12.3.0-windows_amd64": ("node-v12.3.0-win-x64.zip", "node-v12.3.0-win-x64", "b36c9f9809c90ce704465f066861314d6e33176a5d45da14c1519c3e4f35063e"), "12.3.1-darwin_amd64": ("node-v12.3.1-darwin-x64.tar.gz", "node-v12.3.1-darwin-x64", "b9c979f63a356090d8ff88ed141fd856ad853165c73633794a9d3a060334378e"), "12.3.1-linux_arm64": ("node-v12.3.1-linux-arm64.tar.xz", "node-v12.3.1-linux-arm64", "88df7f2e0c4a58661bb79b637daa417929efc6c4d6a77bba42a5127c5c383257"), "12.3.1-linux_amd64": ("node-v12.3.1-linux-x64.tar.xz", "node-v12.3.1-linux-x64", "46f52868c0643fe0d167ce24c3c873880c8e1494276c89c07114fb099da4f75a"), "12.3.1-windows_amd64": ("node-v12.3.1-win-x64.zip", "node-v12.3.1-win-x64", "aac3c4543f846c7ebf63e1498dec7955119dffffe65722bd8c6d2124ed4ecbd7"), "12.4.0-darwin_amd64": ("node-v12.4.0-darwin-x64.tar.gz", "node-v12.4.0-darwin-x64", "aaff97d59cda775165ef966ae74e70f55f3267e86d735ed3740ae9bf1d40531e"), "12.4.0-linux_arm64": ("node-v12.4.0-linux-arm64.tar.xz", "node-v12.4.0-linux-arm64", "bb2e7eabebdceb52424516dabce94cb37f55419e6ed19493916843a323c423cd"), "12.4.0-linux_amd64": ("node-v12.4.0-linux-x64.tar.xz", "node-v12.4.0-linux-x64", "9aec6a2a50c1791704a6069cbda6da62781361e44814d024e8bbaaf0deb41c5e"), "12.4.0-windows_amd64": ("node-v12.4.0-win-x64.zip", "node-v12.4.0-win-x64", "ec8623e2528a35d3219200308e7ed41e24d4f7cd96530a4e6ac2513e44f7fad1"), "12.5.0-darwin_amd64": ("node-v12.5.0-darwin-x64.tar.gz", "node-v12.5.0-darwin-x64", "a9ba9f584f015f1705063c10dd8d84d43f5b09dc7ecf4ee3968ab1ff1fe5d2b5"), "12.5.0-linux_arm64": ("node-v12.5.0-linux-arm64.tar.xz", "node-v12.5.0-linux-arm64", "d43b71a97f5484d13b655a8a0c1b1c0fc7e83b3719063cc362fe557d6e26bd69"), "12.5.0-linux_amd64": ("node-v12.5.0-linux-x64.tar.xz", "node-v12.5.0-linux-x64", "37c0c539aae69370f3c014cc4947748ce45ac5fa560f9b085724f22029834b27"), "12.5.0-windows_amd64": ("node-v12.5.0-win-x64.zip", "node-v12.5.0-win-x64", "f1b426fcd39ffdfec5d8ba60c6842cc11e9f49269cd49bc34c4fcee0517ddf66"), "12.6.0-darwin_amd64": ("node-v12.6.0-darwin-x64.tar.gz", "node-v12.6.0-darwin-x64", "004b7992a2621eb35a47c94d258510ca5744b5a8072364f235dc7e3d4bff7457"), "12.6.0-linux_arm64": ("node-v12.6.0-linux-arm64.tar.xz", "node-v12.6.0-linux-arm64", "b7a6580f0c5406b990b3c9f0d91297b103e38e2752b8b745c4d15310a9dd79d1"), "12.6.0-linux_amd64": ("node-v12.6.0-linux-x64.tar.xz", "node-v12.6.0-linux-x64", "1ac14567e2be5562df209900e28430bd11575d985a85e8a6df2743428570de33"), "12.6.0-windows_amd64": ("node-v12.6.0-win-x64.zip", "node-v12.6.0-win-x64", "0c5ac670c5bb0ea0d389bb7269cb84104702826f791a1d057eae02cdb9eed717"), "12.7.0-darwin_amd64": ("node-v12.7.0-darwin-x64.tar.gz", "node-v12.7.0-darwin-x64", "1a76bea7f7ed8c5c921852269ddd1300c9baba2f1e3f0377200a22c22cdea177"), "12.7.0-linux_arm64": ("node-v12.7.0-linux-arm64.tar.xz", "node-v12.7.0-linux-arm64", "abc4500eff8437503d475726b8ac2ed3463d2982bd66925a782f91b7d96e31de"), "12.7.0-linux_amd64": ("node-v12.7.0-linux-x64.tar.xz", "node-v12.7.0-linux-x64", "95867fdcfd4f821d84b3dd9fab5803fb29e093e911f2ab3c7111bcaf8bd5b9da"), "12.7.0-windows_amd64": ("node-v12.7.0-win-x64.zip", "node-v12.7.0-win-x64", "68802316ca4eb4d72ec5f9ff837752a6ec8cd73537ad7c346f30899ee523f4b7"), "12.8.0-darwin_amd64": ("node-v12.8.0-darwin-x64.tar.gz", "node-v12.8.0-darwin-x64", "5229571a1736befd6426dc0a6907be416e9f5c24695e3ef275ed2ba70f496499"), "12.8.0-linux_arm64": ("node-v12.8.0-linux-arm64.tar.xz", "node-v12.8.0-linux-arm64", "9f22aff38a8622b05821129f69dbe90695e01166f55c8d2a39b6c6a5aef8c6a8"), "12.8.0-linux_amd64": ("node-v12.8.0-linux-x64.tar.xz", "node-v12.8.0-linux-x64", "b6a9ab2e6e872375e0e27eda0698820a64495b31b1beab36cc54f9876b3a2052"), "12.8.0-windows_amd64": ("node-v12.8.0-win-x64.zip", "node-v12.8.0-win-x64", "b295aedebde069c4148534a9dfb2394ceba28cf367ddd8204a27d69c095a9e00"), "12.8.1-darwin_amd64": ("node-v12.8.1-darwin-x64.tar.gz", "node-v12.8.1-darwin-x64", "caccf8b409af342e35672cc766430587664f88d01dab622a5de44c8be1336e44"), "12.8.1-linux_arm64": ("node-v12.8.1-linux-arm64.tar.xz", "node-v12.8.1-linux-arm64", "3707240c402aae0b5879ce1ba17b32ebd224d47f5147639c6881a1b71ce65383"), "12.8.1-linux_amd64": ("node-v12.8.1-linux-x64.tar.xz", "node-v12.8.1-linux-x64", "1c7cf61cb8fa98a76d92445823d6dd1649e985899e16900b39eacdd8cd4094f3"), "12.8.1-windows_amd64": ("node-v12.8.1-win-x64.zip", "node-v12.8.1-win-x64", "c81ecaa03dc882dde36087c854e4831c13d3eb237f262f9ce74ccc6f156684da"), "12.9.0-darwin_amd64": ("node-v12.9.0-darwin-x64.tar.gz", "node-v12.9.0-darwin-x64", "24c1f0c93e485961446814662db942f1b309d843fb4ecbe50466d9857a51b343"), "12.9.0-linux_arm64": ("node-v12.9.0-linux-arm64.tar.xz", "node-v12.9.0-linux-arm64", "f7f6f102d097d64eba26f84f2760597f9831886ef7d0db3cba88459847f2743d"), "12.9.0-linux_amd64": ("node-v12.9.0-linux-x64.tar.xz", "node-v12.9.0-linux-x64", "7110bdd16e397870142ff0e8d92d4a4502d43ec047d970c843a9a4e5f9e79283"), "12.9.0-windows_amd64": ("node-v12.9.0-win-x64.zip", "node-v12.9.0-win-x64", "b5f05deb31ac04b9c3a487542daf151e01c05017403a56ba443da623f36b153b"), "12.9.1-darwin_amd64": ("node-v12.9.1-darwin-x64.tar.gz", "node-v12.9.1-darwin-x64", "9aaf29d30056e2233fd15dfac56eec12e8342d91bb6c13d54fb5e599383dddb9"), "12.9.1-linux_arm64": ("node-v12.9.1-linux-arm64.tar.xz", "node-v12.9.1-linux-arm64", "b6d986faf3a77b6c353c344645c93f2a0e0436c43865e6c215a24301a076a11f"), "12.9.1-linux_amd64": ("node-v12.9.1-linux-x64.tar.xz", "node-v12.9.1-linux-x64", "680a1263c9f5f91adadcada549f0a9c29f1b26d09658d2b501c334c3f63719e5"), "12.9.1-windows_amd64": ("node-v12.9.1-win-x64.zip", "node-v12.9.1-win-x64", "6a4e54bda091bd02dbd8ff1b9f6671e036297da012a53891e3834d4bf4bed297"), "12.10.0-darwin_amd64": ("node-v12.10.0-darwin-x64.tar.gz", "node-v12.10.0-darwin-x64", "4c16d1f6454f5dc3977ad00cea123792b8d4e1d6d1bf42bbc82a4202039a5971"), "12.10.0-linux_arm64": ("node-v12.10.0-linux-arm64.tar.xz", "node-v12.10.0-linux-arm64", "fa1afb9e8cfd964867351b6dac6cd918784ff309291612251c4745aeb0b10e02"), "12.10.0-linux_amd64": ("node-v12.10.0-linux-x64.tar.xz", "node-v12.10.0-linux-x64", "e8d2e6b62dd8183dc59a139a9ca3edc7c419a0d3d92e90fea9cb0ad52489843a"), "12.10.0-windows_amd64": ("node-v12.10.0-win-x64.zip", "node-v12.10.0-win-x64", "de341476711c71f82d06fabcc9874c1ff9e865fd7274334d64a67b1e31a53fd0"), "12.11.0-darwin_amd64": ("node-v12.11.0-darwin-x64.tar.gz", "node-v12.11.0-darwin-x64", "a0fd5c1c9e67099f52b73c732aa52a878c6ff67f50ff0e94c2c5628a87455130"), "12.11.0-linux_arm64": ("node-v12.11.0-linux-arm64.tar.xz", "node-v12.11.0-linux-arm64", "d1126439ff6d079b682a7cd6308cb226afd247e5cb0f7cc60cfb0e609a096622"), "12.11.0-linux_amd64": ("node-v12.11.0-linux-x64.tar.xz", "node-v12.11.0-linux-x64", "c0dc88110ac3ee095e3d09077545435b72d4cd52e35c43cd3fa666cff7446d46"), "12.11.0-windows_amd64": ("node-v12.11.0-win-x64.zip", "node-v12.11.0-win-x64", "457157358bd029196d47865dee66f8c263a3a4a5a8cdd1c0a8cf43ac45e9eda3"), "12.11.1-darwin_amd64": ("node-v12.11.1-darwin-x64.tar.gz", "node-v12.11.1-darwin-x64", "7dd24ee6d81668e65ce1b77b4bb4cdaf517d8f80bb19740d286606028506970b"), "12.11.1-linux_arm64": ("node-v12.11.1-linux-arm64.tar.xz", "node-v12.11.1-linux-arm64", "12777294258da80410fd7d5cbed46ead5d3cabacf376ee10ddb9e1a335b114e7"), "12.11.1-linux_amd64": ("node-v12.11.1-linux-x64.tar.xz", "node-v12.11.1-linux-x64", "00f7a0b59ff38c1c74d81732df925aa5ac5788b58412437327421f796878793d"), "12.11.1-windows_amd64": ("node-v12.11.1-win-x64.zip", "node-v12.11.1-win-x64", "0bab4473cd2ba03511b8859ddf2202bb012d5c541f9d57b555a5bbbf101fcb35"), "12.12.0-darwin_amd64": ("node-v12.12.0-darwin-x64.tar.gz", "node-v12.12.0-darwin-x64", "14a98237e8859bc22695719dbc2e9db5529a33ada0c6c377df4dc27b5622ffbb"), "12.12.0-linux_arm64": ("node-v12.12.0-linux-arm64.tar.xz", "node-v12.12.0-linux-arm64", "ad536aba218df64d8e901b28985f4c5f72f634bf903c449b0c84929f6940853c"), "12.12.0-linux_amd64": ("node-v12.12.0-linux-x64.tar.xz", "node-v12.12.0-linux-x64", "e3a38dfaf1233a3c43c2528869af52e74575781984369a5b705c89d84dfa3ac2"), "12.12.0-windows_amd64": ("node-v12.12.0-win-x64.zip", "node-v12.12.0-win-x64", "930e7bcd2ae5bcb1d4163c2adf09a392ed0e9a824b069d19daeb4f9f3430a195"), "12.13.0-darwin_amd64": ("node-v12.13.0-darwin-x64.tar.gz", "node-v12.13.0-darwin-x64", "49a7374670a111b033ce16611b20fd1aafd3296bbc662b184fe8fb26a29c22cc"), "12.13.0-linux_arm64": ("node-v12.13.0-linux-arm64.tar.xz", "node-v12.13.0-linux-arm64", "d65b3ce27639f15ae22941e3ff98a1c900aa9049fcc15518038615b0676037d5"), "12.13.0-linux_amd64": ("node-v12.13.0-linux-x64.tar.xz", "node-v12.13.0-linux-x64", "7a57ef2cb3036d7eacd50ae7ba07245a28336a93652641c065f747adb2a356d9"), "12.13.0-windows_amd64": ("node-v12.13.0-win-x64.zip", "node-v12.13.0-win-x64", "6f920cebeecb4957b4ef0def6d9b04c49d4582864f8d1a207ce8d0665865781a"), "12.13.1-darwin_amd64": ("node-v12.13.1-darwin-x64.tar.gz", "node-v12.13.1-darwin-x64", "12d14c7fbd98876a163a2b7e0aeb13657dc3e967e993efaf2dcacbe475a285e8"), "12.13.1-linux_arm64": ("node-v12.13.1-linux-arm64.tar.xz", "node-v12.13.1-linux-arm64", "3aef0178a8ab74c8e5c133e23d1896e53ed5c273415d165a0e72e005f5467cba"), "12.13.1-linux_amd64": ("node-v12.13.1-linux-x64.tar.xz", "node-v12.13.1-linux-x64", "aca06db37589966829b1ef0f163a5859b156a1d8e51b415bf47590f667c30a25"), "12.13.1-windows_amd64": ("node-v12.13.1-win-x64.zip", "node-v12.13.1-win-x64", "db33fb758ba49b96d073311ef9e9134b51bf96246ffd938909b2e02c65a6e890"), "12.14.0-darwin_amd64": ("node-v12.14.0-darwin-x64.tar.gz", "node-v12.14.0-darwin-x64", "5f3170b346b29e6902c0ca7e0993e3d1b4b650615348aa866de17ad965377048"), "12.14.0-linux_arm64": ("node-v12.14.0-linux-arm64.tar.xz", "node-v12.14.0-linux-arm64", "733b4f71ccdf114038bbe0f20574a1e8f4f60b53d39caf445f518745596eadda"), "12.14.0-linux_amd64": ("node-v12.14.0-linux-x64.tar.xz", "node-v12.14.0-linux-x64", "82ae74ee0a204de7ebf7767eaa8e382518d9b49668dcbb5bd7fd003154445d1f"), "12.14.0-windows_amd64": ("node-v12.14.0-win-x64.zip", "node-v12.14.0-win-x64", "526f4b01ffb270bdd8213b58b38843fa3c88f03c89b1898c641bc0e32607913e"), "12.14.1-darwin_amd64": ("node-v12.14.1-darwin-x64.tar.gz", "node-v12.14.1-darwin-x64", "0be10a28737527a1e5e3784d3ad844d742fe8b0718acd701fd48f718fd3af78f"), "12.14.1-linux_arm64": ("node-v12.14.1-linux-arm64.tar.xz", "node-v12.14.1-linux-arm64", "6cd28a5e6340f596aec8dbfd6720f444f011e6b9018622290a60dbd17f9baff6"), "12.14.1-linux_amd64": ("node-v12.14.1-linux-x64.tar.xz", "node-v12.14.1-linux-x64", "07cfcaa0aa9d0fcb6e99725408d9e0b07be03b844701588e3ab5dbc395b98e1b"), "12.14.1-windows_amd64": ("node-v12.14.1-win-x64.zip", "node-v12.14.1-win-x64", "1f96ccce3ba045ecea3f458e189500adb90b8bc1a34de5d82fc10a5bf66ce7e3"), "12.15.0-darwin_amd64": ("node-v12.15.0-darwin-x64.tar.gz", "node-v12.15.0-darwin-x64", "b6449cec39ac15b37abe4e59ef0eae50dcdfbf060c5276a01cc590f2a3372b7d"), "12.15.0-linux_arm64": ("node-v12.15.0-linux-arm64.tar.xz", "node-v12.15.0-linux-arm64", "c582cb65a0ec7f648618d3d33b4f87c374a3f930518b57eca1693828c965d6e5"), "12.15.0-linux_amd64": ("node-v12.15.0-linux-x64.tar.xz", "node-v12.15.0-linux-x64", "63df953deb091c1500e1044bef01d1953117970e757e74e90d915e1a4a0d1c9c"), "12.15.0-windows_amd64": ("node-v12.15.0-win-x64.zip", "node-v12.15.0-win-x64", "48b29cab597962f12b0aac081522e6192bc8642c582cd0fc1bf51557273888da"), "12.16.0-darwin_amd64": ("node-v12.16.0-darwin-x64.tar.gz", "node-v12.16.0-darwin-x64", "af3b9bbfdd9ae1b46390e7deeb77a2c1d8dbc6fb4171bbb0cfe8686fc1ecef1d"), "12.16.0-linux_arm64": ("node-v12.16.0-linux-arm64.tar.xz", "node-v12.16.0-linux-arm64", "f2d97187bd8d3175bf6266193107a030bfb827003d57ba6dd21de16aa622548d"), "12.16.0-linux_amd64": ("node-v12.16.0-linux-x64.tar.xz", "node-v12.16.0-linux-x64", "e8c38659540766db9d85bd7325ba8cce8ded56204f84507f73fdb41a26d9bd73"), "12.16.0-windows_amd64": ("node-v12.16.0-win-x64.zip", "node-v12.16.0-win-x64", "9a590dd064b491fbd40b366ae4a119fe6cef516a25fb4d78d7c2a64b37574da8"), "12.16.1-darwin_amd64": ("node-v12.16.1-darwin-x64.tar.gz", "node-v12.16.1-darwin-x64", "34895bce210ca4b3cf19cd480e6563588880dd7f5d798f3782e3650580d35920"), "12.16.1-linux_arm64": ("node-v12.16.1-linux-arm64.tar.xz", "node-v12.16.1-linux-arm64", "396c43ba507b8ec33c70cdc6f73b4a7c725bddb3f74a85a8b8ed77b436856fed"), "12.16.1-linux_amd64": ("node-v12.16.1-linux-x64.tar.xz", "node-v12.16.1-linux-x64", "b826753f14df9771609ffb8e7d2cc4cb395247cb704cf0cea0f04132d9cf3505"), "12.16.1-windows_amd64": ("node-v12.16.1-win-x64.zip", "node-v12.16.1-win-x64", "b93b73572c5e495154a9823d494de5729c77d1c83b041171154c4b5f3f76b590"), "12.16.2-darwin_amd64": ("node-v12.16.2-darwin-x64.tar.gz", "node-v12.16.2-darwin-x64", "483954e311a5ff649ddf32b473f635a58890790d284b5788bdd8d7ff850c6db2"), "12.16.2-linux_arm64": ("node-v12.16.2-linux-arm64.tar.xz", "node-v12.16.2-linux-arm64", "c88005467f6dcdb621d454b35ec39bb42e165c6a2e1cee74cabcdc01af307e81"), "12.16.2-linux_amd64": ("node-v12.16.2-linux-x64.tar.xz", "node-v12.16.2-linux-x64", "f94a6eb06e80ef2794ebf51a2baed0b89ed307d3196ab5579f16c0fa7cc62901"), "12.16.2-windows_amd64": ("node-v12.16.2-win-x64.zip", "node-v12.16.2-win-x64", "f34303a49384aee2e5daab5f248c5a719e850a9ebb19e7098fe2bfffb26efe03"), "12.16.3-darwin_amd64": ("node-v12.16.3-darwin-x64.tar.gz", "node-v12.16.3-darwin-x64", "0718812b3ab8e77e8d1354f4d10428ae99d78f721bdcceee527c4b592ea7fed0"), "12.16.3-linux_arm64": ("node-v12.16.3-linux-arm64.tar.xz", "node-v12.16.3-linux-arm64", "8311f513a7d1911200502dd3e00142cef56d600c851d5870f68d939802205b73"), "12.16.3-linux_amd64": ("node-v12.16.3-linux-x64.tar.xz", "node-v12.16.3-linux-x64", "1956e196e3c3c8ef5f0c45db76d7c1245af4ccdda2b7ab30a57ce91d6e165caa"), "12.16.3-windows_amd64": ("node-v12.16.3-win-x64.zip", "node-v12.16.3-win-x64", "d0bb0e0b1f1a948529ddd543e2cfe0bfe209eb843defc70217b3d2f84cbf3b78"), "12.17.0-darwin_amd64": ("node-v12.17.0-darwin-x64.tar.gz", "node-v12.17.0-darwin-x64", "8c3b9459462b8adaa10549f4da6a5ff5cdfaf7140a8a8020a87cc96d79022cc0"), "12.17.0-linux_arm64": ("node-v12.17.0-linux-arm64.tar.xz", "node-v12.17.0-linux-arm64", "54a0dbb203ff1700341d258cefa304bd31044bf0226e9e59a0de1128418cb5aa"), "12.17.0-linux_amd64": ("node-v12.17.0-linux-x64.tar.xz", "node-v12.17.0-linux-x64", "988653492a4f422fb112421c5c9d1c140146b665b480c2b24c66fffdd0b88a88"), "12.17.0-windows_amd64": ("node-v12.17.0-win-x64.zip", "node-v12.17.0-win-x64", "f3a64dc6ad48577f1f81521aa144c028beb7e353d0fcd05d7b420a72a84f50fc"), "12.18.0-darwin_amd64": ("node-v12.18.0-darwin-x64.tar.gz", "node-v12.18.0-darwin-x64", "11fe50e670315d2d3c46317d23f7a019f46a3d08b534fbadee9a1bc3d4f81852"), "12.18.0-linux_arm64": ("node-v12.18.0-linux-arm64.tar.xz", "node-v12.18.0-linux-arm64", "51b301102984ff73a74894396b774d00259bb3bb8c1de7c82674713acec7a214"), "12.18.0-linux_amd64": ("node-v12.18.0-linux-x64.tar.xz", "node-v12.18.0-linux-x64", "2febc2506c298048bfddf896056be6191c1f08716876d960a4990bd63a7fe05a"), "12.18.0-windows_amd64": ("node-v12.18.0-win-x64.zip", "node-v12.18.0-win-x64", "ca73a989eba5e863971cb600e5520cb4c5edf9c600fe8f76d9e4771ad03b5d08"), "12.18.1-darwin_amd64": ("node-v12.18.1-darwin-x64.tar.gz", "node-v12.18.1-darwin-x64", "80e1d644fe78838da47cd16de234b612c20e06ffe14447125db9622e381ed1ba"), "12.18.1-linux_arm64": ("node-v12.18.1-linux-arm64.tar.xz", "node-v12.18.1-linux-arm64", "b6683e6e887c6c44a3fe9ff419e80d36eaafed39eb2c2d1b04ee54b440a03217"), "12.18.1-linux_amd64": ("node-v12.18.1-linux-x64.tar.xz", "node-v12.18.1-linux-x64", "863f816967e297c9eb221ad3cf32521f7ac46fffc66750e60f159ed63809affa"), "12.18.1-windows_amd64": ("node-v12.18.1-win-x64.zip", "node-v12.18.1-win-x64", "93039ebfc7c5bfad168b015f77667757925070fff3ae84c3eb73348b3123a82a"), "12.18.2-darwin_amd64": ("node-v12.18.2-darwin-x64.tar.gz", "node-v12.18.2-darwin-x64", "6e6e7311943e4f3880db5038b8b8034a30469342fe436c8aaacf2997dfa305a6"), "12.18.2-linux_arm64": ("node-v12.18.2-linux-arm64.tar.xz", "node-v12.18.2-linux-arm64", "d7d3a05f36de9eb079b7b25e0fc1aaa0c960afdf36fb24b498f7303365eb945c"), "12.18.2-linux_amd64": ("node-v12.18.2-linux-x64.tar.xz", "node-v12.18.2-linux-x64", "b8dc634798ee783482c2ae1755bd7dff09d83fa7bb037cdc370b601d0a5e5cbb"), "12.18.2-windows_amd64": ("node-v12.18.2-win-x64.zip", "node-v12.18.2-win-x64", "91fdd5b5df16873c63541bc844c9eb66870d366b2076d114f9ab7528b5e2f9a3"), "12.18.3-darwin_amd64": ("node-v12.18.3-darwin-x64.tar.gz", "node-v12.18.3-darwin-x64", "af376caf114bdd5d7e566dbf7590e9077ffc01f9b2692eb2651f31d7219a30bb"), "12.18.3-linux_arm64": ("node-v12.18.3-linux-arm64.tar.xz", "node-v12.18.3-linux-arm64", "d330aab40029afc34f8b5d1abc2e67be233df4b31331cf08d538be2a666737bb"), "12.18.3-linux_amd64": ("node-v12.18.3-linux-x64.tar.xz", "node-v12.18.3-linux-x64", "b79e02e48d0a1ee4cd4ae138de97fda5413542f2a4f441a7d0e189697b8da563"), "12.18.3-windows_amd64": ("node-v12.18.3-win-x64.zip", "node-v12.18.3-win-x64", "1fcd30c09f0ac9fbecf45161519eff2cf621c199eef4663b1db41b3f2fef4041"), "13.0.0-darwin_amd64": ("node-v13.0.0-darwin-x64.tar.gz", "node-v13.0.0-darwin-x64", "612556a8c7e6b4cd08f6134b8afe5a05bf84c0121225fa9c542be1c98af04a35"), "13.0.0-linux_arm64": ("node-v13.0.0-linux-arm64.tar.xz", "node-v13.0.0-linux-arm64", "6ed882e17123861b5b81683de2b2c86be02c5916ef0beda04fd176329888fd12"), "13.0.0-linux_amd64": ("node-v13.0.0-linux-x64.tar.xz", "node-v13.0.0-linux-x64", "799d890f00a3a2a7415b813b286d32d38573df6525bc8ef80f40077cdd210d39"), "13.0.0-windows_amd64": ("node-v13.0.0-win-x64.zip", "node-v13.0.0-win-x64", "8ffcefde5e080d70790a9a2e1aab0724cc88b5526d5128b53fc59bf94f6ad5de"), "13.0.1-darwin_amd64": ("node-v13.0.1-darwin-x64.tar.gz", "node-v13.0.1-darwin-x64", "25621359a51ff218ecf4bb2ffc657815154230a967224f22b722840a2b9ad061"), "13.0.1-linux_arm64": ("node-v13.0.1-linux-arm64.tar.xz", "node-v13.0.1-linux-arm64", "ad6e051aede160d8be5cbab9c60a155b06a5696e8088d895e6eff3dd36f9a688"), "13.0.1-linux_amd64": ("node-v13.0.1-linux-x64.tar.xz", "node-v13.0.1-linux-x64", "d5657c19bb30b267bf2e0f2b61f6a96d8955aa30b69240f22d3fd2c65e123cf7"), "13.0.1-windows_amd64": ("node-v13.0.1-win-x64.zip", "node-v13.0.1-win-x64", "1a2552b630651e08e9027339f71a65fbe3944540f0875563ea25639a091e1f33"), "13.1.0-darwin_amd64": ("node-v13.1.0-darwin-x64.tar.gz", "node-v13.1.0-darwin-x64", "6501c1bcf2babb5b9c81dcff8b52021f726da8f6ee28df1637acade1a16c7d39"), "13.1.0-linux_arm64": ("node-v13.1.0-linux-arm64.tar.xz", "node-v13.1.0-linux-arm64", "646d597e6b0dc400429e46b703a5135c77bd71e653ea4c8254d0b60c17b6ec1d"), "13.1.0-linux_amd64": ("node-v13.1.0-linux-x64.tar.xz", "node-v13.1.0-linux-x64", "2eecb5a4b7975c3b406bee36b12c9a29e8bedf9553c88cad310b8f076db00881"), "13.1.0-windows_amd64": ("node-v13.1.0-win-x64.zip", "node-v13.1.0-win-x64", "d735e97bdeb7b74551b9d165c708a3fdea4dbb3801a65e70f6d6ae3539d48a03"), "13.2.0-darwin_amd64": ("node-v13.2.0-darwin-x64.tar.gz", "node-v13.2.0-darwin-x64", "2bcba358ef68ea21655728126c678063c60119e18e65d04f615d6b22dba8f7a5"), "13.2.0-linux_arm64": ("node-v13.2.0-linux-arm64.tar.xz", "node-v13.2.0-linux-arm64", "e6c4a5fe57585f69a20bd028275db31f43de421308e31d117f319b577210e527"), "13.2.0-linux_amd64": ("node-v13.2.0-linux-x64.tar.xz", "node-v13.2.0-linux-x64", "366df8a38b522a5899c3f48d8c9e359b3370495cf84867b2673dc10483adbdef"), "13.2.0-windows_amd64": ("node-v13.2.0-win-x64.zip", "node-v13.2.0-win-x64", "e2866a8f53c45bb544d7b00aed1e5fddbbd7071bd331b02e66a6ce7c38c6918c"), "13.3.0-darwin_amd64": ("node-v13.3.0-darwin-x64.tar.gz", "node-v13.3.0-darwin-x64", "187ea9028daa6d9abad9c1cbb4e12ba51427c3748da29eae616fa352c0f4cd49"), "13.3.0-linux_arm64": ("node-v13.3.0-linux-arm64.tar.xz", "node-v13.3.0-linux-arm64", "fb201a908bea36be828eee36a7cd898c67ad4ae6846982f393466e2b8b826c16"), "13.3.0-linux_amd64": ("node-v13.3.0-linux-x64.tar.xz", "node-v13.3.0-linux-x64", "b208393ae411bd55188e903171901765aaa8381c08155e4a7b34174737a1bc65"), "13.3.0-windows_amd64": ("node-v13.3.0-win-x64.zip", "node-v13.3.0-win-x64", "82e0f43aea81374a8028a7d3c9993245c4910ac95cd0f66ee5b29b940a6f3d93"), "13.4.0-darwin_amd64": ("node-v13.4.0-darwin-x64.tar.gz", "node-v13.4.0-darwin-x64", "4de08a89054416595228d6ff40fcf20c375d00556f2e95dfde8602cbb42c0b6e"), "13.4.0-linux_arm64": ("node-v13.4.0-linux-arm64.tar.xz", "node-v13.4.0-linux-arm64", "382d5fb2983ab55d495e42145e812b3859d2a311e426307fd373f47825d55fe9"), "13.4.0-linux_amd64": ("node-v13.4.0-linux-x64.tar.xz", "node-v13.4.0-linux-x64", "5cab49240c521efb80efd0a0bb3ba1071e5498c55ecbebd723d78648c91b1cc8"), "13.4.0-windows_amd64": ("node-v13.4.0-win-x64.zip", "node-v13.4.0-win-x64", "56de9ed20332cdf22bb9b048c3fb3977662ef2de9d2e8ac2d2a27d28e9be276f"), "13.5.0-darwin_amd64": ("node-v13.5.0-darwin-x64.tar.gz", "node-v13.5.0-darwin-x64", "3322c601dc032677e5b5f87f393d4b1d70073bcab24fe74378eff8eb49364001"), "13.5.0-linux_arm64": ("node-v13.5.0-linux-arm64.tar.xz", "node-v13.5.0-linux-arm64", "fe52f4e3a60a372138102da741e5b5d34310a74b3fc6f2000e4c254e3f0c4f51"), "13.5.0-linux_amd64": ("node-v13.5.0-linux-x64.tar.xz", "node-v13.5.0-linux-x64", "4d2b2cea13388658e95d8b2dc7ff918718155473ef6ef38928d92eb8cbbe210a"), "13.5.0-windows_amd64": ("node-v13.5.0-win-x64.zip", "node-v13.5.0-win-x64", "e286a84f2861b9f3c0290a9afbbecd09f303a39b2573af001ef8a4c1413eee7c"), "13.6.0-darwin_amd64": ("node-v13.6.0-darwin-x64.tar.gz", "node-v13.6.0-darwin-x64", "da13adb864777b322dda7af20410a9b0c63aa69de4b5574008d1e6910768bf69"), "13.6.0-linux_arm64": ("node-v13.6.0-linux-arm64.tar.xz", "node-v13.6.0-linux-arm64", "1f34ed8668207e03cb832763319a82b4c753839a3655207adc5bbe52f65e154a"), "13.6.0-linux_amd64": ("node-v13.6.0-linux-x64.tar.xz", "node-v13.6.0-linux-x64", "00f01315a867da16d1638f7a02966c608e344ac6c5b7d04d1fdae3138fa9d798"), "13.6.0-windows_amd64": ("node-v13.6.0-win-x64.zip", "node-v13.6.0-win-x64", "7fe37b34a4673a071bea52fcaf913ec422cf6fd79fd025bfb22de42ccc77f386"), "13.7.0-darwin_amd64": ("node-v13.7.0-darwin-x64.tar.gz", "node-v13.7.0-darwin-x64", "866ea9bdbd7b734c593af96b946397d9c7cb9c291aa8ea52a6a2af271b972169"), "13.7.0-linux_arm64": ("node-v13.7.0-linux-arm64.tar.xz", "node-v13.7.0-linux-arm64", "2823b199c7c4e6c547caf95139e28341444a5ffc52481a5ba704067291771579"), "13.7.0-linux_amd64": ("node-v13.7.0-linux-x64.tar.xz", "node-v13.7.0-linux-x64", "02578025b82de24f4cfb3ffeb3824990431d739d09220f2db9ef9f454f475470"), "13.7.0-windows_amd64": ("node-v13.7.0-win-x64.zip", "node-v13.7.0-win-x64", "26b41de81ead8f51de2964d7c7526533f46387ff436b61596e09d678bcd7503f"), "13.8.0-darwin_amd64": ("node-v13.8.0-darwin-x64.tar.gz", "node-v13.8.0-darwin-x64", "ae480e2b124cb55667763848b8ec0fde1bc35d5e0b76debe881034689a68eaea"), "13.8.0-linux_arm64": ("node-v13.8.0-linux-arm64.tar.xz", "node-v13.8.0-linux-arm64", "f1d4167a6911e42d836a5459c992cdaf35a03ab0700ea80831d7df5d706d1baf"), "13.8.0-linux_amd64": ("node-v13.8.0-linux-x64.tar.xz", "node-v13.8.0-linux-x64", "47a8cb675358f2ff534ad3d6709f14de0433f76d3af92cf389b8dcc78a1236ad"), "13.8.0-windows_amd64": ("node-v13.8.0-win-x64.zip", "node-v13.8.0-win-x64", "f198f3e4b120fc84b61d12e7222530c5bb9c6f864735bb41a8db1cf1b94a64c3"), "13.9.0-darwin_amd64": ("node-v13.9.0-darwin-x64.tar.gz", "node-v13.9.0-darwin-x64", "b2a5a539b9b2d1733bda301913c99d220968de801bf313b762fa932820ea797b"), "13.9.0-linux_arm64": ("node-v13.9.0-linux-arm64.tar.xz", "node-v13.9.0-linux-arm64", "c668afc06e4094b68ae758b823fc3244b34f0468fc0c2feee45278788989b8a1"), "13.9.0-linux_amd64": ("node-v13.9.0-linux-x64.tar.xz", "node-v13.9.0-linux-x64", "f1e093303468032a1ecb0e290e19b43bf7771d4efbf589560df0060149614272"), "13.9.0-windows_amd64": ("node-v13.9.0-win-x64.zip", "node-v13.9.0-win-x64", "ec0a55bb703906494e738cd3d09e3274b34f0a3fbe207b9e67502092ed017500"), "13.10.0-darwin_amd64": ("node-v13.10.0-darwin-x64.tar.gz", "node-v13.10.0-darwin-x64", "67269fb9061402e446bb61776be2e5d0ec330b5274326df77979698d05f503da"), "13.10.0-linux_arm64": ("node-v13.10.0-linux-arm64.tar.xz", "node-v13.10.0-linux-arm64", "adb145535d2e03fe508fa7a34897a130ba903d6f718a21cd29d1760e298f715b"), "13.10.0-linux_amd64": ("node-v13.10.0-linux-x64.tar.xz", "node-v13.10.0-linux-x64", "62081af005257d3db7ebd5a64b43f1a8e4a57bafd229be3acd7ce2704607eaac"), "13.10.0-windows_amd64": ("node-v13.10.0-win-x64.zip", "node-v13.10.0-win-x64", "d428b6d3e127716191fa6df630d03a25d3186fda1ede04a9a8d5c07e526dbb9e"), "13.10.1-darwin_amd64": ("node-v13.10.1-darwin-x64.tar.gz", "node-v13.10.1-darwin-x64", "a6a66fdc79e70267fc191f10ee045793240974e1268fdea6c2d28afbc1d635e8"), "13.10.1-linux_arm64": ("node-v13.10.1-linux-arm64.tar.xz", "node-v13.10.1-linux-arm64", "f73effcef784251e53b5e3938b8316c36bd49628c3588de7976e8569e560c12c"), "13.10.1-linux_amd64": ("node-v13.10.1-linux-x64.tar.xz", "node-v13.10.1-linux-x64", "69d69165282d88f321e751f03ee5d3370db65e5ca4c587af24994b12f31d4827"), "13.10.1-windows_amd64": ("node-v13.10.1-win-x64.zip", "node-v13.10.1-win-x64", "f9d0aac273a44dbd52dd8cdb3d6c684b68b860d128af58d77a0c08f39f51f229"), "13.11.0-darwin_amd64": ("node-v13.11.0-darwin-x64.tar.gz", "node-v13.11.0-darwin-x64", "2d87989fb1e0d425667c5ca9893cb3ecfb30cd3344d543870246d65f8d9b892f"), "13.11.0-linux_arm64": ("node-v13.11.0-linux-arm64.tar.xz", "node-v13.11.0-linux-arm64", "63ce9871b9802a1f021c84f282c63e1890524a32dc97d3e7a7ab8d52b4bde19e"), "13.11.0-linux_amd64": ("node-v13.11.0-linux-x64.tar.xz", "node-v13.11.0-linux-x64", "c127cf38f9a56d97646eb1fedb93712f304950c7143705de7180a701becc0fbb"), "13.11.0-windows_amd64": ("node-v13.11.0-win-x64.zip", "node-v13.11.0-win-x64", "dc93aa5a82988f741dca6f1869c7b1aeda6f339293d13a968279a6dc9fcc8dd0"), "13.12.0-darwin_amd64": ("node-v13.12.0-darwin-x64.tar.gz", "node-v13.12.0-darwin-x64", "1fe3103610e8eb66ae71872ea1b4e868a638292a4e7ad0e41976a9fe417a09c7"), "13.12.0-linux_arm64": ("node-v13.12.0-linux-arm64.tar.xz", "node-v13.12.0-linux-arm64", "2e8c12e575fcceb2d6f46eb3c50c6bfa98e91540bddaf91ca1c0fe739619ca0b"), "13.12.0-linux_amd64": ("node-v13.12.0-linux-x64.tar.xz", "node-v13.12.0-linux-x64", "95eb1188872e243323cbc31fc80048be3fdfdda91505c62c80c599281de357ed"), "13.12.0-windows_amd64": ("node-v13.12.0-win-x64.zip", "node-v13.12.0-win-x64", "de8445794ecbcfe895f4775417d1e2cc023e2212b1f5d4ff5cc0ed6875f7c911"), "13.13.0-darwin_amd64": ("node-v13.13.0-darwin-x64.tar.gz", "node-v13.13.0-darwin-x64", "28ae2abedafb250a9bbe706650fd79d2b25273f6445adcc1d85c777359dc5390"), "13.13.0-linux_arm64": ("node-v13.13.0-linux-arm64.tar.xz", "node-v13.13.0-linux-arm64", "eded8da4633134cae0766a2f6f3c2237f8e728df77895c85607acaca13216226"), "13.13.0-linux_amd64": ("node-v13.13.0-linux-x64.tar.xz", "node-v13.13.0-linux-x64", "41d60cda7422f53156711626d670f9b5079075b1ecc6736aea99319fe36c20a6"), "13.13.0-windows_amd64": ("node-v13.13.0-win-x64.zip", "node-v13.13.0-win-x64", "79f2a39c1047666f2bbf2efe53c069a38b8f6ef18d569bf338463aea1914b89d"), "13.14.0-darwin_amd64": ("node-v13.14.0-darwin-x64.tar.gz", "node-v13.14.0-darwin-x64", "a56eb353fecd45f731d74fc77c58dde052320c1bc272de9b03151fbaf962feaf"), "13.14.0-linux_arm64": ("node-v13.14.0-linux-arm64.tar.xz", "node-v13.14.0-linux-arm64", "e4736df097846bbe8195a185cc67ada3410a1f8993949e516bbf62b62198d2a7"), "13.14.0-linux_amd64": ("node-v13.14.0-linux-x64.tar.xz", "node-v13.14.0-linux-x64", "9ab808ba3872d58e827ea60a6e43a352f59361bc8eb36fe0327a587086b466f9"), "13.14.0-windows_amd64": ("node-v13.14.0-win-x64.zip", "node-v13.14.0-win-x64", "8c6e77fac5e911a2e70b6ca34804b3b59b6a3c685ab4e3b17756397df86063fa"), "14.0.0-darwin_amd64": ("node-v14.0.0-darwin-x64.tar.gz", "node-v14.0.0-darwin-x64", "4e50cec7aeef91c6d00d08a3bab938358da182984aa549c2aeab9868e3342f55"), "14.0.0-linux_arm64": ("node-v14.0.0-linux-arm64.tar.xz", "node-v14.0.0-linux-arm64", "29c612fcdb40133171959b269878138bbfe7723d46681f70e2017ee30134e7ad"), "14.0.0-linux_amd64": ("node-v14.0.0-linux-x64.tar.xz", "node-v14.0.0-linux-x64", "a2aaaa621074e1b56bb751bda53ce726319fac617587443371c0a7742481e5b6"), "14.0.0-windows_amd64": ("node-v14.0.0-win-x64.zip", "node-v14.0.0-win-x64", "e8f73d4f2e9935df929360c09ae932ceb316784a7450b256024af5d01fe29b75"), "14.1.0-darwin_amd64": ("node-v14.1.0-darwin-x64.tar.gz", "node-v14.1.0-darwin-x64", "7f08bd365df4e7a5625ad393257f48e8cd79f77391ab87a64426b0c6448dd226"), "14.1.0-linux_arm64": ("node-v14.1.0-linux-arm64.tar.xz", "node-v14.1.0-linux-arm64", "9dd3a4867f679f40075e2a364d3b3566702139274da9fcd59a182198ff7c7b52"), "14.1.0-linux_amd64": ("node-v14.1.0-linux-x64.tar.xz", "node-v14.1.0-linux-x64", "959fab0c8ae0830f1ab987699cd2941cab97169991630a2e0c99db7c144f9e42"), "14.1.0-windows_amd64": ("node-v14.1.0-win-x64.zip", "node-v14.1.0-win-x64", "1d3890d0d2f996cce57bcb0206e49b67233623e3cdb50eee77b8acc8f006b955"), "14.2.0-darwin_amd64": ("node-v14.2.0-darwin-x64.tar.gz", "node-v14.2.0-darwin-x64", "2447241aefe71dea8ba1552549e4df2e894d1ac12203630db3af63d4ae35c016"), "14.2.0-linux_arm64": ("node-v14.2.0-linux-arm64.tar.xz", "node-v14.2.0-linux-arm64", "4587d2c52cd348094bd46ee4ee8cdfeb549462ead9b4aadc9cfc3c5fc3ba7215"), "14.2.0-linux_amd64": ("node-v14.2.0-linux-x64.tar.xz", "node-v14.2.0-linux-x64", "468cbd92271da8c0cacaa3fa432a73a332e398bade8ad7359a94aa8ab3cc3cca"), "14.2.0-windows_amd64": ("node-v14.2.0-win-x64.zip", "node-v14.2.0-win-x64", "99085f45a894e257123d7c729113cc00ed1413df432dbdce5fe53867e7c53b11"), "14.3.0-darwin_amd64": ("node-v14.3.0-darwin-x64.tar.gz", "node-v14.3.0-darwin-x64", "fd6a44303646f28b7e7577de687c2681cb565bef534e84deef44202e7919d7f3"), "14.3.0-linux_arm64": ("node-v14.3.0-linux-arm64.tar.xz", "node-v14.3.0-linux-arm64", "53bb110ea135ae3c819f535373ce1b779e86c7aa49a9b93fc5f26969a72365d2"), "14.3.0-linux_amd64": ("node-v14.3.0-linux-x64.tar.xz", "node-v14.3.0-linux-x64", "17236db7b9447080b58c2e50937982c386fe8a60e644b8d7f23e546068a8acba"), "14.3.0-windows_amd64": ("node-v14.3.0-win-x64.zip", "node-v14.3.0-win-x64", "07bebc231dd8d773ab41cdcfbcb8b48e2336fbee20deb961b4300b9ba86afa04"), "14.4.0-darwin_amd64": ("node-v14.4.0-darwin-x64.tar.gz", "node-v14.4.0-darwin-x64", "d95eaa6950d67895b5cdd0e2f913d2c44034178234f0cb7436c3397b54f64023"), "14.4.0-linux_arm64": ("node-v14.4.0-linux-arm64.tar.xz", "node-v14.4.0-linux-arm64", "9c9f84589b7bc6a05ac12a137e5097a5adb20b5c63ae9e4e912942da2c06d99d"), "14.4.0-linux_amd64": ("node-v14.4.0-linux-x64.tar.xz", "node-v14.4.0-linux-x64", "d65a9a8a547bfe67c6c08dae733a3e5a846700d5377c5f150164cc6bb5f6a039"), "14.4.0-windows_amd64": ("node-v14.4.0-win-x64.zip", "node-v14.4.0-win-x64", "a4bac45af8252f6b677a79ed19be4913f4939c4509fb08b6f14f972597550bbe"), "14.5.0-darwin_amd64": ("node-v14.5.0-darwin-x64.tar.gz", "node-v14.5.0-darwin-x64", "47dfd88abcd4d6d6f7b7516c95645f9760ba9c93d04b51a92895584c945b2953"), "14.5.0-linux_arm64": ("node-v14.5.0-linux-arm64.tar.xz", "node-v14.5.0-linux-arm64", "c5ab67fbc73ea8858b4a989b6e92d6630decfc47c4703be7bcda3c6e39adff0b"), "14.5.0-linux_amd64": ("node-v14.5.0-linux-x64.tar.xz", "node-v14.5.0-linux-x64", "8b0235c318de87ecf8eec9a39e5c5df80757dbec571addda7123276dfcb34d5b"), "14.5.0-windows_amd64": ("node-v14.5.0-win-x64.zip", "node-v14.5.0-win-x64", "ab5728c85ece98210036fc9c38984fa2410a882dd99075b3d5bece58e4cc6ea2"), "14.6.0-darwin_amd64": ("node-v14.6.0-darwin-x64.tar.gz", "node-v14.6.0-darwin-x64", "7907a18605b900ce977ff4c7e67f7507f937f85738659865d31779c3b2990756"), "14.6.0-linux_arm64": ("node-v14.6.0-linux-arm64.tar.xz", "node-v14.6.0-linux-arm64", "853f2c99f0e5fa65e6f222821e29c9d1a49f2d358a97c1de080ddf5c74e4ec70"), "14.6.0-linux_amd64": ("node-v14.6.0-linux-x64.tar.xz", "node-v14.6.0-linux-x64", "b8a39b2dac8e200e96586356c5525d20b0b43dba8bf9f7eb4e8c2d5366be2bb2"), "14.6.0-windows_amd64": ("node-v14.6.0-win-x64.zip", "node-v14.6.0-win-x64", "57ea75a7ec70cc8158e6f9774f9728fb9e3d08212b1af3e206db2de46ca304ca"), "14.7.0-darwin_amd64": ("node-v14.7.0-darwin-x64.tar.gz", "node-v14.7.0-darwin-x64", "47c94ec84706fd6851db27af54abdab569941fcbfcdc28e386d8fa7d49c6a619"), "14.7.0-linux_arm64": ("node-v14.7.0-linux-arm64.tar.xz", "node-v14.7.0-linux-arm64", "12540328aeb5baa524a4e9c3b493b5eceb54cfa630f8bce64c19e674871e2f4b"), "14.7.0-linux_amd64": ("node-v14.7.0-linux-x64.tar.xz", "node-v14.7.0-linux-x64", "48929b03deb2915b64ba67355d2deffeed3c8df798b0c5f2b821ffc7a8116a23"), "14.7.0-windows_amd64": ("node-v14.7.0-win-x64.zip", "node-v14.7.0-win-x64", "a899693c9a31089a1eda14b1e613cf8cd60361e6e574b351551d832cf864c8f8"), "14.8.0-darwin_amd64": ("node-v14.8.0-darwin-x64.tar.gz", "node-v14.8.0-darwin-x64", "b6db32f2ff37475ae68502c76fc777a604cbc589bf57158fb4eed4db9ac5f62d"), "14.8.0-linux_arm64": ("node-v14.8.0-linux-arm64.tar.xz", "node-v14.8.0-linux-arm64", "0c66a6468c36552c00d45cff0eaa924240f3d2e625be0306f33f8b0d81af4224"), "14.8.0-linux_amd64": ("node-v14.8.0-linux-x64.tar.xz", "node-v14.8.0-linux-x64", "c7761fe5d56d045d1540b1f0bc8a20d7edf03e6fd695ee5fbffc1dd9416ccc75"), "14.8.0-windows_amd64": ("node-v14.8.0-win-x64.zip", "node-v14.8.0-win-x64", "848ca582bdf8b7fdc21a38d9f3887a45bdf6381b04549fc0f918852889157c9a")} +
      node_urls + custom list of URLs to use to download NodeJS + +Each entry is a template for downloading a node distribution. + +The {version} parameter is substituted with the node_version attribute, +and {filename} with the matching entry from the node_repositories attribute. + List of stringsoptional + ["https://mirror.bazel.build/nodejs.org/dist/v{version}/{filename}", "https://nodejs.org/dist/v{version}/{filename}"] +
      node_version + the specific version of NodeJS to install or, if vendored_node is specified, the vendored version of node + Stringoptional + "12.13.0" +
      package_json + (ADVANCED, not recommended) + a list of labels, which indicate the package.json files that will be installed + when you manually run the package manager, e.g. with + bazel run @nodejs//:yarn_node_repositories or bazel run @nodejs//:npm_node_repositories install. + If you use bazel-managed dependencies, you should omit this attribute. + List of labelsoptional + [] +
      vendored_node + the local path to a pre-installed NodeJS runtime. + +If set then also set node_version to the version that of node that is vendored. +Bazel will automatically turn on features such as --preserve-symlinks-main if they +are supported by the node version being used. + Labeloptional + None +
      vendored_yarn + the local path to a pre-installed yarn tool + Labeloptional + None +
      yarn_repositories + Custom list of yarn repositories to use. + +Dictionary mapping Yarn versions to their corresponding (filename, strip_prefix, sha256) tuples. + Dictionary: String -> List of stringsoptional + {"1.3.2": ("yarn-v1.3.2.tar.gz", "yarn-v1.3.2", "6cfe82e530ef0837212f13e45c1565ba53f5199eec2527b85ecbcd88bf26821d"), "1.5.1": ("yarn-v1.5.1.tar.gz", "yarn-v1.5.1", "cd31657232cf48d57fdbff55f38bfa058d2fb4950450bd34af72dac796af4de1"), "1.6.0": ("yarn-v1.6.0.tar.gz", "yarn-v1.6.0", "a57b2fdb2bfeeb083d45a883bc29af94d5e83a21c25f3fc001c295938e988509"), "1.9.2": ("yarn-v1.9.2.tar.gz", "yarn-v1.9.2", "3ad69cc7f68159a562c676e21998eb21b44138cae7e8fe0749a7d620cf940204"), "1.9.4": ("yarn-v1.9.4.tar.gz", "yarn-v1.9.4", "7667eb715077b4bad8e2a832e7084e0e6f1ba54d7280dc573c8f7031a7fb093e"), "1.12.1": ("yarn-v1.12.1.tar.gz", "yarn-v1.12.1", "09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d"), "1.12.3": ("yarn-v1.12.3.tar.gz", "yarn-v1.12.3", "02cd4b589ec22c4bdbd2bc5ebbfd99c5e99b07242ad68a539cb37896b93a24f2"), "1.13.0": ("yarn-v1.13.0.tar.gz", "yarn-v1.13.0", "125d40ebf621ebb08e3f66a618bd2cc5cd77fa317a312900a1ab4360ed38bf14"), "1.19.1": ("yarn-v1.19.1.tar.gz", "yarn-v1.19.1", "34293da6266f2aae9690d59c2d764056053ff7eebc56b80b8df05010c3da9343"), "1.22.4": ("yarn-v1.22.4.tar.gz", "yarn-v1.22.4", "bc5316aa110b2f564a71a3d6e235be55b98714660870c5b6b2d2d3f12587fb58")} +
      yarn_urls + custom list of URLs to use to download Yarn + +Each entry is a template, similar to the node_urls attribute, using yarn_version and yarn_repositories in the substitutions. + List of stringsoptional + ["https://mirror.bazel.build/github.com/yarnpkg/yarn/releases/download/v{version}/{filename}", "https://github.com/yarnpkg/yarn/releases/download/v{version}/{filename}"] +
      yarn_version + the specific version of Yarn to install + Stringoptional + "1.19.1" +
      + +

      nodejs_binary

      + +

      Runs some JavaScript code in NodeJS.

      + +
      +nodejs_binary(name, configuration_env_vars, data, default_env_vars, entry_point, node_modules,
      +              templated_args)
      +
      + +

      ATTRIBUTES

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this target. + Namerequired + +
      configuration_env_vars + Pass these configuration environment variables to the resulting binary. + Chooses a subset of the configuration environment variables (taken from ctx.var), which also + includes anything specified via the --define flag. + Note, this can lead to different outputs produced by this rule. + List of stringsoptional + [] +
      data + Runtime dependencies which may be loaded during execution. + List of labelsoptional + [] +
      default_env_vars + Default environment variables that are added to configuration_env_vars. + +This is separate from the default of configuration_env_vars so that a user can set configuration_env_vars +without losing the defaults that should be set in most cases. + +The set of default environment variables is: + +- VERBOSE_LOGS: use by some rules & tools to turn on debug output in their logs +- NODE_DEBUG: used by node.js itself to print more logs +- RUNFILES_LIB_DEBUG: print diagnostic message from Bazel runfiles.bash helper + List of stringsoptional + ["VERBOSE_LOGS", "NODE_DEBUG", "RUNFILES_LIB_DEBUG"] +
      entry_point + The script which should be executed first, usually containing a main function. + +If the entry JavaScript file belongs to the same package (as the BUILD file), +you can simply reference it by its relative name to the package directory: + + +
      nodejs_binary(
      +    name = "my_binary",
      +    ...
      +    entry_point = ":file.js",
      +)
      + + +You can specify the entry point as a typescript file so long as you also include +the ts_library target in data: + + +
      ts_library(
      +    name = "main",
      +    srcs = ["main.ts"],
      +)
      +
      +nodejs_binary(
      +    name = "bin",
      +    data = [":main"]
      +    entry_point = ":main.ts",
      +)
      + + +The rule will use the corresponding .js output of the ts_library rule as the entry point. + +If the entry point target is a rule, it should produce a single JavaScript entry file that will be passed to the nodejs_binary rule. +For example: + + +
      filegroup(
      +    name = "entry_file",
      +    srcs = ["main.js"],
      +)
      +
      +nodejs_binary(
      +    name = "my_binary",
      +    entry_point = ":entry_file",
      +)
      + + +The entry_point can also be a label in another workspace: + + +
      nodejs_binary(
      +    name = "history-server",
      +    entry_point = "@npm//:node_modules/history-server/modules/cli.js",
      +    data = ["@npm//history-server"],
      +)
      + +
      Labelrequired + +
      node_modules + The npm packages which should be available to require() during + execution. + +This attribute is DEPRECATED. As of version 0.13.0 the recommended approach +to npm dependencies is to use fine grained npm dependencies which are setup +with the yarn_install or npm_install rules. For example, in targets +that used a //:node_modules filegroup, + + +
      nodejs_binary(
      +    name = "my_binary",
      +    ...
      +    node_modules = "//:node_modules",
      +)
      + + +which specifies all files within the //:node_modules filegroup +to be inputs to the my_binary. Using fine grained npm dependencies, +my_binary is defined with only the npm dependencies that are +needed: + + +
      nodejs_binary(
      +    name = "my_binary",
      +    ...
      +    data = [
      +        "@npm//foo",
      +        "@npm//bar",
      +        ...
      +    ],
      +)
      + + +In this case, only the foo and bar npm packages and their +transitive deps are includes as inputs to the my_binary target +which reduces the time required to setup the runfiles for this +target (see https://github.com/bazelbuild/bazel/issues/5153). + +The @npm external repository and the fine grained npm package +targets are setup using the yarn_install or npm_install rule +in your WORKSPACE file: + +yarn_install( + name = "npm", + package_json = "//:package.json", + yarn_lock = "//:yarn.lock", +) + +For other rules such as jasmine_node_test, fine grained +npm dependencies are specified in the deps attribute: + + +
      jasmine_node_test(
      +    name = "my_test",
      +    ...
      +    deps = [
      +        "@npm//jasmine",
      +        "@npm//foo",
      +        "@npm//bar",
      +        ...
      +    ],
      +)
      + +
      Labeloptional + //:node_modules_none +
      templated_args + Arguments which are passed to every execution of the program. + To pass a node startup option, prepend it with --node_options=, e.g. + --node_options=--preserve-symlinks. + +Subject to 'Make variable' substitution. See https://docs.bazel.build/versions/master/be/make-variables.html. + +1. Subject to predefined source/output path variables substitutions. + +The predefined variables execpath, execpaths, rootpath, rootpaths, location, and locations take +label parameters (e.g. $(execpath //foo:bar)) and substitute the file paths denoted by that label. + +See https://docs.bazel.build/versions/master/be/make-variables.html#predefined_label_variables for more info. + +NB: This $(location) substition returns the manifest file path which differs from the *_binary & *_test +args and genrule bazel substitions. This will be fixed in a future major release. +See docs string of expand_location_into_runfiles macro in internal/common/expand_into_runfiles.bzl +for more info. + +The recommended approach is to now use $(rootpath) where you previously used $(location). + +To get from a $(rootpath) to the absolute path that $$(rlocation $(location)) returned you can either use +$$(rlocation $(rootpath)) if you are in the templated_args of a nodejs_binary or nodejs_test: + +BUILD.bazel: + +
      nodejs_test(
      +    name = "my_test",
      +    data = [":bootstrap.js"],
      +    templated_args = ["--node_options=--require=$$(rlocation $(rootpath :bootstrap.js))"],
      +)
      + + +or if you're in the context of a .js script you can pass the $(rootpath) as an argument to the script +and use the javascript runfiles helper to resolve to the absolute path: + +BUILD.bazel: + +
      nodejs_test(
      +    name = "my_test",
      +    data = [":some_file"],
      +    entry_point = ":my_test.js",
      +    templated_args = ["$(rootpath :some_file)"],
      +)
      + + +my_test.js + +
      const runfiles = require(process.env['BAZEL_NODE_RUNFILES_HELPER']);
      +const args = process.argv.slice(2);
      +const some_file = runfiles.resolveWorkspaceRelative(args[0]);
      + + +NB: Bazel will error if it sees the single dollar sign $(rlocation path) in templated_args as it will try to +expand $(rlocation) since we now expand predefined & custom "make" variables such as $(COMPILATION_MODE), +$(BINDIR) & $(TARGET_CPU) using ctx.expand_make_variables. See https://docs.bazel.build/versions/master/be/make-variables.html. + +To prevent expansion of $(rlocation) write it as $$(rlocation). Bazel understands $$ to be +the string literal $ and the expansion results in $(rlocation) being passed as an arg instead +of being expanded. $(rlocation) is then evaluated by the bash node launcher script and it calls +the rlocation function in the runfiles.bash helper. For example, the templated arg +$$(rlocation $(rootpath //:some_file)) is expanded by Bazel to $(rlocation ./some_file) which +is then converted in bash to the absolute path of //:some_file in runfiles by the runfiles.bash helper +before being passed as an argument to the program. + +NB: nodejs_binary and nodejs_test will preserve the legacy behavior of $(rlocation) so users don't +need to update to $$(rlocation). This may be changed in the future. + +2. Subject to predefined variables & custom variable substitutions. + +Predefined "Make" variables such as $(COMPILATION_MODE) and $(TARGET_CPU) are expanded. +See https://docs.bazel.build/versions/master/be/make-variables.html#predefined_variables. + +Custom variables are also expanded including variables set through the Bazel CLI with --define=SOME_VAR=SOME_VALUE. +See https://docs.bazel.build/versions/master/be/make-variables.html#custom_variables. + +Predefined genrule variables are not supported in this context. +
      List of stringsoptional + [] +
      + +

      nodejs_test

      + +

      Identical to nodejs_binary, except this can be used with bazel test as well. +When the binary returns zero exit code, the test passes; otherwise it fails.

      + +

      nodejs_test is a convenient way to write a novel kind of test based on running +your own test runner. For example, the ts-api-guardian library has a way to +assert the public API of a TypeScript program, and uses nodejs_test here: +https://github.com/angular/angular/blob/master/tools/ts-api-guardian/index.bzl

      + +

      If you just want to run a standard test using a test runner from npm, use the generated +*_test target created by npm_install/yarn_install, such as mocha_test. +Some test runners like Karma and Jasmine have custom rules with added features, e.g. jasmine_node_test.

      + +

      Bazel always runs tests with a working directory set to your workspace root. +If your test needs to run in a different directory, you can write a process.chdir helper script +and invoke it before the test with a --require argument, like +templated_args = ["--node_options=--require=./$(rootpath chdir.js)"]. +See rules_nodejs/internal/node/test/chdir for an example.

      + +

      To debug a Node.js test, we recommend saving a group of flags together in a “config”. +Put this in your tools/bazel.rc so it’s shared with your team:

      + +
      # Enable debugging tests with --config=debug
      +test:debug --test_arg=--node_options=--inspect-brk --test_output=streamed --test_strategy=exclusive --test_timeout=9999 --nocache_test_results
      + +

      Now you can add --config=debug to any bazel test command line. +The runtime will pause before executing the program, allowing you to connect a +remote debugger.

      + +
      +nodejs_test(name, configuration_env_vars, data, default_env_vars, entry_point, expected_exit_code,
      +            node_modules, templated_args)
      +
      + +

      ATTRIBUTES

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this target. + Namerequired + +
      configuration_env_vars + Pass these configuration environment variables to the resulting binary. + Chooses a subset of the configuration environment variables (taken from ctx.var), which also + includes anything specified via the --define flag. + Note, this can lead to different outputs produced by this rule. + List of stringsoptional + [] +
      data + Runtime dependencies which may be loaded during execution. + List of labelsoptional + [] +
      default_env_vars + Default environment variables that are added to configuration_env_vars. + +This is separate from the default of configuration_env_vars so that a user can set configuration_env_vars +without losing the defaults that should be set in most cases. + +The set of default environment variables is: + +- VERBOSE_LOGS: use by some rules & tools to turn on debug output in their logs +- NODE_DEBUG: used by node.js itself to print more logs +- RUNFILES_LIB_DEBUG: print diagnostic message from Bazel runfiles.bash helper + List of stringsoptional + ["VERBOSE_LOGS", "NODE_DEBUG", "RUNFILES_LIB_DEBUG"] +
      entry_point + The script which should be executed first, usually containing a main function. + +If the entry JavaScript file belongs to the same package (as the BUILD file), +you can simply reference it by its relative name to the package directory: + + +
      nodejs_binary(
      +    name = "my_binary",
      +    ...
      +    entry_point = ":file.js",
      +)
      + + +You can specify the entry point as a typescript file so long as you also include +the ts_library target in data: + + +
      ts_library(
      +    name = "main",
      +    srcs = ["main.ts"],
      +)
      +
      +nodejs_binary(
      +    name = "bin",
      +    data = [":main"]
      +    entry_point = ":main.ts",
      +)
      + + +The rule will use the corresponding .js output of the ts_library rule as the entry point. + +If the entry point target is a rule, it should produce a single JavaScript entry file that will be passed to the nodejs_binary rule. +For example: + + +
      filegroup(
      +    name = "entry_file",
      +    srcs = ["main.js"],
      +)
      +
      +nodejs_binary(
      +    name = "my_binary",
      +    entry_point = ":entry_file",
      +)
      + + +The entry_point can also be a label in another workspace: + + +
      nodejs_binary(
      +    name = "history-server",
      +    entry_point = "@npm//:node_modules/history-server/modules/cli.js",
      +    data = ["@npm//history-server"],
      +)
      + +
      Labelrequired + +
      expected_exit_code + The expected exit code for the test. Defaults to 0. + Integeroptional + 0 +
      node_modules + The npm packages which should be available to require() during + execution. + +This attribute is DEPRECATED. As of version 0.13.0 the recommended approach +to npm dependencies is to use fine grained npm dependencies which are setup +with the yarn_install or npm_install rules. For example, in targets +that used a //:node_modules filegroup, + + +
      nodejs_binary(
      +    name = "my_binary",
      +    ...
      +    node_modules = "//:node_modules",
      +)
      + + +which specifies all files within the //:node_modules filegroup +to be inputs to the my_binary. Using fine grained npm dependencies, +my_binary is defined with only the npm dependencies that are +needed: + + +
      nodejs_binary(
      +    name = "my_binary",
      +    ...
      +    data = [
      +        "@npm//foo",
      +        "@npm//bar",
      +        ...
      +    ],
      +)
      + + +In this case, only the foo and bar npm packages and their +transitive deps are includes as inputs to the my_binary target +which reduces the time required to setup the runfiles for this +target (see https://github.com/bazelbuild/bazel/issues/5153). + +The @npm external repository and the fine grained npm package +targets are setup using the yarn_install or npm_install rule +in your WORKSPACE file: + +yarn_install( + name = "npm", + package_json = "//:package.json", + yarn_lock = "//:yarn.lock", +) + +For other rules such as jasmine_node_test, fine grained +npm dependencies are specified in the deps attribute: + + +
      jasmine_node_test(
      +    name = "my_test",
      +    ...
      +    deps = [
      +        "@npm//jasmine",
      +        "@npm//foo",
      +        "@npm//bar",
      +        ...
      +    ],
      +)
      + +
      Labeloptional + //:node_modules_none +
      templated_args + Arguments which are passed to every execution of the program. + To pass a node startup option, prepend it with --node_options=, e.g. + --node_options=--preserve-symlinks. + +Subject to 'Make variable' substitution. See https://docs.bazel.build/versions/master/be/make-variables.html. + +1. Subject to predefined source/output path variables substitutions. + +The predefined variables execpath, execpaths, rootpath, rootpaths, location, and locations take +label parameters (e.g. $(execpath //foo:bar)) and substitute the file paths denoted by that label. + +See https://docs.bazel.build/versions/master/be/make-variables.html#predefined_label_variables for more info. + +NB: This $(location) substition returns the manifest file path which differs from the *_binary & *_test +args and genrule bazel substitions. This will be fixed in a future major release. +See docs string of expand_location_into_runfiles macro in internal/common/expand_into_runfiles.bzl +for more info. + +The recommended approach is to now use $(rootpath) where you previously used $(location). + +To get from a $(rootpath) to the absolute path that $$(rlocation $(location)) returned you can either use +$$(rlocation $(rootpath)) if you are in the templated_args of a nodejs_binary or nodejs_test: + +BUILD.bazel: + +
      nodejs_test(
      +    name = "my_test",
      +    data = [":bootstrap.js"],
      +    templated_args = ["--node_options=--require=$$(rlocation $(rootpath :bootstrap.js))"],
      +)
      + + +or if you're in the context of a .js script you can pass the $(rootpath) as an argument to the script +and use the javascript runfiles helper to resolve to the absolute path: + +BUILD.bazel: + +
      nodejs_test(
      +    name = "my_test",
      +    data = [":some_file"],
      +    entry_point = ":my_test.js",
      +    templated_args = ["$(rootpath :some_file)"],
      +)
      + + +my_test.js + +
      const runfiles = require(process.env['BAZEL_NODE_RUNFILES_HELPER']);
      +const args = process.argv.slice(2);
      +const some_file = runfiles.resolveWorkspaceRelative(args[0]);
      + + +NB: Bazel will error if it sees the single dollar sign $(rlocation path) in templated_args as it will try to +expand $(rlocation) since we now expand predefined & custom "make" variables such as $(COMPILATION_MODE), +$(BINDIR) & $(TARGET_CPU) using ctx.expand_make_variables. See https://docs.bazel.build/versions/master/be/make-variables.html. + +To prevent expansion of $(rlocation) write it as $$(rlocation). Bazel understands $$ to be +the string literal $ and the expansion results in $(rlocation) being passed as an arg instead +of being expanded. $(rlocation) is then evaluated by the bash node launcher script and it calls +the rlocation function in the runfiles.bash helper. For example, the templated arg +$$(rlocation $(rootpath //:some_file)) is expanded by Bazel to $(rlocation ./some_file) which +is then converted in bash to the absolute path of //:some_file in runfiles by the runfiles.bash helper +before being passed as an argument to the program. + +NB: nodejs_binary and nodejs_test will preserve the legacy behavior of $(rlocation) so users don't +need to update to $$(rlocation). This may be changed in the future. + +2. Subject to predefined variables & custom variable substitutions. + +Predefined "Make" variables such as $(COMPILATION_MODE) and $(TARGET_CPU) are expanded. +See https://docs.bazel.build/versions/master/be/make-variables.html#predefined_variables. + +Custom variables are also expanded including variables set through the Bazel CLI with --define=SOME_VAR=SOME_VALUE. +See https://docs.bazel.build/versions/master/be/make-variables.html#custom_variables. + +Predefined genrule variables are not supported in this context. +
      List of stringsoptional + [] +
      + +

      npm_install

      + +

      Runs npm install during workspace setup.

      + +

      This rule will set the environment variable BAZEL_NPM_INSTALL to ‘1’ (unless it +set to another value in the environment attribute). Scripts may use to this to +check if yarn is being run by the npm_install repository rule.

      + +
      +npm_install(name, args, data, environment, included_files, manual_build_file_contents, package_json,
      +            package_lock_json, quiet, symlink_node_modules, timeout)
      +
      + +

      ATTRIBUTES

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this repository. + Namerequired + +
      args + Arguments passed to npm install. + +See npm CLI docs https://docs.npmjs.com/cli/install.html for complete list of supported arguments. + List of stringsoptional + [] +
      data + Data files required by this rule. + +If symlink_node_modules is True, this attribute is optional since the package manager +will run in your workspace folder. It is recommended, however, that all files that the +package manager depends on, such as .rc files or files used in postinstall, are added +symlink_node_modules is True so that the repository rule is rerun when any of these files +change. + +If symlink_node_modules is False, the package manager is run in the bazel external +repository so all files that the package manager depends on must be listed. + List of labelsoptional + [] +
      environment + Environment variables to set before calling the package manager. + Dictionary: String -> Stringoptional + {} +
      included_files + List of file extensions to be included in the npm package targets. + +For example, [".js", ".d.ts", ".proto", ".json", ""]. + +This option is useful to limit the number of files that are inputs +to actions that depend on npm package targets. See +https://github.com/bazelbuild/bazel/issues/5153. + +If set to an empty list then all files are included in the package targets. +If set to a list of extensions, only files with matching extensions are +included in the package targets. An empty string in the list is a special +string that denotes that files with no extensions such as README should +be included in the package targets. + +This attribute applies to both the coarse @wksp//:node_modules target +as well as the fine grained targets such as @wksp//foo. + List of stringsoptional + [] +
      manual_build_file_contents + Experimental attribute that can be used to override the generated BUILD.bazel file and set its contents manually. + +Can be used to work-around a bazel performance issue if the +default @wksp//:node_modules target has too many files in it. +See https://github.com/bazelbuild/bazel/issues/5153. If +you are running into performance issues due to a large +node_modules target it is recommended to switch to using +fine grained npm dependencies. + Stringoptional + "" +
      package_json + Labelrequired + +
      package_lock_json + Labelrequired + +
      quiet + If stdout and stderr should be printed to the terminal. + Booleanoptional + True +
      timeout + Maximum duration of the package manager execution in seconds. + Integeroptional + 3600 +
      + +

      pkg_npm

      + +

      The pkg_npm rule creates a directory containing a publishable npm artifact.

      + +

      Example:

      + +
      load("@build_bazel_rules_nodejs//:index.bzl", "pkg_npm")
      +
      +pkg_npm(
      +    name = "my_package",
      +    srcs = ["package.json"],
      +    deps = [":my_typescript_lib"],
      +    substitutions = {"//internal/": "//"},
      +)
      + +

      You can use a pair of // BEGIN-INTERNAL ... // END-INTERNAL comments to mark regions of files that should be elided during publishing. +For example:

      + +
      function doThing() {
      +    // BEGIN-INTERNAL
      +    // This is a secret internal-only comment
      +    doInternalOnlyThing();
      +    // END-INTERNAL
      +}
      + +

      With the Bazel stamping feature, pkg_npm will replace any placeholder version in your package with the actual version control tag. +See the stamping documentation

      + +

      Usage:

      + +

      pkg_npm yields three labels. Build the package directory using the default label:

      + +
      $ bazel build :my_package
      +Target //:my_package up-to-date:
      +  bazel-out/fastbuild/bin/my_package
      +$ ls -R bazel-out/fastbuild/bin/my_package
      + +

      Dry-run of publishing to npm, calling npm pack (it builds the package first if needed):

      + +
      $ bazel run :my_package.pack
      +INFO: Running command line: bazel-out/fastbuild/bin/my_package.pack
      +my-package-name-1.2.3.tgz
      +$ tar -tzf my-package-name-1.2.3.tgz
      + +

      Actually publish the package with npm publish (also builds first):

      + +
      # Check login credentials
      +$ bazel run @nodejs//:npm_node_repositories who
      +# Publishes the package
      +$ bazel run :my_package.publish
      + +

      You can pass arguments to npm by escaping them from Bazel using a double-hyphen, for example:

      + +

      bazel run my_package.publish -- --tag=next

      + +
      +pkg_npm(name, deps, nested_packages, node_context_data, package_name, replace_with_version, srcs,
      +        substitutions, vendor_external)
      +
      + +

      ATTRIBUTES

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this target. + Namerequired + +
      deps + Other targets which produce files that should be included in the package, such as rollup_bundle + List of labelsoptional + [] +
      nested_packages + Other pkg_npm rules whose content is copied into this package. + List of labelsoptional + [] +
      node_context_data + Internal use only + The dependencies of this attribute must provide: NodeContextInfo + Labeloptional + @build_bazel_rules_nodejs//internal:node_context_data +
      package_name + Optional package_name that this npm package may be imported as. + Stringoptional + "" +
      replace_with_version + If set this value is replaced with the version stamp data. + See the section on stamping in the README. + Stringoptional + "0.0.0-PLACEHOLDER" +
      srcs + Files inside this directory which are simply copied into the package. + List of labelsoptional + [] +
      substitutions + Key-value pairs which are replaced in all the files while building the package. + Dictionary: String -> Stringoptional + {} +
      vendor_external + External workspaces whose contents should be vendored into this workspace. + Avoids 'external/foo' path segments in the resulting package. + List of stringsoptional + [] +
      + +

      pkg_web

      + +

      Assembles a web application from source files.

      + +
      +pkg_web(name, additional_root_paths, srcs)
      +
      + +

      ATTRIBUTES

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this target. + Namerequired + +
      additional_root_paths + Path prefixes to strip off all srcs, in addition to the current package. Longest wins. + List of stringsoptional + [] +
      srcs + Files which should be copied into the package + List of labelsoptional + [] +
      + +

      yarn_install

      + +

      Runs yarn install during workspace setup.

      + +

      This rule will set the environment variable BAZEL_YARN_INSTALL to ‘1’ (unless it +set to another value in the environment attribute). Scripts may use to this to +check if yarn is being run by the yarn_install repository rule.

      + +
      +yarn_install(name, args, data, environment, included_files, manual_build_file_contents,
      +             package_json, quiet, symlink_node_modules, timeout, use_global_yarn_cache, yarn_lock)
      +
      + +

      ATTRIBUTES

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this repository. + Namerequired + +
      args + Arguments passed to yarn install. + +See yarn CLI docs https://yarnpkg.com/en/docs/cli/install for complete list of supported arguments. + List of stringsoptional + [] +
      data + Data files required by this rule. + +If symlink_node_modules is True, this attribute is optional since the package manager +will run in your workspace folder. It is recommended, however, that all files that the +package manager depends on, such as .rc files or files used in postinstall, are added +symlink_node_modules is True so that the repository rule is rerun when any of these files +change. + +If symlink_node_modules is False, the package manager is run in the bazel external +repository so all files that the package manager depends on must be listed. + List of labelsoptional + [] +
      environment + Environment variables to set before calling the package manager. + Dictionary: String -> Stringoptional + {} +
      included_files + List of file extensions to be included in the npm package targets. + +For example, [".js", ".d.ts", ".proto", ".json", ""]. + +This option is useful to limit the number of files that are inputs +to actions that depend on npm package targets. See +https://github.com/bazelbuild/bazel/issues/5153. + +If set to an empty list then all files are included in the package targets. +If set to a list of extensions, only files with matching extensions are +included in the package targets. An empty string in the list is a special +string that denotes that files with no extensions such as README should +be included in the package targets. + +This attribute applies to both the coarse @wksp//:node_modules target +as well as the fine grained targets such as @wksp//foo. + List of stringsoptional + [] +
      manual_build_file_contents + Experimental attribute that can be used to override the generated BUILD.bazel file and set its contents manually. + +Can be used to work-around a bazel performance issue if the +default @wksp//:node_modules target has too many files in it. +See https://github.com/bazelbuild/bazel/issues/5153. If +you are running into performance issues due to a large +node_modules target it is recommended to switch to using +fine grained npm dependencies. + Stringoptional + "" +
      package_json + Labelrequired + +
      quiet + If stdout and stderr should be printed to the terminal. + Booleanoptional + True +
      timeout + Maximum duration of the package manager execution in seconds. + Integeroptional + 3600 +
      use_global_yarn_cache + Use the global yarn cache on the system. + +The cache lets you avoid downloading packages multiple times. +However, it can introduce non-hermeticity, and the yarn cache can +have bugs. + +Disabling this attribute causes every run of yarn to have a unique +cache_directory. + +If True, this rule will pass --mutex network to yarn to ensure that +the global cache can be shared by parallelized yarn_install rules. + +If False, this rule will pass --cache-folder /path/to/external/repository/__yarn_cache +to yarn so that the local cache is contained within the external repository. + Booleanoptional + True +
      yarn_lock + Labelrequired + +
      + +

      check_bazel_version

      + +
      Verify the users Bazel version is at least the given one.
      +
      + +

      This can be used in rule implementations that depend on changes in Bazel, +to warn users about a mismatch between the rule and their installed Bazel +version.

      + +

      This should not be used in users WORKSPACE files. To locally pin your +Bazel version, just create the .bazelversion file in your workspace.

      + +
      +check_bazel_version(minimum_bazel_version, message)
      +
      + +

      PARAMETERS

      + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      minimum_bazel_version + a string indicating the minimum version + + +
      message + optional string to print to your users, could be used to help them update + + "" +
      + +

      copy_to_bin

      + +

      Copies a source file to bazel-bin at the same workspace-relative path.

      + +

      e.g. /foo/bar/a.txt -> /foo/bar/a.txt</code>

      + +

      This is useful to populate the output folder with all files needed at runtime, even +those which aren’t outputs of a Bazel rule.

      + +

      This way you can run a binary in the output folder (execroot or runfiles_root) +without that program needing to rely on a runfiles helper library or be aware that +files are divided between the source tree and the output tree.

      + +
      +copy_to_bin(name, srcs, kwargs)
      +
      + +

      PARAMETERS

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      name + Name of the rule. + + +
      srcs + A List of Labels. File(s) to to copy. + + +
      kwargs + further keyword arguments, e.g. visibility + + +
      + +

      generated_file_test

      + +

      Tests that a file generated by Bazel has identical content to a file in the workspace.

      + +

      This is useful for testing, where a “snapshot” or “golden” file is checked in, +so that you can code review changes to the generated output.

      + +
      +generated_file_test(name, generated, src, src_dbg, kwargs)
      +
      + +

      PARAMETERS

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      name + Name of the rule. + + +
      generated + a Label of the output file generated by another rule + + +
      src + Label of the source file in the workspace + + +
      src_dbg + if the build uses --compilation_mode dbg then some rules will produce different output. + In this case you can specify what the dbg version of the output should look like + + None +
      kwargs + extra arguments passed to the underlying nodejs_test or nodejs_binary + + +
      + +

      npm_package_bin

      + +

      Run an arbitrary npm package binary (e.g. a program under node_modules/.bin/*) under Bazel.

      + +

      It must produce outputs. If you just want to run a program with bazel run, use the nodejs_binary rule.

      + +

      This is like a genrule() except that it runs our launcher script that first +links the node_modules tree before running the program.

      + +

      Bazel always runs actions with a working directory set to your workspace root. +If your tool needs to run in a different directory, you can write a process.chdir helper script +and invoke it before the action with a --require argument, like +args = ["--node_options=--require=./$(execpath chdir.js)"] +See rules_nodejs/internal/node/test/chdir for an example.

      + +

      This is a great candidate to wrap with a macro, as documented: +https://docs.bazel.build/versions/master/skylark/macros.html#full-example

      + +
      +npm_package_bin(tool, package, package_bin, data, outs, args, output_dir, kwargs)
      +
      + +

      PARAMETERS

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      tool + a label for a binary to run, like @npm//terser/bin:terser. This is the longer form of package/package_bin. + Note that you can also refer to a binary in your local workspace. + + None +
      package + an npm package whose binary to run, like "terser". Assumes your node_modules are installed in a workspace called "npm" + + None +
      package_bin + the "bin" entry from package that should be run. By default package_bin is the same string as package + + None +
      data + similar to [genrule.srcs](https://docs.bazel.build/versions/master/be/general.html#genrule.srcs) + may also include targets that produce or reference npm packages which are needed by the tool + + [] +
      outs + similar to [genrule.outs](https://docs.bazel.build/versions/master/be/general.html#genrule.outs) + + [] +
      args + Command-line arguments to the tool. + + Subject to 'Make variable' substitution. See https://docs.bazel.build/versions/master/be/make-variables.html. + + 1. Predefined source/output path substitions is applied first: + + See https://docs.bazel.build/versions/master/be/make-variables.html#predefined_label_variables. + + Use $(execpath) $(execpaths) to expand labels to the execroot (where Bazel runs build actions). + + Use $(rootpath) $(rootpaths) to expand labels to the runfiles path that a built binary can use + to find its dependencies. + + Since npm_package_bin is used primarily for build actions, in most cases you'll want to + use $(execpath) or $(execpaths) to expand locations. + + Using $(location) and $(locations) expansions is not recommended as these are a synonyms + for either $(execpath) or $(rootpath) depending on the context. + + 2. "Make" variables are expanded second: + + Predefined "Make" variables such as $(COMPILATION_MODE) and $(TARGET_CPU) are expanded. + See https://docs.bazel.build/versions/master/be/make-variables.html#predefined_variables. + + Like genrule, you may also use some syntax sugar for locations. + + - $@: if you have only one output file, the location of the output + - $(@D): The output directory. If output_dir=False and there is only one file name in outs, this expands to the directory + containing that file. If there are multiple files, this instead expands to the package's root directory in the genfiles + tree, even if all generated files belong to the same subdirectory! If output_dir=True then this corresponds + to the output directory which is the $(RULEDIR)/{target_name}. + - $(RULEDIR): the root output directory of the rule, corresponding with its package + (can be used with output_dir=True or False) + + See https://docs.bazel.build/versions/master/be/make-variables.html#predefined_genrule_variables. + + Custom variables are also expanded including variables set through the Bazel CLI with --define=SOME_VAR=SOME_VALUE. + See https://docs.bazel.build/versions/master/be/make-variables.html#custom_variables. + + [] +
      output_dir + set to True if you want the output to be a directory + Exactly one of outs, output_dir may be used. + If you output a directory, there can only be one output, which will be a directory named the same as the target. + + False +
      kwargs + + +
      + +

      params_file

      + +

      Generates a UTF-8 encoded params file from a list of arguments.

      + +

      Handles variable substitutions for args.

      + +
      +params_file(name, out, args, data, newline, kwargs)
      +
      + +

      PARAMETERS

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      name + Name of the rule. + + +
      out + Path of the output file, relative to this package. + + +
      args + Arguments to concatenate into a params file. + + Subject to 'Make variable' substitution. See https://docs.bazel.build/versions/master/be/make-variables.html. + + 1. Subject to predefined source/output path variables substitutions. + + The predefined variables execpath, execpaths, rootpath, rootpaths, location, and locations take + label parameters (e.g. $(execpath //foo:bar)) and substitute the file paths denoted by that label. + + See https://docs.bazel.build/versions/master/be/make-variables.html#predefined_label_variables for more info. + + NB: This $(location) substition returns the manifest file path which differs from the *_binary & *_test + args and genrule bazel substitions. This will be fixed in a future major release. + See docs string of expand_location_into_runfiles macro in internal/common/expand_into_runfiles.bzl + for more info. + + 2. Subject to predefined variables & custom variable substitutions. + + Predefined "Make" variables such as $(COMPILATION_MODE) and $(TARGET_CPU) are expanded. + See https://docs.bazel.build/versions/master/be/make-variables.html#predefined_variables. + + Custom variables are also expanded including variables set through the Bazel CLI with --define=SOME_VAR=SOME_VALUE. + See https://docs.bazel.build/versions/master/be/make-variables.html#custom_variables. + + Predefined genrule variables are not supported in this context. + + [] +
      data + Data for $(location) expansions in args. + + [] +
      newline + Line endings to use. One of ["auto", "unix", "windows"]. + + "auto" for platform-determined + "unix" for LF + "windows" for CRLF + + "auto" +
      kwargs + + +
      + +

      DeclarationInfo

      + +
      +DeclarationInfo(declarations, transitive_declarations, type_blacklisted_declarations)
      +
      + +

      The DeclarationInfo provider allows JS rules to communicate typing information. +TypeScript’s .d.ts files are used as the interop format for describing types. +package.json files are included as well, as TypeScript needs to read the “typings” property.

      + +

      Do not create DeclarationInfo instances directly, instead use the declaration_info factory function.

      + +

      Note: historically this was a subset of the string-typed “typescript” provider.

      + +

      FIELDS

      + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      declarations + A depset of typings files produced by this rule
      transitive_declarations + A depset of typings files produced by this rule and all its transitive dependencies. +This prevents needing an aspect in rules that consume the typings, which improves performance.
      type_blacklisted_declarations + A depset of .d.ts files that we should not use to infer JSCompiler types (via tsickle)
      + +

      JSEcmaScriptModuleInfo

      + +
      +JSEcmaScriptModuleInfo(direct_sources, sources)
      +
      + +

      JavaScript files (and sourcemaps) that are intended to be consumed by downstream tooling.

      + +

      They should use modern syntax and ESModules. +These files should typically be named “foo.mjs”

      + +

      Historical note: this was the typescript.es6_sources output

      + +

      FIELDS

      + + + + + + + + + + + + + + + + + + +
      NameDescription
      direct_sources + Depset of direct JavaScript files and sourcemaps
      sources + Depset of direct and transitive JavaScript files and sourcemaps
      + +

      JSModuleInfo

      + +
      +JSModuleInfo(direct_sources, sources)
      +
      + +

      JavaScript files and sourcemaps.

      + +

      FIELDS

      + + + + + + + + + + + + + + + + + + +
      NameDescription
      direct_sources + Depset of direct JavaScript files and sourcemaps
      sources + Depset of direct and transitive JavaScript files and sourcemaps
      + +

      JSNamedModuleInfo

      + +
      +JSNamedModuleInfo(direct_sources, sources)
      +
      + +

      JavaScript files whose module name is self-contained.

      + +

      For example named AMD/UMD or goog.module format. +These files can be efficiently served with the concatjs bundler. +These outputs should be named “foo.umd.js” +(note that renaming it from “foo.js” doesn’t affect the module id)

      + +

      Historical note: this was the typescript.es5_sources output.

      + +

      FIELDS

      + + + + + + + + + + + + + + + + + + +
      NameDescription
      direct_sources + Depset of direct JavaScript files and sourcemaps
      sources + Depset of direct and transitive JavaScript files and sourcemaps
      + +

      LinkablePackageInfo

      + +
      +LinkablePackageInfo(files, package_name, path, _tslibrary)
      +
      + +

      The LinkablePackageInfo provider provides information to the linker for linking pkg_npm built packages

      + +

      FIELDS

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      files + Depset of files in this package (must all be contained within path)
      package_name + The package name. + +Should be the same as name field in the package's package.json. + +In the future, the linker may validate that the names match the name in a package.json file.
      path + The path to link to. + +Path must be relative to execroot/wksp. It can either an output dir path such as, + +bazel-out/<platform>-<build>/bin/path/to/package or +bazel-out/<platform>-<build>/bin/external/&llt;external_wksp>/path/to/package + +or a source file path such as, + +path/to/package or +external/<external_wksp>/path/to/package
      _tslibrary + For internal use only
      + +

      NodeContextInfo

      + +
      +NodeContextInfo(stamp)
      +
      + +

      Provides data about the build context, like config_setting’s

      + +

      FIELDS

      + + + + + + + + + + + + + + +
      NameDescription
      stamp + If stamping is enabled
      + +

      NodeRuntimeDepsInfo

      + +
      +NodeRuntimeDepsInfo(deps, pkgs)
      +
      + +

      Stores runtime dependencies of a nodejs_binary or nodejs_test

      + +

      These are files that need to be found by the node module resolver at runtime.

      + +

      Historically these files were passed using the Runfiles mechanism. +However runfiles has a big performance penalty of creating a symlink forest +with FS API calls for every file in node_modules. +It also causes there to be separate node_modules trees under each binary. This +prevents user-contributed modules passed as deps[] to a particular action from +being found by node module resolver, which expects everything in one tree.

      + +

      In node, this resolution is done dynamically by assuming a node_modules +tree will exist on disk, so we assume node actions/binary/test executions will +do the same.

      + +

      FIELDS

      + + + + + + + + + + + + + + + + + + +
      NameDescription
      deps + depset of runtime dependency labels
      pkgs + list of labels of packages that provide NpmPackageInfo
      + +

      NpmPackageInfo

      + +
      +NpmPackageInfo(direct_sources, sources, workspace)
      +
      + +

      Provides information about npm dependencies

      + +

      FIELDS

      + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      direct_sources + Depset of direct source files in this npm package
      sources + Depset of direct & transitive source files in this npm package and in its dependencies
      workspace + The workspace name that this npm package is provided from
      + +

      declaration_info

      + +

      Constructs a DeclarationInfo including all transitive files needed to type-check from DeclarationInfo providers in a list of deps.

      + +
      +declaration_info(declarations, deps)
      +
      + +

      PARAMETERS

      + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      declarations + list of typings files + + +
      deps + list of labels of dependencies where we should collect their DeclarationInfo to pass transitively + + [] +
      + +

      js_ecma_script_module_info

      + +

      Constructs a JSEcmaScriptModuleInfo including all transitive sources from JSEcmaScriptModuleInfo providers in a list of deps.

      + +

      Returns a single JSEcmaScriptModuleInfo.

      + +
      +js_ecma_script_module_info(sources, deps)
      +
      + +

      PARAMETERS

      + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      sources + + +
      deps + + [] +
      + +

      js_module_info

      + +

      Constructs a JSModuleInfo including all transitive sources from JSModuleInfo providers in a list of deps.

      + +

      Returns a single JSModuleInfo.

      + +
      +js_module_info(sources, deps)
      +
      + +

      PARAMETERS

      + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      sources + + +
      deps + + [] +
      + +

      js_named_module_info

      + +

      Constructs a JSNamedModuleInfo including all transitive sources from JSNamedModuleInfo providers in a list of deps.

      + +

      Returns a single JSNamedModuleInfo.

      + +
      +js_named_module_info(sources, deps)
      +
      + +

      PARAMETERS

      + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      sources + + +
      deps + + [] +
      + +

      run_node

      + +

      Helper to replace ctx.actions.run

      + +

      This calls node programs with a node_modules directory in place

      + +
      +run_node(ctx, inputs, arguments, executable, kwargs)
      +
      + +

      PARAMETERS

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      ctx + rule context from the calling rule implementation function + + +
      inputs + list or depset of inputs to the action + + +
      arguments + list or ctx.actions.Args object containing arguments to pass to the executable + + +
      executable + stringy representation of the executable this action will run, eg eg. "my_executable" rather than ctx.executable.my_executable + + +
      kwargs + all other args accepted by ctx.actions.run + + +
      + +

      node_modules_aspect

      + +
      +node_modules_aspect(name)
      +
      + +

      ASPECT ATTRIBUTES

      + + + + + + + + + + + + + + +
      NameType
      depsString
      + +

      ATTRIBUTES

      + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this target. Namerequired
      + + +
      +
      + + +
      +
      + +
      +
      +
      +
      +

      © 2020 Google

      +
      +
      +
      + +
      + + + + + + + + + + + + + + + diff --git a/docs/Built-ins.md b/docs/Built-ins.md index eb4527ff9c..4015ad55b1 100755 --- a/docs/Built-ins.md +++ b/docs/Built-ins.md @@ -1,88 +1,53 @@ --- title: Built-ins layout: default -stylesheet: docs +toc: true +nav: rule --- # Built-in rules -These rules are available without any npm installation, via the `WORKSPACE` install of the `build_bazel_rules_nodejs` workspace. This is necessary to bootstrap Bazel to run the package manager to download other rules from NPM. +These rules are available without any npm installation, via the WORKSPACE install of the build_bazel_rules_nodejs workspace. This is necessary to bootstrap Bazel to run the package manager to download other rules from NPM. -[name]: https://bazel.build/docs/build-ref.html#name -[label]: https://bazel.build/docs/build-ref.html#labels -[labels]: https://bazel.build/docs/build-ref.html#labels ## node_repositories To be run in user's WORKSPACE to install rules_nodejs dependencies. -This rule sets up node, npm, and yarn. +This rule sets up node, npm, and yarn. The versions of these tools can be specified in one of three ways + + +### Simplest Usage -The versions of these tools can be specified in one of three ways: -- Simplest Usage: Specify no explicit versions. This will download and use the latest NodeJS & Yarn that were available when the version of rules_nodejs you're using was released. -Note that you can skip calling `node_repositories` in your WORKSPACE file - if you later try to `yarn_install` or `npm_install`, +Note that you can skip calling node_repositories in your WORKSPACE file - if you later try to yarn_install or npm_install, we'll automatically select this simple usage for you. -- Forced version(s): -You can select the version of NodeJS and/or Yarn to download & use by specifying it when you call node_repositories, -using a value that matches a known version (see the default values) -- Using a custom version: -You can pass in a custom list of NodeJS and/or Yarn repositories and URLs for node_resositories to use. -- Using a local version: -To avoid downloads, you can check in vendored copies of NodeJS and/or Yarn and set vendored_node and or vendored_yarn -to point to those before calling node_repositories. You can also point to a location where node is installed on your computer, -but we don't recommend this because it leads to version skew between you, your coworkers, and your Continuous Integration environment. -It also ties your build to a single platform, preventing you from cross-compiling into a Linux docker image on Mac for example. - -See the [the repositories documentation](repositories.html) for how to use the resulting repositories. -## Creating dependency installation scripts for manually-managed dependencies - -You can optionally pass a `package_json` array to node_repositories. This lets you use Bazel's version of yarn or npm, yet always run the package manager yourself. -This is an advanced scenario you can use in place of the `npm_install` or `yarn_install` rules, but we don't recommend it, and might remove it in the future. - -Example: +### Forced version(s) -``` -load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories") -node_repositories(package_json = ["//:package.json", "//subpkg:package.json"]) -``` - -Running `bazel run @nodejs//:yarn_node_repositories` in this repo would create `/node_modules` and `/subpkg/node_modules`. - -Note that the dependency installation scripts will run in each subpackage indicated by the `package_json` attribute. - - - -### Usage +You can select the version of NodeJS and/or Yarn to download & use by specifying it when you call node_repositories, +using a value that matches a known version (see the default values) -``` -node_repositories(name, node_repositories, node_urls, node_version, package_json, preserve_symlinks, vendored_node, vendored_yarn, yarn_repositories, yarn_urls, yarn_version) -``` +### Using a custom version +You can pass in a custom list of NodeJS and/or Yarn repositories and URLs for node_resositories to use. -#### `name` -(*[name], mandatory*): A unique name for this repository. -#### `node_repositories` -(*Dictionary: String -> List of strings*): Custom list of node repositories to use +#### Custom NodeJS versions -A dictionary mapping NodeJS versions to sets of hosts and their corresponding (filename, strip_prefix, sha256) tuples. -You should list a node binary for every platform users have, likely Mac, Windows, and Linux. - -For example, +To specify custom NodeJS versions, use the node_repositories attribute -```python +{% highlight python %} node_repositories( node_repositories = { "10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e"), @@ -90,97 +55,37 @@ node_repositories( "10.10.0-windows_amd64": ("node-v10.10.0-win-x64.zip", "node-v10.10.0-win-x64", "70c46e6451798be9d052b700ce5dadccb75cf917f6bf0d6ed54344c856830cfb"), }, ) -``` - -Defaults to `{"8.0.0-darwin_amd64": ("node-v8.0.0-darwin-x64.tar.gz", "node-v8.0.0-darwin-x64", "6e4a66917e2c11d5adc537c899941c973ae586293352b8172a4f32be0b7f0300"), "8.0.0-linux_arm64": ("node-v8.0.0-linux-arm64.tar.xz", "node-v8.0.0-linux-arm64", "8d6eaefcc252055de54a666d4e00eec78caf2143cd7a13b63f109e9eb78a795e"), "8.0.0-linux_amd64": ("node-v8.0.0-linux-x64.tar.xz", "node-v8.0.0-linux-x64", "0a536bb83eeccca23626e5e5ead52563a641e4331c35e367662892921dc7e8a4"), "8.0.0-windows_amd64": ("node-v8.0.0-win-x64.zip", "node-v8.0.0-win-x64", "84410377118857674e0fb6e7bc7627ffb8cc67a72f162a050276b076e328a9bb"), "8.1.0-darwin_amd64": ("node-v8.1.0-darwin-x64.tar.gz", "node-v8.1.0-darwin-x64", "08af5f1a7441728cabf9b11af25da28ee1725903524968dd9621b885b13303c7"), "8.1.0-linux_arm64": ("node-v8.1.0-linux-arm64.tar.xz", "node-v8.1.0-linux-arm64", "adf2f517c9847cbb5904b282c0819526b5264c256477ed5e4b258584daa1a2ea"), "8.1.0-linux_amd64": ("node-v8.1.0-linux-x64.tar.xz", "node-v8.1.0-linux-x64", "1638a0083c6eee122cbbefdf39cb8bcc43cf19fedff331a0317b05fd38dcb6df"), "8.1.0-windows_amd64": ("node-v8.1.0-win-x64.zip", "node-v8.1.0-win-x64", "cee1fd1c828e8996824a2d9f9056dfae771b77c05b15ad015bc7f8800409215c"), "8.1.1-darwin_amd64": ("node-v8.1.1-darwin-x64.tar.gz", "node-v8.1.1-darwin-x64", "2f67890a5a46564672cfd4522cc00c7ac04d307e6a942ae1ad38b6aee94c29e2"), "8.1.1-linux_arm64": ("node-v8.1.1-linux-arm64.tar.xz", "node-v8.1.1-linux-arm64", "3971543f9d29f77ddb8f47a54e4b99422a822173599748ab7fcd9c35c8e25124"), "8.1.1-linux_amd64": ("node-v8.1.1-linux-x64.tar.xz", "node-v8.1.1-linux-x64", "6a735e77bdd21c92fe85ea5f9f567d0d6930fa33e0e111946b17cdb7efefb8d5"), "8.1.1-windows_amd64": ("node-v8.1.1-win-x64.zip", "node-v8.1.1-win-x64", "459f3b62e58f4fac3b9b5e49694855f338f3dcf2fcf955299ee2a47f7687625a"), "8.1.2-darwin_amd64": ("node-v8.1.2-darwin-x64.tar.gz", "node-v8.1.2-darwin-x64", "70f353449b19d6d36262f5e38f9cc23e80b2034c21ae48623a6a4890f513eb53"), "8.1.2-linux_arm64": ("node-v8.1.2-linux-arm64.tar.xz", "node-v8.1.2-linux-arm64", "d468ac671047a5a5edb6edd34a9a625645505551c35ef73e2102c504535a09d4"), "8.1.2-linux_amd64": ("node-v8.1.2-linux-x64.tar.xz", "node-v8.1.2-linux-x64", "f5dc173d3005fbcfd107c83a15d4dbff9a28ff53ab42c23344a572d84814ecfe"), "8.1.2-windows_amd64": ("node-v8.1.2-win-x64.zip", "node-v8.1.2-win-x64", "5463c812afeb498ad8ab9c396246e455d9353ab48ae409c82a2a45193e161f66"), "8.1.3-darwin_amd64": ("node-v8.1.3-darwin-x64.tar.gz", "node-v8.1.3-darwin-x64", "ae588038480a6acc57b6b04802fa876e0b602231e9846944dd1b4437e8c1205f"), "8.1.3-linux_arm64": ("node-v8.1.3-linux-arm64.tar.xz", "node-v8.1.3-linux-arm64", "cebc2edd89f20613a530509a2435ecc42757ce16032559ef174ebe84875a1536"), "8.1.3-linux_amd64": ("node-v8.1.3-linux-x64.tar.xz", "node-v8.1.3-linux-x64", "d41dc375ea7e33fadf0fb1bf89d9dfd222a2fb85633fba3d2cf48ac03522ba71"), "8.1.3-windows_amd64": ("node-v8.1.3-win-x64.zip", "node-v8.1.3-win-x64", "be582920c723124ebad48c968f539ef66b1f628d8b6f2338dc68a32f95104856"), "8.1.4-darwin_amd64": ("node-v8.1.4-darwin-x64.tar.gz", "node-v8.1.4-darwin-x64", "a24858a10dd4ca8ad55fd61a7472b4fe9140eb3fa347c41717360c3f29438748"), "8.1.4-linux_arm64": ("node-v8.1.4-linux-arm64.tar.xz", "node-v8.1.4-linux-arm64", "3553c617f594286fea7052678d04aec9e167adddf702b70431d88ce42573c339"), "8.1.4-linux_amd64": ("node-v8.1.4-linux-x64.tar.xz", "node-v8.1.4-linux-x64", "d82fe7ef7e0f8ca1c343f00e3e490996553507ec7d42034f5df034cc7908caaf"), "8.1.4-windows_amd64": ("node-v8.1.4-win-x64.zip", "node-v8.1.4-win-x64", "cc3689ffefc738f6256aab1713343c3c64c24ec997600c0a48243fb26f5e0bce"), "8.2.0-darwin_amd64": ("node-v8.2.0-darwin-x64.tar.gz", "node-v8.2.0-darwin-x64", "da5cca37ae0afdbff3a269bb3dc71ff0d86e282920286f71ae5eb6757cfa5356"), "8.2.0-linux_arm64": ("node-v8.2.0-linux-arm64.tar.xz", "node-v8.2.0-linux-arm64", "3298ae4ae67c4ad714bed23383fd08db5711b164a077a25fb6b282533e65cf77"), "8.2.0-linux_amd64": ("node-v8.2.0-linux-x64.tar.xz", "node-v8.2.0-linux-x64", "e8ceaac3ee4385d53bcebc552a7a6b545b09b9652f5ca1b254aae698fd9a25f9"), "8.2.0-windows_amd64": ("node-v8.2.0-win-x64.zip", "node-v8.2.0-win-x64", "6bc3cc580f0e8190e6a03d6a5967c861c29d6a6eb50f995b3afb7d60b8cee4e1"), "8.2.1-darwin_amd64": ("node-v8.2.1-darwin-x64.tar.gz", "node-v8.2.1-darwin-x64", "32d0923c147470d57f18f055014f5a9fe8a3919406010a2e80ba85952d3c9923"), "8.2.1-linux_arm64": ("node-v8.2.1-linux-arm64.tar.xz", "node-v8.2.1-linux-arm64", "9ed01737f37d410067beeb42066e51f6d0385677c7d0daeeaf2e32cb2aca854a"), "8.2.1-linux_amd64": ("node-v8.2.1-linux-x64.tar.xz", "node-v8.2.1-linux-x64", "abcddeb95cc4465953b1edb0922d20e9b0b3de83688fc8150b863117032a978a"), "8.2.1-windows_amd64": ("node-v8.2.1-win-x64.zip", "node-v8.2.1-win-x64", "37e84e54c67e3d1e52d657c04835b211c94631a0b358f4e7dc351618fdb6c083"), "8.3.0-darwin_amd64": ("node-v8.3.0-darwin-x64.tar.gz", "node-v8.3.0-darwin-x64", "a627354982a514e77e5c37ed5952edc81a7dd9c4f661fd919f192c21ae548654"), "8.3.0-linux_arm64": ("node-v8.3.0-linux-arm64.tar.xz", "node-v8.3.0-linux-arm64", "9e0dab4913585a1b8117bda03c4b5581d9140aec67bb4be0e0b6a4999b41b4ab"), "8.3.0-linux_amd64": ("node-v8.3.0-linux-x64.tar.xz", "node-v8.3.0-linux-x64", "ae377995c6e1af8e2a60c4a929f77562ebed9a2c6897cbd311a2c331f76b4e0f"), "8.3.0-windows_amd64": ("node-v8.3.0-win-x64.zip", "node-v8.3.0-win-x64", "e762fa218465e5aa0952336eee2c3e42e5b48390b36838ca7b6a243812e0b7e5"), "8.4.0-darwin_amd64": ("node-v8.4.0-darwin-x64.tar.gz", "node-v8.4.0-darwin-x64", "cc10ffbd11586bd27a7cc5e6e2d03fd3e0b341368387a03ee9a0117a0288599d"), "8.4.0-linux_arm64": ("node-v8.4.0-linux-arm64.tar.xz", "node-v8.4.0-linux-arm64", "0a811bbe4905fc879f3cbfc976e5a37cca05bbd609774abe4332b29fea75f073"), "8.4.0-linux_amd64": ("node-v8.4.0-linux-x64.tar.xz", "node-v8.4.0-linux-x64", "7fd86abad06f96cb2f889c2a0e25686a3de3e9a078ad946ded91ee4f28d8218a"), "8.4.0-windows_amd64": ("node-v8.4.0-win-x64.zip", "node-v8.4.0-win-x64", "0f60c99479f74d75c7239795c90698826ba8252019d4c23e82ed0d72ceb8974f"), "8.5.0-darwin_amd64": ("node-v8.5.0-darwin-x64.tar.gz", "node-v8.5.0-darwin-x64", "0c8d4c4d90f858a19a29fe1ae7f42b2b7f1a4d3caaa25bea2e08479c00ebbd5f"), "8.5.0-linux_arm64": ("node-v8.5.0-linux-arm64.tar.xz", "node-v8.5.0-linux-arm64", "e0decdebe73dba516d6c72401e337cee6277c6e00f817b0bf1c592360adfd4e6"), "8.5.0-linux_amd64": ("node-v8.5.0-linux-x64.tar.xz", "node-v8.5.0-linux-x64", "a9651fcc6259b4a944ebb72e6dd116602c7b26ddf939599b060d1d3e6ead8c36"), "8.5.0-windows_amd64": ("node-v8.5.0-win-x64.zip", "node-v8.5.0-win-x64", "c385d162c15a7a85d42755ee8c78c1c73bd251e2f7cbf82e5e20c824564aa9df"), "8.6.0-darwin_amd64": ("node-v8.6.0-darwin-x64.tar.gz", "node-v8.6.0-darwin-x64", "2c95f3194a92e8b37aab8895fbaeb1f5fabef3494600ef78a7b7e078dba9a7c9"), "8.6.0-linux_arm64": ("node-v8.6.0-linux-arm64.tar.xz", "node-v8.6.0-linux-arm64", "6848567ab32d04694120e18c20ef47d0f4163229634f236e4bdbb8d135f3204e"), "8.6.0-linux_amd64": ("node-v8.6.0-linux-x64.tar.xz", "node-v8.6.0-linux-x64", "e6f52c3ed7e2cc34ebddbc563434fdf043feb449a60f028101eb45227aec3444"), "8.6.0-windows_amd64": ("node-v8.6.0-win-x64.zip", "node-v8.6.0-win-x64", "08e9b29c47567517ca95ca01d5cdb255279be5463952f92da5c372a99d620b23"), "8.7.0-darwin_amd64": ("node-v8.7.0-darwin-x64.tar.gz", "node-v8.7.0-darwin-x64", "5e59798c1deafd671a35ef4dcdb9b97ce98f9255a056832dc98d454613e9ea08"), "8.7.0-linux_arm64": ("node-v8.7.0-linux-arm64.tar.xz", "node-v8.7.0-linux-arm64", "5a1a1907fbb6d90667ce70ad42602534f6cc6eda873d1c50a3259349aee73418"), "8.7.0-linux_amd64": ("node-v8.7.0-linux-x64.tar.xz", "node-v8.7.0-linux-x64", "9d6f649576cac74ef0b6634af8265156370cf8fdf3676f03e867347d3207675d"), "8.7.0-windows_amd64": ("node-v8.7.0-win-x64.zip", "node-v8.7.0-win-x64", "e95be435674e82ea7133c3268cb70044eabde2d0aef28b2a3df5c7d8d23cadcc"), "8.8.0-darwin_amd64": ("node-v8.8.0-darwin-x64.tar.gz", "node-v8.8.0-darwin-x64", "69a37e240fac48289a2a5bb75ab96091f8d6457eeaf23c0a5125250abe418176"), "8.8.0-linux_arm64": ("node-v8.8.0-linux-arm64.tar.xz", "node-v8.8.0-linux-arm64", "454617ff94882d9a81dca0840065fb5a928ff68e8e8efe7c1748d996ab757b2e"), "8.8.0-linux_amd64": ("node-v8.8.0-linux-x64.tar.xz", "node-v8.8.0-linux-x64", "4304c297f41085ac1f7a6a8e68496d9fd5aa3b92590e7c3c6015a23939767e72"), "8.8.0-windows_amd64": ("node-v8.8.0-win-x64.zip", "node-v8.8.0-win-x64", "a7a1fd2c5f5c967d7df70fdec1a8b2d2d2b1b411fcdd4f23bcf8c9c837a7c3cb"), "8.8.1-darwin_amd64": ("node-v8.8.1-darwin-x64.tar.gz", "node-v8.8.1-darwin-x64", "bf208e29418fb3efc836d3d32b62b9162f0f0b36a0665abc0990f4e292cfc84b"), "8.8.1-linux_arm64": ("node-v8.8.1-linux-arm64.tar.xz", "node-v8.8.1-linux-arm64", "ea8ad0286a31e7519e979fcf99e503845a95da640cd140be5cff418a68fa6263"), "8.8.1-linux_amd64": ("node-v8.8.1-linux-x64.tar.xz", "node-v8.8.1-linux-x64", "004bc95267ef5d5b928f560582f681a679bada2201bf221735a02f4956f67b09"), "8.8.1-windows_amd64": ("node-v8.8.1-win-x64.zip", "node-v8.8.1-win-x64", "a7e60a1a5f46ef309cbe74e423c17e69dd0a573f0c92c9e325caade3388d192a"), "8.9.0-darwin_amd64": ("node-v8.9.0-darwin-x64.tar.gz", "node-v8.9.0-darwin-x64", "aaf165348bc6d20012b048a88a8f3a35cba6799496e8f4c1246d85c524a84dbc"), "8.9.0-linux_arm64": ("node-v8.9.0-linux-arm64.tar.xz", "node-v8.9.0-linux-arm64", "30cb00ac1cf6b466b1f27e7ce41363a67a66dbb64227c2dc5e33d221b09fc579"), "8.9.0-linux_amd64": ("node-v8.9.0-linux-x64.tar.xz", "node-v8.9.0-linux-x64", "e92b91fa473f9ad805a1241907b6f1bd3f8ceac8426a8b4cb05428e62e243bdd"), "8.9.0-windows_amd64": ("node-v8.9.0-win-x64.zip", "node-v8.9.0-win-x64", "dd971e43ff003213b0be31c1a8ce3421f72e0db2a703bc254ac685be4f7f609e"), "8.9.1-darwin_amd64": ("node-v8.9.1-darwin-x64.tar.gz", "node-v8.9.1-darwin-x64", "05c992a6621d28d564b92bf3051a5dc0adf83839237c0d4653a8cdb8a1c73b94"), "8.9.1-linux_arm64": ("node-v8.9.1-linux-arm64.tar.xz", "node-v8.9.1-linux-arm64", "f774660980dcf931bf29847a5f26317823a063fa4a56f85f37c3222d77cce7c1"), "8.9.1-linux_amd64": ("node-v8.9.1-linux-x64.tar.xz", "node-v8.9.1-linux-x64", "8be82805f7c1ab3e64d4569fb9a90ded2de78dd27cadbb91bad1bf975dae1e2d"), "8.9.1-windows_amd64": ("node-v8.9.1-win-x64.zip", "node-v8.9.1-win-x64", "db89c6e041da359561fbe7da075bb4f9881a0f7d3e98c203e83732cfb283fa4a"), "8.9.2-darwin_amd64": ("node-v8.9.2-darwin-x64.tar.gz", "node-v8.9.2-darwin-x64", "ba03ae4c0ebd33e8661b5b241211ddb9f7e3b5b959d8cbd68f5941cb1ed5784d"), "8.9.2-linux_arm64": ("node-v8.9.2-linux-arm64.tar.xz", "node-v8.9.2-linux-arm64", "cc222b4f910ff27ff66ccc96d5c7e2117942bcd161ec253d83cf430146b79bdf"), "8.9.2-linux_amd64": ("node-v8.9.2-linux-x64.tar.xz", "node-v8.9.2-linux-x64", "d4065724e7f5f11e999f78de50fb0faac74341799cb0c0dafcbe87e0ecb0be86"), "8.9.2-windows_amd64": ("node-v8.9.2-win-x64.zip", "node-v8.9.2-win-x64", "2afa8b899c0dddea50dcf5dda66ae7b0ca32326dbf66c52f947c082e7c95d090"), "8.9.3-darwin_amd64": ("node-v8.9.3-darwin-x64.tar.gz", "node-v8.9.3-darwin-x64", "fa7962f25db420a374e9e60d8a410188bd690a2f0ce8d403aa9b09d9b7ae8c1f"), "8.9.3-linux_arm64": ("node-v8.9.3-linux-arm64.tar.xz", "node-v8.9.3-linux-arm64", "8860678ad0c24059380af254574e5a12371a2d5c92ca5e1ac7267314af7df04f"), "8.9.3-linux_amd64": ("node-v8.9.3-linux-x64.tar.xz", "node-v8.9.3-linux-x64", "86f3aa593315f0503d069e3f4805019583ab8d86c0244a83c795d1942e3f99b7"), "8.9.3-windows_amd64": ("node-v8.9.3-win-x64.zip", "node-v8.9.3-win-x64", "17dee0c06d088269123a27db3905a39a17a51cc0ea65435ae942c718f0f94403"), "8.9.4-darwin_amd64": ("node-v8.9.4-darwin-x64.tar.gz", "node-v8.9.4-darwin-x64", "ca50f7d2035eb805306e303b644bb1cde170ce2615e0a2c6e95fb80881c48c24"), "8.9.4-linux_arm64": ("node-v8.9.4-linux-arm64.tar.xz", "node-v8.9.4-linux-arm64", "7c0369a5dbc98d0989c208ca3ee1b6db4cba576343014fdbf7d36fd2659f7089"), "8.9.4-linux_amd64": ("node-v8.9.4-linux-x64.tar.xz", "node-v8.9.4-linux-x64", "68b94aac38cd5d87ab79c5b38306e34a20575f31a3ea788d117c20fffcca3370"), "8.9.4-windows_amd64": ("node-v8.9.4-win-x64.zip", "node-v8.9.4-win-x64", "48946e99ac4484e071df25741d2300f3a656f476c5ff3f8116a4746c07ebe3b7"), "8.10.0-darwin_amd64": ("node-v8.10.0-darwin-x64.tar.gz", "node-v8.10.0-darwin-x64", "7d77bd35bc781f02ba7383779da30bd529f21849b86f14d87e097497671b0271"), "8.10.0-linux_arm64": ("node-v8.10.0-linux-arm64.tar.xz", "node-v8.10.0-linux-arm64", "cbec410109664f75d3c988a43483576fc56f745e05e3884891df9c509fbb1b12"), "8.10.0-linux_amd64": ("node-v8.10.0-linux-x64.tar.xz", "node-v8.10.0-linux-x64", "92220638d661a43bd0fee2bf478cb283ead6524f231aabccf14c549ebc2bc338"), "8.10.0-windows_amd64": ("node-v8.10.0-win-x64.zip", "node-v8.10.0-win-x64", "936ada36cb6f09a5565571e15eb8006e45c5a513529c19e21d070acf0e50321b"), "8.11.0-darwin_amd64": ("node-v8.11.0-darwin-x64.tar.gz", "node-v8.11.0-darwin-x64", "408323335b8c691d75397c76ddd7b00490852652c78c813c586ba7eccc5c382b"), "8.11.0-linux_arm64": ("node-v8.11.0-linux-arm64.tar.xz", "node-v8.11.0-linux-arm64", "a28f599a14ca9ef4062fa1e605b69cd046f81d3fc9a7d6dde1856fb593004b3a"), "8.11.0-linux_amd64": ("node-v8.11.0-linux-x64.tar.xz", "node-v8.11.0-linux-x64", "180ef8c2a39c1696b9a05832883ed981ba11475ffa44ca77781a8d1c1954f944"), "8.11.0-windows_amd64": ("node-v8.11.0-win-x64.zip", "node-v8.11.0-win-x64", "55b9c8d48b59569117a63fdb26e1de05e792c37f563feb7d44b4cd59be96aff8"), "8.11.1-darwin_amd64": ("node-v8.11.1-darwin-x64.tar.gz", "node-v8.11.1-darwin-x64", "5c7b05899ff56910a2b8180f139d48612f349ac2c5d20f08dbbeffbed9e3a089"), "8.11.1-linux_arm64": ("node-v8.11.1-linux-arm64.tar.xz", "node-v8.11.1-linux-arm64", "ff518f33751baa8ea4f18853d446357c2edecd930a1526ac9b2eaa79baddc1bf"), "8.11.1-linux_amd64": ("node-v8.11.1-linux-x64.tar.xz", "node-v8.11.1-linux-x64", "6617e245fa0f7fbe0e373e71d543fea878315324ab31dc64b4eba10e42d04c11"), "8.11.1-windows_amd64": ("node-v8.11.1-win-x64.zip", "node-v8.11.1-win-x64", "7d49b59c2b5d73a14c138e8a215d558a64a5241cd5035d9824f608e7bba097b1"), "8.11.2-darwin_amd64": ("node-v8.11.2-darwin-x64.tar.gz", "node-v8.11.2-darwin-x64", "6bd619ab577a1256531e50e31924d99a094eb920de8b5bd060a056a2608282b9"), "8.11.2-linux_arm64": ("node-v8.11.2-linux-arm64.tar.xz", "node-v8.11.2-linux-arm64", "c8e9833402277c1a5a31b41cc31c9cedad68ba87c2ef78aed6a3ced81af9da7f"), "8.11.2-linux_amd64": ("node-v8.11.2-linux-x64.tar.xz", "node-v8.11.2-linux-x64", "213599127d24496cbf1cbb2a7c51060a3506d6b11132c59bb7f9f8a0edd210a7"), "8.11.2-windows_amd64": ("node-v8.11.2-win-x64.zip", "node-v8.11.2-win-x64", "bbac1f56e8001a093acb2942f8a43c3bf22aec58216f446b7bf01f6f822dfe3f"), "8.11.3-darwin_amd64": ("node-v8.11.3-darwin-x64.tar.gz", "node-v8.11.3-darwin-x64", "77fa26b4c2fc34bdf5a5dd1cd39c93b12087fbd25148c6f04bf409698ee48b86"), "8.11.3-linux_arm64": ("node-v8.11.3-linux-arm64.tar.xz", "node-v8.11.3-linux-arm64", "b8fddec18f20533929a07bc1d38ae63b1999a0252740094f0974b2cbea76eaa4"), "8.11.3-linux_amd64": ("node-v8.11.3-linux-x64.tar.xz", "node-v8.11.3-linux-x64", "08e2fcfea66746bd966ea3a89f26851f1238d96f86c33eaf6274f67fce58421a"), "8.11.3-windows_amd64": ("node-v8.11.3-win-x64.zip", "node-v8.11.3-win-x64", "91b779def1b21dcd1def7fc9671a869a1e2f989952e76fdc08a5d73570075f31"), "8.11.4-darwin_amd64": ("node-v8.11.4-darwin-x64.tar.gz", "node-v8.11.4-darwin-x64", "aa1de83b388581d0d9ec3276f4526ee67e17e0f1bc0deb5133f960ce5dc9f1ef"), "8.11.4-linux_arm64": ("node-v8.11.4-linux-arm64.tar.xz", "node-v8.11.4-linux-arm64", "46e90dd916ddbf88c866de300c1b2a26f9216b19abd92b29e89439f62fb6fc1c"), "8.11.4-linux_amd64": ("node-v8.11.4-linux-x64.tar.xz", "node-v8.11.4-linux-x64", "85ea7cbb5bf624e130585bfe3946e99c85ce5cb84c2aee474038bdbe912f908c"), "8.11.4-windows_amd64": ("node-v8.11.4-win-x64.zip", "node-v8.11.4-win-x64", "72a21e2fcd3703994f57cf707b92e7f939df99c3e0298102e7436849e4948536"), "8.12.0-darwin_amd64": ("node-v8.12.0-darwin-x64.tar.gz", "node-v8.12.0-darwin-x64", "ca131b84dfcf2b6f653a6521d31f7a108ad7d83f4d7e781945b2eca8172064aa"), "8.12.0-linux_arm64": ("node-v8.12.0-linux-arm64.tar.xz", "node-v8.12.0-linux-arm64", "0fbdcfd8cf0cb5e8f5beff84ba091fd47126ba44c628e3a351501419b211aa1a"), "8.12.0-linux_amd64": ("node-v8.12.0-linux-x64.tar.xz", "node-v8.12.0-linux-x64", "29a20479cd1e3a03396a4e74a1784ccdd1cf2f96928b56f6ffa4c8dae40c88f2"), "8.12.0-windows_amd64": ("node-v8.12.0-win-x64.zip", "node-v8.12.0-win-x64", "9b22c9b23148b61ea0052826b3ac0255b8a3a542c125272b8f014f15bf11b091"), "8.13.0-darwin_amd64": ("node-v8.13.0-darwin-x64.tar.gz", "node-v8.13.0-darwin-x64", "f6261c7a09a2c8bd77a8760a0e110410f508e5641ca132511b4883600f2d65f0"), "8.13.0-linux_arm64": ("node-v8.13.0-linux-arm64.tar.xz", "node-v8.13.0-linux-arm64", "e8e0daab515dfd0c2323b8e1274475f61c8ca1cf582dcc254583cbf8593425e3"), "8.13.0-linux_amd64": ("node-v8.13.0-linux-x64.tar.xz", "node-v8.13.0-linux-x64", "8fa1227b28113e25a8960d7fa6779a8c18bf20cfaafc9c5d0e46a3ee88373669"), "8.13.0-windows_amd64": ("node-v8.13.0-win-x64.zip", "node-v8.13.0-win-x64", "46293121d207350bd8d334efb67303337933c4dac886a840f88ff6059bff9443"), "8.14.0-darwin_amd64": ("node-v8.14.0-darwin-x64.tar.gz", "node-v8.14.0-darwin-x64", "1e9bb233bb3c3b01826f9d7e1b3ecf1047840ce96a3a7d1921ddcb569c467329"), "8.14.0-linux_arm64": ("node-v8.14.0-linux-arm64.tar.xz", "node-v8.14.0-linux-arm64", "fbcef89a60f1f40699589850f861fc84354a6f240610e2726c3743455dd82525"), "8.14.0-linux_amd64": ("node-v8.14.0-linux-x64.tar.xz", "node-v8.14.0-linux-x64", "a56d1af4d7da81504338b09809cf10b3144808d47d4117b9bd9a5a4ec4d5d9b9"), "8.14.0-windows_amd64": ("node-v8.14.0-win-x64.zip", "node-v8.14.0-win-x64", "d0be7c96a25c5d2b69f8a3510e9f4414643d5fe361b4509d455249e57f9a50af"), "8.14.1-darwin_amd64": ("node-v8.14.1-darwin-x64.tar.gz", "node-v8.14.1-darwin-x64", "d180a9b70de569e4c3d10c0c4a0af74e40dbca3e845df43ce1ec522bb4252eda"), "8.14.1-linux_arm64": ("node-v8.14.1-linux-arm64.tar.xz", "node-v8.14.1-linux-arm64", "488a66288052c6497133179e4546efb7fbaf105e432cd0d9aab3471901ab5e58"), "8.14.1-linux_amd64": ("node-v8.14.1-linux-x64.tar.xz", "node-v8.14.1-linux-x64", "1fec92a0110f692c68f7bdbec41b340c474bd77063323520786a7b9b00473daf"), "8.14.1-windows_amd64": ("node-v8.14.1-win-x64.zip", "node-v8.14.1-win-x64", "41793b873f98ceed632b24120ef44b2df89625f3dfa90eb9298dad698249167c"), "8.15.0-darwin_amd64": ("node-v8.15.0-darwin-x64.tar.gz", "node-v8.15.0-darwin-x64", "a393971136408f837fbc0f7d71a63754f91cfb1851d48bd612d8219eb61956f1"), "8.15.0-linux_arm64": ("node-v8.15.0-linux-arm64.tar.xz", "node-v8.15.0-linux-arm64", "5985c6dce65b1161ff41253da5aa4e64b8f10eb010a5d2712ea9b659f70179d7"), "8.15.0-linux_amd64": ("node-v8.15.0-linux-x64.tar.xz", "node-v8.15.0-linux-x64", "c1f0c5facdba78b5dec5136aec40dcb00b5c7cf404d9236a99c955994f91d969"), "8.15.0-windows_amd64": ("node-v8.15.0-win-x64.zip", "node-v8.15.0-win-x64", "13d8eab29c191bd16c69a70a556178a5adc988b243a036aaf3d5158861b60d8e"), "8.15.1-darwin_amd64": ("node-v8.15.1-darwin-x64.tar.gz", "node-v8.15.1-darwin-x64", "f3da0b4397150226c008a86c99d77dbb835dc62219d863654913a78332ab19a5"), "8.15.1-linux_arm64": ("node-v8.15.1-linux-arm64.tar.xz", "node-v8.15.1-linux-arm64", "69e000d78342c3d39583922c57947a906ad723789d6294951deb10cbe8709605"), "8.15.1-linux_amd64": ("node-v8.15.1-linux-x64.tar.xz", "node-v8.15.1-linux-x64", "5643b54c583eebaa40c1623b16cba4e3955ff5dfdd44036f6bafd761160c993d"), "8.15.1-windows_amd64": ("node-v8.15.1-win-x64.zip", "node-v8.15.1-win-x64", "f636fa578dc079bacc6c4bef13284ddb893c99f7640b96701c2690bd9c1431f5"), "8.16.0-darwin_amd64": ("node-v8.16.0-darwin-x64.tar.gz", "node-v8.16.0-darwin-x64", "a6710b8af0862fab0ccdba0549dbcdad76b5f99070652e64f6a85158038fc9a6"), "8.16.0-linux_arm64": ("node-v8.16.0-linux-arm64.tar.xz", "node-v8.16.0-linux-arm64", "4583d1cb44ff8b51cbf0402a78f2fe086c13a6c900c20c8be14e3b0e28e34335"), "8.16.0-linux_amd64": ("node-v8.16.0-linux-x64.tar.xz", "node-v8.16.0-linux-x64", "e538ffaaf2f808c084e70f1a1d2ff5559cff892cfd56e0bb67d00b0a95fc3a7a"), "8.16.0-windows_amd64": ("node-v8.16.0-win-x64.zip", "node-v8.16.0-win-x64", "d6baa929bacb78b347b29ebb0263220ea649ce82f3cdfd3f0b41ac725d1bbba5"), "8.16.1-darwin_amd64": ("node-v8.16.1-darwin-x64.tar.gz", "node-v8.16.1-darwin-x64", "ef1cb93f03bca4b9528e5d3226bdf8efa135e4b12285eee1e4760da06bac631a"), "8.16.1-linux_arm64": ("node-v8.16.1-linux-arm64.tar.xz", "node-v8.16.1-linux-arm64", "0c61c6ae8a70d96ab19848a09b2010d29b806f2dd79177da22c743fd5e352a98"), "8.16.1-linux_amd64": ("node-v8.16.1-linux-x64.tar.xz", "node-v8.16.1-linux-x64", "22a2580569c787ea83960bda0eae5dfaf1fe79382a52ad5fa5cd3accb93a1818"), "8.16.1-windows_amd64": ("node-v8.16.1-win-x64.zip", "node-v8.16.1-win-x64", "396dc41740bca0355d11865780e2af8e88eb17581cd2c445ccaf29b862901ab8"), "8.16.2-darwin_amd64": ("node-v8.16.2-darwin-x64.tar.gz", "node-v8.16.2-darwin-x64", "359331120e83f0707219398fc543b05eee9476446ecce549c20c4d9c7c103d29"), "8.16.2-linux_arm64": ("node-v8.16.2-linux-arm64.tar.xz", "node-v8.16.2-linux-arm64", "5afe366affb05136d25e99ec97a7a1ee1b690cc26df43567af0509f36b45e682"), "8.16.2-linux_amd64": ("node-v8.16.2-linux-x64.tar.xz", "node-v8.16.2-linux-x64", "88617a293f5828cc94ee99c94a43fbea12b989e34fe643fc14885a14748a8da6"), "8.16.2-windows_amd64": ("node-v8.16.2-win-x64.zip", "node-v8.16.2-win-x64", "98c615221500434155a8a5aff5fe96cd000400f3e76858ca97e6624f1d15eb73"), "8.17.0-darwin_amd64": ("node-v8.17.0-darwin-x64.tar.gz", "node-v8.17.0-darwin-x64", "3117430fc93e9865e4a1842616cc98767b5d6987fd9d727c8be4068714570e16"), "8.17.0-linux_arm64": ("node-v8.17.0-linux-arm64.tar.xz", "node-v8.17.0-linux-arm64", "8318d1ee0265d84025ecbea76aaecd732974a6f4ac8492ddd84231cee77ba948"), "8.17.0-linux_amd64": ("node-v8.17.0-linux-x64.tar.xz", "node-v8.17.0-linux-x64", "b7f6dd77fb173c8c7c30d61d0702eefc236bba74398538aa77bfa2bb47bddce6"), "8.17.0-windows_amd64": ("node-v8.17.0-win-x64.zip", "node-v8.17.0-win-x64", "e95a63e81b27e78872c0efb9dd5809403014dbf9896035cc17adf51a350f88fa"), "9.0.0-darwin_amd64": ("node-v9.0.0-darwin-x64.tar.gz", "node-v9.0.0-darwin-x64", "40fe905e492deadbf84c46baba413294e516fa844ed8e68adb4117f8acabe9a9"), "9.0.0-linux_arm64": ("node-v9.0.0-linux-arm64.tar.xz", "node-v9.0.0-linux-arm64", "0250e13705259dcf736ac4216833c2ade459e3ade94d89af68bd98ded1783cb6"), "9.0.0-linux_amd64": ("node-v9.0.0-linux-x64.tar.xz", "node-v9.0.0-linux-x64", "8313d2f6d69dbea4cb860803a156f093041cbe352a843c06f9f05cab1f30e9cc"), "9.0.0-windows_amd64": ("node-v9.0.0-win-x64.zip", "node-v9.0.0-win-x64", "d25901007e7c48da3af162bc1917d5bdd78c7e3b9cb64f16f90c38b59ef7b412"), "9.1.0-darwin_amd64": ("node-v9.1.0-darwin-x64.tar.gz", "node-v9.1.0-darwin-x64", "8e180de9b3f6a79f09a391c89de54920bbf5375337d3e13c5bfcbce85af711ab"), "9.1.0-linux_arm64": ("node-v9.1.0-linux-arm64.tar.xz", "node-v9.1.0-linux-arm64", "37d329fa06b22e30243c503b64d9666d56abb6c0ce903251d4b43e7ad0833fb3"), "9.1.0-linux_amd64": ("node-v9.1.0-linux-x64.tar.xz", "node-v9.1.0-linux-x64", "b796ed115c97acd23211c294129b0a834ff3a6a0f583111443b89d2b24e0d4d9"), "9.1.0-windows_amd64": ("node-v9.1.0-win-x64.zip", "node-v9.1.0-win-x64", "f2e76f536ff4fedd9884684f0b1979e04d0fd1c2a65d7d1a5a013de885dd07b3"), "9.2.0-darwin_amd64": ("node-v9.2.0-darwin-x64.tar.gz", "node-v9.2.0-darwin-x64", "42f78982b8614f099bc70819db40074ff7c1c49d4bac71eca5ffe4120452f289"), "9.2.0-linux_arm64": ("node-v9.2.0-linux-arm64.tar.xz", "node-v9.2.0-linux-arm64", "1b5c44160b7bfc9e5d63697d63c82330ae3e6094ab48449bd958ebe0baef73f0"), "9.2.0-linux_amd64": ("node-v9.2.0-linux-x64.tar.xz", "node-v9.2.0-linux-x64", "ded9cef0243bbe8ac5a417be0c6471bed6ed82367714ccb23f79a5be0ba2bd5d"), "9.2.0-windows_amd64": ("node-v9.2.0-win-x64.zip", "node-v9.2.0-win-x64", "5e7feb536547c715155d772f90857239b37897c1a1a664809fd84a7aeae1a724"), "9.2.1-darwin_amd64": ("node-v9.2.1-darwin-x64.tar.gz", "node-v9.2.1-darwin-x64", "4263f3da0280e2decd3a2ab97672e6f718acdf704664a3f1251e4ea267ccc971"), "9.2.1-linux_arm64": ("node-v9.2.1-linux-arm64.tar.xz", "node-v9.2.1-linux-arm64", "09d362e2ed5f4af5e5dc2253bb4523d7bcb92135bcc11d9eb89ad8336229b756"), "9.2.1-linux_amd64": ("node-v9.2.1-linux-x64.tar.xz", "node-v9.2.1-linux-x64", "548d2959939235ca56c98740f64b64058e43d1499d760603b7941b7c37ad10fe"), "9.2.1-windows_amd64": ("node-v9.2.1-win-x64.zip", "node-v9.2.1-win-x64", "7b48ef7c718fe5748844f93101f9276a88ae1cf3c4c228f85306a6a266471b5b"), "9.3.0-darwin_amd64": ("node-v9.3.0-darwin-x64.tar.gz", "node-v9.3.0-darwin-x64", "0539601e67e9be6995d4ba4abe565a748e25699060631369f59166d5de43d21a"), "9.3.0-linux_arm64": ("node-v9.3.0-linux-arm64.tar.xz", "node-v9.3.0-linux-arm64", "11300e878220962adade33238dd6e55928ad6d1362e0daa1f12e272137e68c0b"), "9.3.0-linux_amd64": ("node-v9.3.0-linux-x64.tar.xz", "node-v9.3.0-linux-x64", "0424dd6fa059fc32e0b73f460cb587b92b13c7b0af56331bbdc53a52e43f24ea"), "9.3.0-windows_amd64": ("node-v9.3.0-win-x64.zip", "node-v9.3.0-win-x64", "53bceda79c8d5dd8a185221a5ea2fc8f2b24ed7e0c9c91d18f6016b3624ff096"), "9.4.0-darwin_amd64": ("node-v9.4.0-darwin-x64.tar.gz", "node-v9.4.0-darwin-x64", "fa271c6012d517851603829af2131b92dc7b03d6f167dcd197cb83468a4971e8"), "9.4.0-linux_arm64": ("node-v9.4.0-linux-arm64.tar.xz", "node-v9.4.0-linux-arm64", "ceed69e91723cb902fcf70e790d34147a91241509257c77a62327871dfad04fa"), "9.4.0-linux_amd64": ("node-v9.4.0-linux-x64.tar.xz", "node-v9.4.0-linux-x64", "6d331d75a39fc5292dd128ad83f6dd14bbbdcb84ba0dfe793fade833be5de95a"), "9.4.0-windows_amd64": ("node-v9.4.0-win-x64.zip", "node-v9.4.0-win-x64", "89d49d73eb92483af0133c97e57a5b521c523960c130c76727daa3412af7d5d8"), "9.5.0-darwin_amd64": ("node-v9.5.0-darwin-x64.tar.gz", "node-v9.5.0-darwin-x64", "bc5c6eb21a90dbcaf90479838416c90524fe6d47e92c928ef57d7e96a54eb5fe"), "9.5.0-linux_arm64": ("node-v9.5.0-linux-arm64.tar.xz", "node-v9.5.0-linux-arm64", "d6a98a51c032963014f606acc80babb456f3dc4c041534ca565f573a2382b253"), "9.5.0-linux_amd64": ("node-v9.5.0-linux-x64.tar.xz", "node-v9.5.0-linux-x64", "76dd38bb5a16a610894353228ef020653f81209a2e509d38aee78ace4410599e"), "9.5.0-windows_amd64": ("node-v9.5.0-win-x64.zip", "node-v9.5.0-win-x64", "2fd1c3865a34827af6b5d799aee68e011a16a637276cbf71e923c8bedd010ee8"), "9.6.0-darwin_amd64": ("node-v9.6.0-darwin-x64.tar.gz", "node-v9.6.0-darwin-x64", "4f2001075b724791bf652b5432073aaaaec03cb00b17cda054ab0a05126035fe"), "9.6.0-linux_arm64": ("node-v9.6.0-linux-arm64.tar.xz", "node-v9.6.0-linux-arm64", "eb10815b1d21e8f5111b90c15b19050279b44666d08a12f26906271e9f6b02dd"), "9.6.0-linux_amd64": ("node-v9.6.0-linux-x64.tar.xz", "node-v9.6.0-linux-x64", "24b8670c819278135b4b8851d880615dee8458fdb5f5390ed0c88c383377f5d3"), "9.6.0-windows_amd64": ("node-v9.6.0-win-x64.zip", "node-v9.6.0-win-x64", "5f1da1ef6ba776449900c931e7acc3b60e47f3080425bf0e6a1c0c5a07dbd6fd"), "9.6.1-darwin_amd64": ("node-v9.6.1-darwin-x64.tar.gz", "node-v9.6.1-darwin-x64", "de486bc479817df2df1f91468e85e5da228a19101422c0c9a27153c1d0013c6d"), "9.6.1-linux_arm64": ("node-v9.6.1-linux-arm64.tar.xz", "node-v9.6.1-linux-arm64", "6246c85acab2dd92463fa1c456db31a24cd7b50b3fa556c4976c5a91473b8c8f"), "9.6.1-linux_amd64": ("node-v9.6.1-linux-x64.tar.xz", "node-v9.6.1-linux-x64", "d38f1707faccc54fae3cb201c25b02c4a3474d2c409c64f2a1d08925b238f8ad"), "9.6.1-windows_amd64": ("node-v9.6.1-win-x64.zip", "node-v9.6.1-win-x64", "c8176d317945ce6221473d70999ec7e725f1c9a7477e991bd7c729026c46dffb"), "9.7.0-darwin_amd64": ("node-v9.7.0-darwin-x64.tar.gz", "node-v9.7.0-darwin-x64", "9730cf3c4c5e228d4855c3362b63dbe59041202d89ae30d7f5ca42f60f742c5d"), "9.7.0-linux_arm64": ("node-v9.7.0-linux-arm64.tar.xz", "node-v9.7.0-linux-arm64", "18bec2bec5e2496f33b4d9d7f3bea7411cdb5d108f390b5c1949ddeda0e61125"), "9.7.0-linux_amd64": ("node-v9.7.0-linux-x64.tar.xz", "node-v9.7.0-linux-x64", "5c7549ceeebdc7ac5acdcae5fffbeb9585e3b9e2003e70e116d9f19c768f73d1"), "9.7.0-windows_amd64": ("node-v9.7.0-win-x64.zip", "node-v9.7.0-win-x64", "a17796c9c888e88a9a086dc1a22cdd872d8e948fbf1e988a8132fef716990530"), "9.7.1-darwin_amd64": ("node-v9.7.1-darwin-x64.tar.gz", "node-v9.7.1-darwin-x64", "9ee0fa891787865b1eccc63ef56134e7de8bbf67b660a1dde9e309305a1dc3b0"), "9.7.1-linux_arm64": ("node-v9.7.1-linux-arm64.tar.xz", "node-v9.7.1-linux-arm64", "d9143c23f7aa171449229abd456c8a9e07dc1033a1e791132b3387d439e2475d"), "9.7.1-linux_amd64": ("node-v9.7.1-linux-x64.tar.xz", "node-v9.7.1-linux-x64", "33b3ecd0a1de891a4a2f3586f1c6498c95c1ecc15864a6e3f4f7826792850d99"), "9.7.1-windows_amd64": ("node-v9.7.1-win-x64.zip", "node-v9.7.1-win-x64", "8590ff193e645d7f719e25d9519633376c72cfa1b36192031705e0065b7d69b2"), "9.8.0-darwin_amd64": ("node-v9.8.0-darwin-x64.tar.gz", "node-v9.8.0-darwin-x64", "c95326d6d8d01e5d4fbf0ca1b1e4fc0d800d00516f38532cc887e17c78f2af07"), "9.8.0-linux_arm64": ("node-v9.8.0-linux-arm64.tar.xz", "node-v9.8.0-linux-arm64", "f3537d06f010e77739be073003fca0b477efec8a72d503dc5a1d942a19973b07"), "9.8.0-linux_amd64": ("node-v9.8.0-linux-x64.tar.xz", "node-v9.8.0-linux-x64", "9f631739b0a9b96b8760c42869e88592db9c3fda2425202bd8b2d09e6371133a"), "9.8.0-windows_amd64": ("node-v9.8.0-win-x64.zip", "node-v9.8.0-win-x64", "dd3971c126907a033f2bc93fdd29327af3ff5b9d151b3b90eb5db1832fe6df9e"), "9.9.0-darwin_amd64": ("node-v9.9.0-darwin-x64.tar.gz", "node-v9.9.0-darwin-x64", "15e71817fe172119d6f9e0166ab869f12c67bdb7371d27a78b0621c408239692"), "9.9.0-linux_arm64": ("node-v9.9.0-linux-arm64.tar.xz", "node-v9.9.0-linux-arm64", "06feb32656c91c3963270de18d4a7befe52d2d8c0fd78fbbb7792a881ffeec7a"), "9.9.0-linux_amd64": ("node-v9.9.0-linux-x64.tar.xz", "node-v9.9.0-linux-x64", "457151b4e6f27222232742ce44de1df73768a251309dddbfca2b385052ee977f"), "9.9.0-windows_amd64": ("node-v9.9.0-win-x64.zip", "node-v9.9.0-win-x64", "5186747c7cab6ff153e725c42446727e460d54e6c62353d5dc550046f5c05653"), "9.10.0-darwin_amd64": ("node-v9.10.0-darwin-x64.tar.gz", "node-v9.10.0-darwin-x64", "c4b98cc2f3c00b770f24549de112902b56d57be7963a1047cd116b357bc61569"), "9.10.0-linux_arm64": ("node-v9.10.0-linux-arm64.tar.xz", "node-v9.10.0-linux-arm64", "ba1d682aa1d5a12eeb39e7f51e4c67c6122b24482869ca2547c6f094eae90658"), "9.10.0-linux_amd64": ("node-v9.10.0-linux-x64.tar.xz", "node-v9.10.0-linux-x64", "b9bfffc03ef0e2c97d463619911552c7f5b1b8699de07bb913990a8b33800cb9"), "9.10.0-windows_amd64": ("node-v9.10.0-win-x64.zip", "node-v9.10.0-win-x64", "3f159de87fd987e7bf30bbffce722e2e5133c44fc847883053359e9b08d6fa88"), "9.10.1-darwin_amd64": ("node-v9.10.1-darwin-x64.tar.gz", "node-v9.10.1-darwin-x64", "ae2d9dfdd3fdb6a6fe588e5479a768ee502968f6544ac8ad6133cb2e05726793"), "9.10.1-linux_arm64": ("node-v9.10.1-linux-arm64.tar.xz", "node-v9.10.1-linux-arm64", "9b084b30e48a3a145fcc6cb282a1b46145b703c13a5eaee40afc7f9d82ad697b"), "9.10.1-linux_amd64": ("node-v9.10.1-linux-x64.tar.xz", "node-v9.10.1-linux-x64", "fc810056be2a0665d0f67b42d25e1b8442bd885d4893b3256a7cfe676bd973de"), "9.10.1-windows_amd64": ("node-v9.10.1-win-x64.zip", "node-v9.10.1-win-x64", "43bf882dec1550e00a039f77190a3e2a778354577e542563be4b5c205de17df1"), "9.11.0-darwin_amd64": ("node-v9.11.0-darwin-x64.tar.gz", "node-v9.11.0-darwin-x64", "e562cfc01a4d8e62c1d86f59cef4f00439b4ad279c97f95f76a39f4b3530b8e5"), "9.11.0-linux_arm64": ("node-v9.11.0-linux-arm64.tar.xz", "node-v9.11.0-linux-arm64", "8df1dd7a1ec298900cf699a7ee8e5f0f478075d0e4c4fd3fb6e3a4ad3527545c"), "9.11.0-linux_amd64": ("node-v9.11.0-linux-x64.tar.xz", "node-v9.11.0-linux-x64", "a4349420b74804b3404a4eea27341297968f61998b01f6504dbbad603700e944"), "9.11.0-windows_amd64": ("node-v9.11.0-win-x64.zip", "node-v9.11.0-win-x64", "6e7f586ece923fd71e36d5db80b6a6d731a2b156464058cb2304f6c0192637cb"), "9.11.1-darwin_amd64": ("node-v9.11.1-darwin-x64.tar.gz", "node-v9.11.1-darwin-x64", "7b1fb394aa41a62b477e36df16644bd383cc9084808511f6cd318b835a06aac6"), "9.11.1-linux_arm64": ("node-v9.11.1-linux-arm64.tar.xz", "node-v9.11.1-linux-arm64", "dba2de106fbde2013a204ca9fafdfe67c0426b4e63d186f888e59432ad2dbb03"), "9.11.1-linux_amd64": ("node-v9.11.1-linux-x64.tar.xz", "node-v9.11.1-linux-x64", "4d27a95d5c2f1c8ef99118794c9c4903e63963418d3e16ca7576760cff39879b"), "9.11.1-windows_amd64": ("node-v9.11.1-win-x64.zip", "node-v9.11.1-win-x64", "0a3566d57ccb7fed95d18fc6c3bc1552a1b1e4753f9bc6c5d45e04f325e1ee53"), "9.11.2-darwin_amd64": ("node-v9.11.2-darwin-x64.tar.gz", "node-v9.11.2-darwin-x64", "340993096108d1dc0e0b598560d87ec645fc94b0fc83a423c36343f2da45f4b8"), "9.11.2-linux_arm64": ("node-v9.11.2-linux-arm64.tar.xz", "node-v9.11.2-linux-arm64", "9a713a6f4473425b83bf67e13e4b3c9f1f683c996b913f1f6854d208996367b6"), "9.11.2-linux_amd64": ("node-v9.11.2-linux-x64.tar.xz", "node-v9.11.2-linux-x64", "a2e7fe4ee3c4e3f31e00dff241c92c2ed779a9f36735578603d2be966f938a4b"), "9.11.2-windows_amd64": ("node-v9.11.2-win-x64.zip", "node-v9.11.2-win-x64", "051db8f4d3c0503e3082173f16b25e2362de8f9a5e509c403992b2069d826c25"), "10.0.0-darwin_amd64": ("node-v10.0.0-darwin-x64.tar.gz", "node-v10.0.0-darwin-x64", "37447fdb5f5cbcf1307ca1661ed67e6e911e0e988c0cb6d15f92eebb211dce88"), "10.0.0-linux_arm64": ("node-v10.0.0-linux-arm64.tar.xz", "node-v10.0.0-linux-arm64", "18f626a967d72294d969bdf000ca80ef483a8bb75482a2c4d14f5e0141626611"), "10.0.0-linux_amd64": ("node-v10.0.0-linux-x64.tar.xz", "node-v10.0.0-linux-x64", "d57c391daef40e706ca71abeaf9d53271c9d0fdb9cd18a80f6296b04dbaf2d5a"), "10.0.0-windows_amd64": ("node-v10.0.0-win-x64.zip", "node-v10.0.0-win-x64", "a95d88e2c28cbcbadb1fa431ec0b686f196dda00d4a25b0829450dc8f5214ec3"), "10.1.0-darwin_amd64": ("node-v10.1.0-darwin-x64.tar.gz", "node-v10.1.0-darwin-x64", "383ef526e27b92113f8dc0dad406b771f6ecaf9e3fddd4f5357590a3cf543d7b"), "10.1.0-linux_arm64": ("node-v10.1.0-linux-arm64.tar.xz", "node-v10.1.0-linux-arm64", "01e252589cf1ce61d2aaa316895001eb24c90a48b04a0e4896de252d2840ffe9"), "10.1.0-linux_amd64": ("node-v10.1.0-linux-x64.tar.xz", "node-v10.1.0-linux-x64", "cb5860c0d3249330d882fb8c6619c082cf3cda177536d4ed979388dde0034f22"), "10.1.0-windows_amd64": ("node-v10.1.0-win-x64.zip", "node-v10.1.0-win-x64", "8448bbd50731e98a4ed8bb4f3f3964170ff3a26418e9bcb3caf770faa9fb06d7"), "10.2.0-darwin_amd64": ("node-v10.2.0-darwin-x64.tar.gz", "node-v10.2.0-darwin-x64", "35fcc482d07218119ce5fde62620994324f03f8c4426dd680886c6844b62232a"), "10.2.0-linux_arm64": ("node-v10.2.0-linux-arm64.tar.xz", "node-v10.2.0-linux-arm64", "8f970be59a6a11f511a04ae1bd303746f0c5409498e062fb1d263d3c3c1093bd"), "10.2.0-linux_amd64": ("node-v10.2.0-linux-x64.tar.xz", "node-v10.2.0-linux-x64", "a6ef9adc824db795b36f81ad0856adc5c878395c4ce2af20f5ba7b76a1ca9982"), "10.2.0-windows_amd64": ("node-v10.2.0-win-x64.zip", "node-v10.2.0-win-x64", "7d7144d57b1b910d10f51d5445ae4306f10d3d9f45ca08b49e8777472993db51"), "10.2.1-darwin_amd64": ("node-v10.2.1-darwin-x64.tar.gz", "node-v10.2.1-darwin-x64", "6ffa149f67e8bd68d291d62591b6573146a65682affd99eefe2835a9c048d3ef"), "10.2.1-linux_arm64": ("node-v10.2.1-linux-arm64.tar.xz", "node-v10.2.1-linux-arm64", "6899cab91fd01af6b73183d23693120ff0de547601d01822b53647d0f5d934ee"), "10.2.1-linux_amd64": ("node-v10.2.1-linux-x64.tar.xz", "node-v10.2.1-linux-x64", "59ffaba5f54ea6a62ada1013a0cc1741c6e6fa790ab9ab2302a98932e7fb85d5"), "10.2.1-windows_amd64": ("node-v10.2.1-win-x64.zip", "node-v10.2.1-win-x64", "ebe78920d72b7a226a345653f3f718f99dc531add35157d37d229050f3685705"), "10.3.0-darwin_amd64": ("node-v10.3.0-darwin-x64.tar.gz", "node-v10.3.0-darwin-x64", "0bb5b7e3fe8cccda2abda958d1eb0408f1518a8b0cb58b75ade5d507cd5d6053"), "10.3.0-linux_arm64": ("node-v10.3.0-linux-arm64.tar.xz", "node-v10.3.0-linux-arm64", "6811b7b9807135902990508143605c0c758d07f7726092ed1b2e27cc60111bd0"), "10.3.0-linux_amd64": ("node-v10.3.0-linux-x64.tar.xz", "node-v10.3.0-linux-x64", "eb3c3e2585494699716ad3197c8eedf4003d3f110829b30c5a0dc34414c47423"), "10.3.0-windows_amd64": ("node-v10.3.0-win-x64.zip", "node-v10.3.0-win-x64", "65d586afb087406a2800d8e51f664c88b26d510f077b85a3b177a1bb79f73677"), "10.4.0-darwin_amd64": ("node-v10.4.0-darwin-x64.tar.gz", "node-v10.4.0-darwin-x64", "82b27983c990a6860e8d729e0b15acf9643ffca0eff282a926268849dfd2c3d2"), "10.4.0-linux_arm64": ("node-v10.4.0-linux-arm64.tar.xz", "node-v10.4.0-linux-arm64", "18d01e0937cdd05386f59f792613aac7b6614a37312ede0c299bd589584976e9"), "10.4.0-linux_amd64": ("node-v10.4.0-linux-x64.tar.xz", "node-v10.4.0-linux-x64", "ce2232578408f7d6bdc7d8bbb49d3416225fe68c52540ac23f4a6e0294d947f6"), "10.4.0-windows_amd64": ("node-v10.4.0-win-x64.zip", "node-v10.4.0-win-x64", "315fc4099902a71b634fee15e4e160a0780703c59a66e7e4542045f6f2b91451"), "10.4.1-darwin_amd64": ("node-v10.4.1-darwin-x64.tar.gz", "node-v10.4.1-darwin-x64", "c232241c97e1f4659186205d50b44132e62b61cdc517f1fb86905a21d03e9189"), "10.4.1-linux_arm64": ("node-v10.4.1-linux-arm64.tar.xz", "node-v10.4.1-linux-arm64", "c00b75a28eb69e4238c9d560f50da3652395ba7bfa6e325d5a2b0cd0926070f7"), "10.4.1-linux_amd64": ("node-v10.4.1-linux-x64.tar.xz", "node-v10.4.1-linux-x64", "6196daea2b291cdb865b3597e6b819b13068cb2c9dbf27cb150256c557a81082"), "10.4.1-windows_amd64": ("node-v10.4.1-win-x64.zip", "node-v10.4.1-win-x64", "70e0b9f0036f878884fdfc585c1001a439508d1d4e6448c4aced60274a2dc191"), "10.5.0-darwin_amd64": ("node-v10.5.0-darwin-x64.tar.gz", "node-v10.5.0-darwin-x64", "a85bda6ab91da8595e71736944cbd77c61afe05092217defd0fb74d9f77109f0"), "10.5.0-linux_arm64": ("node-v10.5.0-linux-arm64.tar.xz", "node-v10.5.0-linux-arm64", "28e6baa2a4ac5b0f0f5adf85489574038d0a4ca48efe76a4e5831b6b222652ba"), "10.5.0-linux_amd64": ("node-v10.5.0-linux-x64.tar.xz", "node-v10.5.0-linux-x64", "8b12be967f5962a8173dca235e1a6f642ee29dcf5fc27697004af898ffeca187"), "10.5.0-windows_amd64": ("node-v10.5.0-win-x64.zip", "node-v10.5.0-win-x64", "ce2b1f9976de64bcc0a5ce877edee0d29c4db1ebab5a7fd713afffd661e99e08"), "10.6.0-darwin_amd64": ("node-v10.6.0-darwin-x64.tar.gz", "node-v10.6.0-darwin-x64", "537efef0c6fd998502fa10baf82ee21edf513256cc73575991354e19442d0b69"), "10.6.0-linux_arm64": ("node-v10.6.0-linux-arm64.tar.xz", "node-v10.6.0-linux-arm64", "be37aade1c085093e276b5822a05233a1057bcafe77f5b9526dbdf622330c4bb"), "10.6.0-linux_amd64": ("node-v10.6.0-linux-x64.tar.xz", "node-v10.6.0-linux-x64", "cfd47380729f2451169b8900b3bd65e4b9db669d1d540613758cd2ededf7b5e6"), "10.6.0-windows_amd64": ("node-v10.6.0-win-x64.zip", "node-v10.6.0-win-x64", "0b58e0414d76e48432588910ea682f002ba69d7be88deb3355ceffb2fe472f6d"), "10.7.0-darwin_amd64": ("node-v10.7.0-darwin-x64.tar.gz", "node-v10.7.0-darwin-x64", "913473055605c8ae92f46923e6ac400133895aafe7766574fd46899bc6b0c5a4"), "10.7.0-linux_arm64": ("node-v10.7.0-linux-arm64.tar.xz", "node-v10.7.0-linux-arm64", "c23856b3123f9e2cfae3f8b0668019f83e9450ee78dede02a8d43031255b7ba0"), "10.7.0-linux_amd64": ("node-v10.7.0-linux-x64.tar.xz", "node-v10.7.0-linux-x64", "ad1d44cbe64ef44db5d8d42690a76dd186d6a6f71a3c3d38449757fe73135329"), "10.7.0-windows_amd64": ("node-v10.7.0-win-x64.zip", "node-v10.7.0-win-x64", "a0914d4c1fb82f51a03a4f57c66c9ce6a65ccd4f3237706042c55799843f4b14"), "10.8.0-darwin_amd64": ("node-v10.8.0-darwin-x64.tar.gz", "node-v10.8.0-darwin-x64", "b800d8b55c234b1f7d972e9464b00328a1caea5f86f94fdb5fc88ebbed7852b7"), "10.8.0-linux_arm64": ("node-v10.8.0-linux-arm64.tar.xz", "node-v10.8.0-linux-arm64", "0333da24d1fe54abac26b0a06437d3336c0fb4816b280507a9851ab3742ef2e4"), "10.8.0-linux_amd64": ("node-v10.8.0-linux-x64.tar.xz", "node-v10.8.0-linux-x64", "497f3b243d7374ee0fe9ab200b175868b172c3a22282cedc6d7fb0cad82471f0"), "10.8.0-windows_amd64": ("node-v10.8.0-win-x64.zip", "node-v10.8.0-win-x64", "f98575fb551d78691a6f74ca4f9c254bbd9fb62135e9ec0ab7ec8c40a03648b0"), "10.9.0-darwin_amd64": ("node-v10.9.0-darwin-x64.tar.gz", "node-v10.9.0-darwin-x64", "3c4fe75dacfcc495a432a7ba2dec9045cff359af2a5d7d0429c84a424ef686fc"), "10.9.0-linux_arm64": ("node-v10.9.0-linux-arm64.tar.xz", "node-v10.9.0-linux-arm64", "3d6aa717d98bbf901c5325a02a81048eb47212bdc44963ef8d59c6e52e987b7c"), "10.9.0-linux_amd64": ("node-v10.9.0-linux-x64.tar.xz", "node-v10.9.0-linux-x64", "c5acb8b7055ee0b6ac653dc4e458c5db45348cecc564b388f4ed1def84a329ff"), "10.9.0-windows_amd64": ("node-v10.9.0-win-x64.zip", "node-v10.9.0-win-x64", "6a75cdbb69d62ed242d6cbf0238a470bcbf628567ee339d4d098a5efcda2401e"), "10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e"), "10.10.0-linux_arm64": ("node-v10.10.0-linux-arm64.tar.xz", "node-v10.10.0-linux-arm64", "7d57961d18ea70b4e99906d87f9de1a2defc45a36fcd8cd84295e9ae5c4281da"), "10.10.0-linux_amd64": ("node-v10.10.0-linux-x64.tar.xz", "node-v10.10.0-linux-x64", "686d2c7b7698097e67bcd68edc3d6b5d28d81f62436c7cf9e7779d134ec262a9"), "10.10.0-windows_amd64": ("node-v10.10.0-win-x64.zip", "node-v10.10.0-win-x64", "70c46e6451798be9d052b700ce5dadccb75cf917f6bf0d6ed54344c856830cfb"), "10.11.0-darwin_amd64": ("node-v10.11.0-darwin-x64.tar.gz", "node-v10.11.0-darwin-x64", "32ad850a0e5cfdefc32d4267707abad05bd5c9eabb047e8ed9bf97faeffc52b6"), "10.11.0-linux_arm64": ("node-v10.11.0-linux-arm64.tar.xz", "node-v10.11.0-linux-arm64", "289302470520fd63e2a92a878869061dda557fe1aabfea2bd5ff88f7af76d98d"), "10.11.0-linux_amd64": ("node-v10.11.0-linux-x64.tar.xz", "node-v10.11.0-linux-x64", "c2eab149e7f0712a6a3eb672a76d657b049a3b3ae0c2edc2e0571df5049fe82c"), "10.11.0-windows_amd64": ("node-v10.11.0-win-x64.zip", "node-v10.11.0-win-x64", "78b2a7a4305aa108b9a82ac7586d7200ab51428c2b882d1318fb44ca300a8609"), "10.12.0-darwin_amd64": ("node-v10.12.0-darwin-x64.tar.gz", "node-v10.12.0-darwin-x64", "f275c901b9aeaacea2bf22648329c2e9ade5e1ff63a446b83446d5d4e19464cc"), "10.12.0-linux_arm64": ("node-v10.12.0-linux-arm64.tar.xz", "node-v10.12.0-linux-arm64", "b327deca4e380559c8c1fbacb9e668b49127ea998de4c8fe83912838cf786786"), "10.12.0-linux_amd64": ("node-v10.12.0-linux-x64.tar.xz", "node-v10.12.0-linux-x64", "4eba2e9a6db95745b769915d58e57df6ca6724ec1f023f76556fce30ceca2367"), "10.12.0-windows_amd64": ("node-v10.12.0-win-x64.zip", "node-v10.12.0-win-x64", "44c938cf1409562d25d23b7c6bce110b53cd2a73774bed573b2979f0d88f51f8"), "10.13.0-darwin_amd64": ("node-v10.13.0-darwin-x64.tar.gz", "node-v10.13.0-darwin-x64", "815a5d18516934a3963ace9f0574f7d41f0c0ce9186a19be3d89e039e57598c5"), "10.13.0-linux_arm64": ("node-v10.13.0-linux-arm64.tar.xz", "node-v10.13.0-linux-arm64", "1537ebe64dc34a2a9b8ab6254213079789e9d59ed0ed26987afb1da37b6a8f87"), "10.13.0-linux_amd64": ("node-v10.13.0-linux-x64.tar.xz", "node-v10.13.0-linux-x64", "0dc6dba645550b66f8f00541a428c29da7c3cde32fb7eda2eb626a9db3bbf08d"), "10.13.0-windows_amd64": ("node-v10.13.0-win-x64.zip", "node-v10.13.0-win-x64", "eb09c9e9677f1919ec1ca78623c09b2a718ec5388b72b7662d5c41e5f628a52c"), "10.14.0-darwin_amd64": ("node-v10.14.0-darwin-x64.tar.gz", "node-v10.14.0-darwin-x64", "dd044aa0ddeb5e32fefa80a13b33bafe3f7e0536e15fe93c1e81b052c2f1965c"), "10.14.0-linux_arm64": ("node-v10.14.0-linux-arm64.tar.xz", "node-v10.14.0-linux-arm64", "4d80efe675c40d6d3af697e17e33cad8af1caf50655276ca99d0c4ca8e2f2cf2"), "10.14.0-linux_amd64": ("node-v10.14.0-linux-x64.tar.xz", "node-v10.14.0-linux-x64", "5f576f9893e0335f0c1b071a42fdf8b3e302577ad6ea38237aaef08ad0ca898e"), "10.14.0-windows_amd64": ("node-v10.14.0-win-x64.zip", "node-v10.14.0-win-x64", "a3acbbdbbdb6ff6d5ae6e6f5ccea55aef83cfa54f52c080538edc3ac6326797b"), "10.14.1-darwin_amd64": ("node-v10.14.1-darwin-x64.tar.gz", "node-v10.14.1-darwin-x64", "91ebe7d6da8a40c72618ac9d0b0a8e224ae01febd3f5595b43b1a58190dcacb1"), "10.14.1-linux_arm64": ("node-v10.14.1-linux-arm64.tar.xz", "node-v10.14.1-linux-arm64", "c1ca91356b007cc7624c7a9e00f3b7bed8dd10aba959be5f55e4ff13da334828"), "10.14.1-linux_amd64": ("node-v10.14.1-linux-x64.tar.xz", "node-v10.14.1-linux-x64", "b65e735cdf61fb80f114c498c8955efe8e096e4b3e173281d68aa9d2c05b0f97"), "10.14.1-windows_amd64": ("node-v10.14.1-win-x64.zip", "node-v10.14.1-win-x64", "7d51aa233ad290eb916a4c3134815204eb34ecb0a001dcecc5ea57333030f303"), "10.14.2-darwin_amd64": ("node-v10.14.2-darwin-x64.tar.gz", "node-v10.14.2-darwin-x64", "5306da5db576d9c984167b4693600a2e3074cc5a701961279837753fa2139baa"), "10.14.2-linux_arm64": ("node-v10.14.2-linux-arm64.tar.xz", "node-v10.14.2-linux-arm64", "8493b30c99d697b24fbaa5bfb3b43108ab3e334ab674188b7b7982fef903aa04"), "10.14.2-linux_amd64": ("node-v10.14.2-linux-x64.tar.xz", "node-v10.14.2-linux-x64", "e43de13bf7bee440a106a844c1bc3a2adb8829fd58b857702c8f1838fdd02a2a"), "10.14.2-windows_amd64": ("node-v10.14.2-win-x64.zip", "node-v10.14.2-win-x64", "45841fe5ffe87378c748dcb9799507f6192c34117409b2c6c18480d112a337de"), "10.15.0-darwin_amd64": ("node-v10.15.0-darwin-x64.tar.gz", "node-v10.15.0-darwin-x64", "353402461c898c569658d0a963790476f4d9828cc6c9286d81617ee8afcba4e8"), "10.15.0-linux_arm64": ("node-v10.15.0-linux-arm64.tar.xz", "node-v10.15.0-linux-arm64", "77aa4a02c5471b6eb7ba935cbc6829889a27115353cff7226a208c08b654e972"), "10.15.0-linux_amd64": ("node-v10.15.0-linux-x64.tar.xz", "node-v10.15.0-linux-x64", "4ee8503c1133797777880ebf75dcf6ae3f9b894c66fd2d5da507e407064c13b5"), "10.15.0-windows_amd64": ("node-v10.15.0-win-x64.zip", "node-v10.15.0-win-x64", "c1dbc9372ad789cd21727cb5f63b4a44ed3eae216763959cff8e68e68c6fcfe1"), "10.15.1-darwin_amd64": ("node-v10.15.1-darwin-x64.tar.gz", "node-v10.15.1-darwin-x64", "327dcef4b61dead1ae04d2743d3390a2b7e6cc6c389c62cfcfeb0486c5a9f181"), "10.15.1-linux_arm64": ("node-v10.15.1-linux-arm64.tar.xz", "node-v10.15.1-linux-arm64", "0fb6d24972fd991f476a942b1b21aca5059f93b9302318c5883120445ee6cd54"), "10.15.1-linux_amd64": ("node-v10.15.1-linux-x64.tar.xz", "node-v10.15.1-linux-x64", "77db68544c7812e925b82ccc41cd4669fdeb191cea8e20053e3f0e86889c4fce"), "10.15.1-windows_amd64": ("node-v10.15.1-win-x64.zip", "node-v10.15.1-win-x64", "bb5bdc9363e4050c94b3f82888141b81630230f86e520abb7dde49081f1292b9"), "10.15.2-darwin_amd64": ("node-v10.15.2-darwin-x64.tar.gz", "node-v10.15.2-darwin-x64", "8bbb6c15a0572f493d33ef044d06ccd0ff7ead8daa67f9a32df3e863277568e8"), "10.15.2-linux_arm64": ("node-v10.15.2-linux-arm64.tar.xz", "node-v10.15.2-linux-arm64", "2978e82d85654505d732b40dfa58f21276d99712d5d001101eaf87100d350139"), "10.15.2-linux_amd64": ("node-v10.15.2-linux-x64.tar.xz", "node-v10.15.2-linux-x64", "c10eece562cfeef1627f0d2bde7dc0be810948f6bf9a932e30a8c3b425652015"), "10.15.2-windows_amd64": ("node-v10.15.2-win-x64.zip", "node-v10.15.2-win-x64", "d97cf4788ccea6deef037ce27c91cc1a814644b878311b71811ab04d0bb8c47f"), "10.15.3-darwin_amd64": ("node-v10.15.3-darwin-x64.tar.gz", "node-v10.15.3-darwin-x64", "7a5eaa1f69614375a695ccb62017248e5dcc15b0b8edffa7db5b52997cf992ba"), "10.15.3-linux_arm64": ("node-v10.15.3-linux-arm64.tar.xz", "node-v10.15.3-linux-arm64", "3d7abbf64bffb07c55168ca0f1c17be12b0d93affe9b6cadd39724649215fab9"), "10.15.3-linux_amd64": ("node-v10.15.3-linux-x64.tar.xz", "node-v10.15.3-linux-x64", "faddbe418064baf2226c2fcbd038c3ef4ae6f936eb952a1138c7ff8cfe862438"), "10.15.3-windows_amd64": ("node-v10.15.3-win-x64.zip", "node-v10.15.3-win-x64", "93c881fdc0455a932dd5b506a7a03df27d9fe36155c1d3f351ebfa4e20bf1c0d"), "10.16.0-darwin_amd64": ("node-v10.16.0-darwin-x64.tar.gz", "node-v10.16.0-darwin-x64", "6c009df1b724026d84ae9a838c5b382662e30f6c5563a0995532f2bece39fa9c"), "10.16.0-linux_arm64": ("node-v10.16.0-linux-arm64.tar.xz", "node-v10.16.0-linux-arm64", "ae2e74ab2f5dbff96bf0b7d8457004bf3538233916f8834740bbe2d5a35442e5"), "10.16.0-linux_amd64": ("node-v10.16.0-linux-x64.tar.xz", "node-v10.16.0-linux-x64", "1827f5b99084740234de0c506f4dd2202a696ed60f76059696747c34339b9d48"), "10.16.0-windows_amd64": ("node-v10.16.0-win-x64.zip", "node-v10.16.0-win-x64", "aa22cb357f0fb54ccbc06b19b60e37eefea5d7dd9940912675d3ed988bf9a059"), "10.16.1-darwin_amd64": ("node-v10.16.1-darwin-x64.tar.gz", "node-v10.16.1-darwin-x64", "328e61fdacfe2f6f1a049d57e248b3eafc0345747831323a14fe1edf98d9b3bb"), "10.16.1-linux_arm64": ("node-v10.16.1-linux-arm64.tar.xz", "node-v10.16.1-linux-arm64", "c46ba1a8e9b9c0490ae81f8b2b13d332ed6f5c86d172fa817f749042ab329b93"), "10.16.1-linux_amd64": ("node-v10.16.1-linux-x64.tar.xz", "node-v10.16.1-linux-x64", "127d9b2f485523805208f867fc513842570b29b4d6831773eeb6dd403a22ba9d"), "10.16.1-windows_amd64": ("node-v10.16.1-win-x64.zip", "node-v10.16.1-win-x64", "1ff8b26670e1b935b51f4b795728f29845c31a3c38b3220b4fe71fb139bc5623"), "10.16.2-darwin_amd64": ("node-v10.16.2-darwin-x64.tar.gz", "node-v10.16.2-darwin-x64", "21ee8bdb04909f553e97af7c6e41009e15d06b886dd3e2ca8a92ce3e0a148a09"), "10.16.2-linux_arm64": ("node-v10.16.2-linux-arm64.tar.xz", "node-v10.16.2-linux-arm64", "5fb2b7d3c2b6b40e237cdc172eabfac2e485ee309ac2bcfbff413de1ed79a59e"), "10.16.2-linux_amd64": ("node-v10.16.2-linux-x64.tar.xz", "node-v10.16.2-linux-x64", "406718dc2f3164b3d1981c36b68b70ea448fbbac29cefbe23ff286b3cd55f264"), "10.16.2-windows_amd64": ("node-v10.16.2-win-x64.zip", "node-v10.16.2-win-x64", "01654dc79d82e9f3c89d01c8cf1cdce68d3a9118dbe968ee86a3ffd6ee153567"), "10.16.3-darwin_amd64": ("node-v10.16.3-darwin-x64.tar.gz", "node-v10.16.3-darwin-x64", "6febc571e1543c2845fa919c6d06b36a24e4e142c91aedbe28b6ff7d296119e4"), "10.16.3-linux_arm64": ("node-v10.16.3-linux-arm64.tar.xz", "node-v10.16.3-linux-arm64", "8ee77bad022bd460bf2867a97bf56ce7ddc4aa2ace067e45995fb1721a958428"), "10.16.3-linux_amd64": ("node-v10.16.3-linux-x64.tar.xz", "node-v10.16.3-linux-x64", "d2271fd8cf997fa7447d638dfa92749ff18ca4b0d796bf89f2a82bf7800d5506"), "10.16.3-windows_amd64": ("node-v10.16.3-win-x64.zip", "node-v10.16.3-win-x64", "19aa47de7c5950d7bd71a1e878013b98d93871cc311d7185f5472e6d3f633146"), "10.17.0-darwin_amd64": ("node-v10.17.0-darwin-x64.tar.gz", "node-v10.17.0-darwin-x64", "9b96140ad74b217f216c83ddf50d1f70a4296576f6edbbbfb65d0f478015d9df"), "10.17.0-linux_arm64": ("node-v10.17.0-linux-arm64.tar.xz", "node-v10.17.0-linux-arm64", "3ab8ee2b5c9aa4d060c68667ddef70cc2960e12bcfe4a0f2de7ebc0f008bf13d"), "10.17.0-linux_amd64": ("node-v10.17.0-linux-x64.tar.xz", "node-v10.17.0-linux-x64", "2b49cd296f969ef0ffb7922719ffa6542bedb89d6c959a47c023d11ce222f5d6"), "10.17.0-windows_amd64": ("node-v10.17.0-win-x64.zip", "node-v10.17.0-win-x64", "e84a1f3685219811bb4662eb3e3b55abd0c764c24cd2b224ba31b3f9f162baf6"), "10.18.0-darwin_amd64": ("node-v10.18.0-darwin-x64.tar.gz", "node-v10.18.0-darwin-x64", "a7af53e3363e8ab654b97387bc7cf352dddb324562404c1d35fe10cba3f27e0f"), "10.18.0-linux_arm64": ("node-v10.18.0-linux-arm64.tar.xz", "node-v10.18.0-linux-arm64", "b2b34dd43ea3979890663afa270e09e09c219f046e39e8e439eeda2821cc9643"), "10.18.0-linux_amd64": ("node-v10.18.0-linux-x64.tar.xz", "node-v10.18.0-linux-x64", "eac160acfc2c5b6fca021baa9943341fea50859f19c7ccbd56669b1fe04e691e"), "10.18.0-windows_amd64": ("node-v10.18.0-win-x64.zip", "node-v10.18.0-win-x64", "56afcc9c191dfc99017725be92ac1331e23afb1930913446eb91852cb02a8687"), "10.18.1-darwin_amd64": ("node-v10.18.1-darwin-x64.tar.gz", "node-v10.18.1-darwin-x64", "2b2d3379420e626eee393cabf1c90bc55957ff5bb067b82a74eb2f92147d6757"), "10.18.1-linux_arm64": ("node-v10.18.1-linux-arm64.tar.xz", "node-v10.18.1-linux-arm64", "9a6203697e0087a1c909961481d579c76777df1df622921e4ce16198851f30fe"), "10.18.1-linux_amd64": ("node-v10.18.1-linux-x64.tar.xz", "node-v10.18.1-linux-x64", "8cc40f45c2c62529b15e83a6bbe0ac1febf57af3c5720df68067c96c0fddbbdf"), "10.18.1-windows_amd64": ("node-v10.18.1-win-x64.zip", "node-v10.18.1-win-x64", "fb27bb95c27c72f2e25d0c41309b606b2ae48ba0d6094a19f206ad1df9dc5e19"), "10.19.0-darwin_amd64": ("node-v10.19.0-darwin-x64.tar.gz", "node-v10.19.0-darwin-x64", "b16328570651be44213a2303c1f9515fc506e0a96a273806f71ed000e3ca3cb3"), "10.19.0-linux_arm64": ("node-v10.19.0-linux-arm64.tar.xz", "node-v10.19.0-linux-arm64", "77bdbf859fc38e6e860efd479b0a7b7b6bd3e7cb05337e5cc5638251eb5d3a59"), "10.19.0-linux_amd64": ("node-v10.19.0-linux-x64.tar.xz", "node-v10.19.0-linux-x64", "34127c7c6b1ba02d6d4dc3a926f38a5fb88bb37fc7f051349005ce331c7a53c6"), "10.19.0-windows_amd64": ("node-v10.19.0-win-x64.zip", "node-v10.19.0-win-x64", "210efd45a7f79cf4c350d8f575f990becdd3833cd922796a4c83b27996f5679e"), "10.20.0-darwin_amd64": ("node-v10.20.0-darwin-x64.tar.gz", "node-v10.20.0-darwin-x64", "c153832774afcae89a82efb55ed80557d1a41e1880638ad57128a9a3762d212f"), "10.20.0-linux_arm64": ("node-v10.20.0-linux-arm64.tar.xz", "node-v10.20.0-linux-arm64", "f3567924d6b7f0fa55c4ee0a7330ec0dcaeec557982794796d6b312e7053c674"), "10.20.0-linux_amd64": ("node-v10.20.0-linux-x64.tar.xz", "node-v10.20.0-linux-x64", "c5721a89feecc0e98d42386e171cb763c077f782033ddc998819edcf9d93b691"), "10.20.0-windows_amd64": ("node-v10.20.0-win-x64.zip", "node-v10.20.0-win-x64", "d266313fa22885a6ec76eea521fb8a1131b4d9fb3a57afb045a98301aeb7d24e"), "10.20.1-darwin_amd64": ("node-v10.20.1-darwin-x64.tar.gz", "node-v10.20.1-darwin-x64", "6437e364cd93be246ffb67dd40775cbb467bb8d28d8af4413123f478bb6234b9"), "10.20.1-linux_arm64": ("node-v10.20.1-linux-arm64.tar.xz", "node-v10.20.1-linux-arm64", "e33cafff94a6308916530b4b724bbc138399484d96f71b1c23677596bec268d0"), "10.20.1-linux_amd64": ("node-v10.20.1-linux-x64.tar.xz", "node-v10.20.1-linux-x64", "5e0b1fbc6cf8c2c34dc33d880670ee1bc1c1e931099de3796a96143a962c92ee"), "10.20.1-windows_amd64": ("node-v10.20.1-win-x64.zip", "node-v10.20.1-win-x64", "5e4ec0936c51047c218c0c164cc80283cd36ecd40e0a6979281d395c1be8ee10"), "10.21.0-darwin_amd64": ("node-v10.21.0-darwin-x64.tar.gz", "node-v10.21.0-darwin-x64", "596900700c4a0de0303bb4c378a1abcd63f31efc848704c5fbc1230de628577a"), "10.21.0-linux_arm64": ("node-v10.21.0-linux-arm64.tar.xz", "node-v10.21.0-linux-arm64", "3af40706ff0da7fe0baa4683ead6c74445405a2553e7373e627f24d19d4ac100"), "10.21.0-linux_amd64": ("node-v10.21.0-linux-x64.tar.xz", "node-v10.21.0-linux-x64", "1d3296763e46540047099e4910812e81c4899c0595f2d82474e2099c1e1603e2"), "10.21.0-windows_amd64": ("node-v10.21.0-win-x64.zip", "node-v10.21.0-win-x64", "03dddcdaccdb40978ddf15d189acdc20409d9a666636db2595118690ff83ce82"), "10.22.0-darwin_amd64": ("node-v10.22.0-darwin-x64.tar.gz", "node-v10.22.0-darwin-x64", "c7583a297ba9c6cfc03688a32776155d02fabf9ff45847c63b12a68d400f1dc1"), "10.22.0-linux_arm64": ("node-v10.22.0-linux-arm64.tar.xz", "node-v10.22.0-linux-arm64", "abacc6f37e8dfbe398843c7dc7b9bb7153ff6e653ad50e85d73d86088da48372"), "10.22.0-linux_amd64": ("node-v10.22.0-linux-x64.tar.xz", "node-v10.22.0-linux-x64", "ddf33e038c593d6df36b1dd4b25c1b6fa8230c615e6312ad33e80ef863e4a74f"), "10.22.0-windows_amd64": ("node-v10.22.0-win-x64.zip", "node-v10.22.0-win-x64", "931c2907450790f89aa178fa84c1adbd1f7cb7ab0a34f8bfb4af25640e8d4e06"), "11.0.0-darwin_amd64": ("node-v11.0.0-darwin-x64.tar.gz", "node-v11.0.0-darwin-x64", "f70e12d246ba35e88c5c08a195215c5c913ce66c9d95d0bd21cc1d3e69904279"), "11.0.0-linux_arm64": ("node-v11.0.0-linux-arm64.tar.xz", "node-v11.0.0-linux-arm64", "0d0c7013fd00a8e713c36aa96bcc268eeadbad2ce48d87e19849d66f4c618cad"), "11.0.0-linux_amd64": ("node-v11.0.0-linux-x64.tar.xz", "node-v11.0.0-linux-x64", "418b1a73bcafbf5dd3bc787f0440c2b4123dfecc2b239f5651f0256cb5ab606d"), "11.0.0-windows_amd64": ("node-v11.0.0-win-x64.zip", "node-v11.0.0-win-x64", "4dd3ef7f5c8181be39cd45476b22ed34b6da2bf77377b699384d426702f8c969"), "11.1.0-darwin_amd64": ("node-v11.1.0-darwin-x64.tar.gz", "node-v11.1.0-darwin-x64", "5d6b84d2b0fd6afee07c371bc815a9e4b6671b85bedcb38815310bd0f884d3c8"), "11.1.0-linux_arm64": ("node-v11.1.0-linux-arm64.tar.xz", "node-v11.1.0-linux-arm64", "cbba27e1c90701fbb9db66cc2c6cc3049aaf08adb16cabd0cad970b74cdaf6d3"), "11.1.0-linux_amd64": ("node-v11.1.0-linux-x64.tar.xz", "node-v11.1.0-linux-x64", "c70419674d932452017556080264de2b6d1105c112647dd1dd495b739456dd91"), "11.1.0-windows_amd64": ("node-v11.1.0-win-x64.zip", "node-v11.1.0-win-x64", "985e4edc758cb5f77f85cddda0155616b92f163b8d3842c542b1c8a395068418"), "11.2.0-darwin_amd64": ("node-v11.2.0-darwin-x64.tar.gz", "node-v11.2.0-darwin-x64", "cd17fafcdb21ae80fb94e455e63567c70b3bceedf982b93ae9e4aea411f6a6ea"), "11.2.0-linux_arm64": ("node-v11.2.0-linux-arm64.tar.xz", "node-v11.2.0-linux-arm64", "3e6c47a29b85030b4305bdc2e15cbe37e1b54a2338ce1790637384ce349ed1fd"), "11.2.0-linux_amd64": ("node-v11.2.0-linux-x64.tar.xz", "node-v11.2.0-linux-x64", "629a603443c275f8ecd851994b81a9c02a36343dbcbafc279cbecb9ccd9cf906"), "11.2.0-windows_amd64": ("node-v11.2.0-win-x64.zip", "node-v11.2.0-win-x64", "3440b2880b4e3b78c9c18865df263317e7d3c3e179dad960d526004dc7e6ba9a"), "11.3.0-darwin_amd64": ("node-v11.3.0-darwin-x64.tar.gz", "node-v11.3.0-darwin-x64", "54acc7bdeffae79fdd73f959712305aee1d8d487d56813b43cae96d151ec79db"), "11.3.0-linux_arm64": ("node-v11.3.0-linux-arm64.tar.xz", "node-v11.3.0-linux-arm64", "642cc3fc94a856ad6d09e76eaf869672bef925308afdad398a58f18eeaf4e4b8"), "11.3.0-linux_amd64": ("node-v11.3.0-linux-x64.tar.xz", "node-v11.3.0-linux-x64", "d37fb7fae8a185409bccf106e91d8ffa3450115852795512fc62e6da0b5e3dbb"), "11.3.0-windows_amd64": ("node-v11.3.0-win-x64.zip", "node-v11.3.0-win-x64", "b801e908ec36a07f06df388845e22e0b7f3cede7a4030896712c8ee28cdb3f05"), "11.4.0-darwin_amd64": ("node-v11.4.0-darwin-x64.tar.gz", "node-v11.4.0-darwin-x64", "05a515146d5bc397625f442a6ecbbc7f0d071a2a7efbf1e2b2ed46d728bc7b30"), "11.4.0-linux_arm64": ("node-v11.4.0-linux-arm64.tar.xz", "node-v11.4.0-linux-arm64", "c32e752e74794a4254ae4caa892b7beb3be60dba6851e8e5d637febfb659ee3a"), "11.4.0-linux_amd64": ("node-v11.4.0-linux-x64.tar.xz", "node-v11.4.0-linux-x64", "24d9be161e7fb28e761801639cb452ff223269ed53d967e5745b5c6391eb3fbd"), "11.4.0-windows_amd64": ("node-v11.4.0-win-x64.zip", "node-v11.4.0-win-x64", "30b84ab0101c8916694e6cd6c0ccb5182e4555da5e06deb080e906ef5b3893df"), "11.5.0-darwin_amd64": ("node-v11.5.0-darwin-x64.tar.gz", "node-v11.5.0-darwin-x64", "741abd58ac67b4bf8d2ef991a7487ea17e421b2248688b93be0d2f34886c6aa2"), "11.5.0-linux_arm64": ("node-v11.5.0-linux-arm64.tar.xz", "node-v11.5.0-linux-arm64", "3f1436c1de70b2e34f7a63a5af7e6b106a8ebe9289b3f7d045ac4a4856570164"), "11.5.0-linux_amd64": ("node-v11.5.0-linux-x64.tar.xz", "node-v11.5.0-linux-x64", "ada54407b505b7e6f516c753f0e49220917dd11efa5ee892d3252bdd65d4a54c"), "11.5.0-windows_amd64": ("node-v11.5.0-win-x64.zip", "node-v11.5.0-win-x64", "3692939b1bbd7ee8b0a967429eef6b1d45078c2f4fc289aae261ca5bde5a0607"), "11.6.0-darwin_amd64": ("node-v11.6.0-darwin-x64.tar.gz", "node-v11.6.0-darwin-x64", "c880063b112c48130dba8f7b058de61959ae46fddcfa363715571b22c1cbeb26"), "11.6.0-linux_arm64": ("node-v11.6.0-linux-arm64.tar.xz", "node-v11.6.0-linux-arm64", "956016db41f4f96f8e005d36c738d7c833442d09a970462552eb214027e0268a"), "11.6.0-linux_amd64": ("node-v11.6.0-linux-x64.tar.xz", "node-v11.6.0-linux-x64", "2251a6c5b332e7ea69bbefba11950cb6c27ba50fa700468711f729da6a6f5324"), "11.6.0-windows_amd64": ("node-v11.6.0-win-x64.zip", "node-v11.6.0-win-x64", "d230828c1cc9863c9768106ffee0320ba42049b594bd2689e430b872e8f0b2dd"), "11.7.0-darwin_amd64": ("node-v11.7.0-darwin-x64.tar.gz", "node-v11.7.0-darwin-x64", "873b47e6fc97aef2f73b0e8dde641967b2a84a3b63d1697b9d8813e14fb3b01c"), "11.7.0-linux_arm64": ("node-v11.7.0-linux-arm64.tar.xz", "node-v11.7.0-linux-arm64", "82b9726c6b367a43530f868f61b1b2a05c942d3decdf9d2e18b4a9bdf353c223"), "11.7.0-linux_amd64": ("node-v11.7.0-linux-x64.tar.xz", "node-v11.7.0-linux-x64", "b2a0a7dde17fe0da5f86ce5fea3da2861d652a5e702e2177ee62813ff86451c0"), "11.7.0-windows_amd64": ("node-v11.7.0-win-x64.zip", "node-v11.7.0-win-x64", "00834d16532f24583bf56d2baab03904b0220154cc712344be95e4d05c6234dd"), "11.8.0-darwin_amd64": ("node-v11.8.0-darwin-x64.tar.gz", "node-v11.8.0-darwin-x64", "fbb26b38f408c2f2324a5821062c16103f54de16d24f9f24c4e270a3a41f4832"), "11.8.0-linux_arm64": ("node-v11.8.0-linux-arm64.tar.xz", "node-v11.8.0-linux-arm64", "42b190c686cb8bafbdbf418a6c20c6785a23ba0f1a1a85af44595057a3d5e25e"), "11.8.0-linux_amd64": ("node-v11.8.0-linux-x64.tar.xz", "node-v11.8.0-linux-x64", "85ca19c495d5cac6acf6ee4a3c8dfb4489fb67fefc184c61eb4513eb5ef99a88"), "11.8.0-windows_amd64": ("node-v11.8.0-win-x64.zip", "node-v11.8.0-win-x64", "cd4db1b9e7ac29ed81d433f2de85582902670a121961aa3f350533d5b2fd44c6"), "11.9.0-darwin_amd64": ("node-v11.9.0-darwin-x64.tar.gz", "node-v11.9.0-darwin-x64", "1df3dd99d174bb8cb61cc8e2aa419a4998c7ada9454123c34991ce30632f1ef8"), "11.9.0-linux_arm64": ("node-v11.9.0-linux-arm64.tar.xz", "node-v11.9.0-linux-arm64", "f39baa8d212e9676bfa7f1601f94d789c6dc6b35caf440df6ec815d238978457"), "11.9.0-linux_amd64": ("node-v11.9.0-linux-x64.tar.xz", "node-v11.9.0-linux-x64", "9bc461fb7f5fd3344301abfda834160d5397a4e289f9749ab03ba0b7e9a4c853"), "11.9.0-windows_amd64": ("node-v11.9.0-win-x64.zip", "node-v11.9.0-win-x64", "c62c01436f632858fea0194d4168b483e1aa485c3fc72247add4899a103c2677"), "11.10.0-darwin_amd64": ("node-v11.10.0-darwin-x64.tar.gz", "node-v11.10.0-darwin-x64", "1956528c6f3934a97508e36a4855c154f40f1923ccd61e296d5a85679103e3a1"), "11.10.0-linux_arm64": ("node-v11.10.0-linux-arm64.tar.xz", "node-v11.10.0-linux-arm64", "60ed6caa90d8188a55f0dbc63f4aef263fb4863e036d32989b820a2e40582c66"), "11.10.0-linux_amd64": ("node-v11.10.0-linux-x64.tar.xz", "node-v11.10.0-linux-x64", "fe4c617aaf88b5228bce0341d1c77bbae2622d69eaa17a15b7d4bcc60c4777c5"), "11.10.0-windows_amd64": ("node-v11.10.0-win-x64.zip", "node-v11.10.0-win-x64", "c39e711aebe678455fa74edf6d8f6184d6d93e20f160197799040a0c17005dba"), "11.10.1-darwin_amd64": ("node-v11.10.1-darwin-x64.tar.gz", "node-v11.10.1-darwin-x64", "dea52b86f6875efae26fbb6d0269d9769da7ca69408b74b6ab724d4b64004b07"), "11.10.1-linux_arm64": ("node-v11.10.1-linux-arm64.tar.xz", "node-v11.10.1-linux-arm64", "b116e57906ed73c970d64e7518b08c6de236575c5cd8bf09f4c1bd668524a014"), "11.10.1-linux_amd64": ("node-v11.10.1-linux-x64.tar.xz", "node-v11.10.1-linux-x64", "414216a7e47dbfb77141dce7a4452901ae2cdb4cd0deef3ab3ab49e0b2111f82"), "11.10.1-windows_amd64": ("node-v11.10.1-win-x64.zip", "node-v11.10.1-win-x64", "80cf14abacbc6b636bc192f4eee49421f082f21cdaa9c1ea5995c38f8c1375e5"), "11.11.0-darwin_amd64": ("node-v11.11.0-darwin-x64.tar.gz", "node-v11.11.0-darwin-x64", "6b7c8d93096bf065de0d0a42e8f027c424172c82df6f015d3149a5dbfa03c1cc"), "11.11.0-linux_arm64": ("node-v11.11.0-linux-arm64.tar.xz", "node-v11.11.0-linux-arm64", "febb698e74264ec0ecc738c86347e6bfb5d27e33ed492a031626df988a5fb4f3"), "11.11.0-linux_amd64": ("node-v11.11.0-linux-x64.tar.xz", "node-v11.11.0-linux-x64", "ee09c7712e741f84948f76a72b651bf088e516c3f38569b9e6f30c38c026c262"), "11.11.0-windows_amd64": ("node-v11.11.0-win-x64.zip", "node-v11.11.0-win-x64", "154a5b7ca7033382743c4752fa465a5d9902f4abed4263a38ea3f41ffa113910"), "11.12.0-darwin_amd64": ("node-v11.12.0-darwin-x64.tar.gz", "node-v11.12.0-darwin-x64", "93d68c1af41d02b262b3383d69b46eb326707ec010b321ad5655b91c4956e783"), "11.12.0-linux_arm64": ("node-v11.12.0-linux-arm64.tar.xz", "node-v11.12.0-linux-arm64", "9e89838e290c9bb478351bd403707d0b741ec56021c379c9f6da515a4cd1064a"), "11.12.0-linux_amd64": ("node-v11.12.0-linux-x64.tar.xz", "node-v11.12.0-linux-x64", "1c6bb93a24eda832708c1c10ec20316e1e4f30b3cfca9c5ee5d446762414b116"), "11.12.0-windows_amd64": ("node-v11.12.0-win-x64.zip", "node-v11.12.0-win-x64", "68e5bca1d6dd6b3de20870e7c593f9a890c48d2c9c83e15034baad6f7c0da426"), "11.13.0-darwin_amd64": ("node-v11.13.0-darwin-x64.tar.gz", "node-v11.13.0-darwin-x64", "c1a8f94b4778dad2d9f513cfdf9091810dc733a2daf4fa7e03d49ad133415b5d"), "11.13.0-linux_arm64": ("node-v11.13.0-linux-arm64.tar.xz", "node-v11.13.0-linux-arm64", "0edb29004fdbb5808331e765b4adde8b025a13d6619f49fec60a14582aba9ed7"), "11.13.0-linux_amd64": ("node-v11.13.0-linux-x64.tar.xz", "node-v11.13.0-linux-x64", "c2ae3caced5f181df282a6974ab3f5e232b5decb821aa8ea8fe758b0e0528223"), "11.13.0-windows_amd64": ("node-v11.13.0-win-x64.zip", "node-v11.13.0-win-x64", "f3dafd1f19841244f8f12952f9919c0a2857f6920b11f2a89554b061cd5a4525"), "11.14.0-darwin_amd64": ("node-v11.14.0-darwin-x64.tar.gz", "node-v11.14.0-darwin-x64", "37b8db4f6700a4b5aa3b6d4283538753953f6293aff99866aa9a81038848a4d9"), "11.14.0-linux_arm64": ("node-v11.14.0-linux-arm64.tar.xz", "node-v11.14.0-linux-arm64", "3d463f3b48e1060027f8a552657de6f3ee4724d718d546aa4ea5c301ee4ed083"), "11.14.0-linux_amd64": ("node-v11.14.0-linux-x64.tar.xz", "node-v11.14.0-linux-x64", "89e2cb0effa9bf075ee8bb6d92a6a50f7ccfdad03dd687f52ecdfab91230f9a1"), "11.14.0-windows_amd64": ("node-v11.14.0-win-x64.zip", "node-v11.14.0-win-x64", "58a5d3316c04335ff3da2ce66b89f3cce86b1d1ca878d1d6d68478160c66dc12"), "11.15.0-darwin_amd64": ("node-v11.15.0-darwin-x64.tar.gz", "node-v11.15.0-darwin-x64", "e953b657b1049e1de509a3fd0700cfeecd175f75a0d141d71393aa0d71fa29a9"), "11.15.0-linux_arm64": ("node-v11.15.0-linux-arm64.tar.xz", "node-v11.15.0-linux-arm64", "e458aa4c69da9ca2ae566c8eb56dc8b36d573b415bfd8eebca4ff2229fc4983d"), "11.15.0-linux_amd64": ("node-v11.15.0-linux-x64.tar.xz", "node-v11.15.0-linux-x64", "17424aef198fa322b93c79217ce7e8cdd264fed40383abbbd3e63c305ce1d7d8"), "11.15.0-windows_amd64": ("node-v11.15.0-win-x64.zip", "node-v11.15.0-win-x64", "f3cef50acf566724a5ec5df7697fb527d7339cafdae6c7c406a39358aee6cdf8"), "12.0.0-darwin_amd64": ("node-v12.0.0-darwin-x64.tar.gz", "node-v12.0.0-darwin-x64", "92c81a284e909424b50dd01e175260b75bbbdb487fdfe1885229817187ea76bc"), "12.0.0-linux_arm64": ("node-v12.0.0-linux-arm64.tar.xz", "node-v12.0.0-linux-arm64", "2ac36aa51f76654a8914d41a32bd5c3d3213cba14eea84abd9919d022b5694b4"), "12.0.0-linux_amd64": ("node-v12.0.0-linux-x64.tar.xz", "node-v12.0.0-linux-x64", "7a5609167265954cfb912e4dc8f36e5469335b6be1bb11d60d8427f92c03f5f9"), "12.0.0-windows_amd64": ("node-v12.0.0-win-x64.zip", "node-v12.0.0-win-x64", "96ab5f9f61d75daf3fb1072930b6e9249f15b77bc3b3dca516ae8439dc1500fb"), "12.1.0-darwin_amd64": ("node-v12.1.0-darwin-x64.tar.gz", "node-v12.1.0-darwin-x64", "57c592b13940aa44611aec08e7b425f35565a2c95c51736f433cb36eb65105b7"), "12.1.0-linux_arm64": ("node-v12.1.0-linux-arm64.tar.xz", "node-v12.1.0-linux-arm64", "67805a7976bef30d0e12211f18a99c6de405931e493fd32f451512473661ee10"), "12.1.0-linux_amd64": ("node-v12.1.0-linux-x64.tar.xz", "node-v12.1.0-linux-x64", "331c43176a20e705c6f4fdb61c69fee44dd3c2c93a20410be2c13b4f8515ef7b"), "12.1.0-windows_amd64": ("node-v12.1.0-win-x64.zip", "node-v12.1.0-win-x64", "6dc3ef4a6b4ce527f187270a1b0c5560771126df487ab9ddc4c3cd3b37d57eb6"), "12.2.0-darwin_amd64": ("node-v12.2.0-darwin-x64.tar.gz", "node-v12.2.0-darwin-x64", "c72ae8a2b989138c6e6e9b393812502df8c28546a016cf24e7a82dd27e3838af"), "12.2.0-linux_arm64": ("node-v12.2.0-linux-arm64.tar.xz", "node-v12.2.0-linux-arm64", "42e4a5c6ad0b402e281daf46a27a269249bdb8b4e31ff8869701aaddac2cc8c4"), "12.2.0-linux_amd64": ("node-v12.2.0-linux-x64.tar.xz", "node-v12.2.0-linux-x64", "89059969861606e2a435ff2619c4df6f41c040120e507d9c4f03374353357307"), "12.2.0-windows_amd64": ("node-v12.2.0-win-x64.zip", "node-v12.2.0-win-x64", "c1e7fb3c1c15d8f2ab5c1db9c9662097f9c682164b3f7397955ccce946442c97"), "12.3.0-darwin_amd64": ("node-v12.3.0-darwin-x64.tar.gz", "node-v12.3.0-darwin-x64", "4a9faa038fb4e6e930a0fecd9818a4820b4ca91d1c45a1c1279fe49cdbd28160"), "12.3.0-linux_arm64": ("node-v12.3.0-linux-arm64.tar.xz", "node-v12.3.0-linux-arm64", "3d6e7046b938ff1f2535bdcc892a82abf44d875d1e96779cc3ea9a074ccfa200"), "12.3.0-linux_amd64": ("node-v12.3.0-linux-x64.tar.xz", "node-v12.3.0-linux-x64", "2ce2c7a4d7fe3c560415e8dcbc5905a66a8bf28e2a2b2cff7e7a4eeb5753015d"), "12.3.0-windows_amd64": ("node-v12.3.0-win-x64.zip", "node-v12.3.0-win-x64", "b36c9f9809c90ce704465f066861314d6e33176a5d45da14c1519c3e4f35063e"), "12.3.1-darwin_amd64": ("node-v12.3.1-darwin-x64.tar.gz", "node-v12.3.1-darwin-x64", "b9c979f63a356090d8ff88ed141fd856ad853165c73633794a9d3a060334378e"), "12.3.1-linux_arm64": ("node-v12.3.1-linux-arm64.tar.xz", "node-v12.3.1-linux-arm64", "88df7f2e0c4a58661bb79b637daa417929efc6c4d6a77bba42a5127c5c383257"), "12.3.1-linux_amd64": ("node-v12.3.1-linux-x64.tar.xz", "node-v12.3.1-linux-x64", "46f52868c0643fe0d167ce24c3c873880c8e1494276c89c07114fb099da4f75a"), "12.3.1-windows_amd64": ("node-v12.3.1-win-x64.zip", "node-v12.3.1-win-x64", "aac3c4543f846c7ebf63e1498dec7955119dffffe65722bd8c6d2124ed4ecbd7"), "12.4.0-darwin_amd64": ("node-v12.4.0-darwin-x64.tar.gz", "node-v12.4.0-darwin-x64", "aaff97d59cda775165ef966ae74e70f55f3267e86d735ed3740ae9bf1d40531e"), "12.4.0-linux_arm64": ("node-v12.4.0-linux-arm64.tar.xz", "node-v12.4.0-linux-arm64", "bb2e7eabebdceb52424516dabce94cb37f55419e6ed19493916843a323c423cd"), "12.4.0-linux_amd64": ("node-v12.4.0-linux-x64.tar.xz", "node-v12.4.0-linux-x64", "9aec6a2a50c1791704a6069cbda6da62781361e44814d024e8bbaaf0deb41c5e"), "12.4.0-windows_amd64": ("node-v12.4.0-win-x64.zip", "node-v12.4.0-win-x64", "ec8623e2528a35d3219200308e7ed41e24d4f7cd96530a4e6ac2513e44f7fad1"), "12.5.0-darwin_amd64": ("node-v12.5.0-darwin-x64.tar.gz", "node-v12.5.0-darwin-x64", "a9ba9f584f015f1705063c10dd8d84d43f5b09dc7ecf4ee3968ab1ff1fe5d2b5"), "12.5.0-linux_arm64": ("node-v12.5.0-linux-arm64.tar.xz", "node-v12.5.0-linux-arm64", "d43b71a97f5484d13b655a8a0c1b1c0fc7e83b3719063cc362fe557d6e26bd69"), "12.5.0-linux_amd64": ("node-v12.5.0-linux-x64.tar.xz", "node-v12.5.0-linux-x64", "37c0c539aae69370f3c014cc4947748ce45ac5fa560f9b085724f22029834b27"), "12.5.0-windows_amd64": ("node-v12.5.0-win-x64.zip", "node-v12.5.0-win-x64", "f1b426fcd39ffdfec5d8ba60c6842cc11e9f49269cd49bc34c4fcee0517ddf66"), "12.6.0-darwin_amd64": ("node-v12.6.0-darwin-x64.tar.gz", "node-v12.6.0-darwin-x64", "004b7992a2621eb35a47c94d258510ca5744b5a8072364f235dc7e3d4bff7457"), "12.6.0-linux_arm64": ("node-v12.6.0-linux-arm64.tar.xz", "node-v12.6.0-linux-arm64", "b7a6580f0c5406b990b3c9f0d91297b103e38e2752b8b745c4d15310a9dd79d1"), "12.6.0-linux_amd64": ("node-v12.6.0-linux-x64.tar.xz", "node-v12.6.0-linux-x64", "1ac14567e2be5562df209900e28430bd11575d985a85e8a6df2743428570de33"), "12.6.0-windows_amd64": ("node-v12.6.0-win-x64.zip", "node-v12.6.0-win-x64", "0c5ac670c5bb0ea0d389bb7269cb84104702826f791a1d057eae02cdb9eed717"), "12.7.0-darwin_amd64": ("node-v12.7.0-darwin-x64.tar.gz", "node-v12.7.0-darwin-x64", "1a76bea7f7ed8c5c921852269ddd1300c9baba2f1e3f0377200a22c22cdea177"), "12.7.0-linux_arm64": ("node-v12.7.0-linux-arm64.tar.xz", "node-v12.7.0-linux-arm64", "abc4500eff8437503d475726b8ac2ed3463d2982bd66925a782f91b7d96e31de"), "12.7.0-linux_amd64": ("node-v12.7.0-linux-x64.tar.xz", "node-v12.7.0-linux-x64", "95867fdcfd4f821d84b3dd9fab5803fb29e093e911f2ab3c7111bcaf8bd5b9da"), "12.7.0-windows_amd64": ("node-v12.7.0-win-x64.zip", "node-v12.7.0-win-x64", "68802316ca4eb4d72ec5f9ff837752a6ec8cd73537ad7c346f30899ee523f4b7"), "12.8.0-darwin_amd64": ("node-v12.8.0-darwin-x64.tar.gz", "node-v12.8.0-darwin-x64", "5229571a1736befd6426dc0a6907be416e9f5c24695e3ef275ed2ba70f496499"), "12.8.0-linux_arm64": ("node-v12.8.0-linux-arm64.tar.xz", "node-v12.8.0-linux-arm64", "9f22aff38a8622b05821129f69dbe90695e01166f55c8d2a39b6c6a5aef8c6a8"), "12.8.0-linux_amd64": ("node-v12.8.0-linux-x64.tar.xz", "node-v12.8.0-linux-x64", "b6a9ab2e6e872375e0e27eda0698820a64495b31b1beab36cc54f9876b3a2052"), "12.8.0-windows_amd64": ("node-v12.8.0-win-x64.zip", "node-v12.8.0-win-x64", "b295aedebde069c4148534a9dfb2394ceba28cf367ddd8204a27d69c095a9e00"), "12.8.1-darwin_amd64": ("node-v12.8.1-darwin-x64.tar.gz", "node-v12.8.1-darwin-x64", "caccf8b409af342e35672cc766430587664f88d01dab622a5de44c8be1336e44"), "12.8.1-linux_arm64": ("node-v12.8.1-linux-arm64.tar.xz", "node-v12.8.1-linux-arm64", "3707240c402aae0b5879ce1ba17b32ebd224d47f5147639c6881a1b71ce65383"), "12.8.1-linux_amd64": ("node-v12.8.1-linux-x64.tar.xz", "node-v12.8.1-linux-x64", "1c7cf61cb8fa98a76d92445823d6dd1649e985899e16900b39eacdd8cd4094f3"), "12.8.1-windows_amd64": ("node-v12.8.1-win-x64.zip", "node-v12.8.1-win-x64", "c81ecaa03dc882dde36087c854e4831c13d3eb237f262f9ce74ccc6f156684da"), "12.9.0-darwin_amd64": ("node-v12.9.0-darwin-x64.tar.gz", "node-v12.9.0-darwin-x64", "24c1f0c93e485961446814662db942f1b309d843fb4ecbe50466d9857a51b343"), "12.9.0-linux_arm64": ("node-v12.9.0-linux-arm64.tar.xz", "node-v12.9.0-linux-arm64", "f7f6f102d097d64eba26f84f2760597f9831886ef7d0db3cba88459847f2743d"), "12.9.0-linux_amd64": ("node-v12.9.0-linux-x64.tar.xz", "node-v12.9.0-linux-x64", "7110bdd16e397870142ff0e8d92d4a4502d43ec047d970c843a9a4e5f9e79283"), "12.9.0-windows_amd64": ("node-v12.9.0-win-x64.zip", "node-v12.9.0-win-x64", "b5f05deb31ac04b9c3a487542daf151e01c05017403a56ba443da623f36b153b"), "12.9.1-darwin_amd64": ("node-v12.9.1-darwin-x64.tar.gz", "node-v12.9.1-darwin-x64", "9aaf29d30056e2233fd15dfac56eec12e8342d91bb6c13d54fb5e599383dddb9"), "12.9.1-linux_arm64": ("node-v12.9.1-linux-arm64.tar.xz", "node-v12.9.1-linux-arm64", "b6d986faf3a77b6c353c344645c93f2a0e0436c43865e6c215a24301a076a11f"), "12.9.1-linux_amd64": ("node-v12.9.1-linux-x64.tar.xz", "node-v12.9.1-linux-x64", "680a1263c9f5f91adadcada549f0a9c29f1b26d09658d2b501c334c3f63719e5"), "12.9.1-windows_amd64": ("node-v12.9.1-win-x64.zip", "node-v12.9.1-win-x64", "6a4e54bda091bd02dbd8ff1b9f6671e036297da012a53891e3834d4bf4bed297"), "12.10.0-darwin_amd64": ("node-v12.10.0-darwin-x64.tar.gz", "node-v12.10.0-darwin-x64", "4c16d1f6454f5dc3977ad00cea123792b8d4e1d6d1bf42bbc82a4202039a5971"), "12.10.0-linux_arm64": ("node-v12.10.0-linux-arm64.tar.xz", "node-v12.10.0-linux-arm64", "fa1afb9e8cfd964867351b6dac6cd918784ff309291612251c4745aeb0b10e02"), "12.10.0-linux_amd64": ("node-v12.10.0-linux-x64.tar.xz", "node-v12.10.0-linux-x64", "e8d2e6b62dd8183dc59a139a9ca3edc7c419a0d3d92e90fea9cb0ad52489843a"), "12.10.0-windows_amd64": ("node-v12.10.0-win-x64.zip", "node-v12.10.0-win-x64", "de341476711c71f82d06fabcc9874c1ff9e865fd7274334d64a67b1e31a53fd0"), "12.11.0-darwin_amd64": ("node-v12.11.0-darwin-x64.tar.gz", "node-v12.11.0-darwin-x64", "a0fd5c1c9e67099f52b73c732aa52a878c6ff67f50ff0e94c2c5628a87455130"), "12.11.0-linux_arm64": ("node-v12.11.0-linux-arm64.tar.xz", "node-v12.11.0-linux-arm64", "d1126439ff6d079b682a7cd6308cb226afd247e5cb0f7cc60cfb0e609a096622"), "12.11.0-linux_amd64": ("node-v12.11.0-linux-x64.tar.xz", "node-v12.11.0-linux-x64", "c0dc88110ac3ee095e3d09077545435b72d4cd52e35c43cd3fa666cff7446d46"), "12.11.0-windows_amd64": ("node-v12.11.0-win-x64.zip", "node-v12.11.0-win-x64", "457157358bd029196d47865dee66f8c263a3a4a5a8cdd1c0a8cf43ac45e9eda3"), "12.11.1-darwin_amd64": ("node-v12.11.1-darwin-x64.tar.gz", "node-v12.11.1-darwin-x64", "7dd24ee6d81668e65ce1b77b4bb4cdaf517d8f80bb19740d286606028506970b"), "12.11.1-linux_arm64": ("node-v12.11.1-linux-arm64.tar.xz", "node-v12.11.1-linux-arm64", "12777294258da80410fd7d5cbed46ead5d3cabacf376ee10ddb9e1a335b114e7"), "12.11.1-linux_amd64": ("node-v12.11.1-linux-x64.tar.xz", "node-v12.11.1-linux-x64", "00f7a0b59ff38c1c74d81732df925aa5ac5788b58412437327421f796878793d"), "12.11.1-windows_amd64": ("node-v12.11.1-win-x64.zip", "node-v12.11.1-win-x64", "0bab4473cd2ba03511b8859ddf2202bb012d5c541f9d57b555a5bbbf101fcb35"), "12.12.0-darwin_amd64": ("node-v12.12.0-darwin-x64.tar.gz", "node-v12.12.0-darwin-x64", "14a98237e8859bc22695719dbc2e9db5529a33ada0c6c377df4dc27b5622ffbb"), "12.12.0-linux_arm64": ("node-v12.12.0-linux-arm64.tar.xz", "node-v12.12.0-linux-arm64", "ad536aba218df64d8e901b28985f4c5f72f634bf903c449b0c84929f6940853c"), "12.12.0-linux_amd64": ("node-v12.12.0-linux-x64.tar.xz", "node-v12.12.0-linux-x64", "e3a38dfaf1233a3c43c2528869af52e74575781984369a5b705c89d84dfa3ac2"), "12.12.0-windows_amd64": ("node-v12.12.0-win-x64.zip", "node-v12.12.0-win-x64", "930e7bcd2ae5bcb1d4163c2adf09a392ed0e9a824b069d19daeb4f9f3430a195"), "12.13.0-darwin_amd64": ("node-v12.13.0-darwin-x64.tar.gz", "node-v12.13.0-darwin-x64", "49a7374670a111b033ce16611b20fd1aafd3296bbc662b184fe8fb26a29c22cc"), "12.13.0-linux_arm64": ("node-v12.13.0-linux-arm64.tar.xz", "node-v12.13.0-linux-arm64", "d65b3ce27639f15ae22941e3ff98a1c900aa9049fcc15518038615b0676037d5"), "12.13.0-linux_amd64": ("node-v12.13.0-linux-x64.tar.xz", "node-v12.13.0-linux-x64", "7a57ef2cb3036d7eacd50ae7ba07245a28336a93652641c065f747adb2a356d9"), "12.13.0-windows_amd64": ("node-v12.13.0-win-x64.zip", "node-v12.13.0-win-x64", "6f920cebeecb4957b4ef0def6d9b04c49d4582864f8d1a207ce8d0665865781a"), "12.13.1-darwin_amd64": ("node-v12.13.1-darwin-x64.tar.gz", "node-v12.13.1-darwin-x64", "12d14c7fbd98876a163a2b7e0aeb13657dc3e967e993efaf2dcacbe475a285e8"), "12.13.1-linux_arm64": ("node-v12.13.1-linux-arm64.tar.xz", "node-v12.13.1-linux-arm64", "3aef0178a8ab74c8e5c133e23d1896e53ed5c273415d165a0e72e005f5467cba"), "12.13.1-linux_amd64": ("node-v12.13.1-linux-x64.tar.xz", "node-v12.13.1-linux-x64", "aca06db37589966829b1ef0f163a5859b156a1d8e51b415bf47590f667c30a25"), "12.13.1-windows_amd64": ("node-v12.13.1-win-x64.zip", "node-v12.13.1-win-x64", "db33fb758ba49b96d073311ef9e9134b51bf96246ffd938909b2e02c65a6e890"), "12.14.0-darwin_amd64": ("node-v12.14.0-darwin-x64.tar.gz", "node-v12.14.0-darwin-x64", "5f3170b346b29e6902c0ca7e0993e3d1b4b650615348aa866de17ad965377048"), "12.14.0-linux_arm64": ("node-v12.14.0-linux-arm64.tar.xz", "node-v12.14.0-linux-arm64", "733b4f71ccdf114038bbe0f20574a1e8f4f60b53d39caf445f518745596eadda"), "12.14.0-linux_amd64": ("node-v12.14.0-linux-x64.tar.xz", "node-v12.14.0-linux-x64", "82ae74ee0a204de7ebf7767eaa8e382518d9b49668dcbb5bd7fd003154445d1f"), "12.14.0-windows_amd64": ("node-v12.14.0-win-x64.zip", "node-v12.14.0-win-x64", "526f4b01ffb270bdd8213b58b38843fa3c88f03c89b1898c641bc0e32607913e"), "12.14.1-darwin_amd64": ("node-v12.14.1-darwin-x64.tar.gz", "node-v12.14.1-darwin-x64", "0be10a28737527a1e5e3784d3ad844d742fe8b0718acd701fd48f718fd3af78f"), "12.14.1-linux_arm64": ("node-v12.14.1-linux-arm64.tar.xz", "node-v12.14.1-linux-arm64", "6cd28a5e6340f596aec8dbfd6720f444f011e6b9018622290a60dbd17f9baff6"), "12.14.1-linux_amd64": ("node-v12.14.1-linux-x64.tar.xz", "node-v12.14.1-linux-x64", "07cfcaa0aa9d0fcb6e99725408d9e0b07be03b844701588e3ab5dbc395b98e1b"), "12.14.1-windows_amd64": ("node-v12.14.1-win-x64.zip", "node-v12.14.1-win-x64", "1f96ccce3ba045ecea3f458e189500adb90b8bc1a34de5d82fc10a5bf66ce7e3"), "12.15.0-darwin_amd64": ("node-v12.15.0-darwin-x64.tar.gz", "node-v12.15.0-darwin-x64", "b6449cec39ac15b37abe4e59ef0eae50dcdfbf060c5276a01cc590f2a3372b7d"), "12.15.0-linux_arm64": ("node-v12.15.0-linux-arm64.tar.xz", "node-v12.15.0-linux-arm64", "c582cb65a0ec7f648618d3d33b4f87c374a3f930518b57eca1693828c965d6e5"), "12.15.0-linux_amd64": ("node-v12.15.0-linux-x64.tar.xz", "node-v12.15.0-linux-x64", "63df953deb091c1500e1044bef01d1953117970e757e74e90d915e1a4a0d1c9c"), "12.15.0-windows_amd64": ("node-v12.15.0-win-x64.zip", "node-v12.15.0-win-x64", "48b29cab597962f12b0aac081522e6192bc8642c582cd0fc1bf51557273888da"), "12.16.0-darwin_amd64": ("node-v12.16.0-darwin-x64.tar.gz", "node-v12.16.0-darwin-x64", "af3b9bbfdd9ae1b46390e7deeb77a2c1d8dbc6fb4171bbb0cfe8686fc1ecef1d"), "12.16.0-linux_arm64": ("node-v12.16.0-linux-arm64.tar.xz", "node-v12.16.0-linux-arm64", "f2d97187bd8d3175bf6266193107a030bfb827003d57ba6dd21de16aa622548d"), "12.16.0-linux_amd64": ("node-v12.16.0-linux-x64.tar.xz", "node-v12.16.0-linux-x64", "e8c38659540766db9d85bd7325ba8cce8ded56204f84507f73fdb41a26d9bd73"), "12.16.0-windows_amd64": ("node-v12.16.0-win-x64.zip", "node-v12.16.0-win-x64", "9a590dd064b491fbd40b366ae4a119fe6cef516a25fb4d78d7c2a64b37574da8"), "12.16.1-darwin_amd64": ("node-v12.16.1-darwin-x64.tar.gz", "node-v12.16.1-darwin-x64", "34895bce210ca4b3cf19cd480e6563588880dd7f5d798f3782e3650580d35920"), "12.16.1-linux_arm64": ("node-v12.16.1-linux-arm64.tar.xz", "node-v12.16.1-linux-arm64", "396c43ba507b8ec33c70cdc6f73b4a7c725bddb3f74a85a8b8ed77b436856fed"), "12.16.1-linux_amd64": ("node-v12.16.1-linux-x64.tar.xz", "node-v12.16.1-linux-x64", "b826753f14df9771609ffb8e7d2cc4cb395247cb704cf0cea0f04132d9cf3505"), "12.16.1-windows_amd64": ("node-v12.16.1-win-x64.zip", "node-v12.16.1-win-x64", "b93b73572c5e495154a9823d494de5729c77d1c83b041171154c4b5f3f76b590"), "12.16.2-darwin_amd64": ("node-v12.16.2-darwin-x64.tar.gz", "node-v12.16.2-darwin-x64", "483954e311a5ff649ddf32b473f635a58890790d284b5788bdd8d7ff850c6db2"), "12.16.2-linux_arm64": ("node-v12.16.2-linux-arm64.tar.xz", "node-v12.16.2-linux-arm64", "c88005467f6dcdb621d454b35ec39bb42e165c6a2e1cee74cabcdc01af307e81"), "12.16.2-linux_amd64": ("node-v12.16.2-linux-x64.tar.xz", "node-v12.16.2-linux-x64", "f94a6eb06e80ef2794ebf51a2baed0b89ed307d3196ab5579f16c0fa7cc62901"), "12.16.2-windows_amd64": ("node-v12.16.2-win-x64.zip", "node-v12.16.2-win-x64", "f34303a49384aee2e5daab5f248c5a719e850a9ebb19e7098fe2bfffb26efe03"), "12.16.3-darwin_amd64": ("node-v12.16.3-darwin-x64.tar.gz", "node-v12.16.3-darwin-x64", "0718812b3ab8e77e8d1354f4d10428ae99d78f721bdcceee527c4b592ea7fed0"), "12.16.3-linux_arm64": ("node-v12.16.3-linux-arm64.tar.xz", "node-v12.16.3-linux-arm64", "8311f513a7d1911200502dd3e00142cef56d600c851d5870f68d939802205b73"), "12.16.3-linux_amd64": ("node-v12.16.3-linux-x64.tar.xz", "node-v12.16.3-linux-x64", "1956e196e3c3c8ef5f0c45db76d7c1245af4ccdda2b7ab30a57ce91d6e165caa"), "12.16.3-windows_amd64": ("node-v12.16.3-win-x64.zip", "node-v12.16.3-win-x64", "d0bb0e0b1f1a948529ddd543e2cfe0bfe209eb843defc70217b3d2f84cbf3b78"), "12.17.0-darwin_amd64": ("node-v12.17.0-darwin-x64.tar.gz", "node-v12.17.0-darwin-x64", "8c3b9459462b8adaa10549f4da6a5ff5cdfaf7140a8a8020a87cc96d79022cc0"), "12.17.0-linux_arm64": ("node-v12.17.0-linux-arm64.tar.xz", "node-v12.17.0-linux-arm64", "54a0dbb203ff1700341d258cefa304bd31044bf0226e9e59a0de1128418cb5aa"), "12.17.0-linux_amd64": ("node-v12.17.0-linux-x64.tar.xz", "node-v12.17.0-linux-x64", "988653492a4f422fb112421c5c9d1c140146b665b480c2b24c66fffdd0b88a88"), "12.17.0-windows_amd64": ("node-v12.17.0-win-x64.zip", "node-v12.17.0-win-x64", "f3a64dc6ad48577f1f81521aa144c028beb7e353d0fcd05d7b420a72a84f50fc"), "12.18.0-darwin_amd64": ("node-v12.18.0-darwin-x64.tar.gz", "node-v12.18.0-darwin-x64", "11fe50e670315d2d3c46317d23f7a019f46a3d08b534fbadee9a1bc3d4f81852"), "12.18.0-linux_arm64": ("node-v12.18.0-linux-arm64.tar.xz", "node-v12.18.0-linux-arm64", "51b301102984ff73a74894396b774d00259bb3bb8c1de7c82674713acec7a214"), "12.18.0-linux_amd64": ("node-v12.18.0-linux-x64.tar.xz", "node-v12.18.0-linux-x64", "2febc2506c298048bfddf896056be6191c1f08716876d960a4990bd63a7fe05a"), "12.18.0-windows_amd64": ("node-v12.18.0-win-x64.zip", "node-v12.18.0-win-x64", "ca73a989eba5e863971cb600e5520cb4c5edf9c600fe8f76d9e4771ad03b5d08"), "12.18.1-darwin_amd64": ("node-v12.18.1-darwin-x64.tar.gz", "node-v12.18.1-darwin-x64", "80e1d644fe78838da47cd16de234b612c20e06ffe14447125db9622e381ed1ba"), "12.18.1-linux_arm64": ("node-v12.18.1-linux-arm64.tar.xz", "node-v12.18.1-linux-arm64", "b6683e6e887c6c44a3fe9ff419e80d36eaafed39eb2c2d1b04ee54b440a03217"), "12.18.1-linux_amd64": ("node-v12.18.1-linux-x64.tar.xz", "node-v12.18.1-linux-x64", "863f816967e297c9eb221ad3cf32521f7ac46fffc66750e60f159ed63809affa"), "12.18.1-windows_amd64": ("node-v12.18.1-win-x64.zip", "node-v12.18.1-win-x64", "93039ebfc7c5bfad168b015f77667757925070fff3ae84c3eb73348b3123a82a"), "12.18.2-darwin_amd64": ("node-v12.18.2-darwin-x64.tar.gz", "node-v12.18.2-darwin-x64", "6e6e7311943e4f3880db5038b8b8034a30469342fe436c8aaacf2997dfa305a6"), "12.18.2-linux_arm64": ("node-v12.18.2-linux-arm64.tar.xz", "node-v12.18.2-linux-arm64", "d7d3a05f36de9eb079b7b25e0fc1aaa0c960afdf36fb24b498f7303365eb945c"), "12.18.2-linux_amd64": ("node-v12.18.2-linux-x64.tar.xz", "node-v12.18.2-linux-x64", "b8dc634798ee783482c2ae1755bd7dff09d83fa7bb037cdc370b601d0a5e5cbb"), "12.18.2-windows_amd64": ("node-v12.18.2-win-x64.zip", "node-v12.18.2-win-x64", "91fdd5b5df16873c63541bc844c9eb66870d366b2076d114f9ab7528b5e2f9a3"), "12.18.3-darwin_amd64": ("node-v12.18.3-darwin-x64.tar.gz", "node-v12.18.3-darwin-x64", "af376caf114bdd5d7e566dbf7590e9077ffc01f9b2692eb2651f31d7219a30bb"), "12.18.3-linux_arm64": ("node-v12.18.3-linux-arm64.tar.xz", "node-v12.18.3-linux-arm64", "d330aab40029afc34f8b5d1abc2e67be233df4b31331cf08d538be2a666737bb"), "12.18.3-linux_amd64": ("node-v12.18.3-linux-x64.tar.xz", "node-v12.18.3-linux-x64", "b79e02e48d0a1ee4cd4ae138de97fda5413542f2a4f441a7d0e189697b8da563"), "12.18.3-windows_amd64": ("node-v12.18.3-win-x64.zip", "node-v12.18.3-win-x64", "1fcd30c09f0ac9fbecf45161519eff2cf621c199eef4663b1db41b3f2fef4041"), "13.0.0-darwin_amd64": ("node-v13.0.0-darwin-x64.tar.gz", "node-v13.0.0-darwin-x64", "612556a8c7e6b4cd08f6134b8afe5a05bf84c0121225fa9c542be1c98af04a35"), "13.0.0-linux_arm64": ("node-v13.0.0-linux-arm64.tar.xz", "node-v13.0.0-linux-arm64", "6ed882e17123861b5b81683de2b2c86be02c5916ef0beda04fd176329888fd12"), "13.0.0-linux_amd64": ("node-v13.0.0-linux-x64.tar.xz", "node-v13.0.0-linux-x64", "799d890f00a3a2a7415b813b286d32d38573df6525bc8ef80f40077cdd210d39"), "13.0.0-windows_amd64": ("node-v13.0.0-win-x64.zip", "node-v13.0.0-win-x64", "8ffcefde5e080d70790a9a2e1aab0724cc88b5526d5128b53fc59bf94f6ad5de"), "13.0.1-darwin_amd64": ("node-v13.0.1-darwin-x64.tar.gz", "node-v13.0.1-darwin-x64", "25621359a51ff218ecf4bb2ffc657815154230a967224f22b722840a2b9ad061"), "13.0.1-linux_arm64": ("node-v13.0.1-linux-arm64.tar.xz", "node-v13.0.1-linux-arm64", "ad6e051aede160d8be5cbab9c60a155b06a5696e8088d895e6eff3dd36f9a688"), "13.0.1-linux_amd64": ("node-v13.0.1-linux-x64.tar.xz", "node-v13.0.1-linux-x64", "d5657c19bb30b267bf2e0f2b61f6a96d8955aa30b69240f22d3fd2c65e123cf7"), "13.0.1-windows_amd64": ("node-v13.0.1-win-x64.zip", "node-v13.0.1-win-x64", "1a2552b630651e08e9027339f71a65fbe3944540f0875563ea25639a091e1f33"), "13.1.0-darwin_amd64": ("node-v13.1.0-darwin-x64.tar.gz", "node-v13.1.0-darwin-x64", "6501c1bcf2babb5b9c81dcff8b52021f726da8f6ee28df1637acade1a16c7d39"), "13.1.0-linux_arm64": ("node-v13.1.0-linux-arm64.tar.xz", "node-v13.1.0-linux-arm64", "646d597e6b0dc400429e46b703a5135c77bd71e653ea4c8254d0b60c17b6ec1d"), "13.1.0-linux_amd64": ("node-v13.1.0-linux-x64.tar.xz", "node-v13.1.0-linux-x64", "2eecb5a4b7975c3b406bee36b12c9a29e8bedf9553c88cad310b8f076db00881"), "13.1.0-windows_amd64": ("node-v13.1.0-win-x64.zip", "node-v13.1.0-win-x64", "d735e97bdeb7b74551b9d165c708a3fdea4dbb3801a65e70f6d6ae3539d48a03"), "13.2.0-darwin_amd64": ("node-v13.2.0-darwin-x64.tar.gz", "node-v13.2.0-darwin-x64", "2bcba358ef68ea21655728126c678063c60119e18e65d04f615d6b22dba8f7a5"), "13.2.0-linux_arm64": ("node-v13.2.0-linux-arm64.tar.xz", "node-v13.2.0-linux-arm64", "e6c4a5fe57585f69a20bd028275db31f43de421308e31d117f319b577210e527"), "13.2.0-linux_amd64": ("node-v13.2.0-linux-x64.tar.xz", "node-v13.2.0-linux-x64", "366df8a38b522a5899c3f48d8c9e359b3370495cf84867b2673dc10483adbdef"), "13.2.0-windows_amd64": ("node-v13.2.0-win-x64.zip", "node-v13.2.0-win-x64", "e2866a8f53c45bb544d7b00aed1e5fddbbd7071bd331b02e66a6ce7c38c6918c"), "13.3.0-darwin_amd64": ("node-v13.3.0-darwin-x64.tar.gz", "node-v13.3.0-darwin-x64", "187ea9028daa6d9abad9c1cbb4e12ba51427c3748da29eae616fa352c0f4cd49"), "13.3.0-linux_arm64": ("node-v13.3.0-linux-arm64.tar.xz", "node-v13.3.0-linux-arm64", "fb201a908bea36be828eee36a7cd898c67ad4ae6846982f393466e2b8b826c16"), "13.3.0-linux_amd64": ("node-v13.3.0-linux-x64.tar.xz", "node-v13.3.0-linux-x64", "b208393ae411bd55188e903171901765aaa8381c08155e4a7b34174737a1bc65"), "13.3.0-windows_amd64": ("node-v13.3.0-win-x64.zip", "node-v13.3.0-win-x64", "82e0f43aea81374a8028a7d3c9993245c4910ac95cd0f66ee5b29b940a6f3d93"), "13.4.0-darwin_amd64": ("node-v13.4.0-darwin-x64.tar.gz", "node-v13.4.0-darwin-x64", "4de08a89054416595228d6ff40fcf20c375d00556f2e95dfde8602cbb42c0b6e"), "13.4.0-linux_arm64": ("node-v13.4.0-linux-arm64.tar.xz", "node-v13.4.0-linux-arm64", "382d5fb2983ab55d495e42145e812b3859d2a311e426307fd373f47825d55fe9"), "13.4.0-linux_amd64": ("node-v13.4.0-linux-x64.tar.xz", "node-v13.4.0-linux-x64", "5cab49240c521efb80efd0a0bb3ba1071e5498c55ecbebd723d78648c91b1cc8"), "13.4.0-windows_amd64": ("node-v13.4.0-win-x64.zip", "node-v13.4.0-win-x64", "56de9ed20332cdf22bb9b048c3fb3977662ef2de9d2e8ac2d2a27d28e9be276f"), "13.5.0-darwin_amd64": ("node-v13.5.0-darwin-x64.tar.gz", "node-v13.5.0-darwin-x64", "3322c601dc032677e5b5f87f393d4b1d70073bcab24fe74378eff8eb49364001"), "13.5.0-linux_arm64": ("node-v13.5.0-linux-arm64.tar.xz", "node-v13.5.0-linux-arm64", "fe52f4e3a60a372138102da741e5b5d34310a74b3fc6f2000e4c254e3f0c4f51"), "13.5.0-linux_amd64": ("node-v13.5.0-linux-x64.tar.xz", "node-v13.5.0-linux-x64", "4d2b2cea13388658e95d8b2dc7ff918718155473ef6ef38928d92eb8cbbe210a"), "13.5.0-windows_amd64": ("node-v13.5.0-win-x64.zip", "node-v13.5.0-win-x64", "e286a84f2861b9f3c0290a9afbbecd09f303a39b2573af001ef8a4c1413eee7c"), "13.6.0-darwin_amd64": ("node-v13.6.0-darwin-x64.tar.gz", "node-v13.6.0-darwin-x64", "da13adb864777b322dda7af20410a9b0c63aa69de4b5574008d1e6910768bf69"), "13.6.0-linux_arm64": ("node-v13.6.0-linux-arm64.tar.xz", "node-v13.6.0-linux-arm64", "1f34ed8668207e03cb832763319a82b4c753839a3655207adc5bbe52f65e154a"), "13.6.0-linux_amd64": ("node-v13.6.0-linux-x64.tar.xz", "node-v13.6.0-linux-x64", "00f01315a867da16d1638f7a02966c608e344ac6c5b7d04d1fdae3138fa9d798"), "13.6.0-windows_amd64": ("node-v13.6.0-win-x64.zip", "node-v13.6.0-win-x64", "7fe37b34a4673a071bea52fcaf913ec422cf6fd79fd025bfb22de42ccc77f386"), "13.7.0-darwin_amd64": ("node-v13.7.0-darwin-x64.tar.gz", "node-v13.7.0-darwin-x64", "866ea9bdbd7b734c593af96b946397d9c7cb9c291aa8ea52a6a2af271b972169"), "13.7.0-linux_arm64": ("node-v13.7.0-linux-arm64.tar.xz", "node-v13.7.0-linux-arm64", "2823b199c7c4e6c547caf95139e28341444a5ffc52481a5ba704067291771579"), "13.7.0-linux_amd64": ("node-v13.7.0-linux-x64.tar.xz", "node-v13.7.0-linux-x64", "02578025b82de24f4cfb3ffeb3824990431d739d09220f2db9ef9f454f475470"), "13.7.0-windows_amd64": ("node-v13.7.0-win-x64.zip", "node-v13.7.0-win-x64", "26b41de81ead8f51de2964d7c7526533f46387ff436b61596e09d678bcd7503f"), "13.8.0-darwin_amd64": ("node-v13.8.0-darwin-x64.tar.gz", "node-v13.8.0-darwin-x64", "ae480e2b124cb55667763848b8ec0fde1bc35d5e0b76debe881034689a68eaea"), "13.8.0-linux_arm64": ("node-v13.8.0-linux-arm64.tar.xz", "node-v13.8.0-linux-arm64", "f1d4167a6911e42d836a5459c992cdaf35a03ab0700ea80831d7df5d706d1baf"), "13.8.0-linux_amd64": ("node-v13.8.0-linux-x64.tar.xz", "node-v13.8.0-linux-x64", "47a8cb675358f2ff534ad3d6709f14de0433f76d3af92cf389b8dcc78a1236ad"), "13.8.0-windows_amd64": ("node-v13.8.0-win-x64.zip", "node-v13.8.0-win-x64", "f198f3e4b120fc84b61d12e7222530c5bb9c6f864735bb41a8db1cf1b94a64c3"), "13.9.0-darwin_amd64": ("node-v13.9.0-darwin-x64.tar.gz", "node-v13.9.0-darwin-x64", "b2a5a539b9b2d1733bda301913c99d220968de801bf313b762fa932820ea797b"), "13.9.0-linux_arm64": ("node-v13.9.0-linux-arm64.tar.xz", "node-v13.9.0-linux-arm64", "c668afc06e4094b68ae758b823fc3244b34f0468fc0c2feee45278788989b8a1"), "13.9.0-linux_amd64": ("node-v13.9.0-linux-x64.tar.xz", "node-v13.9.0-linux-x64", "f1e093303468032a1ecb0e290e19b43bf7771d4efbf589560df0060149614272"), "13.9.0-windows_amd64": ("node-v13.9.0-win-x64.zip", "node-v13.9.0-win-x64", "ec0a55bb703906494e738cd3d09e3274b34f0a3fbe207b9e67502092ed017500"), "13.10.0-darwin_amd64": ("node-v13.10.0-darwin-x64.tar.gz", "node-v13.10.0-darwin-x64", "67269fb9061402e446bb61776be2e5d0ec330b5274326df77979698d05f503da"), "13.10.0-linux_arm64": ("node-v13.10.0-linux-arm64.tar.xz", "node-v13.10.0-linux-arm64", "adb145535d2e03fe508fa7a34897a130ba903d6f718a21cd29d1760e298f715b"), "13.10.0-linux_amd64": ("node-v13.10.0-linux-x64.tar.xz", "node-v13.10.0-linux-x64", "62081af005257d3db7ebd5a64b43f1a8e4a57bafd229be3acd7ce2704607eaac"), "13.10.0-windows_amd64": ("node-v13.10.0-win-x64.zip", "node-v13.10.0-win-x64", "d428b6d3e127716191fa6df630d03a25d3186fda1ede04a9a8d5c07e526dbb9e"), "13.10.1-darwin_amd64": ("node-v13.10.1-darwin-x64.tar.gz", "node-v13.10.1-darwin-x64", "a6a66fdc79e70267fc191f10ee045793240974e1268fdea6c2d28afbc1d635e8"), "13.10.1-linux_arm64": ("node-v13.10.1-linux-arm64.tar.xz", "node-v13.10.1-linux-arm64", "f73effcef784251e53b5e3938b8316c36bd49628c3588de7976e8569e560c12c"), "13.10.1-linux_amd64": ("node-v13.10.1-linux-x64.tar.xz", "node-v13.10.1-linux-x64", "69d69165282d88f321e751f03ee5d3370db65e5ca4c587af24994b12f31d4827"), "13.10.1-windows_amd64": ("node-v13.10.1-win-x64.zip", "node-v13.10.1-win-x64", "f9d0aac273a44dbd52dd8cdb3d6c684b68b860d128af58d77a0c08f39f51f229"), "13.11.0-darwin_amd64": ("node-v13.11.0-darwin-x64.tar.gz", "node-v13.11.0-darwin-x64", "2d87989fb1e0d425667c5ca9893cb3ecfb30cd3344d543870246d65f8d9b892f"), "13.11.0-linux_arm64": ("node-v13.11.0-linux-arm64.tar.xz", "node-v13.11.0-linux-arm64", "63ce9871b9802a1f021c84f282c63e1890524a32dc97d3e7a7ab8d52b4bde19e"), "13.11.0-linux_amd64": ("node-v13.11.0-linux-x64.tar.xz", "node-v13.11.0-linux-x64", "c127cf38f9a56d97646eb1fedb93712f304950c7143705de7180a701becc0fbb"), "13.11.0-windows_amd64": ("node-v13.11.0-win-x64.zip", "node-v13.11.0-win-x64", "dc93aa5a82988f741dca6f1869c7b1aeda6f339293d13a968279a6dc9fcc8dd0"), "13.12.0-darwin_amd64": ("node-v13.12.0-darwin-x64.tar.gz", "node-v13.12.0-darwin-x64", "1fe3103610e8eb66ae71872ea1b4e868a638292a4e7ad0e41976a9fe417a09c7"), "13.12.0-linux_arm64": ("node-v13.12.0-linux-arm64.tar.xz", "node-v13.12.0-linux-arm64", "2e8c12e575fcceb2d6f46eb3c50c6bfa98e91540bddaf91ca1c0fe739619ca0b"), "13.12.0-linux_amd64": ("node-v13.12.0-linux-x64.tar.xz", "node-v13.12.0-linux-x64", "95eb1188872e243323cbc31fc80048be3fdfdda91505c62c80c599281de357ed"), "13.12.0-windows_amd64": ("node-v13.12.0-win-x64.zip", "node-v13.12.0-win-x64", "de8445794ecbcfe895f4775417d1e2cc023e2212b1f5d4ff5cc0ed6875f7c911"), "13.13.0-darwin_amd64": ("node-v13.13.0-darwin-x64.tar.gz", "node-v13.13.0-darwin-x64", "28ae2abedafb250a9bbe706650fd79d2b25273f6445adcc1d85c777359dc5390"), "13.13.0-linux_arm64": ("node-v13.13.0-linux-arm64.tar.xz", "node-v13.13.0-linux-arm64", "eded8da4633134cae0766a2f6f3c2237f8e728df77895c85607acaca13216226"), "13.13.0-linux_amd64": ("node-v13.13.0-linux-x64.tar.xz", "node-v13.13.0-linux-x64", "41d60cda7422f53156711626d670f9b5079075b1ecc6736aea99319fe36c20a6"), "13.13.0-windows_amd64": ("node-v13.13.0-win-x64.zip", "node-v13.13.0-win-x64", "79f2a39c1047666f2bbf2efe53c069a38b8f6ef18d569bf338463aea1914b89d"), "13.14.0-darwin_amd64": ("node-v13.14.0-darwin-x64.tar.gz", "node-v13.14.0-darwin-x64", "a56eb353fecd45f731d74fc77c58dde052320c1bc272de9b03151fbaf962feaf"), "13.14.0-linux_arm64": ("node-v13.14.0-linux-arm64.tar.xz", "node-v13.14.0-linux-arm64", "e4736df097846bbe8195a185cc67ada3410a1f8993949e516bbf62b62198d2a7"), "13.14.0-linux_amd64": ("node-v13.14.0-linux-x64.tar.xz", "node-v13.14.0-linux-x64", "9ab808ba3872d58e827ea60a6e43a352f59361bc8eb36fe0327a587086b466f9"), "13.14.0-windows_amd64": ("node-v13.14.0-win-x64.zip", "node-v13.14.0-win-x64", "8c6e77fac5e911a2e70b6ca34804b3b59b6a3c685ab4e3b17756397df86063fa"), "14.0.0-darwin_amd64": ("node-v14.0.0-darwin-x64.tar.gz", "node-v14.0.0-darwin-x64", "4e50cec7aeef91c6d00d08a3bab938358da182984aa549c2aeab9868e3342f55"), "14.0.0-linux_arm64": ("node-v14.0.0-linux-arm64.tar.xz", "node-v14.0.0-linux-arm64", "29c612fcdb40133171959b269878138bbfe7723d46681f70e2017ee30134e7ad"), "14.0.0-linux_amd64": ("node-v14.0.0-linux-x64.tar.xz", "node-v14.0.0-linux-x64", "a2aaaa621074e1b56bb751bda53ce726319fac617587443371c0a7742481e5b6"), "14.0.0-windows_amd64": ("node-v14.0.0-win-x64.zip", "node-v14.0.0-win-x64", "e8f73d4f2e9935df929360c09ae932ceb316784a7450b256024af5d01fe29b75"), "14.1.0-darwin_amd64": ("node-v14.1.0-darwin-x64.tar.gz", "node-v14.1.0-darwin-x64", "7f08bd365df4e7a5625ad393257f48e8cd79f77391ab87a64426b0c6448dd226"), "14.1.0-linux_arm64": ("node-v14.1.0-linux-arm64.tar.xz", "node-v14.1.0-linux-arm64", "9dd3a4867f679f40075e2a364d3b3566702139274da9fcd59a182198ff7c7b52"), "14.1.0-linux_amd64": ("node-v14.1.0-linux-x64.tar.xz", "node-v14.1.0-linux-x64", "959fab0c8ae0830f1ab987699cd2941cab97169991630a2e0c99db7c144f9e42"), "14.1.0-windows_amd64": ("node-v14.1.0-win-x64.zip", "node-v14.1.0-win-x64", "1d3890d0d2f996cce57bcb0206e49b67233623e3cdb50eee77b8acc8f006b955"), "14.2.0-darwin_amd64": ("node-v14.2.0-darwin-x64.tar.gz", "node-v14.2.0-darwin-x64", "2447241aefe71dea8ba1552549e4df2e894d1ac12203630db3af63d4ae35c016"), "14.2.0-linux_arm64": ("node-v14.2.0-linux-arm64.tar.xz", "node-v14.2.0-linux-arm64", "4587d2c52cd348094bd46ee4ee8cdfeb549462ead9b4aadc9cfc3c5fc3ba7215"), "14.2.0-linux_amd64": ("node-v14.2.0-linux-x64.tar.xz", "node-v14.2.0-linux-x64", "468cbd92271da8c0cacaa3fa432a73a332e398bade8ad7359a94aa8ab3cc3cca"), "14.2.0-windows_amd64": ("node-v14.2.0-win-x64.zip", "node-v14.2.0-win-x64", "99085f45a894e257123d7c729113cc00ed1413df432dbdce5fe53867e7c53b11"), "14.3.0-darwin_amd64": ("node-v14.3.0-darwin-x64.tar.gz", "node-v14.3.0-darwin-x64", "fd6a44303646f28b7e7577de687c2681cb565bef534e84deef44202e7919d7f3"), "14.3.0-linux_arm64": ("node-v14.3.0-linux-arm64.tar.xz", "node-v14.3.0-linux-arm64", "53bb110ea135ae3c819f535373ce1b779e86c7aa49a9b93fc5f26969a72365d2"), "14.3.0-linux_amd64": ("node-v14.3.0-linux-x64.tar.xz", "node-v14.3.0-linux-x64", "17236db7b9447080b58c2e50937982c386fe8a60e644b8d7f23e546068a8acba"), "14.3.0-windows_amd64": ("node-v14.3.0-win-x64.zip", "node-v14.3.0-win-x64", "07bebc231dd8d773ab41cdcfbcb8b48e2336fbee20deb961b4300b9ba86afa04"), "14.4.0-darwin_amd64": ("node-v14.4.0-darwin-x64.tar.gz", "node-v14.4.0-darwin-x64", "d95eaa6950d67895b5cdd0e2f913d2c44034178234f0cb7436c3397b54f64023"), "14.4.0-linux_arm64": ("node-v14.4.0-linux-arm64.tar.xz", "node-v14.4.0-linux-arm64", "9c9f84589b7bc6a05ac12a137e5097a5adb20b5c63ae9e4e912942da2c06d99d"), "14.4.0-linux_amd64": ("node-v14.4.0-linux-x64.tar.xz", "node-v14.4.0-linux-x64", "d65a9a8a547bfe67c6c08dae733a3e5a846700d5377c5f150164cc6bb5f6a039"), "14.4.0-windows_amd64": ("node-v14.4.0-win-x64.zip", "node-v14.4.0-win-x64", "a4bac45af8252f6b677a79ed19be4913f4939c4509fb08b6f14f972597550bbe"), "14.5.0-darwin_amd64": ("node-v14.5.0-darwin-x64.tar.gz", "node-v14.5.0-darwin-x64", "47dfd88abcd4d6d6f7b7516c95645f9760ba9c93d04b51a92895584c945b2953"), "14.5.0-linux_arm64": ("node-v14.5.0-linux-arm64.tar.xz", "node-v14.5.0-linux-arm64", "c5ab67fbc73ea8858b4a989b6e92d6630decfc47c4703be7bcda3c6e39adff0b"), "14.5.0-linux_amd64": ("node-v14.5.0-linux-x64.tar.xz", "node-v14.5.0-linux-x64", "8b0235c318de87ecf8eec9a39e5c5df80757dbec571addda7123276dfcb34d5b"), "14.5.0-windows_amd64": ("node-v14.5.0-win-x64.zip", "node-v14.5.0-win-x64", "ab5728c85ece98210036fc9c38984fa2410a882dd99075b3d5bece58e4cc6ea2"), "14.6.0-darwin_amd64": ("node-v14.6.0-darwin-x64.tar.gz", "node-v14.6.0-darwin-x64", "7907a18605b900ce977ff4c7e67f7507f937f85738659865d31779c3b2990756"), "14.6.0-linux_arm64": ("node-v14.6.0-linux-arm64.tar.xz", "node-v14.6.0-linux-arm64", "853f2c99f0e5fa65e6f222821e29c9d1a49f2d358a97c1de080ddf5c74e4ec70"), "14.6.0-linux_amd64": ("node-v14.6.0-linux-x64.tar.xz", "node-v14.6.0-linux-x64", "b8a39b2dac8e200e96586356c5525d20b0b43dba8bf9f7eb4e8c2d5366be2bb2"), "14.6.0-windows_amd64": ("node-v14.6.0-win-x64.zip", "node-v14.6.0-win-x64", "57ea75a7ec70cc8158e6f9774f9728fb9e3d08212b1af3e206db2de46ca304ca"), "14.7.0-darwin_amd64": ("node-v14.7.0-darwin-x64.tar.gz", "node-v14.7.0-darwin-x64", "47c94ec84706fd6851db27af54abdab569941fcbfcdc28e386d8fa7d49c6a619"), "14.7.0-linux_arm64": ("node-v14.7.0-linux-arm64.tar.xz", "node-v14.7.0-linux-arm64", "12540328aeb5baa524a4e9c3b493b5eceb54cfa630f8bce64c19e674871e2f4b"), "14.7.0-linux_amd64": ("node-v14.7.0-linux-x64.tar.xz", "node-v14.7.0-linux-x64", "48929b03deb2915b64ba67355d2deffeed3c8df798b0c5f2b821ffc7a8116a23"), "14.7.0-windows_amd64": ("node-v14.7.0-win-x64.zip", "node-v14.7.0-win-x64", "a899693c9a31089a1eda14b1e613cf8cd60361e6e574b351551d832cf864c8f8"), "14.8.0-darwin_amd64": ("node-v14.8.0-darwin-x64.tar.gz", "node-v14.8.0-darwin-x64", "b6db32f2ff37475ae68502c76fc777a604cbc589bf57158fb4eed4db9ac5f62d"), "14.8.0-linux_arm64": ("node-v14.8.0-linux-arm64.tar.xz", "node-v14.8.0-linux-arm64", "0c66a6468c36552c00d45cff0eaa924240f3d2e625be0306f33f8b0d81af4224"), "14.8.0-linux_amd64": ("node-v14.8.0-linux-x64.tar.xz", "node-v14.8.0-linux-x64", "c7761fe5d56d045d1540b1f0bc8a20d7edf03e6fd695ee5fbffc1dd9416ccc75"), "14.8.0-windows_amd64": ("node-v14.8.0-win-x64.zip", "node-v14.8.0-win-x64", "848ca582bdf8b7fdc21a38d9f3887a45bdf6381b04549fc0f918852889157c9a")}` +{% endhighlight %} -#### `node_urls` -(*List of strings*): custom list of URLs to use to download NodeJS +These can be mapped to a custom download URL, using node_urls -Each entry is a template for downloading a node distribution. - -The `{version}` parameter is substituted with the `node_version` attribute, -and `{filename}` with the matching entry from the `node_repositories` attribute. - -For example, given - -```python +{% highlight python %} node_repositories( node_version = "10.10.0", node_repositories = {"10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e")}, node_urls = ["https://mycorpproxy/mirror/node/v{version}/{filename}"], ) -``` +{% endhighlight %} -A Mac client will try to download node from `https://mycorpproxy/mirror/node/v10.10.0/node-v10.10.0-darwin-x64.tar.gz` -and expect that file to have sha256sum `00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e` +A Mac client will try to download node from https://mycorpproxy/mirror/node/v10.10.0/node-v10.10.0-darwin-x64.tar.gz +and expect that file to have sha256sum 00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e -Defaults to `["https://mirror.bazel.build/nodejs.org/dist/v{version}/{filename}", "https://nodejs.org/dist/v{version}/{filename}"]` -#### `node_version` -(*String*): the specific version of NodeJS to install or, if vendored_node is specified, the vendored version of node - -Defaults to `"12.13.0"` - -#### `package_json` -(*[labels]*): (ADVANCED, not recommended) - a list of labels, which indicate the package.json files that will be installed - when you manually run the package manager, e.g. with - `bazel run @nodejs//:yarn_node_repositories` or `bazel run @nodejs//:npm_node_repositories install`. - If you use bazel-managed dependencies, you should omit this attribute. - -Defaults to `[]` - -#### `preserve_symlinks` -(*Boolean*): Turn on --node_options=--preserve-symlinks for nodejs_binary and nodejs_test rules. - -When this option is turned on, node will preserve the symlinked path for resolves instead of the default -behavior of resolving to the real path. This means that all required files must be in be included in your -runfiles as it prevents the default behavior of potentially resolving outside of the runfiles. For example, -all required files need to be included in your node_modules filegroup. This option is desirable as it gives -a stronger guarantee of hermeticity which is required for remote execution. - -Defaults to `True` - -#### `vendored_node` -(*[label]*): the local path to a pre-installed NodeJS runtime. - -If set then also set node_version to the version that of node that is vendored. -Bazel will automatically turn on features such as --preserve-symlinks-main if they -are supported by the node version being used. - -Defaults to `None` - -#### `vendored_yarn` -(*[label]*): the local path to a pre-installed yarn tool - -Defaults to `None` - -#### `yarn_repositories` -(*Dictionary: String -> List of strings*): Custom list of yarn repositories to use. - -Dictionary mapping Yarn versions to their corresponding (filename, strip_prefix, sha256) tuples. +#### Custom Yarn versions -For example, +To specify custom Yarn versions, use the yarn_repositories attribute -```python +{% highlight python %} node_repositories( yarn_repositories = { "1.12.1": ("yarn-v1.12.1.tar.gz", "yarn-v1.12.1", "09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d"), }, ) -``` +{% endhighlight %} -Defaults to `{"1.3.2": ("yarn-v1.3.2.tar.gz", "yarn-v1.3.2", "6cfe82e530ef0837212f13e45c1565ba53f5199eec2527b85ecbcd88bf26821d"), "1.5.1": ("yarn-v1.5.1.tar.gz", "yarn-v1.5.1", "cd31657232cf48d57fdbff55f38bfa058d2fb4950450bd34af72dac796af4de1"), "1.6.0": ("yarn-v1.6.0.tar.gz", "yarn-v1.6.0", "a57b2fdb2bfeeb083d45a883bc29af94d5e83a21c25f3fc001c295938e988509"), "1.9.2": ("yarn-v1.9.2.tar.gz", "yarn-v1.9.2", "3ad69cc7f68159a562c676e21998eb21b44138cae7e8fe0749a7d620cf940204"), "1.9.4": ("yarn-v1.9.4.tar.gz", "yarn-v1.9.4", "7667eb715077b4bad8e2a832e7084e0e6f1ba54d7280dc573c8f7031a7fb093e"), "1.12.1": ("yarn-v1.12.1.tar.gz", "yarn-v1.12.1", "09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d"), "1.12.3": ("yarn-v1.12.3.tar.gz", "yarn-v1.12.3", "02cd4b589ec22c4bdbd2bc5ebbfd99c5e99b07242ad68a539cb37896b93a24f2"), "1.13.0": ("yarn-v1.13.0.tar.gz", "yarn-v1.13.0", "125d40ebf621ebb08e3f66a618bd2cc5cd77fa317a312900a1ab4360ed38bf14"), "1.19.1": ("yarn-v1.19.1.tar.gz", "yarn-v1.19.1", "34293da6266f2aae9690d59c2d764056053ff7eebc56b80b8df05010c3da9343"), "1.22.4": ("yarn-v1.22.4.tar.gz", "yarn-v1.22.4", "bc5316aa110b2f564a71a3d6e235be55b98714660870c5b6b2d2d3f12587fb58")}` +Like node_urls, the yarn_urls attribute can be used to provide a list of custom URLs to use to download yarn -#### `yarn_urls` -(*List of strings*): custom list of URLs to use to download Yarn - -Each entry is a template, similar to the `node_urls` attribute, using `yarn_version` and `yarn_repositories` in the substitutions. - -For example, - -```python +{% highlight python %} node_repositories( yarn_repositories = { "1.12.1": ("yarn-v1.12.1.tar.gz", "yarn-v1.12.1", "09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d"), @@ -190,80 +95,305 @@ node_repositories( "https://github.com/yarnpkg/yarn/releases/download/v{version}/{filename}", ], ) -``` +{% endhighlight %} -Will download yarn from https://github.com/yarnpkg/yarn/releases/download/v1.2.1/yarn-v1.12.1.tar.gz` -and expect the file to have sha256sum `09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d`. +Will download yarn from https://github.com/yarnpkg/yarn/releases/download/v1.2.1/yarn-v1.12.1.tar.gz +and expect the file to have sha256sum 09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d. -Defaults to `["https://mirror.bazel.build/github.com/yarnpkg/yarn/releases/download/v{version}/{filename}", "https://github.com/yarnpkg/yarn/releases/download/v{version}/{filename}"]` -#### `yarn_version` -(*String*): the specific version of Yarn to install +### Using a local version -Defaults to `"1.19.1"` +To avoid downloads, you can check in vendored copies of NodeJS and/or Yarn and set vendored_node and or vendored_yarn +to point to those before calling node_repositories. You can also point to a location where node is installed on your computer, +but we don't recommend this because it leads to version skew between you, your coworkers, and your Continuous Integration environment. +It also ties your build to a single platform, preventing you from cross-compiling into a Linux docker image on Mac for example. +See the [the repositories documentation](repositories.html) for how to use the resulting repositories. -## nodejs_binary -Runs some JavaScript code in NodeJS. +## Creating dependency installation scripts for manually-managed dependencies +You can optionally pass a package_json array to node_repositories. This lets you use Bazel's version of yarn or npm, yet always run the package manager yourself. +This is an advanced scenario you can use in place of the npm_install or yarn_install` rules, but we don't recommend it, and might remove it in the future. -### Usage +{% highlight python %} +load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories") +node_repositories(package_json = ["//:package.json", "//subpkg:package.json"]) +{% endhighlight %} + +Running bazel run @nodejs//:yarn_node_repositories in this repo would create /node_modules and /subpkg/node_modules. + +Note that the dependency installation scripts will run in each subpackage indicated by the package_json attribute. + + +
      +node_repositories(name, node_repositories, node_urls, node_version, package_json, preserve_symlinks,
      +                  vendored_node, vendored_yarn, yarn_repositories, yarn_urls, yarn_version)
      +
      + +**ATTRIBUTES** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this repository. + Namerequired + +
      node_repositories + Custom list of node repositories to use -``` -nodejs_binary(name, configuration_env_vars, data, default_env_vars, entry_point, node_modules, templated_args) -``` +A dictionary mapping NodeJS versions to sets of hosts and their corresponding (filename, strip_prefix, sha256) tuples. +You should list a node binary for every platform users have, likely Mac, Windows, and Linux. + Dictionary: String -> List of stringsoptional + {"8.0.0-darwin_amd64": ("node-v8.0.0-darwin-x64.tar.gz", "node-v8.0.0-darwin-x64", "6e4a66917e2c11d5adc537c899941c973ae586293352b8172a4f32be0b7f0300"), "8.0.0-linux_arm64": ("node-v8.0.0-linux-arm64.tar.xz", "node-v8.0.0-linux-arm64", "8d6eaefcc252055de54a666d4e00eec78caf2143cd7a13b63f109e9eb78a795e"), "8.0.0-linux_amd64": ("node-v8.0.0-linux-x64.tar.xz", "node-v8.0.0-linux-x64", "0a536bb83eeccca23626e5e5ead52563a641e4331c35e367662892921dc7e8a4"), "8.0.0-windows_amd64": ("node-v8.0.0-win-x64.zip", "node-v8.0.0-win-x64", "84410377118857674e0fb6e7bc7627ffb8cc67a72f162a050276b076e328a9bb"), "8.1.0-darwin_amd64": ("node-v8.1.0-darwin-x64.tar.gz", "node-v8.1.0-darwin-x64", "08af5f1a7441728cabf9b11af25da28ee1725903524968dd9621b885b13303c7"), "8.1.0-linux_arm64": ("node-v8.1.0-linux-arm64.tar.xz", "node-v8.1.0-linux-arm64", "adf2f517c9847cbb5904b282c0819526b5264c256477ed5e4b258584daa1a2ea"), "8.1.0-linux_amd64": ("node-v8.1.0-linux-x64.tar.xz", "node-v8.1.0-linux-x64", "1638a0083c6eee122cbbefdf39cb8bcc43cf19fedff331a0317b05fd38dcb6df"), "8.1.0-windows_amd64": ("node-v8.1.0-win-x64.zip", "node-v8.1.0-win-x64", "cee1fd1c828e8996824a2d9f9056dfae771b77c05b15ad015bc7f8800409215c"), "8.1.1-darwin_amd64": ("node-v8.1.1-darwin-x64.tar.gz", "node-v8.1.1-darwin-x64", "2f67890a5a46564672cfd4522cc00c7ac04d307e6a942ae1ad38b6aee94c29e2"), "8.1.1-linux_arm64": ("node-v8.1.1-linux-arm64.tar.xz", "node-v8.1.1-linux-arm64", "3971543f9d29f77ddb8f47a54e4b99422a822173599748ab7fcd9c35c8e25124"), "8.1.1-linux_amd64": ("node-v8.1.1-linux-x64.tar.xz", "node-v8.1.1-linux-x64", "6a735e77bdd21c92fe85ea5f9f567d0d6930fa33e0e111946b17cdb7efefb8d5"), "8.1.1-windows_amd64": ("node-v8.1.1-win-x64.zip", "node-v8.1.1-win-x64", "459f3b62e58f4fac3b9b5e49694855f338f3dcf2fcf955299ee2a47f7687625a"), "8.1.2-darwin_amd64": ("node-v8.1.2-darwin-x64.tar.gz", "node-v8.1.2-darwin-x64", "70f353449b19d6d36262f5e38f9cc23e80b2034c21ae48623a6a4890f513eb53"), "8.1.2-linux_arm64": ("node-v8.1.2-linux-arm64.tar.xz", "node-v8.1.2-linux-arm64", "d468ac671047a5a5edb6edd34a9a625645505551c35ef73e2102c504535a09d4"), "8.1.2-linux_amd64": ("node-v8.1.2-linux-x64.tar.xz", "node-v8.1.2-linux-x64", "f5dc173d3005fbcfd107c83a15d4dbff9a28ff53ab42c23344a572d84814ecfe"), "8.1.2-windows_amd64": ("node-v8.1.2-win-x64.zip", "node-v8.1.2-win-x64", "5463c812afeb498ad8ab9c396246e455d9353ab48ae409c82a2a45193e161f66"), "8.1.3-darwin_amd64": ("node-v8.1.3-darwin-x64.tar.gz", "node-v8.1.3-darwin-x64", "ae588038480a6acc57b6b04802fa876e0b602231e9846944dd1b4437e8c1205f"), "8.1.3-linux_arm64": ("node-v8.1.3-linux-arm64.tar.xz", "node-v8.1.3-linux-arm64", "cebc2edd89f20613a530509a2435ecc42757ce16032559ef174ebe84875a1536"), "8.1.3-linux_amd64": ("node-v8.1.3-linux-x64.tar.xz", "node-v8.1.3-linux-x64", "d41dc375ea7e33fadf0fb1bf89d9dfd222a2fb85633fba3d2cf48ac03522ba71"), "8.1.3-windows_amd64": ("node-v8.1.3-win-x64.zip", "node-v8.1.3-win-x64", "be582920c723124ebad48c968f539ef66b1f628d8b6f2338dc68a32f95104856"), "8.1.4-darwin_amd64": ("node-v8.1.4-darwin-x64.tar.gz", "node-v8.1.4-darwin-x64", "a24858a10dd4ca8ad55fd61a7472b4fe9140eb3fa347c41717360c3f29438748"), "8.1.4-linux_arm64": ("node-v8.1.4-linux-arm64.tar.xz", "node-v8.1.4-linux-arm64", "3553c617f594286fea7052678d04aec9e167adddf702b70431d88ce42573c339"), "8.1.4-linux_amd64": ("node-v8.1.4-linux-x64.tar.xz", "node-v8.1.4-linux-x64", "d82fe7ef7e0f8ca1c343f00e3e490996553507ec7d42034f5df034cc7908caaf"), "8.1.4-windows_amd64": ("node-v8.1.4-win-x64.zip", "node-v8.1.4-win-x64", "cc3689ffefc738f6256aab1713343c3c64c24ec997600c0a48243fb26f5e0bce"), "8.2.0-darwin_amd64": ("node-v8.2.0-darwin-x64.tar.gz", "node-v8.2.0-darwin-x64", "da5cca37ae0afdbff3a269bb3dc71ff0d86e282920286f71ae5eb6757cfa5356"), "8.2.0-linux_arm64": ("node-v8.2.0-linux-arm64.tar.xz", "node-v8.2.0-linux-arm64", "3298ae4ae67c4ad714bed23383fd08db5711b164a077a25fb6b282533e65cf77"), "8.2.0-linux_amd64": ("node-v8.2.0-linux-x64.tar.xz", "node-v8.2.0-linux-x64", "e8ceaac3ee4385d53bcebc552a7a6b545b09b9652f5ca1b254aae698fd9a25f9"), "8.2.0-windows_amd64": ("node-v8.2.0-win-x64.zip", "node-v8.2.0-win-x64", "6bc3cc580f0e8190e6a03d6a5967c861c29d6a6eb50f995b3afb7d60b8cee4e1"), "8.2.1-darwin_amd64": ("node-v8.2.1-darwin-x64.tar.gz", "node-v8.2.1-darwin-x64", "32d0923c147470d57f18f055014f5a9fe8a3919406010a2e80ba85952d3c9923"), "8.2.1-linux_arm64": ("node-v8.2.1-linux-arm64.tar.xz", "node-v8.2.1-linux-arm64", "9ed01737f37d410067beeb42066e51f6d0385677c7d0daeeaf2e32cb2aca854a"), "8.2.1-linux_amd64": ("node-v8.2.1-linux-x64.tar.xz", "node-v8.2.1-linux-x64", "abcddeb95cc4465953b1edb0922d20e9b0b3de83688fc8150b863117032a978a"), "8.2.1-windows_amd64": ("node-v8.2.1-win-x64.zip", "node-v8.2.1-win-x64", "37e84e54c67e3d1e52d657c04835b211c94631a0b358f4e7dc351618fdb6c083"), "8.3.0-darwin_amd64": ("node-v8.3.0-darwin-x64.tar.gz", "node-v8.3.0-darwin-x64", "a627354982a514e77e5c37ed5952edc81a7dd9c4f661fd919f192c21ae548654"), "8.3.0-linux_arm64": ("node-v8.3.0-linux-arm64.tar.xz", "node-v8.3.0-linux-arm64", "9e0dab4913585a1b8117bda03c4b5581d9140aec67bb4be0e0b6a4999b41b4ab"), "8.3.0-linux_amd64": ("node-v8.3.0-linux-x64.tar.xz", "node-v8.3.0-linux-x64", "ae377995c6e1af8e2a60c4a929f77562ebed9a2c6897cbd311a2c331f76b4e0f"), "8.3.0-windows_amd64": ("node-v8.3.0-win-x64.zip", "node-v8.3.0-win-x64", "e762fa218465e5aa0952336eee2c3e42e5b48390b36838ca7b6a243812e0b7e5"), "8.4.0-darwin_amd64": ("node-v8.4.0-darwin-x64.tar.gz", "node-v8.4.0-darwin-x64", "cc10ffbd11586bd27a7cc5e6e2d03fd3e0b341368387a03ee9a0117a0288599d"), "8.4.0-linux_arm64": ("node-v8.4.0-linux-arm64.tar.xz", "node-v8.4.0-linux-arm64", "0a811bbe4905fc879f3cbfc976e5a37cca05bbd609774abe4332b29fea75f073"), "8.4.0-linux_amd64": ("node-v8.4.0-linux-x64.tar.xz", "node-v8.4.0-linux-x64", "7fd86abad06f96cb2f889c2a0e25686a3de3e9a078ad946ded91ee4f28d8218a"), "8.4.0-windows_amd64": ("node-v8.4.0-win-x64.zip", "node-v8.4.0-win-x64", "0f60c99479f74d75c7239795c90698826ba8252019d4c23e82ed0d72ceb8974f"), "8.5.0-darwin_amd64": ("node-v8.5.0-darwin-x64.tar.gz", "node-v8.5.0-darwin-x64", "0c8d4c4d90f858a19a29fe1ae7f42b2b7f1a4d3caaa25bea2e08479c00ebbd5f"), "8.5.0-linux_arm64": ("node-v8.5.0-linux-arm64.tar.xz", "node-v8.5.0-linux-arm64", "e0decdebe73dba516d6c72401e337cee6277c6e00f817b0bf1c592360adfd4e6"), "8.5.0-linux_amd64": ("node-v8.5.0-linux-x64.tar.xz", "node-v8.5.0-linux-x64", "a9651fcc6259b4a944ebb72e6dd116602c7b26ddf939599b060d1d3e6ead8c36"), "8.5.0-windows_amd64": ("node-v8.5.0-win-x64.zip", "node-v8.5.0-win-x64", "c385d162c15a7a85d42755ee8c78c1c73bd251e2f7cbf82e5e20c824564aa9df"), "8.6.0-darwin_amd64": ("node-v8.6.0-darwin-x64.tar.gz", "node-v8.6.0-darwin-x64", "2c95f3194a92e8b37aab8895fbaeb1f5fabef3494600ef78a7b7e078dba9a7c9"), "8.6.0-linux_arm64": ("node-v8.6.0-linux-arm64.tar.xz", "node-v8.6.0-linux-arm64", "6848567ab32d04694120e18c20ef47d0f4163229634f236e4bdbb8d135f3204e"), "8.6.0-linux_amd64": ("node-v8.6.0-linux-x64.tar.xz", "node-v8.6.0-linux-x64", "e6f52c3ed7e2cc34ebddbc563434fdf043feb449a60f028101eb45227aec3444"), "8.6.0-windows_amd64": ("node-v8.6.0-win-x64.zip", "node-v8.6.0-win-x64", "08e9b29c47567517ca95ca01d5cdb255279be5463952f92da5c372a99d620b23"), "8.7.0-darwin_amd64": ("node-v8.7.0-darwin-x64.tar.gz", "node-v8.7.0-darwin-x64", "5e59798c1deafd671a35ef4dcdb9b97ce98f9255a056832dc98d454613e9ea08"), "8.7.0-linux_arm64": ("node-v8.7.0-linux-arm64.tar.xz", "node-v8.7.0-linux-arm64", "5a1a1907fbb6d90667ce70ad42602534f6cc6eda873d1c50a3259349aee73418"), "8.7.0-linux_amd64": ("node-v8.7.0-linux-x64.tar.xz", "node-v8.7.0-linux-x64", "9d6f649576cac74ef0b6634af8265156370cf8fdf3676f03e867347d3207675d"), "8.7.0-windows_amd64": ("node-v8.7.0-win-x64.zip", "node-v8.7.0-win-x64", "e95be435674e82ea7133c3268cb70044eabde2d0aef28b2a3df5c7d8d23cadcc"), "8.8.0-darwin_amd64": ("node-v8.8.0-darwin-x64.tar.gz", "node-v8.8.0-darwin-x64", "69a37e240fac48289a2a5bb75ab96091f8d6457eeaf23c0a5125250abe418176"), "8.8.0-linux_arm64": ("node-v8.8.0-linux-arm64.tar.xz", "node-v8.8.0-linux-arm64", "454617ff94882d9a81dca0840065fb5a928ff68e8e8efe7c1748d996ab757b2e"), "8.8.0-linux_amd64": ("node-v8.8.0-linux-x64.tar.xz", "node-v8.8.0-linux-x64", "4304c297f41085ac1f7a6a8e68496d9fd5aa3b92590e7c3c6015a23939767e72"), "8.8.0-windows_amd64": ("node-v8.8.0-win-x64.zip", "node-v8.8.0-win-x64", "a7a1fd2c5f5c967d7df70fdec1a8b2d2d2b1b411fcdd4f23bcf8c9c837a7c3cb"), "8.8.1-darwin_amd64": ("node-v8.8.1-darwin-x64.tar.gz", "node-v8.8.1-darwin-x64", "bf208e29418fb3efc836d3d32b62b9162f0f0b36a0665abc0990f4e292cfc84b"), "8.8.1-linux_arm64": ("node-v8.8.1-linux-arm64.tar.xz", "node-v8.8.1-linux-arm64", "ea8ad0286a31e7519e979fcf99e503845a95da640cd140be5cff418a68fa6263"), "8.8.1-linux_amd64": ("node-v8.8.1-linux-x64.tar.xz", "node-v8.8.1-linux-x64", "004bc95267ef5d5b928f560582f681a679bada2201bf221735a02f4956f67b09"), "8.8.1-windows_amd64": ("node-v8.8.1-win-x64.zip", "node-v8.8.1-win-x64", "a7e60a1a5f46ef309cbe74e423c17e69dd0a573f0c92c9e325caade3388d192a"), "8.9.0-darwin_amd64": ("node-v8.9.0-darwin-x64.tar.gz", "node-v8.9.0-darwin-x64", "aaf165348bc6d20012b048a88a8f3a35cba6799496e8f4c1246d85c524a84dbc"), "8.9.0-linux_arm64": ("node-v8.9.0-linux-arm64.tar.xz", "node-v8.9.0-linux-arm64", "30cb00ac1cf6b466b1f27e7ce41363a67a66dbb64227c2dc5e33d221b09fc579"), "8.9.0-linux_amd64": ("node-v8.9.0-linux-x64.tar.xz", "node-v8.9.0-linux-x64", "e92b91fa473f9ad805a1241907b6f1bd3f8ceac8426a8b4cb05428e62e243bdd"), "8.9.0-windows_amd64": ("node-v8.9.0-win-x64.zip", "node-v8.9.0-win-x64", "dd971e43ff003213b0be31c1a8ce3421f72e0db2a703bc254ac685be4f7f609e"), "8.9.1-darwin_amd64": ("node-v8.9.1-darwin-x64.tar.gz", "node-v8.9.1-darwin-x64", "05c992a6621d28d564b92bf3051a5dc0adf83839237c0d4653a8cdb8a1c73b94"), "8.9.1-linux_arm64": ("node-v8.9.1-linux-arm64.tar.xz", "node-v8.9.1-linux-arm64", "f774660980dcf931bf29847a5f26317823a063fa4a56f85f37c3222d77cce7c1"), "8.9.1-linux_amd64": ("node-v8.9.1-linux-x64.tar.xz", "node-v8.9.1-linux-x64", "8be82805f7c1ab3e64d4569fb9a90ded2de78dd27cadbb91bad1bf975dae1e2d"), "8.9.1-windows_amd64": ("node-v8.9.1-win-x64.zip", "node-v8.9.1-win-x64", "db89c6e041da359561fbe7da075bb4f9881a0f7d3e98c203e83732cfb283fa4a"), "8.9.2-darwin_amd64": ("node-v8.9.2-darwin-x64.tar.gz", "node-v8.9.2-darwin-x64", "ba03ae4c0ebd33e8661b5b241211ddb9f7e3b5b959d8cbd68f5941cb1ed5784d"), "8.9.2-linux_arm64": ("node-v8.9.2-linux-arm64.tar.xz", "node-v8.9.2-linux-arm64", "cc222b4f910ff27ff66ccc96d5c7e2117942bcd161ec253d83cf430146b79bdf"), "8.9.2-linux_amd64": ("node-v8.9.2-linux-x64.tar.xz", "node-v8.9.2-linux-x64", "d4065724e7f5f11e999f78de50fb0faac74341799cb0c0dafcbe87e0ecb0be86"), "8.9.2-windows_amd64": ("node-v8.9.2-win-x64.zip", "node-v8.9.2-win-x64", "2afa8b899c0dddea50dcf5dda66ae7b0ca32326dbf66c52f947c082e7c95d090"), "8.9.3-darwin_amd64": ("node-v8.9.3-darwin-x64.tar.gz", "node-v8.9.3-darwin-x64", "fa7962f25db420a374e9e60d8a410188bd690a2f0ce8d403aa9b09d9b7ae8c1f"), "8.9.3-linux_arm64": ("node-v8.9.3-linux-arm64.tar.xz", "node-v8.9.3-linux-arm64", "8860678ad0c24059380af254574e5a12371a2d5c92ca5e1ac7267314af7df04f"), "8.9.3-linux_amd64": ("node-v8.9.3-linux-x64.tar.xz", "node-v8.9.3-linux-x64", "86f3aa593315f0503d069e3f4805019583ab8d86c0244a83c795d1942e3f99b7"), "8.9.3-windows_amd64": ("node-v8.9.3-win-x64.zip", "node-v8.9.3-win-x64", "17dee0c06d088269123a27db3905a39a17a51cc0ea65435ae942c718f0f94403"), "8.9.4-darwin_amd64": ("node-v8.9.4-darwin-x64.tar.gz", "node-v8.9.4-darwin-x64", "ca50f7d2035eb805306e303b644bb1cde170ce2615e0a2c6e95fb80881c48c24"), "8.9.4-linux_arm64": ("node-v8.9.4-linux-arm64.tar.xz", "node-v8.9.4-linux-arm64", "7c0369a5dbc98d0989c208ca3ee1b6db4cba576343014fdbf7d36fd2659f7089"), "8.9.4-linux_amd64": ("node-v8.9.4-linux-x64.tar.xz", "node-v8.9.4-linux-x64", "68b94aac38cd5d87ab79c5b38306e34a20575f31a3ea788d117c20fffcca3370"), "8.9.4-windows_amd64": ("node-v8.9.4-win-x64.zip", "node-v8.9.4-win-x64", "48946e99ac4484e071df25741d2300f3a656f476c5ff3f8116a4746c07ebe3b7"), "8.10.0-darwin_amd64": ("node-v8.10.0-darwin-x64.tar.gz", "node-v8.10.0-darwin-x64", "7d77bd35bc781f02ba7383779da30bd529f21849b86f14d87e097497671b0271"), "8.10.0-linux_arm64": ("node-v8.10.0-linux-arm64.tar.xz", "node-v8.10.0-linux-arm64", "cbec410109664f75d3c988a43483576fc56f745e05e3884891df9c509fbb1b12"), "8.10.0-linux_amd64": ("node-v8.10.0-linux-x64.tar.xz", "node-v8.10.0-linux-x64", "92220638d661a43bd0fee2bf478cb283ead6524f231aabccf14c549ebc2bc338"), "8.10.0-windows_amd64": ("node-v8.10.0-win-x64.zip", "node-v8.10.0-win-x64", "936ada36cb6f09a5565571e15eb8006e45c5a513529c19e21d070acf0e50321b"), "8.11.0-darwin_amd64": ("node-v8.11.0-darwin-x64.tar.gz", "node-v8.11.0-darwin-x64", "408323335b8c691d75397c76ddd7b00490852652c78c813c586ba7eccc5c382b"), "8.11.0-linux_arm64": ("node-v8.11.0-linux-arm64.tar.xz", "node-v8.11.0-linux-arm64", "a28f599a14ca9ef4062fa1e605b69cd046f81d3fc9a7d6dde1856fb593004b3a"), "8.11.0-linux_amd64": ("node-v8.11.0-linux-x64.tar.xz", "node-v8.11.0-linux-x64", "180ef8c2a39c1696b9a05832883ed981ba11475ffa44ca77781a8d1c1954f944"), "8.11.0-windows_amd64": ("node-v8.11.0-win-x64.zip", "node-v8.11.0-win-x64", "55b9c8d48b59569117a63fdb26e1de05e792c37f563feb7d44b4cd59be96aff8"), "8.11.1-darwin_amd64": ("node-v8.11.1-darwin-x64.tar.gz", "node-v8.11.1-darwin-x64", "5c7b05899ff56910a2b8180f139d48612f349ac2c5d20f08dbbeffbed9e3a089"), "8.11.1-linux_arm64": ("node-v8.11.1-linux-arm64.tar.xz", "node-v8.11.1-linux-arm64", "ff518f33751baa8ea4f18853d446357c2edecd930a1526ac9b2eaa79baddc1bf"), "8.11.1-linux_amd64": ("node-v8.11.1-linux-x64.tar.xz", "node-v8.11.1-linux-x64", "6617e245fa0f7fbe0e373e71d543fea878315324ab31dc64b4eba10e42d04c11"), "8.11.1-windows_amd64": ("node-v8.11.1-win-x64.zip", "node-v8.11.1-win-x64", "7d49b59c2b5d73a14c138e8a215d558a64a5241cd5035d9824f608e7bba097b1"), "8.11.2-darwin_amd64": ("node-v8.11.2-darwin-x64.tar.gz", "node-v8.11.2-darwin-x64", "6bd619ab577a1256531e50e31924d99a094eb920de8b5bd060a056a2608282b9"), "8.11.2-linux_arm64": ("node-v8.11.2-linux-arm64.tar.xz", "node-v8.11.2-linux-arm64", "c8e9833402277c1a5a31b41cc31c9cedad68ba87c2ef78aed6a3ced81af9da7f"), "8.11.2-linux_amd64": ("node-v8.11.2-linux-x64.tar.xz", "node-v8.11.2-linux-x64", "213599127d24496cbf1cbb2a7c51060a3506d6b11132c59bb7f9f8a0edd210a7"), "8.11.2-windows_amd64": ("node-v8.11.2-win-x64.zip", "node-v8.11.2-win-x64", "bbac1f56e8001a093acb2942f8a43c3bf22aec58216f446b7bf01f6f822dfe3f"), "8.11.3-darwin_amd64": ("node-v8.11.3-darwin-x64.tar.gz", "node-v8.11.3-darwin-x64", "77fa26b4c2fc34bdf5a5dd1cd39c93b12087fbd25148c6f04bf409698ee48b86"), "8.11.3-linux_arm64": ("node-v8.11.3-linux-arm64.tar.xz", "node-v8.11.3-linux-arm64", "b8fddec18f20533929a07bc1d38ae63b1999a0252740094f0974b2cbea76eaa4"), "8.11.3-linux_amd64": ("node-v8.11.3-linux-x64.tar.xz", "node-v8.11.3-linux-x64", "08e2fcfea66746bd966ea3a89f26851f1238d96f86c33eaf6274f67fce58421a"), "8.11.3-windows_amd64": ("node-v8.11.3-win-x64.zip", "node-v8.11.3-win-x64", "91b779def1b21dcd1def7fc9671a869a1e2f989952e76fdc08a5d73570075f31"), "8.11.4-darwin_amd64": ("node-v8.11.4-darwin-x64.tar.gz", "node-v8.11.4-darwin-x64", "aa1de83b388581d0d9ec3276f4526ee67e17e0f1bc0deb5133f960ce5dc9f1ef"), "8.11.4-linux_arm64": ("node-v8.11.4-linux-arm64.tar.xz", "node-v8.11.4-linux-arm64", "46e90dd916ddbf88c866de300c1b2a26f9216b19abd92b29e89439f62fb6fc1c"), "8.11.4-linux_amd64": ("node-v8.11.4-linux-x64.tar.xz", "node-v8.11.4-linux-x64", "85ea7cbb5bf624e130585bfe3946e99c85ce5cb84c2aee474038bdbe912f908c"), "8.11.4-windows_amd64": ("node-v8.11.4-win-x64.zip", "node-v8.11.4-win-x64", "72a21e2fcd3703994f57cf707b92e7f939df99c3e0298102e7436849e4948536"), "8.12.0-darwin_amd64": ("node-v8.12.0-darwin-x64.tar.gz", "node-v8.12.0-darwin-x64", "ca131b84dfcf2b6f653a6521d31f7a108ad7d83f4d7e781945b2eca8172064aa"), "8.12.0-linux_arm64": ("node-v8.12.0-linux-arm64.tar.xz", "node-v8.12.0-linux-arm64", "0fbdcfd8cf0cb5e8f5beff84ba091fd47126ba44c628e3a351501419b211aa1a"), "8.12.0-linux_amd64": ("node-v8.12.0-linux-x64.tar.xz", "node-v8.12.0-linux-x64", "29a20479cd1e3a03396a4e74a1784ccdd1cf2f96928b56f6ffa4c8dae40c88f2"), "8.12.0-windows_amd64": ("node-v8.12.0-win-x64.zip", "node-v8.12.0-win-x64", "9b22c9b23148b61ea0052826b3ac0255b8a3a542c125272b8f014f15bf11b091"), "8.13.0-darwin_amd64": ("node-v8.13.0-darwin-x64.tar.gz", "node-v8.13.0-darwin-x64", "f6261c7a09a2c8bd77a8760a0e110410f508e5641ca132511b4883600f2d65f0"), "8.13.0-linux_arm64": ("node-v8.13.0-linux-arm64.tar.xz", "node-v8.13.0-linux-arm64", "e8e0daab515dfd0c2323b8e1274475f61c8ca1cf582dcc254583cbf8593425e3"), "8.13.0-linux_amd64": ("node-v8.13.0-linux-x64.tar.xz", "node-v8.13.0-linux-x64", "8fa1227b28113e25a8960d7fa6779a8c18bf20cfaafc9c5d0e46a3ee88373669"), "8.13.0-windows_amd64": ("node-v8.13.0-win-x64.zip", "node-v8.13.0-win-x64", "46293121d207350bd8d334efb67303337933c4dac886a840f88ff6059bff9443"), "8.14.0-darwin_amd64": ("node-v8.14.0-darwin-x64.tar.gz", "node-v8.14.0-darwin-x64", "1e9bb233bb3c3b01826f9d7e1b3ecf1047840ce96a3a7d1921ddcb569c467329"), "8.14.0-linux_arm64": ("node-v8.14.0-linux-arm64.tar.xz", "node-v8.14.0-linux-arm64", "fbcef89a60f1f40699589850f861fc84354a6f240610e2726c3743455dd82525"), "8.14.0-linux_amd64": ("node-v8.14.0-linux-x64.tar.xz", "node-v8.14.0-linux-x64", "a56d1af4d7da81504338b09809cf10b3144808d47d4117b9bd9a5a4ec4d5d9b9"), "8.14.0-windows_amd64": ("node-v8.14.0-win-x64.zip", "node-v8.14.0-win-x64", "d0be7c96a25c5d2b69f8a3510e9f4414643d5fe361b4509d455249e57f9a50af"), "8.14.1-darwin_amd64": ("node-v8.14.1-darwin-x64.tar.gz", "node-v8.14.1-darwin-x64", "d180a9b70de569e4c3d10c0c4a0af74e40dbca3e845df43ce1ec522bb4252eda"), "8.14.1-linux_arm64": ("node-v8.14.1-linux-arm64.tar.xz", "node-v8.14.1-linux-arm64", "488a66288052c6497133179e4546efb7fbaf105e432cd0d9aab3471901ab5e58"), "8.14.1-linux_amd64": ("node-v8.14.1-linux-x64.tar.xz", "node-v8.14.1-linux-x64", "1fec92a0110f692c68f7bdbec41b340c474bd77063323520786a7b9b00473daf"), "8.14.1-windows_amd64": ("node-v8.14.1-win-x64.zip", "node-v8.14.1-win-x64", "41793b873f98ceed632b24120ef44b2df89625f3dfa90eb9298dad698249167c"), "8.15.0-darwin_amd64": ("node-v8.15.0-darwin-x64.tar.gz", "node-v8.15.0-darwin-x64", "a393971136408f837fbc0f7d71a63754f91cfb1851d48bd612d8219eb61956f1"), "8.15.0-linux_arm64": ("node-v8.15.0-linux-arm64.tar.xz", "node-v8.15.0-linux-arm64", "5985c6dce65b1161ff41253da5aa4e64b8f10eb010a5d2712ea9b659f70179d7"), "8.15.0-linux_amd64": ("node-v8.15.0-linux-x64.tar.xz", "node-v8.15.0-linux-x64", "c1f0c5facdba78b5dec5136aec40dcb00b5c7cf404d9236a99c955994f91d969"), "8.15.0-windows_amd64": ("node-v8.15.0-win-x64.zip", "node-v8.15.0-win-x64", "13d8eab29c191bd16c69a70a556178a5adc988b243a036aaf3d5158861b60d8e"), "8.15.1-darwin_amd64": ("node-v8.15.1-darwin-x64.tar.gz", "node-v8.15.1-darwin-x64", "f3da0b4397150226c008a86c99d77dbb835dc62219d863654913a78332ab19a5"), "8.15.1-linux_arm64": ("node-v8.15.1-linux-arm64.tar.xz", "node-v8.15.1-linux-arm64", "69e000d78342c3d39583922c57947a906ad723789d6294951deb10cbe8709605"), "8.15.1-linux_amd64": ("node-v8.15.1-linux-x64.tar.xz", "node-v8.15.1-linux-x64", "5643b54c583eebaa40c1623b16cba4e3955ff5dfdd44036f6bafd761160c993d"), "8.15.1-windows_amd64": ("node-v8.15.1-win-x64.zip", "node-v8.15.1-win-x64", "f636fa578dc079bacc6c4bef13284ddb893c99f7640b96701c2690bd9c1431f5"), "8.16.0-darwin_amd64": ("node-v8.16.0-darwin-x64.tar.gz", "node-v8.16.0-darwin-x64", "a6710b8af0862fab0ccdba0549dbcdad76b5f99070652e64f6a85158038fc9a6"), "8.16.0-linux_arm64": ("node-v8.16.0-linux-arm64.tar.xz", "node-v8.16.0-linux-arm64", "4583d1cb44ff8b51cbf0402a78f2fe086c13a6c900c20c8be14e3b0e28e34335"), "8.16.0-linux_amd64": ("node-v8.16.0-linux-x64.tar.xz", "node-v8.16.0-linux-x64", "e538ffaaf2f808c084e70f1a1d2ff5559cff892cfd56e0bb67d00b0a95fc3a7a"), "8.16.0-windows_amd64": ("node-v8.16.0-win-x64.zip", "node-v8.16.0-win-x64", "d6baa929bacb78b347b29ebb0263220ea649ce82f3cdfd3f0b41ac725d1bbba5"), "8.16.1-darwin_amd64": ("node-v8.16.1-darwin-x64.tar.gz", "node-v8.16.1-darwin-x64", "ef1cb93f03bca4b9528e5d3226bdf8efa135e4b12285eee1e4760da06bac631a"), "8.16.1-linux_arm64": ("node-v8.16.1-linux-arm64.tar.xz", "node-v8.16.1-linux-arm64", "0c61c6ae8a70d96ab19848a09b2010d29b806f2dd79177da22c743fd5e352a98"), "8.16.1-linux_amd64": ("node-v8.16.1-linux-x64.tar.xz", "node-v8.16.1-linux-x64", "22a2580569c787ea83960bda0eae5dfaf1fe79382a52ad5fa5cd3accb93a1818"), "8.16.1-windows_amd64": ("node-v8.16.1-win-x64.zip", "node-v8.16.1-win-x64", "396dc41740bca0355d11865780e2af8e88eb17581cd2c445ccaf29b862901ab8"), "8.16.2-darwin_amd64": ("node-v8.16.2-darwin-x64.tar.gz", "node-v8.16.2-darwin-x64", "359331120e83f0707219398fc543b05eee9476446ecce549c20c4d9c7c103d29"), "8.16.2-linux_arm64": ("node-v8.16.2-linux-arm64.tar.xz", "node-v8.16.2-linux-arm64", "5afe366affb05136d25e99ec97a7a1ee1b690cc26df43567af0509f36b45e682"), "8.16.2-linux_amd64": ("node-v8.16.2-linux-x64.tar.xz", "node-v8.16.2-linux-x64", "88617a293f5828cc94ee99c94a43fbea12b989e34fe643fc14885a14748a8da6"), "8.16.2-windows_amd64": ("node-v8.16.2-win-x64.zip", "node-v8.16.2-win-x64", "98c615221500434155a8a5aff5fe96cd000400f3e76858ca97e6624f1d15eb73"), "8.17.0-darwin_amd64": ("node-v8.17.0-darwin-x64.tar.gz", "node-v8.17.0-darwin-x64", "3117430fc93e9865e4a1842616cc98767b5d6987fd9d727c8be4068714570e16"), "8.17.0-linux_arm64": ("node-v8.17.0-linux-arm64.tar.xz", "node-v8.17.0-linux-arm64", "8318d1ee0265d84025ecbea76aaecd732974a6f4ac8492ddd84231cee77ba948"), "8.17.0-linux_amd64": ("node-v8.17.0-linux-x64.tar.xz", "node-v8.17.0-linux-x64", "b7f6dd77fb173c8c7c30d61d0702eefc236bba74398538aa77bfa2bb47bddce6"), "8.17.0-windows_amd64": ("node-v8.17.0-win-x64.zip", "node-v8.17.0-win-x64", "e95a63e81b27e78872c0efb9dd5809403014dbf9896035cc17adf51a350f88fa"), "9.0.0-darwin_amd64": ("node-v9.0.0-darwin-x64.tar.gz", "node-v9.0.0-darwin-x64", "40fe905e492deadbf84c46baba413294e516fa844ed8e68adb4117f8acabe9a9"), "9.0.0-linux_arm64": ("node-v9.0.0-linux-arm64.tar.xz", "node-v9.0.0-linux-arm64", "0250e13705259dcf736ac4216833c2ade459e3ade94d89af68bd98ded1783cb6"), "9.0.0-linux_amd64": ("node-v9.0.0-linux-x64.tar.xz", "node-v9.0.0-linux-x64", "8313d2f6d69dbea4cb860803a156f093041cbe352a843c06f9f05cab1f30e9cc"), "9.0.0-windows_amd64": ("node-v9.0.0-win-x64.zip", "node-v9.0.0-win-x64", "d25901007e7c48da3af162bc1917d5bdd78c7e3b9cb64f16f90c38b59ef7b412"), "9.1.0-darwin_amd64": ("node-v9.1.0-darwin-x64.tar.gz", "node-v9.1.0-darwin-x64", "8e180de9b3f6a79f09a391c89de54920bbf5375337d3e13c5bfcbce85af711ab"), "9.1.0-linux_arm64": ("node-v9.1.0-linux-arm64.tar.xz", "node-v9.1.0-linux-arm64", "37d329fa06b22e30243c503b64d9666d56abb6c0ce903251d4b43e7ad0833fb3"), "9.1.0-linux_amd64": ("node-v9.1.0-linux-x64.tar.xz", "node-v9.1.0-linux-x64", "b796ed115c97acd23211c294129b0a834ff3a6a0f583111443b89d2b24e0d4d9"), "9.1.0-windows_amd64": ("node-v9.1.0-win-x64.zip", "node-v9.1.0-win-x64", "f2e76f536ff4fedd9884684f0b1979e04d0fd1c2a65d7d1a5a013de885dd07b3"), "9.2.0-darwin_amd64": ("node-v9.2.0-darwin-x64.tar.gz", "node-v9.2.0-darwin-x64", "42f78982b8614f099bc70819db40074ff7c1c49d4bac71eca5ffe4120452f289"), "9.2.0-linux_arm64": ("node-v9.2.0-linux-arm64.tar.xz", "node-v9.2.0-linux-arm64", "1b5c44160b7bfc9e5d63697d63c82330ae3e6094ab48449bd958ebe0baef73f0"), "9.2.0-linux_amd64": ("node-v9.2.0-linux-x64.tar.xz", "node-v9.2.0-linux-x64", "ded9cef0243bbe8ac5a417be0c6471bed6ed82367714ccb23f79a5be0ba2bd5d"), "9.2.0-windows_amd64": ("node-v9.2.0-win-x64.zip", "node-v9.2.0-win-x64", "5e7feb536547c715155d772f90857239b37897c1a1a664809fd84a7aeae1a724"), "9.2.1-darwin_amd64": ("node-v9.2.1-darwin-x64.tar.gz", "node-v9.2.1-darwin-x64", "4263f3da0280e2decd3a2ab97672e6f718acdf704664a3f1251e4ea267ccc971"), "9.2.1-linux_arm64": ("node-v9.2.1-linux-arm64.tar.xz", "node-v9.2.1-linux-arm64", "09d362e2ed5f4af5e5dc2253bb4523d7bcb92135bcc11d9eb89ad8336229b756"), "9.2.1-linux_amd64": ("node-v9.2.1-linux-x64.tar.xz", "node-v9.2.1-linux-x64", "548d2959939235ca56c98740f64b64058e43d1499d760603b7941b7c37ad10fe"), "9.2.1-windows_amd64": ("node-v9.2.1-win-x64.zip", "node-v9.2.1-win-x64", "7b48ef7c718fe5748844f93101f9276a88ae1cf3c4c228f85306a6a266471b5b"), "9.3.0-darwin_amd64": ("node-v9.3.0-darwin-x64.tar.gz", "node-v9.3.0-darwin-x64", "0539601e67e9be6995d4ba4abe565a748e25699060631369f59166d5de43d21a"), "9.3.0-linux_arm64": ("node-v9.3.0-linux-arm64.tar.xz", "node-v9.3.0-linux-arm64", "11300e878220962adade33238dd6e55928ad6d1362e0daa1f12e272137e68c0b"), "9.3.0-linux_amd64": ("node-v9.3.0-linux-x64.tar.xz", "node-v9.3.0-linux-x64", "0424dd6fa059fc32e0b73f460cb587b92b13c7b0af56331bbdc53a52e43f24ea"), "9.3.0-windows_amd64": ("node-v9.3.0-win-x64.zip", "node-v9.3.0-win-x64", "53bceda79c8d5dd8a185221a5ea2fc8f2b24ed7e0c9c91d18f6016b3624ff096"), "9.4.0-darwin_amd64": ("node-v9.4.0-darwin-x64.tar.gz", "node-v9.4.0-darwin-x64", "fa271c6012d517851603829af2131b92dc7b03d6f167dcd197cb83468a4971e8"), "9.4.0-linux_arm64": ("node-v9.4.0-linux-arm64.tar.xz", "node-v9.4.0-linux-arm64", "ceed69e91723cb902fcf70e790d34147a91241509257c77a62327871dfad04fa"), "9.4.0-linux_amd64": ("node-v9.4.0-linux-x64.tar.xz", "node-v9.4.0-linux-x64", "6d331d75a39fc5292dd128ad83f6dd14bbbdcb84ba0dfe793fade833be5de95a"), "9.4.0-windows_amd64": ("node-v9.4.0-win-x64.zip", "node-v9.4.0-win-x64", "89d49d73eb92483af0133c97e57a5b521c523960c130c76727daa3412af7d5d8"), "9.5.0-darwin_amd64": ("node-v9.5.0-darwin-x64.tar.gz", "node-v9.5.0-darwin-x64", "bc5c6eb21a90dbcaf90479838416c90524fe6d47e92c928ef57d7e96a54eb5fe"), "9.5.0-linux_arm64": ("node-v9.5.0-linux-arm64.tar.xz", "node-v9.5.0-linux-arm64", "d6a98a51c032963014f606acc80babb456f3dc4c041534ca565f573a2382b253"), "9.5.0-linux_amd64": ("node-v9.5.0-linux-x64.tar.xz", "node-v9.5.0-linux-x64", "76dd38bb5a16a610894353228ef020653f81209a2e509d38aee78ace4410599e"), "9.5.0-windows_amd64": ("node-v9.5.0-win-x64.zip", "node-v9.5.0-win-x64", "2fd1c3865a34827af6b5d799aee68e011a16a637276cbf71e923c8bedd010ee8"), "9.6.0-darwin_amd64": ("node-v9.6.0-darwin-x64.tar.gz", "node-v9.6.0-darwin-x64", "4f2001075b724791bf652b5432073aaaaec03cb00b17cda054ab0a05126035fe"), "9.6.0-linux_arm64": ("node-v9.6.0-linux-arm64.tar.xz", "node-v9.6.0-linux-arm64", "eb10815b1d21e8f5111b90c15b19050279b44666d08a12f26906271e9f6b02dd"), "9.6.0-linux_amd64": ("node-v9.6.0-linux-x64.tar.xz", "node-v9.6.0-linux-x64", "24b8670c819278135b4b8851d880615dee8458fdb5f5390ed0c88c383377f5d3"), "9.6.0-windows_amd64": ("node-v9.6.0-win-x64.zip", "node-v9.6.0-win-x64", "5f1da1ef6ba776449900c931e7acc3b60e47f3080425bf0e6a1c0c5a07dbd6fd"), "9.6.1-darwin_amd64": ("node-v9.6.1-darwin-x64.tar.gz", "node-v9.6.1-darwin-x64", "de486bc479817df2df1f91468e85e5da228a19101422c0c9a27153c1d0013c6d"), "9.6.1-linux_arm64": ("node-v9.6.1-linux-arm64.tar.xz", "node-v9.6.1-linux-arm64", "6246c85acab2dd92463fa1c456db31a24cd7b50b3fa556c4976c5a91473b8c8f"), "9.6.1-linux_amd64": ("node-v9.6.1-linux-x64.tar.xz", "node-v9.6.1-linux-x64", "d38f1707faccc54fae3cb201c25b02c4a3474d2c409c64f2a1d08925b238f8ad"), "9.6.1-windows_amd64": ("node-v9.6.1-win-x64.zip", "node-v9.6.1-win-x64", "c8176d317945ce6221473d70999ec7e725f1c9a7477e991bd7c729026c46dffb"), "9.7.0-darwin_amd64": ("node-v9.7.0-darwin-x64.tar.gz", "node-v9.7.0-darwin-x64", "9730cf3c4c5e228d4855c3362b63dbe59041202d89ae30d7f5ca42f60f742c5d"), "9.7.0-linux_arm64": ("node-v9.7.0-linux-arm64.tar.xz", "node-v9.7.0-linux-arm64", "18bec2bec5e2496f33b4d9d7f3bea7411cdb5d108f390b5c1949ddeda0e61125"), "9.7.0-linux_amd64": ("node-v9.7.0-linux-x64.tar.xz", "node-v9.7.0-linux-x64", "5c7549ceeebdc7ac5acdcae5fffbeb9585e3b9e2003e70e116d9f19c768f73d1"), "9.7.0-windows_amd64": ("node-v9.7.0-win-x64.zip", "node-v9.7.0-win-x64", "a17796c9c888e88a9a086dc1a22cdd872d8e948fbf1e988a8132fef716990530"), "9.7.1-darwin_amd64": ("node-v9.7.1-darwin-x64.tar.gz", "node-v9.7.1-darwin-x64", "9ee0fa891787865b1eccc63ef56134e7de8bbf67b660a1dde9e309305a1dc3b0"), "9.7.1-linux_arm64": ("node-v9.7.1-linux-arm64.tar.xz", "node-v9.7.1-linux-arm64", "d9143c23f7aa171449229abd456c8a9e07dc1033a1e791132b3387d439e2475d"), "9.7.1-linux_amd64": ("node-v9.7.1-linux-x64.tar.xz", "node-v9.7.1-linux-x64", "33b3ecd0a1de891a4a2f3586f1c6498c95c1ecc15864a6e3f4f7826792850d99"), "9.7.1-windows_amd64": ("node-v9.7.1-win-x64.zip", "node-v9.7.1-win-x64", "8590ff193e645d7f719e25d9519633376c72cfa1b36192031705e0065b7d69b2"), "9.8.0-darwin_amd64": ("node-v9.8.0-darwin-x64.tar.gz", "node-v9.8.0-darwin-x64", "c95326d6d8d01e5d4fbf0ca1b1e4fc0d800d00516f38532cc887e17c78f2af07"), "9.8.0-linux_arm64": ("node-v9.8.0-linux-arm64.tar.xz", "node-v9.8.0-linux-arm64", "f3537d06f010e77739be073003fca0b477efec8a72d503dc5a1d942a19973b07"), "9.8.0-linux_amd64": ("node-v9.8.0-linux-x64.tar.xz", "node-v9.8.0-linux-x64", "9f631739b0a9b96b8760c42869e88592db9c3fda2425202bd8b2d09e6371133a"), "9.8.0-windows_amd64": ("node-v9.8.0-win-x64.zip", "node-v9.8.0-win-x64", "dd3971c126907a033f2bc93fdd29327af3ff5b9d151b3b90eb5db1832fe6df9e"), "9.9.0-darwin_amd64": ("node-v9.9.0-darwin-x64.tar.gz", "node-v9.9.0-darwin-x64", "15e71817fe172119d6f9e0166ab869f12c67bdb7371d27a78b0621c408239692"), "9.9.0-linux_arm64": ("node-v9.9.0-linux-arm64.tar.xz", "node-v9.9.0-linux-arm64", "06feb32656c91c3963270de18d4a7befe52d2d8c0fd78fbbb7792a881ffeec7a"), "9.9.0-linux_amd64": ("node-v9.9.0-linux-x64.tar.xz", "node-v9.9.0-linux-x64", "457151b4e6f27222232742ce44de1df73768a251309dddbfca2b385052ee977f"), "9.9.0-windows_amd64": ("node-v9.9.0-win-x64.zip", "node-v9.9.0-win-x64", "5186747c7cab6ff153e725c42446727e460d54e6c62353d5dc550046f5c05653"), "9.10.0-darwin_amd64": ("node-v9.10.0-darwin-x64.tar.gz", "node-v9.10.0-darwin-x64", "c4b98cc2f3c00b770f24549de112902b56d57be7963a1047cd116b357bc61569"), "9.10.0-linux_arm64": ("node-v9.10.0-linux-arm64.tar.xz", "node-v9.10.0-linux-arm64", "ba1d682aa1d5a12eeb39e7f51e4c67c6122b24482869ca2547c6f094eae90658"), "9.10.0-linux_amd64": ("node-v9.10.0-linux-x64.tar.xz", "node-v9.10.0-linux-x64", "b9bfffc03ef0e2c97d463619911552c7f5b1b8699de07bb913990a8b33800cb9"), "9.10.0-windows_amd64": ("node-v9.10.0-win-x64.zip", "node-v9.10.0-win-x64", "3f159de87fd987e7bf30bbffce722e2e5133c44fc847883053359e9b08d6fa88"), "9.10.1-darwin_amd64": ("node-v9.10.1-darwin-x64.tar.gz", "node-v9.10.1-darwin-x64", "ae2d9dfdd3fdb6a6fe588e5479a768ee502968f6544ac8ad6133cb2e05726793"), "9.10.1-linux_arm64": ("node-v9.10.1-linux-arm64.tar.xz", "node-v9.10.1-linux-arm64", "9b084b30e48a3a145fcc6cb282a1b46145b703c13a5eaee40afc7f9d82ad697b"), "9.10.1-linux_amd64": ("node-v9.10.1-linux-x64.tar.xz", "node-v9.10.1-linux-x64", "fc810056be2a0665d0f67b42d25e1b8442bd885d4893b3256a7cfe676bd973de"), "9.10.1-windows_amd64": ("node-v9.10.1-win-x64.zip", "node-v9.10.1-win-x64", "43bf882dec1550e00a039f77190a3e2a778354577e542563be4b5c205de17df1"), "9.11.0-darwin_amd64": ("node-v9.11.0-darwin-x64.tar.gz", "node-v9.11.0-darwin-x64", "e562cfc01a4d8e62c1d86f59cef4f00439b4ad279c97f95f76a39f4b3530b8e5"), "9.11.0-linux_arm64": ("node-v9.11.0-linux-arm64.tar.xz", "node-v9.11.0-linux-arm64", "8df1dd7a1ec298900cf699a7ee8e5f0f478075d0e4c4fd3fb6e3a4ad3527545c"), "9.11.0-linux_amd64": ("node-v9.11.0-linux-x64.tar.xz", "node-v9.11.0-linux-x64", "a4349420b74804b3404a4eea27341297968f61998b01f6504dbbad603700e944"), "9.11.0-windows_amd64": ("node-v9.11.0-win-x64.zip", "node-v9.11.0-win-x64", "6e7f586ece923fd71e36d5db80b6a6d731a2b156464058cb2304f6c0192637cb"), "9.11.1-darwin_amd64": ("node-v9.11.1-darwin-x64.tar.gz", "node-v9.11.1-darwin-x64", "7b1fb394aa41a62b477e36df16644bd383cc9084808511f6cd318b835a06aac6"), "9.11.1-linux_arm64": ("node-v9.11.1-linux-arm64.tar.xz", "node-v9.11.1-linux-arm64", "dba2de106fbde2013a204ca9fafdfe67c0426b4e63d186f888e59432ad2dbb03"), "9.11.1-linux_amd64": ("node-v9.11.1-linux-x64.tar.xz", "node-v9.11.1-linux-x64", "4d27a95d5c2f1c8ef99118794c9c4903e63963418d3e16ca7576760cff39879b"), "9.11.1-windows_amd64": ("node-v9.11.1-win-x64.zip", "node-v9.11.1-win-x64", "0a3566d57ccb7fed95d18fc6c3bc1552a1b1e4753f9bc6c5d45e04f325e1ee53"), "9.11.2-darwin_amd64": ("node-v9.11.2-darwin-x64.tar.gz", "node-v9.11.2-darwin-x64", "340993096108d1dc0e0b598560d87ec645fc94b0fc83a423c36343f2da45f4b8"), "9.11.2-linux_arm64": ("node-v9.11.2-linux-arm64.tar.xz", "node-v9.11.2-linux-arm64", "9a713a6f4473425b83bf67e13e4b3c9f1f683c996b913f1f6854d208996367b6"), "9.11.2-linux_amd64": ("node-v9.11.2-linux-x64.tar.xz", "node-v9.11.2-linux-x64", "a2e7fe4ee3c4e3f31e00dff241c92c2ed779a9f36735578603d2be966f938a4b"), "9.11.2-windows_amd64": ("node-v9.11.2-win-x64.zip", "node-v9.11.2-win-x64", "051db8f4d3c0503e3082173f16b25e2362de8f9a5e509c403992b2069d826c25"), "10.0.0-darwin_amd64": ("node-v10.0.0-darwin-x64.tar.gz", "node-v10.0.0-darwin-x64", "37447fdb5f5cbcf1307ca1661ed67e6e911e0e988c0cb6d15f92eebb211dce88"), "10.0.0-linux_arm64": ("node-v10.0.0-linux-arm64.tar.xz", "node-v10.0.0-linux-arm64", "18f626a967d72294d969bdf000ca80ef483a8bb75482a2c4d14f5e0141626611"), "10.0.0-linux_amd64": ("node-v10.0.0-linux-x64.tar.xz", "node-v10.0.0-linux-x64", "d57c391daef40e706ca71abeaf9d53271c9d0fdb9cd18a80f6296b04dbaf2d5a"), "10.0.0-windows_amd64": ("node-v10.0.0-win-x64.zip", "node-v10.0.0-win-x64", "a95d88e2c28cbcbadb1fa431ec0b686f196dda00d4a25b0829450dc8f5214ec3"), "10.1.0-darwin_amd64": ("node-v10.1.0-darwin-x64.tar.gz", "node-v10.1.0-darwin-x64", "383ef526e27b92113f8dc0dad406b771f6ecaf9e3fddd4f5357590a3cf543d7b"), "10.1.0-linux_arm64": ("node-v10.1.0-linux-arm64.tar.xz", "node-v10.1.0-linux-arm64", "01e252589cf1ce61d2aaa316895001eb24c90a48b04a0e4896de252d2840ffe9"), "10.1.0-linux_amd64": ("node-v10.1.0-linux-x64.tar.xz", "node-v10.1.0-linux-x64", "cb5860c0d3249330d882fb8c6619c082cf3cda177536d4ed979388dde0034f22"), "10.1.0-windows_amd64": ("node-v10.1.0-win-x64.zip", "node-v10.1.0-win-x64", "8448bbd50731e98a4ed8bb4f3f3964170ff3a26418e9bcb3caf770faa9fb06d7"), "10.2.0-darwin_amd64": ("node-v10.2.0-darwin-x64.tar.gz", "node-v10.2.0-darwin-x64", "35fcc482d07218119ce5fde62620994324f03f8c4426dd680886c6844b62232a"), "10.2.0-linux_arm64": ("node-v10.2.0-linux-arm64.tar.xz", "node-v10.2.0-linux-arm64", "8f970be59a6a11f511a04ae1bd303746f0c5409498e062fb1d263d3c3c1093bd"), "10.2.0-linux_amd64": ("node-v10.2.0-linux-x64.tar.xz", "node-v10.2.0-linux-x64", "a6ef9adc824db795b36f81ad0856adc5c878395c4ce2af20f5ba7b76a1ca9982"), "10.2.0-windows_amd64": ("node-v10.2.0-win-x64.zip", "node-v10.2.0-win-x64", "7d7144d57b1b910d10f51d5445ae4306f10d3d9f45ca08b49e8777472993db51"), "10.2.1-darwin_amd64": ("node-v10.2.1-darwin-x64.tar.gz", "node-v10.2.1-darwin-x64", "6ffa149f67e8bd68d291d62591b6573146a65682affd99eefe2835a9c048d3ef"), "10.2.1-linux_arm64": ("node-v10.2.1-linux-arm64.tar.xz", "node-v10.2.1-linux-arm64", "6899cab91fd01af6b73183d23693120ff0de547601d01822b53647d0f5d934ee"), "10.2.1-linux_amd64": ("node-v10.2.1-linux-x64.tar.xz", "node-v10.2.1-linux-x64", "59ffaba5f54ea6a62ada1013a0cc1741c6e6fa790ab9ab2302a98932e7fb85d5"), "10.2.1-windows_amd64": ("node-v10.2.1-win-x64.zip", "node-v10.2.1-win-x64", "ebe78920d72b7a226a345653f3f718f99dc531add35157d37d229050f3685705"), "10.3.0-darwin_amd64": ("node-v10.3.0-darwin-x64.tar.gz", "node-v10.3.0-darwin-x64", "0bb5b7e3fe8cccda2abda958d1eb0408f1518a8b0cb58b75ade5d507cd5d6053"), "10.3.0-linux_arm64": ("node-v10.3.0-linux-arm64.tar.xz", "node-v10.3.0-linux-arm64", "6811b7b9807135902990508143605c0c758d07f7726092ed1b2e27cc60111bd0"), "10.3.0-linux_amd64": ("node-v10.3.0-linux-x64.tar.xz", "node-v10.3.0-linux-x64", "eb3c3e2585494699716ad3197c8eedf4003d3f110829b30c5a0dc34414c47423"), "10.3.0-windows_amd64": ("node-v10.3.0-win-x64.zip", "node-v10.3.0-win-x64", "65d586afb087406a2800d8e51f664c88b26d510f077b85a3b177a1bb79f73677"), "10.4.0-darwin_amd64": ("node-v10.4.0-darwin-x64.tar.gz", "node-v10.4.0-darwin-x64", "82b27983c990a6860e8d729e0b15acf9643ffca0eff282a926268849dfd2c3d2"), "10.4.0-linux_arm64": ("node-v10.4.0-linux-arm64.tar.xz", "node-v10.4.0-linux-arm64", "18d01e0937cdd05386f59f792613aac7b6614a37312ede0c299bd589584976e9"), "10.4.0-linux_amd64": ("node-v10.4.0-linux-x64.tar.xz", "node-v10.4.0-linux-x64", "ce2232578408f7d6bdc7d8bbb49d3416225fe68c52540ac23f4a6e0294d947f6"), "10.4.0-windows_amd64": ("node-v10.4.0-win-x64.zip", "node-v10.4.0-win-x64", "315fc4099902a71b634fee15e4e160a0780703c59a66e7e4542045f6f2b91451"), "10.4.1-darwin_amd64": ("node-v10.4.1-darwin-x64.tar.gz", "node-v10.4.1-darwin-x64", "c232241c97e1f4659186205d50b44132e62b61cdc517f1fb86905a21d03e9189"), "10.4.1-linux_arm64": ("node-v10.4.1-linux-arm64.tar.xz", "node-v10.4.1-linux-arm64", "c00b75a28eb69e4238c9d560f50da3652395ba7bfa6e325d5a2b0cd0926070f7"), "10.4.1-linux_amd64": ("node-v10.4.1-linux-x64.tar.xz", "node-v10.4.1-linux-x64", "6196daea2b291cdb865b3597e6b819b13068cb2c9dbf27cb150256c557a81082"), "10.4.1-windows_amd64": ("node-v10.4.1-win-x64.zip", "node-v10.4.1-win-x64", "70e0b9f0036f878884fdfc585c1001a439508d1d4e6448c4aced60274a2dc191"), "10.5.0-darwin_amd64": ("node-v10.5.0-darwin-x64.tar.gz", "node-v10.5.0-darwin-x64", "a85bda6ab91da8595e71736944cbd77c61afe05092217defd0fb74d9f77109f0"), "10.5.0-linux_arm64": ("node-v10.5.0-linux-arm64.tar.xz", "node-v10.5.0-linux-arm64", "28e6baa2a4ac5b0f0f5adf85489574038d0a4ca48efe76a4e5831b6b222652ba"), "10.5.0-linux_amd64": ("node-v10.5.0-linux-x64.tar.xz", "node-v10.5.0-linux-x64", "8b12be967f5962a8173dca235e1a6f642ee29dcf5fc27697004af898ffeca187"), "10.5.0-windows_amd64": ("node-v10.5.0-win-x64.zip", "node-v10.5.0-win-x64", "ce2b1f9976de64bcc0a5ce877edee0d29c4db1ebab5a7fd713afffd661e99e08"), "10.6.0-darwin_amd64": ("node-v10.6.0-darwin-x64.tar.gz", "node-v10.6.0-darwin-x64", "537efef0c6fd998502fa10baf82ee21edf513256cc73575991354e19442d0b69"), "10.6.0-linux_arm64": ("node-v10.6.0-linux-arm64.tar.xz", "node-v10.6.0-linux-arm64", "be37aade1c085093e276b5822a05233a1057bcafe77f5b9526dbdf622330c4bb"), "10.6.0-linux_amd64": ("node-v10.6.0-linux-x64.tar.xz", "node-v10.6.0-linux-x64", "cfd47380729f2451169b8900b3bd65e4b9db669d1d540613758cd2ededf7b5e6"), "10.6.0-windows_amd64": ("node-v10.6.0-win-x64.zip", "node-v10.6.0-win-x64", "0b58e0414d76e48432588910ea682f002ba69d7be88deb3355ceffb2fe472f6d"), "10.7.0-darwin_amd64": ("node-v10.7.0-darwin-x64.tar.gz", "node-v10.7.0-darwin-x64", "913473055605c8ae92f46923e6ac400133895aafe7766574fd46899bc6b0c5a4"), "10.7.0-linux_arm64": ("node-v10.7.0-linux-arm64.tar.xz", "node-v10.7.0-linux-arm64", "c23856b3123f9e2cfae3f8b0668019f83e9450ee78dede02a8d43031255b7ba0"), "10.7.0-linux_amd64": ("node-v10.7.0-linux-x64.tar.xz", "node-v10.7.0-linux-x64", "ad1d44cbe64ef44db5d8d42690a76dd186d6a6f71a3c3d38449757fe73135329"), "10.7.0-windows_amd64": ("node-v10.7.0-win-x64.zip", "node-v10.7.0-win-x64", "a0914d4c1fb82f51a03a4f57c66c9ce6a65ccd4f3237706042c55799843f4b14"), "10.8.0-darwin_amd64": ("node-v10.8.0-darwin-x64.tar.gz", "node-v10.8.0-darwin-x64", "b800d8b55c234b1f7d972e9464b00328a1caea5f86f94fdb5fc88ebbed7852b7"), "10.8.0-linux_arm64": ("node-v10.8.0-linux-arm64.tar.xz", "node-v10.8.0-linux-arm64", "0333da24d1fe54abac26b0a06437d3336c0fb4816b280507a9851ab3742ef2e4"), "10.8.0-linux_amd64": ("node-v10.8.0-linux-x64.tar.xz", "node-v10.8.0-linux-x64", "497f3b243d7374ee0fe9ab200b175868b172c3a22282cedc6d7fb0cad82471f0"), "10.8.0-windows_amd64": ("node-v10.8.0-win-x64.zip", "node-v10.8.0-win-x64", "f98575fb551d78691a6f74ca4f9c254bbd9fb62135e9ec0ab7ec8c40a03648b0"), "10.9.0-darwin_amd64": ("node-v10.9.0-darwin-x64.tar.gz", "node-v10.9.0-darwin-x64", "3c4fe75dacfcc495a432a7ba2dec9045cff359af2a5d7d0429c84a424ef686fc"), "10.9.0-linux_arm64": ("node-v10.9.0-linux-arm64.tar.xz", "node-v10.9.0-linux-arm64", "3d6aa717d98bbf901c5325a02a81048eb47212bdc44963ef8d59c6e52e987b7c"), "10.9.0-linux_amd64": ("node-v10.9.0-linux-x64.tar.xz", "node-v10.9.0-linux-x64", "c5acb8b7055ee0b6ac653dc4e458c5db45348cecc564b388f4ed1def84a329ff"), "10.9.0-windows_amd64": ("node-v10.9.0-win-x64.zip", "node-v10.9.0-win-x64", "6a75cdbb69d62ed242d6cbf0238a470bcbf628567ee339d4d098a5efcda2401e"), "10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e"), "10.10.0-linux_arm64": ("node-v10.10.0-linux-arm64.tar.xz", "node-v10.10.0-linux-arm64", "7d57961d18ea70b4e99906d87f9de1a2defc45a36fcd8cd84295e9ae5c4281da"), "10.10.0-linux_amd64": ("node-v10.10.0-linux-x64.tar.xz", "node-v10.10.0-linux-x64", "686d2c7b7698097e67bcd68edc3d6b5d28d81f62436c7cf9e7779d134ec262a9"), "10.10.0-windows_amd64": ("node-v10.10.0-win-x64.zip", "node-v10.10.0-win-x64", "70c46e6451798be9d052b700ce5dadccb75cf917f6bf0d6ed54344c856830cfb"), "10.11.0-darwin_amd64": ("node-v10.11.0-darwin-x64.tar.gz", "node-v10.11.0-darwin-x64", "32ad850a0e5cfdefc32d4267707abad05bd5c9eabb047e8ed9bf97faeffc52b6"), "10.11.0-linux_arm64": ("node-v10.11.0-linux-arm64.tar.xz", "node-v10.11.0-linux-arm64", "289302470520fd63e2a92a878869061dda557fe1aabfea2bd5ff88f7af76d98d"), "10.11.0-linux_amd64": ("node-v10.11.0-linux-x64.tar.xz", "node-v10.11.0-linux-x64", "c2eab149e7f0712a6a3eb672a76d657b049a3b3ae0c2edc2e0571df5049fe82c"), "10.11.0-windows_amd64": ("node-v10.11.0-win-x64.zip", "node-v10.11.0-win-x64", "78b2a7a4305aa108b9a82ac7586d7200ab51428c2b882d1318fb44ca300a8609"), "10.12.0-darwin_amd64": ("node-v10.12.0-darwin-x64.tar.gz", "node-v10.12.0-darwin-x64", "f275c901b9aeaacea2bf22648329c2e9ade5e1ff63a446b83446d5d4e19464cc"), "10.12.0-linux_arm64": ("node-v10.12.0-linux-arm64.tar.xz", "node-v10.12.0-linux-arm64", "b327deca4e380559c8c1fbacb9e668b49127ea998de4c8fe83912838cf786786"), "10.12.0-linux_amd64": ("node-v10.12.0-linux-x64.tar.xz", "node-v10.12.0-linux-x64", "4eba2e9a6db95745b769915d58e57df6ca6724ec1f023f76556fce30ceca2367"), "10.12.0-windows_amd64": ("node-v10.12.0-win-x64.zip", "node-v10.12.0-win-x64", "44c938cf1409562d25d23b7c6bce110b53cd2a73774bed573b2979f0d88f51f8"), "10.13.0-darwin_amd64": ("node-v10.13.0-darwin-x64.tar.gz", "node-v10.13.0-darwin-x64", "815a5d18516934a3963ace9f0574f7d41f0c0ce9186a19be3d89e039e57598c5"), "10.13.0-linux_arm64": ("node-v10.13.0-linux-arm64.tar.xz", "node-v10.13.0-linux-arm64", "1537ebe64dc34a2a9b8ab6254213079789e9d59ed0ed26987afb1da37b6a8f87"), "10.13.0-linux_amd64": ("node-v10.13.0-linux-x64.tar.xz", "node-v10.13.0-linux-x64", "0dc6dba645550b66f8f00541a428c29da7c3cde32fb7eda2eb626a9db3bbf08d"), "10.13.0-windows_amd64": ("node-v10.13.0-win-x64.zip", "node-v10.13.0-win-x64", "eb09c9e9677f1919ec1ca78623c09b2a718ec5388b72b7662d5c41e5f628a52c"), "10.14.0-darwin_amd64": ("node-v10.14.0-darwin-x64.tar.gz", "node-v10.14.0-darwin-x64", "dd044aa0ddeb5e32fefa80a13b33bafe3f7e0536e15fe93c1e81b052c2f1965c"), "10.14.0-linux_arm64": ("node-v10.14.0-linux-arm64.tar.xz", "node-v10.14.0-linux-arm64", "4d80efe675c40d6d3af697e17e33cad8af1caf50655276ca99d0c4ca8e2f2cf2"), "10.14.0-linux_amd64": ("node-v10.14.0-linux-x64.tar.xz", "node-v10.14.0-linux-x64", "5f576f9893e0335f0c1b071a42fdf8b3e302577ad6ea38237aaef08ad0ca898e"), "10.14.0-windows_amd64": ("node-v10.14.0-win-x64.zip", "node-v10.14.0-win-x64", "a3acbbdbbdb6ff6d5ae6e6f5ccea55aef83cfa54f52c080538edc3ac6326797b"), "10.14.1-darwin_amd64": ("node-v10.14.1-darwin-x64.tar.gz", "node-v10.14.1-darwin-x64", "91ebe7d6da8a40c72618ac9d0b0a8e224ae01febd3f5595b43b1a58190dcacb1"), "10.14.1-linux_arm64": ("node-v10.14.1-linux-arm64.tar.xz", "node-v10.14.1-linux-arm64", "c1ca91356b007cc7624c7a9e00f3b7bed8dd10aba959be5f55e4ff13da334828"), "10.14.1-linux_amd64": ("node-v10.14.1-linux-x64.tar.xz", "node-v10.14.1-linux-x64", "b65e735cdf61fb80f114c498c8955efe8e096e4b3e173281d68aa9d2c05b0f97"), "10.14.1-windows_amd64": ("node-v10.14.1-win-x64.zip", "node-v10.14.1-win-x64", "7d51aa233ad290eb916a4c3134815204eb34ecb0a001dcecc5ea57333030f303"), "10.14.2-darwin_amd64": ("node-v10.14.2-darwin-x64.tar.gz", "node-v10.14.2-darwin-x64", "5306da5db576d9c984167b4693600a2e3074cc5a701961279837753fa2139baa"), "10.14.2-linux_arm64": ("node-v10.14.2-linux-arm64.tar.xz", "node-v10.14.2-linux-arm64", "8493b30c99d697b24fbaa5bfb3b43108ab3e334ab674188b7b7982fef903aa04"), "10.14.2-linux_amd64": ("node-v10.14.2-linux-x64.tar.xz", "node-v10.14.2-linux-x64", "e43de13bf7bee440a106a844c1bc3a2adb8829fd58b857702c8f1838fdd02a2a"), "10.14.2-windows_amd64": ("node-v10.14.2-win-x64.zip", "node-v10.14.2-win-x64", "45841fe5ffe87378c748dcb9799507f6192c34117409b2c6c18480d112a337de"), "10.15.0-darwin_amd64": ("node-v10.15.0-darwin-x64.tar.gz", "node-v10.15.0-darwin-x64", "353402461c898c569658d0a963790476f4d9828cc6c9286d81617ee8afcba4e8"), "10.15.0-linux_arm64": ("node-v10.15.0-linux-arm64.tar.xz", "node-v10.15.0-linux-arm64", "77aa4a02c5471b6eb7ba935cbc6829889a27115353cff7226a208c08b654e972"), "10.15.0-linux_amd64": ("node-v10.15.0-linux-x64.tar.xz", "node-v10.15.0-linux-x64", "4ee8503c1133797777880ebf75dcf6ae3f9b894c66fd2d5da507e407064c13b5"), "10.15.0-windows_amd64": ("node-v10.15.0-win-x64.zip", "node-v10.15.0-win-x64", "c1dbc9372ad789cd21727cb5f63b4a44ed3eae216763959cff8e68e68c6fcfe1"), "10.15.1-darwin_amd64": ("node-v10.15.1-darwin-x64.tar.gz", "node-v10.15.1-darwin-x64", "327dcef4b61dead1ae04d2743d3390a2b7e6cc6c389c62cfcfeb0486c5a9f181"), "10.15.1-linux_arm64": ("node-v10.15.1-linux-arm64.tar.xz", "node-v10.15.1-linux-arm64", "0fb6d24972fd991f476a942b1b21aca5059f93b9302318c5883120445ee6cd54"), "10.15.1-linux_amd64": ("node-v10.15.1-linux-x64.tar.xz", "node-v10.15.1-linux-x64", "77db68544c7812e925b82ccc41cd4669fdeb191cea8e20053e3f0e86889c4fce"), "10.15.1-windows_amd64": ("node-v10.15.1-win-x64.zip", "node-v10.15.1-win-x64", "bb5bdc9363e4050c94b3f82888141b81630230f86e520abb7dde49081f1292b9"), "10.15.2-darwin_amd64": ("node-v10.15.2-darwin-x64.tar.gz", "node-v10.15.2-darwin-x64", "8bbb6c15a0572f493d33ef044d06ccd0ff7ead8daa67f9a32df3e863277568e8"), "10.15.2-linux_arm64": ("node-v10.15.2-linux-arm64.tar.xz", "node-v10.15.2-linux-arm64", "2978e82d85654505d732b40dfa58f21276d99712d5d001101eaf87100d350139"), "10.15.2-linux_amd64": ("node-v10.15.2-linux-x64.tar.xz", "node-v10.15.2-linux-x64", "c10eece562cfeef1627f0d2bde7dc0be810948f6bf9a932e30a8c3b425652015"), "10.15.2-windows_amd64": ("node-v10.15.2-win-x64.zip", "node-v10.15.2-win-x64", "d97cf4788ccea6deef037ce27c91cc1a814644b878311b71811ab04d0bb8c47f"), "10.15.3-darwin_amd64": ("node-v10.15.3-darwin-x64.tar.gz", "node-v10.15.3-darwin-x64", "7a5eaa1f69614375a695ccb62017248e5dcc15b0b8edffa7db5b52997cf992ba"), "10.15.3-linux_arm64": ("node-v10.15.3-linux-arm64.tar.xz", "node-v10.15.3-linux-arm64", "3d7abbf64bffb07c55168ca0f1c17be12b0d93affe9b6cadd39724649215fab9"), "10.15.3-linux_amd64": ("node-v10.15.3-linux-x64.tar.xz", "node-v10.15.3-linux-x64", "faddbe418064baf2226c2fcbd038c3ef4ae6f936eb952a1138c7ff8cfe862438"), "10.15.3-windows_amd64": ("node-v10.15.3-win-x64.zip", "node-v10.15.3-win-x64", "93c881fdc0455a932dd5b506a7a03df27d9fe36155c1d3f351ebfa4e20bf1c0d"), "10.16.0-darwin_amd64": ("node-v10.16.0-darwin-x64.tar.gz", "node-v10.16.0-darwin-x64", "6c009df1b724026d84ae9a838c5b382662e30f6c5563a0995532f2bece39fa9c"), "10.16.0-linux_arm64": ("node-v10.16.0-linux-arm64.tar.xz", "node-v10.16.0-linux-arm64", "ae2e74ab2f5dbff96bf0b7d8457004bf3538233916f8834740bbe2d5a35442e5"), "10.16.0-linux_amd64": ("node-v10.16.0-linux-x64.tar.xz", "node-v10.16.0-linux-x64", "1827f5b99084740234de0c506f4dd2202a696ed60f76059696747c34339b9d48"), "10.16.0-windows_amd64": ("node-v10.16.0-win-x64.zip", "node-v10.16.0-win-x64", "aa22cb357f0fb54ccbc06b19b60e37eefea5d7dd9940912675d3ed988bf9a059"), "10.16.1-darwin_amd64": ("node-v10.16.1-darwin-x64.tar.gz", "node-v10.16.1-darwin-x64", "328e61fdacfe2f6f1a049d57e248b3eafc0345747831323a14fe1edf98d9b3bb"), "10.16.1-linux_arm64": ("node-v10.16.1-linux-arm64.tar.xz", "node-v10.16.1-linux-arm64", "c46ba1a8e9b9c0490ae81f8b2b13d332ed6f5c86d172fa817f749042ab329b93"), "10.16.1-linux_amd64": ("node-v10.16.1-linux-x64.tar.xz", "node-v10.16.1-linux-x64", "127d9b2f485523805208f867fc513842570b29b4d6831773eeb6dd403a22ba9d"), "10.16.1-windows_amd64": ("node-v10.16.1-win-x64.zip", "node-v10.16.1-win-x64", "1ff8b26670e1b935b51f4b795728f29845c31a3c38b3220b4fe71fb139bc5623"), "10.16.2-darwin_amd64": ("node-v10.16.2-darwin-x64.tar.gz", "node-v10.16.2-darwin-x64", "21ee8bdb04909f553e97af7c6e41009e15d06b886dd3e2ca8a92ce3e0a148a09"), "10.16.2-linux_arm64": ("node-v10.16.2-linux-arm64.tar.xz", "node-v10.16.2-linux-arm64", "5fb2b7d3c2b6b40e237cdc172eabfac2e485ee309ac2bcfbff413de1ed79a59e"), "10.16.2-linux_amd64": ("node-v10.16.2-linux-x64.tar.xz", "node-v10.16.2-linux-x64", "406718dc2f3164b3d1981c36b68b70ea448fbbac29cefbe23ff286b3cd55f264"), "10.16.2-windows_amd64": ("node-v10.16.2-win-x64.zip", "node-v10.16.2-win-x64", "01654dc79d82e9f3c89d01c8cf1cdce68d3a9118dbe968ee86a3ffd6ee153567"), "10.16.3-darwin_amd64": ("node-v10.16.3-darwin-x64.tar.gz", "node-v10.16.3-darwin-x64", "6febc571e1543c2845fa919c6d06b36a24e4e142c91aedbe28b6ff7d296119e4"), "10.16.3-linux_arm64": ("node-v10.16.3-linux-arm64.tar.xz", "node-v10.16.3-linux-arm64", "8ee77bad022bd460bf2867a97bf56ce7ddc4aa2ace067e45995fb1721a958428"), "10.16.3-linux_amd64": ("node-v10.16.3-linux-x64.tar.xz", "node-v10.16.3-linux-x64", "d2271fd8cf997fa7447d638dfa92749ff18ca4b0d796bf89f2a82bf7800d5506"), "10.16.3-windows_amd64": ("node-v10.16.3-win-x64.zip", "node-v10.16.3-win-x64", "19aa47de7c5950d7bd71a1e878013b98d93871cc311d7185f5472e6d3f633146"), "10.17.0-darwin_amd64": ("node-v10.17.0-darwin-x64.tar.gz", "node-v10.17.0-darwin-x64", "9b96140ad74b217f216c83ddf50d1f70a4296576f6edbbbfb65d0f478015d9df"), "10.17.0-linux_arm64": ("node-v10.17.0-linux-arm64.tar.xz", "node-v10.17.0-linux-arm64", "3ab8ee2b5c9aa4d060c68667ddef70cc2960e12bcfe4a0f2de7ebc0f008bf13d"), "10.17.0-linux_amd64": ("node-v10.17.0-linux-x64.tar.xz", "node-v10.17.0-linux-x64", "2b49cd296f969ef0ffb7922719ffa6542bedb89d6c959a47c023d11ce222f5d6"), "10.17.0-windows_amd64": ("node-v10.17.0-win-x64.zip", "node-v10.17.0-win-x64", "e84a1f3685219811bb4662eb3e3b55abd0c764c24cd2b224ba31b3f9f162baf6"), "10.18.0-darwin_amd64": ("node-v10.18.0-darwin-x64.tar.gz", "node-v10.18.0-darwin-x64", "a7af53e3363e8ab654b97387bc7cf352dddb324562404c1d35fe10cba3f27e0f"), "10.18.0-linux_arm64": ("node-v10.18.0-linux-arm64.tar.xz", "node-v10.18.0-linux-arm64", "b2b34dd43ea3979890663afa270e09e09c219f046e39e8e439eeda2821cc9643"), "10.18.0-linux_amd64": ("node-v10.18.0-linux-x64.tar.xz", "node-v10.18.0-linux-x64", "eac160acfc2c5b6fca021baa9943341fea50859f19c7ccbd56669b1fe04e691e"), "10.18.0-windows_amd64": ("node-v10.18.0-win-x64.zip", "node-v10.18.0-win-x64", "56afcc9c191dfc99017725be92ac1331e23afb1930913446eb91852cb02a8687"), "10.18.1-darwin_amd64": ("node-v10.18.1-darwin-x64.tar.gz", "node-v10.18.1-darwin-x64", "2b2d3379420e626eee393cabf1c90bc55957ff5bb067b82a74eb2f92147d6757"), "10.18.1-linux_arm64": ("node-v10.18.1-linux-arm64.tar.xz", "node-v10.18.1-linux-arm64", "9a6203697e0087a1c909961481d579c76777df1df622921e4ce16198851f30fe"), "10.18.1-linux_amd64": ("node-v10.18.1-linux-x64.tar.xz", "node-v10.18.1-linux-x64", "8cc40f45c2c62529b15e83a6bbe0ac1febf57af3c5720df68067c96c0fddbbdf"), "10.18.1-windows_amd64": ("node-v10.18.1-win-x64.zip", "node-v10.18.1-win-x64", "fb27bb95c27c72f2e25d0c41309b606b2ae48ba0d6094a19f206ad1df9dc5e19"), "10.19.0-darwin_amd64": ("node-v10.19.0-darwin-x64.tar.gz", "node-v10.19.0-darwin-x64", "b16328570651be44213a2303c1f9515fc506e0a96a273806f71ed000e3ca3cb3"), "10.19.0-linux_arm64": ("node-v10.19.0-linux-arm64.tar.xz", "node-v10.19.0-linux-arm64", "77bdbf859fc38e6e860efd479b0a7b7b6bd3e7cb05337e5cc5638251eb5d3a59"), "10.19.0-linux_amd64": ("node-v10.19.0-linux-x64.tar.xz", "node-v10.19.0-linux-x64", "34127c7c6b1ba02d6d4dc3a926f38a5fb88bb37fc7f051349005ce331c7a53c6"), "10.19.0-windows_amd64": ("node-v10.19.0-win-x64.zip", "node-v10.19.0-win-x64", "210efd45a7f79cf4c350d8f575f990becdd3833cd922796a4c83b27996f5679e"), "10.20.0-darwin_amd64": ("node-v10.20.0-darwin-x64.tar.gz", "node-v10.20.0-darwin-x64", "c153832774afcae89a82efb55ed80557d1a41e1880638ad57128a9a3762d212f"), "10.20.0-linux_arm64": ("node-v10.20.0-linux-arm64.tar.xz", "node-v10.20.0-linux-arm64", "f3567924d6b7f0fa55c4ee0a7330ec0dcaeec557982794796d6b312e7053c674"), "10.20.0-linux_amd64": ("node-v10.20.0-linux-x64.tar.xz", "node-v10.20.0-linux-x64", "c5721a89feecc0e98d42386e171cb763c077f782033ddc998819edcf9d93b691"), "10.20.0-windows_amd64": ("node-v10.20.0-win-x64.zip", "node-v10.20.0-win-x64", "d266313fa22885a6ec76eea521fb8a1131b4d9fb3a57afb045a98301aeb7d24e"), "10.20.1-darwin_amd64": ("node-v10.20.1-darwin-x64.tar.gz", "node-v10.20.1-darwin-x64", "6437e364cd93be246ffb67dd40775cbb467bb8d28d8af4413123f478bb6234b9"), "10.20.1-linux_arm64": ("node-v10.20.1-linux-arm64.tar.xz", "node-v10.20.1-linux-arm64", "e33cafff94a6308916530b4b724bbc138399484d96f71b1c23677596bec268d0"), "10.20.1-linux_amd64": ("node-v10.20.1-linux-x64.tar.xz", "node-v10.20.1-linux-x64", "5e0b1fbc6cf8c2c34dc33d880670ee1bc1c1e931099de3796a96143a962c92ee"), "10.20.1-windows_amd64": ("node-v10.20.1-win-x64.zip", "node-v10.20.1-win-x64", "5e4ec0936c51047c218c0c164cc80283cd36ecd40e0a6979281d395c1be8ee10"), "10.21.0-darwin_amd64": ("node-v10.21.0-darwin-x64.tar.gz", "node-v10.21.0-darwin-x64", "596900700c4a0de0303bb4c378a1abcd63f31efc848704c5fbc1230de628577a"), "10.21.0-linux_arm64": ("node-v10.21.0-linux-arm64.tar.xz", "node-v10.21.0-linux-arm64", "3af40706ff0da7fe0baa4683ead6c74445405a2553e7373e627f24d19d4ac100"), "10.21.0-linux_amd64": ("node-v10.21.0-linux-x64.tar.xz", "node-v10.21.0-linux-x64", "1d3296763e46540047099e4910812e81c4899c0595f2d82474e2099c1e1603e2"), "10.21.0-windows_amd64": ("node-v10.21.0-win-x64.zip", "node-v10.21.0-win-x64", "03dddcdaccdb40978ddf15d189acdc20409d9a666636db2595118690ff83ce82"), "10.22.0-darwin_amd64": ("node-v10.22.0-darwin-x64.tar.gz", "node-v10.22.0-darwin-x64", "c7583a297ba9c6cfc03688a32776155d02fabf9ff45847c63b12a68d400f1dc1"), "10.22.0-linux_arm64": ("node-v10.22.0-linux-arm64.tar.xz", "node-v10.22.0-linux-arm64", "abacc6f37e8dfbe398843c7dc7b9bb7153ff6e653ad50e85d73d86088da48372"), "10.22.0-linux_amd64": ("node-v10.22.0-linux-x64.tar.xz", "node-v10.22.0-linux-x64", "ddf33e038c593d6df36b1dd4b25c1b6fa8230c615e6312ad33e80ef863e4a74f"), "10.22.0-windows_amd64": ("node-v10.22.0-win-x64.zip", "node-v10.22.0-win-x64", "931c2907450790f89aa178fa84c1adbd1f7cb7ab0a34f8bfb4af25640e8d4e06"), "11.0.0-darwin_amd64": ("node-v11.0.0-darwin-x64.tar.gz", "node-v11.0.0-darwin-x64", "f70e12d246ba35e88c5c08a195215c5c913ce66c9d95d0bd21cc1d3e69904279"), "11.0.0-linux_arm64": ("node-v11.0.0-linux-arm64.tar.xz", "node-v11.0.0-linux-arm64", "0d0c7013fd00a8e713c36aa96bcc268eeadbad2ce48d87e19849d66f4c618cad"), "11.0.0-linux_amd64": ("node-v11.0.0-linux-x64.tar.xz", "node-v11.0.0-linux-x64", "418b1a73bcafbf5dd3bc787f0440c2b4123dfecc2b239f5651f0256cb5ab606d"), "11.0.0-windows_amd64": ("node-v11.0.0-win-x64.zip", "node-v11.0.0-win-x64", "4dd3ef7f5c8181be39cd45476b22ed34b6da2bf77377b699384d426702f8c969"), "11.1.0-darwin_amd64": ("node-v11.1.0-darwin-x64.tar.gz", "node-v11.1.0-darwin-x64", "5d6b84d2b0fd6afee07c371bc815a9e4b6671b85bedcb38815310bd0f884d3c8"), "11.1.0-linux_arm64": ("node-v11.1.0-linux-arm64.tar.xz", "node-v11.1.0-linux-arm64", "cbba27e1c90701fbb9db66cc2c6cc3049aaf08adb16cabd0cad970b74cdaf6d3"), "11.1.0-linux_amd64": ("node-v11.1.0-linux-x64.tar.xz", "node-v11.1.0-linux-x64", "c70419674d932452017556080264de2b6d1105c112647dd1dd495b739456dd91"), "11.1.0-windows_amd64": ("node-v11.1.0-win-x64.zip", "node-v11.1.0-win-x64", "985e4edc758cb5f77f85cddda0155616b92f163b8d3842c542b1c8a395068418"), "11.2.0-darwin_amd64": ("node-v11.2.0-darwin-x64.tar.gz", "node-v11.2.0-darwin-x64", "cd17fafcdb21ae80fb94e455e63567c70b3bceedf982b93ae9e4aea411f6a6ea"), "11.2.0-linux_arm64": ("node-v11.2.0-linux-arm64.tar.xz", "node-v11.2.0-linux-arm64", "3e6c47a29b85030b4305bdc2e15cbe37e1b54a2338ce1790637384ce349ed1fd"), "11.2.0-linux_amd64": ("node-v11.2.0-linux-x64.tar.xz", "node-v11.2.0-linux-x64", "629a603443c275f8ecd851994b81a9c02a36343dbcbafc279cbecb9ccd9cf906"), "11.2.0-windows_amd64": ("node-v11.2.0-win-x64.zip", "node-v11.2.0-win-x64", "3440b2880b4e3b78c9c18865df263317e7d3c3e179dad960d526004dc7e6ba9a"), "11.3.0-darwin_amd64": ("node-v11.3.0-darwin-x64.tar.gz", "node-v11.3.0-darwin-x64", "54acc7bdeffae79fdd73f959712305aee1d8d487d56813b43cae96d151ec79db"), "11.3.0-linux_arm64": ("node-v11.3.0-linux-arm64.tar.xz", "node-v11.3.0-linux-arm64", "642cc3fc94a856ad6d09e76eaf869672bef925308afdad398a58f18eeaf4e4b8"), "11.3.0-linux_amd64": ("node-v11.3.0-linux-x64.tar.xz", "node-v11.3.0-linux-x64", "d37fb7fae8a185409bccf106e91d8ffa3450115852795512fc62e6da0b5e3dbb"), "11.3.0-windows_amd64": ("node-v11.3.0-win-x64.zip", "node-v11.3.0-win-x64", "b801e908ec36a07f06df388845e22e0b7f3cede7a4030896712c8ee28cdb3f05"), "11.4.0-darwin_amd64": ("node-v11.4.0-darwin-x64.tar.gz", "node-v11.4.0-darwin-x64", "05a515146d5bc397625f442a6ecbbc7f0d071a2a7efbf1e2b2ed46d728bc7b30"), "11.4.0-linux_arm64": ("node-v11.4.0-linux-arm64.tar.xz", "node-v11.4.0-linux-arm64", "c32e752e74794a4254ae4caa892b7beb3be60dba6851e8e5d637febfb659ee3a"), "11.4.0-linux_amd64": ("node-v11.4.0-linux-x64.tar.xz", "node-v11.4.0-linux-x64", "24d9be161e7fb28e761801639cb452ff223269ed53d967e5745b5c6391eb3fbd"), "11.4.0-windows_amd64": ("node-v11.4.0-win-x64.zip", "node-v11.4.0-win-x64", "30b84ab0101c8916694e6cd6c0ccb5182e4555da5e06deb080e906ef5b3893df"), "11.5.0-darwin_amd64": ("node-v11.5.0-darwin-x64.tar.gz", "node-v11.5.0-darwin-x64", "741abd58ac67b4bf8d2ef991a7487ea17e421b2248688b93be0d2f34886c6aa2"), "11.5.0-linux_arm64": ("node-v11.5.0-linux-arm64.tar.xz", "node-v11.5.0-linux-arm64", "3f1436c1de70b2e34f7a63a5af7e6b106a8ebe9289b3f7d045ac4a4856570164"), "11.5.0-linux_amd64": ("node-v11.5.0-linux-x64.tar.xz", "node-v11.5.0-linux-x64", "ada54407b505b7e6f516c753f0e49220917dd11efa5ee892d3252bdd65d4a54c"), "11.5.0-windows_amd64": ("node-v11.5.0-win-x64.zip", "node-v11.5.0-win-x64", "3692939b1bbd7ee8b0a967429eef6b1d45078c2f4fc289aae261ca5bde5a0607"), "11.6.0-darwin_amd64": ("node-v11.6.0-darwin-x64.tar.gz", "node-v11.6.0-darwin-x64", "c880063b112c48130dba8f7b058de61959ae46fddcfa363715571b22c1cbeb26"), "11.6.0-linux_arm64": ("node-v11.6.0-linux-arm64.tar.xz", "node-v11.6.0-linux-arm64", "956016db41f4f96f8e005d36c738d7c833442d09a970462552eb214027e0268a"), "11.6.0-linux_amd64": ("node-v11.6.0-linux-x64.tar.xz", "node-v11.6.0-linux-x64", "2251a6c5b332e7ea69bbefba11950cb6c27ba50fa700468711f729da6a6f5324"), "11.6.0-windows_amd64": ("node-v11.6.0-win-x64.zip", "node-v11.6.0-win-x64", "d230828c1cc9863c9768106ffee0320ba42049b594bd2689e430b872e8f0b2dd"), "11.7.0-darwin_amd64": ("node-v11.7.0-darwin-x64.tar.gz", "node-v11.7.0-darwin-x64", "873b47e6fc97aef2f73b0e8dde641967b2a84a3b63d1697b9d8813e14fb3b01c"), "11.7.0-linux_arm64": ("node-v11.7.0-linux-arm64.tar.xz", "node-v11.7.0-linux-arm64", "82b9726c6b367a43530f868f61b1b2a05c942d3decdf9d2e18b4a9bdf353c223"), "11.7.0-linux_amd64": ("node-v11.7.0-linux-x64.tar.xz", "node-v11.7.0-linux-x64", "b2a0a7dde17fe0da5f86ce5fea3da2861d652a5e702e2177ee62813ff86451c0"), "11.7.0-windows_amd64": ("node-v11.7.0-win-x64.zip", "node-v11.7.0-win-x64", "00834d16532f24583bf56d2baab03904b0220154cc712344be95e4d05c6234dd"), "11.8.0-darwin_amd64": ("node-v11.8.0-darwin-x64.tar.gz", "node-v11.8.0-darwin-x64", "fbb26b38f408c2f2324a5821062c16103f54de16d24f9f24c4e270a3a41f4832"), "11.8.0-linux_arm64": ("node-v11.8.0-linux-arm64.tar.xz", "node-v11.8.0-linux-arm64", "42b190c686cb8bafbdbf418a6c20c6785a23ba0f1a1a85af44595057a3d5e25e"), "11.8.0-linux_amd64": ("node-v11.8.0-linux-x64.tar.xz", "node-v11.8.0-linux-x64", "85ca19c495d5cac6acf6ee4a3c8dfb4489fb67fefc184c61eb4513eb5ef99a88"), "11.8.0-windows_amd64": ("node-v11.8.0-win-x64.zip", "node-v11.8.0-win-x64", "cd4db1b9e7ac29ed81d433f2de85582902670a121961aa3f350533d5b2fd44c6"), "11.9.0-darwin_amd64": ("node-v11.9.0-darwin-x64.tar.gz", "node-v11.9.0-darwin-x64", "1df3dd99d174bb8cb61cc8e2aa419a4998c7ada9454123c34991ce30632f1ef8"), "11.9.0-linux_arm64": ("node-v11.9.0-linux-arm64.tar.xz", "node-v11.9.0-linux-arm64", "f39baa8d212e9676bfa7f1601f94d789c6dc6b35caf440df6ec815d238978457"), "11.9.0-linux_amd64": ("node-v11.9.0-linux-x64.tar.xz", "node-v11.9.0-linux-x64", "9bc461fb7f5fd3344301abfda834160d5397a4e289f9749ab03ba0b7e9a4c853"), "11.9.0-windows_amd64": ("node-v11.9.0-win-x64.zip", "node-v11.9.0-win-x64", "c62c01436f632858fea0194d4168b483e1aa485c3fc72247add4899a103c2677"), "11.10.0-darwin_amd64": ("node-v11.10.0-darwin-x64.tar.gz", "node-v11.10.0-darwin-x64", "1956528c6f3934a97508e36a4855c154f40f1923ccd61e296d5a85679103e3a1"), "11.10.0-linux_arm64": ("node-v11.10.0-linux-arm64.tar.xz", "node-v11.10.0-linux-arm64", "60ed6caa90d8188a55f0dbc63f4aef263fb4863e036d32989b820a2e40582c66"), "11.10.0-linux_amd64": ("node-v11.10.0-linux-x64.tar.xz", "node-v11.10.0-linux-x64", "fe4c617aaf88b5228bce0341d1c77bbae2622d69eaa17a15b7d4bcc60c4777c5"), "11.10.0-windows_amd64": ("node-v11.10.0-win-x64.zip", "node-v11.10.0-win-x64", "c39e711aebe678455fa74edf6d8f6184d6d93e20f160197799040a0c17005dba"), "11.10.1-darwin_amd64": ("node-v11.10.1-darwin-x64.tar.gz", "node-v11.10.1-darwin-x64", "dea52b86f6875efae26fbb6d0269d9769da7ca69408b74b6ab724d4b64004b07"), "11.10.1-linux_arm64": ("node-v11.10.1-linux-arm64.tar.xz", "node-v11.10.1-linux-arm64", "b116e57906ed73c970d64e7518b08c6de236575c5cd8bf09f4c1bd668524a014"), "11.10.1-linux_amd64": ("node-v11.10.1-linux-x64.tar.xz", "node-v11.10.1-linux-x64", "414216a7e47dbfb77141dce7a4452901ae2cdb4cd0deef3ab3ab49e0b2111f82"), "11.10.1-windows_amd64": ("node-v11.10.1-win-x64.zip", "node-v11.10.1-win-x64", "80cf14abacbc6b636bc192f4eee49421f082f21cdaa9c1ea5995c38f8c1375e5"), "11.11.0-darwin_amd64": ("node-v11.11.0-darwin-x64.tar.gz", "node-v11.11.0-darwin-x64", "6b7c8d93096bf065de0d0a42e8f027c424172c82df6f015d3149a5dbfa03c1cc"), "11.11.0-linux_arm64": ("node-v11.11.0-linux-arm64.tar.xz", "node-v11.11.0-linux-arm64", "febb698e74264ec0ecc738c86347e6bfb5d27e33ed492a031626df988a5fb4f3"), "11.11.0-linux_amd64": ("node-v11.11.0-linux-x64.tar.xz", "node-v11.11.0-linux-x64", "ee09c7712e741f84948f76a72b651bf088e516c3f38569b9e6f30c38c026c262"), "11.11.0-windows_amd64": ("node-v11.11.0-win-x64.zip", "node-v11.11.0-win-x64", "154a5b7ca7033382743c4752fa465a5d9902f4abed4263a38ea3f41ffa113910"), "11.12.0-darwin_amd64": ("node-v11.12.0-darwin-x64.tar.gz", "node-v11.12.0-darwin-x64", "93d68c1af41d02b262b3383d69b46eb326707ec010b321ad5655b91c4956e783"), "11.12.0-linux_arm64": ("node-v11.12.0-linux-arm64.tar.xz", "node-v11.12.0-linux-arm64", "9e89838e290c9bb478351bd403707d0b741ec56021c379c9f6da515a4cd1064a"), "11.12.0-linux_amd64": ("node-v11.12.0-linux-x64.tar.xz", "node-v11.12.0-linux-x64", "1c6bb93a24eda832708c1c10ec20316e1e4f30b3cfca9c5ee5d446762414b116"), "11.12.0-windows_amd64": ("node-v11.12.0-win-x64.zip", "node-v11.12.0-win-x64", "68e5bca1d6dd6b3de20870e7c593f9a890c48d2c9c83e15034baad6f7c0da426"), "11.13.0-darwin_amd64": ("node-v11.13.0-darwin-x64.tar.gz", "node-v11.13.0-darwin-x64", "c1a8f94b4778dad2d9f513cfdf9091810dc733a2daf4fa7e03d49ad133415b5d"), "11.13.0-linux_arm64": ("node-v11.13.0-linux-arm64.tar.xz", "node-v11.13.0-linux-arm64", "0edb29004fdbb5808331e765b4adde8b025a13d6619f49fec60a14582aba9ed7"), "11.13.0-linux_amd64": ("node-v11.13.0-linux-x64.tar.xz", "node-v11.13.0-linux-x64", "c2ae3caced5f181df282a6974ab3f5e232b5decb821aa8ea8fe758b0e0528223"), "11.13.0-windows_amd64": ("node-v11.13.0-win-x64.zip", "node-v11.13.0-win-x64", "f3dafd1f19841244f8f12952f9919c0a2857f6920b11f2a89554b061cd5a4525"), "11.14.0-darwin_amd64": ("node-v11.14.0-darwin-x64.tar.gz", "node-v11.14.0-darwin-x64", "37b8db4f6700a4b5aa3b6d4283538753953f6293aff99866aa9a81038848a4d9"), "11.14.0-linux_arm64": ("node-v11.14.0-linux-arm64.tar.xz", "node-v11.14.0-linux-arm64", "3d463f3b48e1060027f8a552657de6f3ee4724d718d546aa4ea5c301ee4ed083"), "11.14.0-linux_amd64": ("node-v11.14.0-linux-x64.tar.xz", "node-v11.14.0-linux-x64", "89e2cb0effa9bf075ee8bb6d92a6a50f7ccfdad03dd687f52ecdfab91230f9a1"), "11.14.0-windows_amd64": ("node-v11.14.0-win-x64.zip", "node-v11.14.0-win-x64", "58a5d3316c04335ff3da2ce66b89f3cce86b1d1ca878d1d6d68478160c66dc12"), "11.15.0-darwin_amd64": ("node-v11.15.0-darwin-x64.tar.gz", "node-v11.15.0-darwin-x64", "e953b657b1049e1de509a3fd0700cfeecd175f75a0d141d71393aa0d71fa29a9"), "11.15.0-linux_arm64": ("node-v11.15.0-linux-arm64.tar.xz", "node-v11.15.0-linux-arm64", "e458aa4c69da9ca2ae566c8eb56dc8b36d573b415bfd8eebca4ff2229fc4983d"), "11.15.0-linux_amd64": ("node-v11.15.0-linux-x64.tar.xz", "node-v11.15.0-linux-x64", "17424aef198fa322b93c79217ce7e8cdd264fed40383abbbd3e63c305ce1d7d8"), "11.15.0-windows_amd64": ("node-v11.15.0-win-x64.zip", "node-v11.15.0-win-x64", "f3cef50acf566724a5ec5df7697fb527d7339cafdae6c7c406a39358aee6cdf8"), "12.0.0-darwin_amd64": ("node-v12.0.0-darwin-x64.tar.gz", "node-v12.0.0-darwin-x64", "92c81a284e909424b50dd01e175260b75bbbdb487fdfe1885229817187ea76bc"), "12.0.0-linux_arm64": ("node-v12.0.0-linux-arm64.tar.xz", "node-v12.0.0-linux-arm64", "2ac36aa51f76654a8914d41a32bd5c3d3213cba14eea84abd9919d022b5694b4"), "12.0.0-linux_amd64": ("node-v12.0.0-linux-x64.tar.xz", "node-v12.0.0-linux-x64", "7a5609167265954cfb912e4dc8f36e5469335b6be1bb11d60d8427f92c03f5f9"), "12.0.0-windows_amd64": ("node-v12.0.0-win-x64.zip", "node-v12.0.0-win-x64", "96ab5f9f61d75daf3fb1072930b6e9249f15b77bc3b3dca516ae8439dc1500fb"), "12.1.0-darwin_amd64": ("node-v12.1.0-darwin-x64.tar.gz", "node-v12.1.0-darwin-x64", "57c592b13940aa44611aec08e7b425f35565a2c95c51736f433cb36eb65105b7"), "12.1.0-linux_arm64": ("node-v12.1.0-linux-arm64.tar.xz", "node-v12.1.0-linux-arm64", "67805a7976bef30d0e12211f18a99c6de405931e493fd32f451512473661ee10"), "12.1.0-linux_amd64": ("node-v12.1.0-linux-x64.tar.xz", "node-v12.1.0-linux-x64", "331c43176a20e705c6f4fdb61c69fee44dd3c2c93a20410be2c13b4f8515ef7b"), "12.1.0-windows_amd64": ("node-v12.1.0-win-x64.zip", "node-v12.1.0-win-x64", "6dc3ef4a6b4ce527f187270a1b0c5560771126df487ab9ddc4c3cd3b37d57eb6"), "12.2.0-darwin_amd64": ("node-v12.2.0-darwin-x64.tar.gz", "node-v12.2.0-darwin-x64", "c72ae8a2b989138c6e6e9b393812502df8c28546a016cf24e7a82dd27e3838af"), "12.2.0-linux_arm64": ("node-v12.2.0-linux-arm64.tar.xz", "node-v12.2.0-linux-arm64", "42e4a5c6ad0b402e281daf46a27a269249bdb8b4e31ff8869701aaddac2cc8c4"), "12.2.0-linux_amd64": ("node-v12.2.0-linux-x64.tar.xz", "node-v12.2.0-linux-x64", "89059969861606e2a435ff2619c4df6f41c040120e507d9c4f03374353357307"), "12.2.0-windows_amd64": ("node-v12.2.0-win-x64.zip", "node-v12.2.0-win-x64", "c1e7fb3c1c15d8f2ab5c1db9c9662097f9c682164b3f7397955ccce946442c97"), "12.3.0-darwin_amd64": ("node-v12.3.0-darwin-x64.tar.gz", "node-v12.3.0-darwin-x64", "4a9faa038fb4e6e930a0fecd9818a4820b4ca91d1c45a1c1279fe49cdbd28160"), "12.3.0-linux_arm64": ("node-v12.3.0-linux-arm64.tar.xz", "node-v12.3.0-linux-arm64", "3d6e7046b938ff1f2535bdcc892a82abf44d875d1e96779cc3ea9a074ccfa200"), "12.3.0-linux_amd64": ("node-v12.3.0-linux-x64.tar.xz", "node-v12.3.0-linux-x64", "2ce2c7a4d7fe3c560415e8dcbc5905a66a8bf28e2a2b2cff7e7a4eeb5753015d"), "12.3.0-windows_amd64": ("node-v12.3.0-win-x64.zip", "node-v12.3.0-win-x64", "b36c9f9809c90ce704465f066861314d6e33176a5d45da14c1519c3e4f35063e"), "12.3.1-darwin_amd64": ("node-v12.3.1-darwin-x64.tar.gz", "node-v12.3.1-darwin-x64", "b9c979f63a356090d8ff88ed141fd856ad853165c73633794a9d3a060334378e"), "12.3.1-linux_arm64": ("node-v12.3.1-linux-arm64.tar.xz", "node-v12.3.1-linux-arm64", "88df7f2e0c4a58661bb79b637daa417929efc6c4d6a77bba42a5127c5c383257"), "12.3.1-linux_amd64": ("node-v12.3.1-linux-x64.tar.xz", "node-v12.3.1-linux-x64", "46f52868c0643fe0d167ce24c3c873880c8e1494276c89c07114fb099da4f75a"), "12.3.1-windows_amd64": ("node-v12.3.1-win-x64.zip", "node-v12.3.1-win-x64", "aac3c4543f846c7ebf63e1498dec7955119dffffe65722bd8c6d2124ed4ecbd7"), "12.4.0-darwin_amd64": ("node-v12.4.0-darwin-x64.tar.gz", "node-v12.4.0-darwin-x64", "aaff97d59cda775165ef966ae74e70f55f3267e86d735ed3740ae9bf1d40531e"), "12.4.0-linux_arm64": ("node-v12.4.0-linux-arm64.tar.xz", "node-v12.4.0-linux-arm64", "bb2e7eabebdceb52424516dabce94cb37f55419e6ed19493916843a323c423cd"), "12.4.0-linux_amd64": ("node-v12.4.0-linux-x64.tar.xz", "node-v12.4.0-linux-x64", "9aec6a2a50c1791704a6069cbda6da62781361e44814d024e8bbaaf0deb41c5e"), "12.4.0-windows_amd64": ("node-v12.4.0-win-x64.zip", "node-v12.4.0-win-x64", "ec8623e2528a35d3219200308e7ed41e24d4f7cd96530a4e6ac2513e44f7fad1"), "12.5.0-darwin_amd64": ("node-v12.5.0-darwin-x64.tar.gz", "node-v12.5.0-darwin-x64", "a9ba9f584f015f1705063c10dd8d84d43f5b09dc7ecf4ee3968ab1ff1fe5d2b5"), "12.5.0-linux_arm64": ("node-v12.5.0-linux-arm64.tar.xz", "node-v12.5.0-linux-arm64", "d43b71a97f5484d13b655a8a0c1b1c0fc7e83b3719063cc362fe557d6e26bd69"), "12.5.0-linux_amd64": ("node-v12.5.0-linux-x64.tar.xz", "node-v12.5.0-linux-x64", "37c0c539aae69370f3c014cc4947748ce45ac5fa560f9b085724f22029834b27"), "12.5.0-windows_amd64": ("node-v12.5.0-win-x64.zip", "node-v12.5.0-win-x64", "f1b426fcd39ffdfec5d8ba60c6842cc11e9f49269cd49bc34c4fcee0517ddf66"), "12.6.0-darwin_amd64": ("node-v12.6.0-darwin-x64.tar.gz", "node-v12.6.0-darwin-x64", "004b7992a2621eb35a47c94d258510ca5744b5a8072364f235dc7e3d4bff7457"), "12.6.0-linux_arm64": ("node-v12.6.0-linux-arm64.tar.xz", "node-v12.6.0-linux-arm64", "b7a6580f0c5406b990b3c9f0d91297b103e38e2752b8b745c4d15310a9dd79d1"), "12.6.0-linux_amd64": ("node-v12.6.0-linux-x64.tar.xz", "node-v12.6.0-linux-x64", "1ac14567e2be5562df209900e28430bd11575d985a85e8a6df2743428570de33"), "12.6.0-windows_amd64": ("node-v12.6.0-win-x64.zip", "node-v12.6.0-win-x64", "0c5ac670c5bb0ea0d389bb7269cb84104702826f791a1d057eae02cdb9eed717"), "12.7.0-darwin_amd64": ("node-v12.7.0-darwin-x64.tar.gz", "node-v12.7.0-darwin-x64", "1a76bea7f7ed8c5c921852269ddd1300c9baba2f1e3f0377200a22c22cdea177"), "12.7.0-linux_arm64": ("node-v12.7.0-linux-arm64.tar.xz", "node-v12.7.0-linux-arm64", "abc4500eff8437503d475726b8ac2ed3463d2982bd66925a782f91b7d96e31de"), "12.7.0-linux_amd64": ("node-v12.7.0-linux-x64.tar.xz", "node-v12.7.0-linux-x64", "95867fdcfd4f821d84b3dd9fab5803fb29e093e911f2ab3c7111bcaf8bd5b9da"), "12.7.0-windows_amd64": ("node-v12.7.0-win-x64.zip", "node-v12.7.0-win-x64", "68802316ca4eb4d72ec5f9ff837752a6ec8cd73537ad7c346f30899ee523f4b7"), "12.8.0-darwin_amd64": ("node-v12.8.0-darwin-x64.tar.gz", "node-v12.8.0-darwin-x64", "5229571a1736befd6426dc0a6907be416e9f5c24695e3ef275ed2ba70f496499"), "12.8.0-linux_arm64": ("node-v12.8.0-linux-arm64.tar.xz", "node-v12.8.0-linux-arm64", "9f22aff38a8622b05821129f69dbe90695e01166f55c8d2a39b6c6a5aef8c6a8"), "12.8.0-linux_amd64": ("node-v12.8.0-linux-x64.tar.xz", "node-v12.8.0-linux-x64", "b6a9ab2e6e872375e0e27eda0698820a64495b31b1beab36cc54f9876b3a2052"), "12.8.0-windows_amd64": ("node-v12.8.0-win-x64.zip", "node-v12.8.0-win-x64", "b295aedebde069c4148534a9dfb2394ceba28cf367ddd8204a27d69c095a9e00"), "12.8.1-darwin_amd64": ("node-v12.8.1-darwin-x64.tar.gz", "node-v12.8.1-darwin-x64", "caccf8b409af342e35672cc766430587664f88d01dab622a5de44c8be1336e44"), "12.8.1-linux_arm64": ("node-v12.8.1-linux-arm64.tar.xz", "node-v12.8.1-linux-arm64", "3707240c402aae0b5879ce1ba17b32ebd224d47f5147639c6881a1b71ce65383"), "12.8.1-linux_amd64": ("node-v12.8.1-linux-x64.tar.xz", "node-v12.8.1-linux-x64", "1c7cf61cb8fa98a76d92445823d6dd1649e985899e16900b39eacdd8cd4094f3"), "12.8.1-windows_amd64": ("node-v12.8.1-win-x64.zip", "node-v12.8.1-win-x64", "c81ecaa03dc882dde36087c854e4831c13d3eb237f262f9ce74ccc6f156684da"), "12.9.0-darwin_amd64": ("node-v12.9.0-darwin-x64.tar.gz", "node-v12.9.0-darwin-x64", "24c1f0c93e485961446814662db942f1b309d843fb4ecbe50466d9857a51b343"), "12.9.0-linux_arm64": ("node-v12.9.0-linux-arm64.tar.xz", "node-v12.9.0-linux-arm64", "f7f6f102d097d64eba26f84f2760597f9831886ef7d0db3cba88459847f2743d"), "12.9.0-linux_amd64": ("node-v12.9.0-linux-x64.tar.xz", "node-v12.9.0-linux-x64", "7110bdd16e397870142ff0e8d92d4a4502d43ec047d970c843a9a4e5f9e79283"), "12.9.0-windows_amd64": ("node-v12.9.0-win-x64.zip", "node-v12.9.0-win-x64", "b5f05deb31ac04b9c3a487542daf151e01c05017403a56ba443da623f36b153b"), "12.9.1-darwin_amd64": ("node-v12.9.1-darwin-x64.tar.gz", "node-v12.9.1-darwin-x64", "9aaf29d30056e2233fd15dfac56eec12e8342d91bb6c13d54fb5e599383dddb9"), "12.9.1-linux_arm64": ("node-v12.9.1-linux-arm64.tar.xz", "node-v12.9.1-linux-arm64", "b6d986faf3a77b6c353c344645c93f2a0e0436c43865e6c215a24301a076a11f"), "12.9.1-linux_amd64": ("node-v12.9.1-linux-x64.tar.xz", "node-v12.9.1-linux-x64", "680a1263c9f5f91adadcada549f0a9c29f1b26d09658d2b501c334c3f63719e5"), "12.9.1-windows_amd64": ("node-v12.9.1-win-x64.zip", "node-v12.9.1-win-x64", "6a4e54bda091bd02dbd8ff1b9f6671e036297da012a53891e3834d4bf4bed297"), "12.10.0-darwin_amd64": ("node-v12.10.0-darwin-x64.tar.gz", "node-v12.10.0-darwin-x64", "4c16d1f6454f5dc3977ad00cea123792b8d4e1d6d1bf42bbc82a4202039a5971"), "12.10.0-linux_arm64": ("node-v12.10.0-linux-arm64.tar.xz", "node-v12.10.0-linux-arm64", "fa1afb9e8cfd964867351b6dac6cd918784ff309291612251c4745aeb0b10e02"), "12.10.0-linux_amd64": ("node-v12.10.0-linux-x64.tar.xz", "node-v12.10.0-linux-x64", "e8d2e6b62dd8183dc59a139a9ca3edc7c419a0d3d92e90fea9cb0ad52489843a"), "12.10.0-windows_amd64": ("node-v12.10.0-win-x64.zip", "node-v12.10.0-win-x64", "de341476711c71f82d06fabcc9874c1ff9e865fd7274334d64a67b1e31a53fd0"), "12.11.0-darwin_amd64": ("node-v12.11.0-darwin-x64.tar.gz", "node-v12.11.0-darwin-x64", "a0fd5c1c9e67099f52b73c732aa52a878c6ff67f50ff0e94c2c5628a87455130"), "12.11.0-linux_arm64": ("node-v12.11.0-linux-arm64.tar.xz", "node-v12.11.0-linux-arm64", "d1126439ff6d079b682a7cd6308cb226afd247e5cb0f7cc60cfb0e609a096622"), "12.11.0-linux_amd64": ("node-v12.11.0-linux-x64.tar.xz", "node-v12.11.0-linux-x64", "c0dc88110ac3ee095e3d09077545435b72d4cd52e35c43cd3fa666cff7446d46"), "12.11.0-windows_amd64": ("node-v12.11.0-win-x64.zip", "node-v12.11.0-win-x64", "457157358bd029196d47865dee66f8c263a3a4a5a8cdd1c0a8cf43ac45e9eda3"), "12.11.1-darwin_amd64": ("node-v12.11.1-darwin-x64.tar.gz", "node-v12.11.1-darwin-x64", "7dd24ee6d81668e65ce1b77b4bb4cdaf517d8f80bb19740d286606028506970b"), "12.11.1-linux_arm64": ("node-v12.11.1-linux-arm64.tar.xz", "node-v12.11.1-linux-arm64", "12777294258da80410fd7d5cbed46ead5d3cabacf376ee10ddb9e1a335b114e7"), "12.11.1-linux_amd64": ("node-v12.11.1-linux-x64.tar.xz", "node-v12.11.1-linux-x64", "00f7a0b59ff38c1c74d81732df925aa5ac5788b58412437327421f796878793d"), "12.11.1-windows_amd64": ("node-v12.11.1-win-x64.zip", "node-v12.11.1-win-x64", "0bab4473cd2ba03511b8859ddf2202bb012d5c541f9d57b555a5bbbf101fcb35"), "12.12.0-darwin_amd64": ("node-v12.12.0-darwin-x64.tar.gz", "node-v12.12.0-darwin-x64", "14a98237e8859bc22695719dbc2e9db5529a33ada0c6c377df4dc27b5622ffbb"), "12.12.0-linux_arm64": ("node-v12.12.0-linux-arm64.tar.xz", "node-v12.12.0-linux-arm64", "ad536aba218df64d8e901b28985f4c5f72f634bf903c449b0c84929f6940853c"), "12.12.0-linux_amd64": ("node-v12.12.0-linux-x64.tar.xz", "node-v12.12.0-linux-x64", "e3a38dfaf1233a3c43c2528869af52e74575781984369a5b705c89d84dfa3ac2"), "12.12.0-windows_amd64": ("node-v12.12.0-win-x64.zip", "node-v12.12.0-win-x64", "930e7bcd2ae5bcb1d4163c2adf09a392ed0e9a824b069d19daeb4f9f3430a195"), "12.13.0-darwin_amd64": ("node-v12.13.0-darwin-x64.tar.gz", "node-v12.13.0-darwin-x64", "49a7374670a111b033ce16611b20fd1aafd3296bbc662b184fe8fb26a29c22cc"), "12.13.0-linux_arm64": ("node-v12.13.0-linux-arm64.tar.xz", "node-v12.13.0-linux-arm64", "d65b3ce27639f15ae22941e3ff98a1c900aa9049fcc15518038615b0676037d5"), "12.13.0-linux_amd64": ("node-v12.13.0-linux-x64.tar.xz", "node-v12.13.0-linux-x64", "7a57ef2cb3036d7eacd50ae7ba07245a28336a93652641c065f747adb2a356d9"), "12.13.0-windows_amd64": ("node-v12.13.0-win-x64.zip", "node-v12.13.0-win-x64", "6f920cebeecb4957b4ef0def6d9b04c49d4582864f8d1a207ce8d0665865781a"), "12.13.1-darwin_amd64": ("node-v12.13.1-darwin-x64.tar.gz", "node-v12.13.1-darwin-x64", "12d14c7fbd98876a163a2b7e0aeb13657dc3e967e993efaf2dcacbe475a285e8"), "12.13.1-linux_arm64": ("node-v12.13.1-linux-arm64.tar.xz", "node-v12.13.1-linux-arm64", "3aef0178a8ab74c8e5c133e23d1896e53ed5c273415d165a0e72e005f5467cba"), "12.13.1-linux_amd64": ("node-v12.13.1-linux-x64.tar.xz", "node-v12.13.1-linux-x64", "aca06db37589966829b1ef0f163a5859b156a1d8e51b415bf47590f667c30a25"), "12.13.1-windows_amd64": ("node-v12.13.1-win-x64.zip", "node-v12.13.1-win-x64", "db33fb758ba49b96d073311ef9e9134b51bf96246ffd938909b2e02c65a6e890"), "12.14.0-darwin_amd64": ("node-v12.14.0-darwin-x64.tar.gz", "node-v12.14.0-darwin-x64", "5f3170b346b29e6902c0ca7e0993e3d1b4b650615348aa866de17ad965377048"), "12.14.0-linux_arm64": ("node-v12.14.0-linux-arm64.tar.xz", "node-v12.14.0-linux-arm64", "733b4f71ccdf114038bbe0f20574a1e8f4f60b53d39caf445f518745596eadda"), "12.14.0-linux_amd64": ("node-v12.14.0-linux-x64.tar.xz", "node-v12.14.0-linux-x64", "82ae74ee0a204de7ebf7767eaa8e382518d9b49668dcbb5bd7fd003154445d1f"), "12.14.0-windows_amd64": ("node-v12.14.0-win-x64.zip", "node-v12.14.0-win-x64", "526f4b01ffb270bdd8213b58b38843fa3c88f03c89b1898c641bc0e32607913e"), "12.14.1-darwin_amd64": ("node-v12.14.1-darwin-x64.tar.gz", "node-v12.14.1-darwin-x64", "0be10a28737527a1e5e3784d3ad844d742fe8b0718acd701fd48f718fd3af78f"), "12.14.1-linux_arm64": ("node-v12.14.1-linux-arm64.tar.xz", "node-v12.14.1-linux-arm64", "6cd28a5e6340f596aec8dbfd6720f444f011e6b9018622290a60dbd17f9baff6"), "12.14.1-linux_amd64": ("node-v12.14.1-linux-x64.tar.xz", "node-v12.14.1-linux-x64", "07cfcaa0aa9d0fcb6e99725408d9e0b07be03b844701588e3ab5dbc395b98e1b"), "12.14.1-windows_amd64": ("node-v12.14.1-win-x64.zip", "node-v12.14.1-win-x64", "1f96ccce3ba045ecea3f458e189500adb90b8bc1a34de5d82fc10a5bf66ce7e3"), "12.15.0-darwin_amd64": ("node-v12.15.0-darwin-x64.tar.gz", "node-v12.15.0-darwin-x64", "b6449cec39ac15b37abe4e59ef0eae50dcdfbf060c5276a01cc590f2a3372b7d"), "12.15.0-linux_arm64": ("node-v12.15.0-linux-arm64.tar.xz", "node-v12.15.0-linux-arm64", "c582cb65a0ec7f648618d3d33b4f87c374a3f930518b57eca1693828c965d6e5"), "12.15.0-linux_amd64": ("node-v12.15.0-linux-x64.tar.xz", "node-v12.15.0-linux-x64", "63df953deb091c1500e1044bef01d1953117970e757e74e90d915e1a4a0d1c9c"), "12.15.0-windows_amd64": ("node-v12.15.0-win-x64.zip", "node-v12.15.0-win-x64", "48b29cab597962f12b0aac081522e6192bc8642c582cd0fc1bf51557273888da"), "12.16.0-darwin_amd64": ("node-v12.16.0-darwin-x64.tar.gz", "node-v12.16.0-darwin-x64", "af3b9bbfdd9ae1b46390e7deeb77a2c1d8dbc6fb4171bbb0cfe8686fc1ecef1d"), "12.16.0-linux_arm64": ("node-v12.16.0-linux-arm64.tar.xz", "node-v12.16.0-linux-arm64", "f2d97187bd8d3175bf6266193107a030bfb827003d57ba6dd21de16aa622548d"), "12.16.0-linux_amd64": ("node-v12.16.0-linux-x64.tar.xz", "node-v12.16.0-linux-x64", "e8c38659540766db9d85bd7325ba8cce8ded56204f84507f73fdb41a26d9bd73"), "12.16.0-windows_amd64": ("node-v12.16.0-win-x64.zip", "node-v12.16.0-win-x64", "9a590dd064b491fbd40b366ae4a119fe6cef516a25fb4d78d7c2a64b37574da8"), "12.16.1-darwin_amd64": ("node-v12.16.1-darwin-x64.tar.gz", "node-v12.16.1-darwin-x64", "34895bce210ca4b3cf19cd480e6563588880dd7f5d798f3782e3650580d35920"), "12.16.1-linux_arm64": ("node-v12.16.1-linux-arm64.tar.xz", "node-v12.16.1-linux-arm64", "396c43ba507b8ec33c70cdc6f73b4a7c725bddb3f74a85a8b8ed77b436856fed"), "12.16.1-linux_amd64": ("node-v12.16.1-linux-x64.tar.xz", "node-v12.16.1-linux-x64", "b826753f14df9771609ffb8e7d2cc4cb395247cb704cf0cea0f04132d9cf3505"), "12.16.1-windows_amd64": ("node-v12.16.1-win-x64.zip", "node-v12.16.1-win-x64", "b93b73572c5e495154a9823d494de5729c77d1c83b041171154c4b5f3f76b590"), "12.16.2-darwin_amd64": ("node-v12.16.2-darwin-x64.tar.gz", "node-v12.16.2-darwin-x64", "483954e311a5ff649ddf32b473f635a58890790d284b5788bdd8d7ff850c6db2"), "12.16.2-linux_arm64": ("node-v12.16.2-linux-arm64.tar.xz", "node-v12.16.2-linux-arm64", "c88005467f6dcdb621d454b35ec39bb42e165c6a2e1cee74cabcdc01af307e81"), "12.16.2-linux_amd64": ("node-v12.16.2-linux-x64.tar.xz", "node-v12.16.2-linux-x64", "f94a6eb06e80ef2794ebf51a2baed0b89ed307d3196ab5579f16c0fa7cc62901"), "12.16.2-windows_amd64": ("node-v12.16.2-win-x64.zip", "node-v12.16.2-win-x64", "f34303a49384aee2e5daab5f248c5a719e850a9ebb19e7098fe2bfffb26efe03"), "12.16.3-darwin_amd64": ("node-v12.16.3-darwin-x64.tar.gz", "node-v12.16.3-darwin-x64", "0718812b3ab8e77e8d1354f4d10428ae99d78f721bdcceee527c4b592ea7fed0"), "12.16.3-linux_arm64": ("node-v12.16.3-linux-arm64.tar.xz", "node-v12.16.3-linux-arm64", "8311f513a7d1911200502dd3e00142cef56d600c851d5870f68d939802205b73"), "12.16.3-linux_amd64": ("node-v12.16.3-linux-x64.tar.xz", "node-v12.16.3-linux-x64", "1956e196e3c3c8ef5f0c45db76d7c1245af4ccdda2b7ab30a57ce91d6e165caa"), "12.16.3-windows_amd64": ("node-v12.16.3-win-x64.zip", "node-v12.16.3-win-x64", "d0bb0e0b1f1a948529ddd543e2cfe0bfe209eb843defc70217b3d2f84cbf3b78"), "12.17.0-darwin_amd64": ("node-v12.17.0-darwin-x64.tar.gz", "node-v12.17.0-darwin-x64", "8c3b9459462b8adaa10549f4da6a5ff5cdfaf7140a8a8020a87cc96d79022cc0"), "12.17.0-linux_arm64": ("node-v12.17.0-linux-arm64.tar.xz", "node-v12.17.0-linux-arm64", "54a0dbb203ff1700341d258cefa304bd31044bf0226e9e59a0de1128418cb5aa"), "12.17.0-linux_amd64": ("node-v12.17.0-linux-x64.tar.xz", "node-v12.17.0-linux-x64", "988653492a4f422fb112421c5c9d1c140146b665b480c2b24c66fffdd0b88a88"), "12.17.0-windows_amd64": ("node-v12.17.0-win-x64.zip", "node-v12.17.0-win-x64", "f3a64dc6ad48577f1f81521aa144c028beb7e353d0fcd05d7b420a72a84f50fc"), "12.18.0-darwin_amd64": ("node-v12.18.0-darwin-x64.tar.gz", "node-v12.18.0-darwin-x64", "11fe50e670315d2d3c46317d23f7a019f46a3d08b534fbadee9a1bc3d4f81852"), "12.18.0-linux_arm64": ("node-v12.18.0-linux-arm64.tar.xz", "node-v12.18.0-linux-arm64", "51b301102984ff73a74894396b774d00259bb3bb8c1de7c82674713acec7a214"), "12.18.0-linux_amd64": ("node-v12.18.0-linux-x64.tar.xz", "node-v12.18.0-linux-x64", "2febc2506c298048bfddf896056be6191c1f08716876d960a4990bd63a7fe05a"), "12.18.0-windows_amd64": ("node-v12.18.0-win-x64.zip", "node-v12.18.0-win-x64", "ca73a989eba5e863971cb600e5520cb4c5edf9c600fe8f76d9e4771ad03b5d08"), "12.18.1-darwin_amd64": ("node-v12.18.1-darwin-x64.tar.gz", "node-v12.18.1-darwin-x64", "80e1d644fe78838da47cd16de234b612c20e06ffe14447125db9622e381ed1ba"), "12.18.1-linux_arm64": ("node-v12.18.1-linux-arm64.tar.xz", "node-v12.18.1-linux-arm64", "b6683e6e887c6c44a3fe9ff419e80d36eaafed39eb2c2d1b04ee54b440a03217"), "12.18.1-linux_amd64": ("node-v12.18.1-linux-x64.tar.xz", "node-v12.18.1-linux-x64", "863f816967e297c9eb221ad3cf32521f7ac46fffc66750e60f159ed63809affa"), "12.18.1-windows_amd64": ("node-v12.18.1-win-x64.zip", "node-v12.18.1-win-x64", "93039ebfc7c5bfad168b015f77667757925070fff3ae84c3eb73348b3123a82a"), "12.18.2-darwin_amd64": ("node-v12.18.2-darwin-x64.tar.gz", "node-v12.18.2-darwin-x64", "6e6e7311943e4f3880db5038b8b8034a30469342fe436c8aaacf2997dfa305a6"), "12.18.2-linux_arm64": ("node-v12.18.2-linux-arm64.tar.xz", "node-v12.18.2-linux-arm64", "d7d3a05f36de9eb079b7b25e0fc1aaa0c960afdf36fb24b498f7303365eb945c"), "12.18.2-linux_amd64": ("node-v12.18.2-linux-x64.tar.xz", "node-v12.18.2-linux-x64", "b8dc634798ee783482c2ae1755bd7dff09d83fa7bb037cdc370b601d0a5e5cbb"), "12.18.2-windows_amd64": ("node-v12.18.2-win-x64.zip", "node-v12.18.2-win-x64", "91fdd5b5df16873c63541bc844c9eb66870d366b2076d114f9ab7528b5e2f9a3"), "12.18.3-darwin_amd64": ("node-v12.18.3-darwin-x64.tar.gz", "node-v12.18.3-darwin-x64", "af376caf114bdd5d7e566dbf7590e9077ffc01f9b2692eb2651f31d7219a30bb"), "12.18.3-linux_arm64": ("node-v12.18.3-linux-arm64.tar.xz", "node-v12.18.3-linux-arm64", "d330aab40029afc34f8b5d1abc2e67be233df4b31331cf08d538be2a666737bb"), "12.18.3-linux_amd64": ("node-v12.18.3-linux-x64.tar.xz", "node-v12.18.3-linux-x64", "b79e02e48d0a1ee4cd4ae138de97fda5413542f2a4f441a7d0e189697b8da563"), "12.18.3-windows_amd64": ("node-v12.18.3-win-x64.zip", "node-v12.18.3-win-x64", "1fcd30c09f0ac9fbecf45161519eff2cf621c199eef4663b1db41b3f2fef4041"), "13.0.0-darwin_amd64": ("node-v13.0.0-darwin-x64.tar.gz", "node-v13.0.0-darwin-x64", "612556a8c7e6b4cd08f6134b8afe5a05bf84c0121225fa9c542be1c98af04a35"), "13.0.0-linux_arm64": ("node-v13.0.0-linux-arm64.tar.xz", "node-v13.0.0-linux-arm64", "6ed882e17123861b5b81683de2b2c86be02c5916ef0beda04fd176329888fd12"), "13.0.0-linux_amd64": ("node-v13.0.0-linux-x64.tar.xz", "node-v13.0.0-linux-x64", "799d890f00a3a2a7415b813b286d32d38573df6525bc8ef80f40077cdd210d39"), "13.0.0-windows_amd64": ("node-v13.0.0-win-x64.zip", "node-v13.0.0-win-x64", "8ffcefde5e080d70790a9a2e1aab0724cc88b5526d5128b53fc59bf94f6ad5de"), "13.0.1-darwin_amd64": ("node-v13.0.1-darwin-x64.tar.gz", "node-v13.0.1-darwin-x64", "25621359a51ff218ecf4bb2ffc657815154230a967224f22b722840a2b9ad061"), "13.0.1-linux_arm64": ("node-v13.0.1-linux-arm64.tar.xz", "node-v13.0.1-linux-arm64", "ad6e051aede160d8be5cbab9c60a155b06a5696e8088d895e6eff3dd36f9a688"), "13.0.1-linux_amd64": ("node-v13.0.1-linux-x64.tar.xz", "node-v13.0.1-linux-x64", "d5657c19bb30b267bf2e0f2b61f6a96d8955aa30b69240f22d3fd2c65e123cf7"), "13.0.1-windows_amd64": ("node-v13.0.1-win-x64.zip", "node-v13.0.1-win-x64", "1a2552b630651e08e9027339f71a65fbe3944540f0875563ea25639a091e1f33"), "13.1.0-darwin_amd64": ("node-v13.1.0-darwin-x64.tar.gz", "node-v13.1.0-darwin-x64", "6501c1bcf2babb5b9c81dcff8b52021f726da8f6ee28df1637acade1a16c7d39"), "13.1.0-linux_arm64": ("node-v13.1.0-linux-arm64.tar.xz", "node-v13.1.0-linux-arm64", "646d597e6b0dc400429e46b703a5135c77bd71e653ea4c8254d0b60c17b6ec1d"), "13.1.0-linux_amd64": ("node-v13.1.0-linux-x64.tar.xz", "node-v13.1.0-linux-x64", "2eecb5a4b7975c3b406bee36b12c9a29e8bedf9553c88cad310b8f076db00881"), "13.1.0-windows_amd64": ("node-v13.1.0-win-x64.zip", "node-v13.1.0-win-x64", "d735e97bdeb7b74551b9d165c708a3fdea4dbb3801a65e70f6d6ae3539d48a03"), "13.2.0-darwin_amd64": ("node-v13.2.0-darwin-x64.tar.gz", "node-v13.2.0-darwin-x64", "2bcba358ef68ea21655728126c678063c60119e18e65d04f615d6b22dba8f7a5"), "13.2.0-linux_arm64": ("node-v13.2.0-linux-arm64.tar.xz", "node-v13.2.0-linux-arm64", "e6c4a5fe57585f69a20bd028275db31f43de421308e31d117f319b577210e527"), "13.2.0-linux_amd64": ("node-v13.2.0-linux-x64.tar.xz", "node-v13.2.0-linux-x64", "366df8a38b522a5899c3f48d8c9e359b3370495cf84867b2673dc10483adbdef"), "13.2.0-windows_amd64": ("node-v13.2.0-win-x64.zip", "node-v13.2.0-win-x64", "e2866a8f53c45bb544d7b00aed1e5fddbbd7071bd331b02e66a6ce7c38c6918c"), "13.3.0-darwin_amd64": ("node-v13.3.0-darwin-x64.tar.gz", "node-v13.3.0-darwin-x64", "187ea9028daa6d9abad9c1cbb4e12ba51427c3748da29eae616fa352c0f4cd49"), "13.3.0-linux_arm64": ("node-v13.3.0-linux-arm64.tar.xz", "node-v13.3.0-linux-arm64", "fb201a908bea36be828eee36a7cd898c67ad4ae6846982f393466e2b8b826c16"), "13.3.0-linux_amd64": ("node-v13.3.0-linux-x64.tar.xz", "node-v13.3.0-linux-x64", "b208393ae411bd55188e903171901765aaa8381c08155e4a7b34174737a1bc65"), "13.3.0-windows_amd64": ("node-v13.3.0-win-x64.zip", "node-v13.3.0-win-x64", "82e0f43aea81374a8028a7d3c9993245c4910ac95cd0f66ee5b29b940a6f3d93"), "13.4.0-darwin_amd64": ("node-v13.4.0-darwin-x64.tar.gz", "node-v13.4.0-darwin-x64", "4de08a89054416595228d6ff40fcf20c375d00556f2e95dfde8602cbb42c0b6e"), "13.4.0-linux_arm64": ("node-v13.4.0-linux-arm64.tar.xz", "node-v13.4.0-linux-arm64", "382d5fb2983ab55d495e42145e812b3859d2a311e426307fd373f47825d55fe9"), "13.4.0-linux_amd64": ("node-v13.4.0-linux-x64.tar.xz", "node-v13.4.0-linux-x64", "5cab49240c521efb80efd0a0bb3ba1071e5498c55ecbebd723d78648c91b1cc8"), "13.4.0-windows_amd64": ("node-v13.4.0-win-x64.zip", "node-v13.4.0-win-x64", "56de9ed20332cdf22bb9b048c3fb3977662ef2de9d2e8ac2d2a27d28e9be276f"), "13.5.0-darwin_amd64": ("node-v13.5.0-darwin-x64.tar.gz", "node-v13.5.0-darwin-x64", "3322c601dc032677e5b5f87f393d4b1d70073bcab24fe74378eff8eb49364001"), "13.5.0-linux_arm64": ("node-v13.5.0-linux-arm64.tar.xz", "node-v13.5.0-linux-arm64", "fe52f4e3a60a372138102da741e5b5d34310a74b3fc6f2000e4c254e3f0c4f51"), "13.5.0-linux_amd64": ("node-v13.5.0-linux-x64.tar.xz", "node-v13.5.0-linux-x64", "4d2b2cea13388658e95d8b2dc7ff918718155473ef6ef38928d92eb8cbbe210a"), "13.5.0-windows_amd64": ("node-v13.5.0-win-x64.zip", "node-v13.5.0-win-x64", "e286a84f2861b9f3c0290a9afbbecd09f303a39b2573af001ef8a4c1413eee7c"), "13.6.0-darwin_amd64": ("node-v13.6.0-darwin-x64.tar.gz", "node-v13.6.0-darwin-x64", "da13adb864777b322dda7af20410a9b0c63aa69de4b5574008d1e6910768bf69"), "13.6.0-linux_arm64": ("node-v13.6.0-linux-arm64.tar.xz", "node-v13.6.0-linux-arm64", "1f34ed8668207e03cb832763319a82b4c753839a3655207adc5bbe52f65e154a"), "13.6.0-linux_amd64": ("node-v13.6.0-linux-x64.tar.xz", "node-v13.6.0-linux-x64", "00f01315a867da16d1638f7a02966c608e344ac6c5b7d04d1fdae3138fa9d798"), "13.6.0-windows_amd64": ("node-v13.6.0-win-x64.zip", "node-v13.6.0-win-x64", "7fe37b34a4673a071bea52fcaf913ec422cf6fd79fd025bfb22de42ccc77f386"), "13.7.0-darwin_amd64": ("node-v13.7.0-darwin-x64.tar.gz", "node-v13.7.0-darwin-x64", "866ea9bdbd7b734c593af96b946397d9c7cb9c291aa8ea52a6a2af271b972169"), "13.7.0-linux_arm64": ("node-v13.7.0-linux-arm64.tar.xz", "node-v13.7.0-linux-arm64", "2823b199c7c4e6c547caf95139e28341444a5ffc52481a5ba704067291771579"), "13.7.0-linux_amd64": ("node-v13.7.0-linux-x64.tar.xz", "node-v13.7.0-linux-x64", "02578025b82de24f4cfb3ffeb3824990431d739d09220f2db9ef9f454f475470"), "13.7.0-windows_amd64": ("node-v13.7.0-win-x64.zip", "node-v13.7.0-win-x64", "26b41de81ead8f51de2964d7c7526533f46387ff436b61596e09d678bcd7503f"), "13.8.0-darwin_amd64": ("node-v13.8.0-darwin-x64.tar.gz", "node-v13.8.0-darwin-x64", "ae480e2b124cb55667763848b8ec0fde1bc35d5e0b76debe881034689a68eaea"), "13.8.0-linux_arm64": ("node-v13.8.0-linux-arm64.tar.xz", "node-v13.8.0-linux-arm64", "f1d4167a6911e42d836a5459c992cdaf35a03ab0700ea80831d7df5d706d1baf"), "13.8.0-linux_amd64": ("node-v13.8.0-linux-x64.tar.xz", "node-v13.8.0-linux-x64", "47a8cb675358f2ff534ad3d6709f14de0433f76d3af92cf389b8dcc78a1236ad"), "13.8.0-windows_amd64": ("node-v13.8.0-win-x64.zip", "node-v13.8.0-win-x64", "f198f3e4b120fc84b61d12e7222530c5bb9c6f864735bb41a8db1cf1b94a64c3"), "13.9.0-darwin_amd64": ("node-v13.9.0-darwin-x64.tar.gz", "node-v13.9.0-darwin-x64", "b2a5a539b9b2d1733bda301913c99d220968de801bf313b762fa932820ea797b"), "13.9.0-linux_arm64": ("node-v13.9.0-linux-arm64.tar.xz", "node-v13.9.0-linux-arm64", "c668afc06e4094b68ae758b823fc3244b34f0468fc0c2feee45278788989b8a1"), "13.9.0-linux_amd64": ("node-v13.9.0-linux-x64.tar.xz", "node-v13.9.0-linux-x64", "f1e093303468032a1ecb0e290e19b43bf7771d4efbf589560df0060149614272"), "13.9.0-windows_amd64": ("node-v13.9.0-win-x64.zip", "node-v13.9.0-win-x64", "ec0a55bb703906494e738cd3d09e3274b34f0a3fbe207b9e67502092ed017500"), "13.10.0-darwin_amd64": ("node-v13.10.0-darwin-x64.tar.gz", "node-v13.10.0-darwin-x64", "67269fb9061402e446bb61776be2e5d0ec330b5274326df77979698d05f503da"), "13.10.0-linux_arm64": ("node-v13.10.0-linux-arm64.tar.xz", "node-v13.10.0-linux-arm64", "adb145535d2e03fe508fa7a34897a130ba903d6f718a21cd29d1760e298f715b"), "13.10.0-linux_amd64": ("node-v13.10.0-linux-x64.tar.xz", "node-v13.10.0-linux-x64", "62081af005257d3db7ebd5a64b43f1a8e4a57bafd229be3acd7ce2704607eaac"), "13.10.0-windows_amd64": ("node-v13.10.0-win-x64.zip", "node-v13.10.0-win-x64", "d428b6d3e127716191fa6df630d03a25d3186fda1ede04a9a8d5c07e526dbb9e"), "13.10.1-darwin_amd64": ("node-v13.10.1-darwin-x64.tar.gz", "node-v13.10.1-darwin-x64", "a6a66fdc79e70267fc191f10ee045793240974e1268fdea6c2d28afbc1d635e8"), "13.10.1-linux_arm64": ("node-v13.10.1-linux-arm64.tar.xz", "node-v13.10.1-linux-arm64", "f73effcef784251e53b5e3938b8316c36bd49628c3588de7976e8569e560c12c"), "13.10.1-linux_amd64": ("node-v13.10.1-linux-x64.tar.xz", "node-v13.10.1-linux-x64", "69d69165282d88f321e751f03ee5d3370db65e5ca4c587af24994b12f31d4827"), "13.10.1-windows_amd64": ("node-v13.10.1-win-x64.zip", "node-v13.10.1-win-x64", "f9d0aac273a44dbd52dd8cdb3d6c684b68b860d128af58d77a0c08f39f51f229"), "13.11.0-darwin_amd64": ("node-v13.11.0-darwin-x64.tar.gz", "node-v13.11.0-darwin-x64", "2d87989fb1e0d425667c5ca9893cb3ecfb30cd3344d543870246d65f8d9b892f"), "13.11.0-linux_arm64": ("node-v13.11.0-linux-arm64.tar.xz", "node-v13.11.0-linux-arm64", "63ce9871b9802a1f021c84f282c63e1890524a32dc97d3e7a7ab8d52b4bde19e"), "13.11.0-linux_amd64": ("node-v13.11.0-linux-x64.tar.xz", "node-v13.11.0-linux-x64", "c127cf38f9a56d97646eb1fedb93712f304950c7143705de7180a701becc0fbb"), "13.11.0-windows_amd64": ("node-v13.11.0-win-x64.zip", "node-v13.11.0-win-x64", "dc93aa5a82988f741dca6f1869c7b1aeda6f339293d13a968279a6dc9fcc8dd0"), "13.12.0-darwin_amd64": ("node-v13.12.0-darwin-x64.tar.gz", "node-v13.12.0-darwin-x64", "1fe3103610e8eb66ae71872ea1b4e868a638292a4e7ad0e41976a9fe417a09c7"), "13.12.0-linux_arm64": ("node-v13.12.0-linux-arm64.tar.xz", "node-v13.12.0-linux-arm64", "2e8c12e575fcceb2d6f46eb3c50c6bfa98e91540bddaf91ca1c0fe739619ca0b"), "13.12.0-linux_amd64": ("node-v13.12.0-linux-x64.tar.xz", "node-v13.12.0-linux-x64", "95eb1188872e243323cbc31fc80048be3fdfdda91505c62c80c599281de357ed"), "13.12.0-windows_amd64": ("node-v13.12.0-win-x64.zip", "node-v13.12.0-win-x64", "de8445794ecbcfe895f4775417d1e2cc023e2212b1f5d4ff5cc0ed6875f7c911"), "13.13.0-darwin_amd64": ("node-v13.13.0-darwin-x64.tar.gz", "node-v13.13.0-darwin-x64", "28ae2abedafb250a9bbe706650fd79d2b25273f6445adcc1d85c777359dc5390"), "13.13.0-linux_arm64": ("node-v13.13.0-linux-arm64.tar.xz", "node-v13.13.0-linux-arm64", "eded8da4633134cae0766a2f6f3c2237f8e728df77895c85607acaca13216226"), "13.13.0-linux_amd64": ("node-v13.13.0-linux-x64.tar.xz", "node-v13.13.0-linux-x64", "41d60cda7422f53156711626d670f9b5079075b1ecc6736aea99319fe36c20a6"), "13.13.0-windows_amd64": ("node-v13.13.0-win-x64.zip", "node-v13.13.0-win-x64", "79f2a39c1047666f2bbf2efe53c069a38b8f6ef18d569bf338463aea1914b89d"), "13.14.0-darwin_amd64": ("node-v13.14.0-darwin-x64.tar.gz", "node-v13.14.0-darwin-x64", "a56eb353fecd45f731d74fc77c58dde052320c1bc272de9b03151fbaf962feaf"), "13.14.0-linux_arm64": ("node-v13.14.0-linux-arm64.tar.xz", "node-v13.14.0-linux-arm64", "e4736df097846bbe8195a185cc67ada3410a1f8993949e516bbf62b62198d2a7"), "13.14.0-linux_amd64": ("node-v13.14.0-linux-x64.tar.xz", "node-v13.14.0-linux-x64", "9ab808ba3872d58e827ea60a6e43a352f59361bc8eb36fe0327a587086b466f9"), "13.14.0-windows_amd64": ("node-v13.14.0-win-x64.zip", "node-v13.14.0-win-x64", "8c6e77fac5e911a2e70b6ca34804b3b59b6a3c685ab4e3b17756397df86063fa"), "14.0.0-darwin_amd64": ("node-v14.0.0-darwin-x64.tar.gz", "node-v14.0.0-darwin-x64", "4e50cec7aeef91c6d00d08a3bab938358da182984aa549c2aeab9868e3342f55"), "14.0.0-linux_arm64": ("node-v14.0.0-linux-arm64.tar.xz", "node-v14.0.0-linux-arm64", "29c612fcdb40133171959b269878138bbfe7723d46681f70e2017ee30134e7ad"), "14.0.0-linux_amd64": ("node-v14.0.0-linux-x64.tar.xz", "node-v14.0.0-linux-x64", "a2aaaa621074e1b56bb751bda53ce726319fac617587443371c0a7742481e5b6"), "14.0.0-windows_amd64": ("node-v14.0.0-win-x64.zip", "node-v14.0.0-win-x64", "e8f73d4f2e9935df929360c09ae932ceb316784a7450b256024af5d01fe29b75"), "14.1.0-darwin_amd64": ("node-v14.1.0-darwin-x64.tar.gz", "node-v14.1.0-darwin-x64", "7f08bd365df4e7a5625ad393257f48e8cd79f77391ab87a64426b0c6448dd226"), "14.1.0-linux_arm64": ("node-v14.1.0-linux-arm64.tar.xz", "node-v14.1.0-linux-arm64", "9dd3a4867f679f40075e2a364d3b3566702139274da9fcd59a182198ff7c7b52"), "14.1.0-linux_amd64": ("node-v14.1.0-linux-x64.tar.xz", "node-v14.1.0-linux-x64", "959fab0c8ae0830f1ab987699cd2941cab97169991630a2e0c99db7c144f9e42"), "14.1.0-windows_amd64": ("node-v14.1.0-win-x64.zip", "node-v14.1.0-win-x64", "1d3890d0d2f996cce57bcb0206e49b67233623e3cdb50eee77b8acc8f006b955"), "14.2.0-darwin_amd64": ("node-v14.2.0-darwin-x64.tar.gz", "node-v14.2.0-darwin-x64", "2447241aefe71dea8ba1552549e4df2e894d1ac12203630db3af63d4ae35c016"), "14.2.0-linux_arm64": ("node-v14.2.0-linux-arm64.tar.xz", "node-v14.2.0-linux-arm64", "4587d2c52cd348094bd46ee4ee8cdfeb549462ead9b4aadc9cfc3c5fc3ba7215"), "14.2.0-linux_amd64": ("node-v14.2.0-linux-x64.tar.xz", "node-v14.2.0-linux-x64", "468cbd92271da8c0cacaa3fa432a73a332e398bade8ad7359a94aa8ab3cc3cca"), "14.2.0-windows_amd64": ("node-v14.2.0-win-x64.zip", "node-v14.2.0-win-x64", "99085f45a894e257123d7c729113cc00ed1413df432dbdce5fe53867e7c53b11"), "14.3.0-darwin_amd64": ("node-v14.3.0-darwin-x64.tar.gz", "node-v14.3.0-darwin-x64", "fd6a44303646f28b7e7577de687c2681cb565bef534e84deef44202e7919d7f3"), "14.3.0-linux_arm64": ("node-v14.3.0-linux-arm64.tar.xz", "node-v14.3.0-linux-arm64", "53bb110ea135ae3c819f535373ce1b779e86c7aa49a9b93fc5f26969a72365d2"), "14.3.0-linux_amd64": ("node-v14.3.0-linux-x64.tar.xz", "node-v14.3.0-linux-x64", "17236db7b9447080b58c2e50937982c386fe8a60e644b8d7f23e546068a8acba"), "14.3.0-windows_amd64": ("node-v14.3.0-win-x64.zip", "node-v14.3.0-win-x64", "07bebc231dd8d773ab41cdcfbcb8b48e2336fbee20deb961b4300b9ba86afa04"), "14.4.0-darwin_amd64": ("node-v14.4.0-darwin-x64.tar.gz", "node-v14.4.0-darwin-x64", "d95eaa6950d67895b5cdd0e2f913d2c44034178234f0cb7436c3397b54f64023"), "14.4.0-linux_arm64": ("node-v14.4.0-linux-arm64.tar.xz", "node-v14.4.0-linux-arm64", "9c9f84589b7bc6a05ac12a137e5097a5adb20b5c63ae9e4e912942da2c06d99d"), "14.4.0-linux_amd64": ("node-v14.4.0-linux-x64.tar.xz", "node-v14.4.0-linux-x64", "d65a9a8a547bfe67c6c08dae733a3e5a846700d5377c5f150164cc6bb5f6a039"), "14.4.0-windows_amd64": ("node-v14.4.0-win-x64.zip", "node-v14.4.0-win-x64", "a4bac45af8252f6b677a79ed19be4913f4939c4509fb08b6f14f972597550bbe"), "14.5.0-darwin_amd64": ("node-v14.5.0-darwin-x64.tar.gz", "node-v14.5.0-darwin-x64", "47dfd88abcd4d6d6f7b7516c95645f9760ba9c93d04b51a92895584c945b2953"), "14.5.0-linux_arm64": ("node-v14.5.0-linux-arm64.tar.xz", "node-v14.5.0-linux-arm64", "c5ab67fbc73ea8858b4a989b6e92d6630decfc47c4703be7bcda3c6e39adff0b"), "14.5.0-linux_amd64": ("node-v14.5.0-linux-x64.tar.xz", "node-v14.5.0-linux-x64", "8b0235c318de87ecf8eec9a39e5c5df80757dbec571addda7123276dfcb34d5b"), "14.5.0-windows_amd64": ("node-v14.5.0-win-x64.zip", "node-v14.5.0-win-x64", "ab5728c85ece98210036fc9c38984fa2410a882dd99075b3d5bece58e4cc6ea2"), "14.6.0-darwin_amd64": ("node-v14.6.0-darwin-x64.tar.gz", "node-v14.6.0-darwin-x64", "7907a18605b900ce977ff4c7e67f7507f937f85738659865d31779c3b2990756"), "14.6.0-linux_arm64": ("node-v14.6.0-linux-arm64.tar.xz", "node-v14.6.0-linux-arm64", "853f2c99f0e5fa65e6f222821e29c9d1a49f2d358a97c1de080ddf5c74e4ec70"), "14.6.0-linux_amd64": ("node-v14.6.0-linux-x64.tar.xz", "node-v14.6.0-linux-x64", "b8a39b2dac8e200e96586356c5525d20b0b43dba8bf9f7eb4e8c2d5366be2bb2"), "14.6.0-windows_amd64": ("node-v14.6.0-win-x64.zip", "node-v14.6.0-win-x64", "57ea75a7ec70cc8158e6f9774f9728fb9e3d08212b1af3e206db2de46ca304ca"), "14.7.0-darwin_amd64": ("node-v14.7.0-darwin-x64.tar.gz", "node-v14.7.0-darwin-x64", "47c94ec84706fd6851db27af54abdab569941fcbfcdc28e386d8fa7d49c6a619"), "14.7.0-linux_arm64": ("node-v14.7.0-linux-arm64.tar.xz", "node-v14.7.0-linux-arm64", "12540328aeb5baa524a4e9c3b493b5eceb54cfa630f8bce64c19e674871e2f4b"), "14.7.0-linux_amd64": ("node-v14.7.0-linux-x64.tar.xz", "node-v14.7.0-linux-x64", "48929b03deb2915b64ba67355d2deffeed3c8df798b0c5f2b821ffc7a8116a23"), "14.7.0-windows_amd64": ("node-v14.7.0-win-x64.zip", "node-v14.7.0-win-x64", "a899693c9a31089a1eda14b1e613cf8cd60361e6e574b351551d832cf864c8f8"), "14.8.0-darwin_amd64": ("node-v14.8.0-darwin-x64.tar.gz", "node-v14.8.0-darwin-x64", "b6db32f2ff37475ae68502c76fc777a604cbc589bf57158fb4eed4db9ac5f62d"), "14.8.0-linux_arm64": ("node-v14.8.0-linux-arm64.tar.xz", "node-v14.8.0-linux-arm64", "0c66a6468c36552c00d45cff0eaa924240f3d2e625be0306f33f8b0d81af4224"), "14.8.0-linux_amd64": ("node-v14.8.0-linux-x64.tar.xz", "node-v14.8.0-linux-x64", "c7761fe5d56d045d1540b1f0bc8a20d7edf03e6fd695ee5fbffc1dd9416ccc75"), "14.8.0-windows_amd64": ("node-v14.8.0-win-x64.zip", "node-v14.8.0-win-x64", "848ca582bdf8b7fdc21a38d9f3887a45bdf6381b04549fc0f918852889157c9a")} +
      node_urls + custom list of URLs to use to download NodeJS +Each entry is a template for downloading a node distribution. +The {version} parameter is substituted with the node_version attribute, +and {filename} with the matching entry from the node_repositories attribute. + List of stringsoptional + ["https://mirror.bazel.build/nodejs.org/dist/v{version}/{filename}", "https://nodejs.org/dist/v{version}/{filename}"] +
      node_version + the specific version of NodeJS to install or, if vendored_node is specified, the vendored version of node + Stringoptional + "12.13.0" +
      package_json + (ADVANCED, not recommended) + a list of labels, which indicate the package.json files that will be installed + when you manually run the package manager, e.g. with + bazel run @nodejs//:yarn_node_repositories or bazel run @nodejs//:npm_node_repositories install. + If you use bazel-managed dependencies, you should omit this attribute. + List of labelsoptional + [] +
      vendored_node + the local path to a pre-installed NodeJS runtime. -#### `configuration_env_vars` -(*List of strings*): Pass these configuration environment variables to the resulting binary. - Chooses a subset of the configuration environment variables (taken from `ctx.var`), which also - includes anything specified via the --define flag. - Note, this can lead to different outputs produced by this rule. +If set then also set node_version to the version that of node that is vendored. +Bazel will automatically turn on features such as --preserve-symlinks-main if they +are supported by the node version being used. + Labeloptional + None +
      vendored_yarn + the local path to a pre-installed yarn tool + Labeloptional + None +
      yarn_repositories + Custom list of yarn repositories to use. + +Dictionary mapping Yarn versions to their corresponding (filename, strip_prefix, sha256) tuples. + Dictionary: String -> List of stringsoptional + {"1.3.2": ("yarn-v1.3.2.tar.gz", "yarn-v1.3.2", "6cfe82e530ef0837212f13e45c1565ba53f5199eec2527b85ecbcd88bf26821d"), "1.5.1": ("yarn-v1.5.1.tar.gz", "yarn-v1.5.1", "cd31657232cf48d57fdbff55f38bfa058d2fb4950450bd34af72dac796af4de1"), "1.6.0": ("yarn-v1.6.0.tar.gz", "yarn-v1.6.0", "a57b2fdb2bfeeb083d45a883bc29af94d5e83a21c25f3fc001c295938e988509"), "1.9.2": ("yarn-v1.9.2.tar.gz", "yarn-v1.9.2", "3ad69cc7f68159a562c676e21998eb21b44138cae7e8fe0749a7d620cf940204"), "1.9.4": ("yarn-v1.9.4.tar.gz", "yarn-v1.9.4", "7667eb715077b4bad8e2a832e7084e0e6f1ba54d7280dc573c8f7031a7fb093e"), "1.12.1": ("yarn-v1.12.1.tar.gz", "yarn-v1.12.1", "09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d"), "1.12.3": ("yarn-v1.12.3.tar.gz", "yarn-v1.12.3", "02cd4b589ec22c4bdbd2bc5ebbfd99c5e99b07242ad68a539cb37896b93a24f2"), "1.13.0": ("yarn-v1.13.0.tar.gz", "yarn-v1.13.0", "125d40ebf621ebb08e3f66a618bd2cc5cd77fa317a312900a1ab4360ed38bf14"), "1.19.1": ("yarn-v1.19.1.tar.gz", "yarn-v1.19.1", "34293da6266f2aae9690d59c2d764056053ff7eebc56b80b8df05010c3da9343"), "1.22.4": ("yarn-v1.22.4.tar.gz", "yarn-v1.22.4", "bc5316aa110b2f564a71a3d6e235be55b98714660870c5b6b2d2d3f12587fb58")} +
      yarn_urls + custom list of URLs to use to download Yarn + +Each entry is a template, similar to the node_urls attribute, using yarn_version and yarn_repositories in the substitutions. + List of stringsoptional + ["https://mirror.bazel.build/github.com/yarnpkg/yarn/releases/download/v{version}/{filename}", "https://github.com/yarnpkg/yarn/releases/download/v{version}/{filename}"] +
      yarn_version + the specific version of Yarn to install + Stringoptional + "1.19.1" +
      -Defaults to `[]` -#### `data` -(*[labels]*): Runtime dependencies which may be loaded during execution. -Defaults to `[]` +## nodejs_binary -#### `default_env_vars` -(*List of strings*): Default environment variables that are added to `configuration_env_vars`. +Runs some JavaScript code in NodeJS. -This is separate from the default of `configuration_env_vars` so that a user can set `configuration_env_vars` +
      +nodejs_binary(name, configuration_env_vars, data, default_env_vars, entry_point, node_modules,
      +              templated_args)
      +
      + +**ATTRIBUTES** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this target. + Namerequired + +
      configuration_env_vars + Pass these configuration environment variables to the resulting binary. + Chooses a subset of the configuration environment variables (taken from ctx.var), which also + includes anything specified via the --define flag. + Note, this can lead to different outputs produced by this rule. + List of stringsoptional + [] +
      data + Runtime dependencies which may be loaded during execution. + List of labelsoptional + [] +
      default_env_vars + Default environment variables that are added to configuration_env_vars. + +This is separate from the default of configuration_env_vars so that a user can set configuration_env_vars without losing the defaults that should be set in most cases. The set of default environment variables is: -- `VERBOSE_LOGS`: use by some rules & tools to turn on debug output in their logs -- `NODE_DEBUG`: used by node.js itself to print more logs -- `RUNFILES_LIB_DEBUG`: print diagnostic message from Bazel runfiles.bash helper - -Defaults to `["VERBOSE_LOGS", "NODE_DEBUG", "RUNFILES_LIB_DEBUG"]` - -#### `entry_point` -(*[label], mandatory*): The script which should be executed first, usually containing a main function. +- VERBOSE_LOGS: use by some rules & tools to turn on debug output in their logs +- NODE_DEBUG: used by node.js itself to print more logs +- RUNFILES_LIB_DEBUG: print diagnostic message from Bazel runfiles.bash helper + List of stringsoptional + ["VERBOSE_LOGS", "NODE_DEBUG", "RUNFILES_LIB_DEBUG"] +
      entry_point + The script which should be executed first, usually containing a main function. If the entry JavaScript file belongs to the same package (as the BUILD file), you can simply reference it by its relative name to the package directory: -``` +{% highlight python %} nodejs_binary( name = "my_binary", ... entry_point = ":file.js", ) -``` +{% endhighlight %} You can specify the entry point as a typescript file so long as you also include the ts_library target in data: -``` +{% highlight python %} ts_library( name = "main", srcs = ["main.ts"], @@ -274,14 +404,14 @@ nodejs_binary( data = [":main"] entry_point = ":main.ts", ) -``` +{% endhighlight %} -The rule will use the corresponding `.js` output of the ts_library rule as the entry point. +The rule will use the corresponding .js output of the ts_library rule as the entry point. If the entry point target is a rule, it should produce a single JavaScript entry file that will be passed to the nodejs_binary rule. For example: -``` +{% highlight python %} filegroup( name = "entry_file", srcs = ["main.js"], @@ -291,41 +421,49 @@ nodejs_binary( name = "my_binary", entry_point = ":entry_file", ) -``` +{% endhighlight %} The entry_point can also be a label in another workspace: -``` +{% highlight python %} nodejs_binary( name = "history-server", entry_point = "@npm//:node_modules/history-server/modules/cli.js", data = ["@npm//history-server"], ) -``` - -#### `node_modules` -(*[label]*): The npm packages which should be available to `require()` during +{% endhighlight %} + Labelrequired + +
      node_modules + The npm packages which should be available to require() during execution. This attribute is DEPRECATED. As of version 0.13.0 the recommended approach to npm dependencies is to use fine grained npm dependencies which are setup -with the `yarn_install` or `npm_install` rules. For example, in targets -that used a `//:node_modules` filegroup, +with the yarn_install or npm_install rules. For example, in targets +that used a //:node_modules filegroup, -``` +{% highlight python %} nodejs_binary( name = "my_binary", ... node_modules = "//:node_modules", ) -``` +{% endhighlight %} -which specifies all files within the `//:node_modules` filegroup -to be inputs to the `my_binary`. Using fine grained npm dependencies, -`my_binary` is defined with only the npm dependencies that are +which specifies all files within the //:node_modules filegroup +to be inputs to the my_binary. Using fine grained npm dependencies, +my_binary is defined with only the npm dependencies that are needed: -``` +{% highlight python %} nodejs_binary( name = "my_binary", ... @@ -335,15 +473,15 @@ nodejs_binary( ... ], ) -``` +{% endhighlight %} -In this case, only the `foo` and `bar` npm packages and their -transitive deps are includes as inputs to the `my_binary` target +In this case, only the foo and bar npm packages and their +transitive deps are includes as inputs to the my_binary target which reduces the time required to setup the runfiles for this target (see https://github.com/bazelbuild/bazel/issues/5153). The @npm external repository and the fine grained npm package -targets are setup using the `yarn_install` or `npm_install` rule +targets are setup using the yarn_install or npm_install rule in your WORKSPACE file: yarn_install( @@ -352,10 +490,10 @@ yarn_install( yarn_lock = "//:yarn.lock", ) -For other rules such as `jasmine_node_test`, fine grained -npm dependencies are specified in the `deps` attribute: +For other rules such as jasmine_node_test, fine grained +npm dependencies are specified in the deps attribute: -``` +{% highlight python %} jasmine_node_test( name = "my_test", ... @@ -366,77 +504,83 @@ jasmine_node_test( ... ], ) -``` - -Defaults to `//:node_modules_none` - -#### `templated_args` -(*List of strings*): Arguments which are passed to every execution of the program. - To pass a node startup option, prepend it with `--node_options=`, e.g. - `--node_options=--preserve-symlinks`. +{% endhighlight %} + Labeloptional + //:node_modules_none +
      templated_args + Arguments which are passed to every execution of the program. + To pass a node startup option, prepend it with --node_options=, e.g. + --node_options=--preserve-symlinks. Subject to 'Make variable' substitution. See https://docs.bazel.build/versions/master/be/make-variables.html. 1. Subject to predefined source/output path variables substitutions. -The predefined variables `execpath`, `execpaths`, `rootpath`, `rootpaths`, `location`, and `locations` take -label parameters (e.g. `$(execpath //foo:bar)`) and substitute the file paths denoted by that label. +The predefined variables execpath, execpaths, rootpath, rootpaths, location, and locations take +label parameters (e.g. $(execpath //foo:bar)) and substitute the file paths denoted by that label. See https://docs.bazel.build/versions/master/be/make-variables.html#predefined_label_variables for more info. NB: This $(location) substition returns the manifest file path which differs from the *_binary & *_test args and genrule bazel substitions. This will be fixed in a future major release. -See docs string of `expand_location_into_runfiles` macro in `internal/common/expand_into_runfiles.bzl` +See docs string of expand_location_into_runfiles macro in internal/common/expand_into_runfiles.bzl for more info. -The recommended approach is to now use `$(rootpath)` where you previously used $(location). +The recommended approach is to now use $(rootpath) where you previously used $(location). -To get from a `$(rootpath)` to the absolute path that `$$(rlocation $(location))` returned you can either use -`$$(rlocation $(rootpath))` if you are in the `templated_args` of a `nodejs_binary` or `nodejs_test`: +To get from a $(rootpath) to the absolute path that $$(rlocation $(location)) returned you can either use +$$(rlocation $(rootpath)) if you are in the templated_args of a nodejs_binary or nodejs_test: BUILD.bazel: -``` +{% highlight python %} nodejs_test( name = "my_test", data = [":bootstrap.js"], templated_args = ["--node_options=--require=$$(rlocation $(rootpath :bootstrap.js))"], ) -``` +{% endhighlight %} or if you're in the context of a .js script you can pass the $(rootpath) as an argument to the script and use the javascript runfiles helper to resolve to the absolute path: BUILD.bazel: -``` +{% highlight python %} nodejs_test( name = "my_test", data = [":some_file"], entry_point = ":my_test.js", templated_args = ["$(rootpath :some_file)"], ) -``` +{% endhighlight %} my_test.js -``` +{% highlight python %} const runfiles = require(process.env['BAZEL_NODE_RUNFILES_HELPER']); const args = process.argv.slice(2); const some_file = runfiles.resolveWorkspaceRelative(args[0]); -``` - -NB: Bazel will error if it sees the single dollar sign $(rlocation path) in `templated_args` as it will try to -expand `$(rlocation)` since we now expand predefined & custom "make" variables such as `$(COMPILATION_MODE)`, -`$(BINDIR)` & `$(TARGET_CPU)` using `ctx.expand_make_variables`. See https://docs.bazel.build/versions/master/be/make-variables.html. - -To prevent expansion of `$(rlocation)` write it as `$$(rlocation)`. Bazel understands `$$` to be -the string literal `$` and the expansion results in `$(rlocation)` being passed as an arg instead -of being expanded. `$(rlocation)` is then evaluated by the bash node launcher script and it calls -the `rlocation` function in the runfiles.bash helper. For example, the templated arg -`$$(rlocation $(rootpath //:some_file))` is expanded by Bazel to `$(rlocation ./some_file)` which -is then converted in bash to the absolute path of `//:some_file` in runfiles by the runfiles.bash helper +{% endhighlight %} + +NB: Bazel will error if it sees the single dollar sign $(rlocation path) in templated_args as it will try to +expand $(rlocation) since we now expand predefined & custom "make" variables such as $(COMPILATION_MODE), +$(BINDIR) & $(TARGET_CPU) using ctx.expand_make_variables. See https://docs.bazel.build/versions/master/be/make-variables.html. + +To prevent expansion of $(rlocation) write it as $$(rlocation). Bazel understands $$ to be +the string literal $ and the expansion results in $(rlocation) being passed as an arg instead +of being expanded. $(rlocation) is then evaluated by the bash node launcher script and it calls +the rlocation function in the runfiles.bash helper. For example, the templated arg +$$(rlocation $(rootpath //:some_file)) is expanded by Bazel to $(rlocation ./some_file) which +is then converted in bash to the absolute path of //:some_file in runfiles by the runfiles.bash helper before being passed as an argument to the program. -NB: nodejs_binary and nodejs_test will preserve the legacy behavior of `$(rlocation)` so users don't -need to update to `$$(rlocation)`. This may be changed in the future. +NB: nodejs_binary and nodejs_test will preserve the legacy behavior of $(rlocation) so users don't +need to update to $$(rlocation). This may be changed in the future. 2. Subject to predefined variables & custom variable substitutions. @@ -447,100 +591,145 @@ Custom variables are also expanded including variables set through the Bazel CLI See https://docs.bazel.build/versions/master/be/make-variables.html#custom_variables. Predefined genrule variables are not supported in this context. + List of stringsoptional + [] +
      -Defaults to `[]` ## nodejs_test -Identical to `nodejs_binary`, except this can be used with `bazel test` as well. +Identical to nodejs_binary, except this can be used with bazel test as well. When the binary returns zero exit code, the test passes; otherwise it fails. -`nodejs_test` is a convenient way to write a novel kind of test based on running -your own test runner. For example, the `ts-api-guardian` library has a way to -assert the public API of a TypeScript program, and uses `nodejs_test` here: +nodejs_test is a convenient way to write a novel kind of test based on running +your own test runner. For example, the ts-api-guardian library has a way to +assert the public API of a TypeScript program, and uses nodejs_test here: https://github.com/angular/angular/blob/master/tools/ts-api-guardian/index.bzl If you just want to run a standard test using a test runner from npm, use the generated -*_test target created by npm_install/yarn_install, such as `mocha_test`. -Some test runners like Karma and Jasmine have custom rules with added features, e.g. `jasmine_node_test`. +*_test target created by npm_install/yarn_install, such as mocha_test. +Some test runners like Karma and Jasmine have custom rules with added features, e.g. jasmine_node_test. Bazel always runs tests with a working directory set to your workspace root. -If your test needs to run in a different directory, you can write a `process.chdir` helper script -and invoke it before the test with a `--require` argument, like -`templated_args = ["--node_options=--require=./$(rootpath chdir.js)"]`. +If your test needs to run in a different directory, you can write a process.chdir helper script +and invoke it before the test with a --require argument, like +templated_args = ["--node_options=--require=./$(rootpath chdir.js)"]. See rules_nodejs/internal/node/test/chdir for an example. To debug a Node.js test, we recommend saving a group of flags together in a "config". -Put this in your `tools/bazel.rc` so it's shared with your team: -``` +Put this in your tools/bazel.rc so it's shared with your team: +{% highlight python %} # Enable debugging tests with --config=debug test:debug --test_arg=--node_options=--inspect-brk --test_output=streamed --test_strategy=exclusive --test_timeout=9999 --nocache_test_results -``` +{% endhighlight %} -Now you can add `--config=debug` to any `bazel test` command line. +Now you can add --config=debug to any bazel test command line. The runtime will pause before executing the program, allowing you to connect a remote debugger. - -### Usage - -``` -nodejs_test(name, configuration_env_vars, data, default_env_vars, entry_point, expected_exit_code, node_modules, templated_args) -``` - - - -#### `name` -(*[name], mandatory*): A unique name for this target. - -#### `configuration_env_vars` -(*List of strings*): Pass these configuration environment variables to the resulting binary. - Chooses a subset of the configuration environment variables (taken from `ctx.var`), which also +
      +nodejs_test(name, configuration_env_vars, data, default_env_vars, entry_point, expected_exit_code,
      +            node_modules, templated_args)
      +
      + +**ATTRIBUTES** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this target. + Namerequired + +
      configuration_env_vars + Pass these configuration environment variables to the resulting binary. + Chooses a subset of the configuration environment variables (taken from ctx.var), which also includes anything specified via the --define flag. Note, this can lead to different outputs produced by this rule. - -Defaults to `[]` - -#### `data` -(*[labels]*): Runtime dependencies which may be loaded during execution. - -Defaults to `[]` - -#### `default_env_vars` -(*List of strings*): Default environment variables that are added to `configuration_env_vars`. - -This is separate from the default of `configuration_env_vars` so that a user can set `configuration_env_vars` + List of stringsoptional + [] +
      data + Runtime dependencies which may be loaded during execution. + List of labelsoptional + [] +
      default_env_vars + Default environment variables that are added to configuration_env_vars. + +This is separate from the default of configuration_env_vars so that a user can set configuration_env_vars without losing the defaults that should be set in most cases. The set of default environment variables is: -- `VERBOSE_LOGS`: use by some rules & tools to turn on debug output in their logs -- `NODE_DEBUG`: used by node.js itself to print more logs -- `RUNFILES_LIB_DEBUG`: print diagnostic message from Bazel runfiles.bash helper - -Defaults to `["VERBOSE_LOGS", "NODE_DEBUG", "RUNFILES_LIB_DEBUG"]` - -#### `entry_point` -(*[label], mandatory*): The script which should be executed first, usually containing a main function. +- VERBOSE_LOGS: use by some rules & tools to turn on debug output in their logs +- NODE_DEBUG: used by node.js itself to print more logs +- RUNFILES_LIB_DEBUG: print diagnostic message from Bazel runfiles.bash helper + List of stringsoptional + ["VERBOSE_LOGS", "NODE_DEBUG", "RUNFILES_LIB_DEBUG"] +
      entry_point + The script which should be executed first, usually containing a main function. If the entry JavaScript file belongs to the same package (as the BUILD file), you can simply reference it by its relative name to the package directory: -``` +{% highlight python %} nodejs_binary( name = "my_binary", ... entry_point = ":file.js", ) -``` +{% endhighlight %} You can specify the entry point as a typescript file so long as you also include the ts_library target in data: -``` +{% highlight python %} ts_library( name = "main", srcs = ["main.ts"], @@ -551,14 +740,14 @@ nodejs_binary( data = [":main"] entry_point = ":main.ts", ) -``` +{% endhighlight %} -The rule will use the corresponding `.js` output of the ts_library rule as the entry point. +The rule will use the corresponding .js output of the ts_library rule as the entry point. If the entry point target is a rule, it should produce a single JavaScript entry file that will be passed to the nodejs_binary rule. For example: -``` +{% highlight python %} filegroup( name = "entry_file", srcs = ["main.js"], @@ -568,46 +757,60 @@ nodejs_binary( name = "my_binary", entry_point = ":entry_file", ) -``` +{% endhighlight %} The entry_point can also be a label in another workspace: -``` +{% highlight python %} nodejs_binary( name = "history-server", entry_point = "@npm//:node_modules/history-server/modules/cli.js", data = ["@npm//history-server"], ) -``` - -#### `expected_exit_code` -(*Integer*): The expected exit code for the test. Defaults to 0. - -Defaults to `0` - -#### `node_modules` -(*[label]*): The npm packages which should be available to `require()` during +{% endhighlight %} + Labelrequired + +
      expected_exit_code + The expected exit code for the test. Defaults to 0. + Integeroptional + 0 +
      node_modules + The npm packages which should be available to require() during execution. This attribute is DEPRECATED. As of version 0.13.0 the recommended approach to npm dependencies is to use fine grained npm dependencies which are setup -with the `yarn_install` or `npm_install` rules. For example, in targets -that used a `//:node_modules` filegroup, +with the yarn_install or npm_install rules. For example, in targets +that used a //:node_modules filegroup, -``` +{% highlight python %} nodejs_binary( name = "my_binary", ... node_modules = "//:node_modules", ) -``` +{% endhighlight %} -which specifies all files within the `//:node_modules` filegroup -to be inputs to the `my_binary`. Using fine grained npm dependencies, -`my_binary` is defined with only the npm dependencies that are +which specifies all files within the //:node_modules filegroup +to be inputs to the my_binary. Using fine grained npm dependencies, +my_binary is defined with only the npm dependencies that are needed: -``` +{% highlight python %} nodejs_binary( name = "my_binary", ... @@ -617,15 +820,15 @@ nodejs_binary( ... ], ) -``` +{% endhighlight %} -In this case, only the `foo` and `bar` npm packages and their -transitive deps are includes as inputs to the `my_binary` target +In this case, only the foo and bar npm packages and their +transitive deps are includes as inputs to the my_binary target which reduces the time required to setup the runfiles for this target (see https://github.com/bazelbuild/bazel/issues/5153). The @npm external repository and the fine grained npm package -targets are setup using the `yarn_install` or `npm_install` rule +targets are setup using the yarn_install or npm_install rule in your WORKSPACE file: yarn_install( @@ -634,10 +837,10 @@ yarn_install( yarn_lock = "//:yarn.lock", ) -For other rules such as `jasmine_node_test`, fine grained -npm dependencies are specified in the `deps` attribute: +For other rules such as jasmine_node_test, fine grained +npm dependencies are specified in the deps attribute: -``` +{% highlight python %} jasmine_node_test( name = "my_test", ... @@ -648,77 +851,83 @@ jasmine_node_test( ... ], ) -``` - -Defaults to `//:node_modules_none` - -#### `templated_args` -(*List of strings*): Arguments which are passed to every execution of the program. - To pass a node startup option, prepend it with `--node_options=`, e.g. - `--node_options=--preserve-symlinks`. +{% endhighlight %} + Labeloptional + //:node_modules_none +
      templated_args + Arguments which are passed to every execution of the program. + To pass a node startup option, prepend it with --node_options=, e.g. + --node_options=--preserve-symlinks. Subject to 'Make variable' substitution. See https://docs.bazel.build/versions/master/be/make-variables.html. 1. Subject to predefined source/output path variables substitutions. -The predefined variables `execpath`, `execpaths`, `rootpath`, `rootpaths`, `location`, and `locations` take -label parameters (e.g. `$(execpath //foo:bar)`) and substitute the file paths denoted by that label. +The predefined variables execpath, execpaths, rootpath, rootpaths, location, and locations take +label parameters (e.g. $(execpath //foo:bar)) and substitute the file paths denoted by that label. See https://docs.bazel.build/versions/master/be/make-variables.html#predefined_label_variables for more info. NB: This $(location) substition returns the manifest file path which differs from the *_binary & *_test args and genrule bazel substitions. This will be fixed in a future major release. -See docs string of `expand_location_into_runfiles` macro in `internal/common/expand_into_runfiles.bzl` +See docs string of expand_location_into_runfiles macro in internal/common/expand_into_runfiles.bzl for more info. -The recommended approach is to now use `$(rootpath)` where you previously used $(location). +The recommended approach is to now use $(rootpath) where you previously used $(location). -To get from a `$(rootpath)` to the absolute path that `$$(rlocation $(location))` returned you can either use -`$$(rlocation $(rootpath))` if you are in the `templated_args` of a `nodejs_binary` or `nodejs_test`: +To get from a $(rootpath) to the absolute path that $$(rlocation $(location)) returned you can either use +$$(rlocation $(rootpath)) if you are in the templated_args of a nodejs_binary or nodejs_test: BUILD.bazel: -``` +{% highlight python %} nodejs_test( name = "my_test", data = [":bootstrap.js"], templated_args = ["--node_options=--require=$$(rlocation $(rootpath :bootstrap.js))"], ) -``` +{% endhighlight %} or if you're in the context of a .js script you can pass the $(rootpath) as an argument to the script and use the javascript runfiles helper to resolve to the absolute path: BUILD.bazel: -``` +{% highlight python %} nodejs_test( name = "my_test", data = [":some_file"], entry_point = ":my_test.js", templated_args = ["$(rootpath :some_file)"], ) -``` +{% endhighlight %} my_test.js -``` +{% highlight python %} const runfiles = require(process.env['BAZEL_NODE_RUNFILES_HELPER']); const args = process.argv.slice(2); const some_file = runfiles.resolveWorkspaceRelative(args[0]); -``` - -NB: Bazel will error if it sees the single dollar sign $(rlocation path) in `templated_args` as it will try to -expand `$(rlocation)` since we now expand predefined & custom "make" variables such as `$(COMPILATION_MODE)`, -`$(BINDIR)` & `$(TARGET_CPU)` using `ctx.expand_make_variables`. See https://docs.bazel.build/versions/master/be/make-variables.html. - -To prevent expansion of `$(rlocation)` write it as `$$(rlocation)`. Bazel understands `$$` to be -the string literal `$` and the expansion results in `$(rlocation)` being passed as an arg instead -of being expanded. `$(rlocation)` is then evaluated by the bash node launcher script and it calls -the `rlocation` function in the runfiles.bash helper. For example, the templated arg -`$$(rlocation $(rootpath //:some_file))` is expanded by Bazel to `$(rlocation ./some_file)` which -is then converted in bash to the absolute path of `//:some_file` in runfiles by the runfiles.bash helper +{% endhighlight %} + +NB: Bazel will error if it sees the single dollar sign $(rlocation path) in templated_args as it will try to +expand $(rlocation) since we now expand predefined & custom "make" variables such as $(COMPILATION_MODE), +$(BINDIR) & $(TARGET_CPU) using ctx.expand_make_variables. See https://docs.bazel.build/versions/master/be/make-variables.html. + +To prevent expansion of $(rlocation) write it as $$(rlocation). Bazel understands $$ to be +the string literal $ and the expansion results in $(rlocation) being passed as an arg instead +of being expanded. $(rlocation) is then evaluated by the bash node launcher script and it calls +the rlocation function in the runfiles.bash helper. For example, the templated arg +$$(rlocation $(rootpath //:some_file)) is expanded by Bazel to $(rlocation ./some_file) which +is then converted in bash to the absolute path of //:some_file in runfiles by the runfiles.bash helper before being passed as an argument to the program. -NB: nodejs_binary and nodejs_test will preserve the legacy behavior of `$(rlocation)` so users don't -need to update to `$$(rlocation)`. This may be changed in the future. +NB: nodejs_binary and nodejs_test will preserve the legacy behavior of $(rlocation) so users don't +need to update to $$(rlocation). This may be changed in the future. 2. Subject to predefined variables & custom variable substitutions. @@ -729,58 +938,103 @@ Custom variables are also expanded including variables set through the Bazel CLI See https://docs.bazel.build/versions/master/be/make-variables.html#custom_variables. Predefined genrule variables are not supported in this context. + List of stringsoptional + [] +
      -Defaults to `[]` ## npm_install Runs npm install during workspace setup. -This rule will set the environment variable `BAZEL_NPM_INSTALL` to '1' (unless it +This rule will set the environment variable BAZEL_NPM_INSTALL to '1' (unless it set to another value in the environment attribute). Scripts may use to this to -check if yarn is being run by the `npm_install` repository rule. - - -### Usage - -``` -npm_install(name, args, data, environment, included_files, manual_build_file_contents, package_json, package_lock_json, quiet, symlink_node_modules, timeout) -``` - - - -#### `name` -(*[name], mandatory*): A unique name for this repository. - -#### `args` -(*List of strings*): Arguments passed to npm install. +check if yarn is being run by the npm_install repository rule. + +
      +npm_install(name, args, data, environment, included_files, manual_build_file_contents, package_json,
      +            package_lock_json, quiet, symlink_node_modules, timeout)
      +
      + +**ATTRIBUTES** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this repository. + Namerequired + +
      args + Arguments passed to npm install. See npm CLI docs https://docs.npmjs.com/cli/install.html for complete list of supported arguments. - -Defaults to `[]` - -#### `data` -(*[labels]*): Data files required by this rule. + List of stringsoptional + [] +
      data + Data files required by this rule. If symlink_node_modules is True, this attribute is optional since the package manager will run in your workspace folder. It is recommended, however, that all files that the -package manager depends on, such as `.rc` files or files used in `postinstall`, are added +package manager depends on, such as .rc files or files used in postinstall, are added symlink_node_modules is True so that the repository rule is rerun when any of these files change. If symlink_node_modules is False, the package manager is run in the bazel external repository so all files that the package manager depends on must be listed. - -Defaults to `[]` - -#### `environment` -(*Dictionary: String -> String*): Environment variables to set before calling the package manager. - -Defaults to `{}` - -#### `included_files` -(*List of strings*): List of file extensions to be included in the npm package targets. + List of labelsoptional + [] +
      environment + Environment variables to set before calling the package manager. + Dictionary: String -> Stringoptional + {} +
      included_files + List of file extensions to be included in the npm package targets. For example, [".js", ".d.ts", ".proto", ".json", ""]. @@ -791,39 +1045,71 @@ https://github.com/bazelbuild/bazel/issues/5153. If set to an empty list then all files are included in the package targets. If set to a list of extensions, only files with matching extensions are included in the package targets. An empty string in the list is a special -string that denotes that files with no extensions such as `README` should +string that denotes that files with no extensions such as README should be included in the package targets. -This attribute applies to both the coarse `@wksp//:node_modules` target -as well as the fine grained targets such as `@wksp//foo`. - -Defaults to `[]` - -#### `manual_build_file_contents` -(*String*): Experimental attribute that can be used to override the generated BUILD.bazel file and set its contents manually. +This attribute applies to both the coarse @wksp//:node_modules target +as well as the fine grained targets such as @wksp//foo. + List of stringsoptional + [] +
      manual_build_file_contents + Experimental attribute that can be used to override the generated BUILD.bazel file and set its contents manually. Can be used to work-around a bazel performance issue if the -default `@wksp//:node_modules` target has too many files in it. +default @wksp//:node_modules target has too many files in it. See https://github.com/bazelbuild/bazel/issues/5153. If you are running into performance issues due to a large node_modules target it is recommended to switch to using fine grained npm dependencies. - -Defaults to `""` - -#### `package_json` -(*[label], mandatory*) - -#### `package_lock_json` -(*[label], mandatory*) - -#### `quiet` -(*Boolean*): If stdout and stderr should be printed to the terminal. - -Defaults to `True` - -#### `symlink_node_modules` -(*Boolean*): Turn symlinking of node_modules on + Stringoptional + "" +
      package_json + Labelrequired + +
      package_lock_json + Labelrequired + +
      quiet + If stdout and stderr should be printed to the terminal. + Booleanoptional + True +
      timeout + Maximum duration of the package manager execution in seconds. + Integeroptional + 3600 +
      -Defaults to `True` - -#### `timeout` -(*Integer*): Maximum duration of the package manager execution in seconds. - -Defaults to `3600` ## pkg_npm @@ -851,7 +1151,7 @@ The pkg_npm rule creates a directory containing a publishable npm artifact. Example: -```python +{% highlight python %} load("@build_bazel_rules_nodejs//:index.bzl", "pkg_npm") pkg_npm( @@ -860,187 +1160,326 @@ pkg_npm( deps = [":my_typescript_lib"], substitutions = {"//internal/": "//"}, ) -``` +{% endhighlight %} -You can use a pair of `// BEGIN-INTERNAL ... // END-INTERNAL` comments to mark regions of files that should be elided during publishing. +You can use a pair of // BEGIN-INTERNAL ... // END-INTERNAL comments to mark regions of files that should be elided during publishing. For example: -```javascript +{% highlight javascript %} function doThing() { // BEGIN-INTERNAL // This is a secret internal-only comment doInternalOnlyThing(); // END-INTERNAL } -``` +{% endhighlight %} With the Bazel stamping feature, pkg_npm will replace any placeholder version in your package with the actual version control tag. See the [stamping documentation](https://github.com/bazelbuild/rules_nodejs/blob/master/docs/index.md#stamping) Usage: -`pkg_npm` yields three labels. Build the package directory using the default label: +pkg_npm yields three labels. Build the package directory using the default label: -```sh +{% highlight sh %} $ bazel build :my_package Target //:my_package up-to-date: bazel-out/fastbuild/bin/my_package $ ls -R bazel-out/fastbuild/bin/my_package -``` +{% endhighlight %} -Dry-run of publishing to npm, calling `npm pack` (it builds the package first if needed): +Dry-run of publishing to npm, calling npm pack (it builds the package first if needed): -```sh +{% highlight sh %} $ bazel run :my_package.pack INFO: Running command line: bazel-out/fastbuild/bin/my_package.pack my-package-name-1.2.3.tgz $ tar -tzf my-package-name-1.2.3.tgz -``` +{% endhighlight %} -Actually publish the package with `npm publish` (also builds first): +Actually publish the package with npm publish (also builds first): -```sh +{% highlight sh %} # Check login credentials $ bazel run @nodejs//:npm_node_repositories who # Publishes the package $ bazel run :my_package.publish -``` +{% endhighlight %} You can pass arguments to npm by escaping them from Bazel using a double-hyphen, for example: -`bazel run my_package.publish -- --tag=next` - - - -### Usage - -``` -pkg_npm(name, deps, nested_packages, node_context_data, package_name, replace_with_version, srcs, substitutions, vendor_external) -``` - - - -#### `name` -(*[name], mandatory*): A unique name for this target. - -#### `deps` -(*[labels]*): Other targets which produce files that should be included in the package, such as `rollup_bundle` - -Defaults to `[]` - -#### `nested_packages` -(*[labels]*): Other pkg_npm rules whose content is copied into this package. - -Defaults to `[]` - -#### `node_context_data` -(*[label]*): Internal use only - -Defaults to `@build_bazel_rules_nodejs//internal:node_context_data` - -#### `package_name` -(*String*): Optional package_name that this npm package may be imported as. - -Defaults to `""` - -#### `replace_with_version` -(*String*): If set this value is replaced with the version stamp data. +bazel run my_package.publish -- --tag=next + + +
      +pkg_npm(name, deps, nested_packages, node_context_data, package_name, replace_with_version, srcs,
      +        substitutions, vendor_external)
      +
      + +**ATTRIBUTES** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this target. + Namerequired + +
      deps + Other targets which produce files that should be included in the package, such as rollup_bundle + List of labelsoptional + [] +
      nested_packages + Other pkg_npm rules whose content is copied into this package. + List of labelsoptional + [] +
      node_context_data + Internal use only + The dependencies of this attribute must provide: NodeContextInfo + Labeloptional + @build_bazel_rules_nodejs//internal:node_context_data +
      package_name + Optional package_name that this npm package may be imported as. + Stringoptional + "" +
      replace_with_version + If set this value is replaced with the version stamp data. See the section on stamping in the README. - -Defaults to `"0.0.0-PLACEHOLDER"` - -#### `srcs` -(*[labels]*): Files inside this directory which are simply copied into the package. - -Defaults to `[]` - -#### `substitutions` -(*Dictionary: String -> String*): Key-value pairs which are replaced in all the files while building the package. - -Defaults to `{}` - -#### `vendor_external` -(*List of strings*): External workspaces whose contents should be vendored into this workspace. + Stringoptional + "0.0.0-PLACEHOLDER" +
      srcs + Files inside this directory which are simply copied into the package. + List of labelsoptional + [] +
      substitutions + Key-value pairs which are replaced in all the files while building the package. + Dictionary: String -> Stringoptional + {} +
      vendor_external + External workspaces whose contents should be vendored into this workspace. Avoids 'external/foo' path segments in the resulting package. + List of stringsoptional + [] +
      -Defaults to `[]` ## pkg_web Assembles a web application from source files. +
      +pkg_web(name, additional_root_paths, srcs)
      +
      + +**ATTRIBUTES** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this target. + Namerequired + +
      additional_root_paths + Path prefixes to strip off all srcs, in addition to the current package. Longest wins. + List of stringsoptional + [] +
      srcs + Files which should be copied into the package + List of labelsoptional + [] +
      -### Usage - -``` -pkg_web(name, additional_root_paths, srcs) -``` - - - -#### `name` -(*[name], mandatory*): A unique name for this target. - -#### `additional_root_paths` -(*List of strings*): Path prefixes to strip off all srcs, in addition to the current package. Longest wins. - -Defaults to `[]` - -#### `srcs` -(*[labels]*): Files which should be copied into the package - -Defaults to `[]` ## yarn_install Runs yarn install during workspace setup. -This rule will set the environment variable `BAZEL_YARN_INSTALL` to '1' (unless it +This rule will set the environment variable BAZEL_YARN_INSTALL to '1' (unless it set to another value in the environment attribute). Scripts may use to this to -check if yarn is being run by the `yarn_install` repository rule. - - -### Usage - -``` -yarn_install(name, args, data, environment, included_files, manual_build_file_contents, package_json, quiet, symlink_node_modules, timeout, use_global_yarn_cache, yarn_lock) -``` - - - -#### `name` -(*[name], mandatory*): A unique name for this repository. - -#### `args` -(*List of strings*): Arguments passed to yarn install. +check if yarn is being run by the yarn_install repository rule. + +
      +yarn_install(name, args, data, environment, included_files, manual_build_file_contents,
      +             package_json, quiet, symlink_node_modules, timeout, use_global_yarn_cache, yarn_lock)
      +
      + +**ATTRIBUTES** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this repository. + Namerequired + +
      args + Arguments passed to yarn install. See yarn CLI docs https://yarnpkg.com/en/docs/cli/install for complete list of supported arguments. - -Defaults to `[]` - -#### `data` -(*[labels]*): Data files required by this rule. + List of stringsoptional + [] +
      data + Data files required by this rule. If symlink_node_modules is True, this attribute is optional since the package manager will run in your workspace folder. It is recommended, however, that all files that the -package manager depends on, such as `.rc` files or files used in `postinstall`, are added +package manager depends on, such as .rc files or files used in postinstall, are added symlink_node_modules is True so that the repository rule is rerun when any of these files change. If symlink_node_modules is False, the package manager is run in the bazel external repository so all files that the package manager depends on must be listed. - -Defaults to `[]` - -#### `environment` -(*Dictionary: String -> String*): Environment variables to set before calling the package manager. - -Defaults to `{}` - -#### `included_files` -(*List of strings*): List of file extensions to be included in the npm package targets. + List of labelsoptional + [] +
      environment + Environment variables to set before calling the package manager. + Dictionary: String -> Stringoptional + {} +
      included_files + List of file extensions to be included in the npm package targets. For example, [".js", ".d.ts", ".proto", ".json", ""]. @@ -1051,36 +1490,61 @@ https://github.com/bazelbuild/bazel/issues/5153. If set to an empty list then all files are included in the package targets. If set to a list of extensions, only files with matching extensions are included in the package targets. An empty string in the list is a special -string that denotes that files with no extensions such as `README` should +string that denotes that files with no extensions such as README should be included in the package targets. -This attribute applies to both the coarse `@wksp//:node_modules` target -as well as the fine grained targets such as `@wksp//foo`. - -Defaults to `[]` - -#### `manual_build_file_contents` -(*String*): Experimental attribute that can be used to override the generated BUILD.bazel file and set its contents manually. +This attribute applies to both the coarse @wksp//:node_modules target +as well as the fine grained targets such as @wksp//foo. + List of stringsoptional + [] +
      manual_build_file_contents + Experimental attribute that can be used to override the generated BUILD.bazel file and set its contents manually. Can be used to work-around a bazel performance issue if the -default `@wksp//:node_modules` target has too many files in it. +default @wksp//:node_modules target has too many files in it. See https://github.com/bazelbuild/bazel/issues/5153. If you are running into performance issues due to a large node_modules target it is recommended to switch to using fine grained npm dependencies. - -Defaults to `""` - -#### `package_json` -(*[label], mandatory*) - -#### `quiet` -(*Boolean*): If stdout and stderr should be printed to the terminal. - -Defaults to `True` - -#### `symlink_node_modules` -(*Boolean*): Turn symlinking of node_modules on + Stringoptional + "" +
      package_json + Labelrequired + +
      quiet + If stdout and stderr should be printed to the terminal. + Booleanoptional + True +
      timeout + Maximum duration of the package manager execution in seconds. + Integeroptional + 3600 +
      use_global_yarn_cache + Use the global yarn cache on the system. The cache lets you avoid downloading packages multiple times. However, it can introduce non-hermeticity, and the yarn cache can @@ -1111,16 +1587,31 @@ have bugs. Disabling this attribute causes every run of yarn to have a unique cache_directory. -If True, this rule will pass `--mutex network` to yarn to ensure that +If True, this rule will pass --mutex network to yarn to ensure that the global cache can be shared by parallelized yarn_install rules. -If False, this rule will pass `--cache-folder /path/to/external/repository/__yarn_cache` +If False, this rule will pass --cache-folder /path/to/external/repository/__yarn_cache to yarn so that the local cache is contained within the external repository. + Booleanoptional + True +
      yarn_lock + Labelrequired + +
      -Defaults to `True` - -#### `yarn_lock` -(*[label], mandatory*) ## check_bazel_version @@ -1135,37 +1626,49 @@ This should *not* be used in users WORKSPACE files. To locally pin your Bazel version, just create the .bazelversion file in your workspace. - -### Usage - -``` -check_bazel_version(minimum_bazel_version, message) -``` - - - -#### `minimum_bazel_version` - -a string indicating the minimum version - - - - -#### `message` - -optional string to print to your users, could be used to help them update - -Defaults to `""` - - +
      +check_bazel_version(minimum_bazel_version, message)
      +
      + +**PARAMETERS** + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      minimum_bazel_version + a string indicating the minimum version + + +
      message + optional string to print to your users, could be used to help them update + + "" +
      ## copy_to_bin -Copies a source file to bazel-bin at the same workspace-relative path path. +Copies a source file to bazel-bin at the same workspace-relative path. -e.g. `/foo/bar/a.txt -> /foo/bar/a.txt` +e.g. /foo/bar/a.txt -> /foo/bar/a.txt This is useful to populate the output folder with all files needed at runtime, even those which aren't outputs of a Bazel rule. @@ -1175,35 +1678,50 @@ without that program needing to rely on a runfiles helper library or be aware th files are divided between the source tree and the output tree. - -### Usage - -``` -copy_to_bin(name, srcs, kwargs) -``` - - - -#### `name` - -Name of the rule. - - - - -#### `srcs` - -A List of Labels. File(s) to to copy. - - - - -#### `kwargs` - -further keyword arguments, e.g. `visibility` - - - +
      +copy_to_bin(name, srcs, kwargs)
      +
      + +**PARAMETERS** + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      name + Name of the rule. + + +
      srcs + A List of Labels. File(s) to to copy. + + +
      kwargs + further keyword arguments, e.g. visibility + + +
      @@ -1215,51 +1733,69 @@ This is useful for testing, where a "snapshot" or "golden" file is checked in, so that you can code review changes to the generated output. - -### Usage - -``` -generated_file_test(name, generated, src, src_dbg, kwargs) -``` - - - -#### `name` - -Name of the rule. - - - - -#### `generated` - -a Label of the output file generated by another rule - - - - -#### `src` - -Label of the source file in the workspace - - - - -#### `src_dbg` - -if the build uses `--compilation_mode dbg` then some rules will produce different output. +
      +generated_file_test(name, generated, src, src_dbg, kwargs)
      +
      + +**PARAMETERS** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      name + Name of the rule. + + +
      generated + a Label of the output file generated by another rule + + +
      src + Label of the source file in the workspace + + +
      src_dbg + if the build uses --compilation_mode dbg then some rules will produce different output. In this case you can specify what the dbg version of the output should look like - -Defaults to `None` - - - -#### `kwargs` - -extra arguments passed to the underlying nodejs_test or nodejs_binary - - - + + None +
      kwargs + extra arguments passed to the underlying nodejs_test or nodejs_binary + + +
      @@ -1267,75 +1803,87 @@ extra arguments passed to the underlying nodejs_test or nodejs_binary Run an arbitrary npm package binary (e.g. a program under node_modules/.bin/*) under Bazel. -It must produce outputs. If you just want to run a program with `bazel run`, use the nodejs_binary rule. +It must produce outputs. If you just want to run a program with bazel run, use the nodejs_binary rule. This is like a genrule() except that it runs our launcher script that first links the node_modules tree before running the program. Bazel always runs actions with a working directory set to your workspace root. -If your tool needs to run in a different directory, you can write a `process.chdir` helper script -and invoke it before the action with a `--require` argument, like -`args = ["--node_options=--require=./$(execpath chdir.js)"]` +If your tool needs to run in a different directory, you can write a process.chdir helper script +and invoke it before the action with a --require argument, like +args = ["--node_options=--require=./$(execpath chdir.js)"] See rules_nodejs/internal/node/test/chdir for an example. This is a great candidate to wrap with a macro, as documented: https://docs.bazel.build/versions/master/skylark/macros.html#full-example - -### Usage - -``` -npm_package_bin(tool, package, package_bin, data, outs, args, output_dir, kwargs) -``` - - - -#### `tool` - -a label for a binary to run, like `@npm//terser/bin:terser`. This is the longer form of package/package_bin. +
      +npm_package_bin(tool, package, package_bin, data, outs, args, output_dir, kwargs)
      +
      + +**PARAMETERS** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      tool + a label for a binary to run, like @npm//terser/bin:terser. This is the longer form of package/package_bin. Note that you can also refer to a binary in your local workspace. - -Defaults to `None` - - - -#### `package` - -an npm package whose binary to run, like "terser". Assumes your node_modules are installed in a workspace called "npm" - -Defaults to `None` - - - -#### `package_bin` - -the "bin" entry from `package` that should be run. By default package_bin is the same string as `package` - -Defaults to `None` - - - -#### `data` - -similar to [genrule.srcs](https://docs.bazel.build/versions/master/be/general.html#genrule.srcs) + + None +
      package + an npm package whose binary to run, like "terser". Assumes your node_modules are installed in a workspace called "npm" + + None +
      package_bin + the "bin" entry from package that should be run. By default package_bin is the same string as package + + None +
      data + similar to [genrule.srcs](https://docs.bazel.build/versions/master/be/general.html#genrule.srcs) may also include targets that produce or reference npm packages which are needed by the tool - -Defaults to `[]` - - - -#### `outs` - -similar to [genrule.outs](https://docs.bazel.build/versions/master/be/general.html#genrule.outs) - -Defaults to `[]` - - - -#### `args` - -Command-line arguments to the tool. + + [] +
      outs + similar to [genrule.outs](https://docs.bazel.build/versions/master/be/general.html#genrule.outs) + + [] +
      args + Command-line arguments to the tool. Subject to 'Make variable' substitution. See https://docs.bazel.build/versions/master/be/make-variables.html. @@ -1361,38 +1909,44 @@ Command-line arguments to the tool. Like genrule, you may also use some syntax sugar for locations. - - `$@`: if you have only one output file, the location of the output - - `$(@D)`: The output directory. If output_dir=False and there is only one file name in outs, this expands to the directory + - $@: if you have only one output file, the location of the output + - $(@D): The output directory. If output_dir=False and there is only one file name in outs, this expands to the directory containing that file. If there are multiple files, this instead expands to the package's root directory in the genfiles tree, even if all generated files belong to the same subdirectory! If output_dir=True then this corresponds to the output directory which is the $(RULEDIR)/{target_name}. - - `$(RULEDIR)`: the root output directory of the rule, corresponding with its package + - $(RULEDIR): the root output directory of the rule, corresponding with its package (can be used with output_dir=True or False) See https://docs.bazel.build/versions/master/be/make-variables.html#predefined_genrule_variables. Custom variables are also expanded including variables set through the Bazel CLI with --define=SOME_VAR=SOME_VALUE. See https://docs.bazel.build/versions/master/be/make-variables.html#custom_variables. - -Defaults to `[]` - - - -#### `output_dir` - -set to True if you want the output to be a directory - Exactly one of `outs`, `output_dir` may be used. + + [] +
      output_dir + set to True if you want the output to be a directory + Exactly one of outs, output_dir may be used. If you output a directory, there can only be one output, which will be a directory named the same as the target. - -Defaults to `False` - - - -#### `kwargs` - - - - + + False +
      kwargs + + +
      @@ -1403,45 +1957,56 @@ Generates a UTF-8 encoded params file from a list of arguments. Handles variable substitutions for args. - -### Usage - -``` -params_file(name, out, args, data, newline, kwargs) -``` - - - -#### `name` - -Name of the rule. - - - - -#### `out` - -Path of the output file, relative to this package. - - - - -#### `args` - -Arguments to concatenate into a params file. +
      +params_file(name, out, args, data, newline, kwargs)
      +
      + +**PARAMETERS** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      name + Name of the rule. + + +
      out + Path of the output file, relative to this package. + + +
      args + Arguments to concatenate into a params file. Subject to 'Make variable' substitution. See https://docs.bazel.build/versions/master/be/make-variables.html. 1. Subject to predefined source/output path variables substitutions. - The predefined variables `execpath`, `execpaths`, `rootpath`, `rootpaths`, `location`, and `locations` take - label parameters (e.g. `$(execpath //foo:bar)`) and substitute the file paths denoted by that label. + The predefined variables execpath, execpaths, rootpath, rootpaths, location, and locations take + label parameters (e.g. $(execpath //foo:bar)) and substitute the file paths denoted by that label. See https://docs.bazel.build/versions/master/be/make-variables.html#predefined_label_variables for more info. NB: This $(location) substition returns the manifest file path which differs from the *_binary & *_test args and genrule bazel substitions. This will be fixed in a future major release. - See docs string of `expand_location_into_runfiles` macro in `internal/common/expand_into_runfiles.bzl` + See docs string of expand_location_into_runfiles macro in internal/common/expand_into_runfiles.bzl for more info. 2. Subject to predefined variables & custom variable substitutions. @@ -1453,45 +2018,53 @@ Arguments to concatenate into a params file. See https://docs.bazel.build/versions/master/be/make-variables.html#custom_variables. Predefined genrule variables are not supported in this context. - -Defaults to `[]` - - - -#### `data` - -Data for $(location) expansions in args. - -Defaults to `[]` - - - -#### `newline` - -Line endings to use. One of ["auto", "unix", "windows"]. + + [] +
      data + Data for $(location) expansions in args. + + [] +
      newline + Line endings to use. One of ["auto", "unix", "windows"]. "auto" for platform-determined "unix" for LF "windows" for CRLF - -Defaults to `"auto"` - - - -#### `kwargs` - - - + + "auto" +
      kwargs + + +
      -[name]: https://bazel.build/docs/build-ref.html#name -[label]: https://bazel.build/docs/build-ref.html#labels -[labels]: https://bazel.build/docs/build-ref.html#labels - ## DeclarationInfo +
      +DeclarationInfo(declarations, transitive_declarations, type_blacklisted_declarations)
      +
      + The DeclarationInfo provider allows JS rules to communicate typing information. TypeScript's .d.ts files are used as the interop format for describing types. package.json files are included as well, as TypeScript needs to read the "typings" property. @@ -1501,28 +2074,43 @@ Do not create DeclarationInfo instances directly, instead use the declaration_in Note: historically this was a subset of the string-typed "typescript" provider. - - -#### `declarations` -A depset of typings files produced by this rule - - - -#### `transitive_declarations` -A depset of typings files produced by this rule and all its transitive dependencies. -This prevents needing an aspect in rules that consume the typings, which improves performance. - - - -#### `type_blacklisted_declarations` -A depset of .d.ts files that we should not use to infer JSCompiler types (via tsickle) - - +**FIELDS** + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      declarations + A depset of typings files produced by this rule
      transitive_declarations + A depset of typings files produced by this rule and all its transitive dependencies. +This prevents needing an aspect in rules that consume the typings, which improves performance.
      type_blacklisted_declarations + A depset of .d.ts files that we should not use to infer JSCompiler types (via tsickle)
      ## JSEcmaScriptModuleInfo +
      +JSEcmaScriptModuleInfo(direct_sources, sources)
      +
      + JavaScript files (and sourcemaps) that are intended to be consumed by downstream tooling. They should use modern syntax and ESModules. @@ -1530,40 +2118,70 @@ These files should typically be named "foo.mjs" Historical note: this was the typescript.es6_sources output - - -#### `direct_sources` -Depset of direct JavaScript files and sourcemaps - - - -#### `sources` -Depset of direct and transitive JavaScript files and sourcemaps - - +**FIELDS** + + + + + + + + + + + + + + + + + + +
      NameDescription
      direct_sources + Depset of direct JavaScript files and sourcemaps
      sources + Depset of direct and transitive JavaScript files and sourcemaps
      ## JSModuleInfo -JavaScript files and sourcemaps. - - - -#### `direct_sources` -Depset of direct JavaScript files and sourcemaps - - - -#### `sources` -Depset of direct and transitive JavaScript files and sourcemaps +
      +JSModuleInfo(direct_sources, sources)
      +
      +JavaScript files and sourcemaps. +**FIELDS** + + + + + + + + + + + + + + + + + + +
      NameDescription
      direct_sources + Depset of direct JavaScript files and sourcemaps
      sources + Depset of direct and transitive JavaScript files and sourcemaps
      ## JSNamedModuleInfo +
      +JSNamedModuleInfo(direct_sources, sources)
      +
      + JavaScript files whose module name is self-contained. For example named AMD/UMD or goog.module format. @@ -1574,79 +2192,122 @@ These outputs should be named "foo.umd.js" Historical note: this was the typescript.es5_sources output. +**FIELDS** - -#### `direct_sources` -Depset of direct JavaScript files and sourcemaps - - - -#### `sources` -Depset of direct and transitive JavaScript files and sourcemaps - - + + + + + + + + + + + + + + + + + +
      NameDescription
      direct_sources + Depset of direct JavaScript files and sourcemaps
      sources + Depset of direct and transitive JavaScript files and sourcemaps
      ## LinkablePackageInfo -The LinkablePackageInfo provider provides information to the linker for linking pkg_npm built packages - - - -#### `files` -Depset of files in this package (must all be contained within path) - +
      +LinkablePackageInfo(files, package_name, path, _tslibrary)
      +
      +The LinkablePackageInfo provider provides information to the linker for linking pkg_npm built packages -#### `package_name` -The package name. +**FIELDS** + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      files + Depset of files in this package (must all be contained within path)
      package_name + The package name. Should be the same as name field in the package's package.json. -In the future, the linker may validate that the names match the name in a package.json file. - - - - -#### `path` -The path to link to. +In the future, the linker may validate that the names match the name in a package.json file.
      path + The path to link to. Path must be relative to execroot/wksp. It can either an output dir path such as, -'bazel-out/-/bin/path/to/package' or -'bazel-out/-/bin/external//path/to/package' +bazel-out/<platform>-<build>/bin/path/to/package or +bazel-out/<platform>-<build>/bin/external/&llt;external_wksp>/path/to/package or a source file path such as, -'path/to/package' or -'external//path/to/package' - - - - -#### `_tslibrary` -For internal use only - - +path/to/package or +external/<external_wksp>/path/to/package
      _tslibrary + For internal use only
      ## NodeContextInfo -Provides data about the build context, like config_setting's - - +
      +NodeContextInfo(stamp)
      +
      -#### `stamp` -If stamping is enabled +Provides data about the build context, like config_setting's +**FIELDS** + + + + + + + + + + + + + +
      NameDescription
      stamp + If stamping is enabled
      ## NodeRuntimeDepsInfo +
      +NodeRuntimeDepsInfo(deps, pkgs)
      +
      + Stores runtime dependencies of a nodejs_binary or nodejs_test These are files that need to be found by the node module resolver at runtime. @@ -1663,40 +2324,66 @@ tree will exist on disk, so we assume node actions/binary/test executions will do the same. +**FIELDS** - -#### `deps` -depset of runtime dependency labels - - - -#### `pkgs` -list of labels of packages that provide NpmPackageInfo - - + + + + + + + + + + + + + + + + + +
      NameDescription
      deps + depset of runtime dependency labels
      pkgs + list of labels of packages that provide NpmPackageInfo
      ## NpmPackageInfo -Provides information about npm dependencies - - - -#### `direct_sources` -Depset of direct source files in this npm package - - - -#### `sources` -Depset of direct & transitive source files in this npm package and in its dependencies - - - -#### `workspace` -The workspace name that this npm package is provided from +
      +NpmPackageInfo(direct_sources, sources, workspace)
      +
      +Provides information about npm dependencies +**FIELDS** + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      direct_sources + Depset of direct source files in this npm package
      sources + Depset of direct & transitive source files in this npm package and in its dependencies
      workspace + The workspace name that this npm package is provided from
      @@ -1704,29 +2391,41 @@ The workspace name that this npm package is provided from Constructs a DeclarationInfo including all transitive files needed to type-check from DeclarationInfo providers in a list of deps. - -### Usage - -``` -declaration_info(declarations, deps) -``` - - - -#### `declarations` - -list of typings files - - - - -#### `deps` - -list of labels of dependencies where we should collect their DeclarationInfo to pass transitively - -Defaults to `[]` - - +
      +declaration_info(declarations, deps)
      +
      + +**PARAMETERS** + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      declarations + list of typings files + + +
      deps + list of labels of dependencies where we should collect their DeclarationInfo to pass transitively + + [] +
      @@ -1736,27 +2435,39 @@ Constructs a JSEcmaScriptModuleInfo including all transitive sources from JSEcma Returns a single JSEcmaScriptModuleInfo. - -### Usage - -``` -js_ecma_script_module_info(sources, deps) -``` - - - -#### `sources` - - - - - -#### `deps` - - -Defaults to `[]` - - +
      +js_ecma_script_module_info(sources, deps)
      +
      + +**PARAMETERS** + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      sources + + +
      deps + + [] +
      @@ -1766,27 +2477,39 @@ Constructs a JSModuleInfo including all transitive sources from JSModuleInfo pro Returns a single JSModuleInfo. - -### Usage - -``` -js_module_info(sources, deps) -``` - - - -#### `sources` - - - - - -#### `deps` - - -Defaults to `[]` - - +
      +js_module_info(sources, deps)
      +
      + +**PARAMETERS** + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      sources + + +
      deps + + [] +
      @@ -1796,27 +2519,39 @@ Constructs a JSNamedModuleInfo including all transitive sources from JSNamedModu Returns a single JSNamedModuleInfo. - -### Usage - -``` -js_named_module_info(sources, deps) -``` - - - -#### `sources` - - - - - -#### `deps` - - -Defaults to `[]` - - +
      +js_named_module_info(sources, deps)
      +
      + +**PARAMETERS** + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      sources + + +
      deps + + [] +
      @@ -1827,63 +2562,118 @@ Helper to replace ctx.actions.run This calls node programs with a node_modules directory in place - -### Usage - -``` -run_node(ctx, inputs, arguments, executable, kwargs) -``` - - - -#### `ctx` - -rule context from the calling rule implementation function - - - - -#### `inputs` - -list or depset of inputs to the action - - - - -#### `arguments` - -list or ctx.actions.Args object containing arguments to pass to the executable - - - - -#### `executable` - -stringy representation of the executable this action will run, eg eg. "my_executable" rather than ctx.executable.my_executable - - - - -#### `kwargs` - -all other args accepted by ctx.actions.run - - - +
      +run_node(ctx, inputs, arguments, executable, kwargs)
      +
      + +**PARAMETERS** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      ctx + rule context from the calling rule implementation function + + +
      inputs + list or depset of inputs to the action + + +
      arguments + list or ctx.actions.Args object containing arguments to pass to the executable + + +
      executable + stringy representation of the executable this action will run, eg eg. "my_executable" rather than ctx.executable.my_executable + + +
      kwargs + all other args accepted by ctx.actions.run + + +
      ## node_modules_aspect +
      +node_modules_aspect(name)
      +
      + + + +**ASPECT ATTRIBUTES** + + + + + + + + + + + + + + +
      NameType
      depsString
      + +**ATTRIBUTES** + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this target. Namerequired
      -### Usage - -``` -node_modules_aspect(name) -``` - - - -#### `name` -(*[name], mandatory*): A unique name for this target. diff --git a/docs/Cypress.html b/docs/Cypress.html new file mode 100755 index 0000000000..0b87e3b488 --- /dev/null +++ b/docs/Cypress.html @@ -0,0 +1,411 @@ + + + + + + + + + + rules_nodejs - Cypress + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + +
      +
      + +

      Cypress rules for Bazel

      + +

      The Cypress rules run tests under the Cypress e2e testing framework with Bazel.

      + +

      Installation

      + +

      Add @bazel/cypress, cypress and @cypress/browserify-preprocessor npm packages to your devDependencies in package.json.

      + +
      npm install --save-dev @bazel/cypress cypress @cypress/browserify-preprocessor
      + +

      or using yarn

      + +
      yarn add -D @bazel/cypress cypress @cypress/browserify-preprocessor
      + +

      Then, load and invoke cypress_repository within your WORKSPACE file.

      + +
      # Assuming your external repository for node_modules is named @npm
      +
      +load("@npm//@bazel/cypress:index.bzl", "cypress_repository")
      +
      +# The name you pass here names the external repository you can load cypress_web_test from
      +cypress_repository(name = "cypress")
      + +

      macOS install requirements

      +

      On macOS, cypress_repository generates an external repository containing files whose names contain spaces. In order to make these files compatible with bazel you will need to add the following flag to your .bazelrc file:

      + +
      # Required for cypress_repository on macOS
      +build --experimental_inprocess_symlink_creation
      + +

      windows install requirements

      +

      At this point in time, cypress_repository is incompatible with bazel sandboxing on Windows. This may change in the future, but for now using cypress on windows requires windows sandboxing be disabled (it is disabled by default)

      + +

      Example use of cypress_web_test

      +

      This example assumes you’ve named your external repository for node_modules as npm and for cypress as cypress

      + +
      load("@cypress//:index.bzl", "cypress_web_test")
      +load("@npm//@bazel/typescript:index.bzl", "ts_library")
      +
      +# You must create a cypress plugin in order to boot a server to serve your application. It can be written as a javascript file or in typescript using ts_library or ts_project.
      +ts_library(
      +    name = "plugins_file",
      +    testonly = True,
      +    srcs = ["plugin.ts"],
      +    tsconfig = ":tsconfig.json",
      +    deps = [
      +        "@npm//@types/node",
      +        "@npm//express",
      +    ],
      +)
      +
      +# You can write your cypress tests a javascript files or in typescript using ts_library or ts_project.
      +ts_library(
      +    name = "hello_spec",
      +    testonly = True,
      +    srcs = ["hello.spec.ts"],
      +    tsconfig = ":tsconfig.json",
      +    deps = [
      +        "@npm//cypress",
      +    ],
      +)
      +
      +cypress_web_test(
      +    # The name of your test target
      +    name = "test",
      +    srcs = [
      +        # Load javascript test files directly as sources
      +        "world.spec.js",
      +        # Load ts_library tests as a target to srcs
      +        ":hello_spec",
      +    ],
      +    # A cypress config file is required
      +    config_file = "cypress.json",
      +    # Any runtime dependencies you need to boot your server or run your tests
      +    data = [],
      +    # Your cypress plugin used to configure cypress and boot your server
      +    plugins_file = ":plugins_file",
      +)
      + +

      cypress_repository

      + +
      +cypress_repository(name, cypress_bin, fail_on_error, quiet)
      +
      + +

      ATTRIBUTES

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this repository. + Namerequired + +
      cypress_bin + bazel target of the cypress binary + Labeloptional + @npm//:node_modules/cypress/bin/cypress +
      fail_on_error + If the repository rule should allow errors + Booleanoptional + True +
      quiet + If stdout and stderr should be printed to the terminal + Booleanoptional + True +
      + + +
      +
      + + +
      +
      + +
      +
      +
      +
      +

      © 2020 Google

      +
      +
      +
      + +
      + + + + + + + + + + + + + + + diff --git a/docs/Cypress.md b/docs/Cypress.md index 26a4bdf25a..42e2224159 100755 --- a/docs/Cypress.md +++ b/docs/Cypress.md @@ -1,10 +1,11 @@ --- title: Cypress layout: default -stylesheet: docs +toc: true +nav: rule --- + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + +
      +
      + +

      Jasmine rules for Bazel

      + +

      The Jasmine rules run tests under the Jasmine framework with Bazel.

      + +

      Installation

      + +

      Add the @bazel/jasmine npm package to your devDependencies in package.json.

      + +

      jasmine_node_test

      + +

      Runs tests in NodeJS using the Jasmine test runner.

      + +

      Detailed XML test results are found in the standard bazel-testlogs +directory. This may be symlinked in your workspace. +See https://docs.bazel.build/versions/master/output_directories.html

      + +

      To debug the test, see debugging notes in nodejs_test.

      + +
      +jasmine_node_test(name, srcs, data, deps, expected_exit_code, tags, config_file, jasmine,
      +                  jasmine_entry_point, kwargs)
      +
      + +

      PARAMETERS

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      name + Name of the resulting label + + +
      srcs + JavaScript source files containing Jasmine specs + + [] +
      data + Runtime dependencies which will be loaded while the test executes + + [] +
      deps + Other targets which produce JavaScript, such as ts_library + + [] +
      expected_exit_code + The expected exit code for the test. + + 0 +
      tags + Bazel tags applied to test + + [] +
      config_file + (experimental) label of a file containing Jasmine JSON config. + + Note that not all configuration options are honored, and + we expect some strange feature interations. + For example, the filter for which files are instrumented for + code coverage doesn't understand the spec_files setting in the config. + + See https://jasmine.github.io/setup/nodejs.html#configuration + + None +
      jasmine + A label providing the @bazel/jasmine npm dependency. + + "//packages/jasmine" +
      jasmine_entry_point + A label providing the @bazel/jasmine entry point. + + "//packages/jasmine:jasmine_runner.js" +
      kwargs + Remaining arguments are passed to the test rule + + +
      + + +
      +
      + + +
      +
      + +
      +
      +
      +
      +

      © 2020 Google

      +
      +
      +
      + +
      + + + + + + + + + + + + + + + diff --git a/docs/Jasmine.md b/docs/Jasmine.md index 3ce8b69ce0..553ce7ad06 100755 --- a/docs/Jasmine.md +++ b/docs/Jasmine.md @@ -1,10 +1,11 @@ --- title: Jasmine layout: default -stylesheet: docs +toc: true +nav: rule --- + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + +
      +
      + +

      Karma rules for Bazel

      + +

      The Karma rules run karma tests with Bazel.

      + +

      Installation

      + +

      Add the @bazel/karma npm package to your devDependencies in package.json.

      + +

      Now add this to your WORKSPACE to install the Karma dependencies:

      + +
      # Fetch transitive Bazel dependencies of @bazel/karma
      +load("@npm//@bazel/karma:package.bzl", "npm_bazel_karma_dependencies")
      +npm_bazel_karma_dependencies()
      + +

      This installs the io_bazel_rules_webtesting repository, if you haven’t installed it earlier.

      + +

      Finally, configure the rules_webtesting:

      + +
      # Set up web testing, choose browsers we can test on
      +load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories")
      +
      +web_test_repositories()
      +
      +load("@io_bazel_rules_webtesting//web/versioned:browsers-0.3.2.bzl", "browser_repositories")
      +
      +browser_repositories(
      +    chromium = True,
      +    firefox = True,
      +)
      + +

      Installing with self-managed dependencies

      + +

      If you didn’t use the yarn_install or npm_install rule to create an npm workspace, you’ll have to declare a rule in your root BUILD.bazel file to execute karma:

      + +
      # Create a karma rule to use in ts_web_test_suite karma
      +# attribute when using self-managed dependencies
      +nodejs_binary(
      +    name = "karma/karma",
      +    entry_point = "//:node_modules/karma/bin/karma",
      +    # Point bazel to your node_modules to find the entry point
      +    node_modules = ["//:node_modules"],
      +)
      + +

      karma_web_test

      + +

      Runs unit tests in a browser with Karma.

      + +

      When executed under bazel test, this uses a headless browser for speed. +This is also because bazel test allows multiple targets to be tested together, +and we don’t want to open a Chrome window on your machine for each one. Also, +under bazel test the test will execute and immediately terminate.

      + +

      Running under ibazel test gives you a “watch mode” for your tests. The rule is +optimized for this case - the test runner server will stay running and just +re-serve the up-to-date JavaScript source bundle.

      + +

      To debug a single test target, run it with bazel run instead. This will open a +browser window on your computer. Also you can use any other browser by opening +the URL printed when the test starts up. The test will remain running until you +cancel the bazel run command.

      + +

      This rule will use your system Chrome by default. In the default case, your +environment must specify CHROME_BIN so that the rule will know which Chrome binary to run. +Other browsers and customLaunchers may be set using the a base Karma configuration +specified in the config_file attribute.

      + +
      +karma_web_test(srcs, deps, data, configuration_env_vars, bootstrap, runtime_deps, static_files,
      +               config_file, tags, peer_deps, kwargs)
      +
      + +

      PARAMETERS

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      srcs + A list of JavaScript test files + + [] +
      deps + Other targets which produce JavaScript such as ts_library + + [] +
      data + Runtime dependencies + + [] +
      configuration_env_vars + Pass these configuration environment variables to the resulting binary. + Chooses a subset of the configuration environment variables (taken from ctx.var), which also + includes anything specified via the --define flag. + Note, this can lead to different outputs produced by this rule. + + [] +
      bootstrap + JavaScript files to include *before* the module loader (require.js). + For example, you can include Reflect,js for TypeScript decorator metadata reflection, + or UMD bundles for third-party libraries. + + [] +
      runtime_deps + Dependencies which should be loaded after the module loader but before the srcs and deps. + These should be a list of targets which produce JavaScript such as ts_library. + The files will be loaded in the same order they are declared by that rule. + + [] +
      static_files + Arbitrary files which are available to be served on request. + Files are served at: + /base/<WORKSPACE_NAME>/<path-to-file>, e.g. + /base/npm_bazel_typescript/examples/testing/static_script.js + + [] +
      config_file + User supplied Karma configuration file. Bazel will override + certain attributes of this configuration file. Attributes that are + overridden will be outputted to the test log. + + None +
      tags + Standard Bazel tags, this macro adds tags for ibazel support + + [] +
      peer_deps + list of peer npm deps required by karma_web_test + + ["@npm//jasmine-core", "@npm//karma", "@npm//karma-chrome-launcher", "@npm//karma-firefox-launcher", "@npm//karma-jasmine", "@npm//karma-requirejs", "@npm//karma-sourcemap-loader", "@npm//requirejs", "@npm//tmp"] +
      kwargs + Passed through to karma_web_test + + +
      + +

      karma_web_test_suite

      + +

      Defines a test_suite of web_test targets that wrap a karma_web_test target.

      + +

      This macro accepts all parameters in karma_web_test and adds additional parameters +for the suite. See karma_web_test docs for all karma_web_test.

      + +

      The wrapping macro is web_test_suite which comes from rules_websting: +https://github.com/bazelbuild/rules_webtesting/blob/master/web/web.bzl.

      + +
      +karma_web_test_suite(name, browsers, web_test_data, wrapped_test_tags, kwargs)
      +
      + +

      PARAMETERS

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      name + The base name of the test + + +
      browsers + A sequence of labels specifying the browsers to use. + + None +
      web_test_data + Data dependencies for the wrapper web_test targets. + + [] +
      wrapped_test_tags + A list of test tag strings to use for the wrapped + karma_web_test target. + + ["manual", "noci"] +
      kwargs + Arguments for the wrapped karma_web_test target. + + +
      + + +
      +
      + + +
      +
      + +
      +
      +
      +
      +

      © 2020 Google

      +
      +
      +
      + +
      + + + + + + + + + + + + + + + diff --git a/docs/Karma.md b/docs/Karma.md index bda55c66d8..b66626569f 100755 --- a/docs/Karma.md +++ b/docs/Karma.md @@ -1,10 +1,11 @@ --- title: Karma layout: default -stylesheet: docs +toc: true +nav: rule --- + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + +
      +
      + +

      Protractor rules for Bazel

      + +

      The Protractor rules run tests under the Protractor framework with Bazel.

      + +

      Installation

      + +

      Add the @bazel/protractor npm package to your devDependencies in package.json.

      + +

      protractor_web_test

      + +

      Runs a protractor test in a browser.

      + +
      +protractor_web_test(name, configuration, on_prepare, srcs, deps, data, server, tags, peer_deps,
      +                    protractor_entry_point, kwargs)
      +
      + +

      PARAMETERS

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      name + The name of the test + + +
      configuration + Protractor configuration file. + + None +
      on_prepare + A file with a node.js script to run once before all tests run. + If the script exports a function which returns a promise, protractor + will wait for the promise to resolve before beginning tests. + + None +
      srcs + JavaScript source files + + [] +
      deps + Other targets which produce JavaScript such as ts_library + + [] +
      data + Runtime dependencies + + [] +
      server + Optional server executable target + + None +
      tags + Standard Bazel tags, this macro adds one for ibazel + + [] +
      peer_deps + List of peer npm deps required by protractor_web_test + + ["@build_bazel_rules_nodejs//packages/protractor", "@npm//protractor"] +
      protractor_entry_point + A label providing the protractor entry point + Default to :node_modules/protractor/bin/protractor. + + "@npm//:node_modules/protractor/bin/protractor" +
      kwargs + passed through to protractor_web_test + + +
      + +

      protractor_web_test_suite

      + +

      Defines a test_suite of web_test targets that wrap a protractor_web_test target.

      + +
      +protractor_web_test_suite(name, browsers, web_test_data, wrapped_test_tags, kwargs)
      +
      + +

      PARAMETERS

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      name + The base name of the test + + +
      browsers + A sequence of labels specifying the browsers to use. + + None +
      web_test_data + Data dependencies for the wrapper web_test targets. + + [] +
      wrapped_test_tags + A list of test tag strings to use for the wrapped + karma_web_test target. + + ["manual", "noci"] +
      kwargs + Arguments for the wrapped karma_web_test target. + + +
      + + +
      +
      + + +
      +
      + +
      +
      +
      +
      +

      © 2020 Google

      +
      +
      +
      + +
      + + + + + + + + + + + + + + + diff --git a/docs/Protractor.md b/docs/Protractor.md index b7badf81b2..2eca7aac8d 100755 --- a/docs/Protractor.md +++ b/docs/Protractor.md @@ -1,10 +1,11 @@ --- title: Protractor layout: default -stylesheet: docs +toc: true +nav: rule --- ``` - Should be edited by modifying the docs in the source `.bzl` files, other files can be freely edited. + +Should be edited by modifying the docs in the source `.bzl` files. +If updating css, then the `scss` in `/docs/css` should be edited. +The HTML files in `/docs` are also generated and should not be edited directly, other files can be freely edited. diff --git a/docs/Rollup.html b/docs/Rollup.html new file mode 100755 index 0000000000..a7cac3316d --- /dev/null +++ b/docs/Rollup.html @@ -0,0 +1,607 @@ + + + + + + + + + + rules_nodejs - Rollup + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + +
      +
      + +

      rollup rules for Bazel

      + +

      The rollup rules run the rollup JS bundler with Bazel.

      + +

      Wraps the rollup CLI documented at https://rollupjs.org/guide/en/#command-line-reference

      + +

      Installation

      + +

      Add the @bazel/rollup npm package to your devDependencies in package.json.

      + +

      Installing with self-managed dependencies

      + +

      If you didn’t use the yarn_install or npm_install rule, you’ll have to declare a rule in your root BUILD.bazel file to execute rollup:

      + +
      # Create a rollup rule to use in rollup_bundle#rollup_bin
      +# attribute when using self-managed dependencies
      +nodejs_binary(
      +    name = "rollup_bin",
      +    entry_point = "//:node_modules/rollup/bin/rollup",
      +    # Point bazel to your node_modules to find the entry point
      +    node_modules = ["//:node_modules"],
      +)
      + +

      rollup_bundle

      + +

      Runs the Rollup.js CLI under Bazel.

      + +

      See https://rollupjs.org/guide/en/#command-line-reference

      + +

      Typical example:

      + +
      load("@npm//@bazel/rollup:index.bzl", "rollup_bundle")
      +
      +rollup_bundle(
      +    name = "bundle",
      +    srcs = ["dependency.js"],
      +    entry_point = "input.js",
      +    config_file = "rollup.config.js",
      +)
      + +

      Note that the command-line options set by Bazel override what appears in the rollup config file. +This means that typically a single rollup.config.js can contain settings for your whole repo, +and multiple rollup_bundle rules can share the configuration.

      + +

      Thus, setting options that Bazel controls will have no effect, e.g.

      + +
      module.exports = {
      +    output: { file: 'this_is_ignored.js' },
      +}
      + +

      You must determine ahead of time whether Rollup needs to produce a directory output. +This is the case if you have dynamic imports which cause code-splitting, or if you +provide multiple entry points. Use the output_dir attribute to specify that you want a +directory output. +Rollup’s CLI has the same behavior, forcing you to pick --output.file or --output.dir.

      + +

      To get multiple output formats, wrap the rule with a macro or list comprehension, e.g.

      + +
      [
      +    rollup_bundle(
      +        name = "bundle.%s" % format,
      +        entry_point = "foo.js",
      +        format = format,
      +    )
      +    for format in [
      +        "cjs",
      +        "umd",
      +    ]
      +]
      + +

      This will produce one output per requested format.

      + +
      +rollup_bundle(name, args, config_file, deps, entry_point, entry_points, format, node_context_data,
      +              output_dir, rollup_bin, rollup_worker_bin, silent, sourcemap, srcs, supports_workers)
      +
      + +

      ATTRIBUTES

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this target. + Namerequired + +
      args + Command line arguments to pass to rollup. Can be used to override config file settings. + +These argument passed on the command line before all arguments that are always added by the +rule such as --output.dir or --output.file, --format, --config and --preserveSymlinks and +also those that are optionally added by the rule such as --sourcemap. + +See rollup CLI docs https://rollupjs.org/guide/en/#command-line-flags for complete list of supported arguments. + List of stringsoptional + [] +
      config_file + A rollup.config.js file + +Passed to the --config +See https://rollupjs.org/guide/en/#configuration-files + +If not set, a default basic Rollup config is used. + Labeloptional + //packages/rollup:rollup.config.js +
      deps + Other libraries that are required by the code, or by the rollup.config.js + List of labelsoptional + [] +
      entry_point + The bundle's entry point (e.g. your main.js or app.js or index.js). + +This is just a shortcut for the entry_points attribute with a single output chunk named the same as the rule. + +For example, these are equivalent: + + +
      rollup_bundle(
      +    name = "bundle",
      +    entry_point = "index.js",
      +)
      + + + +
      rollup_bundle(
      +    name = "bundle",
      +    entry_points = {
      +        "index.js": "bundle"
      +    }
      +)
      + + +If rollup_bundle is used on a ts_library, the rollup_bundle rule handles selecting the correct outputs from ts_library. +In this case, entry_point can be specified as the .ts file and rollup_bundle will handle the mapping to the .mjs output file. + +For example: + + +
      ts_library(
      +    name = "foo",
      +    srcs = [
      +        "foo.ts",
      +        "index.ts",
      +    ],
      +)
      +
      +rollup_bundle(
      +    name = "bundle",
      +    deps = [ "foo" ],
      +    entry_point = "index.ts",
      +)
      + +
      Labeloptional + None +
      entry_points + The bundle's entry points (e.g. your main.js or app.js or index.js). + +Passed to the [--input option](https://github.com/rollup/rollup/blob/master/docs/999-big-list-of-options.md#input) in Rollup. + +Keys in this dictionary are labels pointing to .js entry point files. +Values are the name to be given to the corresponding output chunk. + +Either this attribute or entry_point must be specified, but not both. + Dictionary: Label -> Stringoptional + {} +
      format + "Specifies the format of the generated bundle. One of the following: + +- amd: Asynchronous Module Definition, used with module loaders like RequireJS +- cjs: CommonJS, suitable for Node and other bundlers +- esm: Keep the bundle as an ES module file, suitable for other bundlers and inclusion as a
      + +
      +
      + + +
      +
      + +
      +
      +
      +
      +

      © 2020 Google

      +
      +
      +
      + +
      + + + + + + + + + + + + + + + diff --git a/docs/Rollup.md b/docs/Rollup.md index 98f4f98474..0a341f72f6 100755 --- a/docs/Rollup.md +++ b/docs/Rollup.md @@ -1,10 +1,11 @@ --- title: Rollup layout: default -stylesheet: docs +toc: true +nav: rule --- + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + +
      +
      + +

      Terser rules for Bazel

      + +

      The Terser rules run the Terser JS minifier with Bazel.

      + +

      Wraps the Terser CLI documented at https://github.com/terser-js/terser#command-line-usage

      + +

      Installation

      + +

      Add the @bazel/terser npm package to your devDependencies in package.json.

      + +

      Installing with self-managed dependencies

      + +

      If you didn’t use the yarn_install or npm_install rule, you’ll have to declare a rule in your root BUILD.bazel file to execute terser:

      + +
      # Create a terser rule to use in terser_minified#terser_bin
      +# attribute when using self-managed dependencies
      +nodejs_binary(
      +    name = "terser_bin",
      +    entry_point = "//:node_modules/terser/bin/uglifyjs",
      +    # Point bazel to your node_modules to find the entry point
      +    node_modules = ["//:node_modules"],
      +)
      + +

      terser_minified

      + +

      Run the terser minifier.

      + +

      Typical example:

      + +
      load("@npm//@bazel/terser:index.bzl", "terser_minified")
      +
      +terser_minified(
      +    name = "out.min",
      +    src = "input.js",
      +    config_file = "terser_config.json",
      +)
      + +

      Note that the name attribute determines what the resulting files will be called. +So the example above will output out.min.js and out.min.js.map (since sourcemap defaults to true). +If the input is a directory, then the output will also be a directory, named after the name attribute.

      + +
      +terser_minified(name, args, config_file, debug, sourcemap, src, terser_bin)
      +
      + +

      ATTRIBUTES

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this target. + Namerequired + +
      args + Additional command line arguments to pass to terser. + +Terser only parses minify() args from the config file so additional arguments such as --comments may +be passed to the rule using this attribute. See https://github.com/terser/terser#command-line-usage for the +full list of terser CLI options. + List of stringsoptional + [] +
      config_file + A JSON file containing Terser minify() options. + +This is the file you would pass to the --config-file argument in terser's CLI. +https://github.com/terser-js/terser#minify-options documents the content of the file. + +Bazel will make a copy of your config file, treating it as a template. + +Run bazel with --subcommands to see the path to the copied file. + +If you use the magic strings "bazel_debug" or "bazel_no_debug", these will be +replaced with true and false respecting the value of the debug attribute +or the --compilation_mode=dbg bazel flag. + +For example + + +
      {
      +    "compress": {
      +        "arrows": "bazel_no_debug"
      +    }
      +}
      + + +Will disable the arrows compression setting when debugging. + +If config_file isn't supplied, Bazel will use a default config file. +
      Labeloptional + //packages/terser:terser_config.default.json +
      debug + Configure terser to produce more readable output. + +Instead of setting this attribute, consider using debugging compilation mode instead +bazel build --compilation_mode=dbg //my/terser:target +so that it only affects the current build. + Booleanoptional + False +
      sourcemap + Whether to produce a .js.map output + Booleanoptional + True +
      src + File(s) to minify. + +Can be a .js file, a rule producing .js files as its default output, or a rule producing a directory of .js files. + +Note that you can pass multiple files to terser, which it will bundle together. +If you want to do this, you can pass a filegroup here. + Labelrequired + +
      terser_bin + An executable target that runs Terser + Labeloptional + //packages/terser/bin:terser +
      + + +
      +
      + + +
      +
      + +
      +
      +
      +
      +

      © 2020 Google

      +
      +
      +
      + +
      + + + + + + + + + + + + + + + diff --git a/docs/Terser.md b/docs/Terser.md index e75a146951..f8c4a5f20f 100755 --- a/docs/Terser.md +++ b/docs/Terser.md @@ -1,10 +1,11 @@ --- title: Terser layout: default -stylesheet: docs +toc: true +nav: rule --- + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + +
      +
      + +

      TypeScript rules for Bazel

      + +

      The TypeScript rules integrate the TypeScript compiler with Bazel.

      + +

      Alternatives

      + +

      This package provides Bazel wrappers around the TypeScript compiler.

      + +

      At a high level, there are two alternatives provided: ts_project and ts_library. +This section describes the trade-offs between these rules.

      + +

      ts_project simply runs tsc --project, with Bazel knowing which outputs to expect based on the TypeScript compiler options, and with interoperability with other TypeScript rules via a Bazel Provider (DeclarationInfo) that transmits the type information. +It is intended as an easy on-boarding for existing TypeScript code and should be familiar if your background is in frontend ecosystem idioms. +Any behavior of ts_project should be reproducible outside of Bazel, with a couple of caveats noted in the rule documentation below.

      + +
      +

      We used to recommend using the tsc rule directly from the typescript project, like +load("@npm//typescript:index.bzl", "tsc") +However ts_project is strictly better and should be used instead.

      +
      + +

      ts_library is an open-sourced version of the rule we use to compile TS code at Google. +It should be familiar if your background is in Bazel idioms. +It is very complex, involving code generation of the tsconfig.json file, a custom compiler binary, and a lot of extra features. +It is also opinionated, and may not work with existing TypeScript code. For example:

      + +
        +
      • Your TS code must compile under the --declaration flag so that downstream libraries depend only on types, not implementation. This makes Bazel faster by avoiding cascading rebuilds in cases where the types aren’t changed.
      • +
      • We control the output format and module syntax so that downstream rules can rely on them.
      • +
      + +

      On the other hand, ts_library is also fast and optimized. +We keep a running TypeScript compile running as a daemon, using Bazel workers. +This process avoids re-parse and re-JIT of the >1MB typescript.js and keeps cached bound ASTs for input files which saves time. +We also produce JS code which can be loaded faster (using named AMD module format) and which can be consumed by the Closure Compiler (via integration with tsickle).

      + +

      Installation

      + +

      Add a devDependency on @bazel/typescript

      + +
      $ yarn add -D @bazel/typescript
      +# or
      +$ npm install --save-dev @bazel/typescript
      + +

      Watch for any peerDependency warnings - we assume you have already installed the typescript package from npm.

      + +

      Create a BUILD.bazel file in your workspace root. If your tsconfig.json file is in the root, use

      + +
      exports_files(["tsconfig.json"], visibility = ["//visibility:public"])
      + +

      otherwise create an alias:

      + +
      alias(
      +    name = "tsconfig.json",
      +    actual = "//path/to/my:tsconfig.json",
      +)
      + +

      Make sure to remove the --noEmit compiler option from your tsconfig.json. This is not compatible with the ts_library rule.

      + +

      Self-managed npm dependencies

      + +

      We recommend you use Bazel managed dependencies but if you would like +Bazel to also install a node_modules in your workspace you can also +point the node_repositories repository rule in your WORKSPACE file to +your package.json.

      + +
      node_repositories(package_json = ["//:package.json"])
      + +

      You can then run yarn in your workspace with:

      + +
      $ bazel run @nodejs//:yarn_node_repositories
      + +

      To use your workspace node_modules folder as a dependency in ts_library and +other rules, add the following to your root BUILD.bazel file:

      + +
      filegroup(
      +    name = "node_modules",
      +    srcs = glob(
      +        include = [
      +          "node_modules/**/*.js",
      +          "node_modules/**/*.d.ts",
      +          "node_modules/**/*.json",
      +          "node_modules/.bin/*",
      +        ],
      +        exclude = [
      +          # Files under test & docs may contain file names that
      +          # are not legal Bazel labels (e.g.,
      +          # node_modules/ecstatic/test/public/中文/檔案.html)
      +          "node_modules/**/test/**",
      +          "node_modules/**/docs/**",
      +          # Files with spaces in the name are not legal Bazel labels
      +          "node_modules/**/* */**",
      +          "node_modules/**/* *",
      +        ],
      +    ),
      +)
      +
      +# Create a tsc_wrapped compiler rule to use in the ts_library
      +# compiler attribute when using self-managed dependencies
      +nodejs_binary(
      +    name = "@bazel/typescript/tsc_wrapped",
      +    entry_point = "@npm//:node_modules/@bazel/typescript/internal/tsc_wrapped/tsc_wrapped.js",
      +    # Point bazel to your node_modules to find the entry point
      +    node_modules = "//:node_modules",
      +)
      + +

      See https://github.com/bazelbuild/rules_nodejs#dependencies for more information on +managing npm dependencies with Bazel.

      + +

      Customizing the TypeScript compiler binary

      + +

      An example use case is needing to increase the NodeJS heap size used for compilations.

      + +

      Similar to above, you declare your own binary for running tsc_wrapped, e.g.:

      + +
      nodejs_binary(
      +    name = "tsc_wrapped_bin",
      +    entry_point = "@npm//:node_modules/@bazel/typescript/internal/tsc_wrapped/tsc_wrapped.js",
      +    templated_args = [
      +        "--node_options=--max-old-space-size=2048",
      +    ],
      +    data = [
      +        "@npm//protobufjs",
      +        "@npm//source-map-support",
      +        "@npm//tsutils",
      +        "@npm//typescript",
      +        "@npm//@bazel/typescript",
      +    ],
      +)
      + +

      then refer to that target in the compiler attribute of your ts_library rule.

      + +

      Note that nodejs_binary targets generated by npm_install/yarn_install can include data dependencies +on packages which aren’t declared as dependencies. For example, if you use [tsickle] to generate Closure Compiler-compatible JS, then it needs to be a data dependency of tsc_wrapped so that it can be loaded at runtime. + +[tsickle]: https://github.com/angular/tsickle

      + +

      Usage

      + +

      Compiling TypeScript: ts_library

      + +

      The ts_library rule invokes the TypeScript compiler on one compilation unit, +or “library” (generally one directory of source files).

      + +

      Create a BUILD file next to your sources:

      + +
      package(default_visibility=["//visibility:public"])
      +load("//packages/typescript:index.bzl", "ts_library")
      +
      +ts_library(
      +    name = "my_code",
      +    srcs = glob(["*.ts"]),
      +    deps = ["//path/to/other:library"],
      +)
      + +

      If your ts_library target has npm dependencies you can specify these +with fine grained npm dependency targets created by the yarn_install or +npm_install rules:

      + +
      ts_library(
      +    name = "my_code",
      +    srcs = glob(["*.ts"]),
      +    deps = [
      +      "@npm//@types/node",
      +      "@npm//@types/foo",
      +      "@npm//foo",
      +      "//path/to/other:library",
      +    ],
      +)
      + +

      You can also use the @npm//@types target which will include all +packages in the @types scope as dependencies.

      + +

      If you are using self-managed npm dependencies, you can use the +node_modules attribute in ts_library and point it to the +//:node_modules filegroup defined in your root BUILD.bazel file. +You’ll also need to override the compiler attribute if you do this +as the Bazel-managed deps and self-managed cannot be used together +in the same rule.

      + +
      ts_library(
      +    name = "my_code",
      +    srcs = glob(["*.ts"]),
      +    deps = ["//path/to/other:library"],
      +    node_modules = "//:node_modules",
      +    compiler = "//:@bazel/typescript/tsc_wrapped",
      +)
      + +

      To build a ts_library target run:

      + +

      bazel build //path/to/package:target

      + +

      The resulting .d.ts file paths will be printed. Additionally, the .js +outputs from TypeScript will be written to disk, next to the .d.ts files 1.

      + +

      Note that the tsconfig.json file used for compilation should be the same one +your editor references, to keep consistent settings for the TypeScript compiler. +By default, ts_library uses the tsconfig.json file in the workspace root +directory. See the notes about the tsconfig attribute in the ts_library API docs.

      + +
      +

      1 The +declarationDir +compiler option will be silently overwritten if present.

      +
      + +

      Accessing JavaScript outputs

      + +

      The default output of the ts_library rule is the .d.ts files. +This is for a couple reasons:

      + +
        +
      • help ensure that downstream rules which access default outputs will not require +a cascading re-build when only the implementation changes but not the types
      • +
      • make you think about whether you want the devmode (named UMD) or prodmode outputs
      • +
      + +

      You can access the JS output by adding a filegroup rule after the ts_library, +for example

      + +
      ts_library(
      +    name = "compile",
      +    srcs = ["thing.ts"],
      +)
      +
      +filegroup(
      +    name = "thing.js",
      +    srcs = ["compile"],
      +    # Change to es6_sources to get the 'prodmode' JS
      +    output_group = "es5_sources",
      +)
      +
      +my_rule(
      +    name = "uses_js",
      +    deps = ["thing.js"],
      +)
      + +

      Serving TypeScript for development

      + +

      There are two choices for development mode:

      + +
        +
      1. Use the ts_devserver rule to bring up our simple, fast development server. +This is intentionally very simple, to help you get started quickly. However, +since there are many development servers available, we do not want to mirror +their features in yet another server we maintain.
      2. +
      3. Teach your real frontend server to serve files from Bazel’s output directory. +This is not yet documented. Choose this option if you have an existing server +used in development mode, or if your requirements exceed what the +ts_devserver supports. Be careful that your development round-trip stays +fast (should be under two seconds).
      4. +
      + +

      To use ts_devserver, you simply load the rule, and call it with deps that +point to your ts_library target(s):

      + +
      load("//packages/typescript:index.bzl", "ts_devserver", "ts_library")
      +
      +ts_library(
      +    name = "app",
      +    srcs = ["app.ts"],
      +)
      +
      +ts_devserver(
      +    name = "devserver",
      +    # We'll collect all the devmode JS sources from these TypeScript libraries
      +    deps = [":app"],
      +    # This is the path we'll request from the browser, see index.html
      +    serving_path = "/bundle.js",
      +    # The devserver can serve our static files too
      +    static_files = ["index.html"],
      +)
      + +

      The index.html should be the same one you use for production, and it should +load the JavaScript bundle from the path indicated in serving_path.

      + +

      If you don’t have an index.html file, a simple one will be generated by the +ts_devserver.

      + +

      See examples/app in this repository for a working example. To run the +devserver, we recommend you use ibazel:

      + +
      $ ibazel run examples/app:devserver
      + +

      ibazel will keep the devserver program running, and provides a LiveReload +server so the browser refreshes the application automatically when each build +finishes.

      + +

      Writing TypeScript code for Bazel

      + +

      Bazel’s TypeScript compiler has your workspace path mapped, so you can import +from an absolute path starting from your workspace.

      + +

      /WORKSPACE:

      + +
      workspace(name = "myworkspace")
      + +

      /some/long/path/to/deeply/nested/subdirectory.ts:

      + +
      import {thing} from 'myworkspace/place';
      + +

      will import from /place.ts.

      + +

      Since this is an extension to the vanilla TypeScript compiler, editors which use the TypeScript language services to provide code completion and inline type checking will not be able to resolve the modules. In the above example, adding

      + +
      "paths": {
      +    "myworkspace/*": ["*"]
      +}
      + +

      to tsconfig.json will fix the imports for the common case of using absolute paths. +See path mapping for more details on the paths syntax.

      + +

      Similarly, you can use path mapping to teach the editor how to resolve imports +from ts_library rules which set the module_name attribute.

      + +

      Notes

      + +

      If you’d like a “watch mode”, try ibazel.

      + +

      At some point, we plan to release a tool similar to gazelle to generate the +BUILD files from your source code.

      + +

      ts_config

      + +

      Allows a tsconfig.json file to extend another file.

      + +

      Normally, you just give a single tsconfig.json file as the tsconfig attribute +of a ts_library rule. However, if your tsconfig.json uses the extends +feature from TypeScript, then the Bazel implementation needs to know about that +extended configuration file as well, to pass them both to the TypeScript compiler.

      + +
      +ts_config(name, deps, src)
      +
      + +

      ATTRIBUTES

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this target. + Namerequired + +
      deps + Additional tsconfig.json files referenced via extends + List of labelsrequired + +
      src + The tsconfig.json file passed to the TypeScript compiler + Labelrequired + +
      + +

      ts_devserver

      + +

      ts_devserver is a simple development server intended for a quick “getting started” experience.

      + +

      Additional documentation at https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel

      + +
      +ts_devserver(name, additional_root_paths, bootstrap, deps, devserver, devserver_host, entry_module,
      +             port, scripts, serving_path, static_files)
      +
      + +

      ATTRIBUTES

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this target. + Namerequired + +
      additional_root_paths + Additional root paths to serve static_files from. + Paths should include the workspace name such as ["__main__/resources"] + List of stringsoptional + [] +
      bootstrap + Scripts to include in the JS bundle before the module loader (require.js) + List of labelsoptional + [] +
      deps + Targets that produce JavaScript, such as ts_library + List of labelsoptional + [] +
      devserver + Go based devserver executable. + + With cross-platform RBE for OSX & Windows ctx.executable.devserver will be linux as --cpu and + --host_cpu must be overridden to k8. However, we still want to be able to run the devserver on the host + machine so we need to include the host devserver binary, which is ctx.executable.devserver_host, in the + runfiles. For non-RBE and for RBE with a linux host, ctx.executable.devserver & ctx.executable.devserver_host + will be the same binary. + + Defaults to precompiled go binary setup by @bazel/typescript npm package + Labeloptional + //packages/typescript/devserver:devserver +
      devserver_host + Go based devserver executable for the host platform. + Defaults to precompiled go binary setup by @bazel/typescript npm package + Labeloptional + //packages/typescript/devserver:devserver_darwin_amd64 +
      entry_module + The entry_module should be the AMD module name of the entry module such as "__main__/src/index". + ts_devserver concats the following snippet after the bundle to load the application: + require(["entry_module"]); + Stringoptional + "" +
      port + The port that the devserver will listen on. + Integeroptional + 5432 +
      scripts + User scripts to include in the JS bundle before the application sources + List of labelsoptional + [] +
      serving_path + The path you can request from the client HTML which serves the JavaScript bundle. + If you don't specify one, the JavaScript can be loaded at /_/ts_scripts.js + Stringoptional + "/_/ts_scripts.js" +
      static_files + Arbitrary files which to be served, such as index.html. + They are served relative to the package where this rule is declared. + List of labelsoptional + [] +
      + +

      ts_library

      + +

      ts_library type-checks and compiles a set of TypeScript sources to JavaScript.

      + +

      It produces declarations files (.d.ts) which are used for compiling downstream +TypeScript targets and JavaScript for the browser and Closure compiler.

      + +
      +ts_library(name, angular_assets, compiler, data, deps, devmode_module, devmode_target,
      +           expected_diagnostics, generate_externs, internal_testing_type_check_dependencies,
      +           module_name, module_root, node_modules, prodmode_module, prodmode_target, runtime,
      +           runtime_deps, srcs, supports_workers, tsconfig, tsickle_typed, use_angular_plugin)
      +
      + +

      ATTRIBUTES

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionTypeMandatoryDefault
      name + A unique name for this target. + Namerequired + +
      angular_assets + Additional files the Angular compiler will need to read as inputs. + Includes .css and .html files + List of labelsoptional + [] +
      compiler + Sets a different TypeScript compiler binary to use for this library. +For example, we use the vanilla TypeScript tsc.js for bootstrapping, +and Angular compilations can replace this with ngc. + +The default ts_library compiler depends on the //@bazel/typescript +target which is setup for projects that use bazel managed npm deps and +install the @bazel/typescript npm package. + Labeloptional + @build_bazel_rules_typescript//internal:tsc_wrapped_bin +
      data + List of labelsoptional + [] +
      deps + Compile-time dependencies, typically other ts_library targets + List of labelsoptional + [] +
      devmode_module + Set the typescript module compiler option for devmode output. + +This value will override the module option in the user supplied tsconfig. + Stringoptional + "umd" +
      devmode_target + Set the typescript target compiler option for devmode output. + +This value will override the target option in the user supplied tsconfig. + Stringoptional + "es2015" +
      expected_diagnostics + List of stringsoptional + [] +
      generate_externs + Booleanoptional + True +
      internal_testing_type_check_dependencies + Testing only, whether to type check inputs that aren't srcs. + Booleanoptional + False +
      module_name + Stringoptional + "" +
      module_root + Stringoptional + "" +
      node_modules + The npm packages which should be available during the compile. + +The default value of //typescript:typescript__typings is setup +for projects that use bazel managed npm deps. This default is in place +since ts_library will always depend on at least the typescript +default libs which are provided by //typescript:typescript__typings. + +This attribute is DEPRECATED. As of version 0.18.0 the recommended +approach to npm dependencies is to use fine grained npm dependencies +which are setup with the yarn_install or npm_install rules. + +For example, in targets that used a //:node_modules filegroup, + + +
      ts_library(
      +    name = "my_lib",
      +    ...
      +    node_modules = "//:node_modules",
      +)
      + + +which specifies all files within the //:node_modules filegroup +to be inputs to the my_lib. Using fine grained npm dependencies, +my_lib is defined with only the npm dependencies that are +needed: + + +
      ts_library(
      +    name = "my_lib",
      +    ...
      +    deps = [
      +        "@npm//@types/foo",
      +        "@npm//@types/bar",
      +        "@npm//foo",
      +        "@npm//bar",
      +        ...
      +    ],
      +)
      + + +In this case, only the listed npm packages and their +transitive deps are includes as inputs to the my_lib target +which reduces the time required to setup the runfiles for this +target (see https://github.com/bazelbuild/bazel/issues/5153). +The default typescript libs are also available via the node_modules +default in this case. + +The @npm external repository and the fine grained npm package +targets are setup using the yarn_install or npm_install rule +in your WORKSPACE file: + + +
      yarn_install(
      +    name = "npm",
      +    package_json = "//:package.json",
      +    yarn_lock = "//:yarn.lock",
      +)
      + +
      Labeloptional + @npm//typescript:typescript__typings +
      prodmode_module + Set the typescript module compiler option for prodmode output. + +This value will override the module option in the user supplied tsconfig. + Stringoptional + "esnext" +
      prodmode_target + Set the typescript target compiler option for prodmode output. + +This value will override the target option in the user supplied tsconfig. + Stringoptional + "es2015" +
      runtime + Stringoptional + "browser" +
      runtime_deps + The dependencies of this attribute must provide: JsInfo + List of labelsoptional + [] +
      srcs + The TypeScript source files to compile. + List of labelsrequired + +
      supports_workers + Intended for internal use only. + +Allows you to disable the Bazel Worker strategy for this library. +Typically used together with the "compiler" setting when using a +non-worker aware compiler binary. + Booleanoptional + True +
      tsconfig + A tsconfig.json file containing settings for TypeScript compilation. +Note that some properties in the tsconfig are governed by Bazel and will be +overridden, such as target and module. + +The default value is set to //:tsconfig.json by a macro. This means you must +either: + +- Have your tsconfig.json file in the workspace root directory +- Use an alias in the root BUILD.bazel file to point to the location of tsconfig: + alias(name="tsconfig.json", actual="//path/to:tsconfig-something.json") +- Give an explicit tsconfig attribute to all ts_library targets + Labeloptional + None +
      tsickle_typed + If using tsickle, instruct it to translate types to ClosureJS format + Booleanoptional + True +
      use_angular_plugin + Run the Angular ngtsc compiler under ts_library + Booleanoptional + False +
      + +

      ts_project

      + +

      Compiles one TypeScript project using tsc --project

      + +

      This is a drop-in replacement for the tsc rule automatically generated for the “typescript” +package, typically loaded from @npm//typescript:index.bzl. Unlike bare tsc, this rule understands +the Bazel interop mechanism (Providers) so that this rule works with others that produce or consume +TypeScript typings (.d.ts files).

      + +

      Unlike ts_library, this rule is the thinnest possible layer of Bazel interoperability on top +of the TypeScript compiler. It shifts the burden of configuring TypeScript into the tsconfig.json file. +See https://github.com/bazelbuild/rules_nodejs/blob/master/docs/TypeScript.md#alternatives +for more details about the trade-offs between the two rules.

      + +

      Some TypeScript options affect which files are emitted, and Bazel wants to know these ahead-of-time. +So several options from the tsconfig file must be mirrored as attributes to ts_project. +See https://www.typescriptlang.org/v2/en/tsconfig for a listing of the TypeScript options.

      + +

      Any code that works with tsc should work with ts_project with a few caveats:

      + +
        +
      • Bazel requires that the outDir (and declarationDir) be set to +bazel-out/[target architecture]/bin/path/to/package +so we override whatever settings appear in your tsconfig.
      • +
      • Bazel expects that each output is produced by a single rule. +Thus if you have two ts_project rules with overlapping sources (the same .ts file +appears in more than one) then you get an error about conflicting .js output +files if you try to build both together. +Worse, if you build them separately then the output directory will contain whichever +one you happened to build most recently. This is highly discouraged.
      • +
      + +
      +

      Note: in order for TypeScript to resolve relative references to the bazel-out folder, +we recommend that the base tsconfig contain a rootDirs section that includes all +possible locations they may appear.

      + +

      We hope this will not be needed in some future release of TypeScript. +Follow https://github.com/microsoft/TypeScript/issues/37257 for more info.

      + +

      For example, if the base tsconfig file relative to the workspace root is +path/to/tsconfig.json then you should configure like:

      + +
      +
      > "compilerOptions": {
      +>     "rootDirs": [
      +>         ".",
      +>         "../../bazel-out/darwin-fastbuild/bin/path/to",
      +>         "../../bazel-out/k8-fastbuild/bin/path/to",
      +>         "../../bazel-out/x64_windows-fastbuild/bin/path/to",
      +>         "../../bazel-out/darwin-dbg/bin/path/to",
      +>         "../../bazel-out/k8-dbg/bin/path/to",
      +>         "../../bazel-out/x64_windows-dbg/bin/path/to",
      +>     ]
      +> }
      +> 
      + +

      Issues when running non-sandboxed

      + +

      When using a non-sandboxed spawn strategy (which is the default on Windows), you may +observe these problems which require workarounds:

      + +

      1) Bazel deletes outputs from the previous execution before running tsc. + This causes a problem with TypeScript’s incremental mode: if the .tsbuildinfo file + is not known to be an output of the rule, then Bazel will leave it in the output + directory, and when tsc runs, it may see that the outputs written by the prior + invocation are up-to-date and skip the emit of these files. This will cause Bazel + to intermittently fail with an error that some outputs were not written. + This is why we depend on composite and/or incremental attributes to be provided, + so we can tell Bazel to expect a .tsbuildinfo output to ensure it is deleted before a + subsequent compilation. + At present, we don’t do anything useful with the .tsbuildinfo output, and this rule + does not actually have incremental behavior. Deleting the file is actually + counter-productive in terms of TypeScript compile performance. + Follow https://github.com/bazelbuild/rules_nodejs/issues/1726

      + +

      2) When using Project References, TypeScript will expect to verify that the outputs of referenced + projects are up-to-date with respect to their inputs. + (This is true even without using the --build option). + When using a non-sandboxed spawn strategy, tsc can read the sources from other ts_project + rules in your project, and will expect that the tsconfig.json file for those references will + indicate where the outputs were written. However the outDir is determined by this Bazel rule so + it cannot be known from reading the tsconfig.json file. + This problem is manifested as a TypeScript diagnostic like + error TS6305: Output file '/path/to/execroot/a.d.ts' has not been built from source file '/path/to/execroot/a.ts'. + As a workaround, you can give the Windows “fastbuild” output directory as the outDir in your tsconfig file. + On other platforms, the value isn’t read so it does no harm. + See https://github.com/bazelbuild/rules_nodejs/tree/stable/packages/typescript/test/ts_project as an example. + We hope this will be fixed in a future release of TypeScript; + follow https://github.com/microsoft/TypeScript/issues/37378

      + +

      3) When TypeScript encounters an import statement, it adds the source file resolved by that reference + to the program. However you may have included that source file in a different project, so this causes + the problem mentioned above where a source file is in multiple programs. + (Note, if you use Project References this is not the case, TS will know the referenced + file is part of the other program.) + This will result in duplicate emit for the same file, which produces an error + since the files written to the output tree are read-only. + Workarounds include using using Project References, or simply grouping the whole compilation + into one program (if this doesn’t exceed your time budget).

      + +
      +ts_project(name, tsconfig, srcs, args, deps, extends, declaration, source_map, declaration_map,
      +           composite, incremental, emit_declaration_only, tsc, validate, declaration_dir, out_dir,
      +           root_dir, kwargs)
      +
      + +

      PARAMETERS

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionDefault
      name + A name for the target. + + We recommend you use the basename (no .json extension) of the tsconfig file that should be compiled. + + "tsconfig" +
      tsconfig + Label of the tsconfig.json file to use for the compilation. + + By default, we add .json to the name attribute. + + None +
      srcs + List of labels of TypeScript source files to be provided to the compiler. + + If absent, defaults to **/*.ts[x] (all TypeScript files in the package). + + None +
      args + List of strings of additional command-line arguments to pass to tsc. + + [] +
      deps + List of labels of other rules that produce TypeScript typings (.d.ts files) + + [] +
      extends + List of labels of tsconfig file(s) referenced in extends section of tsconfig. + + Must include any tsconfig files "chained" by extends clauses. + + None +
      declaration + if the declaration bit is set in the tsconfig. + Instructs Bazel to expect a .d.ts output for each .ts source. + + False +
      source_map + if the sourceMap bit is set in the tsconfig. + Instructs Bazel to expect a .js.map output for each .ts source. + + False +
      declaration_map + if the declarationMap bit is set in the tsconfig. + Instructs Bazel to expect a .d.ts.map output for each .ts source. + + False +
      composite + if the composite bit is set in the tsconfig. + Instructs Bazel to expect a .tsbuildinfo output and a .d.ts output for each .ts source. + + False +
      incremental + if the incremental bit is set in the tsconfig. + Instructs Bazel to expect a .tsbuildinfo output. + + False +
      emit_declaration_only + if the emitDeclarationOnly bit is set in the tsconfig. + Instructs Bazel *not* to expect .js or .js.map outputs for .ts sources. + + False +
      tsc + Label of the TypeScript compiler binary to run. + + For example, tsc = "@my_deps//typescript/bin:tsc" + Or you can pass a custom compiler binary instead. + + None +
      validate + boolean; whether to check that the tsconfig settings match the attributes. + + True +
      declaration_dir + a string specifying a subdirectory under the bazel-out folder where generated declaration + outputs are written. Equivalent to the TypeScript --declarationDir option. + By default declarations are written to the out_dir. + + None +
      out_dir + a string specifying a subdirectory under the bazel-out folder where outputs are written. + Equivalent to the TypeScript --outDir option. + Note that Bazel always requires outputs be written under a subdirectory matching the input package, + so if your rule appears in path/to/my/package/BUILD.bazel and out_dir = "foo" then the .js files + will appear in bazel-out/[arch]/bin/path/to/my/package/foo/*.js. + By default the out_dir is '.', meaning the packages folder in bazel-out. + + None +
      root_dir + a string specifying a subdirectory under the input package which should be consider the + root directory of all the input files. + Equivalent to the TypeScript --rootDir option. + By default it is '.', meaning the source directory where the BUILD file lives. + + None +
      kwargs + passed through to underlying rule, allows eg. visibility, tags + + +
      + + +
      +
      + + +
      +
      + +
      +
      +
      +
      +

      © 2020 Google

      +
      +
      +
      + +
      + + + + + + + + + + + + + + + diff --git a/docs/TypeScript.md b/docs/TypeScript.md index 4654d12226..7b4296238d 100755 --- a/docs/TypeScript.md +++ b/docs/TypeScript.md @@ -1,10 +1,11 @@ --- title: TypeScript layout: default -stylesheet: docs +toc: true +nav: rule --- + + + + + + + + + - - - \ No newline at end of file + // Highlight the current page on the sidebar nav. + highlightCurrentSidebarNav(); + }); + diff --git a/docs/_includes/head.html b/docs/_includes/head.html index 4171d3d696..09ef090dc2 100644 --- a/docs/_includes/head.html +++ b/docs/_includes/head.html @@ -1,29 +1,33 @@ - - - - {{ page.title }} - {{site.github.project_title}} + + + + + - + rules_nodejs - {{ page.title }} - + + - - - - - + + - + + - - - - + + + + + + + + + + + diff --git a/docs/_includes/header.html b/docs/_includes/header.html index 685111b6d3..03779a7715 100644 --- a/docs/_includes/header.html +++ b/docs/_includes/header.html @@ -1,21 +1,24 @@ -
      -
      - {{ page.title }} -
      - -
      - -
      - -
      -
      +
      - {% include drawer.html %} \ No newline at end of file + + + +
  • + diff --git a/docs/_includes/sidenav.html b/docs/_includes/sidenav.html new file mode 100644 index 0000000000..4d8fb385f5 --- /dev/null +++ b/docs/_includes/sidenav.html @@ -0,0 +1,39 @@ + diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html index c8dda860cb..cfa020852f 100644 --- a/docs/_layouts/default.html +++ b/docs/_layouts/default.html @@ -1,25 +1,42 @@ ---- -stylesheet: docs ---- - - {% include head.html %} - -
    - {% include header.html %} + +{% include head.html %} + +{% include header.html %} -
    -
    - {% if page.title %} -

    {{ page.title }}

    - {% endif %} +
    +
    + {% include sidenav.html %} + +
    +
    + {{ content }} +
    +
    - {{ content }} -
    -
    - {% include footer.html %} -
    + - - \ No newline at end of file +
    +
    + +{% include footer.html %} + + + diff --git a/docs/_layouts/home.html b/docs/_layouts/home.html deleted file mode 100644 index 110b6375ec..0000000000 --- a/docs/_layouts/home.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -stylesheet: docs -title: rules_nodejs ---- - - - {% include head.html %} - -
    - {% include header.html %} - -
    -
    - - {{ content }} - -
    -
    - {% include footer.html %} -
    -
    - - \ No newline at end of file diff --git a/docs/changing-rules.html b/docs/changing-rules.html new file mode 100755 index 0000000000..ae796470fe --- /dev/null +++ b/docs/changing-rules.html @@ -0,0 +1,300 @@ + + + + + + + + + + rules_nodejs - Making changes to rules_nodejs + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    +
    +

    Making changes to rules_nodejs

    + +

    One advantage of open-source software is that you can make your own changes that suit your needs.

    + +

    The packages published to npm and GitHub differ from the sources in this repo. The packages have only runtime bazel dependencies, but the sources depend on development dependencies. For example, the @bazel_skylib library is a development-time transitive dependency, while an npm package would have that dependency statically linked in.

    + +
    +

    This differs from much of the Bazel ecosystem, where you are expected to build the whole transitive toolchain from sources.

    +
    + +

    If you have a small change, it’s easiest to just patch the distributed artifacts rather than build from source. However if you’re doing active development in rules_nodejs or have a policy of not depending on release artifacts, it’s possible to depend directly on sources. This is not yet documented; file an issue on our repo if you think you need this.

    + +

    Patching the npm packages

    + +

    The pattern we use most commonly is to add a postinstall hook to your package.json that patches files after they’ve been fetched from npm.

    + +

    See /tools/postinstall-patches.js in the Angular repo for an example.

    + +

    Patching the built-in release

    + +

    rules_nodejs has a distribution format which is a tgz published to GitHub, and this can make it tricky to make casual changes without forking the project and building your own release artifacts.

    + +

    Bazel has a handy patching mechanism that lets you easily apply a local patch to the release artifact for built-in rules: the patches attribute to http_archive.

    + +

    First, make your changes in a clone of the rules_nodejs repo. Export a patch file simply using git diff:

    + +
    git diff > my.patch
    +
    + +

    Then copy the patch file somewhere in your repo and point to it from your WORKSPACE file:

    + +
    http_archive(
    +    name = "build_bazel_rules_nodejs",
    +    patch_args = ["-p1"],
    +    patches = ["//path/to/my.patch"],
    +    sha256 = "6d4edbf28ff6720aedf5f97f9b9a7679401bf7fca9d14a0fff80f644a99992b4",
    +    urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.32.2/rules_nodejs-0.32.2.tar.gz"],
    +)
    +
    + +
    +
    + + +
    +
    + +
    +
    +
    +
    +

    © 2020 Google

    +
    +
    +
    + +
    + + + + + + + + + + + + + + + diff --git a/docs/changing-rules.md b/docs/changing-rules.md new file mode 100644 index 0000000000..499a7a9ff3 --- /dev/null +++ b/docs/changing-rules.md @@ -0,0 +1,47 @@ +--- +title: Making changes to rules_nodejs +layout: default +toc: true +--- + +# Making changes to rules_nodejs + +One advantage of open-source software is that you can make your own changes that suit your needs. + +The packages published to npm and GitHub differ from the sources in this repo. The packages have only runtime bazel dependencies, but the sources depend on development dependencies. For example, the `@bazel_skylib` library is a development-time transitive dependency, while an npm package would have that dependency statically linked in. + +> This differs from much of the Bazel ecosystem, where you are expected to build the whole transitive toolchain from sources. + +If you have a small change, it's easiest to just patch the distributed artifacts rather than build from source. However if you're doing active development in rules_nodejs or have a policy of not depending on release artifacts, it's possible to depend directly on sources. This is not yet documented; file an issue on our repo if you think you need this. + +## Patching the npm packages + +The pattern we use most commonly is to add a `postinstall` hook to your `package.json` that patches files after they've been fetched from npm. + +See `/tools/postinstall-patches.js` in the [Angular repo] for an example. + +[Angular repo]: https://github.com/angular/angular/tree/master/tools/postinstall-patches.js + +## Patching the built-in release + +rules_nodejs has a distribution format which is a tgz published to GitHub, and this can make it tricky to make casual changes without forking the project and building your own release artifacts. + +Bazel has a handy patching mechanism that lets you easily apply a local patch to the release artifact for built-in rules: the `patches` attribute to `http_archive`. + +First, make your changes in a clone of the rules_nodejs repo. Export a patch file simply using `git diff`: + +```sh +git diff > my.patch +``` + +Then copy the patch file somewhere in your repo and point to it from your `WORKSPACE` file: + +```python +http_archive( + name = "build_bazel_rules_nodejs", + patch_args = ["-p1"], + patches = ["//path/to/my.patch"], + sha256 = "6d4edbf28ff6720aedf5f97f9b9a7679401bf7fca9d14a0fff80f644a99992b4", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.32.2/rules_nodejs-0.32.2.tar.gz"], +) +``` diff --git a/docs/css/BUILD.bazel b/docs/css/BUILD.bazel new file mode 100644 index 0000000000..89602d3b46 --- /dev/null +++ b/docs/css/BUILD.bazel @@ -0,0 +1,15 @@ +load("@io_bazel_rules_sass//:defs.bzl", "sass_binary", "sass_library") + +sass_library( + name = "scss", + srcs = glob(["_*.scss"]), +) + +sass_binary( + name = "css", + src = "main.scss", + visibility = ["//docs:__pkg__"], + deps = [ + ":scss", + ], +) diff --git a/docs/css/_be.scss b/docs/css/_be.scss new file mode 100644 index 0000000000..875c603ef2 --- /dev/null +++ b/docs/css/_be.scss @@ -0,0 +1,93 @@ +// Build Encyclopedia and Starlark Library + +pre.rule-signature { + white-space: normal; + word-wrap: break-word; + word-break: normal; +} + +colgroup { + .col-param { + width: 25%; + } + + .col-description { + width: 75%; + } +} + +$table-params-border-color: #81c784; +$table-params-head-color: #fff; +$table-params-body-bg-color: #e8f5e9; + +.table-params { + border: 1px solid $table-params-border-color; + + thead > tr > th { + color: $table-params-head-color; + border: 1px solid $table-params-border-color; + background-color: $table-params-border-color; + } + + tbody > tr > td { + background-color: $table-params-body-bg-color; + border: 1px solid $table-params-border-color; + } +} + +$table-implicit-border-color: #c0c0c0; +$table-implicit-head-color: #fff; +$table-implicit-body-bg-color: #f0f0f0; + +.table-implicit { + border: 1px solid $table-implicit-border-color; + + thead > tr > th { + color: $table-implicit-head-color; + border: 1px solid $table-implicit-border-color; + background-color: $table-implicit-border-color; + } + + tbody > tr > td { + background-color: $table-implicit-body-bg-color; + border: 1px solid $table-implicit-border-color; + } +} + + +$toc-border-color: #c8e6c9; +$toc-color: #757575; + +.toc { + border-left: 4px solid $toc-border-color; + padding-left: 18px; + margin-bottom: 20px; + + h1, + h2 { + font-size: 24px; + color: $toc-color; + margin-bottom: 12px; + } + + ul { + list-style: none; + padding-left: 0; + margin-top: 0; + + li { + line-height: 36px; + font-size: 16px; + font-weight: 400; + } + } +} + +// Command-line Reference +dt { + margin-top: .5em; +} + +dd { + margin-left: 2em; +} diff --git a/docs/css/_docs.scss b/docs/css/_docs.scss new file mode 100644 index 0000000000..ba92b4808f --- /dev/null +++ b/docs/css/_docs.scss @@ -0,0 +1,7 @@ +.gh-edit { + padding-top: 0px; +} + +.gh-edit.default-hidden { + visibility: hidden; +} diff --git a/docs/css/_footer.scss b/docs/css/_footer.scss new file mode 100644 index 0000000000..26e6319a8d --- /dev/null +++ b/docs/css/_footer.scss @@ -0,0 +1,25 @@ +// Footer styles + +$footer-background: #424242; +$footer-color: #fff; +$footer-link-color: #e0e0e0; + +.footer { + background-color: $footer-background; + color: $footer-color; + padding: 20px; + + .text-muted { + color: $footer-link-color; + } + + a { + color: $footer-link-color; + + &:hover, + &:focus { + color: $footer-color; + text-decoration: none; + } + } +} diff --git a/docs/css/_navbar.scss b/docs/css/_navbar.scss new file mode 100644 index 0000000000..42be12e0e1 --- /dev/null +++ b/docs/css/_navbar.scss @@ -0,0 +1,96 @@ +// Navbar styles +$navbar-bg-color: $bazel-green; +$navbar-hover-bg-color: $bazel-green-light; +$navbar-color: $color-on-bazel-green; +$navbar-hover-color: #444; +$navbar-input-bg-color: $bazel-green-light; +$navbar-input-focus-bg-color: $color-on-bazel-green; +$navbar-input-border-color: $bazel-green; + +.navbar-inverse { + margin-bottom: 0; + background-color: $navbar-bg-color; + border-bottom: 1px solid $navbar-bg-color; + + .navbar-brand { + .navbar-logo { + height: 22px; + } + } + + a.navbar-brand { + color: $navbar-color; + + &:focus, + &:hover { + color: $navbar-hover-color; + background-color: $navbar-bg-color; + } + } + + .navbar-nav > li > a { + color: $navbar-color; + + &:focus, + &:hover { + color: $navbar-hover-color; + background-color: $navbar-hover-bg-color; + } + + &.nav-icon { + font-size: 18px; + } + } + + .navbar-nav > li.active > a { + background-color: $navbar-hover-bg-color; + + &:focus, + &:hover { + background-color: $navbar-hover-bg-color; + } + } + + .navbar-form { + border-color: $navbar-bg-color; + + .input-sm { + margin-top: 2px; + } + + input[type="search"] { + background-color: $navbar-input-bg-color; + border-color: $navbar-input-border-color; + + &::placeholder { + color: $navbar-color; + } + + &:focus, + &:active { + background-color: $navbar-input-focus-bg-color; + } + } + } + + .navbar-toggle { + border: 1px solid $navbar-bg-color; + + &.active, + &:focus, + &:hover { + background-color: $navbar-hover-bg-color; + } + } + + .navbar-collapse { + border-color: $navbar-bg-color; + } +} + +@media (max-width: 768px) { + #cse-search-box { + margin-top: 0; + margin-bottom: 0; + } +} diff --git a/docs/css/_sidebar.scss b/docs/css/_sidebar.scss new file mode 100644 index 0000000000..1990a94774 --- /dev/null +++ b/docs/css/_sidebar.scss @@ -0,0 +1,166 @@ +$sidebar-border-color: #dee2e6; + +$sidebar-hover-border-color: #66bb6a; + +.sidebar { + height: 99.9%; + border-right: 1px solid $sidebar-border-color; + background-color: rgba(67,160,71,.03); + padding-top: 40px; + padding-left: 1.5rem; + + // override parent row padding-left. bootstrap's default is 15px. + margin-left: -15px; + + li { + font-size: $font-size-base * .95; + } + + h4 { + padding-right: 1rem; + } + + ul.sidebar-nav { + list-style-type: none; + padding: 0; + + li { + &.sidebar-nav-heading { + padding: 10px 0; + margin: 0; + display: block; + font-size: 16px; + font-weight: $font-weight-light; + } + + ul { + li { + a { + color: #495057; + } + } + } + + a { + padding: 4px 1rem 4px 0; + display: block; + color: #222; + font-weight: $font-weight-normal; + + &:focus { + text-decoration: none; + } + + &:active, + &:hover { + border-right: 4px solid $sidebar-hover-border-color; + text-decoration: none; + } + + .caret { + float: right; + margin-top: 8px; + margin-right: 0px; + } + + } + + &.active { + a { + border-right: 4px solid $sidebar-hover-border-color; + font-weight: $font-weight-bold; + } + } + } + + ul.sidebar-nav { + padding-left: 10px; + } + } + + select { + padding: 3px 4px; + border: 2px solid $sidebar-border-color; + border-radius: 3px; + width: 80%; + } +} + +.sidebar-toggle { + margin-top: 50px; +} + +@media (max-width: 991px) { + .right-sidebar { + display: none; + } +} + +@media (min-width: 992px) { + .sidebar-toggle { + display: none; + } + + .sidebar { + &.collapse { + display: block; + } + } + + .sticky-sidebar { + @supports (position: sticky) { + position: sticky; + top: 50px; // equals height of navbar. + height: 100vh; + overflow-y: auto; + } + } +} + +.right-sidebar { + border-left: 1px solid $sidebar-border-color; + padding-top: 40px; + padding-bottom: 1rem; + + .gh-links { + padding-left: 22px; + list-style-type: none; + li { + padding-bottom: .4rem; + } + } + + a { + font-weight: $font-weight-normal; + } + + .toc-h2 { + padding-left: 0; + list-style-type: none; + + ul { + padding-left: 0; + } + + li { + margin-top: .3rem; + line-height: 1.7; + font-size: $font-size-base * .95; + a { + color: #444; + } + } + } + + .toc-h3 { + padding-left: 1em; + list-style-type: none; + + li { + line-height: 1.7; + a { + color: #666; + } + } + } +} diff --git a/docs/css/_styles.scss b/docs/css/_styles.scss new file mode 100644 index 0000000000..47161b46fa --- /dev/null +++ b/docs/css/_styles.scss @@ -0,0 +1,254 @@ +// Base styles for all Bazel web assets. +// +// For consistency, this file should be identical across docs.bazel.build, +// blog.bazel.build and www.bazel.build. +// TODO(https://github.com/bazelbuild/bazel/issues/10793): Extract into single source of truth. + +// Heading sizes + +$font-size-base: 14px !default; + +$h1-font-size: $font-size-base * 2.25 !default; +$h2-font-size: $font-size-base * 2 !default; +$h3-font-size: $font-size-base * 1.5 !default; +$h4-font-size: $font-size-base * 1.35 !default; +$h5-font-size: $font-size-base * 1.15 !default; +$h6-font-size: $font-size-base !default; + +// Font weights + +$font-weight-light: 300 !default; +$font-weight-normal: 400 !default; +$font-weight-medium: 500 !default; +$font-weight-bold: 700 !default; + +$font-weight-body-text: $font-weight-normal !default; +$headings-font-weight: $font-weight-medium !default; + +// Bazel logo colors +$bazel-green: #43a047; +$bazel-green-light: #76d275; +$bazel-green-dark-left: #00701a; +$bazel-green-dark-right: #004300; +$color-on-bazel-green: #fff; + +$body-font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, +sans-serif; +$code-font-family: 'Monaco', 'Source Code Pro', monospace; + +$link-color: $bazel-green-dark-left; +$link-hover-color: lighten($link-color, 20%); +$well-color: #eee; +$code-color: #000; +$text-color: #000; + +$vpad: 0px; + +$table-bg: #fff; +$table-cell-padding: 5px; +$table-border-color: $bazel-green; +$text-muted: $color-on-bazel-green; +$line-height-base: 1.5; +$line-height-computed: 1.5; + +html { + position: relative; + min-height: 100%; + font-size: 100%; +} + +body { + padding-top: 50px; + color: $text-color; + font-family: $body-font-family; + line-height: $line-height-base; +} + +a { + color: $link-color; + font-weight: $font-weight-medium; + + &:hover, + &:focus { + color: $link-hover-color; + } + + code { + color: $link-color; + } +} + +h1, +h2, +h3, +h4, +h5, +h6 { + color: $text-color; + margin-top: 2rem; + margin-bottom: 1rem; +} + +h1 code, +h2 code, +h3 code, +h4 code, +h5 code, +h6 code { + color: $text-color; + background: transparent; +} + +h1 { + font-size: $h1-font-size; + font-weight: $font-weight-bold; +} + +h2 { + font-size: $h2-font-size; + + code { + font-size: 24px; + } +} + +h3 { + font-size: $h3-font-size; + + code { + font-size: 20px; + } +} + +h4 { + font-size: $h4-font-size; + + code { + font-size: 18px; + } +} + +h5 { + font-size: $h5-font-size; +} + +h6 { + font-size: $h6-font-size; +} + +p, +li { + font-size: $font-size-base; + line-height: $line-height-base; +} + +pre { + padding: 8px 16px; + margin: 8px 0; + font-family: $code-font-family; + background-color: $well-color; + border: 0; + font-size: 100%; + line-height: 20px; + color: $code-color; + border-radius: 6px; + box-shadow: 1px 1px 5px #aaa; +} + +code { + font-family: $code-font-family; + font-size: 13px; + background-color: $well-color; + color: $code-color; +} + + +// Imitate material design buttons +.btn-lg { + font-size: 14px; + text-transform: uppercase; +} + +$md-shadow-1: rgba(0, 0, 0, .14); +$md-shadow-2: rgba(0, 0, 0, .2); +$md-shadow-3: rgba(0, 0, 0, .12); + + +@media (min-width: 768px) { + .container { + width: 100%; + max-width: 100%; + } +} + +@media (min-width: 992px) { + .content { + max-width: 100%; + width: 100%; + } +} + +.content { + overflow: auto; + padding: 40px 10px; + p { + line-height: 22px; + margin-bottom: 1rem; + } +} + +.btn-success { + border-radius: 2px; + box-shadow: 0 2px 2px 0 $md-shadow-1, 0 3px 1px -2px $md-shadow-2, 0 1px 5px 0 $md-shadow-3; + border: 0; +} + +.well { + background-color: $well-color; + border-color: $well-color; + box-shadow: none; +} + +// Shared +.vpad { + padding-top: $vpad; +} + +.page-title-bar { + background-color: $bazel-green-light; + padding-top: 20px; + padding-bottom: 20px; + + h1, + h2, + h3, + h4, + h5, + h6 { + margin: 8px 0 4px; + color: $color-on-bazel-green; + } +} + +.gsc-control-cse { + *, + *::before, + *::after { + -webkit-box-sizing: content-box !important; + -moz-box-sizing: content-box !important; + box-sizing: content-box !important; + } +} + +// Used for the Command-line Reference flag anchors. Linkifying the flag name +// causes it to turn $link-color (green), but we turn it red here to be consistent +// with the rest of the code block. +dd > code > a, +dl > dt > code > a { + color: $code-color; +} + +dl > dt { + margin-top: 1.5rem; + margin-bottom: .5rem; +} diff --git a/docs/css/_syntax.scss b/docs/css/_syntax.scss new file mode 100644 index 0000000000..56f2c787a1 --- /dev/null +++ b/docs/css/_syntax.scss @@ -0,0 +1,89 @@ +// +// Copyright 2015 Google +// +// Generated using Base16 Builder +// (https://github.com/chriskempson/base16-builder) + +$base00: #212121; // ---- +$base01: #424242; // --- +$base02: #616161; // -- +$base03: #757575; // - +$base04: #9e9e9e; // + +$base05: #bdbdbd; // ++ +$base06: #e0e0e0; // +++ +$base07: #eee; // ++++ + +$base08: #f44336; // red +$base09: #ff9800; // orange +$base0A: #ffc107; // yellow +$base0B: #4caf50; // green +$base0C: #009688; // aqua +$base0D: #2196f3; // blue +$base0E: #9c27b0; // purple +$base0F: #795548; // brown + +.highlight .hll { background-color: $base06 } +.highlight { background: $base07; color: $base00 } +.highlight .c { color: $base04 } // Comment +.highlight .err { color: $base08 } // Error +.highlight .k { color: $base0E } // Keyword +.highlight .l { color: $base09 } // Literal +.highlight .n { color: $base00 } // Name +.highlight .o { color: $base0C } // Operator +.highlight .p { color: $base00 } // Punctuation +.highlight .cm { color: $base04 } // Comment.Multiline +.highlight .cp { color: $base04 } // Comment.Preproc +.highlight .c1 { color: $base04 } // Comment.Single +.highlight .cs { color: $base04 } // Comment.Special +.highlight .gd { color: $base08 } // Generic.Deleted +.highlight .ge { font-style: italic } // Generic.Emph +.highlight .gh { color: $base00; font-weight: bold } // Generic.Heading +.highlight .gi { color: $base0B } // Generic.Inserted +.highlight .gp { color: $base04; font-weight: bold } // Generic.Prompt +.highlight .gs { font-weight: bold } // Generic.Strong +.highlight .gu { color: $base0C; font-weight: bold } // Generic.Subheading +.highlight .kc { color: $base0E } // Keyword.Constant +.highlight .kd { color: $base0E } // Keyword.Declaration +.highlight .kn { color: $base0C } // Keyword.Namespace +.highlight .kp { color: $base0E } // Keyword.Pseudo +.highlight .kr { color: $base0E } // Keyword.Reserved +.highlight .kt { color: $base0A } // Keyword.Type +.highlight .ld { color: $base0B } // Literal.Date +.highlight .m { color: $base09 } // Literal.Number +.highlight .s { color: $base0B } // Literal.String +.highlight .na { color: $base0D } // Name.Attribute +.highlight .nb { color: $base00 } // Name.Builtin +.highlight .nc { color: $base0A } // Name.Class +.highlight .no { color: $base08 } // Name.Constant +.highlight .nd { color: $base0C } // Name.Decorator +.highlight .ni { color: $base00 } // Name.Entity +.highlight .ne { color: $base08 } // Name.Exception +.highlight .nf { color: $base0D } // Name.Function +.highlight .nl { color: $base00 } // Name.Label +.highlight .nn { color: $base0A } // Name.Namespace +.highlight .nx { color: $base0D } // Name.Other +.highlight .py { color: $base00 } // Name.Property +.highlight .nt { color: $base0C } // Name.Tag +.highlight .nv { color: $base08 } // Name.Variable +.highlight .ow { color: $base0C } // Operator.Word +.highlight .w { color: $base00 } // Text.Whitespace +.highlight .mf { color: $base09 } // Literal.Number.Float +.highlight .mh { color: $base09 } // Literal.Number.Hex +.highlight .mi { color: $base09 } // Literal.Number.Integer +.highlight .mo { color: $base09 } // Literal.Number.Oct +.highlight .sb { color: $base0B } // Literal.String.Backtick +.highlight .sc { color: $base00 } // Literal.String.Char +.highlight .sd { color: $base04 } // Literal.String.Doc +.highlight .s2 { color: $base0B } // Literal.String.Double +.highlight .se { color: $base09 } // Literal.String.Escape +.highlight .sh { color: $base0B } // Literal.String.Heredoc +.highlight .si { color: $base09 } // Literal.String.Interpol +.highlight .sx { color: $base0B } // Literal.String.Other +.highlight .sr { color: $base0B } // Literal.String.Regex +.highlight .s1 { color: $base0B } // Literal.String.Single +.highlight .ss { color: $base0B } // Literal.String.Symbol +.highlight .bp { color: $base00 } // Name.Builtin.Pseudo +.highlight .vc { color: $base08 } // Name.Variable.Class +.highlight .vg { color: $base08 } // Name.Variable.Global +.highlight .vi { color: $base08 } // Name.Variable.Instance +.highlight .il { color: $base09 } // Literal.Number.Integer.Long diff --git a/docs/css/_tables.scss b/docs/css/_tables.scss new file mode 100644 index 0000000000..fe4edd7cf0 --- /dev/null +++ b/docs/css/_tables.scss @@ -0,0 +1,63 @@ +// Bootstrap requires tables to carry a .table class in order for styling to +// be applied. However, redcarpet emits table elements without the class and +// it is not possible to customize it. +// +// Ideally, we would use a SASS directive to make the table element inherit +// the formatting defined by the bootstrap templates... but we cannot do so +// at the moment because we don't build bootstrap ourselves from its SASS +// sources. Therefore, this file just borrows the minimal amount of code +// from bootstrap 3.3.7 to render tables nicely. + +caption { + padding-top: $table-cell-padding; + padding-bottom: $table-cell-padding; + color: $text-muted; + text-align: left; +} + +th { + text-align: left; +} + +// Baseline styles + +table { + background-color: $table-bg; + width: 100%; + max-width: 100%; + margin-bottom: $line-height-computed; + // Cells + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + padding: $table-cell-padding; + line-height: $line-height-base; + vertical-align: top; + border-top: 1px solid $table-border-color; + } + } + } + // Bottom align for column headings + > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid $table-border-color; + } + // Remove top border from thead by default + > caption + thead, + > colgroup + thead, + > thead:first-child { + > tr:first-child { + > th, + > td { + border-top: 0; + } + } + } + // Account for multiple tbody instances + > tbody + tbody { + border-top: 2px solid $table-border-color; + } +} diff --git a/docs/css/docs.css b/docs/css/docs.css deleted file mode 100644 index ab15dce0f3..0000000000 --- a/docs/css/docs.css +++ /dev/null @@ -1,212 +0,0 @@ -body { background-color: #fafafa; } - -img.responsive { max-width: 100%; height: auto; border: 1px solid #f5f5f5; } - -a { text-decoration: none; } - -pre, code { font-family: 'Liberation Mono', Consolas, Monaco, 'Andale Mono', monospace; } - -pre, pre.term { background-color: #fff; padding: 20px; overflow-x: auto; word-wrap: normal; border: 1px solid #f5f5f5; } -pre code, pre.term code { overflow-wrap: normal; white-space: pre; } - -pre.term { background-color: #424242; color: #fff; font-size: 90%; } -pre.term span.info { color: #81C784; } - -/* Override material styles */ -blockquote::before { - content: ""; -} - -/* Override material styles */ -blockquote::after { - content: ""; - margin-left: 0; -} - -blockquote { - border-left: 0.2em solid #4caf50; - padding-left: 1em; - margin-inline: 0; -} - -code { display: inline-block; font-size: 90%; white-space: pre-wrap; } - -.mdl-layout__content { display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-flex-direction: column; -ms-flex-flow: column; flex-direction: column; } - -.mdl-layout__content > *:not(.mdl-layout-spacer) { -webkit-flex: none; -ms-flex: none; flex: none; } - -footer #scroll-to-top { color: #fff; } - -p.lead { font-size: 20px; line-height: 32px; } - -img { margin: 20px 0; max-width: 100%; height: auto; } - -table { border-collapse: collapse; border-spacing: 0; background-color: #fff; table-layout: auto; } -table thead th { background-color: #fafafa; border: 1px solid #eee; color: #757575; padding: 12px 12px 12px 24px; vertical-align: top; } -table tbody td { border: 1px solid #eee; padding: 12px 12px 12px 24px; vertical-align: top; } - -table.params-table { width: 100%; } -table.params-table col.col-param { width: 25%; } -table.params-table col.col-description { width: 75%; } - -hr { margin-top: 80px; margin-bottom: 80px; } - -nav.toc { border-left: 5px solid #4caf50; padding-left: 20px; margin-bottom: 48px; } -nav.toc h1, nav.toc h2 { font-size: 15px; line-height: 16px; padding-bottom: 12px; margin-bottom: 0; font-weight: 400; color: #757575; } -nav.toc ul { list-style: none; margin-top: 0; padding-left: 0; } -nav.toc ul li { font-size: 20px; line-height: 40px; } -nav.toc ul li a { color: #4caf50; } - -.page-content { margin-left: auto; margin-right: auto; padding-top: 60px; padding-bottom: 60px; width: 760px; } -.page-content h1.page-title { font-size: 34px; font-weight: 400; line-height: 40px; margin-bottom: 30px; color: #4caf50; } -.page-content h1 { font-size: 24px; font-weight: 400; line-height: 40px; margin-bottom: 20px; color: #4caf50; } -.page-content h2 { font-size: 20px; font-weight: 400; line-height: 32px; margin-bottom: 20px; color: #4caf50; } -.page-content h3 { font-size: 18px; font-weight: 400; line-height: 32px; margin-bottom: 20px; color: #757575; } -.page-content h4 { font-size: 14px; font-weight: 400; line-height: 32px; margin-bottom: 20px; color: #757575; } - -@media (max-width: 768px) { .page-content { width: 360px; } } -@media (min-width: 768px) { .page-content { width: 760px; } } -@media (min-width: 1476px) { .page-content { width: 1160px; } } -.mdl-mini-footer { padding-left: 40px; } - -.mdl-layout__drawer { background-color: #fff; } -.mdl-layout__drawer .mdl-layout-title { border-bottom: 1px solid #e0e0e0; padding-left: 24px; } -.mdl-layout__drawer .mdl-layout-title a { text-decoration: none; color: #757575; font-weight: normal; } - -.drawer-nav ul { list-style: none; padding-left: 0; } -.drawer-nav ul li { display: block; padding: 0; } -.drawer-nav ul li ul li a { padding-left: 44px; font-weight: 400; } -.drawer-nav ul li span.drawer-nav-title { display: block; flex-shrink: 0; padding: 15px 0 15px 22px; margin: 0; font-weight: 600; color: #757575; line-height: 1em; text-decoration: none; } -.drawer-nav ul li a { display: block; flex-shrink: 0; padding: 15px 0 15px 22px; margin: 0; font-weight: 600; color: #757575; line-height: 1em; text-decoration: none; cursor: pointer; } -.drawer-nav ul li a:active, .drawer-nav ul li a:hover { background-color: #f0f0f0; } -.drawer-nav ul li.active a { color: #4caf50; font-weight: 500; } - -.highlight .hll { background-color: #e0e0e0; } - -.highlight { background: #eee; color: #212121; } - -.highlight .c { color: #757575; } - -.highlight .err { color: #f44336; } - -.highlight .k { color: #9c27b0; } - -.highlight .l { color: #ff9800; } - -.highlight .n { color: #212121; } - -.highlight .o { color: #009688; } - -.highlight .p { color: #212121; } - -.highlight .cm { color: #757575; } - -.highlight .cp { color: #757575; } - -.highlight .c1 { color: #757575; } - -.highlight .cs { color: #757575; } - -.highlight .gd { color: #f44336; } - -.highlight .ge { font-style: italic; } - -.highlight .gh { color: #212121; font-weight: bold; } - -.highlight .gi { color: #4caf50; } - -.highlight .gp { color: #757575; font-weight: bold; } - -.highlight .gs { font-weight: bold; } - -.highlight .gu { color: #009688; font-weight: bold; } - -.highlight .kc { color: #9c27b0; } - -.highlight .kd { color: #9c27b0; } - -.highlight .kn { color: #009688; } - -.highlight .kp { color: #9c27b0; } - -.highlight .kr { color: #9c27b0; } - -.highlight .kt { color: #ffc107; } - -.highlight .ld { color: #4caf50; } - -.highlight .m { color: #ff9800; } - -.highlight .s { color: #4caf50; } - -.highlight .na { color: #2196f3; } - -.highlight .nb { color: #212121; } - -.highlight .nc { color: #ffc107; } - -.highlight .no { color: #f44336; } - -.highlight .nd { color: #009688; } - -.highlight .ni { color: #212121; } - -.highlight .ne { color: #f44336; } - -.highlight .nf { color: #2196f3; } - -.highlight .nl { color: #212121; } - -.highlight .nn { color: #ffc107; } - -.highlight .nx { color: #2196f3; } - -.highlight .py { color: #212121; } - -.highlight .nt { color: #009688; } - -.highlight .nv { color: #f44336; } - -.highlight .ow { color: #009688; } - -.highlight .w { color: #212121; } - -.highlight .mf { color: #ff9800; } - -.highlight .mh { color: #ff9800; } - -.highlight .mi { color: #ff9800; } - -.highlight .mo { color: #ff9800; } - -.highlight .sb { color: #4caf50; } - -.highlight .sc { color: #212121; } - -.highlight .sd { color: #757575; } - -.highlight .s2 { color: #4caf50; } - -.highlight .se { color: #ff9800; } - -.highlight .sh { color: #4caf50; } - -.highlight .si { color: #ff9800; } - -.highlight .sx { color: #4caf50; } - -.highlight .sr { color: #4caf50; } - -.highlight .s1 { color: #4caf50; } - -.highlight .ss { color: #4caf50; } - -.highlight .bp { color: #212121; } - -.highlight .vc { color: #f44336; } - -.highlight .vg { color: #f44336; } - -.highlight .vi { color: #f44336; } - -.highlight .il { color: #ff9800; } diff --git a/docs/css/home.css b/docs/css/home.css deleted file mode 100644 index 779b275c1b..0000000000 --- a/docs/css/home.css +++ /dev/null @@ -1,173 +0,0 @@ -body { background-color: #fafafa; } - -img.responsive { max-width: 100%; height: auto; border: 1px solid #f5f5f5; } - -a { text-decoration: none; } - -pre, code { font-family: 'Liberation Mono', Consolas, Monaco, 'Andale Mono', monospace; } - -pre, pre.term { background-color: #fff; padding: 20px; overflow-x: auto; word-wrap: normal; border: 1px solid #f5f5f5; } -pre code, pre.term code { overflow-wrap: normal; white-space: pre; } - -pre.term { background-color: #424242; color: #fff; font-size: 90%; } -pre.term span.info { color: #81C784; } - -code { display: inline-block; font-size: 90%; white-space: pre-wrap; } - -.mdl-layout__content { display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-flex-direction: column; -ms-flex-flow: column; flex-direction: column; } - -.mdl-layout__content > *:not(.mdl-layout-spacer) { -webkit-flex: none; -ms-flex: none; flex: none; } - -footer #scroll-to-top { color: #fff; } - -.hero { background-color: #4caf50; color: #fff; padding-top: 40px; padding-bottom: 20px; } -.hero .mdl-cell { text-align: center; } -.hero h1 { font-size: 32px; font-weight: 300; } -.hero p.lead { font-size: 18px; font-weight: 300; } -.hero .mdl-button { margin-top: 10px; background-color: #fafafa; } - -.feature .mdl-grid { max-width: 1230px; } -.feature .mdl-cell { padding: 10px; } -.feature h1 { font-size: 28px; font-weight: 300; } - -.mdl-layout__drawer { background-color: #fff; } -.mdl-layout__drawer .mdl-layout-title { border-bottom: 1px solid #e0e0e0; padding-left: 24px; } -.mdl-layout__drawer .mdl-layout-title a { text-decoration: none; color: #757575; font-weight: normal; } - -.drawer-nav ul { list-style: none; padding-left: 0; } -.drawer-nav ul li { display: block; padding: 0; } -.drawer-nav ul li ul li a { padding-left: 44px; font-weight: 400; } -.drawer-nav ul li span.drawer-nav-title { display: block; flex-shrink: 0; padding: 15px 0 15px 22px; margin: 0; font-weight: 600; color: #757575; line-height: 1em; text-decoration: none; } -.drawer-nav ul li a { display: block; flex-shrink: 0; padding: 15px 0 15px 22px; margin: 0; font-weight: 600; color: #757575; line-height: 1em; text-decoration: none; cursor: pointer; } -.drawer-nav ul li a:active, .drawer-nav ul li a:hover { background-color: #f0f0f0; } -.drawer-nav ul li.active a { color: #4caf50; font-weight: 500; } - -.highlight .hll { background-color: #e0e0e0; } - -.highlight { background: #eee; color: #212121; } - -.highlight .c { color: #757575; } - -.highlight .err { color: #f44336; } - -.highlight .k { color: #9c27b0; } - -.highlight .l { color: #ff9800; } - -.highlight .n { color: #212121; } - -.highlight .o { color: #009688; } - -.highlight .p { color: #212121; } - -.highlight .cm { color: #757575; } - -.highlight .cp { color: #757575; } - -.highlight .c1 { color: #757575; } - -.highlight .cs { color: #757575; } - -.highlight .gd { color: #f44336; } - -.highlight .ge { font-style: italic; } - -.highlight .gh { color: #212121; font-weight: bold; } - -.highlight .gi { color: #4caf50; } - -.highlight .gp { color: #757575; font-weight: bold; } - -.highlight .gs { font-weight: bold; } - -.highlight .gu { color: #009688; font-weight: bold; } - -.highlight .kc { color: #9c27b0; } - -.highlight .kd { color: #9c27b0; } - -.highlight .kn { color: #009688; } - -.highlight .kp { color: #9c27b0; } - -.highlight .kr { color: #9c27b0; } - -.highlight .kt { color: #ffc107; } - -.highlight .ld { color: #4caf50; } - -.highlight .m { color: #ff9800; } - -.highlight .s { color: #4caf50; } - -.highlight .na { color: #2196f3; } - -.highlight .nb { color: #212121; } - -.highlight .nc { color: #ffc107; } - -.highlight .no { color: #f44336; } - -.highlight .nd { color: #009688; } - -.highlight .ni { color: #212121; } - -.highlight .ne { color: #f44336; } - -.highlight .nf { color: #2196f3; } - -.highlight .nl { color: #212121; } - -.highlight .nn { color: #ffc107; } - -.highlight .nx { color: #2196f3; } - -.highlight .py { color: #212121; } - -.highlight .nt { color: #009688; } - -.highlight .nv { color: #f44336; } - -.highlight .ow { color: #009688; } - -.highlight .w { color: #212121; } - -.highlight .mf { color: #ff9800; } - -.highlight .mh { color: #ff9800; } - -.highlight .mi { color: #ff9800; } - -.highlight .mo { color: #ff9800; } - -.highlight .sb { color: #4caf50; } - -.highlight .sc { color: #212121; } - -.highlight .sd { color: #757575; } - -.highlight .s2 { color: #4caf50; } - -.highlight .se { color: #ff9800; } - -.highlight .sh { color: #4caf50; } - -.highlight .si { color: #ff9800; } - -.highlight .sx { color: #4caf50; } - -.highlight .sr { color: #4caf50; } - -.highlight .s1 { color: #4caf50; } - -.highlight .ss { color: #4caf50; } - -.highlight .bp { color: #212121; } - -.highlight .vc { color: #f44336; } - -.highlight .vg { color: #f44336; } - -.highlight .vi { color: #f44336; } - -.highlight .il { color: #ff9800; } diff --git a/docs/css/main.css b/docs/css/main.css new file mode 100755 index 0000000000..9d735d4735 --- /dev/null +++ b/docs/css/main.css @@ -0,0 +1 @@ +html{position:relative;min-height:100%;font-size:100%}body{padding-top:50px;color:#000;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.5}a{color:#00701a;font-weight:500}a:hover,a:focus{color:#00d632}a code{color:#00701a}h1,h2,h3,h4,h5,h6{color:#000;margin-top:2rem;margin-bottom:1rem}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{color:#000;background:transparent}h1{font-size:31.5px;font-weight:700}h2{font-size:28px}h2 code{font-size:24px}h3{font-size:21px}h3 code{font-size:20px}h4{font-size:18.9px}h4 code{font-size:18px}h5{font-size:16.1px}h6{font-size:14px}p,li{font-size:14px;line-height:1.5}pre{padding:8px 16px;margin:8px 0;font-family:"Monaco","Source Code Pro",monospace;background-color:#eee;border:0;font-size:100%;line-height:20px;color:#000;border-radius:6px;box-shadow:1px 1px 5px #aaa}code{font-family:"Monaco","Source Code Pro",monospace;font-size:13px;background-color:#eee;color:#000}.btn-lg{font-size:14px;text-transform:uppercase}@media(min-width: 768px){.container{width:100%;max-width:100%}}@media(min-width: 992px){.content{max-width:100%;width:100%}}.content{overflow:auto;padding:40px 10px}.content p{line-height:22px;margin-bottom:1rem}.btn-success{border-radius:2px;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);border:0}.well{background-color:#eee;border-color:#eee;box-shadow:none}.vpad{padding-top:0px}.page-title-bar{background-color:#76d275;padding-top:20px;padding-bottom:20px}.page-title-bar h1,.page-title-bar h2,.page-title-bar h3,.page-title-bar h4,.page-title-bar h5,.page-title-bar h6{margin:8px 0 4px;color:#fff}.gsc-control-cse *,.gsc-control-cse *::before,.gsc-control-cse *::after{-webkit-box-sizing:content-box !important;-moz-box-sizing:content-box !important;box-sizing:content-box !important}dd>code>a,dl>dt>code>a{color:#000}dl>dt{margin-top:1.5rem;margin-bottom:.5rem}.footer{background-color:#424242;color:#fff;padding:20px}.footer .text-muted{color:#e0e0e0}.footer a{color:#e0e0e0}.footer a:hover,.footer a:focus{color:#fff;text-decoration:none}.navbar-inverse{margin-bottom:0;background-color:#43a047;border-bottom:1px solid #43a047}.navbar-inverse .navbar-brand .navbar-logo{height:22px}.navbar-inverse a.navbar-brand{color:#fff}.navbar-inverse a.navbar-brand:focus,.navbar-inverse a.navbar-brand:hover{color:#444;background-color:#43a047}.navbar-inverse .navbar-nav>li>a{color:#fff}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#444;background-color:#76d275}.navbar-inverse .navbar-nav>li>a.nav-icon{font-size:18px}.navbar-inverse .navbar-nav>li.active>a{background-color:#76d275}.navbar-inverse .navbar-nav>li.active>a:focus,.navbar-inverse .navbar-nav>li.active>a:hover{background-color:#76d275}.navbar-inverse .navbar-form{border-color:#43a047}.navbar-inverse .navbar-form .input-sm{margin-top:2px}.navbar-inverse .navbar-form input[type=search]{background-color:#76d275;border-color:#43a047}.navbar-inverse .navbar-form input[type=search]::placeholder{color:#fff}.navbar-inverse .navbar-form input[type=search]:focus,.navbar-inverse .navbar-form input[type=search]:active{background-color:#fff}.navbar-inverse .navbar-toggle{border:1px solid #43a047}.navbar-inverse .navbar-toggle.active,.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#76d275}.navbar-inverse .navbar-collapse{border-color:#43a047}@media(max-width: 768px){#cse-search-box{margin-top:0;margin-bottom:0}}.sidebar{height:99.9%;border-right:1px solid #dee2e6;background-color:rgba(67,160,71,.03);padding-top:40px;padding-left:1.5rem;margin-left:-15px}.sidebar li{font-size:13.3px}.sidebar h4{padding-right:1rem}.sidebar ul.sidebar-nav{list-style-type:none;padding:0}.sidebar ul.sidebar-nav li.sidebar-nav-heading{padding:10px 0;margin:0;display:block;font-size:16px;font-weight:300}.sidebar ul.sidebar-nav li ul li a{color:#495057}.sidebar ul.sidebar-nav li a{padding:4px 1rem 4px 0;display:block;color:#222;font-weight:400}.sidebar ul.sidebar-nav li a:focus{text-decoration:none}.sidebar ul.sidebar-nav li a:active,.sidebar ul.sidebar-nav li a:hover{border-right:4px solid #66bb6a;text-decoration:none}.sidebar ul.sidebar-nav li a .caret{float:right;margin-top:8px;margin-right:0px}.sidebar ul.sidebar-nav li.active a{border-right:4px solid #66bb6a;font-weight:700}.sidebar ul.sidebar-nav ul.sidebar-nav{padding-left:10px}.sidebar select{padding:3px 4px;border:2px solid #dee2e6;border-radius:3px;width:80%}.sidebar-toggle{margin-top:50px}@media(max-width: 991px){.right-sidebar{display:none}}@media(min-width: 992px){.sidebar-toggle{display:none}.sidebar.collapse{display:block}@supports(position: sticky){.sticky-sidebar{position:sticky;top:50px;height:100vh;overflow-y:auto}}}.right-sidebar{border-left:1px solid #dee2e6;padding-top:40px;padding-bottom:1rem}.right-sidebar .gh-links{padding-left:22px;list-style-type:none}.right-sidebar .gh-links li{padding-bottom:.4rem}.right-sidebar a{font-weight:400}.right-sidebar .toc-h2{padding-left:0;list-style-type:none}.right-sidebar .toc-h2 ul{padding-left:0}.right-sidebar .toc-h2 li{margin-top:.3rem;line-height:1.7;font-size:13.3px}.right-sidebar .toc-h2 li a{color:#444}.right-sidebar .toc-h3{padding-left:1em;list-style-type:none}.right-sidebar .toc-h3 li{line-height:1.7}.right-sidebar .toc-h3 li a{color:#666}.gh-edit{padding-top:0px}.gh-edit.default-hidden{visibility:hidden}caption{padding-top:5px;padding-bottom:5px;color:#fff;text-align:left}th{text-align:left}table{background-color:#fff;width:100%;max-width:100%;margin-bottom:1.5}table>thead>tr>th,table>thead>tr>td,table>tbody>tr>th,table>tbody>tr>td,table>tfoot>tr>th,table>tfoot>tr>td{padding:5px;line-height:1.5;vertical-align:top;border-top:1px solid #43a047}table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #43a047}table>caption+thead>tr:first-child>th,table>caption+thead>tr:first-child>td,table>colgroup+thead>tr:first-child>th,table>colgroup+thead>tr:first-child>td,table>thead:first-child>tr:first-child>th,table>thead:first-child>tr:first-child>td{border-top:0}table>tbody+tbody{border-top:2px solid #43a047}pre.rule-signature{white-space:normal;word-wrap:break-word;word-break:normal}colgroup .col-param{width:25%}colgroup .col-description{width:75%}.table-params{border:1px solid #81c784}.table-params thead>tr>th{color:#fff;border:1px solid #81c784;background-color:#81c784}.table-params tbody>tr>td{background-color:#e8f5e9;border:1px solid #81c784}.table-implicit{border:1px solid silver}.table-implicit thead>tr>th{color:#fff;border:1px solid silver;background-color:silver}.table-implicit tbody>tr>td{background-color:#f0f0f0;border:1px solid silver}.toc{border-left:4px solid #c8e6c9;padding-left:18px;margin-bottom:20px}.toc h1,.toc h2{font-size:24px;color:#757575;margin-bottom:12px}.toc ul{list-style:none;padding-left:0;margin-top:0}.toc ul li{line-height:36px;font-size:16px;font-weight:400}dt{margin-top:.5em}dd{margin-left:2em}.highlight .hll{background-color:#e0e0e0}.highlight{background:#eee;color:#212121}.highlight .c{color:#9e9e9e}.highlight .err{color:#f44336}.highlight .k{color:#9c27b0}.highlight .l{color:#ff9800}.highlight .n{color:#212121}.highlight .o{color:#009688}.highlight .p{color:#212121}.highlight .cm{color:#9e9e9e}.highlight .cp{color:#9e9e9e}.highlight .c1{color:#9e9e9e}.highlight .cs{color:#9e9e9e}.highlight .gd{color:#f44336}.highlight .ge{font-style:italic}.highlight .gh{color:#212121;font-weight:bold}.highlight .gi{color:#4caf50}.highlight .gp{color:#9e9e9e;font-weight:bold}.highlight .gs{font-weight:bold}.highlight .gu{color:#009688;font-weight:bold}.highlight .kc{color:#9c27b0}.highlight .kd{color:#9c27b0}.highlight .kn{color:#009688}.highlight .kp{color:#9c27b0}.highlight .kr{color:#9c27b0}.highlight .kt{color:#ffc107}.highlight .ld{color:#4caf50}.highlight .m{color:#ff9800}.highlight .s{color:#4caf50}.highlight .na{color:#2196f3}.highlight .nb{color:#212121}.highlight .nc{color:#ffc107}.highlight .no{color:#f44336}.highlight .nd{color:#009688}.highlight .ni{color:#212121}.highlight .ne{color:#f44336}.highlight .nf{color:#2196f3}.highlight .nl{color:#212121}.highlight .nn{color:#ffc107}.highlight .nx{color:#2196f3}.highlight .py{color:#212121}.highlight .nt{color:#009688}.highlight .nv{color:#f44336}.highlight .ow{color:#009688}.highlight .w{color:#212121}.highlight .mf{color:#ff9800}.highlight .mh{color:#ff9800}.highlight .mi{color:#ff9800}.highlight .mo{color:#ff9800}.highlight .sb{color:#4caf50}.highlight .sc{color:#212121}.highlight .sd{color:#9e9e9e}.highlight .s2{color:#4caf50}.highlight .se{color:#ff9800}.highlight .sh{color:#4caf50}.highlight .si{color:#ff9800}.highlight .sx{color:#4caf50}.highlight .sr{color:#4caf50}.highlight .s1{color:#4caf50}.highlight .ss{color:#4caf50}.highlight .bp{color:#212121}.highlight .vc{color:#f44336}.highlight .vg{color:#f44336}.highlight .vi{color:#f44336}.highlight .il{color:#ff9800}/*# sourceMappingURL=main.css.map */ diff --git a/docs/css/main.scss b/docs/css/main.scss new file mode 100644 index 0000000000..dbbbc40dcf --- /dev/null +++ b/docs/css/main.scss @@ -0,0 +1,11 @@ +// these styles are based on the main bazel.build site docs, with a few tweaks +// https://github.com/bazelbuild/bazel/tree/master/site/_sass + +@import "styles"; +@import "footer"; +@import "navbar"; +@import "sidebar"; +@import "docs"; +@import "tables"; +@import "be"; +@import "syntax"; diff --git a/docs/debugging.html b/docs/debugging.html new file mode 100755 index 0000000000..c45cad6036 --- /dev/null +++ b/docs/debugging.html @@ -0,0 +1,316 @@ + + + + + + + + + + rules_nodejs - Debugging + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    +
    +

    Debugging

    + +

    Add the options in the Support for debugging NodeJS tests section from https://github.com/bazelbuild/rules_nodejs/blob/master/common.bazelrc to your project’s .bazelrc file to add support for debugging NodeJS programs.

    + +

    Using the --config=debug command line option with bazel will set a number of flags that are specified there are useful for debugging. See the comments under Support for debugging NodeJS tests for details on the flags that are set.

    + +

    Use --config=debug with bazel test as follow,

    + +
    bazel test --config=debug //test:...
    +
    + +

    or with bazel run,

    + +
    bazel run --config=debug //test:test1
    +
    + +

    to also turn on the NodeJS inspector agent which will break before any user code starts. You should then see,

    + +
    Executing tests from //test:test1
    +-----------------------------------------------------------------------------
    +Debugger listening on ws://127.0.0.1:9229/3f20777a-242c-4d18-b88b-5ed4b3fed61c
    +For help, see: https://nodejs.org/en/docs/inspector
    +
    + +

    when the test is run.

    + +

    To inspect with Chrome DevTools 55+, open chrome://inspect in a Chromium-based browser and attach to the waiting process. +A Chrome DevTools window should open and you should see Debugger attached. in the console.

    + +

    See https://nodejs.org/en/docs/guides/debugging-getting-started/ for more details.

    + +

    Debugging with VS Code

    + +

    With the above configuration you can use VS Code as your debugger. +You will first need to configure your .vscode/launch.json:

    + +
    {
    +      "type": "node",
    +      "request": "attach",
    +      "name": "Attach nodejs_binary",
    +      "internalConsoleOptions": "neverOpen",
    +      "sourceMapPathOverrides": {
    +        "../*": "${workspaceRoot}/*",
    +        "../../*": "${workspaceRoot}/*",
    +        "../../../*": "${workspaceRoot}/*",
    +        "../../../../*": "${workspaceRoot}/*",
    +        "../../../../../*": "${workspaceRoot}/*",
    +        // do as many levels here as needed for your project
    +      }
    +
    +

    We use sourceMapPathOverrides here to rewrite the source maps produced by ts_library so that breakpoints line up with the source maps. +Once configured start your process with

    +
    bazel run --config=debug //test:test1
    +
    +

    Then hit F5 which will start the VS Code debugger with the Attach nodejs_binary configuration. +VS Code will immediatenly hit a breakpoint to which you can continue and debug using all the normal debug features provided.

    + +
    +
    + + +
    +
    + +
    +
    +
    +
    +

    © 2020 Google

    +
    +
    +
    + +
    + + + + + + + + + + + + + + + diff --git a/docs/debugging.md b/docs/debugging.md new file mode 100644 index 0000000000..0cc6490ab2 --- /dev/null +++ b/docs/debugging.md @@ -0,0 +1,67 @@ +--- +title: Debugging +layout: default +toc: true +--- + +# Debugging + +Add the options in the `Support for debugging NodeJS tests` section from https://github.com/bazelbuild/rules_nodejs/blob/master/common.bazelrc to your project's `.bazelrc` file to add support for debugging NodeJS programs. + +Using the `--config=debug` command line option with bazel will set a number of flags that are specified there are useful for debugging. See the comments under `Support for debugging NodeJS tests` for details on the flags that are set. + +Use `--config=debug` with `bazel test` as follow, + +``` +bazel test --config=debug //test:... +``` + +or with `bazel run`, + +``` +bazel run --config=debug //test:test1 +``` + +to also turn on the NodeJS inspector agent which will break before any user code starts. You should then see, + +``` +Executing tests from //test:test1 +----------------------------------------------------------------------------- +Debugger listening on ws://127.0.0.1:9229/3f20777a-242c-4d18-b88b-5ed4b3fed61c +For help, see: https://nodejs.org/en/docs/inspector +``` + +when the test is run. + +To inspect with Chrome DevTools 55+, open `chrome://inspect` in a Chromium-based browser and attach to the waiting process. +A Chrome DevTools window should open and you should see `Debugger attached.` in the console. + +See https://nodejs.org/en/docs/guides/debugging-getting-started/ for more details. + +## Debugging with VS Code + +With the above configuration you can use VS Code as your debugger. +You will first need to configure your `.vscode/launch.json`: + +``` +{ + "type": "node", + "request": "attach", + "name": "Attach nodejs_binary", + "internalConsoleOptions": "neverOpen", + "sourceMapPathOverrides": { + "../*": "${workspaceRoot}/*", + "../../*": "${workspaceRoot}/*", + "../../../*": "${workspaceRoot}/*", + "../../../../*": "${workspaceRoot}/*", + "../../../../../*": "${workspaceRoot}/*", + // do as many levels here as needed for your project + } +``` +We use `sourceMapPathOverrides` here to rewrite the source maps produced by `ts_library` so that breakpoints line up with the source maps. +Once configured start your process with +``` +bazel run --config=debug //test:test1 +``` +Then hit `F5` which will start the VS Code debugger with the `Attach nodejs_binary` configuration. +VS Code will immediatenly hit a breakpoint to which you can continue and debug using all the normal debug features provided. diff --git a/docs/dependencies.html b/docs/dependencies.html new file mode 100755 index 0000000000..684fcc9471 --- /dev/null +++ b/docs/dependencies.html @@ -0,0 +1,534 @@ + + + + + + + + + + rules_nodejs - Dependencies + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    +
    +

    Dependencies

    + +

    Bazel works alongside your existing package manager, either npm or yarn. +You manage your package.json file, editing by hand or by running commands like npm install or yarn add. +The package manager will also write a lock file, indicating exact versions for all transitive dependencies, which keeps your build hermetic and reproducible. +Bazel will run the package manager when the package.json or *lock.json files change, but you can also run the package manager yourself.

    + +

    Bazel-managed vs self-managed dependencies

    + +

    You have two options for managing your node_modules dependencies: Bazel-managed or self-managed.

    + +

    With the Bazel-managed dependencies approach, Bazel is responsible for making sure that node_modules is +up to date with your package[-lock].json or yarn.lock files. This means Bazel will set it up when the +repository is first cloned, and rebuild it whenever it changes. With the yarn_install or npm_install +repository rules, Bazel will setup your node_modules for you in an external workspace named after the +repository rule. For example, a yarn_install(name = "npm", ...) will setup an external +workspace named @npm with the node_modules folder inside of it as well as generating targets for each +root npm package in node_modules for use as dependencies to other rules.

    + +

    For Bazel to provide the strongest guarantees about reproducibility and the +fidelity of your build, it is recommended that you use Bazel-managed dependencies. +This approach also allows you to use the generated fine-grained npm package dependencies +which can significantly reduce the number of inputs to actions, making Bazel sand-boxing and +remote-execution faster if there are a large number of files under node_modules.

    + +
    +

    Note that as of Bazel 0.26, and with the recommended managed_directories attribute on the workspace rule in /WORKSPACE, +the Bazel-managed node_modules directory is placed in your workspace root in the standard location used by npm or yarn.

    +
    + +

    Using Bazel-managed dependencies

    + +

    To have Bazel manage its own copy of node_modules, which is useful to avoid +juggling multiple toolchains, you can add one of the following to your WORKSPACE +file:

    + +

    Using Yarn (preferred):

    + +
    load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install")
    +
    +yarn_install(
    +    name = "npm",
    +    package_json = "//:package.json",
    +    yarn_lock = "//:yarn.lock",
    +)
    +
    + +

    Using NPM:

    + +
    load("@build_bazel_rules_nodejs//:index.bzl", "npm_install")
    +
    +npm_install(
    +    name = "npm",
    +    package_json = "//:package.json",
    +    package_lock_json = "//:package-lock.json",
    +)
    +
    + +
    +

    If you don’t need to pass any arguments to node_repositories, + you can skip calling that function. yarn_install and npm_install will do it by default.

    +
    + +

    You should now add the @npm workspace to the managed_directories option in the workspace rule at the top of the file. This tells Bazel that the node_modules directory is special and is managed by the package manager. +Add the workspace rule if it isn’t already in your /WORKSPACE file.

    + +
    workspace(
    +    name = "my_wksp",
    +    managed_directories = {"@npm": ["node_modules"]},
    +)
    +
    + +

    As of Bazel 0.26 this feature is still experimental, so also add this line to the .bazelrc to opt-in:

    + +
    common --experimental_allow_incremental_repository_updates
    +
    + +

    yarn_install vs. npm_install

    + +

    yarn_install is the preferred rule for setting up Bazel-managed dependencies for a number of reasons:

    + +
      +
    • yarn_install will use the global yarn cache by default which will improve your build performance (this can be turned off with the use_global_yarn_cache attribute)
    • +
    • npm has a known peer dependency hoisting issue that can lead to missing peer dependencies in some cases (see https://github.com/bazelbuild/rules_nodejs/issues/416)
    • +
    + +

    Fine-grained npm package dependencies

    + +

    You can then reference individual npm packages in your BUILD rules via:

    + +
    load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary")
    +
    +nodejs_binary(
    +    name = "bar",
    +    data = [
    +      "@npm//foo",
    +      "@npm//baz",
    +    ]
    +    ...
    +)
    +
    + +

    In this case, the bar nodejs_binary depends only the foo and baz npm packages +and all of their transitive deps.

    + +

    For other rules such as jasmine_node_test, fine grained +npm dependencies are specified in the deps attribute:

    + +
    jasmine_node_test(
    +    name = "test",
    +    ...
    +    deps = [
    +        "@npm//jasmine",
    +        "@npm//foo",
    +        "@npm//baz",
    +        ...
    +    ],
    +)
    +
    + +

    Multiple sets of npm dependencies

    + +

    If your workspace has multiple applications, each with their own package.json +and npm deps, yarn_install (or npm_install) can be called separately for +each.

    + +
    workspace(
    +    name = "my_wksp",
    +    managed_directories = {
    +        "@app1_npm": ["app1/node_modules"],
    +        "@app2_npm": ["app2/node_modules"],
    +    },
    +)
    +
    +yarn_install(
    +    name = "app1_npm",
    +    package_json = "//app1:package.json",
    +    yarn_lock = "//app1:yarn.lock",
    +)
    +
    +yarn_install(
    +    name = "app2_npm",
    +    package_json = "//app2:package.json",
    +    yarn_lock = "//app2:yarn.lock",
    +)
    +
    + +

    Your application would then reference its deps as (for example) @app1_npm//lodash, or @app2_npm//jquery.

    + +

    Fine-grained npm package nodejs_binary targets

    + +

    If an npm package lists one or more bin entry points in its package.json, +nodejs_binary targets will be generated for these.

    + +

    For example, the protractor package has two bin entries in its package.json:

    + +
      "bin": {
    +    "protractor": "bin/protractor",
    +    "webdriver-manager": "bin/webdriver-manager"
    +  },
    +
    + +

    These will result in two generated nodejs_binary targets in the @npm//protractor/bin +package (if your npm deps workspace is @npm):

    + +
      +
    • @npm//protractor/bin:protractor
    • +
    • @npm//protractor/bin:webdriver-manager
    • +
    + +

    These targets can be used as executables for actions in custom rules or can +be run by Bazel directly. For example, you can run protractor with the +following:

    + +
    $ bazel run @npm//protractor/bin:protractor
    +
    + +

    Note: These targets are in the protractor/bin package so they don’t +conflict with the targets to use in deps[]. For example, @npm//protractor:protractor +is target to use in deps[] while @npm//protractor/bin:protractor is the binary target.

    + +

    Coarse node_modules dependencies

    + +

    Using fine grained npm dependencies is recommended to minimize +the number of inputs to your rules. However, for backward compatibility +there are also filegroups defined by yarn_install and npm_install +that include all packages under node_modules and which can be used +with the node_modules attribute of nodejs rules.

    + +
      +
    • @npm//:node_modules includes all packages under node_modules as well as the .bin folder
    • +
    + +
    load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary")
    +
    +nodejs_binary(
    +    name = "bar",
    +    node_modules = "@npm//:node_modules",
    +)
    +
    + +

    Using self-managed dependencies

    + +

    If you’d like to have Bazel use the node_modules directory you are managing, +then next you will create a BUILD.bazel file in your project root containing:

    + +
    package(default_visibility = ["//visibility:public"])
    +
    +filegroup(
    +    name = "node_modules",
    +    srcs = glob(
    +        include = ["node_modules/**/*"],
    +        exclude = [
    +          # Files under test & docs may contain file names that
    +          # are not legal Bazel labels (e.g.,
    +          # node_modules/ecstatic/test/public/中文/檔案.html)
    +          "node_modules/test/**",
    +          "node_modules/docs/**",
    +          # Files with spaces are not allowed in Bazel runfiles
    +          # See https://github.com/bazelbuild/bazel/issues/4327
    +          "node_modules/**/* */**",
    +          "node_modules/**/* *",
    +        ],
    +    ),
    +)
    +
    + +

    The example in examples/user_managed_deps uses self-managed dependencies.

    + +

    To use the Yarn package manager, which we recommend for its built-in +verification command, you can run:

    + +
    $ bazel run @nodejs//:yarn_node_repositories
    +
    + +

    If you use npm instead, run:

    + +
    $ bazel run @nodejs//:npm_node_repositories install
    +
    + +

    The @nodejs//:yarn_node_repositories and @nodejs//:npm_node_repositories targets will run yarn/npm on all of the +package.json contexts listed package_json attribute of the node_repositories +repository rule in your WORKSPACE file (node_repositories(package_json = [...])).

    + +

    If there are multiple package.json contexts in this rule but you would like to +run the bazel managed yarn or npm on a single context this can be done +using the following targets:

    + +
    $ bazel run @nodejs//:yarn -- <arguments passed to yarn>
    +
    + +

    If you use npm instead, run:

    + +
    $ bazel run @nodejs//:npm -- <arguments passed to npm>
    +
    + +

    This will run yarn/npm in the current working directory. To add a package with the yarn add command, +for example, you would use:

    + +
    $ bazel run @nodejs//:yarn -- add <package>
    +
    + +

    Note: the arguments passed to bazel run after -- are forwarded to the executable being run.

    + + +
    +
    + + +
    +
    + +
    +
    +
    +
    +

    © 2020 Google

    +
    +
    +
    + +
    + + + + + + + + + + + + + + + diff --git a/docs/dependencies.md b/docs/dependencies.md new file mode 100644 index 0000000000..582e5cb3b3 --- /dev/null +++ b/docs/dependencies.md @@ -0,0 +1,277 @@ +--- +title: Dependencies +layout: default +toc: true +--- + +# Dependencies + +Bazel works alongside your existing package manager, either npm or yarn. +You manage your `package.json` file, editing by hand or by running commands like `npm install` or `yarn add`. +The package manager will also write a lock file, indicating exact versions for all transitive dependencies, which keeps your build hermetic and reproducible. +Bazel will run the package manager when the `package.json` or `*lock.json` files change, but you can also run the package manager yourself. + +## Bazel-managed vs self-managed dependencies + +You have two options for managing your `node_modules` dependencies: Bazel-managed or self-managed. + +With the Bazel-managed dependencies approach, Bazel is responsible for making sure that `node_modules` is +up to date with your `package[-lock].json` or `yarn.lock` files. This means Bazel will set it up when the +repository is first cloned, and rebuild it whenever it changes. With the `yarn_install` or `npm_install` +repository rules, Bazel will setup your `node_modules` for you in an external workspace named after the +repository rule. For example, a `yarn_install(name = "npm", ...)` will setup an external +workspace named `@npm` with the `node_modules` folder inside of it as well as generating targets for each +root npm package in `node_modules` for use as dependencies to other rules. + +For Bazel to provide the strongest guarantees about reproducibility and the +fidelity of your build, it is recommended that you use Bazel-managed dependencies. +This approach also allows you to use the generated fine-grained npm package dependencies +which can significantly reduce the number of inputs to actions, making Bazel sand-boxing and +remote-execution faster if there are a large number of files under `node_modules`. + +> Note that as of Bazel 0.26, and with the recommended `managed_directories` attribute on the `workspace` rule in `/WORKSPACE`, +> the Bazel-managed `node_modules` directory is placed in your workspace root in the standard location used by npm or yarn. + +## Using Bazel-managed dependencies + +To have Bazel manage its own copy of `node_modules`, which is useful to avoid +juggling multiple toolchains, you can add one of the following to your `WORKSPACE` +file: + +Using Yarn (preferred): + +```python +load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") + +yarn_install( + name = "npm", + package_json = "//:package.json", + yarn_lock = "//:yarn.lock", +) +``` + +Using NPM: + +```python +load("@build_bazel_rules_nodejs//:index.bzl", "npm_install") + +npm_install( + name = "npm", + package_json = "//:package.json", + package_lock_json = "//:package-lock.json", +) +``` + +> If you don't need to pass any arguments to `node_repositories`, + you can skip calling that function. `yarn_install` and `npm_install` will do it by default. + +You should now add the `@npm` workspace to the `managed_directories` option in the `workspace` rule at the top of the file. This tells Bazel that the `node_modules` directory is special and is managed by the package manager. +Add the `workspace` rule if it isn't already in your `/WORKSPACE` file. + +```python +workspace( + name = "my_wksp", + managed_directories = {"@npm": ["node_modules"]}, +) +``` + +As of Bazel 0.26 this feature is still experimental, so also add this line to the `.bazelrc` to opt-in: + +``` +common --experimental_allow_incremental_repository_updates +``` + +### yarn_install vs. npm_install + +`yarn_install` is the preferred rule for setting up Bazel-managed dependencies for a number of reasons: + +* `yarn_install` will use the global yarn cache by default which will improve your build performance (this can be turned off with the `use_global_yarn_cache` attribute) +* npm has a known peer dependency hoisting issue that can lead to missing peer dependencies in some cases (see https://github.com/bazelbuild/rules_nodejs/issues/416) + +### Fine-grained npm package dependencies + +You can then reference individual npm packages in your `BUILD` rules via: + +```python +load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary") + +nodejs_binary( + name = "bar", + data = [ + "@npm//foo", + "@npm//baz", + ] + ... +) +``` + +In this case, the `bar` nodejs_binary depends only the `foo` and `baz` npm packages +and all of their transitive deps. + +For other rules such as `jasmine_node_test`, fine grained +npm dependencies are specified in the `deps` attribute: + +```python +jasmine_node_test( + name = "test", + ... + deps = [ + "@npm//jasmine", + "@npm//foo", + "@npm//baz", + ... + ], +) +``` + +### Multiple sets of npm dependencies + +If your workspace has multiple applications, each with their own `package.json` +and npm deps, `yarn_install` (or `npm_install`) can be called separately for +each. + +```python +workspace( + name = "my_wksp", + managed_directories = { + "@app1_npm": ["app1/node_modules"], + "@app2_npm": ["app2/node_modules"], + }, +) + +yarn_install( + name = "app1_npm", + package_json = "//app1:package.json", + yarn_lock = "//app1:yarn.lock", +) + +yarn_install( + name = "app2_npm", + package_json = "//app2:package.json", + yarn_lock = "//app2:yarn.lock", +) +``` + +Your application would then reference its deps as (for example) `@app1_npm//lodash`, or `@app2_npm//jquery`. + +### Fine-grained npm package nodejs_binary targets + +If an npm package lists one or more `bin` entry points in its `package.json`, +`nodejs_binary` targets will be generated for these. + +For example, the `protractor` package has two bin entries in its `package.json`: + +```json + "bin": { + "protractor": "bin/protractor", + "webdriver-manager": "bin/webdriver-manager" + }, +``` + +These will result in two generated `nodejs_binary` targets in the `@npm//protractor/bin` +package (if your npm deps workspace is `@npm`): + +* `@npm//protractor/bin:protractor` +* `@npm//protractor/bin:webdriver-manager` + +These targets can be used as executables for actions in custom rules or can +be run by Bazel directly. For example, you can run protractor with the +following: + +```sh +$ bazel run @npm//protractor/bin:protractor +``` + +Note: These targets are in the `protractor/bin` package so they don't +conflict with the targets to use in deps[]. For example, `@npm//protractor:protractor` +is target to use in deps[] while `@npm//protractor/bin:protractor` is the binary target. + +### Coarse node_modules dependencies + +Using fine grained npm dependencies is recommended to minimize +the number of inputs to your rules. However, for backward compatibility +there are also filegroups defined by `yarn_install` and `npm_install` +that include all packages under `node_modules` and which can be used +with the `node_modules` attribute of nodejs rules. + +* `@npm//:node_modules` includes all packages under `node_modules` as well as the `.bin` folder + +```python +load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary") + +nodejs_binary( + name = "bar", + node_modules = "@npm//:node_modules", +) +``` + +## Using self-managed dependencies + +If you'd like to have Bazel use the `node_modules` directory you are managing, +then next you will create a `BUILD.bazel` file in your project root containing: + +```python +package(default_visibility = ["//visibility:public"]) + +filegroup( + name = "node_modules", + srcs = glob( + include = ["node_modules/**/*"], + exclude = [ + # Files under test & docs may contain file names that + # are not legal Bazel labels (e.g., + # node_modules/ecstatic/test/public/中文/檔案.html) + "node_modules/test/**", + "node_modules/docs/**", + # Files with spaces are not allowed in Bazel runfiles + # See https://github.com/bazelbuild/bazel/issues/4327 + "node_modules/**/* */**", + "node_modules/**/* *", + ], + ), +) +``` + +The example in `examples/user_managed_deps` uses self-managed dependencies. + +To use the Yarn package manager, which we recommend for its built-in +verification command, you can run: + +```sh +$ bazel run @nodejs//:yarn_node_repositories +``` + +If you use npm instead, run: + +```sh +$ bazel run @nodejs//:npm_node_repositories install +``` + +The `@nodejs//:yarn_node_repositories` and `@nodejs//:npm_node_repositories` targets will run yarn/npm on all of the +package.json contexts listed `package_json` attribute of the `node_repositories` +repository rule in your WORKSPACE file (`node_repositories(package_json = [...])`). + +If there are multiple package.json contexts in this rule but you would like to +run the bazel managed yarn or npm on a single context this can be done +using the following targets: + +```sh +$ bazel run @nodejs//:yarn -- +``` + +If you use npm instead, run: + +```sh +$ bazel run @nodejs//:npm -- +``` + +This will run yarn/npm in the current working directory. To add a package with the `yarn add` command, +for example, you would use: + +```sh +$ bazel run @nodejs//:yarn -- add +``` + +Note: the arguments passed to `bazel run` after `--` are forwarded to the executable being run. + +[bazel instructions]: https://docs.bazel.build/versions/master/install.html diff --git a/docs/examples.html b/docs/examples.html new file mode 100755 index 0000000000..b93f27cb1d --- /dev/null +++ b/docs/examples.html @@ -0,0 +1,431 @@ + + + + + + + + + + rules_nodejs - Examples + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    +
    +

    Examples

    + +

    Frameworks

    + +

    Angular

    + +

    Bazel can run any toolchain you want, so there is more than one way to use it with Angular. +See Alex’s post Angular ❤️ Bazel update for a longer explanation.

    + +

    Architect: The first approach is the simplest: use Architect (aka. Angular CLI Builders). This is the build tool inside of Angular CLI, so your existing application will continue to work the same way, and you can still get support from the Angular team. This may be a good choice if your goal is just to include an Angular app in a full-stack Bazel build that includes your backend, and making the Angular build&test faster is not important for you.

    + +

    However, it has the worst performance because the level of incrementality is only as fine as how many libs your application is composed from. +Bazel can only make a build more parallel and incremental if you express a wider dependency graph to it.

    + +

    Example: examples/angular_bazel_architect

    + +

    Google: This toolchain is what we originally advertised as “Angular Buildtools Convergence” (ABC). It is based on Google’s internal toolchain for building Angular, and has good performance characteristics. However it is harder to migrate to, because it doesn’t have good compatibility for existing applications.

    + +

    The example has its own guide: examples/angular

    + +

    View Engine: If you’re stuck on the older Angular compiler/runtime before Ivy, called View Engine, then your options are more limited. We don’t support Angular 9 + View Engine + Bazel.

    + +

    Example: examples/angular_view_engine

    + +

    Custom: Bazel is excellent for advanced use cases where you need to customize your toolchain. +Take any off-the-shelf tools, follow their README’s to call their CLI, and assemble them together in a custom way. +This lets you take advantage of the latest JS ecosystem innovations without waiting for tooling vendors to +assemble it all together for you.

    + +

    React

    + +

    Similar to the explanation above for Angular, Bazel is agnostic to what tools you choose to run on your project. +However, the benefits of using Bazel are unlocked as you adopt it as your build system. +We think the following examples show a typical migration of adopting Bazel:

    + +

    create-react-app: If you run create-react-app, it will install a build system called react-scripts. +As a first step into Bazel, you can simply ask Bazel to wrap the existing build system. +This guarantees compatibility with your current code, and if your objective is just to include a frontend app into +a bigger full-stack Bazel build, this might be the final step in the migration. +However it will run react-scripts as a single Bazel action, which means that you gain no incrementality benefit. +So we expect for most applications this is just a first step.

    + +

    The create-react-app example +shows how this will look. We suggest reading the README in that example, and also look at the commit history to that +directory as an illustration of how we started from create-react-app and added Bazel bits.

    + +

    react-scripts-like: As a next step to make our Build more incremental and performant, we can replace the react-scripts build system with Bazel, but preserve compatibility as much as possible by having Bazel run +mostly the same tools with mostly identical configuration. We continue to transpile TS to JS using Babel, for example, +but we do it in a build step before invoking Webpack, just using the Babel CLI.

    + +

    This is a good middle ground to get some benefits from Bazel while staying on the same supported tools as react-scripts.

    + +

    TODO(alexeagle): build an example illustrating how this looks

    + +

    custom: If you really know your JS build tools, Bazel is the perfect way to assemble all the myriad individual tools +into a custom toolchain. This allows you to unlock any part of the JS ecosystem without waiting for it to be integrated +for you by maintainers of a project like create-react-app, who have a very high bar for adding features since the +maintenance and support burden falls on them. However you’ll need to understand both the tools as well as Bazel to +successfully build your own toolchain.

    + +

    There is a basic example at examples/react_webpack but it needs a lot more work to show everything that is possible!

    + +

    Vue

    + +

    We don’t have a dedicated example yet, but Vue has been known to work. Follow https://github.com/bazelbuild/rules_nodejs/issues/1840 for an example.

    + +

    Svelte

    + +

    None yet, please file an issue if you need this.

    + +

    Test Runners

    + +

    Jest

    + +

    There is a dedicated example for Jest: examples/jest

    + +

    Cypress

    + +

    We have done some early work to run Cypress under Bazel. Follow https://github.com/bazelbuild/rules_nodejs/issues/1904 for an example.

    + +

    Mocha

    + +

    Example at examples/webapp has a simple mocha_test

    + +

    Karma and Protractor

    + +

    See Protractor usage in examples/app

    + +

    Bundlers

    + +

    Webpack

    + +

    See examples/react_webpack

    + +

    Rollup

    + +

    The example at examples/webapp uses Rollup, and produces an app with ES5 and ES2015 variants (“differential loading”) that gives faster loading in modern browsers without dropping support for legacy ones.

    + +

    Parcel

    + +

    The example in examples/parcel shows how to write a custom rule, it happens to use the parcel binary to build. It’s a very minimal example but might be enough to get you started.

    + +

    Language tooling

    + +

    LESS, Sass, Stylus

    + +

    See styles directory inside the examples/app example.

    + +

    TypeScript

    + +

    Most of the examples show TypeScript usage. Also look in packages/typescript/test for lots of handling of edge cases.

    + +

    Kotlin

    + +

    The Kotlin language can compile to JS. The result has a very large stdlib JS payload, so we don’t recommend this for most uses.

    + +

    Example at examples/kotlin

    + +

    Google Closure Compiler

    + +

    rules_closure is a whole-cloth approach to using Bazel if you’re fully bought-into the Closure ecosystem.

    + +

    examples/closure shows a very simple way to call the closure compiler without jumping into that ecosystem.

    + +

    Protocol Buffers and gRPC

    + +

    Note: this is considered a “labs” feature in rules_nodejs, so support and stability are not great. gRPC is still a WIP.

    + +

    See examples/protocol_buffers

    + +

    Bazel-specific

    + +

    Bazel Persistent Workers

    + +

    If you want to speed up Bazel by keeping some tools running warm in the background as daemons, there’s a good readme in the examples/worker

    + +
    +
    + + +
    +
    + +
    +
    +
    +
    +

    © 2020 Google

    +
    +
    +
    + +
    + + + + + + + + + + + + + + + diff --git a/docs/examples.md b/docs/examples.md index f56e334d48..2e4fd2a1ef 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -1,12 +1,13 @@ --- title: Examples layout: default -stylesheet: docs +toc: true --- +# Examples -# Frameworks +## Frameworks -## Angular +### Angular Bazel can run any toolchain you want, so there is more than one way to use it with Angular. See Alex's post [Angular ❤️ Bazel update](https://dev.to/bazel/angular-bazel-leaving-angular-labs-51ja) for a longer explanation. @@ -31,7 +32,7 @@ Take any off-the-shelf tools, follow their README's to call their CLI, and assem This lets you take advantage of the latest JS ecosystem innovations without waiting for tooling vendors to assemble it all together for you. -## React +### React Similar to the explanation above for Angular, Bazel is agnostic to what tools you choose to run on your project. However, the benefits of using Bazel are unlocked as you adopt it as your build system. @@ -64,76 +65,76 @@ successfully build your own toolchain. There is a basic example at [examples/react_webpack](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/react_webpack) but it needs a lot more work to show everything that is possible! -## Vue +### Vue We don't have a dedicated example yet, but Vue has been known to work. Follow https://github.com/bazelbuild/rules_nodejs/issues/1840 for an example. -## Svelte +### Svelte None yet, please file an issue if you need this. -# Test Runners +## Test Runners -## Jest +### Jest There is a dedicated example for Jest: [examples/jest](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/jest) -## Cypress +### Cypress We have done some early work to run Cypress under Bazel. Follow https://github.com/bazelbuild/rules_nodejs/issues/1904 for an example. -## Mocha +### Mocha Example at [examples/webapp](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/webapp) has a simple `mocha_test` -## Karma and Protractor +### Karma and Protractor See Protractor usage in [examples/app](https://github.com/bazelbuild/rules_nodejs/blob/master/examples/app/) -# Bundlers +## Bundlers -## Webpack +### Webpack See [examples/react_webpack](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/react_webpack) -## Rollup +### Rollup The example at [examples/webapp](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/webapp) uses Rollup, and produces an app with ES5 and ES2015 variants ("differential loading") that gives faster loading in modern browsers without dropping support for legacy ones. -## Parcel +### Parcel The example in [examples/parcel](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/parcel) shows how to write a custom rule, it happens to use the parcel binary to build. It's a very minimal example but might be enough to get you started. -# Language tooling +## Language tooling -## LESS, Sass, Stylus +### LESS, Sass, Stylus See styles directory inside the [examples/app](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/app/styles) example. -## TypeScript +### TypeScript Most of the examples show TypeScript usage. Also look in [packages/typescript/test](https://github.com/bazelbuild/rules_nodejs/tree/stable/packages/typescript/test) for lots of handling of edge cases. -## Kotlin +### Kotlin The Kotlin language can compile to JS. The result has a very large stdlib JS payload, so we don't recommend this for most uses. Example at [examples/kotlin](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/kotlin) -## Google Closure Compiler +### Google Closure Compiler [rules_closure](https://github.com/bazelbuild/rules_closure) is a whole-cloth approach to using Bazel if you're fully bought-into the Closure ecosystem. [examples/closure](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/closure) shows a very simple way to call the closure compiler without jumping into that ecosystem. -## Protocol Buffers and gRPC +### Protocol Buffers and gRPC Note: this is considered a "labs" feature in rules_nodejs, so support and stability are not great. gRPC is still a WIP. See [examples/protocol_buffers](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/protocol_buffers) -# Bazel-specific +## Bazel-specific -## Bazel Persistent Workers +### Bazel Persistent Workers If you want to speed up Bazel by keeping some tools running warm in the background as daemons, there's a good readme in the [examples/worker](https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/worker) diff --git a/docs/images/bazel-icon.png b/docs/images/bazel-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ac74e82c44669cf39254e6a6837a7d57d16f0aa7 GIT binary patch literal 4945 zcmdT|e^3|0m zf1vzoVy#s}!K76z)i@PH#;A9#^)78DN~4w$Jj7lmk)XiIuT##we!p*bnPk+-k2W)g zf9`JI_xt&^@4bD?w!{SqBSOcA5<*7Id&aVe5Ej0&gc|}MJ^2@I!^gN>YfA2Ow&l5b z8Lwm#^NY4$X6omy%E-!Gl$r73`qlr)oJ+{4?s*pT&-0tEyUis#*J_!MTw0J==i38rA-Iy8*ZMt-h6x^yQlC#dw2a8J6dNa z6{se7YA(OEq5szP=7k2*G%;{1qSAgb*)~RO9I9hn+CW*Oc(Lz#^VYOe{TG*2g+<4R z$x8Ok=B^@LNSrR@gaVJp5LZo_H9{DYbJZ(lGEX zif2#x5{Q$}u#mbq(O@F!ek<8jZs*iQ%WKF!;7}1~n#yzyuo=NSmQlw(xMkWv11Mw( zsE!h^S_I+%)ifKl1vc~~3gV){fjzXt5l;n&Wh%j&pu#fN;fsWJh&+JUnoY6zfg=UEs~X` zX_$LTE0!DrjNpw?WFrI!EtUZ37y<$Xx}$*d*w>L2D>*=%2zY3*}MIZD(^6k1*_ zX)ZO&FixGt^gLP?ydfI(7_^FQn}X3WmS@n^u`J~QC~GJLQ8lBPMEe3RoMT`rQ}1v*+#b1_^H+LWRPs|ktf(O5{Hm%oF%HY%&?)tB_AI* z&~f}qOm<^#tb1u{YI~_My3;w8jqezk^ujOx{%+6NvnL;$w)8|->X5QM_H&h$1Ic}T zePzaIG3oQY$BV08dxVMFJs~%*<8r%&M8BH2ytBLN^y!YjcIezw*@DRpU8$9}oZaMi zdv#+q*oTRMd@ zhz+r-96lF+kkPZ%XU!TWs>7T1Dk&y4YZ5J_G|wM0lxWD>u-Og}v8hKd21U#EBm(>?XI@Hba5RDd&$W9Empn-Y|uH ziRVgzqUyr9z$hqsIT2k6^-Da5ehVUnqE}KrYn;k>>t`U zp?;5;l>BBu(k;|aAr>L|b-1ftNe~`^JJ)(B6as>q<46sMoM{|TMZ!W2#I~6BSxC#D zAokgli^++_G&MDoUkmf2wOTI$Im~7WNGRGU1BC=bt}>7#wHN8ID!-P)oHue^NgAM| z0t`qe2`DBZXJ7^aI?>4J#Gs&C6m+PP(ACVKOr>0+p{|s2pb6Hr9-=g%21lw@awXJn zmtEPyWmhdzz}4)@diKO(mB786Xp;1{Rtumv7?m&p6bd00u>cefKq0{v^odG}F)%$l z;UUXlIU0uW5EMqk83a``KqJ`$8p$5U@^+*W(BG(Ky!KtcX?YdNppoPZ%G+dBgnl32 zFw2ux$Ymx?xFHoRCq`nBKgsPmLS+-N8^cG#s07p?w3^xFqE4199zqYsYi zmUa&$HFvkwy>|1{>YwCwyp-495flYGuFv%=%##@o)-!)#oJj=5b%gG{Po zI8H?bt_~NCL8BN0JZ_xED42$Ds<3-UjvyLrv-zJItZabWA(g=%3uQ1^#^d&-foGUU zNBIS>%eQriz^UOOHC^0Cb!hq0AAZ>L%9)#a>E^@V|Lg-WL-FelrcD7f-bnDvaZ1~ z>gR6FG8rTxli3v^sQxY?I_d|=DrhV+8Jrz41fZZHpdT6n`k^7neo(WXg~=Hs!d{1C zP95xiV2QfM>96H^J^04C3%;dMN{4QNE&;vCV{#^gQgDn)iTqkApkJ1f0Gl&Jd&L(C zj$jX@_ARha(nyHLlmeP)xq8g^TqbZ_3C=kUNP;~cCju!Jj$lkxb0@)@tE=tYcaVa|6xpkgU8c$Vr;Sb31+5NxO*w1J@w zENy^jV4JI8@EQW*61W>sPXWyou;@z)?gJ<(KsC5}_0RzCLZHCmD*^>5|0`^`{!sG0 z8>ID#_UP>TpRn#p?iq>XP93T(HKJM+g3C$|YEd~ZNKg)o0+hr08O-Va%A-VqHe;|3 zUl0Tf%^3Dq*|=}U#+6f2oY%nppnj0)htn=!JG?F;o+IDlFXvXW0I_C`c; + + + + + + + + + + + + diff --git a/docs/images/bazel-logo.png b/docs/images/bazel-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e43cfd0cea4e857f6fc11a5594593d6b1424358f GIT binary patch literal 12169 zcmeHtc|4Tw_xC;a?0gg|MvG5KmV~TBDy2dQDQ2WdmLb_=Mu-oILR1)~M6#6ZjhQTI z5h6wn#u6%wk!_eU_jBL0e7?`}dOgqY^?LsM`D3`vb)R#cbKckcoa4xUb4lyUkY};cn&ZBr;joXZ$2psG zu4hC2-<&f90QH@R_nX>Z!tG!3YF5Z~Bv zs%}b9kAekZ3#t1p*t4~@b>C+ZF5Azwgq+6|zTtvVmN&J-t zTpsKIUce&`rwAy{a(M^G&w zCtCvopan35hQnd!4A{wY(t!q&B|?6?F#B?JHrra?6Fs7!K@H8l|~$_uZEkPj8;mE}T)l|ik( z&iY`5>txT3n~OF9t?%FOsv!0GZ*RNA=$s~0mNqWTe_=9v4+{h1$bddy+{uX_w8;t5 zQa^T+BJeNdv>t2RzK~Qi8t9HGQ^K1~5azGsL2w_0{)KDdqtI z0l}Xs7OXqLj(~z2B9|xk0b^C+@%Y<_O;Z!}zP`RN)@~mm;Np4!QYE;iDk&3D_SulI zzU-a=fIrHMm&D(M*hN`)bRO-2e@<+P(mmvLrY(rho3FZj;gIKO9831tpx6X=gJ04YiDWK!{zeXQFbySg@V1@wX z{$pr}utLzfUOy!uH;>C?oylQ{ejuass&?z@2Dj7#|0&}`Vn0kw9Vh-J_robWF2E%2 zUzR~5asepqz?nvY9StoxDaauzYrePUf)mj?6U8+}2hxB_0Umsb;J@53@B?yXZ6olX zGbMJ{)YP1dLjd|JKpK!H1u?Avs1ddaii?maH?ZgZdA;2hx#msR_vDFy zU5X~mw;4&>BsjMVqen(YSZ*uBR6k-`WOz|Tzc+eje2cS^n^Z_&P?5u7ZyPG_?+VA$^~AVK#NOS8h~;I%J0T*jMjPt%P3M=f-@z! z>JR)HmV^(GqsNxYneAcAyY0uu#x|_%ff9}qgag>xjtB{HFW$?2M~h`sZl8qnecEa= ziow0M<1##AfSh}(L%#W+U!3CcUa;eOqQCsF(Mlv9$HS-AbHRat6^nCXaY{rUzb}Yi zx*A9fu_d31(#C7kizQ~Fe+J44yjI=7=Z*WvhbzEGq8g)VvKm~NXBlF1wp>m8ep(}^ z!h~VUg-{OXGH#=EfHkGgx;^0gMuOi2f(~4V2!JNI$c`_eQkW0Ee=He7emxu}h0*Pz z-sb)77jaIMypi|r_gsDje*4EVHTO*o4@*4csGH0%p=PrD7 z39V%xe$@exVX(bXoY7uMMt-9(Y#GdY(7z&$-ZJFf*ItIXE(Vut^-U9B63lJ=?|)(d zQ8_N4;5meFxDbfJ6Q`?^Y*h3)dv{18#swdhz5sx z?|T;@uaU<^UnW9;xz&l4rc&lG7rsH@cPyJZxxCUfH$KK>GRendKRELb&!T9CH05)< z1+uLuvE@yNLUt~G)TZP|sJoxt!j~7;{2~myT z95x9|GJwXK4Sg0AYOHPyJMlDkk4vrS=KPz3vv#6Ne5;d3!f<$zJCW$3EuC6u%IOqt z;2d~QV%JYmW>sVHnOhhIB3x>dDdSG!2wY7BF(9@KC!5;fA8I4|9R1FAp1= z9f#a(J*_Z*tn1i%0Bd|T)s%BlaL8;op}r)fxC-sXR+Xn2b-Z(Fe&BTpZ`VUi8bZ_He0yQxTCDMJ;gtCJ9G}v ze+gRNOBUGAB#q=5%NR^~Q7bTx=S)~DO^ZKHvck^Wui#s}4OA8ZcEP(cFQbb*?a9}*&He!4+?$!K?*-9cKF$qPShW3rlf8T+C3C`{{OO``fcl zjOzfNfs&qZ@AJJ{_1c4SfPD5K`Ia_U+q6?Ljk%Tq1wkojE$cy0juk%du$zbK;pXgF zZ)EKMXxj4O5YCAQFJ>#tRpGn?0$besSp#r3UH&SwUib5e-wq$2c&^;*l2DcK9Qug+ zUcuh(XAMZ9p=qbt!vS9* zF9fBIw=Lw|kjqfy=1`oDA;>fLzD$fq0Nt<@bc8b@3ux*yF&}k)(QGBn~$an zVD;!6q#P1Co&2@BX`6)RSKWdLVk|^}d!?kpB3@80k&M3gHqX>dd{E#u@rO`q-NP+WV}b+QZ&MEg}{*#s>@6YvI%ISRIIiC3bXeP>*%0{l zj9{50UK71(+lvxCNrz|md8~nJl@Lgki=mIGJqNTXSL~xnEJDKt!)dH$-6uyoE{$P` zy6m`=fD5}I3|YYY0)<#GEBe_>+6p!TraPF&74clT!@r!*A0`0C`7mknFLP;cyX9^H zqTCQsnjpxzN1zI?6Nd9w&*MeKQOMN5Xb$}d5DZ8_nMNDUF9mR`|I$(r>9;A7+U(rh zm*_OL8Hq#+Gpn2MxNg~-K8$Hct&bCU24Py?di1G1AYA>+hI`8|ePT-Lj&YRf(K*XB z`Hajv^>pDk7l=l5`3lS-O4R5pdt8mr#}K({`gr7wVU^cjK;Uy0 z_0F&%Pr13)IWn*T$7-d!0|eAUrRPE<_OmO-bpI5p@x}_B6V*YVd)J2g{VU zkD|9pLm_F`O1o8SjHI!FvbI0>klJ z^wfHjA#RxA<^J(fdAz|!h40oK*Ij1a&6b#7{L z1L5i2Z?iZp=ZUL9#Jiipa6uqU`M2*bDAes;|Kk=vL(!*#yJrP~EZu8q7P=uqa(U6+ zIrBk%hq*)6oy6|^8&*!;6mdUE+JIcwH**7DR7(F1r ztfnc5=lX3&+quY?c7=gVL9A}qVBmS0nJ^}pKXP*%qYo$iBbe$|kumbVQ?4nblz3@C z%=JUL0EQN*ytV4N+FS9roza)%dfP)q&ZF9(Ng0qY>{JZ@fX@ z_iEqiaHAJ1mp3xCt}&29dl&mbR?P zSdmkb>Mzo}u~BN#&hFrr-WD~rO^UczQUFvP{bY%b)W$sp{hJ!4siGXWm!*Bd89FVM zwSmi_1MR1|T6I^{4>^W2(ciXgo<3V2IXAe4iR~e0#%|4~#QP1B#68iLqd{Rt~Fe!lmt^>iW$!(W5T4md2aD z1!8vZR9Xz2tmMMqhN`MH`s%Qamw#{9lVRq=3hOYW1^HHu_!)d=(A?IQrMP>hpxEOB zB8qLr#n+$|r18e6Zs_dskCOHk)Ax8BEn<_n@bCT*;Yr~$ZttqY-DpL6`IQHwK5!OB z#+GL3<@K4qNk;5NN3ItmdAGFL<{H-xKs^dNGc8^(+Fy0|?b#Uu@rG(b*au04apA{X zJ$Mcv7~^V2{l6sR#v^;{Ii0R}l(4%kgQn)0Jhq3Z&G%h%n}R!E>;2wd&)K^RA)NNP=^yjL)6$e7 z;D}@Tzuhl%vsi%_otqov1xZoig!w}QUej+>|O0Ms!?>Vw5 zp6HswQZ@P^p3J|03nPE#vsL%t3lCAwQ3sXxaUIYS(Cq79l3@ea;a zD3rw2$Oo!i*oBwgfPj)7!h|W!an1cZ_=E9<#>VWMi|38q$~Lvny~-wrzyH*AJXmET zGdMyz*tqy;`(z_-GiAONTbHq+f6}akQLXiC*KrU3UGW6Z>(ey_EdcrxugSVx9;n7< z#ziGEaF05-4r&<5GYB?=gubbr96ETUQY+h|RfpXooZ~pBKAr%ctYU?KVPVi`?qP)YPVGgPcD+6xxuIO`bwxQx%mUg03xH4;VE@tf7gWA$-5W_ub0K8k zSXvk*I#LU8pNP(9OmXrbeiGHAZ=CMdnFpoxF%5IFhsVL3|5Pl0A;Hfnp-gk>I%Q zKf_1Pe%>u}ZbJXdZC<|$29ofyZzpGZfvDhqheH_gk2CW46i_JeX`1Pipu|&}y@-P2 zx%%!|oz9PLQh*?yy`?&Nin9>jN5?u{H)sy0b4bJGC8hj@eT8{Y@%?jnjC~p~YJn(t z7YO+3zs(Q?A#CcVbu-G3g2DO3i$=ZE%rNnTAY@Y_M=TB6M8!ajC~Gba1!uK6cRq4+ zBMwPjIq-ENppKM50!to&NT((6s56RBV|mK76g`HMQY7n=z+&dqj<%A2dgD9vTB_w(;KV(C9;<*pSXN50Tq{tUEn%(99elF=Y);rE%W z^9w3NTc8Lb$1-$}NHYywIAFrJC98bC(bTfYJtK7)&U~Z;9xbtLdB&A2>gL{l#%3Cc zYjB>|B;$-6ehIPOatYpc!u_Qoq{|MGl!Y#@o&84FcfCAQRKJu{|3nEPy6mEO8F0mE z@}@WE*PU@6da`v(I&WOzcIJx+Bl+_ZI@76_>9dbZp>XgADb=b0qOUd^Yq9GBE?LOx zc_qpwTy@<58LlEZf$C(p`e3$1JB>S||{iTB0#T0~D0o!;J&Ab3Hp zuhJvC-N?g)e|a*|Ul7b+V_ZZ!1g%eKXU>c}B87kw0)4o-!Bx+L`>4GN$-!DYaax(4 z-_n{Ond3|_+*fw@xMj5;qN96d zTNUW^$i6QGo0?wH2UuzGh7Fy=Ucpq#LEEv0K+QpyBSRkBy0Y!BN^{~WhjB<=U}e+% zyvJD8%{3SdA*=VV6R+FShy79NOT3k@k*vqWeKaJ{(eJJV&JYJYNs9&vc$ZPNyI18o zjaRy^eE%6-G?Tx?8fxrVb9rAgWKvWbaD7qrQ>m#do3G7c^=7G}K6Rw7OoVm22j=;x zn}=8`e4YT4i^fe!jHZvP&KzR=a@g5>3xhZ(36uI+zlTrzX(zom9VS9u8@MN=&gR~x zg7AIhaVKtL?Xd4eT+$T%D`?ni6nWEouiDyxzFTWE*ty0U(_^|ZxkqR*U}?7`l~ zK6Uh(=~vG>Qn7^hB7a_BakB1-UxrCuG!n~-NF>_nH>rR*+uW6gNDx_7zA76AWu=1Q zCL9dcA!KH{j!e^aKre_lu~^KZ2^`_XsJp%)ZRF8b4N4L{evKUru^nr7B5siu>}PwDyhP&}$qX^K zO4=pVfhGGESFegUq}t_koAVt`ODA`F?fz@z1#RNN(SLl(H`tP|p|O>vypLuvPjo9; z+<)R`CK)V5wXUK0<8zY7XX^xZe3PA+kCGqQTe2hh9ttS-~86}h=;v;OA(H%U=)?*v8(6|UZ>#Z8Y2 zY3h^o6nEjKcAX$M4YOPp1NjnH5yv2ne~pGZcJOkR=0wfD_8({1YmNBucYOr67%n1T z8uZxoZu%@WSvVzMWh2|s5;<291MYfT~Z!!~4_HJuYx^MiNU8#s&Tnz1+dh($7q|q(2e!gt> zq-e?`o-%{A_0l~rms#b(UL;ZiLXsGaex3c^$v)llnGeO$!7OSrHKTCEK@5!WHib}D zR5L1WeR(yM0-yj$_PQi@2HU#VuXrKkNziA&Xn8#)uli7M%Cz>joGXxg2qU}Ba-R5p zri;NnA&7h-|DEpXl87kQj36f0fvLqkl}DCewtSzN+G&AzMn((0Ble?H+g^4G-7O)Z zlIyLl{%G^ecn`f8(YHc~0nZRN`I4%3DUz4wpZC+;6{#zM&WF_WqYL3)Al$5q!C@ZU z+sQ|-sVcu418%&M;W;{PAjayYV;|k0;?x?8Vf7OWOa2Uwxk&RbR%Qp(uR@kuv3W$8 zP{r%9`^0M2fR5l8V%xFFUnVZ^m}Nycon)ea91rnfPD3?d;}xjL%Jz^0RkJ5P!bc$R z2BZPi(dw7Zx!&l|W)N(!An5U(J>gYHVx`OfC`r_v0IadU?Xo6nK1s-)z20wn%(f(4 z|CO6t9f}u7v;8f}&gTP#d8PQXCBCLcul)ca!dqt}b!9Z@;|#5Ia^D|0=c?amisv+A zj2!@K(Vmc+ZDGsfBSFv%jW5-U=XMIME(ZmOG|ZAN@{o3HThec|d^jFuaKH2_D8TW$ zO{>hG;vQJif$h!-(+__8F(SXnf@YLm+rf`sPEj)>tGkt82hB!Ryes$aKqZUy zF#&vZbIi8~Wu$`+kQm1ER_D0XE+*hj$9`0@B3RDFUKU|~x zIo+$@G{I$wrLOqst+WNM#G3=xFK-B2@@~pAE&4X=uPcA!sn@=TKlMRWS->BtnforV z$_sZ8m+aZupT(b;j*NDxWO<<*z~;-hhKx3J9Tn$b!t9T>0`ViW$HTMed+pc%ge;T| z^Mnok7srBLRbBp4U?9d9CcNBBSErw)RSko&qhWSu`t25_OC&sE*-9yHI^^IpQ`hcz z@SZN3xoiK^>oVzmQ69McE$#!M*6GHTtZ)T3`t;|VS%ofbOrr#9=FzyJi{=ppcitE1 z5q&|*1tSAEtw1{z{;TR60xtYeV^*S`m6bcb3H7ThygY=Wt|Zx%oCMxgSYfS9IrmR( zdxb+L^X-={b9#3)!AqN<1hK?w^rGcEn(;b|_73G)9MBG-Q69D8G)jnNZiZIy+0N_h z%%S9JR4jJ9sHpWyd<){fH^7K>rS_8wXE!ka53y!;_ zFUvQXu%q9igmxa|bPqslgLjmJG~dt5!HRS4xR zxCT*}3*2qpKCkrBAU20z;w*j7dekDpSg59vG{teBaDC-v8Z&61oes#giR*v5ptWmb zwM*yys8!BhW&L|1W6J^&?VTnO?z@c*h&G?`XePLlFjkWs1qo0sR(^JOW|y>=GNN;_ zH}K@-@9%wrW zoJa$V(qarCrNDaldIv-7l0nLmomq<&>D{f1wFrpoYn zKYH>0S;M#NoK#87Q*!&Ewq~o~BPuO_7FC4s;D$~GH7+zEai?4*cb(dF>!>Plunuti zJZ8zP>PJ7d!Lv=putv&=TY}8XP2NupZlkt2w~7CxKga|rq~8Wx23YWIu>_oMv}%dw zRF7oLme30FSMm`Nh7_2WKU=6kj$@5Z6?lo0vypyPth zgnRs6_O@B>P_~;=OCGd2i2>ywoHV5xMXvMrVQM(%#kokTL8z+?spg~9&4 znY(^4SdsjLGH_v__5)g75vrX!q6OZ8pIl#mKifQejhoZB;BmS4i@J$r<;!Zg;s_!&QqI6ETzGqg+JG0j$jD{q zf`#)Yv)@s-zWe@?wA!Q0gP$onaT0rcE26(MH_DHRMtW+Hvbb8VbWQWtRI$8la+fVx z0seFCm8q^*J088C-KEY_Z5*Dh{*WUy^XXayeUYVll~0mwwmG`k#>zJtIDMbzyrF1E z=(-e^|0+K`-q^eNlrS6FMGGLMc1TCF>pZ_>$4w27(VVTec$hJ9qs*p$nxgrAOXc%8 z{SE206*wgsceR(8lEL1i`YbC-gXI_%_&i>nY7L+`!eW0Wx1e$1z#+CJ-yu&N5C4RMf zeC5n+ryQ%$qsgrUB|9kQ!;nWiu)S%)ceKu&dKAIO?I(H+bg^Ev13fmrAx(}sjyA!J%X?=o;JlkQ( z{ay}rf2W?elyaH_S5s&NdR>YU+d(_=5QMUVe5j8O<;2H`{@g~_&q;&imMA0k8n#?4WfZOoQX_q0JsdFFa2#rbE%P18~-Nls+mM<;dU#@U~xC6fxI=mo_jBtv;9c=E1#1nJV z>AN#+p*b>YB^7pg*N&b){q~E5rj{~1SP~u_fMS12&Veorptmw`y7nK`ebzGzCCLr= z22@s1Qg4#N#76%uspd^-MS}PjkxN8pMU$(NgVP|Dwhokw0~h9#kXX=>$-gYX(Tteo z$Png9n00=oPY+;(d#2Zceq-7VXEL$%R}E!Y+s?qYVwDh)OR4C+;*i^X8KqmL9(}9V z{0mdnNeJc1Nwus*{Y187Q%*EOXQB#iOU@~|{JCgNJUKB&jFTZ-W z&SCb-G5_%kzP@UFWt*nF?%l+O?~tGNTW+i=kzh?}5BsyI)G4oS3B8&LQnq|Ld{_;2 zZe*$(3kRn|-;Z;%ql56c(kqBa_M~qAe4G$^+pv@DIoFs0ln?q{x_kn&%IzIV4xTc! zhbU{7qgTHJ3%+=;Job=jRtLy7rZkt!*gE=hV|wXd{wtR|Tz1?Nd|~;*lFfSR6OMv% zBD8PCWV%jki1f;DDsv9Oh`2!p6XiM3=M2E73UznZ){x|vP2uQ3{V~FS`CN# zW@rvPrdUeCLpwg9g7yZ0x+ud91Gbs)F;iQN7F6l{(W>0T`Vu5H z(aCp-DWKz52MCz(g-zhJHy-D80Z$9u;+Mt+zIi9*Ec3qNjIs014O%Yh`Er&-QK_r2 z9|a-*);5u;442rDN1?kO+?35%Tod{cP|v>a26O{t?FtlR;M%Ra$&_^tnS@c&uf|NdoI< + + + + + + + + + + diff --git a/docs/images/bazel-navbar.svg b/docs/images/bazel-navbar.svg new file mode 100644 index 0000000000..8a0f6db853 --- /dev/null +++ b/docs/images/bazel-navbar.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/bazel-og-image.png b/docs/images/bazel-og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..25b634945dd32a489d112d484f8fcc24c16460d2 GIT binary patch literal 15253 zcmeIZXH=8j);5aRP()Oui>Rnbmo8mJP(VORNB}842O*)}U zM-Y%MCG;XShJ+GI0;KTWaqo8=$2jjd_TFcl_l)ny`Qb3Rv({X5&1eo zlYA$cn3&jf9^5l#Vmf?@@sEWWcw&0)od)n9ua6eQ$Hc?Y$M1=k1Jj+S9(E3wbljde zIT$-Uc^cr^>7dHQq@t*E?~bYe1Yw%})kSRZPhziCvF?&Zj>D*0X(jXIArVq&gXIG| z*SPcIBDQ=wH942WR*$-3AJn72qU7{}bLIOMjKzem&WA6^5i*>N*3R^s4JJ<~1HnQUO#fW{pNjvX(;v(IG3ZaT0aO3=pg$}EDE_~Z z^q&r5fcAeW{-;iVNcv+C1KIycDF64K^WUSyc>0G<|NWppY|DV`iB8;j363TyT z(4S`eAHn+%lmP7hT<*Vz@<@Uf)4yvA?d}5_F4lTCMWgzHjK(cW(*kmdsrg1giPp`Z zwfpNO2qLy=cf3D@xV5SnG|2qALV05!Jc#m0+Gk@u@?yaD2$The;o@2m{U-Rv{?Mh; z8`faGExR7PF5}DRkHziv=mhv2A1hO+R$eXNWcv#Jy*w8abCfYmK0F%J9fg4ae4>lN zK;+HVrA&TH0DZ!(V%55XK{c2!+*~x^iYqQ3_@NNPhYTHuG0zl6o}=EkGk*-9fu5E7 zTwM0?^=$R*h7K%V-i(Uq9`<;H$?>;yU;Fl&Lq5n3I$E5To*tv|&|~aO2r1`K=IYPT z!v(?L+e@9}nm<{?Kn3mj{m&91fT|(7xS%l5W-ejTDq~9 zo31;g%m7oqEE+S#cnq6s2~(@{<4(ND$5_Ep&TI(qEcsDD7ol?TtphiX*=;@$D`?_5w;lV_pn^U3~4MU96l7mw_#N)H=&CRE%~l z8~~gI^SEDq>y6Tb&|?85wS23!U1cJOSwyQa1~dX8QY1{8q|NxL+u>{~>y2=x*&Djg z)KgUh?A(jj#Uy&wGkSJ&n8~ItyXdu)MVs*Mz=N)*d+9L|xKv^3Bwe zW*UHSM9IG5g70?E(n(dTlM>n=``Vu!!7pm0D({dr%DUppHRu#t$X*j-ziKK7EFLLH z{Us$4aYw;yZVS!D#T6r<=EBR&Tp($EFllm@Ya~$oZ^-$kU2I6;PEQJ-7zQLB8M2QJ zDZ6nDmk}XoUFYkD?l>ua+t#^Ic?7gy-rlvc!oA}1b8rvB%z6gG2hCd1wa+WaNJ&bQ zP#`-)%XZ_0C2s#?I3`gsp*H_z%S(u`L2BtXzyW9%3$XnpWF`Olbz$Lh%1WVR>GHC; z8e{nW2!=-i7#?poWG5jm4)J->JP4^QEPZUCe@1GWkWOHPy_UiHwC3X*J0^3Qp0Lyy- z+j)c*6P39n{W-W3pepj}v`S)yMeWo1(H;V!&#LZ}(Xh>V%)8czi1)e9Ca(n})BI*v zzhp1~D=e4*AavPK$Nk7)W=~B@;%(k&PM@v=!&d?|PD&x%X389Z^$q?mDf(d6+Hfeq zwIEh)|Cd|!>_shile2(d1i(P803OjZ5}aegZGD-ufY^B@J&NKiN^)Prv z)bcU0aK2{TYemR-8GZj^o}tw>G_F0zxYZ3}Yc$)QZ)ky zG_5U^5NWjxa5tdyy&ZOk_3rj`o=H;_xxxI1J1SG;L%QyG>S;ox$5b53|c< zTMVAIwrBI4Qv^PhOZXN^GDEld3;JO4AAT=kzCn=fKMyA`R*}A=x&Lvtki$$ap>3uP z;C!e!141zPusZzB5k#fK_ zx*|%FXKvv3RIpZ7J7bW(j&r|(kbl8A7$8JsD2|Q4YIV$Lk0UB~c>C-}AN@wR!dY!w zlN0DXp3MuVIHJu)ARM6nI}_gk^P4Sszs)aL&cSp`HTW$4$dKvyIZ|u|?{6TRsVl*1 zzdl%!QtExFtftmLiWHlmi;~>h)*8mFg1(N?)~71FNh89?*)Mz!GSQjrdUYz|ysX3X>}u4~yqTjTi3(=k_SeI)>D&=fQg=T)0Pj!>7(Fa~e$W z))gd;kNccPNRio8r4{|=zrBXs0?J?+!%F^pU|06VhOl^2@{(9qi;~bM%wSZsu$kkAlxWdk z%`5$;#bMdqM6XWA?1G9+%2JhjJk0Y8TlEG^jcdO^H)>Fz%S9kxt0z^Q5=} z777M(v{>vy1H%nM@h35uTT$#IXcK~oRpn{Bgjb1U=Iv`mf}DdBp6Yu~lfY?`B0T8m zjGizL^kps0^ZdCY8o%niM~lba6ciQoEK69Bv_D9mX$aor#-1I`Um%wyK#rhS7*13L zQ@GO+fgqKiKBE221}9^(jdq`I4U9QlR0*u;QRPElj#nD9*cESh-zK}e4spEA9SWLl z=R?)5pwYt^|Ky}J{hFcC(1Mt=9Pk{#c|IZ4Jm*XTPDY)4bIn9tKe0B_=d{X**pK3q0&y(Mf#SK7`7yMFh!yLwuTwJ>9E6inSOp$?V|X8=@fX^+V&EXQVj8z_wT`j9b?6>m*`p@`pL&DM4k^pGL%Bythr0on|_^@|Nz6(ymiRkHHb` z`}jBw%iX#Irv+AzgX#W*{jjEDO)IxXxxY3qmL>DJ{F5pvKFUT95^ z!^>;J4&ODRnPc-Od&45rWPTmj2a>UYyn;QUtpjT8N~Al0FC!)-dek)Vz_xW&qJ8??DNE6^1i3nW^L%Co&_!lt5d&1c1DDXh-S{%p{_#@ zqw6e;z(>PXd&5CRnJ928i#ugiqUJ+xY!^ao?+Pa*06!O zKWpskm#;_6-u3z;tZh$-1H?ZJI{aP|k=;)=vS1`LcSV)Hf`Y<2^YWBaO)eC1z%zH% ztSw?ymSY0scyn^>O1L^Xo4{WHR4=yxLQCf-aMwy#YFzEhBi)=UHQb}?Hcf4v8G_rb z>ZgHN1O-x+`=&y6=%Y)W|eXkV%H5co%7{NH#~&y&i}I-MN~* z>}N-w7>9RHeEK1OsFJO)LZYaOkKgCX-$2*}Xu?ycRzQEa708FWFRVsJXwVnqUZ$pt z8ehr=H8l-TfxJ^pM$X!bP_O7Qt-NjiWk2J3oXjHUe~d*pw*N*uJLt zk(D$L?%Se_AGz-NT#K!wsOxkCwmGyPu`GLy-I4Q$^5@!HnKYoJl(oyX#ymAX=7ydM zce-ra!ZP9z?QlWQO8Vwxl}GHLXnkh%vj1K-a$hmnHw(0vnH2v($cbOk&84e?RZMa$ z`C(V-_Upa8RER3fSGkk9_!Zl zPlhWBB8R(qqfKaxl)4vKtZ-za66!Y-?1%2SsO0lG$SRngmpg^43URpwj69a0`S(9h zg06!5gsH3W1m)g}K$|^4NQaQW$cAdd4v_t;MI!%HT#hrH7e9u!57Q__)_jiU#P}MA zXZH_v-32@amR+npw7B>beW%dwK6x+zOe(A_Dga7NlC$wK9wv@x(gb7~NJURI1EK6> z>PaiYuE8*Sn#V|_+ulx@m;Hkg+3;SeAPsA==W z@`2ulrS1L?mJc(B#h8m*czG@EE3AL9cXZ5woXN@+C<(NqkcKUBGq<8I&ISVbcl8|N zhhZ!(oq9=G1nMGC6hj%wzcQN}13-s0K+`vr(^r69JO^c9^Z0Q~4!_k2%;@O{ z*_Cb`G4DGjj)|Ln1Hd%doii$Ma5pp$3bXcX%U2xE%X5o*8S~>^0Sl`_0+2~?()jdl zC}+cC4>o~fXlV$`YN(->Xq521w|_b$#KeFs8Suoha6bcx`rPD7md= zof;Y%YD*sMKmXfZ5^s3R44uK}(?1pK&U6QSiIX`GRe1>kOqE^yu~J1mhzV*-cEx?F zTDT^3Q$!P8ui`oXw;%&oW3b%ym;2lC-GtNYHRPELl%sV&@%?q+kQjxUOueza%uwQ! zbR?V1jN?8 z$!u-GEKP(IL^MO2U8Wa+#>H=4`7*`=el@(Y<>coF3jd;3Dhn(HS}_nO<74W2Z0ou~ zWh}r)tw5pI_JUKLJ-Dr#z?yqoz&(;%-lV$OWjpIs+F_`?B5R4;E?^+D!;FRf!=$t= ziMxF**3AmSVVGY!yrPds&#v*Y{x)`{FVK0it6S~t?4+|r4A1TUWVGeVleKM) z!oK<)I+FrjXr zQPD2~7C+UUj!oy^Xx5ZnS!oVUK4lXp2gygUqMdR&XodZCxR4dGq_3iXyFEKo=#7%?<+%Ryznnk|xUGWG9WS zr2SJdC&jgEe$T609Sh(__!Fw&QvzJ-hET{$h=cYU(UO99sUMywg&DTS>Sy<~KaK}V z&=N@NyO+eg<*&ytzPcgT%g~tyShMX6UR35&PiTCvWi^SSb9%{NH`oBlJEy~2Tj4)< zA=W{D>hSXd+P8Bs&S=i;rQc;bC(!t@gUqKjJhfsp+qM!U3MM?c_!D?GE}0F3^hv&% zY9gB4Kz#6+Ul9vR^m_76@meTmx4m`+i3c*l$R|qvKW``L4Za7~EMDnJ=k&-ePYv$Z z&`8`u4%IBm=M?~)cCSxizU=E#dQei0M))A)n$*2#&rY(6OF|1hf=Er63^Zapqz{u( zO#j7x@W3iMp2OQ4Xazjmi&_B829^(!H=36#d@mfiqaJxi<$H3^DRYEzIOD8mDh>k; z2dm||0f@t~gGdZ$uC>bu4EtjL^%bKB?|-nIOulbFy_4G%vgV}0J3j>3O+gjr-LayP zmP4R%JRCqrQ4Q$rf)1g9n1ZoRG;@4-h3&z%$Ajx!2839sS6axP4)3SpWUp~sr1qP? zq`c|ouCiNOTj(46(~<)qcsjhe#~~f4_BM`P132#2Bk;ndnQePP4kOM(Mo-jwdiuC- z!IXWk5bpn`h2(LH~~}VhdgC z0%CqZ16l^lzB*M|U=AGe*fz-MwGbD(CGFDogmO0u$z>fktn5XjZe5G`dm%TkhnM!7 zww^T%#5Skd=v_qU4mBcAB>Q+76GXZRQVUVvE-DV@yCdDRoj}WCr*@|@K>d zAo%3b9eoviE98@Af~T@%$$EWJb*9S3svq$DgJNZllrB}s zjtkIlip?(OS*_Kra+{qg!RK~Bhp0^vM#@}}pKH+gnF{UyLc(RTr|JULlq-@#-KPLX_n=|4*%7(cal(4VMZ9WI80FfP^sqOuikTHq z=rdi@_o~(~<^}l(Q6KMHZV9wtRt`*471*tFY5mHRp2Dl9ZmmSKc;5ykjO}MAeZ3#OPc*IO@ z|B?F(4rd@yIh|?79Q6)hTlrnTL2W|pP~6lPPy5MeSN!Z>xE}IL3b`Y_EF{ysK(_#g zbDjisVw4lz)Db{K_JWen4Zh%;ni)ia%!2UuW=9ngrIi-wYU}k|F~OjhR7}!nzDuFJ z2hG2CHXRK9VO1-%4s=$<>Ib|CxS_Ql@moSt(|t9DNf###UA2HdyX3j^km1kh{F8w7 z5+T4_DrrR|q74-lJmNt+8FMTK#j?%u#9fm9$d%IhNwn(Yu3BvuFPu3_S;6cY@RpCq z5U6HfO)oMUYER|}<4YtYa4w)FU#=ifsi|@hE$a_vP_bl`VTkn_DqEIYm@Bs2DMZ`W z2;VL$2pkh8Wf^ue6SiQ4IP56!77%bd;62}PC2;hCw@`rV056D*MuCG1yi5hM8fM@f zrWKF^9%6L!fyqa>U~a!BMv4C8>8GxLjQw2p4+;4|&jOJ9|LAAawcl3Fz8Owm>4Bnl zrJ5*r4F5LNhIIG!-xwluU~kYa!uuU#_W zH;%O%Xe$|8L;woEia|Rb3T*ezXK&keZoPH9%|Uwu zIViB%us^v-^GOGnjEZ-ZR%o-`hlb6S$NQ~Sv9lQ3Tm1_&O7x3D6#M+Z=@R7eo2obvokh4mnaBRr;Rgcw_r>iyUyvANnkHo9^4U zHN8>4xY+q{gz!V7kJeV*n6?iBl5`$V+@l8_#PAq+hsA2&@ly7f>Dy4-5)<|IgZjB} z`~tG*hNVwlv6;_8bjsit9DvKQDl7AHO}{m2Z27>QGmx9s*0-p3RqXV!1eNtNv$v-HE%0ve(;{2C{uD5Oab zsr0VE>$E4m$$Fy=CA-aIXVX;<7RH2pgNEnh+|(wkL+ESh@Lf&nLXZqsBmIB@8%e9I zMzrhID19IAk%LW59~+cKBuG}jZp$>qq1p}tmUatDnuv~6lv@)FJbCxKwJQ~s*@57R zwE`Sa0JVpY+B*9b0IYJf{vaF=w|PWt-c9gGvw8rkSPq76Mvw+KL-0j<$KAF<(ji_! zN|ebl>ap@PaHC^6=R5uFGbNt1eQ2P@JTLTWf|K}|ziS~LhA)1+%4d$r!H`n>Q3swu zVHX7x8^I(Kt`c;|I;IMQ>KC}vchHklq(*V#a4vh}V1R$f-h;TU+}KQb1na=O3yIS? zSk8xmliwc>)mqYIF#!(88gV%3qMs64Hp*|KDo$c>_fCCA2z9|vg51Z$t{O-#^^0>PD{Y$&w*;yINgqFBg(Rwk&7+q{d9v8{600?vB;& z^u>74#-Zj-^oiNMRl}@<$AJ^NRc8jH)Br!{KHZc^p|JagTpvG3O{-bT6s*al6ie5x z?#`dU=^ZG*{SkY@#I~)2y`Lfbu}G;EL8p{iCWTFxQP--c^YY7BMd#qC^(wQej;g8g zhPVWGEDqPkO<0<1Qz+`|S0XpZfPLDzc-Wm&`mfMsFP<}$k8DETaHgEl-#id@TirY0 zodk81|6HgPq;7d+X&gk%9*_l^;Nmmee3?lTTy2Bb-bzqkw@UdcNw81cy7z!x2!b!} znK>f1_g7JO371q$h+o#z;Gn`L1$cjC!(IBlg(@qrdMH*fah7u0){ttkHb{Ffe5(Wc zdir)1>zf8}eJbIZs|5@0-1jx}AL!zQH807Mg6@0#4*gdx1;%AxW8bb8DRjWN;S;<>!xlvG1L3|38pdX+l4s=-`jB-7`kh7xNM8td4kCSi(3!-0c z1;O+uyI%{Z+CXuf4hOv564vW`TUg;{7B0>=wpKy*MJv%|@`Lmuk6E9EpICJ6Rq z<)5os=(q=h5UB>?boI1V&I$E;$}9a_PW04Q~n9)~?t|V<*Mv z3hCOD#`-oIbp4=t8|C6SLC&a%Sszd3m%HAC(3wEID`90YGV#l;u=~`0*Po(h^BAxp zEN^2389e(U{A9jG`5x$k$WU@DJt4(}BdaZO#C4)YrSDPlfsZFXLgPHYw*n--=-u-T z{Oqq=tk5KVF?e8+eXn4X82^OM%MW^n;oaom$sY!!2D{7mRx4@Ze*SSu$z6t_3A2t9 zx-{CT4YDk6;Xe(u~?dG+~n(xMimi{BiZi?Me8r+9)RhhdON4R%j%< z-r_M%T|&21yj^`lRfDT)zyEq4sVoHT|KRfi@uS?d!(`+0JfAF)^o>F1p20WCxPG*X zv*jBiir6-^0SbCIo|LjxAa1Qi8msW@IasarGn}eXKd4OzhX*h3e16)y+$LG?wp10P zUDTvtS^n;<(N#C-RlU^L21x1l5Cbc<_$!w#C~wcNBV3#S_fnYQ;MYW8vUb;a)|_kF z$Sx`|7uaK0CD?}B`Zpuvk|ff%{8s1L=}D54J@?#eM@PWcn+`*JE;!cZb@yS{@fFAUcdhV6sb?21W^>fgCN{09IS8wATa;rPez+ zQZTacb6IttD^{&g>s^C9a&IG9BdKtn>Ki%hNSg5F7Mr;XT)737jozs>~%F#ys#iS zhX9h742+;vR=qiz5YkY@aW9bPNF?oX2MoEI?&Rohy@nnyvbC^5CcZ7Qm z9aqTq{K#o|uON4c%bBiQu~oA$;hg7q*x9NodaT!}=nau)90#+{h`usRwW zjyIbMXZ@ZQj#0lIKXYMI*kH-9(#1n1sviGv~m77vWgI96PK+< zrFY6WChH2*2y%JlHRhaUX(J${;PJvoghe~}t6GctvN;M-t`^l1*R;{tnxM2{|IW%l zDym7BvRf5<#$2LOpmqhqlc%yJsL6G{vyHy7uFI zK356781DoTnTKj#5QFW}i^s>xu8mZ^Ezcee9>^w^SIp1nHunadft>er_vA{gIGo|^r+Wu z0$`H8V&zkXvTfhsWWPoVjoL@ZZ|j~MoE-7eJS#Zqg;g9a?39#oNmHFncF%=X;cVAV zB9|Yh-H^7|TF(LH7llXM zbFiKJITPBYn;pluq;kpGetk+n+xH|8^{iRAVDZH_OGHaI!S8d8K2u+d5Tg_LBVUD- zSHhezIY0`P*kF`{Z)WWmsI9HuftKid%oE|t0YOL1eDG)HFeWg#nR$qxs#?^gG9@F5?i7Qyy9*>6u0J$qrXiL=-?>5E~%j--Q-#))et&;jU)7^TBoFT z!P5#64T&GNIUe8J6+STqsy0-2KhQyjB&DHKdcQ)73Wb&XIEUfaNzMu%zY1oF)i{cc zCvIiRSXD=Zk@Pb=&O=>>^be@bpZR)Q-TiD!X;-6iAABOHwp97WS5a0f(y}m~bAC2H zdo?!$>%+N2k9K!CZWTOzkLSF9-K?%$>OiSXzT+ous6%C1!99=KaNpWFEx)YRJbBY8 zMS%8|9Z7N88~BS%#(u%pwyE?M?LJHx$650+?MBfn9`N)`A`* zA9gj$;>Q=eoENS$yOfUcf)feF0vuMt(c-A{)aj2ZF_ll@c`WlYf+>PhIQ0~V zsx+VRNl@`(vc%+vC`Fh-2))m*X_R>U^7Lh4%X@Cv$oQ#>1ln1Z;6Pj~#2246GMxwi zvfy80`Cv^qYz{%q~~!5i=Mkhy|n4RxAAa`N+k!n9-yU_nT ziq;>jr}&;=Fn3h_h5loNQ+rIe5?mekkQ$?DGJeY>F!LAB6E`XB)VvjHQeoQvGEN~6 zCs=p(vX~d=Wwj$C^X4Yw(Q)0e$@RX(giG&C?#I$@&TtL!dro+NyWa{{7AVq-)eVVf zqhS4_^_L(K~rZu`I4+zr^#$M-Se4xUAcCCo! z8V!+h!setgAEA})ok@}tG16E&mlj;LF)69topwLO@$FVA@^SgKHifrU(c99O5)6~Y zG!lGOBdE)K@;^M$=VvPB1+#33Z{@r@=6gB&mLobQ%p6qF{(R1E?S|&m%ZSRHM>atv z->X8G);Jrc&V8RbWL)i_^kqA0(Suq)^}|$w9EeP57tRnxfj>(^eufV-^hW{ zr}n5mq&@B#2k4v1nzek`o>6hOeZsnBD&iB_fis>%gVOLgH4!x!T$7P^-r6G=Ki_b? zcvZpNqP~4sdE982T4$2r!`7g~{gRySHxtld{IL#83c^j<%}&Alb5-PY@u!Al$A8|7 zwecqI8bPnO`r8-?B0av)YYB3%2#GC&?Bh{RCNz6xYYs|c!H89oMzvqf?VxPfE9}ES zWUSvDP&j><-_@O?>k4&e$GFb(DErzKom~sOcWSxGH7EQgAU7 z>rM1pNhwi%CST7Bc0*q4J4Z*l=Pz}nj6Z#Yb9VRSizoUCrwqbyYSNoFBY*6_k) z$#O{BP}F+7Kyb|ZU==mfWAMj=PLRo9{)lUA!F6kkWDPYgBP6oQf39t+rcL-QLfazK zJZiE%AMq`4wxX=}x_%%M0SQdCmTa7cmNa?N=V_H?ZkI0F5D0&@wU#*z=8PrpyVK+a zQoKBEJ)U@qS&#yjNA+SgSc%g%@P*!8oma>>cbT&#^X((O5;=skXCS863*HjGPrRzM zCp=iI!w$7m@j_{eX}%b=%PAhF=!G+v#iIJ%L`v;YiYngS^YQ(oZ*Ds~Xv(kKIG=hG zs`C;VWv?2g$*tDEc=}T5v&3h41k({83c(`h| zwp->9qhklO{Yrr@p3znA_4}SnEcKt|{9^W8S3p})qhUoWPlaCad7b83zyp0nAzxiy z##IgQxy#Mr4)_;okA9vaQ wt>*n12-l(ifxCwPr)`r5dSLV75EFdp%X44%bMJtAwoE!&2KS2Z+Wz&w0Ok%?FaQ7m literal 0 HcmV?d00001 diff --git a/docs/images/favicon-16x16.png b/docs/images/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..587a8aa320d619ed3c95e534f4715a62d853de37 GIT binary patch literal 553 zcmV+^0@nSBP)A$U!L_udT*W{21{gb%D2b5J$pnWk4%$IS!zk>GCXUQbj=C9K7>v=SO&t_+ zkx5%xNugR|y-Ryn`tR#Gz@67ND)0Dv-{<+>@5=`x6}=iwjAj?<0kFKbw7HRAH?#$9 zakQr`Xp0;9bz^yLY15y}emM0w^>jj+2qjmOnaZciyJoFfb>aKZ?!660gX;XP`P+m3 zpm(%)l=TEI?8^L->BO|=!fxL$2_$Y@Uw!!e!5dkY#;#bQMtR7a6)mH0t3@#p&aV8yA0@yV$17H@6Txq-bL=tV$(6@HeX2Hk-n3jcJ`Zn|?qTfe<*f;0>FOtEH}xalSa_+kB|SJuG8RkJx#Tn^RmCd r|1KpEBXc>+O|rOj zE8^-REnexiq9-eFRkn>pUkh%ZQ4Ny9>G1oKDW8DvwSkMFug?E%hTea2cgFR;PrX0 zjZKZ++>7nMP@Ae^6_2h(Uil~dVE`DvF@BrKq>@YI-ZBI9@z$^)I^(UOA-VuYaTbJG z+zN39K#S85R&g4l4Pc2IA$Wmzvc%000{}32ck=$NhvE~K8|dfr``nuW0HfDOnd171 zJ=$2@e!jiN0RZQBh?3N>bpuV)Pdf&@M6Fh*#(~p=Nct`v_@;aj&dFcYFKXHelG#H@ zQUik1!3+R^{Ba)H^dVgC3telZt`zp3?cS4%@(~9BKRtP~nok7*c zIZ^#tK|J;jN~38QPpoc<DDWS6Q7x#Zae#6VwMP9S$MG^RLe>l)hglp6SjL$E0D!NGDZ(s{ zGA!fl09J&}xIKUsqKCMBfEl94cz-kE3}SI4j}Y>>gy7!`cOw2-{G8?&A$g$jz@2|S P00000NkvXXu0mjfr7lm< literal 0 HcmV?d00001 diff --git a/docs/images/favicon.ico b/docs/images/favicon.ico old mode 100644 new mode 100755 diff --git a/docs/index.html b/docs/index.html new file mode 100755 index 0000000000..561740d018 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,438 @@ + + + + + + + + + + rules_nodejs - Home + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    +
    +

    Bazel JavaScript rules

    + +

    Bazel is Google’s build system. +It powers our development at large scale by caching intermediate build artifacts, +allowing build and test to be incremental and massively parallelizable. +Read more at https://bazel.build

    + +

    This JavaScript support lets you build and test code that targets a JavaScript runtime, including NodeJS and browsers.

    + +

    Scope of the project

    + +

    This repository contains an orthogonal set of rules which covers an opinionated toolchain for JavaScript development. When requesting a new rule, describe your use case, why it’s important, and why you can’t do it with the existing rules. This is because we have limited resources to maintain additional rules.

    + +

    The repository accepts contributions in terms of bug fixes or implementing new features in existing rules. If you’re planning to implement a new rule, please strongly consider opening a feature request first so the project’s maintainers can decide if it belongs to the scope of this project or not.

    + +

    For rules outside of the scope of the projects we recommend hosting them in your GitHub account or the one of your organization.

    + +

    Design

    + +

    Most bazel rules include package management. That is, the WORKSPACE file installs your dependencies as well as the toolchain. In some environments, this is the normal workflow, for example in Java, Gradle and Maven are each both a build tool and a package manager.

    + +

    In nodejs, there are a variety of package managers and build tools which can interoperate. Also, there is a well-known package installation location (node_modules directory in your project). Command-line and other tools look in this directory to find packages. So we must either download packages twice (risking version skew between them) or point all tools to Bazel’s external directory with NODE_PATH which would be very inconvenient.

    + +

    Instead, our philosophy is: in the NodeJS ecosystem, Bazel is only a build tool. It is up to the user to install packages into their node_modules directory, though the build tool can verify the contents.

    + +

    Hermeticity and reproducibility

    + +

    Bazel generally guarantees builds are correct with respect to their inputs. For example, this means that given the same source tree, you can re-build the same artifacts as an earlier release of your program. In the nodejs rules, Bazel is not the package manager, so some responsibility falls to the developer to avoid builds that use the wrong dependencies. This problem exists with any build system in the JavaScript ecosystem.

    + +

    Both NPM and Yarn have a lockfile, which ensures that dependencies only change when the lockfile changes. Users are strongly encouraged to use the locking mechanism in their package manager.

    + +

    References:

    + +
      +
    • npm: https://docs.npmjs.com/files/package-lock.json
    • +
    • yarn: https://yarnpkg.com/lang/en/docs/yarn-lock/
    • +
    + +

    Note that https://github.com/bazelbuild/rules_nodejs/issues/1 will take the guarantee further: by using the lockfile as an input to Bazel, the nodejs rules can verify the integrity of the dependencies. This would make it impossible for a build to be non-reproducible, so long as you have the same lockfile.

    + +

    Quickstart

    + +

    First we create a new workspace, which will be in a new directory. +We can use the @bazel/create npm package to do this in one command. +This is the fastest way to get started for most use cases.

    + +
    +

    See the installation page for details and alternative methods.

    +
    + +
    $ npm init @bazel my_workspace
    +$ cd my_workspace
    +
    + +
    +

    You could do the same thing with yarn:

    +
    $ yarn create @bazel my_workspace
    +$ cd my_workspace
    +
    +

    Both of these commands are equivalent to npx @bazel/create which downloads the latest version of the @bazel/create package from npm and runs the program it contains. +Run the tool with no arguments for command-line options and next steps.

    +
    + +

    Next we install some development tools. +For this example, we’ll use Babel to transpile our JavaScript, Mocha for running tests, and http-server to serve our app. +This is just an arbitrary choice, you probably already have some tools you prefer.

    + +
    $ npm install @babel/core @babel/cli @babel/preset-env http-server mocha domino
    +
    + +

    Let’s run these tools with Bazel. There are two ways to run tools:

    + +
      +
    • Use an auto-generated Bazel rule by importing from an index.bzl file in the npm package
    • +
    • Use a custom rule in rules_nodejs or write one yourself
    • +
    + +

    In this example we use the auto-generated rules. +First we need to import them, using a load statement. +So edit BUILD.bazel and add:

    + +
    load("@npm//@babel/cli:index.bzl", "babel")
    +load("@npm//mocha:index.bzl", "mocha_test")
    +load("@npm//http-server:index.bzl", "http_server")
    +
    + +
    +

    This shows us that rules_nodejs has told Bazel that a workspace named @npm is available +(think of the at-sign like a scoped package for Bazel). +rules_nodejs will add index.bzl files exposing all the binaries the package manager installed +(the same as the content of the node_modules/.bin folder). +The three tools we installed are in this @npm scope and each has an index file with a .bzl extension.

    +
    + +

    Next we teach Bazel how to transform our JavaScript inputs into transpiled outputs. +Here we assume that you have app.js and es5.babelrc in your project. See our example webapp for an example of what those files might look like. +Now we want Babel to produce app.es5.js so we add to BUILD.bazel:

    + +
    babel(
    +    name = "compile",
    +    data = [
    +        "app.js",
    +        "es5.babelrc",
    +        "@npm//@babel/preset-env",
    +    ],
    +    outs = ["app.es5.js"],
    +    args = [
    +        "app.js",
    +        "--config-file",
    +        "./$(execpath es5.babelrc)",
    +        "--out-file",
    +        "$(execpath app.es5.js)",
    +    ],
    +)
    +
    + +
    +

    This just calls the Babel CLI, so you can see their documentation for what arguments to pass. +We use the $(execpath) helper in Bazel so we don’t need to hardcode paths to the inputs or outputs.

    +
    + +

    We can now build the application: npm run build

    + +

    and we see the .js outputs from babel appear in the dist/bin folder.

    + +

    Let’s serve the app to see how it looks, by adding to BUILD.bazel:

    + +
    http_server(
    +    name = "server",
    +    data = [
    +        "index.html",
    +        "app.es5.js",
    +    ],
    +    args = ["."],
    +)
    +
    + +

    Add a serve entry to the scripts in package.json:

    + +
    {
    +  "scripts": {
    +    "serve": "ibazel run :server"
    +  }
    +}
    +
    + +
    +

    ibazel is the watch mode for bazel.

    + +

    Note that on Windows, you need to pass --enable_runfiles flag to Bazel. +That’s because Bazel creates a directory where inputs and outputs both appear together, for convenience.

    +
    + +

    Now we can serve the app: npm run serve

    + +

    Finally we’ll add a test using Mocha, and the domino package so we don’t need a browser. Add to BUILD.bazel:

    + +
    mocha_test(
    +    name = "unit_tests",
    +    args = ["*.spec.js"],
    +    data = glob(["*.spec.js"]) + [
    +        "@npm//domino",
    +        "app.es5.js",
    +    ],
    +)
    +
    + +

    Run the tests: npm test

    + +

    Next steps

    + +

    Look through the /examples directory in this repo for many examples of running tools under Bazel.

    + +

    You might want to look through the API docs for custom rules such as TypeScript, Rollup, and Terser which add support beyond what you get from calling the CLI of those tools.

    + +
    +
    + + +
    +
    + +
    +
    +
    +
    +

    © 2020 Google

    +
    +
    +
    + +
    + + + + + + + + + + + + + + + diff --git a/docs/index.md b/docs/index.md index 163a50f89b..0759c135ce 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,7 +1,7 @@ --- title: Home layout: default -stylesheet: docs +toc: true --- # Bazel JavaScript rules @@ -13,6 +13,37 @@ Read more at [https://bazel.build](https://bazel.build) This JavaScript support lets you build and test code that targets a JavaScript runtime, including NodeJS and browsers. + +## Scope of the project + +This repository contains an orthogonal set of rules which covers an opinionated toolchain for JavaScript development. When requesting a new rule, describe your use case, why it's important, and why you can't do it with the existing rules. This is because we have limited resources to maintain additional rules. + +The repository accepts contributions in terms of bug fixes or implementing new features in existing rules. If you're planning to implement a new rule, please strongly consider opening a [feature request](https://github.com/bazelbuild/rules_nodejs/issues/new) first so the project's maintainers can decide if it belongs to the scope of this project or not. + +For rules outside of the scope of the projects we recommend hosting them in your GitHub account or the one of your organization. + +## Design + +Most bazel rules include package management. That is, the `WORKSPACE` file installs your dependencies as well as the toolchain. In some environments, this is the normal workflow, for example in Java, Gradle and Maven are each both a build tool and a package manager. + +In nodejs, there are a variety of package managers and build tools which can interoperate. Also, there is a well-known package installation location (`node_modules` directory in your project). Command-line and other tools look in this directory to find packages. So we must either download packages twice (risking version skew between them) or point all tools to Bazel's `external` directory with `NODE_PATH` which would be very inconvenient. + +Instead, our philosophy is: in the NodeJS ecosystem, Bazel is only a build tool. It is up to the user to install packages into their `node_modules` directory, though the build tool can verify the contents. + +## Hermeticity and reproducibility + +Bazel generally guarantees builds are correct with respect to their inputs. For example, this means that given the same source tree, you can re-build the same artifacts as an earlier release of your program. In the nodejs rules, Bazel is not the package manager, so some responsibility falls to the developer to avoid builds that use the wrong dependencies. This problem exists with any build system in the JavaScript ecosystem. + +Both NPM and Yarn have a lockfile, which ensures that dependencies only change when the lockfile changes. Users are *strongly encouraged* to use the locking mechanism in their package manager. + +References: + +- npm: https://docs.npmjs.com/files/package-lock.json +- yarn: https://yarnpkg.com/lang/en/docs/yarn-lock/ + +Note that https://github.com/bazelbuild/rules_nodejs/issues/1 will take the guarantee further: by using the lockfile as an input to Bazel, the nodejs rules can verify the integrity of the dependencies. This would make it impossible for a build to be non-reproducible, so long as you have the same lockfile. + + ## Quickstart First we create a new workspace, which will be in a new directory. @@ -143,202 +174,3 @@ Run the tests: `npm test` Look through the `/examples` directory in this repo for many examples of running tools under Bazel. You might want to look through the API docs for custom rules such as TypeScript, Rollup, and Terser which add support beyond what you get from calling the CLI of those tools. - -### Debugging - -Add the options in the `Support for debugging NodeJS tests` section from https://github.com/bazelbuild/rules_nodejs/blob/master/common.bazelrc to your project's `.bazelrc` file to add support for debugging NodeJS programs. - -Using the `--config=debug` command line option with bazel will set a number of flags that are specified there are useful for debugging. See the comments under `Support for debugging NodeJS tests` for details on the flags that are set. - -Use `--config=debug` with `bazel test` as follow, - -``` -bazel test --config=debug //test:... -``` - -or with `bazel run`, - -``` -bazel run --config=debug //test:test1 -``` - -to also turn on the NodeJS inspector agent which will break before any user code starts. You should then see, - -``` -Executing tests from //test:test1 ------------------------------------------------------------------------------ -Debugger listening on ws://127.0.0.1:9229/3f20777a-242c-4d18-b88b-5ed4b3fed61c -For help, see: https://nodejs.org/en/docs/inspector -``` - -when the test is run. - -To inspect with Chrome DevTools 55+, open `chrome://inspect` in a Chromium-based browser and attach to the waiting process. -A Chrome DevTools window should open and you should see `Debugger attached.` in the console. - -See https://nodejs.org/en/docs/guides/debugging-getting-started/ for more details. - -### Debugging with VS Code - -With the above configuration you can use VS Code as your debugger. -You will first need to configure your `.vscode/launch.json`: - -``` -{ - "type": "node", - "request": "attach", - "name": "Attach nodejs_binary", - "internalConsoleOptions": "neverOpen", - "sourceMapPathOverrides": { - "../*": "${workspaceRoot}/*", - "../../*": "${workspaceRoot}/*", - "../../../*": "${workspaceRoot}/*", - "../../../../*": "${workspaceRoot}/*", - "../../../../../*": "${workspaceRoot}/*", - // do as many levels here as needed for your project - } -``` -We use `sourceMapPathOverrides` here to rewrite the source maps produced by `ts_library` so that breakpoints line up with the source maps. -Once configured start your process with -``` -bazel run --config=debug //test:test1 -``` -Then hit `F5` which will start the VS Code debugger with the `Attach nodejs_binary` configuration. -VS Code will immediatenly hit a breakpoint to which you can continue and debug using all the normal debug features provided. - - -### Stamping - -Bazel is generally only a build tool, and is unaware of your version control system. -However, when publishing releases, you typically want to embed version information in the resulting distribution. -Bazel supports this natively, using the following approach: - -To stamp a build, you must pass the `--stamp` argument to Bazel. - -> Previous releases of rules_nodejs stamped builds always. -> However this caused stamp-aware actions to never be remotely cached, since the volatile -> status file is passed as an input and its checksum always changes. - -Also pass the `workspace_status_command` argument to `bazel build`. -We prefer to do these with an entry in `.bazelrc`: - -```sh -# This tells Bazel how to interact with the version control system -# Enable this with --config=release -build:release --stamp --workspace_status_command=./tools/bazel_stamp_vars.sh -``` - -Then create `tools/bazel_stamp_vars.sh`. - -This is a script that prints variable/value pairs. -Make sure you set the executable bit, eg. `chmod 755 tools/bazel_stamp_vars.sh`. -For example, we could run `git describe` to get the current tag: - -```bash -#!/usr/bin/env bash -echo BUILD_SCM_VERSION $(git describe --abbrev=7 --tags HEAD) -``` - -For a more full-featured script, take a look at the [bazel_stamp_vars in Angular] - -Finally, we recommend a release script around Bazel. We typically have more than one npm package published from one Bazel workspace, so we do a `bazel query` to find them, and publish in a loop. Here is a template to get you started: - -```sh -#!/usr/bin/env bash - -set -u -e -o pipefail - -# Call the script with argument "pack" or "publish" -readonly NPM_COMMAND=${1:-publish} -# Don't rely on $PATH to have the right version -readonly BAZEL_BIN=./node_modules/.bin/bazel -# Use a new output_base so we get a clean build -# Bazel can't know if the git metadata changed -readonly TMP=$(mktemp -d -t bazel-release.XXXXXXX) -readonly BAZEL="$BAZEL_BIN --output_base=$TMP" -# Find all the npm packages in the repo -readonly PKG_NPM_LABELS=`$BAZEL query --output=label 'kind("pkg_npm", //...)'` -# Build them in one command to maximize parallelism -$BAZEL build --config=release $PKG_NPM_LABELS -# publish one package at a time to make it easier to spot any errors or warnings -for pkg in $PKG_NPM_LABELS ; do - $BAZEL run --config=release -- ${pkg}.${NPM_COMMAND} --access public --tag latest -done -``` - -> WARNING: Bazel can't track changes to git tags. That means it won't rebuild a target if only the result of the workspace_status_command has changed. So changes to the version information may not be reflected if you re-build the package or bundle, and nothing in the package or bundle has changed. - -See https://www.kchodorow.com/blog/2017/03/27/stamping-your-builds/ for more background. - -[bazel_stamp_vars in Angular]: https://github.com/angular/angular/blob/master/tools/bazel_stamp_vars.sh - -# Making changes to rules_nodejs - -One advantage of open-source software is that you can make your own changes that suit your needs. - -The packages published to npm and GitHub differ from the sources in this repo. The packages have only runtime bazel dependencies, but the sources depend on development dependencies. For example, the `@bazel_skylib` library is a development-time transitive dependency, while an npm package would have that dependency statically linked in. - -> This differs from much of the Bazel ecosystem, where you are expected to build the whole transitive toolchain from sources. - -If you have a small change, it's easiest to just patch the distributed artifacts rather than build from source. However if you're doing active development in rules_nodejs or have a policy of not depending on release artifacts, it's possible to depend directly on sources. This is not yet documented; file an issue on our repo if you think you need this. - -## Patching the npm packages - -The pattern we use most commonly is to add a `postinstall` hook to your `package.json` that patches files after they've been fetched from npm. - -See `/tools/postinstall-patches.js` in the [Angular repo] for an example. - -[Angular repo]: https://github.com/angular/angular/tree/master/tools/postinstall-patches.js - -## Patching the built-in release - -rules_nodejs has a distribution format which is a tgz published to GitHub, and this can make it tricky to make casual changes without forking the project and building your own release artifacts. - -Bazel has a handy patching mechanism that lets you easily apply a local patch to the release artifact for built-in rules: the `patches` attribute to `http_archive`. - -First, make your changes in a clone of the rules_nodejs repo. Export a patch file simply using `git diff`: - -```sh -git diff > my.patch -``` - -Then copy the patch file somewhere in your repo and point to it from your `WORKSPACE` file: - -```python -http_archive( - name = "build_bazel_rules_nodejs", - patch_args = ["-p1"], - patches = ["//path/to/my.patch"], - sha256 = "6d4edbf28ff6720aedf5f97f9b9a7679401bf7fca9d14a0fff80f644a99992b4", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.32.2/rules_nodejs-0.32.2.tar.gz"], -) -``` - -# Scope of the project - -This repository contains an orthogonal set of rules which covers an opinionated toolchain for JavaScript development. When requesting a new rule, describe your use case, why it's important, and why you can't do it with the existing rules. This is because we have limited resources to maintain additional rules. - -The repository accepts contributions in terms of bug fixes or implementing new features in existing rules. If you're planning to implement a new rule, please strongly consider opening a [feature request](https://github.com/bazelbuild/rules_nodejs/issues/new) first so the project's maintainers can decide if it belongs to the scope of this project or not. - -For rules outside of the scope of the projects we recommend hosting them in your GitHub account or the one of your organization. - -# Design - -Most bazel rules include package management. That is, the `WORKSPACE` file installs your dependencies as well as the toolchain. In some environments, this is the normal workflow, for example in Java, Gradle and Maven are each both a build tool and a package manager. - -In nodejs, there are a variety of package managers and build tools which can interoperate. Also, there is a well-known package installation location (`node_modules` directory in your project). Command-line and other tools look in this directory to find packages. So we must either download packages twice (risking version skew between them) or point all tools to Bazel's `external` directory with `NODE_PATH` which would be very inconvenient. - -Instead, our philosophy is: in the NodeJS ecosystem, Bazel is only a build tool. It is up to the user to install packages into their `node_modules` directory, though the build tool can verify the contents. - -## Hermeticity and reproducibility - -Bazel generally guarantees builds are correct with respect to their inputs. For example, this means that given the same source tree, you can re-build the same artifacts as an earlier release of your program. In the nodejs rules, Bazel is not the package manager, so some responsibility falls to the developer to avoid builds that use the wrong dependencies. This problem exists with any build system in the JavaScript ecosystem. - -Both NPM and Yarn have a lockfile, which ensures that dependencies only change when the lockfile changes. Users are *strongly encouraged* to use the locking mechanism in their package manager. - -References: - -- npm: https://docs.npmjs.com/files/package-lock.json -- yarn: https://yarnpkg.com/lang/en/docs/yarn-lock/ - -Note that https://github.com/bazelbuild/rules_nodejs/issues/1 will take the guarantee further: by using the lockfile as an input to Bazel, the nodejs rules can verify the integrity of the dependencies. This would make it impossible for a build to be non-reproducible, so long as you have the same lockfile. diff --git a/docs/install.html b/docs/install.html new file mode 100755 index 0000000000..8320d46f5c --- /dev/null +++ b/docs/install.html @@ -0,0 +1,420 @@ + + + + + + + + + + rules_nodejs - Installation + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    +
    +

    Custom installation

    + +

    First, you need Bazel. +We recommend using Bazelisk, which is a version-selection wrapper, similar to +the nvm tool managing your version of Node. This is available on npm. +We also recommend installing ibazel which is the “watch mode” for Bazel.

    + +
    $ yarn add -D @bazel/bazelisk @bazel/ibazel
    +# or
    +$ npm install --save-dev @bazel/bazelisk @bazel/ibazel
    +
    + +

    You could install a current bazel distribution, following the [bazel instructions].

    + +

    If you use Bazelisk, see this workaround to get working command-line completion.

    + +

    It’s reasonable to globally-install bazelisk so you get a bazel command in your $PATH. +We don’t recommend this with ibazel as the version is frequently changing.

    + +

    Next, create a WORKSPACE file in your project root (or edit the existing one) +containing:

    + +
    load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
    +http_archive(
    +    name = "build_bazel_rules_nodejs",
    +    sha256 = "10fffa29f687aa4d8eb6dfe8731ab5beb63811ab00981fc84a93899641fd4af1",
    +    urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.3/rules_nodejs-2.0.3.tar.gz"],
    +)
    +
    +load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories")
    +
    + +

    Now you can choose from a few options to finish installation.

    + +

    To choose a version of Node.js:

    + +
      +
    1. (Simplest) use the version of Node.js that comes with these rules by default
    2. +
    3. Choose from one of the versions we support natively
    4. +
    5. Tell Bazel where to download a specific version you require
    6. +
    7. Check Node.js into your repository and don’t download anything
    8. +
    + +

    These are described in more detail in the following sections.

    + +

    Simple usage

    + +

    Add this to your WORKSPACE file. It only tells Bazel how to find your +package.json file. It will use default versions of Node.js and npm.

    + +
    # NOTE: this rule installs nodejs, npm, and yarn, but does NOT install
    +# your npm dependencies into your node_modules folder.
    +# You must still run the package manager to do this.
    +node_repositories(package_json = ["//:package.json"])
    +
    +

    Installation with a specific supported version of Node.js and Yarn

    + +

    You can choose a specific version of Node.js that’s built into these rules. +You can also choose a specific version of Yarn. +Note that some of our packages have started to use features from Node 12, so you may see warnings if you use an older version.

    + +
    +

    Now that Node 12 is LTS (Long-term support) we encourage you to upgrade, and don’t intend to fix bugs which are only observed in Node 10 or lower.

    +
    + +

    The available versions are documented on the node_repositories rule in the Built-ins.

    + +

    Add to WORKSPACE:

    + +
    # NOTE: this rule installs nodejs, npm, and yarn, but does NOT install
    +# your npm dependencies into your node_modules folder.
    +# You must still run the package manager to do this.
    +node_repositories(
    +    package_json = ["//:package.json"],
    +    node_version = "8.11.1",
    +    yarn_version = "1.5.1",
    +)
    +
    + +

    Installation with a manually specified version of NodeJS and Yarn

    + +

    If you’d like to use a version of NodeJS and/or Yarn that are not currently supported here, you can manually +specify those in your WORKSPACE:

    + +
    load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories")
    +
    +# NOTE: this rule does NOT install your npm dependencies into your node_modules folder.
    +# You must still run the package manager to do this.
    +node_repositories(
    +  node_version = "8.10.0",
    +  yarn_version = "1.5.1",
    +  node_repositories = {
    +    "8.10.0-darwin_amd64": ("node-v8.10.0-darwin-x64.tar.gz", "node-v8.10.0-darwin-x64", "7d77bd35bc781f02ba7383779da30bd529f21849b86f14d87e097497671b0271"),
    +    "8.10.0-linux_amd64": ("node-v8.10.0-linux-x64.tar.xz", "node-v8.10.0-linux-x64", "92220638d661a43bd0fee2bf478cb283ead6524f231aabccf14c549ebc2bc338"),
    +    "8.10.0-windows_amd64": ("node-v8.10.0-win-x64.zip", "node-v8.10.0-win-x64", "936ada36cb6f09a5565571e15eb8006e45c5a513529c19e21d070acf0e50321b"),
    +  },
    +  yarn_repositories = {
    +    "1.5.1": ("yarn-v1.5.1.tar.gz", "yarn-v1.5.1", "cd31657232cf48d57fdbff55f38bfa058d2fb4950450bd34af72dac796af4de1"),
    +  },
    +  node_urls = ["https://nodejs.org/dist/v{version}/{filename}"],
    +  yarn_urls = ["https://github.com/yarnpkg/yarn/releases/download/v{version}/{filename}"],
    +  package_json = ["//:package.json"])
    +
    + +

    Specifying node_urls and yarn_urls is optional. If omitted, the default values will be used. You may also use a custom NodeJS version and the default Yarn version or vice-versa.

    + +

    Installation with local vendored versions of NodeJS and Yarn

    + +

    Finally, you could check Node.js and Yarn into your repository, and not fetch +them from the internet. This is what we do internally at Google.

    + +
    load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories")
    +
    +# Point node_repositories to use locally installed versions of Node.js and Yarn.
    +# The vendored_node and vendored_yarn labels point to the extracted contents of
    +# https://nodejs.org/dist/v10.12.0/node-v10.12.0-linux-x64.tar.xz and
    +# https://github.com/yarnpkg/yarn/releases/download/v1.10.0/yarn-v1.10.0.tar.gz
    +# respectively. NOTE: node-v10.12.0-linux-x64 will only work on Linux.
    +node_repositories(
    +  vendored_node = "@wksp//:third_party/node-v10.12.0-linux-x64",
    +  vendored_yarn = "@wksp//:third_party/yarn-v1.10.0",
    +  package_json = ["//:package.json"])
    +
    + +

    In this case, the locally installed Node.js and Yarn are located in the wksp workspace in +the third_party/node-v10.12.0-linux-x64 and third_party/yarn-v1.10.0 folders. When using +vendored_node, you will be restricted to a single platform. vendored_yarn on the other hand, +is platform independent. See /examples/vendored_node in this repository for an example of this +in use.

    + +

    NOTE: Vendored Node.js and Yarn are not compatible with Remote Bazel Execution.

    + +

    Toolchains

    + +

    When you add node_repositories() to your WORKSPACE file it will setup a node toolchain for all currently supported platforms, Linux, macOS and Windows. Amongst other things this adds support for cross-compilations as well as Remote Build Execution support. For more detailed information also see Bazel Toolchains.

    + +

    If you have an advanced use-case you can also register your own toolchains and call node_toolchain_configure directly to manually setup a toolchain.

    + +

    Cross-compilation

    + +

    Toolchains allow us to support cross-compilation, e.g. building a linux binary from mac or windows. To tell Bazel to provide a toolchain for a different platform you have to pass in the --platforms flag. Currently supported values are:

    + +
      +
    • @build_bazel_rules_nodejs//toolchains/node:linux_amd64
    • +
    • @build_bazel_rules_nodejs//toolchains/node:linux_arm64
    • +
    • @build_bazel_rules_nodejs//toolchains/node:darwin_amd64
    • +
    • @build_bazel_rules_nodejs//toolchains/node:windows_amd64
    • +
    + +

    So if for example you want to build a docker image from a non-linux platform you would run bazel build --platforms=@build_bazel_rules_nodejs//toolchains/node:linux_amd64 //app, which will ensure that the linux nodejs binary is downloaded and provided to the nodejs_binary target.

    + +

    Note: The toolchain currently only provides a platform-specific nodejs binary. Any native modules will still be fetched/built, by npm/yarn, for your host platform, so they will not work on the target platform. Support for cross-compilation with native dependencies will follow.

    + +
    +
    + + +
    +
    + +
    +
    +
    +
    +

    © 2020 Google

    +
    +
    +
    + +
    + + + + + + + + + + + + + + + diff --git a/docs/install.md b/docs/install.md index 312f25a690..994bb8f4ff 100644 --- a/docs/install.md +++ b/docs/install.md @@ -1,10 +1,10 @@ --- title: Installation layout: default -stylesheet: docs +toc: true --- -## Custom installation +# Custom installation First, you need Bazel. We recommend using Bazelisk, which is a version-selection wrapper, similar to @@ -17,12 +17,12 @@ $ yarn add -D @bazel/bazelisk @bazel/ibazel $ npm install --save-dev @bazel/bazelisk @bazel/ibazel ``` -> You could install a current bazel distribution, following the [bazel instructions]. +You could install a current bazel distribution, following the [bazel instructions]. -> If you use Bazelisk, see [this workaround](https://github.com/bazelbuild/bazelisk/issues/29#issuecomment-478062147) to get working command-line completion. +If you use Bazelisk, see [this workaround](https://github.com/bazelbuild/bazelisk/issues/29#issuecomment-478062147) to get working command-line completion. -> It's reasonable to globally-install bazelisk so you get a `bazel` command in your $PATH. -> We don't recommend this with ibazel as the version is frequently changing. +It's reasonable to globally-install bazelisk so you get a `bazel` command in your $PATH. +We don't recommend this with ibazel as the version is frequently changing. Next, create a `WORKSPACE` file in your project root (or edit the existing one) containing: @@ -49,7 +49,7 @@ To choose a version of Node.js: These are described in more detail in the following sections. -### Simple usage +## Simple usage Add this to your `WORKSPACE` file. It only tells Bazel how to find your `package.json` file. It will use default versions of Node.js and npm. @@ -60,7 +60,7 @@ Add this to your `WORKSPACE` file. It only tells Bazel how to find your # You must still run the package manager to do this. node_repositories(package_json = ["//:package.json"]) ``` -### Installation with a specific supported version of Node.js and Yarn +## Installation with a specific supported version of Node.js and Yarn You can choose a specific version of Node.js that's built into these rules. You can also choose a specific version of Yarn. @@ -83,7 +83,7 @@ node_repositories( ) ``` -### Installation with a manually specified version of NodeJS and Yarn +## Installation with a manually specified version of NodeJS and Yarn If you'd like to use a version of NodeJS and/or Yarn that are not currently supported here, you can manually specify those in your `WORKSPACE`: @@ -111,7 +111,7 @@ node_repositories( Specifying `node_urls` and `yarn_urls` is optional. If omitted, the default values will be used. You may also use a custom NodeJS version and the default Yarn version or vice-versa. -### Installation with local vendored versions of NodeJS and Yarn +## Installation with local vendored versions of NodeJS and Yarn Finally, you could check Node.js and Yarn into your repository, and not fetch them from the internet. This is what we do internally at Google. @@ -138,285 +138,13 @@ in use. NOTE: Vendored Node.js and Yarn are not compatible with Remote Bazel Execution. -## Dependencies - -Bazel works alongside your existing package manager, either npm or yarn. -You manage your `package.json` file, editing by hand or by running commands like `npm install` or `yarn add`. -The package manager will also write a lock file, indicating exact versions for all transitive dependencies, which keeps your build hermetic and reproducible. -Bazel will run the package manager when the `package.json` or `*lock.json` files change, but you can also run the package manager yourself. - -### Bazel-managed vs self-managed dependencies - -You have two options for managing your `node_modules` dependencies: Bazel-managed or self-managed. - -With the Bazel-managed dependencies approach, Bazel is responsible for making sure that `node_modules` is -up to date with your `package[-lock].json` or `yarn.lock` files. This means Bazel will set it up when the -repository is first cloned, and rebuild it whenever it changes. With the `yarn_install` or `npm_install` -repository rules, Bazel will setup your `node_modules` for you in an external workspace named after the -repository rule. For example, a `yarn_install(name = "npm", ...)` will setup an external -workspace named `@npm` with the `node_modules` folder inside of it as well as generating targets for each -root npm package in `node_modules` for use as dependencies to other rules. - -For Bazel to provide the strongest guarantees about reproducibility and the -fidelity of your build, it is recommended that you use Bazel-managed dependencies. -This approach also allows you to use the generated fine-grained npm package dependencies -which can significantly reduce the number of inputs to actions, making Bazel sand-boxing and -remote-execution faster if there are a large number of files under `node_modules`. - -> Note that as of Bazel 0.26, and with the recommended `managed_directories` attribute on the `workspace` rule in `/WORKSPACE`, -> the Bazel-managed `node_modules` directory is placed in your workspace root in the standard location used by npm or yarn. - -### Using Bazel-managed dependencies - -To have Bazel manage its own copy of `node_modules`, which is useful to avoid -juggling multiple toolchains, you can add one of the following to your `WORKSPACE` -file: - -Using Yarn (preferred): - -```python -load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") - -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) -``` - -Using NPM: - -```python -load("@build_bazel_rules_nodejs//:index.bzl", "npm_install") - -npm_install( - name = "npm", - package_json = "//:package.json", - package_lock_json = "//:package-lock.json", -) -``` - -> If you don't need to pass any arguments to `node_repositories`, - you can skip calling that function. `yarn_install` and `npm_install` will do it by default. - -You should now add the `@npm` workspace to the `managed_directories` option in the `workspace` rule at the top of the file. This tells Bazel that the `node_modules` directory is special and is managed by the package manager. -Add the `workspace` rule if it isn't already in your `/WORKSPACE` file. - -```python -workspace( - name = "my_wksp", - managed_directories = {"@npm": ["node_modules"]}, -) -``` - -As of Bazel 0.26 this feature is still experimental, so also add this line to the `.bazelrc` to opt-in: - -``` -common --experimental_allow_incremental_repository_updates -``` - -#### yarn_install vs. npm_install - -`yarn_install` is the preferred rule for setting up Bazel-managed dependencies for a number of reasons: - -* `yarn_install` will use the global yarn cache by default which will improve your build performance (this can be turned off with the `use_global_yarn_cache` attribute) -* npm has a known peer dependency hoisting issue that can lead to missing peer dependencies in some cases (see https://github.com/bazelbuild/rules_nodejs/issues/416) - -#### Fine-grained npm package dependencies - -You can then reference individual npm packages in your `BUILD` rules via: - -```python -load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary") - -nodejs_binary( - name = "bar", - data = [ - "@npm//foo", - "@npm//baz", - ] - ... -) -``` - -In this case, the `bar` nodejs_binary depends only the `foo` and `baz` npm packages -and all of their transitive deps. - -For other rules such as `jasmine_node_test`, fine grained -npm dependencies are specified in the `deps` attribute: - -```python -jasmine_node_test( - name = "test", - ... - deps = [ - "@npm//jasmine", - "@npm//foo", - "@npm//baz", - ... - ], -) -``` - -#### Multiple sets of npm dependencies - -If your workspace has multiple applications, each with their own `package.json` -and npm deps, `yarn_install` (or `npm_install`) can be called separately for -each. - -```python -workspace( - name = "my_wksp", - managed_directories = { - "@app1_npm": ["app1/node_modules"], - "@app2_npm": ["app2/node_modules"], - }, -) - -yarn_install( - name = "app1_npm", - package_json = "//app1:package.json", - yarn_lock = "//app1:yarn.lock", -) - -yarn_install( - name = "app2_npm", - package_json = "//app2:package.json", - yarn_lock = "//app2:yarn.lock", -) -``` - -Your application would then reference its deps as (for example) `@app1_npm//lodash`, or `@app2_npm//jquery`. - -#### Fine-grained npm package nodejs_binary targets - -If an npm package lists one or more `bin` entry points in its `package.json`, -`nodejs_binary` targets will be generated for these. - -For example, the `protractor` package has two bin entries in its `package.json`: - -```json - "bin": { - "protractor": "bin/protractor", - "webdriver-manager": "bin/webdriver-manager" - }, -``` - -These will result in two generated `nodejs_binary` targets in the `@npm//protractor/bin` -package (if your npm deps workspace is `@npm`): - -* `@npm//protractor/bin:protractor` -* `@npm//protractor/bin:webdriver-manager` - -These targets can be used as executables for actions in custom rules or can -be run by Bazel directly. For example, you can run protractor with the -following: - -```sh -$ bazel run @npm//protractor/bin:protractor -``` - -Note: These targets are in the `protractor/bin` package so they don't -conflict with the targets to use in deps[]. For example, `@npm//protractor:protractor` -is target to use in deps[] while `@npm//protractor/bin:protractor` is the binary target. - -#### Coarse node_modules dependencies - -Using fine grained npm dependencies is recommended to minimize -the number of inputs to your rules. However, for backward compatibility -there are also filegroups defined by `yarn_install` and `npm_install` -that include all packages under `node_modules` and which can be used -with the `node_modules` attribute of nodejs rules. - -* `@npm//:node_modules` includes all packages under `node_modules` as well as the `.bin` folder - -```python -load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary") - -nodejs_binary( - name = "bar", - node_modules = "@npm//:node_modules", -) -``` - -### Using self-managed dependencies - -If you'd like to have Bazel use the `node_modules` directory you are managing, -then next you will create a `BUILD.bazel` file in your project root containing: - -```python -package(default_visibility = ["//visibility:public"]) - -filegroup( - name = "node_modules", - srcs = glob( - include = ["node_modules/**/*"], - exclude = [ - # Files under test & docs may contain file names that - # are not legal Bazel labels (e.g., - # node_modules/ecstatic/test/public/中文/檔案.html) - "node_modules/test/**", - "node_modules/docs/**", - # Files with spaces are not allowed in Bazel runfiles - # See https://github.com/bazelbuild/bazel/issues/4327 - "node_modules/**/* */**", - "node_modules/**/* *", - ], - ), -) -``` - -The example in `examples/user_managed_deps` uses self-managed dependencies. - -To use the Yarn package manager, which we recommend for its built-in -verification command, you can run: - -```sh -$ bazel run @nodejs//:yarn_node_repositories -``` - -If you use npm instead, run: - -```sh -$ bazel run @nodejs//:npm_node_repositories install -``` - -The `@nodejs//:yarn_node_repositories` and `@nodejs//:npm_node_repositories` targets will run yarn/npm on all of the -package.json contexts listed `package_json` attribute of the `node_repositories` -repository rule in your WORKSPACE file (`node_repositories(package_json = [...])`). - -If there are multiple package.json contexts in this rule but you would like to -run the bazel managed yarn or npm on a single context this can be done -using the following targets: - -```sh -$ bazel run @nodejs//:yarn -- -``` - -If you use npm instead, run: - -```sh -$ bazel run @nodejs//:npm -- -``` - -This will run yarn/npm in the current working directory. To add a package with the `yarn add` command, -for example, you would use: - -```sh -$ bazel run @nodejs//:yarn -- add -``` - -Note: the arguments passed to `bazel run` after `--` are forwarded to the executable being run. - -[bazel instructions]: https://docs.bazel.build/versions/master/install.html - -### Toolchains +## Toolchains When you add `node_repositories()` to your `WORKSPACE` file it will setup a node toolchain for all currently supported platforms, Linux, macOS and Windows. Amongst other things this adds support for cross-compilations as well as Remote Build Execution support. For more detailed information also see [Bazel Toolchains](https://docs.bazel.build/versions/master/toolchains.html). If you have an advanced use-case you can also register your own toolchains and call `node_toolchain_configure` directly to manually setup a toolchain. -#### Cross-compilation +### Cross-compilation Toolchains allow us to support cross-compilation, e.g. building a linux binary from mac or windows. To tell Bazel to provide a toolchain for a different platform you have to pass in the `--platforms` flag. Currently supported values are: diff --git a/docs/repositories.html b/docs/repositories.html new file mode 100755 index 0000000000..110944420a --- /dev/null +++ b/docs/repositories.html @@ -0,0 +1,342 @@ + + + + + + + + + + rules_nodejs - Generated Repositories + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    +
    +

    Generated Repositories

    + +

    rules_nodejs produces several repositories for you to reference. +Bazel represents your workspace as one repository, and code fetched or installed from outside your workspace lives in other repositories. +These are referenced with the @repo// syntax in your BUILD files.

    + +

    @nodejs

    + +

    This repository is created by calling the node_repositories function in your WORKSPACE file. +It contains the node, npm, and yarn programs.

    + +

    As always, bazel query is useful for learning about what targets are available.

    + +
    $ bazel query @nodejs//...
    +@nodejs//:node
    +...
    +
    + +

    You don’t typically need to reference the @nodejs repository from your BUILD files because it’s used behind the scenes +to run node and fetch dependencies.

    + +

    Some ways you can use this:

    + +
      +
    • Run the Bazel-managed version of node: bazel run @nodejs//:node path/to/program.js
    • +
    • Run the Bazel-managed version of npm: bazel run @nodejs//:npm
    • +
    • Run the Bazel-managed version of yarn: bazel run @nodejs//:yarn
    • +
    • Install dependencies from nested package.json file(s) which were passed to node_repositories#package.json +
        +
      • using npm: bazel run @nodejs//:npm_node_repositories install
      • +
      • using yarn: bazel run @nodejs//:yarn_node_repositories
      • +
      +
    • +
    + +

    @npm

    + +

    This repository is created by calling the npm_install or yarn_install function in your WORKSPACE file.

    + +

    The name @npm is recommended in the simple case that you install only a single package.json file. +If you have multiple, call the npm_install or yarn_install multiple times, and give each one a unique name. +This results in multiple repositories, named whatever you chose, rather than “npm”. +The following applies to any repository created by npm_install , or yarn_install, just replace @npm with the name you chose.

    + +

    Again, use bazel query @npm//... to learn about all the targets declared in this repository.

    + +

    Our philosophy is to mirror the installed npm dependencies in a way that’s idiomatic to reference them in Bazel.

    + +

    Commonly used ones are:

    + +
      +
    • Every file that was installed from npm: @npm//:node_modules. This target can have a very large number of files and slow down your build, however it’s a simple way to skip having to declare more fine-grained inputs to your BUILD targets.
    • +
    • If you had a dependency on the foo package, you can reference @npm//foo to get all the files. We mirror the npm dependency graph, so if foo declares a dependency on another package dep, Bazel will include that dependency when foo is used.
    • +
    • If the foo package has an executable program bar, then @npm//foo/bin:bar is a nodejs_binary that you can call with bazel run or can pass as the executable to your own rules.
    • +
    • Sometimes you need a UMD bundle, but a package doesn’t ship one. For example, the ts_devserver rule depends on third-party libraries having a named UMD entry point. The @npm//foo:foo__umd target will automatically run Browserify to convert the package’s main entry into UMD.
    • +
    • DEPRECATED: A helper to install npm packages into their own Bazel repository: @npm//:install_bazel_dependencies.bzl provides a install_bazel_dependencies function. Some npm packages ship custom bazel rules, for example, the @angular/bazel package provides rules which you should load from @npm_angular_bazel//:index.bzl. However this causes the build to always fetch npm packages even when not needed, so we plan to remove this in a future release.
    • +
    + +
    +

    One convenient (maybe also confusing) way to understand what BUILD files are generated is to look at our integration test at https://github.com/bazelbuild/rules_nodejs/tree/stable/internal/npm_install/test/golden - this directory looks similar to the content of an @npm repository.

    +
    + +

    Generated macros for npm packages with bin entries

    + +

    Any installed package that has one or more bin entries in the package.json get convenient macros generated. +These are the Bazel equivalent of the ./node_modules/.bin/* files in your project which the package manager created.

    + +

    For a package foo with some bin entries, we will create a .bzl file where you can load rules, at @npm//foo:index.bzl

    + +

    If the foo package contains a bin entry bar, the index.bzl file will contain bar and bar_test macros. You can load these two generated rules in your BUILD file:

    + +

    load("@npm//foo:index.bzl", "bar", "bar_test")

    + +

    The bar macro can be called in two ways. If you pass outs or output_dir, it produces an npm_package_bin rule that invokes the tool to transform some inputs to outputs, useful as a dependency of another rule, or with bazel build. If you don’t pass outs or output_dir, then it will produce a nodejs_binary rule intended for use with bazel run. (The latter is identical to the @npm//foo/bin:bar target, just giving you a convenient way to alias it with a different label and pass it arguments).

    + +

    See examples in rules_nodejs. A typical tool to use with outs is Babel, while a typical rule with no outputs is http_server.

    + +

    The bar_test macro produces a nodejs_test that assumes the tool is a test runner, and produces a zero or one exit code, useful as a target with bazel test. See the examples of mocha_test in rules_nodejs.

    + +

    You can also read https://dev.to/bazel/layering-in-bazel-for-web-389h to see an end-to-end example of using the generated bin macros.

    + +
    +
    + + +
    +
    + +
    +
    +
    +
    +

    © 2020 Google

    +
    +
    +
    + +
    + + + + + + + + + + + + + + + diff --git a/docs/repositories.md b/docs/repositories.md index fca1b59863..fd10284db5 100644 --- a/docs/repositories.md +++ b/docs/repositories.md @@ -1,8 +1,9 @@ --- title: Generated Repositories layout: default -stylesheet: docs +toc: true --- +# Generated Repositories rules_nodejs produces several repositories for you to reference. Bazel represents your workspace as one repository, and code fetched or installed from outside your workspace lives in other repositories. @@ -56,7 +57,7 @@ Commonly used ones are: > One convenient (maybe also confusing) way to understand what BUILD files are generated is to look at our integration test at https://github.com/bazelbuild/rules_nodejs/tree/stable/internal/npm_install/test/golden - this directory looks similar to the content of an `@npm` repository. -### Generated macros for npm packages with `bin` entries +## Generated macros for npm packages with `bin` entries Any installed package that has one or more `bin` entries in the package.json get convenient macros generated. These are the Bazel equivalent of the `./node_modules/.bin/*` files in your project which the package manager created. diff --git a/docs/stamping.html b/docs/stamping.html new file mode 100755 index 0000000000..be661a17b9 --- /dev/null +++ b/docs/stamping.html @@ -0,0 +1,323 @@ + + + + + + + + + + rules_nodejs - Home + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    +
    +

    Stamping

    + +

    Bazel is generally only a build tool, and is unaware of your version control system. +However, when publishing releases, you typically want to embed version information in the resulting distribution. +Bazel supports this natively, using the following approach:

    + +

    To stamp a build, you must pass the --stamp argument to Bazel.

    + +
    +

    Previous releases of rules_nodejs stamped builds always. +However this caused stamp-aware actions to never be remotely cached, since the volatile +status file is passed as an input and its checksum always changes.

    +
    + +

    Also pass the workspace_status_command argument to bazel build. +We prefer to do these with an entry in .bazelrc:

    + +
    # This tells Bazel how to interact with the version control system
    +# Enable this with --config=release
    +build:release --stamp --workspace_status_command=./tools/bazel_stamp_vars.sh
    +
    + +

    Then create tools/bazel_stamp_vars.sh.

    + +

    This is a script that prints variable/value pairs. +Make sure you set the executable bit, eg. chmod 755 tools/bazel_stamp_vars.sh. +For example, we could run git describe to get the current tag:

    + +
    #!/usr/bin/env bash
    +echo BUILD_SCM_VERSION $(git describe --abbrev=7 --tags HEAD)
    +
    + +

    For a more full-featured script, take a look at the bazel_stamp_vars in Angular

    + +

    Finally, we recommend a release script around Bazel. We typically have more than one npm package published from one Bazel workspace, so we do a bazel query to find them, and publish in a loop. Here is a template to get you started:

    + +
    #!/usr/bin/env bash
    +
    +set -u -e -o pipefail
    +
    +# Call the script with argument "pack" or "publish"
    +readonly NPM_COMMAND=${1:-publish}
    +# Don't rely on $PATH to have the right version
    +readonly BAZEL_BIN=./node_modules/.bin/bazel
    +# Use a new output_base so we get a clean build
    +# Bazel can't know if the git metadata changed
    +readonly TMP=$(mktemp -d -t bazel-release.XXXXXXX)
    +readonly BAZEL="$BAZEL_BIN --output_base=$TMP"
    +# Find all the npm packages in the repo
    +readonly PKG_NPM_LABELS=`$BAZEL query --output=label 'kind("pkg_npm", //...)'`
    +# Build them in one command to maximize parallelism
    +$BAZEL build --config=release $PKG_NPM_LABELS
    +# publish one package at a time to make it easier to spot any errors or warnings
    +for pkg in $PKG_NPM_LABELS ; do
    +  $BAZEL run --config=release -- ${pkg}.${NPM_COMMAND} --access public --tag latest
    +done
    +
    + +
    +

    WARNING: Bazel can’t track changes to git tags. That means it won’t rebuild a target if only the result of the workspace_status_command has changed. So changes to the version information may not be reflected if you re-build the package or bundle, and nothing in the package or bundle has changed.

    +
    + +

    See https://www.kchodorow.com/blog/2017/03/27/stamping-your-builds/ for more background.

    + + +
    +
    + + +
    +
    + +
    +
    +
    +
    +

    © 2020 Google

    +
    +
    +
    + +
    + + + + + + + + + + + + + + + diff --git a/docs/stamping.md b/docs/stamping.md new file mode 100644 index 0000000000..24373715fb --- /dev/null +++ b/docs/stamping.md @@ -0,0 +1,70 @@ +--- +title: Home +layout: default +toc: true +--- + +# Stamping + +Bazel is generally only a build tool, and is unaware of your version control system. +However, when publishing releases, you typically want to embed version information in the resulting distribution. +Bazel supports this natively, using the following approach: + +To stamp a build, you must pass the `--stamp` argument to Bazel. + +> Previous releases of rules_nodejs stamped builds always. +> However this caused stamp-aware actions to never be remotely cached, since the volatile +> status file is passed as an input and its checksum always changes. + +Also pass the `workspace_status_command` argument to `bazel build`. +We prefer to do these with an entry in `.bazelrc`: + +```sh +# This tells Bazel how to interact with the version control system +# Enable this with --config=release +build:release --stamp --workspace_status_command=./tools/bazel_stamp_vars.sh +``` + +Then create `tools/bazel_stamp_vars.sh`. + +This is a script that prints variable/value pairs. +Make sure you set the executable bit, eg. `chmod 755 tools/bazel_stamp_vars.sh`. +For example, we could run `git describe` to get the current tag: + +```bash +#!/usr/bin/env bash +echo BUILD_SCM_VERSION $(git describe --abbrev=7 --tags HEAD) +``` + +For a more full-featured script, take a look at the [bazel_stamp_vars in Angular] + +Finally, we recommend a release script around Bazel. We typically have more than one npm package published from one Bazel workspace, so we do a `bazel query` to find them, and publish in a loop. Here is a template to get you started: + +```sh +#!/usr/bin/env bash + +set -u -e -o pipefail + +# Call the script with argument "pack" or "publish" +readonly NPM_COMMAND=${1:-publish} +# Don't rely on $PATH to have the right version +readonly BAZEL_BIN=./node_modules/.bin/bazel +# Use a new output_base so we get a clean build +# Bazel can't know if the git metadata changed +readonly TMP=$(mktemp -d -t bazel-release.XXXXXXX) +readonly BAZEL="$BAZEL_BIN --output_base=$TMP" +# Find all the npm packages in the repo +readonly PKG_NPM_LABELS=`$BAZEL query --output=label 'kind("pkg_npm", //...)'` +# Build them in one command to maximize parallelism +$BAZEL build --config=release $PKG_NPM_LABELS +# publish one package at a time to make it easier to spot any errors or warnings +for pkg in $PKG_NPM_LABELS ; do + $BAZEL run --config=release -- ${pkg}.${NPM_COMMAND} --access public --tag latest +done +``` + +> WARNING: Bazel can't track changes to git tags. That means it won't rebuild a target if only the result of the workspace_status_command has changed. So changes to the version information may not be reflected if you re-build the package or bundle, and nothing in the package or bundle has changed. + +See https://www.kchodorow.com/blog/2017/03/27/stamping-your-builds/ for more background. + +[bazel_stamp_vars in Angular]: https://github.com/angular/angular/blob/master/tools/bazel_stamp_vars.sh diff --git a/internal/common/copy_to_bin.bzl b/internal/common/copy_to_bin.bzl index 88243eb8d7..88ce33e541 100644 --- a/internal/common/copy_to_bin.bzl +++ b/internal/common/copy_to_bin.bzl @@ -38,7 +38,7 @@ _copy_to_bin = rule( ) def copy_to_bin(name, srcs, **kwargs): - """Copies a source file to bazel-bin at the same workspace-relative path path. + """Copies a source file to bazel-bin at the same workspace-relative path. e.g. `/foo/bar/a.txt -> /foo/bar/a.txt` diff --git a/internal/node/node.bzl b/internal/node/node.bzl index 56c6d3dd71..9a8f326555 100644 --- a/internal/node/node.bzl +++ b/internal/node/node.bzl @@ -368,7 +368,7 @@ The set of default environment variables is: If the entry JavaScript file belongs to the same package (as the BUILD file), you can simply reference it by its relative name to the package directory: -``` +```python nodejs_binary( name = "my_binary", ... @@ -379,7 +379,7 @@ nodejs_binary( You can specify the entry point as a typescript file so long as you also include the ts_library target in data: -``` +```python ts_library( name = "main", srcs = ["main.ts"], @@ -397,7 +397,7 @@ The rule will use the corresponding `.js` output of the ts_library rule as the e If the entry point target is a rule, it should produce a single JavaScript entry file that will be passed to the nodejs_binary rule. For example: -``` +```python filegroup( name = "entry_file", srcs = ["main.js"], @@ -411,7 +411,7 @@ nodejs_binary( The entry_point can also be a label in another workspace: -``` +```python nodejs_binary( name = "history-server", entry_point = "@npm//:node_modules/history-server/modules/cli.js", @@ -431,7 +431,7 @@ to npm dependencies is to use fine grained npm dependencies which are setup with the `yarn_install` or `npm_install` rules. For example, in targets that used a `//:node_modules` filegroup, -``` +```python nodejs_binary( name = "my_binary", ... @@ -444,7 +444,7 @@ to be inputs to the `my_binary`. Using fine grained npm dependencies, `my_binary` is defined with only the npm dependencies that are needed: -``` +```python nodejs_binary( name = "my_binary", ... @@ -474,7 +474,7 @@ yarn_install( For other rules such as `jasmine_node_test`, fine grained npm dependencies are specified in the `deps` attribute: -``` +```python jasmine_node_test( name = "my_test", ... @@ -514,7 +514,7 @@ To get from a `$(rootpath)` to the absolute path that `$$(rlocation $(location)) `$$(rlocation $(rootpath))` if you are in the `templated_args` of a `nodejs_binary` or `nodejs_test`: BUILD.bazel: -``` +```python nodejs_test( name = "my_test", data = [":bootstrap.js"], @@ -526,7 +526,7 @@ or if you're in the context of a .js script you can pass the $(rootpath) as an a and use the javascript runfiles helper to resolve to the absolute path: BUILD.bazel: -``` +```python nodejs_test( name = "my_test", data = [":some_file"], @@ -536,7 +536,7 @@ nodejs_test( ``` my_test.js -``` +```python const runfiles = require(process.env['BAZEL_NODE_RUNFILES_HELPER']); const args = process.argv.slice(2); const some_file = runfiles.resolveWorkspaceRelative(args[0]); @@ -672,7 +672,7 @@ See rules_nodejs/internal/node/test/chdir for an example. To debug a Node.js test, we recommend saving a group of flags together in a "config". Put this in your `tools/bazel.rc` so it's shared with your team: -``` +```python # Enable debugging tests with --config=debug test:debug --test_arg=--node_options=--inspect-brk --test_output=streamed --test_strategy=exclusive --test_timeout=9999 --nocache_test_results ``` diff --git a/internal/node/node_repositories.bzl b/internal/node/node_repositories.bzl index e7f11ef3b5..3d9c0a298d 100644 --- a/internal/node/node_repositories.bzl +++ b/internal/node/node_repositories.bzl @@ -27,20 +27,82 @@ load("//toolchains/node:node_toolchain_configure.bzl", "node_toolchain_configure _DOC = """To be run in user's WORKSPACE to install rules_nodejs dependencies. -This rule sets up node, npm, and yarn. +This rule sets up node, npm, and yarn. The versions of these tools can be specified in one of three ways + +### Simplest Usage -The versions of these tools can be specified in one of three ways: -- Simplest Usage: Specify no explicit versions. This will download and use the latest NodeJS & Yarn that were available when the version of rules_nodejs you're using was released. Note that you can skip calling `node_repositories` in your WORKSPACE file - if you later try to `yarn_install` or `npm_install`, we'll automatically select this simple usage for you. -- Forced version(s): + +### Forced version(s) + You can select the version of NodeJS and/or Yarn to download & use by specifying it when you call node_repositories, using a value that matches a known version (see the default values) -- Using a custom version: + +### Using a custom version + You can pass in a custom list of NodeJS and/or Yarn repositories and URLs for node_resositories to use. -- Using a local version: + +#### Custom NodeJS versions + +To specify custom NodeJS versions, use the `node_repositories` attribute + +```python +node_repositories( + node_repositories = { + "10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e"), + "10.10.0-linux_amd64": ("node-v10.10.0-linux-x64.tar.xz", "node-v10.10.0-linux-x64", "686d2c7b7698097e67bcd68edc3d6b5d28d81f62436c7cf9e7779d134ec262a9"), + "10.10.0-windows_amd64": ("node-v10.10.0-win-x64.zip", "node-v10.10.0-win-x64", "70c46e6451798be9d052b700ce5dadccb75cf917f6bf0d6ed54344c856830cfb"), + }, +) +``` + +These can be mapped to a custom download URL, using `node_urls` + +```python +node_repositories( + node_version = "10.10.0", + node_repositories = {"10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e")}, + node_urls = ["https://mycorpproxy/mirror/node/v{version}/{filename}"], +) +``` + +A Mac client will try to download node from `https://mycorpproxy/mirror/node/v10.10.0/node-v10.10.0-darwin-x64.tar.gz` +and expect that file to have sha256sum `00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e` + +#### Custom Yarn versions + +To specify custom Yarn versions, use the `yarn_repositories` attribute + +```python +node_repositories( + yarn_repositories = { + "1.12.1": ("yarn-v1.12.1.tar.gz", "yarn-v1.12.1", "09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d"), + }, +) +``` + +Like `node_urls`, the `yarn_urls` attribute can be used to provide a list of custom URLs to use to download yarn + +```python +node_repositories( + yarn_repositories = { + "1.12.1": ("yarn-v1.12.1.tar.gz", "yarn-v1.12.1", "09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d"), + }, + yarn_version = "1.12.1", + yarn_urls = [ + "https://github.com/yarnpkg/yarn/releases/download/v{version}/{filename}", + ], +) +``` + +Will download yarn from https://github.com/yarnpkg/yarn/releases/download/v1.2.1/yarn-v1.12.1.tar.gz` +and expect the file to have sha256sum `09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d`. + +### Using a local version + To avoid downloads, you can check in vendored copies of NodeJS and/or Yarn and set vendored_node and or vendored_yarn to point to those before calling node_repositories. You can also point to a location where node is installed on your computer, but we don't recommend this because it leads to version skew between you, your coworkers, and your Continuous Integration environment. @@ -53,8 +115,6 @@ See the [the repositories documentation](repositories.html) for how to use the r You can optionally pass a `package_json` array to node_repositories. This lets you use Bazel's version of yarn or npm, yet always run the package manager yourself. This is an advanced scenario you can use in place of the `npm_install` or `yarn_install` rules, but we don't recommend it, and might remove it in the future. -Example: - ``` load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories") node_repositories(package_json = ["//:package.json", "//subpkg:package.json"]) @@ -73,18 +133,6 @@ _ATTRS = { A dictionary mapping NodeJS versions to sets of hosts and their corresponding (filename, strip_prefix, sha256) tuples. You should list a node binary for every platform users have, likely Mac, Windows, and Linux. - -For example, - -```python -node_repositories( - node_repositories = { - "10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e"), - "10.10.0-linux_amd64": ("node-v10.10.0-linux-x64.tar.xz", "node-v10.10.0-linux-x64", "686d2c7b7698097e67bcd68edc3d6b5d28d81f62436c7cf9e7779d134ec262a9"), - "10.10.0-windows_amd64": ("node-v10.10.0-win-x64.zip", "node-v10.10.0-win-x64", "70c46e6451798be9d052b700ce5dadccb75cf917f6bf0d6ed54344c856830cfb"), - }, -) -``` """, ), "node_urls": attr.string_list( @@ -98,19 +146,6 @@ Each entry is a template for downloading a node distribution. The `{version}` parameter is substituted with the `node_version` attribute, and `{filename}` with the matching entry from the `node_repositories` attribute. - -For example, given - -```python -node_repositories( - node_version = "10.10.0", - node_repositories = {"10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e")}, - node_urls = ["https://mycorpproxy/mirror/node/v{version}/{filename}"], -) -``` - -A Mac client will try to download node from `https://mycorpproxy/mirror/node/v10.10.0/node-v10.10.0-darwin-x64.tar.gz` -and expect that file to have sha256sum `00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e` """, ), "node_version": attr.string( @@ -164,16 +199,6 @@ are supported by the node version being used.""", doc = """Custom list of yarn repositories to use. Dictionary mapping Yarn versions to their corresponding (filename, strip_prefix, sha256) tuples. - -For example, - -```python -node_repositories( - yarn_repositories = { - "1.12.1": ("yarn-v1.12.1.tar.gz", "yarn-v1.12.1", "09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d"), - }, -) -``` """, ), "yarn_urls": attr.string_list( @@ -184,23 +209,6 @@ node_repositories( doc = """custom list of URLs to use to download Yarn Each entry is a template, similar to the `node_urls` attribute, using `yarn_version` and `yarn_repositories` in the substitutions. - -For example, - -```python -node_repositories( - yarn_repositories = { - "1.12.1": ("yarn-v1.12.1.tar.gz", "yarn-v1.12.1", "09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d"), - }, - yarn_version = "1.12.1", - yarn_urls = [ - "https://github.com/yarnpkg/yarn/releases/download/v{version}/{filename}", - ], -) -``` - -Will download yarn from https://github.com/yarnpkg/yarn/releases/download/v1.2.1/yarn-v1.12.1.tar.gz` -and expect the file to have sha256sum `09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d`. """, ), "yarn_version": attr.string( diff --git a/internal/providers/linkable_package_info.bzl b/internal/providers/linkable_package_info.bzl index dc821c17bf..1c659520a0 100644 --- a/internal/providers/linkable_package_info.bzl +++ b/internal/providers/linkable_package_info.bzl @@ -29,13 +29,13 @@ In the future, the linker may validate that the names match the name in a packag Path must be relative to execroot/wksp. It can either an output dir path such as, -'bazel-out/-/bin/path/to/package' or -'bazel-out/-/bin/external//path/to/package' +`bazel-out/<platform>-<build>/bin/path/to/package` or +`bazel-out/<platform>-<build>/bin/external/&llt;external_wksp>/path/to/package` or a source file path such as, -'path/to/package' or -'external//path/to/package' +`path/to/package` or +`external/<external_wksp>/path/to/package` """, "_tslibrary": "For internal use only", }, diff --git a/package.json b/package.json index 403f782f55..be8eb79766 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,7 @@ "update-nodejs-versions": "node ./scripts/update-nodejs-versions.js > internal/node/node_versions.bzl", "format": "git-clang-format", "format-all": "clang-format --glob='{internal/**/,examples/**/}*.{js,ts}' -i", - "stardoc": "bazel build //docs && cp -f dist/bin/docs/*.md docs", + "stardoc": "bazel build //docs && cp -f dist/bin/docs/*.md ./docs && cp -f dist/bin/docs/docs-out/*.html ./docs && cp -f dist/bin/docs/docs-out/css/*.css ./docs/css", "version": "conventional-changelog -p angular -i CHANGELOG.md -s && node ./scripts/on-version.js && bazel build //:release && node ./scripts/on-release.js && git stage version.bzl docs/install.md packages/create/index.js README.md CHANGELOG.md e2e/*/WORKSPACE examples/*/WORKSPACE", "postinstall": "patch-package && node internal/npm_install/test/postinstall.js" }, diff --git a/packages/cypress/install.md b/packages/cypress/install.md index 2f65fa44cd..228a72d4fb 100644 --- a/packages/cypress/install.md +++ b/packages/cypress/install.md @@ -36,7 +36,7 @@ build --experimental_inprocess_symlink_creation At this point in time, `cypress_repository` is incompatible with bazel sandboxing on Windows. This may change in the future, but for now using cypress on windows requires windows sandboxing be disabled (it is disabled by default) ## Example use of cypress_web_test -This example assumes you've named your external repository for node_modules as `npm` and for cypress as `cypress` +This example assumes you've named your external repository for node_modules as `npm` and for cypress as `cypress` ```python load("@cypress//:index.bzl", "cypress_web_test") load("@npm//@bazel/typescript:index.bzl", "ts_library") @@ -80,4 +80,4 @@ cypress_web_test( # Your cypress plugin used to configure cypress and boot your server plugins_file = ":plugins_file", ) -``` \ No newline at end of file +``` diff --git a/packages/terser/terser_minified.bzl b/packages/terser/terser_minified.bzl index 98b8a9e8d8..efe4c258c4 100644 --- a/packages/terser/terser_minified.bzl +++ b/packages/terser/terser_minified.bzl @@ -50,13 +50,13 @@ https://github.com/terser-js/terser#minify-options documents the content of the Bazel will make a copy of your config file, treating it as a template. -> Run bazel with `--subcommands` to see the path to the copied file. +Run bazel with `--subcommands` to see the path to the copied file. If you use the magic strings `"bazel_debug"` or `"bazel_no_debug"`, these will be replaced with `true` and `false` respecting the value of the `debug` attribute or the `--compilation_mode=dbg` bazel flag. -For example, +For example ``` { @@ -65,6 +65,7 @@ For example, } } ``` + Will disable the `arrows` compression setting when debugging. If `config_file` isn't supplied, Bazel will use a default config file. diff --git a/packages/typescript/install.md b/packages/typescript/install.md index edf4532d62..f98fa0bff3 100644 --- a/packages/typescript/install.md +++ b/packages/typescript/install.md @@ -145,9 +145,9 @@ on packages which aren't declared as dependencies. For example, if you use [tsic  [tsickle]: https://github.com/angular/tsickle -# Usage +## Usage -## Compiling TypeScript: `ts_library` +### Compiling TypeScript: `ts_library` The `ts_library` rule invokes the TypeScript compiler on one compilation unit, or "library" (generally one directory of source files). @@ -336,7 +336,7 @@ See [path mapping] for more details on the paths syntax. Similarly, you can use path mapping to teach the editor how to resolve imports from `ts_library` rules which set the `module_name` attribute. -## Notes +### Notes If you'd like a "watch mode", try [ibazel]. @@ -346,5 +346,3 @@ BUILD files from your source code. [gazelle]: https://github.com/bazelbuild/rules_go/tree/master/go/tools/gazelle [ibazel]: https://github.com/bazelbuild/bazel-watcher [path mapping]: https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mapping - -# API documentation diff --git a/packages/typescript/test/ts_project/simple/tsconfig.json b/packages/typescript/test/ts_project/simple/tsconfig.json index e98f617914..56d9d8ed34 100644 --- a/packages/typescript/test/ts_project/simple/tsconfig.json +++ b/packages/typescript/test/ts_project/simple/tsconfig.json @@ -2,4 +2,4 @@ "compilerOptions": { "types": [] } -} \ No newline at end of file +} diff --git a/tools/stardoc/BUILD.bazel b/tools/stardoc/BUILD.bazel index 801dc3c4ef..fbc54bf2bd 100644 --- a/tools/stardoc/BUILD.bazel +++ b/tools/stardoc/BUILD.bazel @@ -1 +1,4 @@ -exports_files(glob(["templates/*.vm"])) +exports_files(glob(["templates/*.vm"] + [ + "post-process-docs.js", + "jekyll_serve_tpl.sh", +])) diff --git a/tools/stardoc/index.bzl b/tools/stardoc/index.bzl index d72a1d35f1..44c3a5993d 100644 --- a/tools/stardoc/index.bzl +++ b/tools/stardoc/index.bzl @@ -1,6 +1,9 @@ "Wrap stardoc to set our repo-wide defaults" load("@io_bazel_stardoc//stardoc:stardoc.bzl", _stardoc = "stardoc") +load("//tools/stardoc:jekyll.bzl", _rules_nodejs_docs = "rules_nodejs_docs") + +rules_nodejs_docs = _rules_nodejs_docs _PKG = "@build_bazel_rules_nodejs//tools/stardoc" diff --git a/tools/stardoc/jekyll.bzl b/tools/stardoc/jekyll.bzl new file mode 100644 index 0000000000..08d75cf838 --- /dev/null +++ b/tools/stardoc/jekyll.bzl @@ -0,0 +1,153 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Rule to build a Jekyll site and perform post processing + +Infulanced by the main bazel.build Jekyll rule here: +https://github.com/bazelbuild/bazel/blob/master/scripts/docs/jekyll.bzl +""" + +load("@rules_pkg//:pkg.bzl", _pkg_tar = "pkg_tar") +load("//:index.bzl", _nodejs_binary = "nodejs_binary") + +def _jekyll_impl(ctx): + """non-hermetic rule to build a Jekyll site.""" + source = ctx.actions.declare_directory(ctx.attr.name + "-srcs") + output = ctx.actions.declare_directory(ctx.attr.name + "-out") + + ctx.actions.run_shell( + inputs = ctx.files.srcs, + outputs = [source], + command = ("mkdir -p %s\n" % (source.path)) + + "\n".join([ + "tar xf %s -C %s" % (src.path, source.path) + for src in ctx.files.srcs + ]), + ) + + ctx.actions.run( + inputs = [source], + outputs = [output], + executable = "jekyll", + use_default_shell_env = True, + arguments = ["build", "-q", "--trace", "-s", source.path, "-d", output.path], + ) + + # Create a shell script to serve the site locally + ctx.actions.expand_template( + template = ctx.file._jekyll_build_tpl, + output = ctx.outputs.executable, + substitutions = { + "%{source_dir}": source.short_path, + "%{workspace_name}": ctx.workspace_name, + }, + is_executable = True, + ) + + return DefaultInfo( + runfiles = ctx.runfiles(files = [source]), + files = depset([output]), + ) + +_jekyll = rule( + implementation = _jekyll_impl, + executable = True, + attrs = { + "srcs": attr.label_list( + allow_empty = False, + allow_files = [".tar"], + ), + "_jekyll_build_tpl": attr.label( + default = "//tools/stardoc:jekyll_serve_tpl.sh", + allow_single_file = True, + ), + }, +) + +def rules_nodejs_docs(name, layouts, includes, assets, css, readmes, docs, config, tags = []): + """Generates HTML docs for rules_nodejs via Jekyll + + Args: + name: Name for the docs + layouts: files that correspond to the Jekyll _layouts directory + includes: files that correspond to the Jekyll _includes directory + assets: files that should exist with an images directory + assets: files that should exist with an images directory + css: css file to use for the docs + readmes: dict of rules_nodejs package readme docs to their generating label + docs: set of raw markdown doc files + config: Jekyll configuration file + tags: any tags to set on the Jekyll rule + """ + + _nodejs_binary( + name = "post_process", + data = ["//tools/stardoc:post-process-docs.js"], + entry_point = "//tools/stardoc:post-process-docs.js", + ) + + [ + native.genrule( + name = "%s_md" % readme[0], + srcs = [readme[1]], + outs = [readme[0] + ".md"], + tools = [":post_process"], + cmd = "$(location :post_process) $< %s >> $@" % readme[0], + ) + for readme in readmes.items() + ] + + # Jekyll doesn't follow symlinks, so package everything up into tar files + # and allow the Jekyll rule extract them + _pkg_tar( + name = "%s_layouts" % name, + srcs = layouts, + package_dir = "_layouts", + ) + + _pkg_tar( + name = "%s_includes" % name, + srcs = includes, + package_dir = "_includes", + ) + + _pkg_tar( + name = "%s_css" % name, + srcs = [css], + package_dir = "css", + ) + + _pkg_tar( + name = "%s_assets" % name, + srcs = assets, + package_dir = "images", + ) + + _pkg_tar( + name = "%s_mds" % name, + srcs = [s + ".md" for s in readmes.keys()] + [config] + docs, + ) + + _jekyll( + name = name, + srcs = [ + ":%s_layouts" % name, + ":%s_includes" % name, + ":%s_css" % name, + ":%s_mds" % name, + ":%s_assets" % name, + ], + tags = tags, + ) diff --git a/tools/stardoc/jekyll_serve_tpl.sh b/tools/stardoc/jekyll_serve_tpl.sh new file mode 100644 index 0000000000..c7c305ed02 --- /dev/null +++ b/tools/stardoc/jekyll_serve_tpl.sh @@ -0,0 +1,9 @@ +#!/bin/sh +RUNFILES=$(cd ${JAVA_RUNFILES-$0.runfiles}/%{workspace_name} && pwd -P) +SOURCE_DIR="$RUNFILES/%{source_dir}" + +TDIR=$(mktemp -d) +RDIR=$(mktemp -d) +trap "rm -fr $RDIR $TDIR" EXIT +(cd $RDIR && \ + jekyll serve --disable-disk-cache --trace -s "$SOURCE_DIR" -d "$TDIR") diff --git a/tools/stardoc/post-process-docs.js b/tools/stardoc/post-process-docs.js new file mode 100644 index 0000000000..a6bcaeebb4 --- /dev/null +++ b/tools/stardoc/post-process-docs.js @@ -0,0 +1,33 @@ +const { readFileSync } = require('fs'); +const md = process.argv[2]; +const title = process.argv[3]; +const content = readFileSync(md, {encoding: 'utf8'}); + +// it seems more natural for devs to author with markdown, but the docs are generated into stardoc with HTML tables, +// so we have to replace a single backtick with a block, and a code fence ``` with +// the Jekyll highlighter syntax +const out = content + .replace(/(?$1
    `) + .replace(/```(\w*?)\n((?:(?!```)[\s\S])+)```/g, (str, lang, block) => { + // if no lang is defined, assume Python, it's likely right and the param is required + return `{% highlight ${lang ? lang.trim() : 'python'} %}\n${block}{% endhighlight %}`; + }); + +// stamp the frontmatter into the post processed stardoc HTML +const frontmatter = [ + '---', + `title: ${title}`, + 'layout: default', + 'toc: true', + 'nav: rule', + '---', + '\n' +].join('\n'); + +// write out to stdout, this script is run as part of a genrule that redirects the output the to expected file +process.stdout.write(frontmatter + out); diff --git a/tools/stardoc/templates/aspect.vm b/tools/stardoc/templates/aspect.vm index 023de1757e..3ff5bb25c1 100644 --- a/tools/stardoc/templates/aspect.vm +++ b/tools/stardoc/templates/aspect.vm @@ -1,19 +1,57 @@ #[[##]]# ${aspectName} -#[[###]]# Usage +
    +${util.aspectSummary($aspectName, $aspectInfo)}
    +
    -``` -$aspectName(#foreach( $attr in $aspectInfo.getAttributeList() )$attr.name#if( $foreach.hasNext ), #end#end) -``` +$aspectInfo.getDocString() -#if (!$aspectInfo.getAttributeList().isEmpty()) -#foreach ($attribute in $aspectInfo.getAttributeList()) +**ASPECT ATTRIBUTES** -#[[####]]# `${attribute.name}` -(*#if ($attribute.type == "NAME")[name]#elseif( $attribute.type == "LABEL" )[label]#elseif( $attribute.type == "LABEL_LIST" )[labels]#else${util.attributeTypeString($attribute)}#end#if( $attribute.mandatory ), mandatory#end*)#if (!$attribute.docString.isEmpty()): ${attribute.docString.trim()}#end -#if( !$attribute.defaultValue.isEmpty() ) +#if (!$aspectInfo.getAttributeList().isEmpty()) + + + + + + + + + #foreach ($aspectAttribute in $aspectInfo.getAspectAttributeList()) + + + + + #end + +
    NameType
    ${aspectAttribute}String
    +#end +**ATTRIBUTES** -Defaults to `$attribute.defaultValue`#end -#end +#if (!$aspectInfo.getAttributeList().isEmpty()) + + + + + + + + + + + + #foreach ($attribute in $aspectInfo.getAttributeList()) + + + + + + + + #end + +
    NameDescriptionTypeMandatoryDefault
    ${attribute.name} + #if(!$attribute.docString.isEmpty()) $attribute.docString.trim() #else - #end + ${util.attributeTypeString($attribute)}${util.mandatoryString($attribute)}$attribute.defaultValue
    #end diff --git a/tools/stardoc/templates/func.vm b/tools/stardoc/templates/func.vm index 3f9bb6d7f6..4f17ea385d 100644 --- a/tools/stardoc/templates/func.vm +++ b/tools/stardoc/templates/func.vm @@ -2,25 +2,35 @@ $funcInfo.docString -#[[###]]# Usage +
    +${util.funcSummary($funcInfo)}
    +
    -``` -${funcInfo.functionName}(#foreach( $param in $funcInfo.getParameterList() )$param.name#if( $foreach.hasNext ), #end#end) -``` +**PARAMETERS** #if (!$funcInfo.getParameterList().isEmpty()) -#foreach ($param in $funcInfo.getParameterList()) - -#[[####]]# `${param.name}` - -#if (!$param.docString.isEmpty()) -${param.docString.trim()} -#end - -#if(!$param.getDefaultValue().isEmpty()) -Defaults to `$param.getDefaultValue()` + + + + + + + + + + #foreach ($param in $funcInfo.getParameterList()) + + + + + + #end + +
    NameDescriptionDefault
    ${param.name} + #if (!$param.docString.isEmpty()) + ${util.htmlEscape($param.docString.trim())} + #end + + $param.defaultValue +
    #end - -#end - -#end \ No newline at end of file diff --git a/tools/stardoc/templates/header.vm b/tools/stardoc/templates/header.vm index f7221fca14..e69de29bb2 100644 --- a/tools/stardoc/templates/header.vm +++ b/tools/stardoc/templates/header.vm @@ -1,3 +0,0 @@ -[name]: https://bazel.build/docs/build-ref.html#name -[label]: https://bazel.build/docs/build-ref.html#labels -[labels]: https://bazel.build/docs/build-ref.html#labels diff --git a/tools/stardoc/templates/provider.vm b/tools/stardoc/templates/provider.vm index b64e8f87a7..3600fc3dff 100644 --- a/tools/stardoc/templates/provider.vm +++ b/tools/stardoc/templates/provider.vm @@ -1,13 +1,30 @@ #[[##]]# ${providerName} -${providerInfo.docString} - -#if (!$providerInfo.fieldInfoList.isEmpty()) -#foreach ($field in $providerInfo.fieldInfoList) +
    +${util.providerSummary($providerName, $providerInfo)}
    +
    -#[[####]]# `${field.name}` -${field.docString} +${providerInfo.docString} -#end +**FIELDS** +#if (!$providerInfo.fieldInfoList.isEmpty()) + + + + + + + + + #foreach ($field in $providerInfo.fieldInfoList) + + + + + #end + +
    NameDescription
    ${field.name} + #if(!$field.docString.isEmpty()) $field.docString.trim() #else - #end +
    #end diff --git a/tools/stardoc/templates/rule.vm b/tools/stardoc/templates/rule.vm index c3ca11f929..c5bf69529d 100644 --- a/tools/stardoc/templates/rule.vm +++ b/tools/stardoc/templates/rule.vm @@ -2,20 +2,42 @@ $ruleInfo.docString -#[[###]]# Usage +
    +${util.ruleSummary($ruleName, $ruleInfo)}
    +
    -``` -$ruleName(#foreach( $attr in $ruleInfo.getAttributeList() )$attr.name#if( $foreach.hasNext ), #end#end) -``` +**ATTRIBUTES** #if (!$ruleInfo.getAttributeList().isEmpty()) -#foreach ($attribute in $ruleInfo.getAttributeList()) - -#[[####]]# `${attribute.name}` -(*#if ($attribute.type == "NAME")[name]#elseif( $attribute.type == "LABEL" )[label]#elseif( $attribute.type == "LABEL_LIST" )[labels]#else${util.attributeTypeString($attribute)}#end#if( $attribute.mandatory ), mandatory#end*)#if (!$attribute.docString.isEmpty()): ${attribute.docString.trim()}#end -#if( !$attribute.defaultValue.isEmpty() ) - - -Defaults to `$attribute.defaultValue`#end -#end + + + + + + + + + + + + #foreach ($attribute in $ruleInfo.getAttributeList()) + + + + + + + + #end + +
    NameDescriptionTypeMandatoryDefault
    ${attribute.name} + #if (!$attribute.docString.isEmpty()) + ${attribute.docString.trim()} + #end + #if (!$attribute.getProviderNameGroupList().isEmpty()) + The dependencies of this attribute must provide: ${util.attributeProviders($attribute)} + #end + ${util.attributeTypeString($attribute)}${util.mandatoryString($attribute)} + $attribute.defaultValue +
    #end From fd2fc056532b0a6d28f54fc7092a9c2e0f004b5c Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Wed, 26 Aug 2020 16:45:23 -0700 Subject: [PATCH 0830/1134] docs: minor cleanup of builtins page don't include the defaults which are giant dictionaries as they render poorly --- docs/Built-ins.html | 20 +++++++----- docs/Built-ins.md | 18 ++++++----- docs/README.md | 2 +- docs/TypeScript.html | 27 +++++++++++----- docs/TypeScript.md | 27 +++++++++++----- internal/node/node_repositories.bzl | 48 +++++++++++++++++++---------- package.json | 2 +- 7 files changed, 94 insertions(+), 50 deletions(-) diff --git a/docs/Built-ins.html b/docs/Built-ins.html index fd5726f09e..e9c2859826 100755 --- a/docs/Built-ins.html +++ b/docs/Built-ins.html @@ -227,8 +227,8 @@

    Custom Yarn versions

    ], )
    -

    Will download yarn from https://github.com/yarnpkg/yarn/releases/download/v1.2.1/yarn-v1.12.1.tar.gz -and expect the file to have sha256sum 09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d.

    +

    Will download yarn from https://github.com/yarnpkg/yarn/releases/download/v1.2.1/yarn-v1.12.1.tar.gz +and expect the file to have sha256sum 09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d.

    Using a local version

    @@ -239,10 +239,10 @@

    Using a local version

    See the the repositories documentation for how to use the resulting repositories.

    -

    Creating dependency installation scripts for manually-managed dependencies

    +

    Manual install

    -

    You can optionally pass a </code>package_json array to node_repositories. This lets you use Bazel's version of yarn or npm, yet always run the package manager yourself. -This is an advanced scenario you can use in place of the npm_install or yarn_install` rules, but we don’t recommend it, and might remove it in the future.

    +

    You can optionally pass a package_json array to node_repositories. This lets you use Bazel’s version of yarn or npm, yet always run the package manager yourself. +This is an advanced scenario you can use in place of the npm_install or yarn_install rules, but we don’t recommend it, and might remove it in the future.

    load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories")
     node_repositories(package_json = ["//:package.json", "//subpkg:package.json"])
    @@ -287,11 +287,13 @@

    Dictionary: String -> List of strings optional - {"8.0.0-darwin_amd64": ("node-v8.0.0-darwin-x64.tar.gz", "node-v8.0.0-darwin-x64", "6e4a66917e2c11d5adc537c899941c973ae586293352b8172a4f32be0b7f0300"), "8.0.0-linux_arm64": ("node-v8.0.0-linux-arm64.tar.xz", "node-v8.0.0-linux-arm64", "8d6eaefcc252055de54a666d4e00eec78caf2143cd7a13b63f109e9eb78a795e"), "8.0.0-linux_amd64": ("node-v8.0.0-linux-x64.tar.xz", "node-v8.0.0-linux-x64", "0a536bb83eeccca23626e5e5ead52563a641e4331c35e367662892921dc7e8a4"), "8.0.0-windows_amd64": ("node-v8.0.0-win-x64.zip", "node-v8.0.0-win-x64", "84410377118857674e0fb6e7bc7627ffb8cc67a72f162a050276b076e328a9bb"), "8.1.0-darwin_amd64": ("node-v8.1.0-darwin-x64.tar.gz", "node-v8.1.0-darwin-x64", "08af5f1a7441728cabf9b11af25da28ee1725903524968dd9621b885b13303c7"), "8.1.0-linux_arm64": ("node-v8.1.0-linux-arm64.tar.xz", "node-v8.1.0-linux-arm64", "adf2f517c9847cbb5904b282c0819526b5264c256477ed5e4b258584daa1a2ea"), "8.1.0-linux_amd64": ("node-v8.1.0-linux-x64.tar.xz", "node-v8.1.0-linux-x64", "1638a0083c6eee122cbbefdf39cb8bcc43cf19fedff331a0317b05fd38dcb6df"), "8.1.0-windows_amd64": ("node-v8.1.0-win-x64.zip", "node-v8.1.0-win-x64", "cee1fd1c828e8996824a2d9f9056dfae771b77c05b15ad015bc7f8800409215c"), "8.1.1-darwin_amd64": ("node-v8.1.1-darwin-x64.tar.gz", "node-v8.1.1-darwin-x64", "2f67890a5a46564672cfd4522cc00c7ac04d307e6a942ae1ad38b6aee94c29e2"), "8.1.1-linux_arm64": ("node-v8.1.1-linux-arm64.tar.xz", "node-v8.1.1-linux-arm64", "3971543f9d29f77ddb8f47a54e4b99422a822173599748ab7fcd9c35c8e25124"), "8.1.1-linux_amd64": ("node-v8.1.1-linux-x64.tar.xz", "node-v8.1.1-linux-x64", "6a735e77bdd21c92fe85ea5f9f567d0d6930fa33e0e111946b17cdb7efefb8d5"), "8.1.1-windows_amd64": ("node-v8.1.1-win-x64.zip", "node-v8.1.1-win-x64", "459f3b62e58f4fac3b9b5e49694855f338f3dcf2fcf955299ee2a47f7687625a"), "8.1.2-darwin_amd64": ("node-v8.1.2-darwin-x64.tar.gz", "node-v8.1.2-darwin-x64", "70f353449b19d6d36262f5e38f9cc23e80b2034c21ae48623a6a4890f513eb53"), "8.1.2-linux_arm64": ("node-v8.1.2-linux-arm64.tar.xz", "node-v8.1.2-linux-arm64", "d468ac671047a5a5edb6edd34a9a625645505551c35ef73e2102c504535a09d4"), "8.1.2-linux_amd64": ("node-v8.1.2-linux-x64.tar.xz", "node-v8.1.2-linux-x64", "f5dc173d3005fbcfd107c83a15d4dbff9a28ff53ab42c23344a572d84814ecfe"), "8.1.2-windows_amd64": ("node-v8.1.2-win-x64.zip", "node-v8.1.2-win-x64", "5463c812afeb498ad8ab9c396246e455d9353ab48ae409c82a2a45193e161f66"), "8.1.3-darwin_amd64": ("node-v8.1.3-darwin-x64.tar.gz", "node-v8.1.3-darwin-x64", "ae588038480a6acc57b6b04802fa876e0b602231e9846944dd1b4437e8c1205f"), "8.1.3-linux_arm64": ("node-v8.1.3-linux-arm64.tar.xz", "node-v8.1.3-linux-arm64", "cebc2edd89f20613a530509a2435ecc42757ce16032559ef174ebe84875a1536"), "8.1.3-linux_amd64": ("node-v8.1.3-linux-x64.tar.xz", "node-v8.1.3-linux-x64", "d41dc375ea7e33fadf0fb1bf89d9dfd222a2fb85633fba3d2cf48ac03522ba71"), "8.1.3-windows_amd64": ("node-v8.1.3-win-x64.zip", "node-v8.1.3-win-x64", "be582920c723124ebad48c968f539ef66b1f628d8b6f2338dc68a32f95104856"), "8.1.4-darwin_amd64": ("node-v8.1.4-darwin-x64.tar.gz", "node-v8.1.4-darwin-x64", "a24858a10dd4ca8ad55fd61a7472b4fe9140eb3fa347c41717360c3f29438748"), "8.1.4-linux_arm64": ("node-v8.1.4-linux-arm64.tar.xz", "node-v8.1.4-linux-arm64", "3553c617f594286fea7052678d04aec9e167adddf702b70431d88ce42573c339"), "8.1.4-linux_amd64": ("node-v8.1.4-linux-x64.tar.xz", "node-v8.1.4-linux-x64", "d82fe7ef7e0f8ca1c343f00e3e490996553507ec7d42034f5df034cc7908caaf"), "8.1.4-windows_amd64": ("node-v8.1.4-win-x64.zip", "node-v8.1.4-win-x64", "cc3689ffefc738f6256aab1713343c3c64c24ec997600c0a48243fb26f5e0bce"), "8.2.0-darwin_amd64": ("node-v8.2.0-darwin-x64.tar.gz", "node-v8.2.0-darwin-x64", "da5cca37ae0afdbff3a269bb3dc71ff0d86e282920286f71ae5eb6757cfa5356"), "8.2.0-linux_arm64": ("node-v8.2.0-linux-arm64.tar.xz", "node-v8.2.0-linux-arm64", "3298ae4ae67c4ad714bed23383fd08db5711b164a077a25fb6b282533e65cf77"), "8.2.0-linux_amd64": ("node-v8.2.0-linux-x64.tar.xz", "node-v8.2.0-linux-x64", "e8ceaac3ee4385d53bcebc552a7a6b545b09b9652f5ca1b254aae698fd9a25f9"), "8.2.0-windows_amd64": ("node-v8.2.0-win-x64.zip", "node-v8.2.0-win-x64", "6bc3cc580f0e8190e6a03d6a5967c861c29d6a6eb50f995b3afb7d60b8cee4e1"), "8.2.1-darwin_amd64": ("node-v8.2.1-darwin-x64.tar.gz", "node-v8.2.1-darwin-x64", "32d0923c147470d57f18f055014f5a9fe8a3919406010a2e80ba85952d3c9923"), "8.2.1-linux_arm64": ("node-v8.2.1-linux-arm64.tar.xz", "node-v8.2.1-linux-arm64", "9ed01737f37d410067beeb42066e51f6d0385677c7d0daeeaf2e32cb2aca854a"), "8.2.1-linux_amd64": ("node-v8.2.1-linux-x64.tar.xz", "node-v8.2.1-linux-x64", "abcddeb95cc4465953b1edb0922d20e9b0b3de83688fc8150b863117032a978a"), "8.2.1-windows_amd64": ("node-v8.2.1-win-x64.zip", "node-v8.2.1-win-x64", "37e84e54c67e3d1e52d657c04835b211c94631a0b358f4e7dc351618fdb6c083"), "8.3.0-darwin_amd64": ("node-v8.3.0-darwin-x64.tar.gz", "node-v8.3.0-darwin-x64", "a627354982a514e77e5c37ed5952edc81a7dd9c4f661fd919f192c21ae548654"), "8.3.0-linux_arm64": ("node-v8.3.0-linux-arm64.tar.xz", "node-v8.3.0-linux-arm64", "9e0dab4913585a1b8117bda03c4b5581d9140aec67bb4be0e0b6a4999b41b4ab"), "8.3.0-linux_amd64": ("node-v8.3.0-linux-x64.tar.xz", "node-v8.3.0-linux-x64", "ae377995c6e1af8e2a60c4a929f77562ebed9a2c6897cbd311a2c331f76b4e0f"), "8.3.0-windows_amd64": ("node-v8.3.0-win-x64.zip", "node-v8.3.0-win-x64", "e762fa218465e5aa0952336eee2c3e42e5b48390b36838ca7b6a243812e0b7e5"), "8.4.0-darwin_amd64": ("node-v8.4.0-darwin-x64.tar.gz", "node-v8.4.0-darwin-x64", "cc10ffbd11586bd27a7cc5e6e2d03fd3e0b341368387a03ee9a0117a0288599d"), "8.4.0-linux_arm64": ("node-v8.4.0-linux-arm64.tar.xz", "node-v8.4.0-linux-arm64", "0a811bbe4905fc879f3cbfc976e5a37cca05bbd609774abe4332b29fea75f073"), "8.4.0-linux_amd64": ("node-v8.4.0-linux-x64.tar.xz", "node-v8.4.0-linux-x64", "7fd86abad06f96cb2f889c2a0e25686a3de3e9a078ad946ded91ee4f28d8218a"), "8.4.0-windows_amd64": ("node-v8.4.0-win-x64.zip", "node-v8.4.0-win-x64", "0f60c99479f74d75c7239795c90698826ba8252019d4c23e82ed0d72ceb8974f"), "8.5.0-darwin_amd64": ("node-v8.5.0-darwin-x64.tar.gz", "node-v8.5.0-darwin-x64", "0c8d4c4d90f858a19a29fe1ae7f42b2b7f1a4d3caaa25bea2e08479c00ebbd5f"), "8.5.0-linux_arm64": ("node-v8.5.0-linux-arm64.tar.xz", "node-v8.5.0-linux-arm64", "e0decdebe73dba516d6c72401e337cee6277c6e00f817b0bf1c592360adfd4e6"), "8.5.0-linux_amd64": ("node-v8.5.0-linux-x64.tar.xz", "node-v8.5.0-linux-x64", "a9651fcc6259b4a944ebb72e6dd116602c7b26ddf939599b060d1d3e6ead8c36"), "8.5.0-windows_amd64": ("node-v8.5.0-win-x64.zip", "node-v8.5.0-win-x64", "c385d162c15a7a85d42755ee8c78c1c73bd251e2f7cbf82e5e20c824564aa9df"), "8.6.0-darwin_amd64": ("node-v8.6.0-darwin-x64.tar.gz", "node-v8.6.0-darwin-x64", "2c95f3194a92e8b37aab8895fbaeb1f5fabef3494600ef78a7b7e078dba9a7c9"), "8.6.0-linux_arm64": ("node-v8.6.0-linux-arm64.tar.xz", "node-v8.6.0-linux-arm64", "6848567ab32d04694120e18c20ef47d0f4163229634f236e4bdbb8d135f3204e"), "8.6.0-linux_amd64": ("node-v8.6.0-linux-x64.tar.xz", "node-v8.6.0-linux-x64", "e6f52c3ed7e2cc34ebddbc563434fdf043feb449a60f028101eb45227aec3444"), "8.6.0-windows_amd64": ("node-v8.6.0-win-x64.zip", "node-v8.6.0-win-x64", "08e9b29c47567517ca95ca01d5cdb255279be5463952f92da5c372a99d620b23"), "8.7.0-darwin_amd64": ("node-v8.7.0-darwin-x64.tar.gz", "node-v8.7.0-darwin-x64", "5e59798c1deafd671a35ef4dcdb9b97ce98f9255a056832dc98d454613e9ea08"), "8.7.0-linux_arm64": ("node-v8.7.0-linux-arm64.tar.xz", "node-v8.7.0-linux-arm64", "5a1a1907fbb6d90667ce70ad42602534f6cc6eda873d1c50a3259349aee73418"), "8.7.0-linux_amd64": ("node-v8.7.0-linux-x64.tar.xz", "node-v8.7.0-linux-x64", "9d6f649576cac74ef0b6634af8265156370cf8fdf3676f03e867347d3207675d"), "8.7.0-windows_amd64": ("node-v8.7.0-win-x64.zip", "node-v8.7.0-win-x64", "e95be435674e82ea7133c3268cb70044eabde2d0aef28b2a3df5c7d8d23cadcc"), "8.8.0-darwin_amd64": ("node-v8.8.0-darwin-x64.tar.gz", "node-v8.8.0-darwin-x64", "69a37e240fac48289a2a5bb75ab96091f8d6457eeaf23c0a5125250abe418176"), "8.8.0-linux_arm64": ("node-v8.8.0-linux-arm64.tar.xz", "node-v8.8.0-linux-arm64", "454617ff94882d9a81dca0840065fb5a928ff68e8e8efe7c1748d996ab757b2e"), "8.8.0-linux_amd64": ("node-v8.8.0-linux-x64.tar.xz", "node-v8.8.0-linux-x64", "4304c297f41085ac1f7a6a8e68496d9fd5aa3b92590e7c3c6015a23939767e72"), "8.8.0-windows_amd64": ("node-v8.8.0-win-x64.zip", "node-v8.8.0-win-x64", "a7a1fd2c5f5c967d7df70fdec1a8b2d2d2b1b411fcdd4f23bcf8c9c837a7c3cb"), "8.8.1-darwin_amd64": ("node-v8.8.1-darwin-x64.tar.gz", "node-v8.8.1-darwin-x64", "bf208e29418fb3efc836d3d32b62b9162f0f0b36a0665abc0990f4e292cfc84b"), "8.8.1-linux_arm64": ("node-v8.8.1-linux-arm64.tar.xz", "node-v8.8.1-linux-arm64", "ea8ad0286a31e7519e979fcf99e503845a95da640cd140be5cff418a68fa6263"), "8.8.1-linux_amd64": ("node-v8.8.1-linux-x64.tar.xz", "node-v8.8.1-linux-x64", "004bc95267ef5d5b928f560582f681a679bada2201bf221735a02f4956f67b09"), "8.8.1-windows_amd64": ("node-v8.8.1-win-x64.zip", "node-v8.8.1-win-x64", "a7e60a1a5f46ef309cbe74e423c17e69dd0a573f0c92c9e325caade3388d192a"), "8.9.0-darwin_amd64": ("node-v8.9.0-darwin-x64.tar.gz", "node-v8.9.0-darwin-x64", "aaf165348bc6d20012b048a88a8f3a35cba6799496e8f4c1246d85c524a84dbc"), "8.9.0-linux_arm64": ("node-v8.9.0-linux-arm64.tar.xz", "node-v8.9.0-linux-arm64", "30cb00ac1cf6b466b1f27e7ce41363a67a66dbb64227c2dc5e33d221b09fc579"), "8.9.0-linux_amd64": ("node-v8.9.0-linux-x64.tar.xz", "node-v8.9.0-linux-x64", "e92b91fa473f9ad805a1241907b6f1bd3f8ceac8426a8b4cb05428e62e243bdd"), "8.9.0-windows_amd64": ("node-v8.9.0-win-x64.zip", "node-v8.9.0-win-x64", "dd971e43ff003213b0be31c1a8ce3421f72e0db2a703bc254ac685be4f7f609e"), "8.9.1-darwin_amd64": ("node-v8.9.1-darwin-x64.tar.gz", "node-v8.9.1-darwin-x64", "05c992a6621d28d564b92bf3051a5dc0adf83839237c0d4653a8cdb8a1c73b94"), "8.9.1-linux_arm64": ("node-v8.9.1-linux-arm64.tar.xz", "node-v8.9.1-linux-arm64", "f774660980dcf931bf29847a5f26317823a063fa4a56f85f37c3222d77cce7c1"), "8.9.1-linux_amd64": ("node-v8.9.1-linux-x64.tar.xz", "node-v8.9.1-linux-x64", "8be82805f7c1ab3e64d4569fb9a90ded2de78dd27cadbb91bad1bf975dae1e2d"), "8.9.1-windows_amd64": ("node-v8.9.1-win-x64.zip", "node-v8.9.1-win-x64", "db89c6e041da359561fbe7da075bb4f9881a0f7d3e98c203e83732cfb283fa4a"), "8.9.2-darwin_amd64": ("node-v8.9.2-darwin-x64.tar.gz", "node-v8.9.2-darwin-x64", "ba03ae4c0ebd33e8661b5b241211ddb9f7e3b5b959d8cbd68f5941cb1ed5784d"), "8.9.2-linux_arm64": ("node-v8.9.2-linux-arm64.tar.xz", "node-v8.9.2-linux-arm64", "cc222b4f910ff27ff66ccc96d5c7e2117942bcd161ec253d83cf430146b79bdf"), "8.9.2-linux_amd64": ("node-v8.9.2-linux-x64.tar.xz", "node-v8.9.2-linux-x64", "d4065724e7f5f11e999f78de50fb0faac74341799cb0c0dafcbe87e0ecb0be86"), "8.9.2-windows_amd64": ("node-v8.9.2-win-x64.zip", "node-v8.9.2-win-x64", "2afa8b899c0dddea50dcf5dda66ae7b0ca32326dbf66c52f947c082e7c95d090"), "8.9.3-darwin_amd64": ("node-v8.9.3-darwin-x64.tar.gz", "node-v8.9.3-darwin-x64", "fa7962f25db420a374e9e60d8a410188bd690a2f0ce8d403aa9b09d9b7ae8c1f"), "8.9.3-linux_arm64": ("node-v8.9.3-linux-arm64.tar.xz", "node-v8.9.3-linux-arm64", "8860678ad0c24059380af254574e5a12371a2d5c92ca5e1ac7267314af7df04f"), "8.9.3-linux_amd64": ("node-v8.9.3-linux-x64.tar.xz", "node-v8.9.3-linux-x64", "86f3aa593315f0503d069e3f4805019583ab8d86c0244a83c795d1942e3f99b7"), "8.9.3-windows_amd64": ("node-v8.9.3-win-x64.zip", "node-v8.9.3-win-x64", "17dee0c06d088269123a27db3905a39a17a51cc0ea65435ae942c718f0f94403"), "8.9.4-darwin_amd64": ("node-v8.9.4-darwin-x64.tar.gz", "node-v8.9.4-darwin-x64", "ca50f7d2035eb805306e303b644bb1cde170ce2615e0a2c6e95fb80881c48c24"), "8.9.4-linux_arm64": ("node-v8.9.4-linux-arm64.tar.xz", "node-v8.9.4-linux-arm64", "7c0369a5dbc98d0989c208ca3ee1b6db4cba576343014fdbf7d36fd2659f7089"), "8.9.4-linux_amd64": ("node-v8.9.4-linux-x64.tar.xz", "node-v8.9.4-linux-x64", "68b94aac38cd5d87ab79c5b38306e34a20575f31a3ea788d117c20fffcca3370"), "8.9.4-windows_amd64": ("node-v8.9.4-win-x64.zip", "node-v8.9.4-win-x64", "48946e99ac4484e071df25741d2300f3a656f476c5ff3f8116a4746c07ebe3b7"), "8.10.0-darwin_amd64": ("node-v8.10.0-darwin-x64.tar.gz", "node-v8.10.0-darwin-x64", "7d77bd35bc781f02ba7383779da30bd529f21849b86f14d87e097497671b0271"), "8.10.0-linux_arm64": ("node-v8.10.0-linux-arm64.tar.xz", "node-v8.10.0-linux-arm64", "cbec410109664f75d3c988a43483576fc56f745e05e3884891df9c509fbb1b12"), "8.10.0-linux_amd64": ("node-v8.10.0-linux-x64.tar.xz", "node-v8.10.0-linux-x64", "92220638d661a43bd0fee2bf478cb283ead6524f231aabccf14c549ebc2bc338"), "8.10.0-windows_amd64": ("node-v8.10.0-win-x64.zip", "node-v8.10.0-win-x64", "936ada36cb6f09a5565571e15eb8006e45c5a513529c19e21d070acf0e50321b"), "8.11.0-darwin_amd64": ("node-v8.11.0-darwin-x64.tar.gz", "node-v8.11.0-darwin-x64", "408323335b8c691d75397c76ddd7b00490852652c78c813c586ba7eccc5c382b"), "8.11.0-linux_arm64": ("node-v8.11.0-linux-arm64.tar.xz", "node-v8.11.0-linux-arm64", "a28f599a14ca9ef4062fa1e605b69cd046f81d3fc9a7d6dde1856fb593004b3a"), "8.11.0-linux_amd64": ("node-v8.11.0-linux-x64.tar.xz", "node-v8.11.0-linux-x64", "180ef8c2a39c1696b9a05832883ed981ba11475ffa44ca77781a8d1c1954f944"), "8.11.0-windows_amd64": ("node-v8.11.0-win-x64.zip", "node-v8.11.0-win-x64", "55b9c8d48b59569117a63fdb26e1de05e792c37f563feb7d44b4cd59be96aff8"), "8.11.1-darwin_amd64": ("node-v8.11.1-darwin-x64.tar.gz", "node-v8.11.1-darwin-x64", "5c7b05899ff56910a2b8180f139d48612f349ac2c5d20f08dbbeffbed9e3a089"), "8.11.1-linux_arm64": ("node-v8.11.1-linux-arm64.tar.xz", "node-v8.11.1-linux-arm64", "ff518f33751baa8ea4f18853d446357c2edecd930a1526ac9b2eaa79baddc1bf"), "8.11.1-linux_amd64": ("node-v8.11.1-linux-x64.tar.xz", "node-v8.11.1-linux-x64", "6617e245fa0f7fbe0e373e71d543fea878315324ab31dc64b4eba10e42d04c11"), "8.11.1-windows_amd64": ("node-v8.11.1-win-x64.zip", "node-v8.11.1-win-x64", "7d49b59c2b5d73a14c138e8a215d558a64a5241cd5035d9824f608e7bba097b1"), "8.11.2-darwin_amd64": ("node-v8.11.2-darwin-x64.tar.gz", "node-v8.11.2-darwin-x64", "6bd619ab577a1256531e50e31924d99a094eb920de8b5bd060a056a2608282b9"), "8.11.2-linux_arm64": ("node-v8.11.2-linux-arm64.tar.xz", "node-v8.11.2-linux-arm64", "c8e9833402277c1a5a31b41cc31c9cedad68ba87c2ef78aed6a3ced81af9da7f"), "8.11.2-linux_amd64": ("node-v8.11.2-linux-x64.tar.xz", "node-v8.11.2-linux-x64", "213599127d24496cbf1cbb2a7c51060a3506d6b11132c59bb7f9f8a0edd210a7"), "8.11.2-windows_amd64": ("node-v8.11.2-win-x64.zip", "node-v8.11.2-win-x64", "bbac1f56e8001a093acb2942f8a43c3bf22aec58216f446b7bf01f6f822dfe3f"), "8.11.3-darwin_amd64": ("node-v8.11.3-darwin-x64.tar.gz", "node-v8.11.3-darwin-x64", "77fa26b4c2fc34bdf5a5dd1cd39c93b12087fbd25148c6f04bf409698ee48b86"), "8.11.3-linux_arm64": ("node-v8.11.3-linux-arm64.tar.xz", "node-v8.11.3-linux-arm64", "b8fddec18f20533929a07bc1d38ae63b1999a0252740094f0974b2cbea76eaa4"), "8.11.3-linux_amd64": ("node-v8.11.3-linux-x64.tar.xz", "node-v8.11.3-linux-x64", "08e2fcfea66746bd966ea3a89f26851f1238d96f86c33eaf6274f67fce58421a"), "8.11.3-windows_amd64": ("node-v8.11.3-win-x64.zip", "node-v8.11.3-win-x64", "91b779def1b21dcd1def7fc9671a869a1e2f989952e76fdc08a5d73570075f31"), "8.11.4-darwin_amd64": ("node-v8.11.4-darwin-x64.tar.gz", "node-v8.11.4-darwin-x64", "aa1de83b388581d0d9ec3276f4526ee67e17e0f1bc0deb5133f960ce5dc9f1ef"), "8.11.4-linux_arm64": ("node-v8.11.4-linux-arm64.tar.xz", "node-v8.11.4-linux-arm64", "46e90dd916ddbf88c866de300c1b2a26f9216b19abd92b29e89439f62fb6fc1c"), "8.11.4-linux_amd64": ("node-v8.11.4-linux-x64.tar.xz", "node-v8.11.4-linux-x64", "85ea7cbb5bf624e130585bfe3946e99c85ce5cb84c2aee474038bdbe912f908c"), "8.11.4-windows_amd64": ("node-v8.11.4-win-x64.zip", "node-v8.11.4-win-x64", "72a21e2fcd3703994f57cf707b92e7f939df99c3e0298102e7436849e4948536"), "8.12.0-darwin_amd64": ("node-v8.12.0-darwin-x64.tar.gz", "node-v8.12.0-darwin-x64", "ca131b84dfcf2b6f653a6521d31f7a108ad7d83f4d7e781945b2eca8172064aa"), "8.12.0-linux_arm64": ("node-v8.12.0-linux-arm64.tar.xz", "node-v8.12.0-linux-arm64", "0fbdcfd8cf0cb5e8f5beff84ba091fd47126ba44c628e3a351501419b211aa1a"), "8.12.0-linux_amd64": ("node-v8.12.0-linux-x64.tar.xz", "node-v8.12.0-linux-x64", "29a20479cd1e3a03396a4e74a1784ccdd1cf2f96928b56f6ffa4c8dae40c88f2"), "8.12.0-windows_amd64": ("node-v8.12.0-win-x64.zip", "node-v8.12.0-win-x64", "9b22c9b23148b61ea0052826b3ac0255b8a3a542c125272b8f014f15bf11b091"), "8.13.0-darwin_amd64": ("node-v8.13.0-darwin-x64.tar.gz", "node-v8.13.0-darwin-x64", "f6261c7a09a2c8bd77a8760a0e110410f508e5641ca132511b4883600f2d65f0"), "8.13.0-linux_arm64": ("node-v8.13.0-linux-arm64.tar.xz", "node-v8.13.0-linux-arm64", "e8e0daab515dfd0c2323b8e1274475f61c8ca1cf582dcc254583cbf8593425e3"), "8.13.0-linux_amd64": ("node-v8.13.0-linux-x64.tar.xz", "node-v8.13.0-linux-x64", "8fa1227b28113e25a8960d7fa6779a8c18bf20cfaafc9c5d0e46a3ee88373669"), "8.13.0-windows_amd64": ("node-v8.13.0-win-x64.zip", "node-v8.13.0-win-x64", "46293121d207350bd8d334efb67303337933c4dac886a840f88ff6059bff9443"), "8.14.0-darwin_amd64": ("node-v8.14.0-darwin-x64.tar.gz", "node-v8.14.0-darwin-x64", "1e9bb233bb3c3b01826f9d7e1b3ecf1047840ce96a3a7d1921ddcb569c467329"), "8.14.0-linux_arm64": ("node-v8.14.0-linux-arm64.tar.xz", "node-v8.14.0-linux-arm64", "fbcef89a60f1f40699589850f861fc84354a6f240610e2726c3743455dd82525"), "8.14.0-linux_amd64": ("node-v8.14.0-linux-x64.tar.xz", "node-v8.14.0-linux-x64", "a56d1af4d7da81504338b09809cf10b3144808d47d4117b9bd9a5a4ec4d5d9b9"), "8.14.0-windows_amd64": ("node-v8.14.0-win-x64.zip", "node-v8.14.0-win-x64", "d0be7c96a25c5d2b69f8a3510e9f4414643d5fe361b4509d455249e57f9a50af"), "8.14.1-darwin_amd64": ("node-v8.14.1-darwin-x64.tar.gz", "node-v8.14.1-darwin-x64", "d180a9b70de569e4c3d10c0c4a0af74e40dbca3e845df43ce1ec522bb4252eda"), "8.14.1-linux_arm64": ("node-v8.14.1-linux-arm64.tar.xz", "node-v8.14.1-linux-arm64", "488a66288052c6497133179e4546efb7fbaf105e432cd0d9aab3471901ab5e58"), "8.14.1-linux_amd64": ("node-v8.14.1-linux-x64.tar.xz", "node-v8.14.1-linux-x64", "1fec92a0110f692c68f7bdbec41b340c474bd77063323520786a7b9b00473daf"), "8.14.1-windows_amd64": ("node-v8.14.1-win-x64.zip", "node-v8.14.1-win-x64", "41793b873f98ceed632b24120ef44b2df89625f3dfa90eb9298dad698249167c"), "8.15.0-darwin_amd64": ("node-v8.15.0-darwin-x64.tar.gz", "node-v8.15.0-darwin-x64", "a393971136408f837fbc0f7d71a63754f91cfb1851d48bd612d8219eb61956f1"), "8.15.0-linux_arm64": ("node-v8.15.0-linux-arm64.tar.xz", "node-v8.15.0-linux-arm64", "5985c6dce65b1161ff41253da5aa4e64b8f10eb010a5d2712ea9b659f70179d7"), "8.15.0-linux_amd64": ("node-v8.15.0-linux-x64.tar.xz", "node-v8.15.0-linux-x64", "c1f0c5facdba78b5dec5136aec40dcb00b5c7cf404d9236a99c955994f91d969"), "8.15.0-windows_amd64": ("node-v8.15.0-win-x64.zip", "node-v8.15.0-win-x64", "13d8eab29c191bd16c69a70a556178a5adc988b243a036aaf3d5158861b60d8e"), "8.15.1-darwin_amd64": ("node-v8.15.1-darwin-x64.tar.gz", "node-v8.15.1-darwin-x64", "f3da0b4397150226c008a86c99d77dbb835dc62219d863654913a78332ab19a5"), "8.15.1-linux_arm64": ("node-v8.15.1-linux-arm64.tar.xz", "node-v8.15.1-linux-arm64", "69e000d78342c3d39583922c57947a906ad723789d6294951deb10cbe8709605"), "8.15.1-linux_amd64": ("node-v8.15.1-linux-x64.tar.xz", "node-v8.15.1-linux-x64", "5643b54c583eebaa40c1623b16cba4e3955ff5dfdd44036f6bafd761160c993d"), "8.15.1-windows_amd64": ("node-v8.15.1-win-x64.zip", "node-v8.15.1-win-x64", "f636fa578dc079bacc6c4bef13284ddb893c99f7640b96701c2690bd9c1431f5"), "8.16.0-darwin_amd64": ("node-v8.16.0-darwin-x64.tar.gz", "node-v8.16.0-darwin-x64", "a6710b8af0862fab0ccdba0549dbcdad76b5f99070652e64f6a85158038fc9a6"), "8.16.0-linux_arm64": ("node-v8.16.0-linux-arm64.tar.xz", "node-v8.16.0-linux-arm64", "4583d1cb44ff8b51cbf0402a78f2fe086c13a6c900c20c8be14e3b0e28e34335"), "8.16.0-linux_amd64": ("node-v8.16.0-linux-x64.tar.xz", "node-v8.16.0-linux-x64", "e538ffaaf2f808c084e70f1a1d2ff5559cff892cfd56e0bb67d00b0a95fc3a7a"), "8.16.0-windows_amd64": ("node-v8.16.0-win-x64.zip", "node-v8.16.0-win-x64", "d6baa929bacb78b347b29ebb0263220ea649ce82f3cdfd3f0b41ac725d1bbba5"), "8.16.1-darwin_amd64": ("node-v8.16.1-darwin-x64.tar.gz", "node-v8.16.1-darwin-x64", "ef1cb93f03bca4b9528e5d3226bdf8efa135e4b12285eee1e4760da06bac631a"), "8.16.1-linux_arm64": ("node-v8.16.1-linux-arm64.tar.xz", "node-v8.16.1-linux-arm64", "0c61c6ae8a70d96ab19848a09b2010d29b806f2dd79177da22c743fd5e352a98"), "8.16.1-linux_amd64": ("node-v8.16.1-linux-x64.tar.xz", "node-v8.16.1-linux-x64", "22a2580569c787ea83960bda0eae5dfaf1fe79382a52ad5fa5cd3accb93a1818"), "8.16.1-windows_amd64": ("node-v8.16.1-win-x64.zip", "node-v8.16.1-win-x64", "396dc41740bca0355d11865780e2af8e88eb17581cd2c445ccaf29b862901ab8"), "8.16.2-darwin_amd64": ("node-v8.16.2-darwin-x64.tar.gz", "node-v8.16.2-darwin-x64", "359331120e83f0707219398fc543b05eee9476446ecce549c20c4d9c7c103d29"), "8.16.2-linux_arm64": ("node-v8.16.2-linux-arm64.tar.xz", "node-v8.16.2-linux-arm64", "5afe366affb05136d25e99ec97a7a1ee1b690cc26df43567af0509f36b45e682"), "8.16.2-linux_amd64": ("node-v8.16.2-linux-x64.tar.xz", "node-v8.16.2-linux-x64", "88617a293f5828cc94ee99c94a43fbea12b989e34fe643fc14885a14748a8da6"), "8.16.2-windows_amd64": ("node-v8.16.2-win-x64.zip", "node-v8.16.2-win-x64", "98c615221500434155a8a5aff5fe96cd000400f3e76858ca97e6624f1d15eb73"), "8.17.0-darwin_amd64": ("node-v8.17.0-darwin-x64.tar.gz", "node-v8.17.0-darwin-x64", "3117430fc93e9865e4a1842616cc98767b5d6987fd9d727c8be4068714570e16"), "8.17.0-linux_arm64": ("node-v8.17.0-linux-arm64.tar.xz", "node-v8.17.0-linux-arm64", "8318d1ee0265d84025ecbea76aaecd732974a6f4ac8492ddd84231cee77ba948"), "8.17.0-linux_amd64": ("node-v8.17.0-linux-x64.tar.xz", "node-v8.17.0-linux-x64", "b7f6dd77fb173c8c7c30d61d0702eefc236bba74398538aa77bfa2bb47bddce6"), "8.17.0-windows_amd64": ("node-v8.17.0-win-x64.zip", "node-v8.17.0-win-x64", "e95a63e81b27e78872c0efb9dd5809403014dbf9896035cc17adf51a350f88fa"), "9.0.0-darwin_amd64": ("node-v9.0.0-darwin-x64.tar.gz", "node-v9.0.0-darwin-x64", "40fe905e492deadbf84c46baba413294e516fa844ed8e68adb4117f8acabe9a9"), "9.0.0-linux_arm64": ("node-v9.0.0-linux-arm64.tar.xz", "node-v9.0.0-linux-arm64", "0250e13705259dcf736ac4216833c2ade459e3ade94d89af68bd98ded1783cb6"), "9.0.0-linux_amd64": ("node-v9.0.0-linux-x64.tar.xz", "node-v9.0.0-linux-x64", "8313d2f6d69dbea4cb860803a156f093041cbe352a843c06f9f05cab1f30e9cc"), "9.0.0-windows_amd64": ("node-v9.0.0-win-x64.zip", "node-v9.0.0-win-x64", "d25901007e7c48da3af162bc1917d5bdd78c7e3b9cb64f16f90c38b59ef7b412"), "9.1.0-darwin_amd64": ("node-v9.1.0-darwin-x64.tar.gz", "node-v9.1.0-darwin-x64", "8e180de9b3f6a79f09a391c89de54920bbf5375337d3e13c5bfcbce85af711ab"), "9.1.0-linux_arm64": ("node-v9.1.0-linux-arm64.tar.xz", "node-v9.1.0-linux-arm64", "37d329fa06b22e30243c503b64d9666d56abb6c0ce903251d4b43e7ad0833fb3"), "9.1.0-linux_amd64": ("node-v9.1.0-linux-x64.tar.xz", "node-v9.1.0-linux-x64", "b796ed115c97acd23211c294129b0a834ff3a6a0f583111443b89d2b24e0d4d9"), "9.1.0-windows_amd64": ("node-v9.1.0-win-x64.zip", "node-v9.1.0-win-x64", "f2e76f536ff4fedd9884684f0b1979e04d0fd1c2a65d7d1a5a013de885dd07b3"), "9.2.0-darwin_amd64": ("node-v9.2.0-darwin-x64.tar.gz", "node-v9.2.0-darwin-x64", "42f78982b8614f099bc70819db40074ff7c1c49d4bac71eca5ffe4120452f289"), "9.2.0-linux_arm64": ("node-v9.2.0-linux-arm64.tar.xz", "node-v9.2.0-linux-arm64", "1b5c44160b7bfc9e5d63697d63c82330ae3e6094ab48449bd958ebe0baef73f0"), "9.2.0-linux_amd64": ("node-v9.2.0-linux-x64.tar.xz", "node-v9.2.0-linux-x64", "ded9cef0243bbe8ac5a417be0c6471bed6ed82367714ccb23f79a5be0ba2bd5d"), "9.2.0-windows_amd64": ("node-v9.2.0-win-x64.zip", "node-v9.2.0-win-x64", "5e7feb536547c715155d772f90857239b37897c1a1a664809fd84a7aeae1a724"), "9.2.1-darwin_amd64": ("node-v9.2.1-darwin-x64.tar.gz", "node-v9.2.1-darwin-x64", "4263f3da0280e2decd3a2ab97672e6f718acdf704664a3f1251e4ea267ccc971"), "9.2.1-linux_arm64": ("node-v9.2.1-linux-arm64.tar.xz", "node-v9.2.1-linux-arm64", "09d362e2ed5f4af5e5dc2253bb4523d7bcb92135bcc11d9eb89ad8336229b756"), "9.2.1-linux_amd64": ("node-v9.2.1-linux-x64.tar.xz", "node-v9.2.1-linux-x64", "548d2959939235ca56c98740f64b64058e43d1499d760603b7941b7c37ad10fe"), "9.2.1-windows_amd64": ("node-v9.2.1-win-x64.zip", "node-v9.2.1-win-x64", "7b48ef7c718fe5748844f93101f9276a88ae1cf3c4c228f85306a6a266471b5b"), "9.3.0-darwin_amd64": ("node-v9.3.0-darwin-x64.tar.gz", "node-v9.3.0-darwin-x64", "0539601e67e9be6995d4ba4abe565a748e25699060631369f59166d5de43d21a"), "9.3.0-linux_arm64": ("node-v9.3.0-linux-arm64.tar.xz", "node-v9.3.0-linux-arm64", "11300e878220962adade33238dd6e55928ad6d1362e0daa1f12e272137e68c0b"), "9.3.0-linux_amd64": ("node-v9.3.0-linux-x64.tar.xz", "node-v9.3.0-linux-x64", "0424dd6fa059fc32e0b73f460cb587b92b13c7b0af56331bbdc53a52e43f24ea"), "9.3.0-windows_amd64": ("node-v9.3.0-win-x64.zip", "node-v9.3.0-win-x64", "53bceda79c8d5dd8a185221a5ea2fc8f2b24ed7e0c9c91d18f6016b3624ff096"), "9.4.0-darwin_amd64": ("node-v9.4.0-darwin-x64.tar.gz", "node-v9.4.0-darwin-x64", "fa271c6012d517851603829af2131b92dc7b03d6f167dcd197cb83468a4971e8"), "9.4.0-linux_arm64": ("node-v9.4.0-linux-arm64.tar.xz", "node-v9.4.0-linux-arm64", "ceed69e91723cb902fcf70e790d34147a91241509257c77a62327871dfad04fa"), "9.4.0-linux_amd64": ("node-v9.4.0-linux-x64.tar.xz", "node-v9.4.0-linux-x64", "6d331d75a39fc5292dd128ad83f6dd14bbbdcb84ba0dfe793fade833be5de95a"), "9.4.0-windows_amd64": ("node-v9.4.0-win-x64.zip", "node-v9.4.0-win-x64", "89d49d73eb92483af0133c97e57a5b521c523960c130c76727daa3412af7d5d8"), "9.5.0-darwin_amd64": ("node-v9.5.0-darwin-x64.tar.gz", "node-v9.5.0-darwin-x64", "bc5c6eb21a90dbcaf90479838416c90524fe6d47e92c928ef57d7e96a54eb5fe"), "9.5.0-linux_arm64": ("node-v9.5.0-linux-arm64.tar.xz", "node-v9.5.0-linux-arm64", "d6a98a51c032963014f606acc80babb456f3dc4c041534ca565f573a2382b253"), "9.5.0-linux_amd64": ("node-v9.5.0-linux-x64.tar.xz", "node-v9.5.0-linux-x64", "76dd38bb5a16a610894353228ef020653f81209a2e509d38aee78ace4410599e"), "9.5.0-windows_amd64": ("node-v9.5.0-win-x64.zip", "node-v9.5.0-win-x64", "2fd1c3865a34827af6b5d799aee68e011a16a637276cbf71e923c8bedd010ee8"), "9.6.0-darwin_amd64": ("node-v9.6.0-darwin-x64.tar.gz", "node-v9.6.0-darwin-x64", "4f2001075b724791bf652b5432073aaaaec03cb00b17cda054ab0a05126035fe"), "9.6.0-linux_arm64": ("node-v9.6.0-linux-arm64.tar.xz", "node-v9.6.0-linux-arm64", "eb10815b1d21e8f5111b90c15b19050279b44666d08a12f26906271e9f6b02dd"), "9.6.0-linux_amd64": ("node-v9.6.0-linux-x64.tar.xz", "node-v9.6.0-linux-x64", "24b8670c819278135b4b8851d880615dee8458fdb5f5390ed0c88c383377f5d3"), "9.6.0-windows_amd64": ("node-v9.6.0-win-x64.zip", "node-v9.6.0-win-x64", "5f1da1ef6ba776449900c931e7acc3b60e47f3080425bf0e6a1c0c5a07dbd6fd"), "9.6.1-darwin_amd64": ("node-v9.6.1-darwin-x64.tar.gz", "node-v9.6.1-darwin-x64", "de486bc479817df2df1f91468e85e5da228a19101422c0c9a27153c1d0013c6d"), "9.6.1-linux_arm64": ("node-v9.6.1-linux-arm64.tar.xz", "node-v9.6.1-linux-arm64", "6246c85acab2dd92463fa1c456db31a24cd7b50b3fa556c4976c5a91473b8c8f"), "9.6.1-linux_amd64": ("node-v9.6.1-linux-x64.tar.xz", "node-v9.6.1-linux-x64", "d38f1707faccc54fae3cb201c25b02c4a3474d2c409c64f2a1d08925b238f8ad"), "9.6.1-windows_amd64": ("node-v9.6.1-win-x64.zip", "node-v9.6.1-win-x64", "c8176d317945ce6221473d70999ec7e725f1c9a7477e991bd7c729026c46dffb"), "9.7.0-darwin_amd64": ("node-v9.7.0-darwin-x64.tar.gz", "node-v9.7.0-darwin-x64", "9730cf3c4c5e228d4855c3362b63dbe59041202d89ae30d7f5ca42f60f742c5d"), "9.7.0-linux_arm64": ("node-v9.7.0-linux-arm64.tar.xz", "node-v9.7.0-linux-arm64", "18bec2bec5e2496f33b4d9d7f3bea7411cdb5d108f390b5c1949ddeda0e61125"), "9.7.0-linux_amd64": ("node-v9.7.0-linux-x64.tar.xz", "node-v9.7.0-linux-x64", "5c7549ceeebdc7ac5acdcae5fffbeb9585e3b9e2003e70e116d9f19c768f73d1"), "9.7.0-windows_amd64": ("node-v9.7.0-win-x64.zip", "node-v9.7.0-win-x64", "a17796c9c888e88a9a086dc1a22cdd872d8e948fbf1e988a8132fef716990530"), "9.7.1-darwin_amd64": ("node-v9.7.1-darwin-x64.tar.gz", "node-v9.7.1-darwin-x64", "9ee0fa891787865b1eccc63ef56134e7de8bbf67b660a1dde9e309305a1dc3b0"), "9.7.1-linux_arm64": ("node-v9.7.1-linux-arm64.tar.xz", "node-v9.7.1-linux-arm64", "d9143c23f7aa171449229abd456c8a9e07dc1033a1e791132b3387d439e2475d"), "9.7.1-linux_amd64": ("node-v9.7.1-linux-x64.tar.xz", "node-v9.7.1-linux-x64", "33b3ecd0a1de891a4a2f3586f1c6498c95c1ecc15864a6e3f4f7826792850d99"), "9.7.1-windows_amd64": ("node-v9.7.1-win-x64.zip", "node-v9.7.1-win-x64", "8590ff193e645d7f719e25d9519633376c72cfa1b36192031705e0065b7d69b2"), "9.8.0-darwin_amd64": ("node-v9.8.0-darwin-x64.tar.gz", "node-v9.8.0-darwin-x64", "c95326d6d8d01e5d4fbf0ca1b1e4fc0d800d00516f38532cc887e17c78f2af07"), "9.8.0-linux_arm64": ("node-v9.8.0-linux-arm64.tar.xz", "node-v9.8.0-linux-arm64", "f3537d06f010e77739be073003fca0b477efec8a72d503dc5a1d942a19973b07"), "9.8.0-linux_amd64": ("node-v9.8.0-linux-x64.tar.xz", "node-v9.8.0-linux-x64", "9f631739b0a9b96b8760c42869e88592db9c3fda2425202bd8b2d09e6371133a"), "9.8.0-windows_amd64": ("node-v9.8.0-win-x64.zip", "node-v9.8.0-win-x64", "dd3971c126907a033f2bc93fdd29327af3ff5b9d151b3b90eb5db1832fe6df9e"), "9.9.0-darwin_amd64": ("node-v9.9.0-darwin-x64.tar.gz", "node-v9.9.0-darwin-x64", "15e71817fe172119d6f9e0166ab869f12c67bdb7371d27a78b0621c408239692"), "9.9.0-linux_arm64": ("node-v9.9.0-linux-arm64.tar.xz", "node-v9.9.0-linux-arm64", "06feb32656c91c3963270de18d4a7befe52d2d8c0fd78fbbb7792a881ffeec7a"), "9.9.0-linux_amd64": ("node-v9.9.0-linux-x64.tar.xz", "node-v9.9.0-linux-x64", "457151b4e6f27222232742ce44de1df73768a251309dddbfca2b385052ee977f"), "9.9.0-windows_amd64": ("node-v9.9.0-win-x64.zip", "node-v9.9.0-win-x64", "5186747c7cab6ff153e725c42446727e460d54e6c62353d5dc550046f5c05653"), "9.10.0-darwin_amd64": ("node-v9.10.0-darwin-x64.tar.gz", "node-v9.10.0-darwin-x64", "c4b98cc2f3c00b770f24549de112902b56d57be7963a1047cd116b357bc61569"), "9.10.0-linux_arm64": ("node-v9.10.0-linux-arm64.tar.xz", "node-v9.10.0-linux-arm64", "ba1d682aa1d5a12eeb39e7f51e4c67c6122b24482869ca2547c6f094eae90658"), "9.10.0-linux_amd64": ("node-v9.10.0-linux-x64.tar.xz", "node-v9.10.0-linux-x64", "b9bfffc03ef0e2c97d463619911552c7f5b1b8699de07bb913990a8b33800cb9"), "9.10.0-windows_amd64": ("node-v9.10.0-win-x64.zip", "node-v9.10.0-win-x64", "3f159de87fd987e7bf30bbffce722e2e5133c44fc847883053359e9b08d6fa88"), "9.10.1-darwin_amd64": ("node-v9.10.1-darwin-x64.tar.gz", "node-v9.10.1-darwin-x64", "ae2d9dfdd3fdb6a6fe588e5479a768ee502968f6544ac8ad6133cb2e05726793"), "9.10.1-linux_arm64": ("node-v9.10.1-linux-arm64.tar.xz", "node-v9.10.1-linux-arm64", "9b084b30e48a3a145fcc6cb282a1b46145b703c13a5eaee40afc7f9d82ad697b"), "9.10.1-linux_amd64": ("node-v9.10.1-linux-x64.tar.xz", "node-v9.10.1-linux-x64", "fc810056be2a0665d0f67b42d25e1b8442bd885d4893b3256a7cfe676bd973de"), "9.10.1-windows_amd64": ("node-v9.10.1-win-x64.zip", "node-v9.10.1-win-x64", "43bf882dec1550e00a039f77190a3e2a778354577e542563be4b5c205de17df1"), "9.11.0-darwin_amd64": ("node-v9.11.0-darwin-x64.tar.gz", "node-v9.11.0-darwin-x64", "e562cfc01a4d8e62c1d86f59cef4f00439b4ad279c97f95f76a39f4b3530b8e5"), "9.11.0-linux_arm64": ("node-v9.11.0-linux-arm64.tar.xz", "node-v9.11.0-linux-arm64", "8df1dd7a1ec298900cf699a7ee8e5f0f478075d0e4c4fd3fb6e3a4ad3527545c"), "9.11.0-linux_amd64": ("node-v9.11.0-linux-x64.tar.xz", "node-v9.11.0-linux-x64", "a4349420b74804b3404a4eea27341297968f61998b01f6504dbbad603700e944"), "9.11.0-windows_amd64": ("node-v9.11.0-win-x64.zip", "node-v9.11.0-win-x64", "6e7f586ece923fd71e36d5db80b6a6d731a2b156464058cb2304f6c0192637cb"), "9.11.1-darwin_amd64": ("node-v9.11.1-darwin-x64.tar.gz", "node-v9.11.1-darwin-x64", "7b1fb394aa41a62b477e36df16644bd383cc9084808511f6cd318b835a06aac6"), "9.11.1-linux_arm64": ("node-v9.11.1-linux-arm64.tar.xz", "node-v9.11.1-linux-arm64", "dba2de106fbde2013a204ca9fafdfe67c0426b4e63d186f888e59432ad2dbb03"), "9.11.1-linux_amd64": ("node-v9.11.1-linux-x64.tar.xz", "node-v9.11.1-linux-x64", "4d27a95d5c2f1c8ef99118794c9c4903e63963418d3e16ca7576760cff39879b"), "9.11.1-windows_amd64": ("node-v9.11.1-win-x64.zip", "node-v9.11.1-win-x64", "0a3566d57ccb7fed95d18fc6c3bc1552a1b1e4753f9bc6c5d45e04f325e1ee53"), "9.11.2-darwin_amd64": ("node-v9.11.2-darwin-x64.tar.gz", "node-v9.11.2-darwin-x64", "340993096108d1dc0e0b598560d87ec645fc94b0fc83a423c36343f2da45f4b8"), "9.11.2-linux_arm64": ("node-v9.11.2-linux-arm64.tar.xz", "node-v9.11.2-linux-arm64", "9a713a6f4473425b83bf67e13e4b3c9f1f683c996b913f1f6854d208996367b6"), "9.11.2-linux_amd64": ("node-v9.11.2-linux-x64.tar.xz", "node-v9.11.2-linux-x64", "a2e7fe4ee3c4e3f31e00dff241c92c2ed779a9f36735578603d2be966f938a4b"), "9.11.2-windows_amd64": ("node-v9.11.2-win-x64.zip", "node-v9.11.2-win-x64", "051db8f4d3c0503e3082173f16b25e2362de8f9a5e509c403992b2069d826c25"), "10.0.0-darwin_amd64": ("node-v10.0.0-darwin-x64.tar.gz", "node-v10.0.0-darwin-x64", "37447fdb5f5cbcf1307ca1661ed67e6e911e0e988c0cb6d15f92eebb211dce88"), "10.0.0-linux_arm64": ("node-v10.0.0-linux-arm64.tar.xz", "node-v10.0.0-linux-arm64", "18f626a967d72294d969bdf000ca80ef483a8bb75482a2c4d14f5e0141626611"), "10.0.0-linux_amd64": ("node-v10.0.0-linux-x64.tar.xz", "node-v10.0.0-linux-x64", "d57c391daef40e706ca71abeaf9d53271c9d0fdb9cd18a80f6296b04dbaf2d5a"), "10.0.0-windows_amd64": ("node-v10.0.0-win-x64.zip", "node-v10.0.0-win-x64", "a95d88e2c28cbcbadb1fa431ec0b686f196dda00d4a25b0829450dc8f5214ec3"), "10.1.0-darwin_amd64": ("node-v10.1.0-darwin-x64.tar.gz", "node-v10.1.0-darwin-x64", "383ef526e27b92113f8dc0dad406b771f6ecaf9e3fddd4f5357590a3cf543d7b"), "10.1.0-linux_arm64": ("node-v10.1.0-linux-arm64.tar.xz", "node-v10.1.0-linux-arm64", "01e252589cf1ce61d2aaa316895001eb24c90a48b04a0e4896de252d2840ffe9"), "10.1.0-linux_amd64": ("node-v10.1.0-linux-x64.tar.xz", "node-v10.1.0-linux-x64", "cb5860c0d3249330d882fb8c6619c082cf3cda177536d4ed979388dde0034f22"), "10.1.0-windows_amd64": ("node-v10.1.0-win-x64.zip", "node-v10.1.0-win-x64", "8448bbd50731e98a4ed8bb4f3f3964170ff3a26418e9bcb3caf770faa9fb06d7"), "10.2.0-darwin_amd64": ("node-v10.2.0-darwin-x64.tar.gz", "node-v10.2.0-darwin-x64", "35fcc482d07218119ce5fde62620994324f03f8c4426dd680886c6844b62232a"), "10.2.0-linux_arm64": ("node-v10.2.0-linux-arm64.tar.xz", "node-v10.2.0-linux-arm64", "8f970be59a6a11f511a04ae1bd303746f0c5409498e062fb1d263d3c3c1093bd"), "10.2.0-linux_amd64": ("node-v10.2.0-linux-x64.tar.xz", "node-v10.2.0-linux-x64", "a6ef9adc824db795b36f81ad0856adc5c878395c4ce2af20f5ba7b76a1ca9982"), "10.2.0-windows_amd64": ("node-v10.2.0-win-x64.zip", "node-v10.2.0-win-x64", "7d7144d57b1b910d10f51d5445ae4306f10d3d9f45ca08b49e8777472993db51"), "10.2.1-darwin_amd64": ("node-v10.2.1-darwin-x64.tar.gz", "node-v10.2.1-darwin-x64", "6ffa149f67e8bd68d291d62591b6573146a65682affd99eefe2835a9c048d3ef"), "10.2.1-linux_arm64": ("node-v10.2.1-linux-arm64.tar.xz", "node-v10.2.1-linux-arm64", "6899cab91fd01af6b73183d23693120ff0de547601d01822b53647d0f5d934ee"), "10.2.1-linux_amd64": ("node-v10.2.1-linux-x64.tar.xz", "node-v10.2.1-linux-x64", "59ffaba5f54ea6a62ada1013a0cc1741c6e6fa790ab9ab2302a98932e7fb85d5"), "10.2.1-windows_amd64": ("node-v10.2.1-win-x64.zip", "node-v10.2.1-win-x64", "ebe78920d72b7a226a345653f3f718f99dc531add35157d37d229050f3685705"), "10.3.0-darwin_amd64": ("node-v10.3.0-darwin-x64.tar.gz", "node-v10.3.0-darwin-x64", "0bb5b7e3fe8cccda2abda958d1eb0408f1518a8b0cb58b75ade5d507cd5d6053"), "10.3.0-linux_arm64": ("node-v10.3.0-linux-arm64.tar.xz", "node-v10.3.0-linux-arm64", "6811b7b9807135902990508143605c0c758d07f7726092ed1b2e27cc60111bd0"), "10.3.0-linux_amd64": ("node-v10.3.0-linux-x64.tar.xz", "node-v10.3.0-linux-x64", "eb3c3e2585494699716ad3197c8eedf4003d3f110829b30c5a0dc34414c47423"), "10.3.0-windows_amd64": ("node-v10.3.0-win-x64.zip", "node-v10.3.0-win-x64", "65d586afb087406a2800d8e51f664c88b26d510f077b85a3b177a1bb79f73677"), "10.4.0-darwin_amd64": ("node-v10.4.0-darwin-x64.tar.gz", "node-v10.4.0-darwin-x64", "82b27983c990a6860e8d729e0b15acf9643ffca0eff282a926268849dfd2c3d2"), "10.4.0-linux_arm64": ("node-v10.4.0-linux-arm64.tar.xz", "node-v10.4.0-linux-arm64", "18d01e0937cdd05386f59f792613aac7b6614a37312ede0c299bd589584976e9"), "10.4.0-linux_amd64": ("node-v10.4.0-linux-x64.tar.xz", "node-v10.4.0-linux-x64", "ce2232578408f7d6bdc7d8bbb49d3416225fe68c52540ac23f4a6e0294d947f6"), "10.4.0-windows_amd64": ("node-v10.4.0-win-x64.zip", "node-v10.4.0-win-x64", "315fc4099902a71b634fee15e4e160a0780703c59a66e7e4542045f6f2b91451"), "10.4.1-darwin_amd64": ("node-v10.4.1-darwin-x64.tar.gz", "node-v10.4.1-darwin-x64", "c232241c97e1f4659186205d50b44132e62b61cdc517f1fb86905a21d03e9189"), "10.4.1-linux_arm64": ("node-v10.4.1-linux-arm64.tar.xz", "node-v10.4.1-linux-arm64", "c00b75a28eb69e4238c9d560f50da3652395ba7bfa6e325d5a2b0cd0926070f7"), "10.4.1-linux_amd64": ("node-v10.4.1-linux-x64.tar.xz", "node-v10.4.1-linux-x64", "6196daea2b291cdb865b3597e6b819b13068cb2c9dbf27cb150256c557a81082"), "10.4.1-windows_amd64": ("node-v10.4.1-win-x64.zip", "node-v10.4.1-win-x64", "70e0b9f0036f878884fdfc585c1001a439508d1d4e6448c4aced60274a2dc191"), "10.5.0-darwin_amd64": ("node-v10.5.0-darwin-x64.tar.gz", "node-v10.5.0-darwin-x64", "a85bda6ab91da8595e71736944cbd77c61afe05092217defd0fb74d9f77109f0"), "10.5.0-linux_arm64": ("node-v10.5.0-linux-arm64.tar.xz", "node-v10.5.0-linux-arm64", "28e6baa2a4ac5b0f0f5adf85489574038d0a4ca48efe76a4e5831b6b222652ba"), "10.5.0-linux_amd64": ("node-v10.5.0-linux-x64.tar.xz", "node-v10.5.0-linux-x64", "8b12be967f5962a8173dca235e1a6f642ee29dcf5fc27697004af898ffeca187"), "10.5.0-windows_amd64": ("node-v10.5.0-win-x64.zip", "node-v10.5.0-win-x64", "ce2b1f9976de64bcc0a5ce877edee0d29c4db1ebab5a7fd713afffd661e99e08"), "10.6.0-darwin_amd64": ("node-v10.6.0-darwin-x64.tar.gz", "node-v10.6.0-darwin-x64", "537efef0c6fd998502fa10baf82ee21edf513256cc73575991354e19442d0b69"), "10.6.0-linux_arm64": ("node-v10.6.0-linux-arm64.tar.xz", "node-v10.6.0-linux-arm64", "be37aade1c085093e276b5822a05233a1057bcafe77f5b9526dbdf622330c4bb"), "10.6.0-linux_amd64": ("node-v10.6.0-linux-x64.tar.xz", "node-v10.6.0-linux-x64", "cfd47380729f2451169b8900b3bd65e4b9db669d1d540613758cd2ededf7b5e6"), "10.6.0-windows_amd64": ("node-v10.6.0-win-x64.zip", "node-v10.6.0-win-x64", "0b58e0414d76e48432588910ea682f002ba69d7be88deb3355ceffb2fe472f6d"), "10.7.0-darwin_amd64": ("node-v10.7.0-darwin-x64.tar.gz", "node-v10.7.0-darwin-x64", "913473055605c8ae92f46923e6ac400133895aafe7766574fd46899bc6b0c5a4"), "10.7.0-linux_arm64": ("node-v10.7.0-linux-arm64.tar.xz", "node-v10.7.0-linux-arm64", "c23856b3123f9e2cfae3f8b0668019f83e9450ee78dede02a8d43031255b7ba0"), "10.7.0-linux_amd64": ("node-v10.7.0-linux-x64.tar.xz", "node-v10.7.0-linux-x64", "ad1d44cbe64ef44db5d8d42690a76dd186d6a6f71a3c3d38449757fe73135329"), "10.7.0-windows_amd64": ("node-v10.7.0-win-x64.zip", "node-v10.7.0-win-x64", "a0914d4c1fb82f51a03a4f57c66c9ce6a65ccd4f3237706042c55799843f4b14"), "10.8.0-darwin_amd64": ("node-v10.8.0-darwin-x64.tar.gz", "node-v10.8.0-darwin-x64", "b800d8b55c234b1f7d972e9464b00328a1caea5f86f94fdb5fc88ebbed7852b7"), "10.8.0-linux_arm64": ("node-v10.8.0-linux-arm64.tar.xz", "node-v10.8.0-linux-arm64", "0333da24d1fe54abac26b0a06437d3336c0fb4816b280507a9851ab3742ef2e4"), "10.8.0-linux_amd64": ("node-v10.8.0-linux-x64.tar.xz", "node-v10.8.0-linux-x64", "497f3b243d7374ee0fe9ab200b175868b172c3a22282cedc6d7fb0cad82471f0"), "10.8.0-windows_amd64": ("node-v10.8.0-win-x64.zip", "node-v10.8.0-win-x64", "f98575fb551d78691a6f74ca4f9c254bbd9fb62135e9ec0ab7ec8c40a03648b0"), "10.9.0-darwin_amd64": ("node-v10.9.0-darwin-x64.tar.gz", "node-v10.9.0-darwin-x64", "3c4fe75dacfcc495a432a7ba2dec9045cff359af2a5d7d0429c84a424ef686fc"), "10.9.0-linux_arm64": ("node-v10.9.0-linux-arm64.tar.xz", "node-v10.9.0-linux-arm64", "3d6aa717d98bbf901c5325a02a81048eb47212bdc44963ef8d59c6e52e987b7c"), "10.9.0-linux_amd64": ("node-v10.9.0-linux-x64.tar.xz", "node-v10.9.0-linux-x64", "c5acb8b7055ee0b6ac653dc4e458c5db45348cecc564b388f4ed1def84a329ff"), "10.9.0-windows_amd64": ("node-v10.9.0-win-x64.zip", "node-v10.9.0-win-x64", "6a75cdbb69d62ed242d6cbf0238a470bcbf628567ee339d4d098a5efcda2401e"), "10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e"), "10.10.0-linux_arm64": ("node-v10.10.0-linux-arm64.tar.xz", "node-v10.10.0-linux-arm64", "7d57961d18ea70b4e99906d87f9de1a2defc45a36fcd8cd84295e9ae5c4281da"), "10.10.0-linux_amd64": ("node-v10.10.0-linux-x64.tar.xz", "node-v10.10.0-linux-x64", "686d2c7b7698097e67bcd68edc3d6b5d28d81f62436c7cf9e7779d134ec262a9"), "10.10.0-windows_amd64": ("node-v10.10.0-win-x64.zip", "node-v10.10.0-win-x64", "70c46e6451798be9d052b700ce5dadccb75cf917f6bf0d6ed54344c856830cfb"), "10.11.0-darwin_amd64": ("node-v10.11.0-darwin-x64.tar.gz", "node-v10.11.0-darwin-x64", "32ad850a0e5cfdefc32d4267707abad05bd5c9eabb047e8ed9bf97faeffc52b6"), "10.11.0-linux_arm64": ("node-v10.11.0-linux-arm64.tar.xz", "node-v10.11.0-linux-arm64", "289302470520fd63e2a92a878869061dda557fe1aabfea2bd5ff88f7af76d98d"), "10.11.0-linux_amd64": ("node-v10.11.0-linux-x64.tar.xz", "node-v10.11.0-linux-x64", "c2eab149e7f0712a6a3eb672a76d657b049a3b3ae0c2edc2e0571df5049fe82c"), "10.11.0-windows_amd64": ("node-v10.11.0-win-x64.zip", "node-v10.11.0-win-x64", "78b2a7a4305aa108b9a82ac7586d7200ab51428c2b882d1318fb44ca300a8609"), "10.12.0-darwin_amd64": ("node-v10.12.0-darwin-x64.tar.gz", "node-v10.12.0-darwin-x64", "f275c901b9aeaacea2bf22648329c2e9ade5e1ff63a446b83446d5d4e19464cc"), "10.12.0-linux_arm64": ("node-v10.12.0-linux-arm64.tar.xz", "node-v10.12.0-linux-arm64", "b327deca4e380559c8c1fbacb9e668b49127ea998de4c8fe83912838cf786786"), "10.12.0-linux_amd64": ("node-v10.12.0-linux-x64.tar.xz", "node-v10.12.0-linux-x64", "4eba2e9a6db95745b769915d58e57df6ca6724ec1f023f76556fce30ceca2367"), "10.12.0-windows_amd64": ("node-v10.12.0-win-x64.zip", "node-v10.12.0-win-x64", "44c938cf1409562d25d23b7c6bce110b53cd2a73774bed573b2979f0d88f51f8"), "10.13.0-darwin_amd64": ("node-v10.13.0-darwin-x64.tar.gz", "node-v10.13.0-darwin-x64", "815a5d18516934a3963ace9f0574f7d41f0c0ce9186a19be3d89e039e57598c5"), "10.13.0-linux_arm64": ("node-v10.13.0-linux-arm64.tar.xz", "node-v10.13.0-linux-arm64", "1537ebe64dc34a2a9b8ab6254213079789e9d59ed0ed26987afb1da37b6a8f87"), "10.13.0-linux_amd64": ("node-v10.13.0-linux-x64.tar.xz", "node-v10.13.0-linux-x64", "0dc6dba645550b66f8f00541a428c29da7c3cde32fb7eda2eb626a9db3bbf08d"), "10.13.0-windows_amd64": ("node-v10.13.0-win-x64.zip", "node-v10.13.0-win-x64", "eb09c9e9677f1919ec1ca78623c09b2a718ec5388b72b7662d5c41e5f628a52c"), "10.14.0-darwin_amd64": ("node-v10.14.0-darwin-x64.tar.gz", "node-v10.14.0-darwin-x64", "dd044aa0ddeb5e32fefa80a13b33bafe3f7e0536e15fe93c1e81b052c2f1965c"), "10.14.0-linux_arm64": ("node-v10.14.0-linux-arm64.tar.xz", "node-v10.14.0-linux-arm64", "4d80efe675c40d6d3af697e17e33cad8af1caf50655276ca99d0c4ca8e2f2cf2"), "10.14.0-linux_amd64": ("node-v10.14.0-linux-x64.tar.xz", "node-v10.14.0-linux-x64", "5f576f9893e0335f0c1b071a42fdf8b3e302577ad6ea38237aaef08ad0ca898e"), "10.14.0-windows_amd64": ("node-v10.14.0-win-x64.zip", "node-v10.14.0-win-x64", "a3acbbdbbdb6ff6d5ae6e6f5ccea55aef83cfa54f52c080538edc3ac6326797b"), "10.14.1-darwin_amd64": ("node-v10.14.1-darwin-x64.tar.gz", "node-v10.14.1-darwin-x64", "91ebe7d6da8a40c72618ac9d0b0a8e224ae01febd3f5595b43b1a58190dcacb1"), "10.14.1-linux_arm64": ("node-v10.14.1-linux-arm64.tar.xz", "node-v10.14.1-linux-arm64", "c1ca91356b007cc7624c7a9e00f3b7bed8dd10aba959be5f55e4ff13da334828"), "10.14.1-linux_amd64": ("node-v10.14.1-linux-x64.tar.xz", "node-v10.14.1-linux-x64", "b65e735cdf61fb80f114c498c8955efe8e096e4b3e173281d68aa9d2c05b0f97"), "10.14.1-windows_amd64": ("node-v10.14.1-win-x64.zip", "node-v10.14.1-win-x64", "7d51aa233ad290eb916a4c3134815204eb34ecb0a001dcecc5ea57333030f303"), "10.14.2-darwin_amd64": ("node-v10.14.2-darwin-x64.tar.gz", "node-v10.14.2-darwin-x64", "5306da5db576d9c984167b4693600a2e3074cc5a701961279837753fa2139baa"), "10.14.2-linux_arm64": ("node-v10.14.2-linux-arm64.tar.xz", "node-v10.14.2-linux-arm64", "8493b30c99d697b24fbaa5bfb3b43108ab3e334ab674188b7b7982fef903aa04"), "10.14.2-linux_amd64": ("node-v10.14.2-linux-x64.tar.xz", "node-v10.14.2-linux-x64", "e43de13bf7bee440a106a844c1bc3a2adb8829fd58b857702c8f1838fdd02a2a"), "10.14.2-windows_amd64": ("node-v10.14.2-win-x64.zip", "node-v10.14.2-win-x64", "45841fe5ffe87378c748dcb9799507f6192c34117409b2c6c18480d112a337de"), "10.15.0-darwin_amd64": ("node-v10.15.0-darwin-x64.tar.gz", "node-v10.15.0-darwin-x64", "353402461c898c569658d0a963790476f4d9828cc6c9286d81617ee8afcba4e8"), "10.15.0-linux_arm64": ("node-v10.15.0-linux-arm64.tar.xz", "node-v10.15.0-linux-arm64", "77aa4a02c5471b6eb7ba935cbc6829889a27115353cff7226a208c08b654e972"), "10.15.0-linux_amd64": ("node-v10.15.0-linux-x64.tar.xz", "node-v10.15.0-linux-x64", "4ee8503c1133797777880ebf75dcf6ae3f9b894c66fd2d5da507e407064c13b5"), "10.15.0-windows_amd64": ("node-v10.15.0-win-x64.zip", "node-v10.15.0-win-x64", "c1dbc9372ad789cd21727cb5f63b4a44ed3eae216763959cff8e68e68c6fcfe1"), "10.15.1-darwin_amd64": ("node-v10.15.1-darwin-x64.tar.gz", "node-v10.15.1-darwin-x64", "327dcef4b61dead1ae04d2743d3390a2b7e6cc6c389c62cfcfeb0486c5a9f181"), "10.15.1-linux_arm64": ("node-v10.15.1-linux-arm64.tar.xz", "node-v10.15.1-linux-arm64", "0fb6d24972fd991f476a942b1b21aca5059f93b9302318c5883120445ee6cd54"), "10.15.1-linux_amd64": ("node-v10.15.1-linux-x64.tar.xz", "node-v10.15.1-linux-x64", "77db68544c7812e925b82ccc41cd4669fdeb191cea8e20053e3f0e86889c4fce"), "10.15.1-windows_amd64": ("node-v10.15.1-win-x64.zip", "node-v10.15.1-win-x64", "bb5bdc9363e4050c94b3f82888141b81630230f86e520abb7dde49081f1292b9"), "10.15.2-darwin_amd64": ("node-v10.15.2-darwin-x64.tar.gz", "node-v10.15.2-darwin-x64", "8bbb6c15a0572f493d33ef044d06ccd0ff7ead8daa67f9a32df3e863277568e8"), "10.15.2-linux_arm64": ("node-v10.15.2-linux-arm64.tar.xz", "node-v10.15.2-linux-arm64", "2978e82d85654505d732b40dfa58f21276d99712d5d001101eaf87100d350139"), "10.15.2-linux_amd64": ("node-v10.15.2-linux-x64.tar.xz", "node-v10.15.2-linux-x64", "c10eece562cfeef1627f0d2bde7dc0be810948f6bf9a932e30a8c3b425652015"), "10.15.2-windows_amd64": ("node-v10.15.2-win-x64.zip", "node-v10.15.2-win-x64", "d97cf4788ccea6deef037ce27c91cc1a814644b878311b71811ab04d0bb8c47f"), "10.15.3-darwin_amd64": ("node-v10.15.3-darwin-x64.tar.gz", "node-v10.15.3-darwin-x64", "7a5eaa1f69614375a695ccb62017248e5dcc15b0b8edffa7db5b52997cf992ba"), "10.15.3-linux_arm64": ("node-v10.15.3-linux-arm64.tar.xz", "node-v10.15.3-linux-arm64", "3d7abbf64bffb07c55168ca0f1c17be12b0d93affe9b6cadd39724649215fab9"), "10.15.3-linux_amd64": ("node-v10.15.3-linux-x64.tar.xz", "node-v10.15.3-linux-x64", "faddbe418064baf2226c2fcbd038c3ef4ae6f936eb952a1138c7ff8cfe862438"), "10.15.3-windows_amd64": ("node-v10.15.3-win-x64.zip", "node-v10.15.3-win-x64", "93c881fdc0455a932dd5b506a7a03df27d9fe36155c1d3f351ebfa4e20bf1c0d"), "10.16.0-darwin_amd64": ("node-v10.16.0-darwin-x64.tar.gz", "node-v10.16.0-darwin-x64", "6c009df1b724026d84ae9a838c5b382662e30f6c5563a0995532f2bece39fa9c"), "10.16.0-linux_arm64": ("node-v10.16.0-linux-arm64.tar.xz", "node-v10.16.0-linux-arm64", "ae2e74ab2f5dbff96bf0b7d8457004bf3538233916f8834740bbe2d5a35442e5"), "10.16.0-linux_amd64": ("node-v10.16.0-linux-x64.tar.xz", "node-v10.16.0-linux-x64", "1827f5b99084740234de0c506f4dd2202a696ed60f76059696747c34339b9d48"), "10.16.0-windows_amd64": ("node-v10.16.0-win-x64.zip", "node-v10.16.0-win-x64", "aa22cb357f0fb54ccbc06b19b60e37eefea5d7dd9940912675d3ed988bf9a059"), "10.16.1-darwin_amd64": ("node-v10.16.1-darwin-x64.tar.gz", "node-v10.16.1-darwin-x64", "328e61fdacfe2f6f1a049d57e248b3eafc0345747831323a14fe1edf98d9b3bb"), "10.16.1-linux_arm64": ("node-v10.16.1-linux-arm64.tar.xz", "node-v10.16.1-linux-arm64", "c46ba1a8e9b9c0490ae81f8b2b13d332ed6f5c86d172fa817f749042ab329b93"), "10.16.1-linux_amd64": ("node-v10.16.1-linux-x64.tar.xz", "node-v10.16.1-linux-x64", "127d9b2f485523805208f867fc513842570b29b4d6831773eeb6dd403a22ba9d"), "10.16.1-windows_amd64": ("node-v10.16.1-win-x64.zip", "node-v10.16.1-win-x64", "1ff8b26670e1b935b51f4b795728f29845c31a3c38b3220b4fe71fb139bc5623"), "10.16.2-darwin_amd64": ("node-v10.16.2-darwin-x64.tar.gz", "node-v10.16.2-darwin-x64", "21ee8bdb04909f553e97af7c6e41009e15d06b886dd3e2ca8a92ce3e0a148a09"), "10.16.2-linux_arm64": ("node-v10.16.2-linux-arm64.tar.xz", "node-v10.16.2-linux-arm64", "5fb2b7d3c2b6b40e237cdc172eabfac2e485ee309ac2bcfbff413de1ed79a59e"), "10.16.2-linux_amd64": ("node-v10.16.2-linux-x64.tar.xz", "node-v10.16.2-linux-x64", "406718dc2f3164b3d1981c36b68b70ea448fbbac29cefbe23ff286b3cd55f264"), "10.16.2-windows_amd64": ("node-v10.16.2-win-x64.zip", "node-v10.16.2-win-x64", "01654dc79d82e9f3c89d01c8cf1cdce68d3a9118dbe968ee86a3ffd6ee153567"), "10.16.3-darwin_amd64": ("node-v10.16.3-darwin-x64.tar.gz", "node-v10.16.3-darwin-x64", "6febc571e1543c2845fa919c6d06b36a24e4e142c91aedbe28b6ff7d296119e4"), "10.16.3-linux_arm64": ("node-v10.16.3-linux-arm64.tar.xz", "node-v10.16.3-linux-arm64", "8ee77bad022bd460bf2867a97bf56ce7ddc4aa2ace067e45995fb1721a958428"), "10.16.3-linux_amd64": ("node-v10.16.3-linux-x64.tar.xz", "node-v10.16.3-linux-x64", "d2271fd8cf997fa7447d638dfa92749ff18ca4b0d796bf89f2a82bf7800d5506"), "10.16.3-windows_amd64": ("node-v10.16.3-win-x64.zip", "node-v10.16.3-win-x64", "19aa47de7c5950d7bd71a1e878013b98d93871cc311d7185f5472e6d3f633146"), "10.17.0-darwin_amd64": ("node-v10.17.0-darwin-x64.tar.gz", "node-v10.17.0-darwin-x64", "9b96140ad74b217f216c83ddf50d1f70a4296576f6edbbbfb65d0f478015d9df"), "10.17.0-linux_arm64": ("node-v10.17.0-linux-arm64.tar.xz", "node-v10.17.0-linux-arm64", "3ab8ee2b5c9aa4d060c68667ddef70cc2960e12bcfe4a0f2de7ebc0f008bf13d"), "10.17.0-linux_amd64": ("node-v10.17.0-linux-x64.tar.xz", "node-v10.17.0-linux-x64", "2b49cd296f969ef0ffb7922719ffa6542bedb89d6c959a47c023d11ce222f5d6"), "10.17.0-windows_amd64": ("node-v10.17.0-win-x64.zip", "node-v10.17.0-win-x64", "e84a1f3685219811bb4662eb3e3b55abd0c764c24cd2b224ba31b3f9f162baf6"), "10.18.0-darwin_amd64": ("node-v10.18.0-darwin-x64.tar.gz", "node-v10.18.0-darwin-x64", "a7af53e3363e8ab654b97387bc7cf352dddb324562404c1d35fe10cba3f27e0f"), "10.18.0-linux_arm64": ("node-v10.18.0-linux-arm64.tar.xz", "node-v10.18.0-linux-arm64", "b2b34dd43ea3979890663afa270e09e09c219f046e39e8e439eeda2821cc9643"), "10.18.0-linux_amd64": ("node-v10.18.0-linux-x64.tar.xz", "node-v10.18.0-linux-x64", "eac160acfc2c5b6fca021baa9943341fea50859f19c7ccbd56669b1fe04e691e"), "10.18.0-windows_amd64": ("node-v10.18.0-win-x64.zip", "node-v10.18.0-win-x64", "56afcc9c191dfc99017725be92ac1331e23afb1930913446eb91852cb02a8687"), "10.18.1-darwin_amd64": ("node-v10.18.1-darwin-x64.tar.gz", "node-v10.18.1-darwin-x64", "2b2d3379420e626eee393cabf1c90bc55957ff5bb067b82a74eb2f92147d6757"), "10.18.1-linux_arm64": ("node-v10.18.1-linux-arm64.tar.xz", "node-v10.18.1-linux-arm64", "9a6203697e0087a1c909961481d579c76777df1df622921e4ce16198851f30fe"), "10.18.1-linux_amd64": ("node-v10.18.1-linux-x64.tar.xz", "node-v10.18.1-linux-x64", "8cc40f45c2c62529b15e83a6bbe0ac1febf57af3c5720df68067c96c0fddbbdf"), "10.18.1-windows_amd64": ("node-v10.18.1-win-x64.zip", "node-v10.18.1-win-x64", "fb27bb95c27c72f2e25d0c41309b606b2ae48ba0d6094a19f206ad1df9dc5e19"), "10.19.0-darwin_amd64": ("node-v10.19.0-darwin-x64.tar.gz", "node-v10.19.0-darwin-x64", "b16328570651be44213a2303c1f9515fc506e0a96a273806f71ed000e3ca3cb3"), "10.19.0-linux_arm64": ("node-v10.19.0-linux-arm64.tar.xz", "node-v10.19.0-linux-arm64", "77bdbf859fc38e6e860efd479b0a7b7b6bd3e7cb05337e5cc5638251eb5d3a59"), "10.19.0-linux_amd64": ("node-v10.19.0-linux-x64.tar.xz", "node-v10.19.0-linux-x64", "34127c7c6b1ba02d6d4dc3a926f38a5fb88bb37fc7f051349005ce331c7a53c6"), "10.19.0-windows_amd64": ("node-v10.19.0-win-x64.zip", "node-v10.19.0-win-x64", "210efd45a7f79cf4c350d8f575f990becdd3833cd922796a4c83b27996f5679e"), "10.20.0-darwin_amd64": ("node-v10.20.0-darwin-x64.tar.gz", "node-v10.20.0-darwin-x64", "c153832774afcae89a82efb55ed80557d1a41e1880638ad57128a9a3762d212f"), "10.20.0-linux_arm64": ("node-v10.20.0-linux-arm64.tar.xz", "node-v10.20.0-linux-arm64", "f3567924d6b7f0fa55c4ee0a7330ec0dcaeec557982794796d6b312e7053c674"), "10.20.0-linux_amd64": ("node-v10.20.0-linux-x64.tar.xz", "node-v10.20.0-linux-x64", "c5721a89feecc0e98d42386e171cb763c077f782033ddc998819edcf9d93b691"), "10.20.0-windows_amd64": ("node-v10.20.0-win-x64.zip", "node-v10.20.0-win-x64", "d266313fa22885a6ec76eea521fb8a1131b4d9fb3a57afb045a98301aeb7d24e"), "10.20.1-darwin_amd64": ("node-v10.20.1-darwin-x64.tar.gz", "node-v10.20.1-darwin-x64", "6437e364cd93be246ffb67dd40775cbb467bb8d28d8af4413123f478bb6234b9"), "10.20.1-linux_arm64": ("node-v10.20.1-linux-arm64.tar.xz", "node-v10.20.1-linux-arm64", "e33cafff94a6308916530b4b724bbc138399484d96f71b1c23677596bec268d0"), "10.20.1-linux_amd64": ("node-v10.20.1-linux-x64.tar.xz", "node-v10.20.1-linux-x64", "5e0b1fbc6cf8c2c34dc33d880670ee1bc1c1e931099de3796a96143a962c92ee"), "10.20.1-windows_amd64": ("node-v10.20.1-win-x64.zip", "node-v10.20.1-win-x64", "5e4ec0936c51047c218c0c164cc80283cd36ecd40e0a6979281d395c1be8ee10"), "10.21.0-darwin_amd64": ("node-v10.21.0-darwin-x64.tar.gz", "node-v10.21.0-darwin-x64", "596900700c4a0de0303bb4c378a1abcd63f31efc848704c5fbc1230de628577a"), "10.21.0-linux_arm64": ("node-v10.21.0-linux-arm64.tar.xz", "node-v10.21.0-linux-arm64", "3af40706ff0da7fe0baa4683ead6c74445405a2553e7373e627f24d19d4ac100"), "10.21.0-linux_amd64": ("node-v10.21.0-linux-x64.tar.xz", "node-v10.21.0-linux-x64", "1d3296763e46540047099e4910812e81c4899c0595f2d82474e2099c1e1603e2"), "10.21.0-windows_amd64": ("node-v10.21.0-win-x64.zip", "node-v10.21.0-win-x64", "03dddcdaccdb40978ddf15d189acdc20409d9a666636db2595118690ff83ce82"), "10.22.0-darwin_amd64": ("node-v10.22.0-darwin-x64.tar.gz", "node-v10.22.0-darwin-x64", "c7583a297ba9c6cfc03688a32776155d02fabf9ff45847c63b12a68d400f1dc1"), "10.22.0-linux_arm64": ("node-v10.22.0-linux-arm64.tar.xz", "node-v10.22.0-linux-arm64", "abacc6f37e8dfbe398843c7dc7b9bb7153ff6e653ad50e85d73d86088da48372"), "10.22.0-linux_amd64": ("node-v10.22.0-linux-x64.tar.xz", "node-v10.22.0-linux-x64", "ddf33e038c593d6df36b1dd4b25c1b6fa8230c615e6312ad33e80ef863e4a74f"), "10.22.0-windows_amd64": ("node-v10.22.0-win-x64.zip", "node-v10.22.0-win-x64", "931c2907450790f89aa178fa84c1adbd1f7cb7ab0a34f8bfb4af25640e8d4e06"), "11.0.0-darwin_amd64": ("node-v11.0.0-darwin-x64.tar.gz", "node-v11.0.0-darwin-x64", "f70e12d246ba35e88c5c08a195215c5c913ce66c9d95d0bd21cc1d3e69904279"), "11.0.0-linux_arm64": ("node-v11.0.0-linux-arm64.tar.xz", "node-v11.0.0-linux-arm64", "0d0c7013fd00a8e713c36aa96bcc268eeadbad2ce48d87e19849d66f4c618cad"), "11.0.0-linux_amd64": ("node-v11.0.0-linux-x64.tar.xz", "node-v11.0.0-linux-x64", "418b1a73bcafbf5dd3bc787f0440c2b4123dfecc2b239f5651f0256cb5ab606d"), "11.0.0-windows_amd64": ("node-v11.0.0-win-x64.zip", "node-v11.0.0-win-x64", "4dd3ef7f5c8181be39cd45476b22ed34b6da2bf77377b699384d426702f8c969"), "11.1.0-darwin_amd64": ("node-v11.1.0-darwin-x64.tar.gz", "node-v11.1.0-darwin-x64", "5d6b84d2b0fd6afee07c371bc815a9e4b6671b85bedcb38815310bd0f884d3c8"), "11.1.0-linux_arm64": ("node-v11.1.0-linux-arm64.tar.xz", "node-v11.1.0-linux-arm64", "cbba27e1c90701fbb9db66cc2c6cc3049aaf08adb16cabd0cad970b74cdaf6d3"), "11.1.0-linux_amd64": ("node-v11.1.0-linux-x64.tar.xz", "node-v11.1.0-linux-x64", "c70419674d932452017556080264de2b6d1105c112647dd1dd495b739456dd91"), "11.1.0-windows_amd64": ("node-v11.1.0-win-x64.zip", "node-v11.1.0-win-x64", "985e4edc758cb5f77f85cddda0155616b92f163b8d3842c542b1c8a395068418"), "11.2.0-darwin_amd64": ("node-v11.2.0-darwin-x64.tar.gz", "node-v11.2.0-darwin-x64", "cd17fafcdb21ae80fb94e455e63567c70b3bceedf982b93ae9e4aea411f6a6ea"), "11.2.0-linux_arm64": ("node-v11.2.0-linux-arm64.tar.xz", "node-v11.2.0-linux-arm64", "3e6c47a29b85030b4305bdc2e15cbe37e1b54a2338ce1790637384ce349ed1fd"), "11.2.0-linux_amd64": ("node-v11.2.0-linux-x64.tar.xz", "node-v11.2.0-linux-x64", "629a603443c275f8ecd851994b81a9c02a36343dbcbafc279cbecb9ccd9cf906"), "11.2.0-windows_amd64": ("node-v11.2.0-win-x64.zip", "node-v11.2.0-win-x64", "3440b2880b4e3b78c9c18865df263317e7d3c3e179dad960d526004dc7e6ba9a"), "11.3.0-darwin_amd64": ("node-v11.3.0-darwin-x64.tar.gz", "node-v11.3.0-darwin-x64", "54acc7bdeffae79fdd73f959712305aee1d8d487d56813b43cae96d151ec79db"), "11.3.0-linux_arm64": ("node-v11.3.0-linux-arm64.tar.xz", "node-v11.3.0-linux-arm64", "642cc3fc94a856ad6d09e76eaf869672bef925308afdad398a58f18eeaf4e4b8"), "11.3.0-linux_amd64": ("node-v11.3.0-linux-x64.tar.xz", "node-v11.3.0-linux-x64", "d37fb7fae8a185409bccf106e91d8ffa3450115852795512fc62e6da0b5e3dbb"), "11.3.0-windows_amd64": ("node-v11.3.0-win-x64.zip", "node-v11.3.0-win-x64", "b801e908ec36a07f06df388845e22e0b7f3cede7a4030896712c8ee28cdb3f05"), "11.4.0-darwin_amd64": ("node-v11.4.0-darwin-x64.tar.gz", "node-v11.4.0-darwin-x64", "05a515146d5bc397625f442a6ecbbc7f0d071a2a7efbf1e2b2ed46d728bc7b30"), "11.4.0-linux_arm64": ("node-v11.4.0-linux-arm64.tar.xz", "node-v11.4.0-linux-arm64", "c32e752e74794a4254ae4caa892b7beb3be60dba6851e8e5d637febfb659ee3a"), "11.4.0-linux_amd64": ("node-v11.4.0-linux-x64.tar.xz", "node-v11.4.0-linux-x64", "24d9be161e7fb28e761801639cb452ff223269ed53d967e5745b5c6391eb3fbd"), "11.4.0-windows_amd64": ("node-v11.4.0-win-x64.zip", "node-v11.4.0-win-x64", "30b84ab0101c8916694e6cd6c0ccb5182e4555da5e06deb080e906ef5b3893df"), "11.5.0-darwin_amd64": ("node-v11.5.0-darwin-x64.tar.gz", "node-v11.5.0-darwin-x64", "741abd58ac67b4bf8d2ef991a7487ea17e421b2248688b93be0d2f34886c6aa2"), "11.5.0-linux_arm64": ("node-v11.5.0-linux-arm64.tar.xz", "node-v11.5.0-linux-arm64", "3f1436c1de70b2e34f7a63a5af7e6b106a8ebe9289b3f7d045ac4a4856570164"), "11.5.0-linux_amd64": ("node-v11.5.0-linux-x64.tar.xz", "node-v11.5.0-linux-x64", "ada54407b505b7e6f516c753f0e49220917dd11efa5ee892d3252bdd65d4a54c"), "11.5.0-windows_amd64": ("node-v11.5.0-win-x64.zip", "node-v11.5.0-win-x64", "3692939b1bbd7ee8b0a967429eef6b1d45078c2f4fc289aae261ca5bde5a0607"), "11.6.0-darwin_amd64": ("node-v11.6.0-darwin-x64.tar.gz", "node-v11.6.0-darwin-x64", "c880063b112c48130dba8f7b058de61959ae46fddcfa363715571b22c1cbeb26"), "11.6.0-linux_arm64": ("node-v11.6.0-linux-arm64.tar.xz", "node-v11.6.0-linux-arm64", "956016db41f4f96f8e005d36c738d7c833442d09a970462552eb214027e0268a"), "11.6.0-linux_amd64": ("node-v11.6.0-linux-x64.tar.xz", "node-v11.6.0-linux-x64", "2251a6c5b332e7ea69bbefba11950cb6c27ba50fa700468711f729da6a6f5324"), "11.6.0-windows_amd64": ("node-v11.6.0-win-x64.zip", "node-v11.6.0-win-x64", "d230828c1cc9863c9768106ffee0320ba42049b594bd2689e430b872e8f0b2dd"), "11.7.0-darwin_amd64": ("node-v11.7.0-darwin-x64.tar.gz", "node-v11.7.0-darwin-x64", "873b47e6fc97aef2f73b0e8dde641967b2a84a3b63d1697b9d8813e14fb3b01c"), "11.7.0-linux_arm64": ("node-v11.7.0-linux-arm64.tar.xz", "node-v11.7.0-linux-arm64", "82b9726c6b367a43530f868f61b1b2a05c942d3decdf9d2e18b4a9bdf353c223"), "11.7.0-linux_amd64": ("node-v11.7.0-linux-x64.tar.xz", "node-v11.7.0-linux-x64", "b2a0a7dde17fe0da5f86ce5fea3da2861d652a5e702e2177ee62813ff86451c0"), "11.7.0-windows_amd64": ("node-v11.7.0-win-x64.zip", "node-v11.7.0-win-x64", "00834d16532f24583bf56d2baab03904b0220154cc712344be95e4d05c6234dd"), "11.8.0-darwin_amd64": ("node-v11.8.0-darwin-x64.tar.gz", "node-v11.8.0-darwin-x64", "fbb26b38f408c2f2324a5821062c16103f54de16d24f9f24c4e270a3a41f4832"), "11.8.0-linux_arm64": ("node-v11.8.0-linux-arm64.tar.xz", "node-v11.8.0-linux-arm64", "42b190c686cb8bafbdbf418a6c20c6785a23ba0f1a1a85af44595057a3d5e25e"), "11.8.0-linux_amd64": ("node-v11.8.0-linux-x64.tar.xz", "node-v11.8.0-linux-x64", "85ca19c495d5cac6acf6ee4a3c8dfb4489fb67fefc184c61eb4513eb5ef99a88"), "11.8.0-windows_amd64": ("node-v11.8.0-win-x64.zip", "node-v11.8.0-win-x64", "cd4db1b9e7ac29ed81d433f2de85582902670a121961aa3f350533d5b2fd44c6"), "11.9.0-darwin_amd64": ("node-v11.9.0-darwin-x64.tar.gz", "node-v11.9.0-darwin-x64", "1df3dd99d174bb8cb61cc8e2aa419a4998c7ada9454123c34991ce30632f1ef8"), "11.9.0-linux_arm64": ("node-v11.9.0-linux-arm64.tar.xz", "node-v11.9.0-linux-arm64", "f39baa8d212e9676bfa7f1601f94d789c6dc6b35caf440df6ec815d238978457"), "11.9.0-linux_amd64": ("node-v11.9.0-linux-x64.tar.xz", "node-v11.9.0-linux-x64", "9bc461fb7f5fd3344301abfda834160d5397a4e289f9749ab03ba0b7e9a4c853"), "11.9.0-windows_amd64": ("node-v11.9.0-win-x64.zip", "node-v11.9.0-win-x64", "c62c01436f632858fea0194d4168b483e1aa485c3fc72247add4899a103c2677"), "11.10.0-darwin_amd64": ("node-v11.10.0-darwin-x64.tar.gz", "node-v11.10.0-darwin-x64", "1956528c6f3934a97508e36a4855c154f40f1923ccd61e296d5a85679103e3a1"), "11.10.0-linux_arm64": ("node-v11.10.0-linux-arm64.tar.xz", "node-v11.10.0-linux-arm64", "60ed6caa90d8188a55f0dbc63f4aef263fb4863e036d32989b820a2e40582c66"), "11.10.0-linux_amd64": ("node-v11.10.0-linux-x64.tar.xz", "node-v11.10.0-linux-x64", "fe4c617aaf88b5228bce0341d1c77bbae2622d69eaa17a15b7d4bcc60c4777c5"), "11.10.0-windows_amd64": ("node-v11.10.0-win-x64.zip", "node-v11.10.0-win-x64", "c39e711aebe678455fa74edf6d8f6184d6d93e20f160197799040a0c17005dba"), "11.10.1-darwin_amd64": ("node-v11.10.1-darwin-x64.tar.gz", "node-v11.10.1-darwin-x64", "dea52b86f6875efae26fbb6d0269d9769da7ca69408b74b6ab724d4b64004b07"), "11.10.1-linux_arm64": ("node-v11.10.1-linux-arm64.tar.xz", "node-v11.10.1-linux-arm64", "b116e57906ed73c970d64e7518b08c6de236575c5cd8bf09f4c1bd668524a014"), "11.10.1-linux_amd64": ("node-v11.10.1-linux-x64.tar.xz", "node-v11.10.1-linux-x64", "414216a7e47dbfb77141dce7a4452901ae2cdb4cd0deef3ab3ab49e0b2111f82"), "11.10.1-windows_amd64": ("node-v11.10.1-win-x64.zip", "node-v11.10.1-win-x64", "80cf14abacbc6b636bc192f4eee49421f082f21cdaa9c1ea5995c38f8c1375e5"), "11.11.0-darwin_amd64": ("node-v11.11.0-darwin-x64.tar.gz", "node-v11.11.0-darwin-x64", "6b7c8d93096bf065de0d0a42e8f027c424172c82df6f015d3149a5dbfa03c1cc"), "11.11.0-linux_arm64": ("node-v11.11.0-linux-arm64.tar.xz", "node-v11.11.0-linux-arm64", "febb698e74264ec0ecc738c86347e6bfb5d27e33ed492a031626df988a5fb4f3"), "11.11.0-linux_amd64": ("node-v11.11.0-linux-x64.tar.xz", "node-v11.11.0-linux-x64", "ee09c7712e741f84948f76a72b651bf088e516c3f38569b9e6f30c38c026c262"), "11.11.0-windows_amd64": ("node-v11.11.0-win-x64.zip", "node-v11.11.0-win-x64", "154a5b7ca7033382743c4752fa465a5d9902f4abed4263a38ea3f41ffa113910"), "11.12.0-darwin_amd64": ("node-v11.12.0-darwin-x64.tar.gz", "node-v11.12.0-darwin-x64", "93d68c1af41d02b262b3383d69b46eb326707ec010b321ad5655b91c4956e783"), "11.12.0-linux_arm64": ("node-v11.12.0-linux-arm64.tar.xz", "node-v11.12.0-linux-arm64", "9e89838e290c9bb478351bd403707d0b741ec56021c379c9f6da515a4cd1064a"), "11.12.0-linux_amd64": ("node-v11.12.0-linux-x64.tar.xz", "node-v11.12.0-linux-x64", "1c6bb93a24eda832708c1c10ec20316e1e4f30b3cfca9c5ee5d446762414b116"), "11.12.0-windows_amd64": ("node-v11.12.0-win-x64.zip", "node-v11.12.0-win-x64", "68e5bca1d6dd6b3de20870e7c593f9a890c48d2c9c83e15034baad6f7c0da426"), "11.13.0-darwin_amd64": ("node-v11.13.0-darwin-x64.tar.gz", "node-v11.13.0-darwin-x64", "c1a8f94b4778dad2d9f513cfdf9091810dc733a2daf4fa7e03d49ad133415b5d"), "11.13.0-linux_arm64": ("node-v11.13.0-linux-arm64.tar.xz", "node-v11.13.0-linux-arm64", "0edb29004fdbb5808331e765b4adde8b025a13d6619f49fec60a14582aba9ed7"), "11.13.0-linux_amd64": ("node-v11.13.0-linux-x64.tar.xz", "node-v11.13.0-linux-x64", "c2ae3caced5f181df282a6974ab3f5e232b5decb821aa8ea8fe758b0e0528223"), "11.13.0-windows_amd64": ("node-v11.13.0-win-x64.zip", "node-v11.13.0-win-x64", "f3dafd1f19841244f8f12952f9919c0a2857f6920b11f2a89554b061cd5a4525"), "11.14.0-darwin_amd64": ("node-v11.14.0-darwin-x64.tar.gz", "node-v11.14.0-darwin-x64", "37b8db4f6700a4b5aa3b6d4283538753953f6293aff99866aa9a81038848a4d9"), "11.14.0-linux_arm64": ("node-v11.14.0-linux-arm64.tar.xz", "node-v11.14.0-linux-arm64", "3d463f3b48e1060027f8a552657de6f3ee4724d718d546aa4ea5c301ee4ed083"), "11.14.0-linux_amd64": ("node-v11.14.0-linux-x64.tar.xz", "node-v11.14.0-linux-x64", "89e2cb0effa9bf075ee8bb6d92a6a50f7ccfdad03dd687f52ecdfab91230f9a1"), "11.14.0-windows_amd64": ("node-v11.14.0-win-x64.zip", "node-v11.14.0-win-x64", "58a5d3316c04335ff3da2ce66b89f3cce86b1d1ca878d1d6d68478160c66dc12"), "11.15.0-darwin_amd64": ("node-v11.15.0-darwin-x64.tar.gz", "node-v11.15.0-darwin-x64", "e953b657b1049e1de509a3fd0700cfeecd175f75a0d141d71393aa0d71fa29a9"), "11.15.0-linux_arm64": ("node-v11.15.0-linux-arm64.tar.xz", "node-v11.15.0-linux-arm64", "e458aa4c69da9ca2ae566c8eb56dc8b36d573b415bfd8eebca4ff2229fc4983d"), "11.15.0-linux_amd64": ("node-v11.15.0-linux-x64.tar.xz", "node-v11.15.0-linux-x64", "17424aef198fa322b93c79217ce7e8cdd264fed40383abbbd3e63c305ce1d7d8"), "11.15.0-windows_amd64": ("node-v11.15.0-win-x64.zip", "node-v11.15.0-win-x64", "f3cef50acf566724a5ec5df7697fb527d7339cafdae6c7c406a39358aee6cdf8"), "12.0.0-darwin_amd64": ("node-v12.0.0-darwin-x64.tar.gz", "node-v12.0.0-darwin-x64", "92c81a284e909424b50dd01e175260b75bbbdb487fdfe1885229817187ea76bc"), "12.0.0-linux_arm64": ("node-v12.0.0-linux-arm64.tar.xz", "node-v12.0.0-linux-arm64", "2ac36aa51f76654a8914d41a32bd5c3d3213cba14eea84abd9919d022b5694b4"), "12.0.0-linux_amd64": ("node-v12.0.0-linux-x64.tar.xz", "node-v12.0.0-linux-x64", "7a5609167265954cfb912e4dc8f36e5469335b6be1bb11d60d8427f92c03f5f9"), "12.0.0-windows_amd64": ("node-v12.0.0-win-x64.zip", "node-v12.0.0-win-x64", "96ab5f9f61d75daf3fb1072930b6e9249f15b77bc3b3dca516ae8439dc1500fb"), "12.1.0-darwin_amd64": ("node-v12.1.0-darwin-x64.tar.gz", "node-v12.1.0-darwin-x64", "57c592b13940aa44611aec08e7b425f35565a2c95c51736f433cb36eb65105b7"), "12.1.0-linux_arm64": ("node-v12.1.0-linux-arm64.tar.xz", "node-v12.1.0-linux-arm64", "67805a7976bef30d0e12211f18a99c6de405931e493fd32f451512473661ee10"), "12.1.0-linux_amd64": ("node-v12.1.0-linux-x64.tar.xz", "node-v12.1.0-linux-x64", "331c43176a20e705c6f4fdb61c69fee44dd3c2c93a20410be2c13b4f8515ef7b"), "12.1.0-windows_amd64": ("node-v12.1.0-win-x64.zip", "node-v12.1.0-win-x64", "6dc3ef4a6b4ce527f187270a1b0c5560771126df487ab9ddc4c3cd3b37d57eb6"), "12.2.0-darwin_amd64": ("node-v12.2.0-darwin-x64.tar.gz", "node-v12.2.0-darwin-x64", "c72ae8a2b989138c6e6e9b393812502df8c28546a016cf24e7a82dd27e3838af"), "12.2.0-linux_arm64": ("node-v12.2.0-linux-arm64.tar.xz", "node-v12.2.0-linux-arm64", "42e4a5c6ad0b402e281daf46a27a269249bdb8b4e31ff8869701aaddac2cc8c4"), "12.2.0-linux_amd64": ("node-v12.2.0-linux-x64.tar.xz", "node-v12.2.0-linux-x64", "89059969861606e2a435ff2619c4df6f41c040120e507d9c4f03374353357307"), "12.2.0-windows_amd64": ("node-v12.2.0-win-x64.zip", "node-v12.2.0-win-x64", "c1e7fb3c1c15d8f2ab5c1db9c9662097f9c682164b3f7397955ccce946442c97"), "12.3.0-darwin_amd64": ("node-v12.3.0-darwin-x64.tar.gz", "node-v12.3.0-darwin-x64", "4a9faa038fb4e6e930a0fecd9818a4820b4ca91d1c45a1c1279fe49cdbd28160"), "12.3.0-linux_arm64": ("node-v12.3.0-linux-arm64.tar.xz", "node-v12.3.0-linux-arm64", "3d6e7046b938ff1f2535bdcc892a82abf44d875d1e96779cc3ea9a074ccfa200"), "12.3.0-linux_amd64": ("node-v12.3.0-linux-x64.tar.xz", "node-v12.3.0-linux-x64", "2ce2c7a4d7fe3c560415e8dcbc5905a66a8bf28e2a2b2cff7e7a4eeb5753015d"), "12.3.0-windows_amd64": ("node-v12.3.0-win-x64.zip", "node-v12.3.0-win-x64", "b36c9f9809c90ce704465f066861314d6e33176a5d45da14c1519c3e4f35063e"), "12.3.1-darwin_amd64": ("node-v12.3.1-darwin-x64.tar.gz", "node-v12.3.1-darwin-x64", "b9c979f63a356090d8ff88ed141fd856ad853165c73633794a9d3a060334378e"), "12.3.1-linux_arm64": ("node-v12.3.1-linux-arm64.tar.xz", "node-v12.3.1-linux-arm64", "88df7f2e0c4a58661bb79b637daa417929efc6c4d6a77bba42a5127c5c383257"), "12.3.1-linux_amd64": ("node-v12.3.1-linux-x64.tar.xz", "node-v12.3.1-linux-x64", "46f52868c0643fe0d167ce24c3c873880c8e1494276c89c07114fb099da4f75a"), "12.3.1-windows_amd64": ("node-v12.3.1-win-x64.zip", "node-v12.3.1-win-x64", "aac3c4543f846c7ebf63e1498dec7955119dffffe65722bd8c6d2124ed4ecbd7"), "12.4.0-darwin_amd64": ("node-v12.4.0-darwin-x64.tar.gz", "node-v12.4.0-darwin-x64", "aaff97d59cda775165ef966ae74e70f55f3267e86d735ed3740ae9bf1d40531e"), "12.4.0-linux_arm64": ("node-v12.4.0-linux-arm64.tar.xz", "node-v12.4.0-linux-arm64", "bb2e7eabebdceb52424516dabce94cb37f55419e6ed19493916843a323c423cd"), "12.4.0-linux_amd64": ("node-v12.4.0-linux-x64.tar.xz", "node-v12.4.0-linux-x64", "9aec6a2a50c1791704a6069cbda6da62781361e44814d024e8bbaaf0deb41c5e"), "12.4.0-windows_amd64": ("node-v12.4.0-win-x64.zip", "node-v12.4.0-win-x64", "ec8623e2528a35d3219200308e7ed41e24d4f7cd96530a4e6ac2513e44f7fad1"), "12.5.0-darwin_amd64": ("node-v12.5.0-darwin-x64.tar.gz", "node-v12.5.0-darwin-x64", "a9ba9f584f015f1705063c10dd8d84d43f5b09dc7ecf4ee3968ab1ff1fe5d2b5"), "12.5.0-linux_arm64": ("node-v12.5.0-linux-arm64.tar.xz", "node-v12.5.0-linux-arm64", "d43b71a97f5484d13b655a8a0c1b1c0fc7e83b3719063cc362fe557d6e26bd69"), "12.5.0-linux_amd64": ("node-v12.5.0-linux-x64.tar.xz", "node-v12.5.0-linux-x64", "37c0c539aae69370f3c014cc4947748ce45ac5fa560f9b085724f22029834b27"), "12.5.0-windows_amd64": ("node-v12.5.0-win-x64.zip", "node-v12.5.0-win-x64", "f1b426fcd39ffdfec5d8ba60c6842cc11e9f49269cd49bc34c4fcee0517ddf66"), "12.6.0-darwin_amd64": ("node-v12.6.0-darwin-x64.tar.gz", "node-v12.6.0-darwin-x64", "004b7992a2621eb35a47c94d258510ca5744b5a8072364f235dc7e3d4bff7457"), "12.6.0-linux_arm64": ("node-v12.6.0-linux-arm64.tar.xz", "node-v12.6.0-linux-arm64", "b7a6580f0c5406b990b3c9f0d91297b103e38e2752b8b745c4d15310a9dd79d1"), "12.6.0-linux_amd64": ("node-v12.6.0-linux-x64.tar.xz", "node-v12.6.0-linux-x64", "1ac14567e2be5562df209900e28430bd11575d985a85e8a6df2743428570de33"), "12.6.0-windows_amd64": ("node-v12.6.0-win-x64.zip", "node-v12.6.0-win-x64", "0c5ac670c5bb0ea0d389bb7269cb84104702826f791a1d057eae02cdb9eed717"), "12.7.0-darwin_amd64": ("node-v12.7.0-darwin-x64.tar.gz", "node-v12.7.0-darwin-x64", "1a76bea7f7ed8c5c921852269ddd1300c9baba2f1e3f0377200a22c22cdea177"), "12.7.0-linux_arm64": ("node-v12.7.0-linux-arm64.tar.xz", "node-v12.7.0-linux-arm64", "abc4500eff8437503d475726b8ac2ed3463d2982bd66925a782f91b7d96e31de"), "12.7.0-linux_amd64": ("node-v12.7.0-linux-x64.tar.xz", "node-v12.7.0-linux-x64", "95867fdcfd4f821d84b3dd9fab5803fb29e093e911f2ab3c7111bcaf8bd5b9da"), "12.7.0-windows_amd64": ("node-v12.7.0-win-x64.zip", "node-v12.7.0-win-x64", "68802316ca4eb4d72ec5f9ff837752a6ec8cd73537ad7c346f30899ee523f4b7"), "12.8.0-darwin_amd64": ("node-v12.8.0-darwin-x64.tar.gz", "node-v12.8.0-darwin-x64", "5229571a1736befd6426dc0a6907be416e9f5c24695e3ef275ed2ba70f496499"), "12.8.0-linux_arm64": ("node-v12.8.0-linux-arm64.tar.xz", "node-v12.8.0-linux-arm64", "9f22aff38a8622b05821129f69dbe90695e01166f55c8d2a39b6c6a5aef8c6a8"), "12.8.0-linux_amd64": ("node-v12.8.0-linux-x64.tar.xz", "node-v12.8.0-linux-x64", "b6a9ab2e6e872375e0e27eda0698820a64495b31b1beab36cc54f9876b3a2052"), "12.8.0-windows_amd64": ("node-v12.8.0-win-x64.zip", "node-v12.8.0-win-x64", "b295aedebde069c4148534a9dfb2394ceba28cf367ddd8204a27d69c095a9e00"), "12.8.1-darwin_amd64": ("node-v12.8.1-darwin-x64.tar.gz", "node-v12.8.1-darwin-x64", "caccf8b409af342e35672cc766430587664f88d01dab622a5de44c8be1336e44"), "12.8.1-linux_arm64": ("node-v12.8.1-linux-arm64.tar.xz", "node-v12.8.1-linux-arm64", "3707240c402aae0b5879ce1ba17b32ebd224d47f5147639c6881a1b71ce65383"), "12.8.1-linux_amd64": ("node-v12.8.1-linux-x64.tar.xz", "node-v12.8.1-linux-x64", "1c7cf61cb8fa98a76d92445823d6dd1649e985899e16900b39eacdd8cd4094f3"), "12.8.1-windows_amd64": ("node-v12.8.1-win-x64.zip", "node-v12.8.1-win-x64", "c81ecaa03dc882dde36087c854e4831c13d3eb237f262f9ce74ccc6f156684da"), "12.9.0-darwin_amd64": ("node-v12.9.0-darwin-x64.tar.gz", "node-v12.9.0-darwin-x64", "24c1f0c93e485961446814662db942f1b309d843fb4ecbe50466d9857a51b343"), "12.9.0-linux_arm64": ("node-v12.9.0-linux-arm64.tar.xz", "node-v12.9.0-linux-arm64", "f7f6f102d097d64eba26f84f2760597f9831886ef7d0db3cba88459847f2743d"), "12.9.0-linux_amd64": ("node-v12.9.0-linux-x64.tar.xz", "node-v12.9.0-linux-x64", "7110bdd16e397870142ff0e8d92d4a4502d43ec047d970c843a9a4e5f9e79283"), "12.9.0-windows_amd64": ("node-v12.9.0-win-x64.zip", "node-v12.9.0-win-x64", "b5f05deb31ac04b9c3a487542daf151e01c05017403a56ba443da623f36b153b"), "12.9.1-darwin_amd64": ("node-v12.9.1-darwin-x64.tar.gz", "node-v12.9.1-darwin-x64", "9aaf29d30056e2233fd15dfac56eec12e8342d91bb6c13d54fb5e599383dddb9"), "12.9.1-linux_arm64": ("node-v12.9.1-linux-arm64.tar.xz", "node-v12.9.1-linux-arm64", "b6d986faf3a77b6c353c344645c93f2a0e0436c43865e6c215a24301a076a11f"), "12.9.1-linux_amd64": ("node-v12.9.1-linux-x64.tar.xz", "node-v12.9.1-linux-x64", "680a1263c9f5f91adadcada549f0a9c29f1b26d09658d2b501c334c3f63719e5"), "12.9.1-windows_amd64": ("node-v12.9.1-win-x64.zip", "node-v12.9.1-win-x64", "6a4e54bda091bd02dbd8ff1b9f6671e036297da012a53891e3834d4bf4bed297"), "12.10.0-darwin_amd64": ("node-v12.10.0-darwin-x64.tar.gz", "node-v12.10.0-darwin-x64", "4c16d1f6454f5dc3977ad00cea123792b8d4e1d6d1bf42bbc82a4202039a5971"), "12.10.0-linux_arm64": ("node-v12.10.0-linux-arm64.tar.xz", "node-v12.10.0-linux-arm64", "fa1afb9e8cfd964867351b6dac6cd918784ff309291612251c4745aeb0b10e02"), "12.10.0-linux_amd64": ("node-v12.10.0-linux-x64.tar.xz", "node-v12.10.0-linux-x64", "e8d2e6b62dd8183dc59a139a9ca3edc7c419a0d3d92e90fea9cb0ad52489843a"), "12.10.0-windows_amd64": ("node-v12.10.0-win-x64.zip", "node-v12.10.0-win-x64", "de341476711c71f82d06fabcc9874c1ff9e865fd7274334d64a67b1e31a53fd0"), "12.11.0-darwin_amd64": ("node-v12.11.0-darwin-x64.tar.gz", "node-v12.11.0-darwin-x64", "a0fd5c1c9e67099f52b73c732aa52a878c6ff67f50ff0e94c2c5628a87455130"), "12.11.0-linux_arm64": ("node-v12.11.0-linux-arm64.tar.xz", "node-v12.11.0-linux-arm64", "d1126439ff6d079b682a7cd6308cb226afd247e5cb0f7cc60cfb0e609a096622"), "12.11.0-linux_amd64": ("node-v12.11.0-linux-x64.tar.xz", "node-v12.11.0-linux-x64", "c0dc88110ac3ee095e3d09077545435b72d4cd52e35c43cd3fa666cff7446d46"), "12.11.0-windows_amd64": ("node-v12.11.0-win-x64.zip", "node-v12.11.0-win-x64", "457157358bd029196d47865dee66f8c263a3a4a5a8cdd1c0a8cf43ac45e9eda3"), "12.11.1-darwin_amd64": ("node-v12.11.1-darwin-x64.tar.gz", "node-v12.11.1-darwin-x64", "7dd24ee6d81668e65ce1b77b4bb4cdaf517d8f80bb19740d286606028506970b"), "12.11.1-linux_arm64": ("node-v12.11.1-linux-arm64.tar.xz", "node-v12.11.1-linux-arm64", "12777294258da80410fd7d5cbed46ead5d3cabacf376ee10ddb9e1a335b114e7"), "12.11.1-linux_amd64": ("node-v12.11.1-linux-x64.tar.xz", "node-v12.11.1-linux-x64", "00f7a0b59ff38c1c74d81732df925aa5ac5788b58412437327421f796878793d"), "12.11.1-windows_amd64": ("node-v12.11.1-win-x64.zip", "node-v12.11.1-win-x64", "0bab4473cd2ba03511b8859ddf2202bb012d5c541f9d57b555a5bbbf101fcb35"), "12.12.0-darwin_amd64": ("node-v12.12.0-darwin-x64.tar.gz", "node-v12.12.0-darwin-x64", "14a98237e8859bc22695719dbc2e9db5529a33ada0c6c377df4dc27b5622ffbb"), "12.12.0-linux_arm64": ("node-v12.12.0-linux-arm64.tar.xz", "node-v12.12.0-linux-arm64", "ad536aba218df64d8e901b28985f4c5f72f634bf903c449b0c84929f6940853c"), "12.12.0-linux_amd64": ("node-v12.12.0-linux-x64.tar.xz", "node-v12.12.0-linux-x64", "e3a38dfaf1233a3c43c2528869af52e74575781984369a5b705c89d84dfa3ac2"), "12.12.0-windows_amd64": ("node-v12.12.0-win-x64.zip", "node-v12.12.0-win-x64", "930e7bcd2ae5bcb1d4163c2adf09a392ed0e9a824b069d19daeb4f9f3430a195"), "12.13.0-darwin_amd64": ("node-v12.13.0-darwin-x64.tar.gz", "node-v12.13.0-darwin-x64", "49a7374670a111b033ce16611b20fd1aafd3296bbc662b184fe8fb26a29c22cc"), "12.13.0-linux_arm64": ("node-v12.13.0-linux-arm64.tar.xz", "node-v12.13.0-linux-arm64", "d65b3ce27639f15ae22941e3ff98a1c900aa9049fcc15518038615b0676037d5"), "12.13.0-linux_amd64": ("node-v12.13.0-linux-x64.tar.xz", "node-v12.13.0-linux-x64", "7a57ef2cb3036d7eacd50ae7ba07245a28336a93652641c065f747adb2a356d9"), "12.13.0-windows_amd64": ("node-v12.13.0-win-x64.zip", "node-v12.13.0-win-x64", "6f920cebeecb4957b4ef0def6d9b04c49d4582864f8d1a207ce8d0665865781a"), "12.13.1-darwin_amd64": ("node-v12.13.1-darwin-x64.tar.gz", "node-v12.13.1-darwin-x64", "12d14c7fbd98876a163a2b7e0aeb13657dc3e967e993efaf2dcacbe475a285e8"), "12.13.1-linux_arm64": ("node-v12.13.1-linux-arm64.tar.xz", "node-v12.13.1-linux-arm64", "3aef0178a8ab74c8e5c133e23d1896e53ed5c273415d165a0e72e005f5467cba"), "12.13.1-linux_amd64": ("node-v12.13.1-linux-x64.tar.xz", "node-v12.13.1-linux-x64", "aca06db37589966829b1ef0f163a5859b156a1d8e51b415bf47590f667c30a25"), "12.13.1-windows_amd64": ("node-v12.13.1-win-x64.zip", "node-v12.13.1-win-x64", "db33fb758ba49b96d073311ef9e9134b51bf96246ffd938909b2e02c65a6e890"), "12.14.0-darwin_amd64": ("node-v12.14.0-darwin-x64.tar.gz", "node-v12.14.0-darwin-x64", "5f3170b346b29e6902c0ca7e0993e3d1b4b650615348aa866de17ad965377048"), "12.14.0-linux_arm64": ("node-v12.14.0-linux-arm64.tar.xz", "node-v12.14.0-linux-arm64", "733b4f71ccdf114038bbe0f20574a1e8f4f60b53d39caf445f518745596eadda"), "12.14.0-linux_amd64": ("node-v12.14.0-linux-x64.tar.xz", "node-v12.14.0-linux-x64", "82ae74ee0a204de7ebf7767eaa8e382518d9b49668dcbb5bd7fd003154445d1f"), "12.14.0-windows_amd64": ("node-v12.14.0-win-x64.zip", "node-v12.14.0-win-x64", "526f4b01ffb270bdd8213b58b38843fa3c88f03c89b1898c641bc0e32607913e"), "12.14.1-darwin_amd64": ("node-v12.14.1-darwin-x64.tar.gz", "node-v12.14.1-darwin-x64", "0be10a28737527a1e5e3784d3ad844d742fe8b0718acd701fd48f718fd3af78f"), "12.14.1-linux_arm64": ("node-v12.14.1-linux-arm64.tar.xz", "node-v12.14.1-linux-arm64", "6cd28a5e6340f596aec8dbfd6720f444f011e6b9018622290a60dbd17f9baff6"), "12.14.1-linux_amd64": ("node-v12.14.1-linux-x64.tar.xz", "node-v12.14.1-linux-x64", "07cfcaa0aa9d0fcb6e99725408d9e0b07be03b844701588e3ab5dbc395b98e1b"), "12.14.1-windows_amd64": ("node-v12.14.1-win-x64.zip", "node-v12.14.1-win-x64", "1f96ccce3ba045ecea3f458e189500adb90b8bc1a34de5d82fc10a5bf66ce7e3"), "12.15.0-darwin_amd64": ("node-v12.15.0-darwin-x64.tar.gz", "node-v12.15.0-darwin-x64", "b6449cec39ac15b37abe4e59ef0eae50dcdfbf060c5276a01cc590f2a3372b7d"), "12.15.0-linux_arm64": ("node-v12.15.0-linux-arm64.tar.xz", "node-v12.15.0-linux-arm64", "c582cb65a0ec7f648618d3d33b4f87c374a3f930518b57eca1693828c965d6e5"), "12.15.0-linux_amd64": ("node-v12.15.0-linux-x64.tar.xz", "node-v12.15.0-linux-x64", "63df953deb091c1500e1044bef01d1953117970e757e74e90d915e1a4a0d1c9c"), "12.15.0-windows_amd64": ("node-v12.15.0-win-x64.zip", "node-v12.15.0-win-x64", "48b29cab597962f12b0aac081522e6192bc8642c582cd0fc1bf51557273888da"), "12.16.0-darwin_amd64": ("node-v12.16.0-darwin-x64.tar.gz", "node-v12.16.0-darwin-x64", "af3b9bbfdd9ae1b46390e7deeb77a2c1d8dbc6fb4171bbb0cfe8686fc1ecef1d"), "12.16.0-linux_arm64": ("node-v12.16.0-linux-arm64.tar.xz", "node-v12.16.0-linux-arm64", "f2d97187bd8d3175bf6266193107a030bfb827003d57ba6dd21de16aa622548d"), "12.16.0-linux_amd64": ("node-v12.16.0-linux-x64.tar.xz", "node-v12.16.0-linux-x64", "e8c38659540766db9d85bd7325ba8cce8ded56204f84507f73fdb41a26d9bd73"), "12.16.0-windows_amd64": ("node-v12.16.0-win-x64.zip", "node-v12.16.0-win-x64", "9a590dd064b491fbd40b366ae4a119fe6cef516a25fb4d78d7c2a64b37574da8"), "12.16.1-darwin_amd64": ("node-v12.16.1-darwin-x64.tar.gz", "node-v12.16.1-darwin-x64", "34895bce210ca4b3cf19cd480e6563588880dd7f5d798f3782e3650580d35920"), "12.16.1-linux_arm64": ("node-v12.16.1-linux-arm64.tar.xz", "node-v12.16.1-linux-arm64", "396c43ba507b8ec33c70cdc6f73b4a7c725bddb3f74a85a8b8ed77b436856fed"), "12.16.1-linux_amd64": ("node-v12.16.1-linux-x64.tar.xz", "node-v12.16.1-linux-x64", "b826753f14df9771609ffb8e7d2cc4cb395247cb704cf0cea0f04132d9cf3505"), "12.16.1-windows_amd64": ("node-v12.16.1-win-x64.zip", "node-v12.16.1-win-x64", "b93b73572c5e495154a9823d494de5729c77d1c83b041171154c4b5f3f76b590"), "12.16.2-darwin_amd64": ("node-v12.16.2-darwin-x64.tar.gz", "node-v12.16.2-darwin-x64", "483954e311a5ff649ddf32b473f635a58890790d284b5788bdd8d7ff850c6db2"), "12.16.2-linux_arm64": ("node-v12.16.2-linux-arm64.tar.xz", "node-v12.16.2-linux-arm64", "c88005467f6dcdb621d454b35ec39bb42e165c6a2e1cee74cabcdc01af307e81"), "12.16.2-linux_amd64": ("node-v12.16.2-linux-x64.tar.xz", "node-v12.16.2-linux-x64", "f94a6eb06e80ef2794ebf51a2baed0b89ed307d3196ab5579f16c0fa7cc62901"), "12.16.2-windows_amd64": ("node-v12.16.2-win-x64.zip", "node-v12.16.2-win-x64", "f34303a49384aee2e5daab5f248c5a719e850a9ebb19e7098fe2bfffb26efe03"), "12.16.3-darwin_amd64": ("node-v12.16.3-darwin-x64.tar.gz", "node-v12.16.3-darwin-x64", "0718812b3ab8e77e8d1354f4d10428ae99d78f721bdcceee527c4b592ea7fed0"), "12.16.3-linux_arm64": ("node-v12.16.3-linux-arm64.tar.xz", "node-v12.16.3-linux-arm64", "8311f513a7d1911200502dd3e00142cef56d600c851d5870f68d939802205b73"), "12.16.3-linux_amd64": ("node-v12.16.3-linux-x64.tar.xz", "node-v12.16.3-linux-x64", "1956e196e3c3c8ef5f0c45db76d7c1245af4ccdda2b7ab30a57ce91d6e165caa"), "12.16.3-windows_amd64": ("node-v12.16.3-win-x64.zip", "node-v12.16.3-win-x64", "d0bb0e0b1f1a948529ddd543e2cfe0bfe209eb843defc70217b3d2f84cbf3b78"), "12.17.0-darwin_amd64": ("node-v12.17.0-darwin-x64.tar.gz", "node-v12.17.0-darwin-x64", "8c3b9459462b8adaa10549f4da6a5ff5cdfaf7140a8a8020a87cc96d79022cc0"), "12.17.0-linux_arm64": ("node-v12.17.0-linux-arm64.tar.xz", "node-v12.17.0-linux-arm64", "54a0dbb203ff1700341d258cefa304bd31044bf0226e9e59a0de1128418cb5aa"), "12.17.0-linux_amd64": ("node-v12.17.0-linux-x64.tar.xz", "node-v12.17.0-linux-x64", "988653492a4f422fb112421c5c9d1c140146b665b480c2b24c66fffdd0b88a88"), "12.17.0-windows_amd64": ("node-v12.17.0-win-x64.zip", "node-v12.17.0-win-x64", "f3a64dc6ad48577f1f81521aa144c028beb7e353d0fcd05d7b420a72a84f50fc"), "12.18.0-darwin_amd64": ("node-v12.18.0-darwin-x64.tar.gz", "node-v12.18.0-darwin-x64", "11fe50e670315d2d3c46317d23f7a019f46a3d08b534fbadee9a1bc3d4f81852"), "12.18.0-linux_arm64": ("node-v12.18.0-linux-arm64.tar.xz", "node-v12.18.0-linux-arm64", "51b301102984ff73a74894396b774d00259bb3bb8c1de7c82674713acec7a214"), "12.18.0-linux_amd64": ("node-v12.18.0-linux-x64.tar.xz", "node-v12.18.0-linux-x64", "2febc2506c298048bfddf896056be6191c1f08716876d960a4990bd63a7fe05a"), "12.18.0-windows_amd64": ("node-v12.18.0-win-x64.zip", "node-v12.18.0-win-x64", "ca73a989eba5e863971cb600e5520cb4c5edf9c600fe8f76d9e4771ad03b5d08"), "12.18.1-darwin_amd64": ("node-v12.18.1-darwin-x64.tar.gz", "node-v12.18.1-darwin-x64", "80e1d644fe78838da47cd16de234b612c20e06ffe14447125db9622e381ed1ba"), "12.18.1-linux_arm64": ("node-v12.18.1-linux-arm64.tar.xz", "node-v12.18.1-linux-arm64", "b6683e6e887c6c44a3fe9ff419e80d36eaafed39eb2c2d1b04ee54b440a03217"), "12.18.1-linux_amd64": ("node-v12.18.1-linux-x64.tar.xz", "node-v12.18.1-linux-x64", "863f816967e297c9eb221ad3cf32521f7ac46fffc66750e60f159ed63809affa"), "12.18.1-windows_amd64": ("node-v12.18.1-win-x64.zip", "node-v12.18.1-win-x64", "93039ebfc7c5bfad168b015f77667757925070fff3ae84c3eb73348b3123a82a"), "12.18.2-darwin_amd64": ("node-v12.18.2-darwin-x64.tar.gz", "node-v12.18.2-darwin-x64", "6e6e7311943e4f3880db5038b8b8034a30469342fe436c8aaacf2997dfa305a6"), "12.18.2-linux_arm64": ("node-v12.18.2-linux-arm64.tar.xz", "node-v12.18.2-linux-arm64", "d7d3a05f36de9eb079b7b25e0fc1aaa0c960afdf36fb24b498f7303365eb945c"), "12.18.2-linux_amd64": ("node-v12.18.2-linux-x64.tar.xz", "node-v12.18.2-linux-x64", "b8dc634798ee783482c2ae1755bd7dff09d83fa7bb037cdc370b601d0a5e5cbb"), "12.18.2-windows_amd64": ("node-v12.18.2-win-x64.zip", "node-v12.18.2-win-x64", "91fdd5b5df16873c63541bc844c9eb66870d366b2076d114f9ab7528b5e2f9a3"), "12.18.3-darwin_amd64": ("node-v12.18.3-darwin-x64.tar.gz", "node-v12.18.3-darwin-x64", "af376caf114bdd5d7e566dbf7590e9077ffc01f9b2692eb2651f31d7219a30bb"), "12.18.3-linux_arm64": ("node-v12.18.3-linux-arm64.tar.xz", "node-v12.18.3-linux-arm64", "d330aab40029afc34f8b5d1abc2e67be233df4b31331cf08d538be2a666737bb"), "12.18.3-linux_amd64": ("node-v12.18.3-linux-x64.tar.xz", "node-v12.18.3-linux-x64", "b79e02e48d0a1ee4cd4ae138de97fda5413542f2a4f441a7d0e189697b8da563"), "12.18.3-windows_amd64": ("node-v12.18.3-win-x64.zip", "node-v12.18.3-win-x64", "1fcd30c09f0ac9fbecf45161519eff2cf621c199eef4663b1db41b3f2fef4041"), "13.0.0-darwin_amd64": ("node-v13.0.0-darwin-x64.tar.gz", "node-v13.0.0-darwin-x64", "612556a8c7e6b4cd08f6134b8afe5a05bf84c0121225fa9c542be1c98af04a35"), "13.0.0-linux_arm64": ("node-v13.0.0-linux-arm64.tar.xz", "node-v13.0.0-linux-arm64", "6ed882e17123861b5b81683de2b2c86be02c5916ef0beda04fd176329888fd12"), "13.0.0-linux_amd64": ("node-v13.0.0-linux-x64.tar.xz", "node-v13.0.0-linux-x64", "799d890f00a3a2a7415b813b286d32d38573df6525bc8ef80f40077cdd210d39"), "13.0.0-windows_amd64": ("node-v13.0.0-win-x64.zip", "node-v13.0.0-win-x64", "8ffcefde5e080d70790a9a2e1aab0724cc88b5526d5128b53fc59bf94f6ad5de"), "13.0.1-darwin_amd64": ("node-v13.0.1-darwin-x64.tar.gz", "node-v13.0.1-darwin-x64", "25621359a51ff218ecf4bb2ffc657815154230a967224f22b722840a2b9ad061"), "13.0.1-linux_arm64": ("node-v13.0.1-linux-arm64.tar.xz", "node-v13.0.1-linux-arm64", "ad6e051aede160d8be5cbab9c60a155b06a5696e8088d895e6eff3dd36f9a688"), "13.0.1-linux_amd64": ("node-v13.0.1-linux-x64.tar.xz", "node-v13.0.1-linux-x64", "d5657c19bb30b267bf2e0f2b61f6a96d8955aa30b69240f22d3fd2c65e123cf7"), "13.0.1-windows_amd64": ("node-v13.0.1-win-x64.zip", "node-v13.0.1-win-x64", "1a2552b630651e08e9027339f71a65fbe3944540f0875563ea25639a091e1f33"), "13.1.0-darwin_amd64": ("node-v13.1.0-darwin-x64.tar.gz", "node-v13.1.0-darwin-x64", "6501c1bcf2babb5b9c81dcff8b52021f726da8f6ee28df1637acade1a16c7d39"), "13.1.0-linux_arm64": ("node-v13.1.0-linux-arm64.tar.xz", "node-v13.1.0-linux-arm64", "646d597e6b0dc400429e46b703a5135c77bd71e653ea4c8254d0b60c17b6ec1d"), "13.1.0-linux_amd64": ("node-v13.1.0-linux-x64.tar.xz", "node-v13.1.0-linux-x64", "2eecb5a4b7975c3b406bee36b12c9a29e8bedf9553c88cad310b8f076db00881"), "13.1.0-windows_amd64": ("node-v13.1.0-win-x64.zip", "node-v13.1.0-win-x64", "d735e97bdeb7b74551b9d165c708a3fdea4dbb3801a65e70f6d6ae3539d48a03"), "13.2.0-darwin_amd64": ("node-v13.2.0-darwin-x64.tar.gz", "node-v13.2.0-darwin-x64", "2bcba358ef68ea21655728126c678063c60119e18e65d04f615d6b22dba8f7a5"), "13.2.0-linux_arm64": ("node-v13.2.0-linux-arm64.tar.xz", "node-v13.2.0-linux-arm64", "e6c4a5fe57585f69a20bd028275db31f43de421308e31d117f319b577210e527"), "13.2.0-linux_amd64": ("node-v13.2.0-linux-x64.tar.xz", "node-v13.2.0-linux-x64", "366df8a38b522a5899c3f48d8c9e359b3370495cf84867b2673dc10483adbdef"), "13.2.0-windows_amd64": ("node-v13.2.0-win-x64.zip", "node-v13.2.0-win-x64", "e2866a8f53c45bb544d7b00aed1e5fddbbd7071bd331b02e66a6ce7c38c6918c"), "13.3.0-darwin_amd64": ("node-v13.3.0-darwin-x64.tar.gz", "node-v13.3.0-darwin-x64", "187ea9028daa6d9abad9c1cbb4e12ba51427c3748da29eae616fa352c0f4cd49"), "13.3.0-linux_arm64": ("node-v13.3.0-linux-arm64.tar.xz", "node-v13.3.0-linux-arm64", "fb201a908bea36be828eee36a7cd898c67ad4ae6846982f393466e2b8b826c16"), "13.3.0-linux_amd64": ("node-v13.3.0-linux-x64.tar.xz", "node-v13.3.0-linux-x64", "b208393ae411bd55188e903171901765aaa8381c08155e4a7b34174737a1bc65"), "13.3.0-windows_amd64": ("node-v13.3.0-win-x64.zip", "node-v13.3.0-win-x64", "82e0f43aea81374a8028a7d3c9993245c4910ac95cd0f66ee5b29b940a6f3d93"), "13.4.0-darwin_amd64": ("node-v13.4.0-darwin-x64.tar.gz", "node-v13.4.0-darwin-x64", "4de08a89054416595228d6ff40fcf20c375d00556f2e95dfde8602cbb42c0b6e"), "13.4.0-linux_arm64": ("node-v13.4.0-linux-arm64.tar.xz", "node-v13.4.0-linux-arm64", "382d5fb2983ab55d495e42145e812b3859d2a311e426307fd373f47825d55fe9"), "13.4.0-linux_amd64": ("node-v13.4.0-linux-x64.tar.xz", "node-v13.4.0-linux-x64", "5cab49240c521efb80efd0a0bb3ba1071e5498c55ecbebd723d78648c91b1cc8"), "13.4.0-windows_amd64": ("node-v13.4.0-win-x64.zip", "node-v13.4.0-win-x64", "56de9ed20332cdf22bb9b048c3fb3977662ef2de9d2e8ac2d2a27d28e9be276f"), "13.5.0-darwin_amd64": ("node-v13.5.0-darwin-x64.tar.gz", "node-v13.5.0-darwin-x64", "3322c601dc032677e5b5f87f393d4b1d70073bcab24fe74378eff8eb49364001"), "13.5.0-linux_arm64": ("node-v13.5.0-linux-arm64.tar.xz", "node-v13.5.0-linux-arm64", "fe52f4e3a60a372138102da741e5b5d34310a74b3fc6f2000e4c254e3f0c4f51"), "13.5.0-linux_amd64": ("node-v13.5.0-linux-x64.tar.xz", "node-v13.5.0-linux-x64", "4d2b2cea13388658e95d8b2dc7ff918718155473ef6ef38928d92eb8cbbe210a"), "13.5.0-windows_amd64": ("node-v13.5.0-win-x64.zip", "node-v13.5.0-win-x64", "e286a84f2861b9f3c0290a9afbbecd09f303a39b2573af001ef8a4c1413eee7c"), "13.6.0-darwin_amd64": ("node-v13.6.0-darwin-x64.tar.gz", "node-v13.6.0-darwin-x64", "da13adb864777b322dda7af20410a9b0c63aa69de4b5574008d1e6910768bf69"), "13.6.0-linux_arm64": ("node-v13.6.0-linux-arm64.tar.xz", "node-v13.6.0-linux-arm64", "1f34ed8668207e03cb832763319a82b4c753839a3655207adc5bbe52f65e154a"), "13.6.0-linux_amd64": ("node-v13.6.0-linux-x64.tar.xz", "node-v13.6.0-linux-x64", "00f01315a867da16d1638f7a02966c608e344ac6c5b7d04d1fdae3138fa9d798"), "13.6.0-windows_amd64": ("node-v13.6.0-win-x64.zip", "node-v13.6.0-win-x64", "7fe37b34a4673a071bea52fcaf913ec422cf6fd79fd025bfb22de42ccc77f386"), "13.7.0-darwin_amd64": ("node-v13.7.0-darwin-x64.tar.gz", "node-v13.7.0-darwin-x64", "866ea9bdbd7b734c593af96b946397d9c7cb9c291aa8ea52a6a2af271b972169"), "13.7.0-linux_arm64": ("node-v13.7.0-linux-arm64.tar.xz", "node-v13.7.0-linux-arm64", "2823b199c7c4e6c547caf95139e28341444a5ffc52481a5ba704067291771579"), "13.7.0-linux_amd64": ("node-v13.7.0-linux-x64.tar.xz", "node-v13.7.0-linux-x64", "02578025b82de24f4cfb3ffeb3824990431d739d09220f2db9ef9f454f475470"), "13.7.0-windows_amd64": ("node-v13.7.0-win-x64.zip", "node-v13.7.0-win-x64", "26b41de81ead8f51de2964d7c7526533f46387ff436b61596e09d678bcd7503f"), "13.8.0-darwin_amd64": ("node-v13.8.0-darwin-x64.tar.gz", "node-v13.8.0-darwin-x64", "ae480e2b124cb55667763848b8ec0fde1bc35d5e0b76debe881034689a68eaea"), "13.8.0-linux_arm64": ("node-v13.8.0-linux-arm64.tar.xz", "node-v13.8.0-linux-arm64", "f1d4167a6911e42d836a5459c992cdaf35a03ab0700ea80831d7df5d706d1baf"), "13.8.0-linux_amd64": ("node-v13.8.0-linux-x64.tar.xz", "node-v13.8.0-linux-x64", "47a8cb675358f2ff534ad3d6709f14de0433f76d3af92cf389b8dcc78a1236ad"), "13.8.0-windows_amd64": ("node-v13.8.0-win-x64.zip", "node-v13.8.0-win-x64", "f198f3e4b120fc84b61d12e7222530c5bb9c6f864735bb41a8db1cf1b94a64c3"), "13.9.0-darwin_amd64": ("node-v13.9.0-darwin-x64.tar.gz", "node-v13.9.0-darwin-x64", "b2a5a539b9b2d1733bda301913c99d220968de801bf313b762fa932820ea797b"), "13.9.0-linux_arm64": ("node-v13.9.0-linux-arm64.tar.xz", "node-v13.9.0-linux-arm64", "c668afc06e4094b68ae758b823fc3244b34f0468fc0c2feee45278788989b8a1"), "13.9.0-linux_amd64": ("node-v13.9.0-linux-x64.tar.xz", "node-v13.9.0-linux-x64", "f1e093303468032a1ecb0e290e19b43bf7771d4efbf589560df0060149614272"), "13.9.0-windows_amd64": ("node-v13.9.0-win-x64.zip", "node-v13.9.0-win-x64", "ec0a55bb703906494e738cd3d09e3274b34f0a3fbe207b9e67502092ed017500"), "13.10.0-darwin_amd64": ("node-v13.10.0-darwin-x64.tar.gz", "node-v13.10.0-darwin-x64", "67269fb9061402e446bb61776be2e5d0ec330b5274326df77979698d05f503da"), "13.10.0-linux_arm64": ("node-v13.10.0-linux-arm64.tar.xz", "node-v13.10.0-linux-arm64", "adb145535d2e03fe508fa7a34897a130ba903d6f718a21cd29d1760e298f715b"), "13.10.0-linux_amd64": ("node-v13.10.0-linux-x64.tar.xz", "node-v13.10.0-linux-x64", "62081af005257d3db7ebd5a64b43f1a8e4a57bafd229be3acd7ce2704607eaac"), "13.10.0-windows_amd64": ("node-v13.10.0-win-x64.zip", "node-v13.10.0-win-x64", "d428b6d3e127716191fa6df630d03a25d3186fda1ede04a9a8d5c07e526dbb9e"), "13.10.1-darwin_amd64": ("node-v13.10.1-darwin-x64.tar.gz", "node-v13.10.1-darwin-x64", "a6a66fdc79e70267fc191f10ee045793240974e1268fdea6c2d28afbc1d635e8"), "13.10.1-linux_arm64": ("node-v13.10.1-linux-arm64.tar.xz", "node-v13.10.1-linux-arm64", "f73effcef784251e53b5e3938b8316c36bd49628c3588de7976e8569e560c12c"), "13.10.1-linux_amd64": ("node-v13.10.1-linux-x64.tar.xz", "node-v13.10.1-linux-x64", "69d69165282d88f321e751f03ee5d3370db65e5ca4c587af24994b12f31d4827"), "13.10.1-windows_amd64": ("node-v13.10.1-win-x64.zip", "node-v13.10.1-win-x64", "f9d0aac273a44dbd52dd8cdb3d6c684b68b860d128af58d77a0c08f39f51f229"), "13.11.0-darwin_amd64": ("node-v13.11.0-darwin-x64.tar.gz", "node-v13.11.0-darwin-x64", "2d87989fb1e0d425667c5ca9893cb3ecfb30cd3344d543870246d65f8d9b892f"), "13.11.0-linux_arm64": ("node-v13.11.0-linux-arm64.tar.xz", "node-v13.11.0-linux-arm64", "63ce9871b9802a1f021c84f282c63e1890524a32dc97d3e7a7ab8d52b4bde19e"), "13.11.0-linux_amd64": ("node-v13.11.0-linux-x64.tar.xz", "node-v13.11.0-linux-x64", "c127cf38f9a56d97646eb1fedb93712f304950c7143705de7180a701becc0fbb"), "13.11.0-windows_amd64": ("node-v13.11.0-win-x64.zip", "node-v13.11.0-win-x64", "dc93aa5a82988f741dca6f1869c7b1aeda6f339293d13a968279a6dc9fcc8dd0"), "13.12.0-darwin_amd64": ("node-v13.12.0-darwin-x64.tar.gz", "node-v13.12.0-darwin-x64", "1fe3103610e8eb66ae71872ea1b4e868a638292a4e7ad0e41976a9fe417a09c7"), "13.12.0-linux_arm64": ("node-v13.12.0-linux-arm64.tar.xz", "node-v13.12.0-linux-arm64", "2e8c12e575fcceb2d6f46eb3c50c6bfa98e91540bddaf91ca1c0fe739619ca0b"), "13.12.0-linux_amd64": ("node-v13.12.0-linux-x64.tar.xz", "node-v13.12.0-linux-x64", "95eb1188872e243323cbc31fc80048be3fdfdda91505c62c80c599281de357ed"), "13.12.0-windows_amd64": ("node-v13.12.0-win-x64.zip", "node-v13.12.0-win-x64", "de8445794ecbcfe895f4775417d1e2cc023e2212b1f5d4ff5cc0ed6875f7c911"), "13.13.0-darwin_amd64": ("node-v13.13.0-darwin-x64.tar.gz", "node-v13.13.0-darwin-x64", "28ae2abedafb250a9bbe706650fd79d2b25273f6445adcc1d85c777359dc5390"), "13.13.0-linux_arm64": ("node-v13.13.0-linux-arm64.tar.xz", "node-v13.13.0-linux-arm64", "eded8da4633134cae0766a2f6f3c2237f8e728df77895c85607acaca13216226"), "13.13.0-linux_amd64": ("node-v13.13.0-linux-x64.tar.xz", "node-v13.13.0-linux-x64", "41d60cda7422f53156711626d670f9b5079075b1ecc6736aea99319fe36c20a6"), "13.13.0-windows_amd64": ("node-v13.13.0-win-x64.zip", "node-v13.13.0-win-x64", "79f2a39c1047666f2bbf2efe53c069a38b8f6ef18d569bf338463aea1914b89d"), "13.14.0-darwin_amd64": ("node-v13.14.0-darwin-x64.tar.gz", "node-v13.14.0-darwin-x64", "a56eb353fecd45f731d74fc77c58dde052320c1bc272de9b03151fbaf962feaf"), "13.14.0-linux_arm64": ("node-v13.14.0-linux-arm64.tar.xz", "node-v13.14.0-linux-arm64", "e4736df097846bbe8195a185cc67ada3410a1f8993949e516bbf62b62198d2a7"), "13.14.0-linux_amd64": ("node-v13.14.0-linux-x64.tar.xz", "node-v13.14.0-linux-x64", "9ab808ba3872d58e827ea60a6e43a352f59361bc8eb36fe0327a587086b466f9"), "13.14.0-windows_amd64": ("node-v13.14.0-win-x64.zip", "node-v13.14.0-win-x64", "8c6e77fac5e911a2e70b6ca34804b3b59b6a3c685ab4e3b17756397df86063fa"), "14.0.0-darwin_amd64": ("node-v14.0.0-darwin-x64.tar.gz", "node-v14.0.0-darwin-x64", "4e50cec7aeef91c6d00d08a3bab938358da182984aa549c2aeab9868e3342f55"), "14.0.0-linux_arm64": ("node-v14.0.0-linux-arm64.tar.xz", "node-v14.0.0-linux-arm64", "29c612fcdb40133171959b269878138bbfe7723d46681f70e2017ee30134e7ad"), "14.0.0-linux_amd64": ("node-v14.0.0-linux-x64.tar.xz", "node-v14.0.0-linux-x64", "a2aaaa621074e1b56bb751bda53ce726319fac617587443371c0a7742481e5b6"), "14.0.0-windows_amd64": ("node-v14.0.0-win-x64.zip", "node-v14.0.0-win-x64", "e8f73d4f2e9935df929360c09ae932ceb316784a7450b256024af5d01fe29b75"), "14.1.0-darwin_amd64": ("node-v14.1.0-darwin-x64.tar.gz", "node-v14.1.0-darwin-x64", "7f08bd365df4e7a5625ad393257f48e8cd79f77391ab87a64426b0c6448dd226"), "14.1.0-linux_arm64": ("node-v14.1.0-linux-arm64.tar.xz", "node-v14.1.0-linux-arm64", "9dd3a4867f679f40075e2a364d3b3566702139274da9fcd59a182198ff7c7b52"), "14.1.0-linux_amd64": ("node-v14.1.0-linux-x64.tar.xz", "node-v14.1.0-linux-x64", "959fab0c8ae0830f1ab987699cd2941cab97169991630a2e0c99db7c144f9e42"), "14.1.0-windows_amd64": ("node-v14.1.0-win-x64.zip", "node-v14.1.0-win-x64", "1d3890d0d2f996cce57bcb0206e49b67233623e3cdb50eee77b8acc8f006b955"), "14.2.0-darwin_amd64": ("node-v14.2.0-darwin-x64.tar.gz", "node-v14.2.0-darwin-x64", "2447241aefe71dea8ba1552549e4df2e894d1ac12203630db3af63d4ae35c016"), "14.2.0-linux_arm64": ("node-v14.2.0-linux-arm64.tar.xz", "node-v14.2.0-linux-arm64", "4587d2c52cd348094bd46ee4ee8cdfeb549462ead9b4aadc9cfc3c5fc3ba7215"), "14.2.0-linux_amd64": ("node-v14.2.0-linux-x64.tar.xz", "node-v14.2.0-linux-x64", "468cbd92271da8c0cacaa3fa432a73a332e398bade8ad7359a94aa8ab3cc3cca"), "14.2.0-windows_amd64": ("node-v14.2.0-win-x64.zip", "node-v14.2.0-win-x64", "99085f45a894e257123d7c729113cc00ed1413df432dbdce5fe53867e7c53b11"), "14.3.0-darwin_amd64": ("node-v14.3.0-darwin-x64.tar.gz", "node-v14.3.0-darwin-x64", "fd6a44303646f28b7e7577de687c2681cb565bef534e84deef44202e7919d7f3"), "14.3.0-linux_arm64": ("node-v14.3.0-linux-arm64.tar.xz", "node-v14.3.0-linux-arm64", "53bb110ea135ae3c819f535373ce1b779e86c7aa49a9b93fc5f26969a72365d2"), "14.3.0-linux_amd64": ("node-v14.3.0-linux-x64.tar.xz", "node-v14.3.0-linux-x64", "17236db7b9447080b58c2e50937982c386fe8a60e644b8d7f23e546068a8acba"), "14.3.0-windows_amd64": ("node-v14.3.0-win-x64.zip", "node-v14.3.0-win-x64", "07bebc231dd8d773ab41cdcfbcb8b48e2336fbee20deb961b4300b9ba86afa04"), "14.4.0-darwin_amd64": ("node-v14.4.0-darwin-x64.tar.gz", "node-v14.4.0-darwin-x64", "d95eaa6950d67895b5cdd0e2f913d2c44034178234f0cb7436c3397b54f64023"), "14.4.0-linux_arm64": ("node-v14.4.0-linux-arm64.tar.xz", "node-v14.4.0-linux-arm64", "9c9f84589b7bc6a05ac12a137e5097a5adb20b5c63ae9e4e912942da2c06d99d"), "14.4.0-linux_amd64": ("node-v14.4.0-linux-x64.tar.xz", "node-v14.4.0-linux-x64", "d65a9a8a547bfe67c6c08dae733a3e5a846700d5377c5f150164cc6bb5f6a039"), "14.4.0-windows_amd64": ("node-v14.4.0-win-x64.zip", "node-v14.4.0-win-x64", "a4bac45af8252f6b677a79ed19be4913f4939c4509fb08b6f14f972597550bbe"), "14.5.0-darwin_amd64": ("node-v14.5.0-darwin-x64.tar.gz", "node-v14.5.0-darwin-x64", "47dfd88abcd4d6d6f7b7516c95645f9760ba9c93d04b51a92895584c945b2953"), "14.5.0-linux_arm64": ("node-v14.5.0-linux-arm64.tar.xz", "node-v14.5.0-linux-arm64", "c5ab67fbc73ea8858b4a989b6e92d6630decfc47c4703be7bcda3c6e39adff0b"), "14.5.0-linux_amd64": ("node-v14.5.0-linux-x64.tar.xz", "node-v14.5.0-linux-x64", "8b0235c318de87ecf8eec9a39e5c5df80757dbec571addda7123276dfcb34d5b"), "14.5.0-windows_amd64": ("node-v14.5.0-win-x64.zip", "node-v14.5.0-win-x64", "ab5728c85ece98210036fc9c38984fa2410a882dd99075b3d5bece58e4cc6ea2"), "14.6.0-darwin_amd64": ("node-v14.6.0-darwin-x64.tar.gz", "node-v14.6.0-darwin-x64", "7907a18605b900ce977ff4c7e67f7507f937f85738659865d31779c3b2990756"), "14.6.0-linux_arm64": ("node-v14.6.0-linux-arm64.tar.xz", "node-v14.6.0-linux-arm64", "853f2c99f0e5fa65e6f222821e29c9d1a49f2d358a97c1de080ddf5c74e4ec70"), "14.6.0-linux_amd64": ("node-v14.6.0-linux-x64.tar.xz", "node-v14.6.0-linux-x64", "b8a39b2dac8e200e96586356c5525d20b0b43dba8bf9f7eb4e8c2d5366be2bb2"), "14.6.0-windows_amd64": ("node-v14.6.0-win-x64.zip", "node-v14.6.0-win-x64", "57ea75a7ec70cc8158e6f9774f9728fb9e3d08212b1af3e206db2de46ca304ca"), "14.7.0-darwin_amd64": ("node-v14.7.0-darwin-x64.tar.gz", "node-v14.7.0-darwin-x64", "47c94ec84706fd6851db27af54abdab569941fcbfcdc28e386d8fa7d49c6a619"), "14.7.0-linux_arm64": ("node-v14.7.0-linux-arm64.tar.xz", "node-v14.7.0-linux-arm64", "12540328aeb5baa524a4e9c3b493b5eceb54cfa630f8bce64c19e674871e2f4b"), "14.7.0-linux_amd64": ("node-v14.7.0-linux-x64.tar.xz", "node-v14.7.0-linux-x64", "48929b03deb2915b64ba67355d2deffeed3c8df798b0c5f2b821ffc7a8116a23"), "14.7.0-windows_amd64": ("node-v14.7.0-win-x64.zip", "node-v14.7.0-win-x64", "a899693c9a31089a1eda14b1e613cf8cd60361e6e574b351551d832cf864c8f8"), "14.8.0-darwin_amd64": ("node-v14.8.0-darwin-x64.tar.gz", "node-v14.8.0-darwin-x64", "b6db32f2ff37475ae68502c76fc777a604cbc589bf57158fb4eed4db9ac5f62d"), "14.8.0-linux_arm64": ("node-v14.8.0-linux-arm64.tar.xz", "node-v14.8.0-linux-arm64", "0c66a6468c36552c00d45cff0eaa924240f3d2e625be0306f33f8b0d81af4224"), "14.8.0-linux_amd64": ("node-v14.8.0-linux-x64.tar.xz", "node-v14.8.0-linux-x64", "c7761fe5d56d045d1540b1f0bc8a20d7edf03e6fd695ee5fbffc1dd9416ccc75"), "14.8.0-windows_amd64": ("node-v14.8.0-win-x64.zip", "node-v14.8.0-win-x64", "848ca582bdf8b7fdc21a38d9f3887a45bdf6381b04549fc0f918852889157c9a")} + {} @@ -385,11 +387,13 @@

    Dictionary: String -> List of strings optional - {"1.3.2": ("yarn-v1.3.2.tar.gz", "yarn-v1.3.2", "6cfe82e530ef0837212f13e45c1565ba53f5199eec2527b85ecbcd88bf26821d"), "1.5.1": ("yarn-v1.5.1.tar.gz", "yarn-v1.5.1", "cd31657232cf48d57fdbff55f38bfa058d2fb4950450bd34af72dac796af4de1"), "1.6.0": ("yarn-v1.6.0.tar.gz", "yarn-v1.6.0", "a57b2fdb2bfeeb083d45a883bc29af94d5e83a21c25f3fc001c295938e988509"), "1.9.2": ("yarn-v1.9.2.tar.gz", "yarn-v1.9.2", "3ad69cc7f68159a562c676e21998eb21b44138cae7e8fe0749a7d620cf940204"), "1.9.4": ("yarn-v1.9.4.tar.gz", "yarn-v1.9.4", "7667eb715077b4bad8e2a832e7084e0e6f1ba54d7280dc573c8f7031a7fb093e"), "1.12.1": ("yarn-v1.12.1.tar.gz", "yarn-v1.12.1", "09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d"), "1.12.3": ("yarn-v1.12.3.tar.gz", "yarn-v1.12.3", "02cd4b589ec22c4bdbd2bc5ebbfd99c5e99b07242ad68a539cb37896b93a24f2"), "1.13.0": ("yarn-v1.13.0.tar.gz", "yarn-v1.13.0", "125d40ebf621ebb08e3f66a618bd2cc5cd77fa317a312900a1ab4360ed38bf14"), "1.19.1": ("yarn-v1.19.1.tar.gz", "yarn-v1.19.1", "34293da6266f2aae9690d59c2d764056053ff7eebc56b80b8df05010c3da9343"), "1.22.4": ("yarn-v1.22.4.tar.gz", "yarn-v1.22.4", "bc5316aa110b2f564a71a3d6e235be55b98714660870c5b6b2d2d3f12587fb58")} + {} @@ -2747,9 +2751,9 @@

    node_modules_aspect

  • Forced version(s)
  • Using a custom version
  • Using a local version
  • +
  • Manual install
  • -
  • Creating dependency installation scripts for manually-managed dependencies
  • nodejs_binary
  • nodejs_test
  • npm_install
  • diff --git a/docs/Built-ins.md b/docs/Built-ins.md index 4015ad55b1..e77702c01b 100755 --- a/docs/Built-ins.md +++ b/docs/Built-ins.md @@ -97,8 +97,8 @@ node_repositories( ) {% endhighlight %} -Will download yarn from https://github.com/yarnpkg/yarn/releases/download/v1.2.1/yarn-v1.12.1.tar.gz -and expect the file to have sha256sum 09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d. +Will download yarn from https://github.com/yarnpkg/yarn/releases/download/v1.2.1/yarn-v1.12.1.tar.gz +and expect the file to have sha256sum 09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d. ### Using a local version @@ -111,10 +111,10 @@ It also ties your build to a single platform, preventing you from cross-compilin See the [the repositories documentation](repositories.html) for how to use the resulting repositories. -## Creating dependency installation scripts for manually-managed dependencies +### Manual install -You can optionally pass a package_json array to node_repositories. This lets you use Bazel's version of yarn or npm, yet always run the package manager yourself. -This is an advanced scenario you can use in place of the npm_install or yarn_install` rules, but we don't recommend it, and might remove it in the future. +You can optionally pass a package_json array to node_repositories. This lets you use Bazel's version of yarn or npm, yet always run the package manager yourself. +This is an advanced scenario you can use in place of the npm_install or yarn_install rules, but we don't recommend it, and might remove it in the future. {% highlight python %} load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories") @@ -162,11 +162,13 @@ node_repositories(name, Dictionary: String -> List of strings optional - {"8.0.0-darwin_amd64": ("node-v8.0.0-darwin-x64.tar.gz", "node-v8.0.0-darwin-x64", "6e4a66917e2c11d5adc537c899941c973ae586293352b8172a4f32be0b7f0300"), "8.0.0-linux_arm64": ("node-v8.0.0-linux-arm64.tar.xz", "node-v8.0.0-linux-arm64", "8d6eaefcc252055de54a666d4e00eec78caf2143cd7a13b63f109e9eb78a795e"), "8.0.0-linux_amd64": ("node-v8.0.0-linux-x64.tar.xz", "node-v8.0.0-linux-x64", "0a536bb83eeccca23626e5e5ead52563a641e4331c35e367662892921dc7e8a4"), "8.0.0-windows_amd64": ("node-v8.0.0-win-x64.zip", "node-v8.0.0-win-x64", "84410377118857674e0fb6e7bc7627ffb8cc67a72f162a050276b076e328a9bb"), "8.1.0-darwin_amd64": ("node-v8.1.0-darwin-x64.tar.gz", "node-v8.1.0-darwin-x64", "08af5f1a7441728cabf9b11af25da28ee1725903524968dd9621b885b13303c7"), "8.1.0-linux_arm64": ("node-v8.1.0-linux-arm64.tar.xz", "node-v8.1.0-linux-arm64", "adf2f517c9847cbb5904b282c0819526b5264c256477ed5e4b258584daa1a2ea"), "8.1.0-linux_amd64": ("node-v8.1.0-linux-x64.tar.xz", "node-v8.1.0-linux-x64", "1638a0083c6eee122cbbefdf39cb8bcc43cf19fedff331a0317b05fd38dcb6df"), "8.1.0-windows_amd64": ("node-v8.1.0-win-x64.zip", "node-v8.1.0-win-x64", "cee1fd1c828e8996824a2d9f9056dfae771b77c05b15ad015bc7f8800409215c"), "8.1.1-darwin_amd64": ("node-v8.1.1-darwin-x64.tar.gz", "node-v8.1.1-darwin-x64", "2f67890a5a46564672cfd4522cc00c7ac04d307e6a942ae1ad38b6aee94c29e2"), "8.1.1-linux_arm64": ("node-v8.1.1-linux-arm64.tar.xz", "node-v8.1.1-linux-arm64", "3971543f9d29f77ddb8f47a54e4b99422a822173599748ab7fcd9c35c8e25124"), "8.1.1-linux_amd64": ("node-v8.1.1-linux-x64.tar.xz", "node-v8.1.1-linux-x64", "6a735e77bdd21c92fe85ea5f9f567d0d6930fa33e0e111946b17cdb7efefb8d5"), "8.1.1-windows_amd64": ("node-v8.1.1-win-x64.zip", "node-v8.1.1-win-x64", "459f3b62e58f4fac3b9b5e49694855f338f3dcf2fcf955299ee2a47f7687625a"), "8.1.2-darwin_amd64": ("node-v8.1.2-darwin-x64.tar.gz", "node-v8.1.2-darwin-x64", "70f353449b19d6d36262f5e38f9cc23e80b2034c21ae48623a6a4890f513eb53"), "8.1.2-linux_arm64": ("node-v8.1.2-linux-arm64.tar.xz", "node-v8.1.2-linux-arm64", "d468ac671047a5a5edb6edd34a9a625645505551c35ef73e2102c504535a09d4"), "8.1.2-linux_amd64": ("node-v8.1.2-linux-x64.tar.xz", "node-v8.1.2-linux-x64", "f5dc173d3005fbcfd107c83a15d4dbff9a28ff53ab42c23344a572d84814ecfe"), "8.1.2-windows_amd64": ("node-v8.1.2-win-x64.zip", "node-v8.1.2-win-x64", "5463c812afeb498ad8ab9c396246e455d9353ab48ae409c82a2a45193e161f66"), "8.1.3-darwin_amd64": ("node-v8.1.3-darwin-x64.tar.gz", "node-v8.1.3-darwin-x64", "ae588038480a6acc57b6b04802fa876e0b602231e9846944dd1b4437e8c1205f"), "8.1.3-linux_arm64": ("node-v8.1.3-linux-arm64.tar.xz", "node-v8.1.3-linux-arm64", "cebc2edd89f20613a530509a2435ecc42757ce16032559ef174ebe84875a1536"), "8.1.3-linux_amd64": ("node-v8.1.3-linux-x64.tar.xz", "node-v8.1.3-linux-x64", "d41dc375ea7e33fadf0fb1bf89d9dfd222a2fb85633fba3d2cf48ac03522ba71"), "8.1.3-windows_amd64": ("node-v8.1.3-win-x64.zip", "node-v8.1.3-win-x64", "be582920c723124ebad48c968f539ef66b1f628d8b6f2338dc68a32f95104856"), "8.1.4-darwin_amd64": ("node-v8.1.4-darwin-x64.tar.gz", "node-v8.1.4-darwin-x64", "a24858a10dd4ca8ad55fd61a7472b4fe9140eb3fa347c41717360c3f29438748"), "8.1.4-linux_arm64": ("node-v8.1.4-linux-arm64.tar.xz", "node-v8.1.4-linux-arm64", "3553c617f594286fea7052678d04aec9e167adddf702b70431d88ce42573c339"), "8.1.4-linux_amd64": ("node-v8.1.4-linux-x64.tar.xz", "node-v8.1.4-linux-x64", "d82fe7ef7e0f8ca1c343f00e3e490996553507ec7d42034f5df034cc7908caaf"), "8.1.4-windows_amd64": ("node-v8.1.4-win-x64.zip", "node-v8.1.4-win-x64", "cc3689ffefc738f6256aab1713343c3c64c24ec997600c0a48243fb26f5e0bce"), "8.2.0-darwin_amd64": ("node-v8.2.0-darwin-x64.tar.gz", "node-v8.2.0-darwin-x64", "da5cca37ae0afdbff3a269bb3dc71ff0d86e282920286f71ae5eb6757cfa5356"), "8.2.0-linux_arm64": ("node-v8.2.0-linux-arm64.tar.xz", "node-v8.2.0-linux-arm64", "3298ae4ae67c4ad714bed23383fd08db5711b164a077a25fb6b282533e65cf77"), "8.2.0-linux_amd64": ("node-v8.2.0-linux-x64.tar.xz", "node-v8.2.0-linux-x64", "e8ceaac3ee4385d53bcebc552a7a6b545b09b9652f5ca1b254aae698fd9a25f9"), "8.2.0-windows_amd64": ("node-v8.2.0-win-x64.zip", "node-v8.2.0-win-x64", "6bc3cc580f0e8190e6a03d6a5967c861c29d6a6eb50f995b3afb7d60b8cee4e1"), "8.2.1-darwin_amd64": ("node-v8.2.1-darwin-x64.tar.gz", "node-v8.2.1-darwin-x64", "32d0923c147470d57f18f055014f5a9fe8a3919406010a2e80ba85952d3c9923"), "8.2.1-linux_arm64": ("node-v8.2.1-linux-arm64.tar.xz", "node-v8.2.1-linux-arm64", "9ed01737f37d410067beeb42066e51f6d0385677c7d0daeeaf2e32cb2aca854a"), "8.2.1-linux_amd64": ("node-v8.2.1-linux-x64.tar.xz", "node-v8.2.1-linux-x64", "abcddeb95cc4465953b1edb0922d20e9b0b3de83688fc8150b863117032a978a"), "8.2.1-windows_amd64": ("node-v8.2.1-win-x64.zip", "node-v8.2.1-win-x64", "37e84e54c67e3d1e52d657c04835b211c94631a0b358f4e7dc351618fdb6c083"), "8.3.0-darwin_amd64": ("node-v8.3.0-darwin-x64.tar.gz", "node-v8.3.0-darwin-x64", "a627354982a514e77e5c37ed5952edc81a7dd9c4f661fd919f192c21ae548654"), "8.3.0-linux_arm64": ("node-v8.3.0-linux-arm64.tar.xz", "node-v8.3.0-linux-arm64", "9e0dab4913585a1b8117bda03c4b5581d9140aec67bb4be0e0b6a4999b41b4ab"), "8.3.0-linux_amd64": ("node-v8.3.0-linux-x64.tar.xz", "node-v8.3.0-linux-x64", "ae377995c6e1af8e2a60c4a929f77562ebed9a2c6897cbd311a2c331f76b4e0f"), "8.3.0-windows_amd64": ("node-v8.3.0-win-x64.zip", "node-v8.3.0-win-x64", "e762fa218465e5aa0952336eee2c3e42e5b48390b36838ca7b6a243812e0b7e5"), "8.4.0-darwin_amd64": ("node-v8.4.0-darwin-x64.tar.gz", "node-v8.4.0-darwin-x64", "cc10ffbd11586bd27a7cc5e6e2d03fd3e0b341368387a03ee9a0117a0288599d"), "8.4.0-linux_arm64": ("node-v8.4.0-linux-arm64.tar.xz", "node-v8.4.0-linux-arm64", "0a811bbe4905fc879f3cbfc976e5a37cca05bbd609774abe4332b29fea75f073"), "8.4.0-linux_amd64": ("node-v8.4.0-linux-x64.tar.xz", "node-v8.4.0-linux-x64", "7fd86abad06f96cb2f889c2a0e25686a3de3e9a078ad946ded91ee4f28d8218a"), "8.4.0-windows_amd64": ("node-v8.4.0-win-x64.zip", "node-v8.4.0-win-x64", "0f60c99479f74d75c7239795c90698826ba8252019d4c23e82ed0d72ceb8974f"), "8.5.0-darwin_amd64": ("node-v8.5.0-darwin-x64.tar.gz", "node-v8.5.0-darwin-x64", "0c8d4c4d90f858a19a29fe1ae7f42b2b7f1a4d3caaa25bea2e08479c00ebbd5f"), "8.5.0-linux_arm64": ("node-v8.5.0-linux-arm64.tar.xz", "node-v8.5.0-linux-arm64", "e0decdebe73dba516d6c72401e337cee6277c6e00f817b0bf1c592360adfd4e6"), "8.5.0-linux_amd64": ("node-v8.5.0-linux-x64.tar.xz", "node-v8.5.0-linux-x64", "a9651fcc6259b4a944ebb72e6dd116602c7b26ddf939599b060d1d3e6ead8c36"), "8.5.0-windows_amd64": ("node-v8.5.0-win-x64.zip", "node-v8.5.0-win-x64", "c385d162c15a7a85d42755ee8c78c1c73bd251e2f7cbf82e5e20c824564aa9df"), "8.6.0-darwin_amd64": ("node-v8.6.0-darwin-x64.tar.gz", "node-v8.6.0-darwin-x64", "2c95f3194a92e8b37aab8895fbaeb1f5fabef3494600ef78a7b7e078dba9a7c9"), "8.6.0-linux_arm64": ("node-v8.6.0-linux-arm64.tar.xz", "node-v8.6.0-linux-arm64", "6848567ab32d04694120e18c20ef47d0f4163229634f236e4bdbb8d135f3204e"), "8.6.0-linux_amd64": ("node-v8.6.0-linux-x64.tar.xz", "node-v8.6.0-linux-x64", "e6f52c3ed7e2cc34ebddbc563434fdf043feb449a60f028101eb45227aec3444"), "8.6.0-windows_amd64": ("node-v8.6.0-win-x64.zip", "node-v8.6.0-win-x64", "08e9b29c47567517ca95ca01d5cdb255279be5463952f92da5c372a99d620b23"), "8.7.0-darwin_amd64": ("node-v8.7.0-darwin-x64.tar.gz", "node-v8.7.0-darwin-x64", "5e59798c1deafd671a35ef4dcdb9b97ce98f9255a056832dc98d454613e9ea08"), "8.7.0-linux_arm64": ("node-v8.7.0-linux-arm64.tar.xz", "node-v8.7.0-linux-arm64", "5a1a1907fbb6d90667ce70ad42602534f6cc6eda873d1c50a3259349aee73418"), "8.7.0-linux_amd64": ("node-v8.7.0-linux-x64.tar.xz", "node-v8.7.0-linux-x64", "9d6f649576cac74ef0b6634af8265156370cf8fdf3676f03e867347d3207675d"), "8.7.0-windows_amd64": ("node-v8.7.0-win-x64.zip", "node-v8.7.0-win-x64", "e95be435674e82ea7133c3268cb70044eabde2d0aef28b2a3df5c7d8d23cadcc"), "8.8.0-darwin_amd64": ("node-v8.8.0-darwin-x64.tar.gz", "node-v8.8.0-darwin-x64", "69a37e240fac48289a2a5bb75ab96091f8d6457eeaf23c0a5125250abe418176"), "8.8.0-linux_arm64": ("node-v8.8.0-linux-arm64.tar.xz", "node-v8.8.0-linux-arm64", "454617ff94882d9a81dca0840065fb5a928ff68e8e8efe7c1748d996ab757b2e"), "8.8.0-linux_amd64": ("node-v8.8.0-linux-x64.tar.xz", "node-v8.8.0-linux-x64", "4304c297f41085ac1f7a6a8e68496d9fd5aa3b92590e7c3c6015a23939767e72"), "8.8.0-windows_amd64": ("node-v8.8.0-win-x64.zip", "node-v8.8.0-win-x64", "a7a1fd2c5f5c967d7df70fdec1a8b2d2d2b1b411fcdd4f23bcf8c9c837a7c3cb"), "8.8.1-darwin_amd64": ("node-v8.8.1-darwin-x64.tar.gz", "node-v8.8.1-darwin-x64", "bf208e29418fb3efc836d3d32b62b9162f0f0b36a0665abc0990f4e292cfc84b"), "8.8.1-linux_arm64": ("node-v8.8.1-linux-arm64.tar.xz", "node-v8.8.1-linux-arm64", "ea8ad0286a31e7519e979fcf99e503845a95da640cd140be5cff418a68fa6263"), "8.8.1-linux_amd64": ("node-v8.8.1-linux-x64.tar.xz", "node-v8.8.1-linux-x64", "004bc95267ef5d5b928f560582f681a679bada2201bf221735a02f4956f67b09"), "8.8.1-windows_amd64": ("node-v8.8.1-win-x64.zip", "node-v8.8.1-win-x64", "a7e60a1a5f46ef309cbe74e423c17e69dd0a573f0c92c9e325caade3388d192a"), "8.9.0-darwin_amd64": ("node-v8.9.0-darwin-x64.tar.gz", "node-v8.9.0-darwin-x64", "aaf165348bc6d20012b048a88a8f3a35cba6799496e8f4c1246d85c524a84dbc"), "8.9.0-linux_arm64": ("node-v8.9.0-linux-arm64.tar.xz", "node-v8.9.0-linux-arm64", "30cb00ac1cf6b466b1f27e7ce41363a67a66dbb64227c2dc5e33d221b09fc579"), "8.9.0-linux_amd64": ("node-v8.9.0-linux-x64.tar.xz", "node-v8.9.0-linux-x64", "e92b91fa473f9ad805a1241907b6f1bd3f8ceac8426a8b4cb05428e62e243bdd"), "8.9.0-windows_amd64": ("node-v8.9.0-win-x64.zip", "node-v8.9.0-win-x64", "dd971e43ff003213b0be31c1a8ce3421f72e0db2a703bc254ac685be4f7f609e"), "8.9.1-darwin_amd64": ("node-v8.9.1-darwin-x64.tar.gz", "node-v8.9.1-darwin-x64", "05c992a6621d28d564b92bf3051a5dc0adf83839237c0d4653a8cdb8a1c73b94"), "8.9.1-linux_arm64": ("node-v8.9.1-linux-arm64.tar.xz", "node-v8.9.1-linux-arm64", "f774660980dcf931bf29847a5f26317823a063fa4a56f85f37c3222d77cce7c1"), "8.9.1-linux_amd64": ("node-v8.9.1-linux-x64.tar.xz", "node-v8.9.1-linux-x64", "8be82805f7c1ab3e64d4569fb9a90ded2de78dd27cadbb91bad1bf975dae1e2d"), "8.9.1-windows_amd64": ("node-v8.9.1-win-x64.zip", "node-v8.9.1-win-x64", "db89c6e041da359561fbe7da075bb4f9881a0f7d3e98c203e83732cfb283fa4a"), "8.9.2-darwin_amd64": ("node-v8.9.2-darwin-x64.tar.gz", "node-v8.9.2-darwin-x64", "ba03ae4c0ebd33e8661b5b241211ddb9f7e3b5b959d8cbd68f5941cb1ed5784d"), "8.9.2-linux_arm64": ("node-v8.9.2-linux-arm64.tar.xz", "node-v8.9.2-linux-arm64", "cc222b4f910ff27ff66ccc96d5c7e2117942bcd161ec253d83cf430146b79bdf"), "8.9.2-linux_amd64": ("node-v8.9.2-linux-x64.tar.xz", "node-v8.9.2-linux-x64", "d4065724e7f5f11e999f78de50fb0faac74341799cb0c0dafcbe87e0ecb0be86"), "8.9.2-windows_amd64": ("node-v8.9.2-win-x64.zip", "node-v8.9.2-win-x64", "2afa8b899c0dddea50dcf5dda66ae7b0ca32326dbf66c52f947c082e7c95d090"), "8.9.3-darwin_amd64": ("node-v8.9.3-darwin-x64.tar.gz", "node-v8.9.3-darwin-x64", "fa7962f25db420a374e9e60d8a410188bd690a2f0ce8d403aa9b09d9b7ae8c1f"), "8.9.3-linux_arm64": ("node-v8.9.3-linux-arm64.tar.xz", "node-v8.9.3-linux-arm64", "8860678ad0c24059380af254574e5a12371a2d5c92ca5e1ac7267314af7df04f"), "8.9.3-linux_amd64": ("node-v8.9.3-linux-x64.tar.xz", "node-v8.9.3-linux-x64", "86f3aa593315f0503d069e3f4805019583ab8d86c0244a83c795d1942e3f99b7"), "8.9.3-windows_amd64": ("node-v8.9.3-win-x64.zip", "node-v8.9.3-win-x64", "17dee0c06d088269123a27db3905a39a17a51cc0ea65435ae942c718f0f94403"), "8.9.4-darwin_amd64": ("node-v8.9.4-darwin-x64.tar.gz", "node-v8.9.4-darwin-x64", "ca50f7d2035eb805306e303b644bb1cde170ce2615e0a2c6e95fb80881c48c24"), "8.9.4-linux_arm64": ("node-v8.9.4-linux-arm64.tar.xz", "node-v8.9.4-linux-arm64", "7c0369a5dbc98d0989c208ca3ee1b6db4cba576343014fdbf7d36fd2659f7089"), "8.9.4-linux_amd64": ("node-v8.9.4-linux-x64.tar.xz", "node-v8.9.4-linux-x64", "68b94aac38cd5d87ab79c5b38306e34a20575f31a3ea788d117c20fffcca3370"), "8.9.4-windows_amd64": ("node-v8.9.4-win-x64.zip", "node-v8.9.4-win-x64", "48946e99ac4484e071df25741d2300f3a656f476c5ff3f8116a4746c07ebe3b7"), "8.10.0-darwin_amd64": ("node-v8.10.0-darwin-x64.tar.gz", "node-v8.10.0-darwin-x64", "7d77bd35bc781f02ba7383779da30bd529f21849b86f14d87e097497671b0271"), "8.10.0-linux_arm64": ("node-v8.10.0-linux-arm64.tar.xz", "node-v8.10.0-linux-arm64", "cbec410109664f75d3c988a43483576fc56f745e05e3884891df9c509fbb1b12"), "8.10.0-linux_amd64": ("node-v8.10.0-linux-x64.tar.xz", "node-v8.10.0-linux-x64", "92220638d661a43bd0fee2bf478cb283ead6524f231aabccf14c549ebc2bc338"), "8.10.0-windows_amd64": ("node-v8.10.0-win-x64.zip", "node-v8.10.0-win-x64", "936ada36cb6f09a5565571e15eb8006e45c5a513529c19e21d070acf0e50321b"), "8.11.0-darwin_amd64": ("node-v8.11.0-darwin-x64.tar.gz", "node-v8.11.0-darwin-x64", "408323335b8c691d75397c76ddd7b00490852652c78c813c586ba7eccc5c382b"), "8.11.0-linux_arm64": ("node-v8.11.0-linux-arm64.tar.xz", "node-v8.11.0-linux-arm64", "a28f599a14ca9ef4062fa1e605b69cd046f81d3fc9a7d6dde1856fb593004b3a"), "8.11.0-linux_amd64": ("node-v8.11.0-linux-x64.tar.xz", "node-v8.11.0-linux-x64", "180ef8c2a39c1696b9a05832883ed981ba11475ffa44ca77781a8d1c1954f944"), "8.11.0-windows_amd64": ("node-v8.11.0-win-x64.zip", "node-v8.11.0-win-x64", "55b9c8d48b59569117a63fdb26e1de05e792c37f563feb7d44b4cd59be96aff8"), "8.11.1-darwin_amd64": ("node-v8.11.1-darwin-x64.tar.gz", "node-v8.11.1-darwin-x64", "5c7b05899ff56910a2b8180f139d48612f349ac2c5d20f08dbbeffbed9e3a089"), "8.11.1-linux_arm64": ("node-v8.11.1-linux-arm64.tar.xz", "node-v8.11.1-linux-arm64", "ff518f33751baa8ea4f18853d446357c2edecd930a1526ac9b2eaa79baddc1bf"), "8.11.1-linux_amd64": ("node-v8.11.1-linux-x64.tar.xz", "node-v8.11.1-linux-x64", "6617e245fa0f7fbe0e373e71d543fea878315324ab31dc64b4eba10e42d04c11"), "8.11.1-windows_amd64": ("node-v8.11.1-win-x64.zip", "node-v8.11.1-win-x64", "7d49b59c2b5d73a14c138e8a215d558a64a5241cd5035d9824f608e7bba097b1"), "8.11.2-darwin_amd64": ("node-v8.11.2-darwin-x64.tar.gz", "node-v8.11.2-darwin-x64", "6bd619ab577a1256531e50e31924d99a094eb920de8b5bd060a056a2608282b9"), "8.11.2-linux_arm64": ("node-v8.11.2-linux-arm64.tar.xz", "node-v8.11.2-linux-arm64", "c8e9833402277c1a5a31b41cc31c9cedad68ba87c2ef78aed6a3ced81af9da7f"), "8.11.2-linux_amd64": ("node-v8.11.2-linux-x64.tar.xz", "node-v8.11.2-linux-x64", "213599127d24496cbf1cbb2a7c51060a3506d6b11132c59bb7f9f8a0edd210a7"), "8.11.2-windows_amd64": ("node-v8.11.2-win-x64.zip", "node-v8.11.2-win-x64", "bbac1f56e8001a093acb2942f8a43c3bf22aec58216f446b7bf01f6f822dfe3f"), "8.11.3-darwin_amd64": ("node-v8.11.3-darwin-x64.tar.gz", "node-v8.11.3-darwin-x64", "77fa26b4c2fc34bdf5a5dd1cd39c93b12087fbd25148c6f04bf409698ee48b86"), "8.11.3-linux_arm64": ("node-v8.11.3-linux-arm64.tar.xz", "node-v8.11.3-linux-arm64", "b8fddec18f20533929a07bc1d38ae63b1999a0252740094f0974b2cbea76eaa4"), "8.11.3-linux_amd64": ("node-v8.11.3-linux-x64.tar.xz", "node-v8.11.3-linux-x64", "08e2fcfea66746bd966ea3a89f26851f1238d96f86c33eaf6274f67fce58421a"), "8.11.3-windows_amd64": ("node-v8.11.3-win-x64.zip", "node-v8.11.3-win-x64", "91b779def1b21dcd1def7fc9671a869a1e2f989952e76fdc08a5d73570075f31"), "8.11.4-darwin_amd64": ("node-v8.11.4-darwin-x64.tar.gz", "node-v8.11.4-darwin-x64", "aa1de83b388581d0d9ec3276f4526ee67e17e0f1bc0deb5133f960ce5dc9f1ef"), "8.11.4-linux_arm64": ("node-v8.11.4-linux-arm64.tar.xz", "node-v8.11.4-linux-arm64", "46e90dd916ddbf88c866de300c1b2a26f9216b19abd92b29e89439f62fb6fc1c"), "8.11.4-linux_amd64": ("node-v8.11.4-linux-x64.tar.xz", "node-v8.11.4-linux-x64", "85ea7cbb5bf624e130585bfe3946e99c85ce5cb84c2aee474038bdbe912f908c"), "8.11.4-windows_amd64": ("node-v8.11.4-win-x64.zip", "node-v8.11.4-win-x64", "72a21e2fcd3703994f57cf707b92e7f939df99c3e0298102e7436849e4948536"), "8.12.0-darwin_amd64": ("node-v8.12.0-darwin-x64.tar.gz", "node-v8.12.0-darwin-x64", "ca131b84dfcf2b6f653a6521d31f7a108ad7d83f4d7e781945b2eca8172064aa"), "8.12.0-linux_arm64": ("node-v8.12.0-linux-arm64.tar.xz", "node-v8.12.0-linux-arm64", "0fbdcfd8cf0cb5e8f5beff84ba091fd47126ba44c628e3a351501419b211aa1a"), "8.12.0-linux_amd64": ("node-v8.12.0-linux-x64.tar.xz", "node-v8.12.0-linux-x64", "29a20479cd1e3a03396a4e74a1784ccdd1cf2f96928b56f6ffa4c8dae40c88f2"), "8.12.0-windows_amd64": ("node-v8.12.0-win-x64.zip", "node-v8.12.0-win-x64", "9b22c9b23148b61ea0052826b3ac0255b8a3a542c125272b8f014f15bf11b091"), "8.13.0-darwin_amd64": ("node-v8.13.0-darwin-x64.tar.gz", "node-v8.13.0-darwin-x64", "f6261c7a09a2c8bd77a8760a0e110410f508e5641ca132511b4883600f2d65f0"), "8.13.0-linux_arm64": ("node-v8.13.0-linux-arm64.tar.xz", "node-v8.13.0-linux-arm64", "e8e0daab515dfd0c2323b8e1274475f61c8ca1cf582dcc254583cbf8593425e3"), "8.13.0-linux_amd64": ("node-v8.13.0-linux-x64.tar.xz", "node-v8.13.0-linux-x64", "8fa1227b28113e25a8960d7fa6779a8c18bf20cfaafc9c5d0e46a3ee88373669"), "8.13.0-windows_amd64": ("node-v8.13.0-win-x64.zip", "node-v8.13.0-win-x64", "46293121d207350bd8d334efb67303337933c4dac886a840f88ff6059bff9443"), "8.14.0-darwin_amd64": ("node-v8.14.0-darwin-x64.tar.gz", "node-v8.14.0-darwin-x64", "1e9bb233bb3c3b01826f9d7e1b3ecf1047840ce96a3a7d1921ddcb569c467329"), "8.14.0-linux_arm64": ("node-v8.14.0-linux-arm64.tar.xz", "node-v8.14.0-linux-arm64", "fbcef89a60f1f40699589850f861fc84354a6f240610e2726c3743455dd82525"), "8.14.0-linux_amd64": ("node-v8.14.0-linux-x64.tar.xz", "node-v8.14.0-linux-x64", "a56d1af4d7da81504338b09809cf10b3144808d47d4117b9bd9a5a4ec4d5d9b9"), "8.14.0-windows_amd64": ("node-v8.14.0-win-x64.zip", "node-v8.14.0-win-x64", "d0be7c96a25c5d2b69f8a3510e9f4414643d5fe361b4509d455249e57f9a50af"), "8.14.1-darwin_amd64": ("node-v8.14.1-darwin-x64.tar.gz", "node-v8.14.1-darwin-x64", "d180a9b70de569e4c3d10c0c4a0af74e40dbca3e845df43ce1ec522bb4252eda"), "8.14.1-linux_arm64": ("node-v8.14.1-linux-arm64.tar.xz", "node-v8.14.1-linux-arm64", "488a66288052c6497133179e4546efb7fbaf105e432cd0d9aab3471901ab5e58"), "8.14.1-linux_amd64": ("node-v8.14.1-linux-x64.tar.xz", "node-v8.14.1-linux-x64", "1fec92a0110f692c68f7bdbec41b340c474bd77063323520786a7b9b00473daf"), "8.14.1-windows_amd64": ("node-v8.14.1-win-x64.zip", "node-v8.14.1-win-x64", "41793b873f98ceed632b24120ef44b2df89625f3dfa90eb9298dad698249167c"), "8.15.0-darwin_amd64": ("node-v8.15.0-darwin-x64.tar.gz", "node-v8.15.0-darwin-x64", "a393971136408f837fbc0f7d71a63754f91cfb1851d48bd612d8219eb61956f1"), "8.15.0-linux_arm64": ("node-v8.15.0-linux-arm64.tar.xz", "node-v8.15.0-linux-arm64", "5985c6dce65b1161ff41253da5aa4e64b8f10eb010a5d2712ea9b659f70179d7"), "8.15.0-linux_amd64": ("node-v8.15.0-linux-x64.tar.xz", "node-v8.15.0-linux-x64", "c1f0c5facdba78b5dec5136aec40dcb00b5c7cf404d9236a99c955994f91d969"), "8.15.0-windows_amd64": ("node-v8.15.0-win-x64.zip", "node-v8.15.0-win-x64", "13d8eab29c191bd16c69a70a556178a5adc988b243a036aaf3d5158861b60d8e"), "8.15.1-darwin_amd64": ("node-v8.15.1-darwin-x64.tar.gz", "node-v8.15.1-darwin-x64", "f3da0b4397150226c008a86c99d77dbb835dc62219d863654913a78332ab19a5"), "8.15.1-linux_arm64": ("node-v8.15.1-linux-arm64.tar.xz", "node-v8.15.1-linux-arm64", "69e000d78342c3d39583922c57947a906ad723789d6294951deb10cbe8709605"), "8.15.1-linux_amd64": ("node-v8.15.1-linux-x64.tar.xz", "node-v8.15.1-linux-x64", "5643b54c583eebaa40c1623b16cba4e3955ff5dfdd44036f6bafd761160c993d"), "8.15.1-windows_amd64": ("node-v8.15.1-win-x64.zip", "node-v8.15.1-win-x64", "f636fa578dc079bacc6c4bef13284ddb893c99f7640b96701c2690bd9c1431f5"), "8.16.0-darwin_amd64": ("node-v8.16.0-darwin-x64.tar.gz", "node-v8.16.0-darwin-x64", "a6710b8af0862fab0ccdba0549dbcdad76b5f99070652e64f6a85158038fc9a6"), "8.16.0-linux_arm64": ("node-v8.16.0-linux-arm64.tar.xz", "node-v8.16.0-linux-arm64", "4583d1cb44ff8b51cbf0402a78f2fe086c13a6c900c20c8be14e3b0e28e34335"), "8.16.0-linux_amd64": ("node-v8.16.0-linux-x64.tar.xz", "node-v8.16.0-linux-x64", "e538ffaaf2f808c084e70f1a1d2ff5559cff892cfd56e0bb67d00b0a95fc3a7a"), "8.16.0-windows_amd64": ("node-v8.16.0-win-x64.zip", "node-v8.16.0-win-x64", "d6baa929bacb78b347b29ebb0263220ea649ce82f3cdfd3f0b41ac725d1bbba5"), "8.16.1-darwin_amd64": ("node-v8.16.1-darwin-x64.tar.gz", "node-v8.16.1-darwin-x64", "ef1cb93f03bca4b9528e5d3226bdf8efa135e4b12285eee1e4760da06bac631a"), "8.16.1-linux_arm64": ("node-v8.16.1-linux-arm64.tar.xz", "node-v8.16.1-linux-arm64", "0c61c6ae8a70d96ab19848a09b2010d29b806f2dd79177da22c743fd5e352a98"), "8.16.1-linux_amd64": ("node-v8.16.1-linux-x64.tar.xz", "node-v8.16.1-linux-x64", "22a2580569c787ea83960bda0eae5dfaf1fe79382a52ad5fa5cd3accb93a1818"), "8.16.1-windows_amd64": ("node-v8.16.1-win-x64.zip", "node-v8.16.1-win-x64", "396dc41740bca0355d11865780e2af8e88eb17581cd2c445ccaf29b862901ab8"), "8.16.2-darwin_amd64": ("node-v8.16.2-darwin-x64.tar.gz", "node-v8.16.2-darwin-x64", "359331120e83f0707219398fc543b05eee9476446ecce549c20c4d9c7c103d29"), "8.16.2-linux_arm64": ("node-v8.16.2-linux-arm64.tar.xz", "node-v8.16.2-linux-arm64", "5afe366affb05136d25e99ec97a7a1ee1b690cc26df43567af0509f36b45e682"), "8.16.2-linux_amd64": ("node-v8.16.2-linux-x64.tar.xz", "node-v8.16.2-linux-x64", "88617a293f5828cc94ee99c94a43fbea12b989e34fe643fc14885a14748a8da6"), "8.16.2-windows_amd64": ("node-v8.16.2-win-x64.zip", "node-v8.16.2-win-x64", "98c615221500434155a8a5aff5fe96cd000400f3e76858ca97e6624f1d15eb73"), "8.17.0-darwin_amd64": ("node-v8.17.0-darwin-x64.tar.gz", "node-v8.17.0-darwin-x64", "3117430fc93e9865e4a1842616cc98767b5d6987fd9d727c8be4068714570e16"), "8.17.0-linux_arm64": ("node-v8.17.0-linux-arm64.tar.xz", "node-v8.17.0-linux-arm64", "8318d1ee0265d84025ecbea76aaecd732974a6f4ac8492ddd84231cee77ba948"), "8.17.0-linux_amd64": ("node-v8.17.0-linux-x64.tar.xz", "node-v8.17.0-linux-x64", "b7f6dd77fb173c8c7c30d61d0702eefc236bba74398538aa77bfa2bb47bddce6"), "8.17.0-windows_amd64": ("node-v8.17.0-win-x64.zip", "node-v8.17.0-win-x64", "e95a63e81b27e78872c0efb9dd5809403014dbf9896035cc17adf51a350f88fa"), "9.0.0-darwin_amd64": ("node-v9.0.0-darwin-x64.tar.gz", "node-v9.0.0-darwin-x64", "40fe905e492deadbf84c46baba413294e516fa844ed8e68adb4117f8acabe9a9"), "9.0.0-linux_arm64": ("node-v9.0.0-linux-arm64.tar.xz", "node-v9.0.0-linux-arm64", "0250e13705259dcf736ac4216833c2ade459e3ade94d89af68bd98ded1783cb6"), "9.0.0-linux_amd64": ("node-v9.0.0-linux-x64.tar.xz", "node-v9.0.0-linux-x64", "8313d2f6d69dbea4cb860803a156f093041cbe352a843c06f9f05cab1f30e9cc"), "9.0.0-windows_amd64": ("node-v9.0.0-win-x64.zip", "node-v9.0.0-win-x64", "d25901007e7c48da3af162bc1917d5bdd78c7e3b9cb64f16f90c38b59ef7b412"), "9.1.0-darwin_amd64": ("node-v9.1.0-darwin-x64.tar.gz", "node-v9.1.0-darwin-x64", "8e180de9b3f6a79f09a391c89de54920bbf5375337d3e13c5bfcbce85af711ab"), "9.1.0-linux_arm64": ("node-v9.1.0-linux-arm64.tar.xz", "node-v9.1.0-linux-arm64", "37d329fa06b22e30243c503b64d9666d56abb6c0ce903251d4b43e7ad0833fb3"), "9.1.0-linux_amd64": ("node-v9.1.0-linux-x64.tar.xz", "node-v9.1.0-linux-x64", "b796ed115c97acd23211c294129b0a834ff3a6a0f583111443b89d2b24e0d4d9"), "9.1.0-windows_amd64": ("node-v9.1.0-win-x64.zip", "node-v9.1.0-win-x64", "f2e76f536ff4fedd9884684f0b1979e04d0fd1c2a65d7d1a5a013de885dd07b3"), "9.2.0-darwin_amd64": ("node-v9.2.0-darwin-x64.tar.gz", "node-v9.2.0-darwin-x64", "42f78982b8614f099bc70819db40074ff7c1c49d4bac71eca5ffe4120452f289"), "9.2.0-linux_arm64": ("node-v9.2.0-linux-arm64.tar.xz", "node-v9.2.0-linux-arm64", "1b5c44160b7bfc9e5d63697d63c82330ae3e6094ab48449bd958ebe0baef73f0"), "9.2.0-linux_amd64": ("node-v9.2.0-linux-x64.tar.xz", "node-v9.2.0-linux-x64", "ded9cef0243bbe8ac5a417be0c6471bed6ed82367714ccb23f79a5be0ba2bd5d"), "9.2.0-windows_amd64": ("node-v9.2.0-win-x64.zip", "node-v9.2.0-win-x64", "5e7feb536547c715155d772f90857239b37897c1a1a664809fd84a7aeae1a724"), "9.2.1-darwin_amd64": ("node-v9.2.1-darwin-x64.tar.gz", "node-v9.2.1-darwin-x64", "4263f3da0280e2decd3a2ab97672e6f718acdf704664a3f1251e4ea267ccc971"), "9.2.1-linux_arm64": ("node-v9.2.1-linux-arm64.tar.xz", "node-v9.2.1-linux-arm64", "09d362e2ed5f4af5e5dc2253bb4523d7bcb92135bcc11d9eb89ad8336229b756"), "9.2.1-linux_amd64": ("node-v9.2.1-linux-x64.tar.xz", "node-v9.2.1-linux-x64", "548d2959939235ca56c98740f64b64058e43d1499d760603b7941b7c37ad10fe"), "9.2.1-windows_amd64": ("node-v9.2.1-win-x64.zip", "node-v9.2.1-win-x64", "7b48ef7c718fe5748844f93101f9276a88ae1cf3c4c228f85306a6a266471b5b"), "9.3.0-darwin_amd64": ("node-v9.3.0-darwin-x64.tar.gz", "node-v9.3.0-darwin-x64", "0539601e67e9be6995d4ba4abe565a748e25699060631369f59166d5de43d21a"), "9.3.0-linux_arm64": ("node-v9.3.0-linux-arm64.tar.xz", "node-v9.3.0-linux-arm64", "11300e878220962adade33238dd6e55928ad6d1362e0daa1f12e272137e68c0b"), "9.3.0-linux_amd64": ("node-v9.3.0-linux-x64.tar.xz", "node-v9.3.0-linux-x64", "0424dd6fa059fc32e0b73f460cb587b92b13c7b0af56331bbdc53a52e43f24ea"), "9.3.0-windows_amd64": ("node-v9.3.0-win-x64.zip", "node-v9.3.0-win-x64", "53bceda79c8d5dd8a185221a5ea2fc8f2b24ed7e0c9c91d18f6016b3624ff096"), "9.4.0-darwin_amd64": ("node-v9.4.0-darwin-x64.tar.gz", "node-v9.4.0-darwin-x64", "fa271c6012d517851603829af2131b92dc7b03d6f167dcd197cb83468a4971e8"), "9.4.0-linux_arm64": ("node-v9.4.0-linux-arm64.tar.xz", "node-v9.4.0-linux-arm64", "ceed69e91723cb902fcf70e790d34147a91241509257c77a62327871dfad04fa"), "9.4.0-linux_amd64": ("node-v9.4.0-linux-x64.tar.xz", "node-v9.4.0-linux-x64", "6d331d75a39fc5292dd128ad83f6dd14bbbdcb84ba0dfe793fade833be5de95a"), "9.4.0-windows_amd64": ("node-v9.4.0-win-x64.zip", "node-v9.4.0-win-x64", "89d49d73eb92483af0133c97e57a5b521c523960c130c76727daa3412af7d5d8"), "9.5.0-darwin_amd64": ("node-v9.5.0-darwin-x64.tar.gz", "node-v9.5.0-darwin-x64", "bc5c6eb21a90dbcaf90479838416c90524fe6d47e92c928ef57d7e96a54eb5fe"), "9.5.0-linux_arm64": ("node-v9.5.0-linux-arm64.tar.xz", "node-v9.5.0-linux-arm64", "d6a98a51c032963014f606acc80babb456f3dc4c041534ca565f573a2382b253"), "9.5.0-linux_amd64": ("node-v9.5.0-linux-x64.tar.xz", "node-v9.5.0-linux-x64", "76dd38bb5a16a610894353228ef020653f81209a2e509d38aee78ace4410599e"), "9.5.0-windows_amd64": ("node-v9.5.0-win-x64.zip", "node-v9.5.0-win-x64", "2fd1c3865a34827af6b5d799aee68e011a16a637276cbf71e923c8bedd010ee8"), "9.6.0-darwin_amd64": ("node-v9.6.0-darwin-x64.tar.gz", "node-v9.6.0-darwin-x64", "4f2001075b724791bf652b5432073aaaaec03cb00b17cda054ab0a05126035fe"), "9.6.0-linux_arm64": ("node-v9.6.0-linux-arm64.tar.xz", "node-v9.6.0-linux-arm64", "eb10815b1d21e8f5111b90c15b19050279b44666d08a12f26906271e9f6b02dd"), "9.6.0-linux_amd64": ("node-v9.6.0-linux-x64.tar.xz", "node-v9.6.0-linux-x64", "24b8670c819278135b4b8851d880615dee8458fdb5f5390ed0c88c383377f5d3"), "9.6.0-windows_amd64": ("node-v9.6.0-win-x64.zip", "node-v9.6.0-win-x64", "5f1da1ef6ba776449900c931e7acc3b60e47f3080425bf0e6a1c0c5a07dbd6fd"), "9.6.1-darwin_amd64": ("node-v9.6.1-darwin-x64.tar.gz", "node-v9.6.1-darwin-x64", "de486bc479817df2df1f91468e85e5da228a19101422c0c9a27153c1d0013c6d"), "9.6.1-linux_arm64": ("node-v9.6.1-linux-arm64.tar.xz", "node-v9.6.1-linux-arm64", "6246c85acab2dd92463fa1c456db31a24cd7b50b3fa556c4976c5a91473b8c8f"), "9.6.1-linux_amd64": ("node-v9.6.1-linux-x64.tar.xz", "node-v9.6.1-linux-x64", "d38f1707faccc54fae3cb201c25b02c4a3474d2c409c64f2a1d08925b238f8ad"), "9.6.1-windows_amd64": ("node-v9.6.1-win-x64.zip", "node-v9.6.1-win-x64", "c8176d317945ce6221473d70999ec7e725f1c9a7477e991bd7c729026c46dffb"), "9.7.0-darwin_amd64": ("node-v9.7.0-darwin-x64.tar.gz", "node-v9.7.0-darwin-x64", "9730cf3c4c5e228d4855c3362b63dbe59041202d89ae30d7f5ca42f60f742c5d"), "9.7.0-linux_arm64": ("node-v9.7.0-linux-arm64.tar.xz", "node-v9.7.0-linux-arm64", "18bec2bec5e2496f33b4d9d7f3bea7411cdb5d108f390b5c1949ddeda0e61125"), "9.7.0-linux_amd64": ("node-v9.7.0-linux-x64.tar.xz", "node-v9.7.0-linux-x64", "5c7549ceeebdc7ac5acdcae5fffbeb9585e3b9e2003e70e116d9f19c768f73d1"), "9.7.0-windows_amd64": ("node-v9.7.0-win-x64.zip", "node-v9.7.0-win-x64", "a17796c9c888e88a9a086dc1a22cdd872d8e948fbf1e988a8132fef716990530"), "9.7.1-darwin_amd64": ("node-v9.7.1-darwin-x64.tar.gz", "node-v9.7.1-darwin-x64", "9ee0fa891787865b1eccc63ef56134e7de8bbf67b660a1dde9e309305a1dc3b0"), "9.7.1-linux_arm64": ("node-v9.7.1-linux-arm64.tar.xz", "node-v9.7.1-linux-arm64", "d9143c23f7aa171449229abd456c8a9e07dc1033a1e791132b3387d439e2475d"), "9.7.1-linux_amd64": ("node-v9.7.1-linux-x64.tar.xz", "node-v9.7.1-linux-x64", "33b3ecd0a1de891a4a2f3586f1c6498c95c1ecc15864a6e3f4f7826792850d99"), "9.7.1-windows_amd64": ("node-v9.7.1-win-x64.zip", "node-v9.7.1-win-x64", "8590ff193e645d7f719e25d9519633376c72cfa1b36192031705e0065b7d69b2"), "9.8.0-darwin_amd64": ("node-v9.8.0-darwin-x64.tar.gz", "node-v9.8.0-darwin-x64", "c95326d6d8d01e5d4fbf0ca1b1e4fc0d800d00516f38532cc887e17c78f2af07"), "9.8.0-linux_arm64": ("node-v9.8.0-linux-arm64.tar.xz", "node-v9.8.0-linux-arm64", "f3537d06f010e77739be073003fca0b477efec8a72d503dc5a1d942a19973b07"), "9.8.0-linux_amd64": ("node-v9.8.0-linux-x64.tar.xz", "node-v9.8.0-linux-x64", "9f631739b0a9b96b8760c42869e88592db9c3fda2425202bd8b2d09e6371133a"), "9.8.0-windows_amd64": ("node-v9.8.0-win-x64.zip", "node-v9.8.0-win-x64", "dd3971c126907a033f2bc93fdd29327af3ff5b9d151b3b90eb5db1832fe6df9e"), "9.9.0-darwin_amd64": ("node-v9.9.0-darwin-x64.tar.gz", "node-v9.9.0-darwin-x64", "15e71817fe172119d6f9e0166ab869f12c67bdb7371d27a78b0621c408239692"), "9.9.0-linux_arm64": ("node-v9.9.0-linux-arm64.tar.xz", "node-v9.9.0-linux-arm64", "06feb32656c91c3963270de18d4a7befe52d2d8c0fd78fbbb7792a881ffeec7a"), "9.9.0-linux_amd64": ("node-v9.9.0-linux-x64.tar.xz", "node-v9.9.0-linux-x64", "457151b4e6f27222232742ce44de1df73768a251309dddbfca2b385052ee977f"), "9.9.0-windows_amd64": ("node-v9.9.0-win-x64.zip", "node-v9.9.0-win-x64", "5186747c7cab6ff153e725c42446727e460d54e6c62353d5dc550046f5c05653"), "9.10.0-darwin_amd64": ("node-v9.10.0-darwin-x64.tar.gz", "node-v9.10.0-darwin-x64", "c4b98cc2f3c00b770f24549de112902b56d57be7963a1047cd116b357bc61569"), "9.10.0-linux_arm64": ("node-v9.10.0-linux-arm64.tar.xz", "node-v9.10.0-linux-arm64", "ba1d682aa1d5a12eeb39e7f51e4c67c6122b24482869ca2547c6f094eae90658"), "9.10.0-linux_amd64": ("node-v9.10.0-linux-x64.tar.xz", "node-v9.10.0-linux-x64", "b9bfffc03ef0e2c97d463619911552c7f5b1b8699de07bb913990a8b33800cb9"), "9.10.0-windows_amd64": ("node-v9.10.0-win-x64.zip", "node-v9.10.0-win-x64", "3f159de87fd987e7bf30bbffce722e2e5133c44fc847883053359e9b08d6fa88"), "9.10.1-darwin_amd64": ("node-v9.10.1-darwin-x64.tar.gz", "node-v9.10.1-darwin-x64", "ae2d9dfdd3fdb6a6fe588e5479a768ee502968f6544ac8ad6133cb2e05726793"), "9.10.1-linux_arm64": ("node-v9.10.1-linux-arm64.tar.xz", "node-v9.10.1-linux-arm64", "9b084b30e48a3a145fcc6cb282a1b46145b703c13a5eaee40afc7f9d82ad697b"), "9.10.1-linux_amd64": ("node-v9.10.1-linux-x64.tar.xz", "node-v9.10.1-linux-x64", "fc810056be2a0665d0f67b42d25e1b8442bd885d4893b3256a7cfe676bd973de"), "9.10.1-windows_amd64": ("node-v9.10.1-win-x64.zip", "node-v9.10.1-win-x64", "43bf882dec1550e00a039f77190a3e2a778354577e542563be4b5c205de17df1"), "9.11.0-darwin_amd64": ("node-v9.11.0-darwin-x64.tar.gz", "node-v9.11.0-darwin-x64", "e562cfc01a4d8e62c1d86f59cef4f00439b4ad279c97f95f76a39f4b3530b8e5"), "9.11.0-linux_arm64": ("node-v9.11.0-linux-arm64.tar.xz", "node-v9.11.0-linux-arm64", "8df1dd7a1ec298900cf699a7ee8e5f0f478075d0e4c4fd3fb6e3a4ad3527545c"), "9.11.0-linux_amd64": ("node-v9.11.0-linux-x64.tar.xz", "node-v9.11.0-linux-x64", "a4349420b74804b3404a4eea27341297968f61998b01f6504dbbad603700e944"), "9.11.0-windows_amd64": ("node-v9.11.0-win-x64.zip", "node-v9.11.0-win-x64", "6e7f586ece923fd71e36d5db80b6a6d731a2b156464058cb2304f6c0192637cb"), "9.11.1-darwin_amd64": ("node-v9.11.1-darwin-x64.tar.gz", "node-v9.11.1-darwin-x64", "7b1fb394aa41a62b477e36df16644bd383cc9084808511f6cd318b835a06aac6"), "9.11.1-linux_arm64": ("node-v9.11.1-linux-arm64.tar.xz", "node-v9.11.1-linux-arm64", "dba2de106fbde2013a204ca9fafdfe67c0426b4e63d186f888e59432ad2dbb03"), "9.11.1-linux_amd64": ("node-v9.11.1-linux-x64.tar.xz", "node-v9.11.1-linux-x64", "4d27a95d5c2f1c8ef99118794c9c4903e63963418d3e16ca7576760cff39879b"), "9.11.1-windows_amd64": ("node-v9.11.1-win-x64.zip", "node-v9.11.1-win-x64", "0a3566d57ccb7fed95d18fc6c3bc1552a1b1e4753f9bc6c5d45e04f325e1ee53"), "9.11.2-darwin_amd64": ("node-v9.11.2-darwin-x64.tar.gz", "node-v9.11.2-darwin-x64", "340993096108d1dc0e0b598560d87ec645fc94b0fc83a423c36343f2da45f4b8"), "9.11.2-linux_arm64": ("node-v9.11.2-linux-arm64.tar.xz", "node-v9.11.2-linux-arm64", "9a713a6f4473425b83bf67e13e4b3c9f1f683c996b913f1f6854d208996367b6"), "9.11.2-linux_amd64": ("node-v9.11.2-linux-x64.tar.xz", "node-v9.11.2-linux-x64", "a2e7fe4ee3c4e3f31e00dff241c92c2ed779a9f36735578603d2be966f938a4b"), "9.11.2-windows_amd64": ("node-v9.11.2-win-x64.zip", "node-v9.11.2-win-x64", "051db8f4d3c0503e3082173f16b25e2362de8f9a5e509c403992b2069d826c25"), "10.0.0-darwin_amd64": ("node-v10.0.0-darwin-x64.tar.gz", "node-v10.0.0-darwin-x64", "37447fdb5f5cbcf1307ca1661ed67e6e911e0e988c0cb6d15f92eebb211dce88"), "10.0.0-linux_arm64": ("node-v10.0.0-linux-arm64.tar.xz", "node-v10.0.0-linux-arm64", "18f626a967d72294d969bdf000ca80ef483a8bb75482a2c4d14f5e0141626611"), "10.0.0-linux_amd64": ("node-v10.0.0-linux-x64.tar.xz", "node-v10.0.0-linux-x64", "d57c391daef40e706ca71abeaf9d53271c9d0fdb9cd18a80f6296b04dbaf2d5a"), "10.0.0-windows_amd64": ("node-v10.0.0-win-x64.zip", "node-v10.0.0-win-x64", "a95d88e2c28cbcbadb1fa431ec0b686f196dda00d4a25b0829450dc8f5214ec3"), "10.1.0-darwin_amd64": ("node-v10.1.0-darwin-x64.tar.gz", "node-v10.1.0-darwin-x64", "383ef526e27b92113f8dc0dad406b771f6ecaf9e3fddd4f5357590a3cf543d7b"), "10.1.0-linux_arm64": ("node-v10.1.0-linux-arm64.tar.xz", "node-v10.1.0-linux-arm64", "01e252589cf1ce61d2aaa316895001eb24c90a48b04a0e4896de252d2840ffe9"), "10.1.0-linux_amd64": ("node-v10.1.0-linux-x64.tar.xz", "node-v10.1.0-linux-x64", "cb5860c0d3249330d882fb8c6619c082cf3cda177536d4ed979388dde0034f22"), "10.1.0-windows_amd64": ("node-v10.1.0-win-x64.zip", "node-v10.1.0-win-x64", "8448bbd50731e98a4ed8bb4f3f3964170ff3a26418e9bcb3caf770faa9fb06d7"), "10.2.0-darwin_amd64": ("node-v10.2.0-darwin-x64.tar.gz", "node-v10.2.0-darwin-x64", "35fcc482d07218119ce5fde62620994324f03f8c4426dd680886c6844b62232a"), "10.2.0-linux_arm64": ("node-v10.2.0-linux-arm64.tar.xz", "node-v10.2.0-linux-arm64", "8f970be59a6a11f511a04ae1bd303746f0c5409498e062fb1d263d3c3c1093bd"), "10.2.0-linux_amd64": ("node-v10.2.0-linux-x64.tar.xz", "node-v10.2.0-linux-x64", "a6ef9adc824db795b36f81ad0856adc5c878395c4ce2af20f5ba7b76a1ca9982"), "10.2.0-windows_amd64": ("node-v10.2.0-win-x64.zip", "node-v10.2.0-win-x64", "7d7144d57b1b910d10f51d5445ae4306f10d3d9f45ca08b49e8777472993db51"), "10.2.1-darwin_amd64": ("node-v10.2.1-darwin-x64.tar.gz", "node-v10.2.1-darwin-x64", "6ffa149f67e8bd68d291d62591b6573146a65682affd99eefe2835a9c048d3ef"), "10.2.1-linux_arm64": ("node-v10.2.1-linux-arm64.tar.xz", "node-v10.2.1-linux-arm64", "6899cab91fd01af6b73183d23693120ff0de547601d01822b53647d0f5d934ee"), "10.2.1-linux_amd64": ("node-v10.2.1-linux-x64.tar.xz", "node-v10.2.1-linux-x64", "59ffaba5f54ea6a62ada1013a0cc1741c6e6fa790ab9ab2302a98932e7fb85d5"), "10.2.1-windows_amd64": ("node-v10.2.1-win-x64.zip", "node-v10.2.1-win-x64", "ebe78920d72b7a226a345653f3f718f99dc531add35157d37d229050f3685705"), "10.3.0-darwin_amd64": ("node-v10.3.0-darwin-x64.tar.gz", "node-v10.3.0-darwin-x64", "0bb5b7e3fe8cccda2abda958d1eb0408f1518a8b0cb58b75ade5d507cd5d6053"), "10.3.0-linux_arm64": ("node-v10.3.0-linux-arm64.tar.xz", "node-v10.3.0-linux-arm64", "6811b7b9807135902990508143605c0c758d07f7726092ed1b2e27cc60111bd0"), "10.3.0-linux_amd64": ("node-v10.3.0-linux-x64.tar.xz", "node-v10.3.0-linux-x64", "eb3c3e2585494699716ad3197c8eedf4003d3f110829b30c5a0dc34414c47423"), "10.3.0-windows_amd64": ("node-v10.3.0-win-x64.zip", "node-v10.3.0-win-x64", "65d586afb087406a2800d8e51f664c88b26d510f077b85a3b177a1bb79f73677"), "10.4.0-darwin_amd64": ("node-v10.4.0-darwin-x64.tar.gz", "node-v10.4.0-darwin-x64", "82b27983c990a6860e8d729e0b15acf9643ffca0eff282a926268849dfd2c3d2"), "10.4.0-linux_arm64": ("node-v10.4.0-linux-arm64.tar.xz", "node-v10.4.0-linux-arm64", "18d01e0937cdd05386f59f792613aac7b6614a37312ede0c299bd589584976e9"), "10.4.0-linux_amd64": ("node-v10.4.0-linux-x64.tar.xz", "node-v10.4.0-linux-x64", "ce2232578408f7d6bdc7d8bbb49d3416225fe68c52540ac23f4a6e0294d947f6"), "10.4.0-windows_amd64": ("node-v10.4.0-win-x64.zip", "node-v10.4.0-win-x64", "315fc4099902a71b634fee15e4e160a0780703c59a66e7e4542045f6f2b91451"), "10.4.1-darwin_amd64": ("node-v10.4.1-darwin-x64.tar.gz", "node-v10.4.1-darwin-x64", "c232241c97e1f4659186205d50b44132e62b61cdc517f1fb86905a21d03e9189"), "10.4.1-linux_arm64": ("node-v10.4.1-linux-arm64.tar.xz", "node-v10.4.1-linux-arm64", "c00b75a28eb69e4238c9d560f50da3652395ba7bfa6e325d5a2b0cd0926070f7"), "10.4.1-linux_amd64": ("node-v10.4.1-linux-x64.tar.xz", "node-v10.4.1-linux-x64", "6196daea2b291cdb865b3597e6b819b13068cb2c9dbf27cb150256c557a81082"), "10.4.1-windows_amd64": ("node-v10.4.1-win-x64.zip", "node-v10.4.1-win-x64", "70e0b9f0036f878884fdfc585c1001a439508d1d4e6448c4aced60274a2dc191"), "10.5.0-darwin_amd64": ("node-v10.5.0-darwin-x64.tar.gz", "node-v10.5.0-darwin-x64", "a85bda6ab91da8595e71736944cbd77c61afe05092217defd0fb74d9f77109f0"), "10.5.0-linux_arm64": ("node-v10.5.0-linux-arm64.tar.xz", "node-v10.5.0-linux-arm64", "28e6baa2a4ac5b0f0f5adf85489574038d0a4ca48efe76a4e5831b6b222652ba"), "10.5.0-linux_amd64": ("node-v10.5.0-linux-x64.tar.xz", "node-v10.5.0-linux-x64", "8b12be967f5962a8173dca235e1a6f642ee29dcf5fc27697004af898ffeca187"), "10.5.0-windows_amd64": ("node-v10.5.0-win-x64.zip", "node-v10.5.0-win-x64", "ce2b1f9976de64bcc0a5ce877edee0d29c4db1ebab5a7fd713afffd661e99e08"), "10.6.0-darwin_amd64": ("node-v10.6.0-darwin-x64.tar.gz", "node-v10.6.0-darwin-x64", "537efef0c6fd998502fa10baf82ee21edf513256cc73575991354e19442d0b69"), "10.6.0-linux_arm64": ("node-v10.6.0-linux-arm64.tar.xz", "node-v10.6.0-linux-arm64", "be37aade1c085093e276b5822a05233a1057bcafe77f5b9526dbdf622330c4bb"), "10.6.0-linux_amd64": ("node-v10.6.0-linux-x64.tar.xz", "node-v10.6.0-linux-x64", "cfd47380729f2451169b8900b3bd65e4b9db669d1d540613758cd2ededf7b5e6"), "10.6.0-windows_amd64": ("node-v10.6.0-win-x64.zip", "node-v10.6.0-win-x64", "0b58e0414d76e48432588910ea682f002ba69d7be88deb3355ceffb2fe472f6d"), "10.7.0-darwin_amd64": ("node-v10.7.0-darwin-x64.tar.gz", "node-v10.7.0-darwin-x64", "913473055605c8ae92f46923e6ac400133895aafe7766574fd46899bc6b0c5a4"), "10.7.0-linux_arm64": ("node-v10.7.0-linux-arm64.tar.xz", "node-v10.7.0-linux-arm64", "c23856b3123f9e2cfae3f8b0668019f83e9450ee78dede02a8d43031255b7ba0"), "10.7.0-linux_amd64": ("node-v10.7.0-linux-x64.tar.xz", "node-v10.7.0-linux-x64", "ad1d44cbe64ef44db5d8d42690a76dd186d6a6f71a3c3d38449757fe73135329"), "10.7.0-windows_amd64": ("node-v10.7.0-win-x64.zip", "node-v10.7.0-win-x64", "a0914d4c1fb82f51a03a4f57c66c9ce6a65ccd4f3237706042c55799843f4b14"), "10.8.0-darwin_amd64": ("node-v10.8.0-darwin-x64.tar.gz", "node-v10.8.0-darwin-x64", "b800d8b55c234b1f7d972e9464b00328a1caea5f86f94fdb5fc88ebbed7852b7"), "10.8.0-linux_arm64": ("node-v10.8.0-linux-arm64.tar.xz", "node-v10.8.0-linux-arm64", "0333da24d1fe54abac26b0a06437d3336c0fb4816b280507a9851ab3742ef2e4"), "10.8.0-linux_amd64": ("node-v10.8.0-linux-x64.tar.xz", "node-v10.8.0-linux-x64", "497f3b243d7374ee0fe9ab200b175868b172c3a22282cedc6d7fb0cad82471f0"), "10.8.0-windows_amd64": ("node-v10.8.0-win-x64.zip", "node-v10.8.0-win-x64", "f98575fb551d78691a6f74ca4f9c254bbd9fb62135e9ec0ab7ec8c40a03648b0"), "10.9.0-darwin_amd64": ("node-v10.9.0-darwin-x64.tar.gz", "node-v10.9.0-darwin-x64", "3c4fe75dacfcc495a432a7ba2dec9045cff359af2a5d7d0429c84a424ef686fc"), "10.9.0-linux_arm64": ("node-v10.9.0-linux-arm64.tar.xz", "node-v10.9.0-linux-arm64", "3d6aa717d98bbf901c5325a02a81048eb47212bdc44963ef8d59c6e52e987b7c"), "10.9.0-linux_amd64": ("node-v10.9.0-linux-x64.tar.xz", "node-v10.9.0-linux-x64", "c5acb8b7055ee0b6ac653dc4e458c5db45348cecc564b388f4ed1def84a329ff"), "10.9.0-windows_amd64": ("node-v10.9.0-win-x64.zip", "node-v10.9.0-win-x64", "6a75cdbb69d62ed242d6cbf0238a470bcbf628567ee339d4d098a5efcda2401e"), "10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e"), "10.10.0-linux_arm64": ("node-v10.10.0-linux-arm64.tar.xz", "node-v10.10.0-linux-arm64", "7d57961d18ea70b4e99906d87f9de1a2defc45a36fcd8cd84295e9ae5c4281da"), "10.10.0-linux_amd64": ("node-v10.10.0-linux-x64.tar.xz", "node-v10.10.0-linux-x64", "686d2c7b7698097e67bcd68edc3d6b5d28d81f62436c7cf9e7779d134ec262a9"), "10.10.0-windows_amd64": ("node-v10.10.0-win-x64.zip", "node-v10.10.0-win-x64", "70c46e6451798be9d052b700ce5dadccb75cf917f6bf0d6ed54344c856830cfb"), "10.11.0-darwin_amd64": ("node-v10.11.0-darwin-x64.tar.gz", "node-v10.11.0-darwin-x64", "32ad850a0e5cfdefc32d4267707abad05bd5c9eabb047e8ed9bf97faeffc52b6"), "10.11.0-linux_arm64": ("node-v10.11.0-linux-arm64.tar.xz", "node-v10.11.0-linux-arm64", "289302470520fd63e2a92a878869061dda557fe1aabfea2bd5ff88f7af76d98d"), "10.11.0-linux_amd64": ("node-v10.11.0-linux-x64.tar.xz", "node-v10.11.0-linux-x64", "c2eab149e7f0712a6a3eb672a76d657b049a3b3ae0c2edc2e0571df5049fe82c"), "10.11.0-windows_amd64": ("node-v10.11.0-win-x64.zip", "node-v10.11.0-win-x64", "78b2a7a4305aa108b9a82ac7586d7200ab51428c2b882d1318fb44ca300a8609"), "10.12.0-darwin_amd64": ("node-v10.12.0-darwin-x64.tar.gz", "node-v10.12.0-darwin-x64", "f275c901b9aeaacea2bf22648329c2e9ade5e1ff63a446b83446d5d4e19464cc"), "10.12.0-linux_arm64": ("node-v10.12.0-linux-arm64.tar.xz", "node-v10.12.0-linux-arm64", "b327deca4e380559c8c1fbacb9e668b49127ea998de4c8fe83912838cf786786"), "10.12.0-linux_amd64": ("node-v10.12.0-linux-x64.tar.xz", "node-v10.12.0-linux-x64", "4eba2e9a6db95745b769915d58e57df6ca6724ec1f023f76556fce30ceca2367"), "10.12.0-windows_amd64": ("node-v10.12.0-win-x64.zip", "node-v10.12.0-win-x64", "44c938cf1409562d25d23b7c6bce110b53cd2a73774bed573b2979f0d88f51f8"), "10.13.0-darwin_amd64": ("node-v10.13.0-darwin-x64.tar.gz", "node-v10.13.0-darwin-x64", "815a5d18516934a3963ace9f0574f7d41f0c0ce9186a19be3d89e039e57598c5"), "10.13.0-linux_arm64": ("node-v10.13.0-linux-arm64.tar.xz", "node-v10.13.0-linux-arm64", "1537ebe64dc34a2a9b8ab6254213079789e9d59ed0ed26987afb1da37b6a8f87"), "10.13.0-linux_amd64": ("node-v10.13.0-linux-x64.tar.xz", "node-v10.13.0-linux-x64", "0dc6dba645550b66f8f00541a428c29da7c3cde32fb7eda2eb626a9db3bbf08d"), "10.13.0-windows_amd64": ("node-v10.13.0-win-x64.zip", "node-v10.13.0-win-x64", "eb09c9e9677f1919ec1ca78623c09b2a718ec5388b72b7662d5c41e5f628a52c"), "10.14.0-darwin_amd64": ("node-v10.14.0-darwin-x64.tar.gz", "node-v10.14.0-darwin-x64", "dd044aa0ddeb5e32fefa80a13b33bafe3f7e0536e15fe93c1e81b052c2f1965c"), "10.14.0-linux_arm64": ("node-v10.14.0-linux-arm64.tar.xz", "node-v10.14.0-linux-arm64", "4d80efe675c40d6d3af697e17e33cad8af1caf50655276ca99d0c4ca8e2f2cf2"), "10.14.0-linux_amd64": ("node-v10.14.0-linux-x64.tar.xz", "node-v10.14.0-linux-x64", "5f576f9893e0335f0c1b071a42fdf8b3e302577ad6ea38237aaef08ad0ca898e"), "10.14.0-windows_amd64": ("node-v10.14.0-win-x64.zip", "node-v10.14.0-win-x64", "a3acbbdbbdb6ff6d5ae6e6f5ccea55aef83cfa54f52c080538edc3ac6326797b"), "10.14.1-darwin_amd64": ("node-v10.14.1-darwin-x64.tar.gz", "node-v10.14.1-darwin-x64", "91ebe7d6da8a40c72618ac9d0b0a8e224ae01febd3f5595b43b1a58190dcacb1"), "10.14.1-linux_arm64": ("node-v10.14.1-linux-arm64.tar.xz", "node-v10.14.1-linux-arm64", "c1ca91356b007cc7624c7a9e00f3b7bed8dd10aba959be5f55e4ff13da334828"), "10.14.1-linux_amd64": ("node-v10.14.1-linux-x64.tar.xz", "node-v10.14.1-linux-x64", "b65e735cdf61fb80f114c498c8955efe8e096e4b3e173281d68aa9d2c05b0f97"), "10.14.1-windows_amd64": ("node-v10.14.1-win-x64.zip", "node-v10.14.1-win-x64", "7d51aa233ad290eb916a4c3134815204eb34ecb0a001dcecc5ea57333030f303"), "10.14.2-darwin_amd64": ("node-v10.14.2-darwin-x64.tar.gz", "node-v10.14.2-darwin-x64", "5306da5db576d9c984167b4693600a2e3074cc5a701961279837753fa2139baa"), "10.14.2-linux_arm64": ("node-v10.14.2-linux-arm64.tar.xz", "node-v10.14.2-linux-arm64", "8493b30c99d697b24fbaa5bfb3b43108ab3e334ab674188b7b7982fef903aa04"), "10.14.2-linux_amd64": ("node-v10.14.2-linux-x64.tar.xz", "node-v10.14.2-linux-x64", "e43de13bf7bee440a106a844c1bc3a2adb8829fd58b857702c8f1838fdd02a2a"), "10.14.2-windows_amd64": ("node-v10.14.2-win-x64.zip", "node-v10.14.2-win-x64", "45841fe5ffe87378c748dcb9799507f6192c34117409b2c6c18480d112a337de"), "10.15.0-darwin_amd64": ("node-v10.15.0-darwin-x64.tar.gz", "node-v10.15.0-darwin-x64", "353402461c898c569658d0a963790476f4d9828cc6c9286d81617ee8afcba4e8"), "10.15.0-linux_arm64": ("node-v10.15.0-linux-arm64.tar.xz", "node-v10.15.0-linux-arm64", "77aa4a02c5471b6eb7ba935cbc6829889a27115353cff7226a208c08b654e972"), "10.15.0-linux_amd64": ("node-v10.15.0-linux-x64.tar.xz", "node-v10.15.0-linux-x64", "4ee8503c1133797777880ebf75dcf6ae3f9b894c66fd2d5da507e407064c13b5"), "10.15.0-windows_amd64": ("node-v10.15.0-win-x64.zip", "node-v10.15.0-win-x64", "c1dbc9372ad789cd21727cb5f63b4a44ed3eae216763959cff8e68e68c6fcfe1"), "10.15.1-darwin_amd64": ("node-v10.15.1-darwin-x64.tar.gz", "node-v10.15.1-darwin-x64", "327dcef4b61dead1ae04d2743d3390a2b7e6cc6c389c62cfcfeb0486c5a9f181"), "10.15.1-linux_arm64": ("node-v10.15.1-linux-arm64.tar.xz", "node-v10.15.1-linux-arm64", "0fb6d24972fd991f476a942b1b21aca5059f93b9302318c5883120445ee6cd54"), "10.15.1-linux_amd64": ("node-v10.15.1-linux-x64.tar.xz", "node-v10.15.1-linux-x64", "77db68544c7812e925b82ccc41cd4669fdeb191cea8e20053e3f0e86889c4fce"), "10.15.1-windows_amd64": ("node-v10.15.1-win-x64.zip", "node-v10.15.1-win-x64", "bb5bdc9363e4050c94b3f82888141b81630230f86e520abb7dde49081f1292b9"), "10.15.2-darwin_amd64": ("node-v10.15.2-darwin-x64.tar.gz", "node-v10.15.2-darwin-x64", "8bbb6c15a0572f493d33ef044d06ccd0ff7ead8daa67f9a32df3e863277568e8"), "10.15.2-linux_arm64": ("node-v10.15.2-linux-arm64.tar.xz", "node-v10.15.2-linux-arm64", "2978e82d85654505d732b40dfa58f21276d99712d5d001101eaf87100d350139"), "10.15.2-linux_amd64": ("node-v10.15.2-linux-x64.tar.xz", "node-v10.15.2-linux-x64", "c10eece562cfeef1627f0d2bde7dc0be810948f6bf9a932e30a8c3b425652015"), "10.15.2-windows_amd64": ("node-v10.15.2-win-x64.zip", "node-v10.15.2-win-x64", "d97cf4788ccea6deef037ce27c91cc1a814644b878311b71811ab04d0bb8c47f"), "10.15.3-darwin_amd64": ("node-v10.15.3-darwin-x64.tar.gz", "node-v10.15.3-darwin-x64", "7a5eaa1f69614375a695ccb62017248e5dcc15b0b8edffa7db5b52997cf992ba"), "10.15.3-linux_arm64": ("node-v10.15.3-linux-arm64.tar.xz", "node-v10.15.3-linux-arm64", "3d7abbf64bffb07c55168ca0f1c17be12b0d93affe9b6cadd39724649215fab9"), "10.15.3-linux_amd64": ("node-v10.15.3-linux-x64.tar.xz", "node-v10.15.3-linux-x64", "faddbe418064baf2226c2fcbd038c3ef4ae6f936eb952a1138c7ff8cfe862438"), "10.15.3-windows_amd64": ("node-v10.15.3-win-x64.zip", "node-v10.15.3-win-x64", "93c881fdc0455a932dd5b506a7a03df27d9fe36155c1d3f351ebfa4e20bf1c0d"), "10.16.0-darwin_amd64": ("node-v10.16.0-darwin-x64.tar.gz", "node-v10.16.0-darwin-x64", "6c009df1b724026d84ae9a838c5b382662e30f6c5563a0995532f2bece39fa9c"), "10.16.0-linux_arm64": ("node-v10.16.0-linux-arm64.tar.xz", "node-v10.16.0-linux-arm64", "ae2e74ab2f5dbff96bf0b7d8457004bf3538233916f8834740bbe2d5a35442e5"), "10.16.0-linux_amd64": ("node-v10.16.0-linux-x64.tar.xz", "node-v10.16.0-linux-x64", "1827f5b99084740234de0c506f4dd2202a696ed60f76059696747c34339b9d48"), "10.16.0-windows_amd64": ("node-v10.16.0-win-x64.zip", "node-v10.16.0-win-x64", "aa22cb357f0fb54ccbc06b19b60e37eefea5d7dd9940912675d3ed988bf9a059"), "10.16.1-darwin_amd64": ("node-v10.16.1-darwin-x64.tar.gz", "node-v10.16.1-darwin-x64", "328e61fdacfe2f6f1a049d57e248b3eafc0345747831323a14fe1edf98d9b3bb"), "10.16.1-linux_arm64": ("node-v10.16.1-linux-arm64.tar.xz", "node-v10.16.1-linux-arm64", "c46ba1a8e9b9c0490ae81f8b2b13d332ed6f5c86d172fa817f749042ab329b93"), "10.16.1-linux_amd64": ("node-v10.16.1-linux-x64.tar.xz", "node-v10.16.1-linux-x64", "127d9b2f485523805208f867fc513842570b29b4d6831773eeb6dd403a22ba9d"), "10.16.1-windows_amd64": ("node-v10.16.1-win-x64.zip", "node-v10.16.1-win-x64", "1ff8b26670e1b935b51f4b795728f29845c31a3c38b3220b4fe71fb139bc5623"), "10.16.2-darwin_amd64": ("node-v10.16.2-darwin-x64.tar.gz", "node-v10.16.2-darwin-x64", "21ee8bdb04909f553e97af7c6e41009e15d06b886dd3e2ca8a92ce3e0a148a09"), "10.16.2-linux_arm64": ("node-v10.16.2-linux-arm64.tar.xz", "node-v10.16.2-linux-arm64", "5fb2b7d3c2b6b40e237cdc172eabfac2e485ee309ac2bcfbff413de1ed79a59e"), "10.16.2-linux_amd64": ("node-v10.16.2-linux-x64.tar.xz", "node-v10.16.2-linux-x64", "406718dc2f3164b3d1981c36b68b70ea448fbbac29cefbe23ff286b3cd55f264"), "10.16.2-windows_amd64": ("node-v10.16.2-win-x64.zip", "node-v10.16.2-win-x64", "01654dc79d82e9f3c89d01c8cf1cdce68d3a9118dbe968ee86a3ffd6ee153567"), "10.16.3-darwin_amd64": ("node-v10.16.3-darwin-x64.tar.gz", "node-v10.16.3-darwin-x64", "6febc571e1543c2845fa919c6d06b36a24e4e142c91aedbe28b6ff7d296119e4"), "10.16.3-linux_arm64": ("node-v10.16.3-linux-arm64.tar.xz", "node-v10.16.3-linux-arm64", "8ee77bad022bd460bf2867a97bf56ce7ddc4aa2ace067e45995fb1721a958428"), "10.16.3-linux_amd64": ("node-v10.16.3-linux-x64.tar.xz", "node-v10.16.3-linux-x64", "d2271fd8cf997fa7447d638dfa92749ff18ca4b0d796bf89f2a82bf7800d5506"), "10.16.3-windows_amd64": ("node-v10.16.3-win-x64.zip", "node-v10.16.3-win-x64", "19aa47de7c5950d7bd71a1e878013b98d93871cc311d7185f5472e6d3f633146"), "10.17.0-darwin_amd64": ("node-v10.17.0-darwin-x64.tar.gz", "node-v10.17.0-darwin-x64", "9b96140ad74b217f216c83ddf50d1f70a4296576f6edbbbfb65d0f478015d9df"), "10.17.0-linux_arm64": ("node-v10.17.0-linux-arm64.tar.xz", "node-v10.17.0-linux-arm64", "3ab8ee2b5c9aa4d060c68667ddef70cc2960e12bcfe4a0f2de7ebc0f008bf13d"), "10.17.0-linux_amd64": ("node-v10.17.0-linux-x64.tar.xz", "node-v10.17.0-linux-x64", "2b49cd296f969ef0ffb7922719ffa6542bedb89d6c959a47c023d11ce222f5d6"), "10.17.0-windows_amd64": ("node-v10.17.0-win-x64.zip", "node-v10.17.0-win-x64", "e84a1f3685219811bb4662eb3e3b55abd0c764c24cd2b224ba31b3f9f162baf6"), "10.18.0-darwin_amd64": ("node-v10.18.0-darwin-x64.tar.gz", "node-v10.18.0-darwin-x64", "a7af53e3363e8ab654b97387bc7cf352dddb324562404c1d35fe10cba3f27e0f"), "10.18.0-linux_arm64": ("node-v10.18.0-linux-arm64.tar.xz", "node-v10.18.0-linux-arm64", "b2b34dd43ea3979890663afa270e09e09c219f046e39e8e439eeda2821cc9643"), "10.18.0-linux_amd64": ("node-v10.18.0-linux-x64.tar.xz", "node-v10.18.0-linux-x64", "eac160acfc2c5b6fca021baa9943341fea50859f19c7ccbd56669b1fe04e691e"), "10.18.0-windows_amd64": ("node-v10.18.0-win-x64.zip", "node-v10.18.0-win-x64", "56afcc9c191dfc99017725be92ac1331e23afb1930913446eb91852cb02a8687"), "10.18.1-darwin_amd64": ("node-v10.18.1-darwin-x64.tar.gz", "node-v10.18.1-darwin-x64", "2b2d3379420e626eee393cabf1c90bc55957ff5bb067b82a74eb2f92147d6757"), "10.18.1-linux_arm64": ("node-v10.18.1-linux-arm64.tar.xz", "node-v10.18.1-linux-arm64", "9a6203697e0087a1c909961481d579c76777df1df622921e4ce16198851f30fe"), "10.18.1-linux_amd64": ("node-v10.18.1-linux-x64.tar.xz", "node-v10.18.1-linux-x64", "8cc40f45c2c62529b15e83a6bbe0ac1febf57af3c5720df68067c96c0fddbbdf"), "10.18.1-windows_amd64": ("node-v10.18.1-win-x64.zip", "node-v10.18.1-win-x64", "fb27bb95c27c72f2e25d0c41309b606b2ae48ba0d6094a19f206ad1df9dc5e19"), "10.19.0-darwin_amd64": ("node-v10.19.0-darwin-x64.tar.gz", "node-v10.19.0-darwin-x64", "b16328570651be44213a2303c1f9515fc506e0a96a273806f71ed000e3ca3cb3"), "10.19.0-linux_arm64": ("node-v10.19.0-linux-arm64.tar.xz", "node-v10.19.0-linux-arm64", "77bdbf859fc38e6e860efd479b0a7b7b6bd3e7cb05337e5cc5638251eb5d3a59"), "10.19.0-linux_amd64": ("node-v10.19.0-linux-x64.tar.xz", "node-v10.19.0-linux-x64", "34127c7c6b1ba02d6d4dc3a926f38a5fb88bb37fc7f051349005ce331c7a53c6"), "10.19.0-windows_amd64": ("node-v10.19.0-win-x64.zip", "node-v10.19.0-win-x64", "210efd45a7f79cf4c350d8f575f990becdd3833cd922796a4c83b27996f5679e"), "10.20.0-darwin_amd64": ("node-v10.20.0-darwin-x64.tar.gz", "node-v10.20.0-darwin-x64", "c153832774afcae89a82efb55ed80557d1a41e1880638ad57128a9a3762d212f"), "10.20.0-linux_arm64": ("node-v10.20.0-linux-arm64.tar.xz", "node-v10.20.0-linux-arm64", "f3567924d6b7f0fa55c4ee0a7330ec0dcaeec557982794796d6b312e7053c674"), "10.20.0-linux_amd64": ("node-v10.20.0-linux-x64.tar.xz", "node-v10.20.0-linux-x64", "c5721a89feecc0e98d42386e171cb763c077f782033ddc998819edcf9d93b691"), "10.20.0-windows_amd64": ("node-v10.20.0-win-x64.zip", "node-v10.20.0-win-x64", "d266313fa22885a6ec76eea521fb8a1131b4d9fb3a57afb045a98301aeb7d24e"), "10.20.1-darwin_amd64": ("node-v10.20.1-darwin-x64.tar.gz", "node-v10.20.1-darwin-x64", "6437e364cd93be246ffb67dd40775cbb467bb8d28d8af4413123f478bb6234b9"), "10.20.1-linux_arm64": ("node-v10.20.1-linux-arm64.tar.xz", "node-v10.20.1-linux-arm64", "e33cafff94a6308916530b4b724bbc138399484d96f71b1c23677596bec268d0"), "10.20.1-linux_amd64": ("node-v10.20.1-linux-x64.tar.xz", "node-v10.20.1-linux-x64", "5e0b1fbc6cf8c2c34dc33d880670ee1bc1c1e931099de3796a96143a962c92ee"), "10.20.1-windows_amd64": ("node-v10.20.1-win-x64.zip", "node-v10.20.1-win-x64", "5e4ec0936c51047c218c0c164cc80283cd36ecd40e0a6979281d395c1be8ee10"), "10.21.0-darwin_amd64": ("node-v10.21.0-darwin-x64.tar.gz", "node-v10.21.0-darwin-x64", "596900700c4a0de0303bb4c378a1abcd63f31efc848704c5fbc1230de628577a"), "10.21.0-linux_arm64": ("node-v10.21.0-linux-arm64.tar.xz", "node-v10.21.0-linux-arm64", "3af40706ff0da7fe0baa4683ead6c74445405a2553e7373e627f24d19d4ac100"), "10.21.0-linux_amd64": ("node-v10.21.0-linux-x64.tar.xz", "node-v10.21.0-linux-x64", "1d3296763e46540047099e4910812e81c4899c0595f2d82474e2099c1e1603e2"), "10.21.0-windows_amd64": ("node-v10.21.0-win-x64.zip", "node-v10.21.0-win-x64", "03dddcdaccdb40978ddf15d189acdc20409d9a666636db2595118690ff83ce82"), "10.22.0-darwin_amd64": ("node-v10.22.0-darwin-x64.tar.gz", "node-v10.22.0-darwin-x64", "c7583a297ba9c6cfc03688a32776155d02fabf9ff45847c63b12a68d400f1dc1"), "10.22.0-linux_arm64": ("node-v10.22.0-linux-arm64.tar.xz", "node-v10.22.0-linux-arm64", "abacc6f37e8dfbe398843c7dc7b9bb7153ff6e653ad50e85d73d86088da48372"), "10.22.0-linux_amd64": ("node-v10.22.0-linux-x64.tar.xz", "node-v10.22.0-linux-x64", "ddf33e038c593d6df36b1dd4b25c1b6fa8230c615e6312ad33e80ef863e4a74f"), "10.22.0-windows_amd64": ("node-v10.22.0-win-x64.zip", "node-v10.22.0-win-x64", "931c2907450790f89aa178fa84c1adbd1f7cb7ab0a34f8bfb4af25640e8d4e06"), "11.0.0-darwin_amd64": ("node-v11.0.0-darwin-x64.tar.gz", "node-v11.0.0-darwin-x64", "f70e12d246ba35e88c5c08a195215c5c913ce66c9d95d0bd21cc1d3e69904279"), "11.0.0-linux_arm64": ("node-v11.0.0-linux-arm64.tar.xz", "node-v11.0.0-linux-arm64", "0d0c7013fd00a8e713c36aa96bcc268eeadbad2ce48d87e19849d66f4c618cad"), "11.0.0-linux_amd64": ("node-v11.0.0-linux-x64.tar.xz", "node-v11.0.0-linux-x64", "418b1a73bcafbf5dd3bc787f0440c2b4123dfecc2b239f5651f0256cb5ab606d"), "11.0.0-windows_amd64": ("node-v11.0.0-win-x64.zip", "node-v11.0.0-win-x64", "4dd3ef7f5c8181be39cd45476b22ed34b6da2bf77377b699384d426702f8c969"), "11.1.0-darwin_amd64": ("node-v11.1.0-darwin-x64.tar.gz", "node-v11.1.0-darwin-x64", "5d6b84d2b0fd6afee07c371bc815a9e4b6671b85bedcb38815310bd0f884d3c8"), "11.1.0-linux_arm64": ("node-v11.1.0-linux-arm64.tar.xz", "node-v11.1.0-linux-arm64", "cbba27e1c90701fbb9db66cc2c6cc3049aaf08adb16cabd0cad970b74cdaf6d3"), "11.1.0-linux_amd64": ("node-v11.1.0-linux-x64.tar.xz", "node-v11.1.0-linux-x64", "c70419674d932452017556080264de2b6d1105c112647dd1dd495b739456dd91"), "11.1.0-windows_amd64": ("node-v11.1.0-win-x64.zip", "node-v11.1.0-win-x64", "985e4edc758cb5f77f85cddda0155616b92f163b8d3842c542b1c8a395068418"), "11.2.0-darwin_amd64": ("node-v11.2.0-darwin-x64.tar.gz", "node-v11.2.0-darwin-x64", "cd17fafcdb21ae80fb94e455e63567c70b3bceedf982b93ae9e4aea411f6a6ea"), "11.2.0-linux_arm64": ("node-v11.2.0-linux-arm64.tar.xz", "node-v11.2.0-linux-arm64", "3e6c47a29b85030b4305bdc2e15cbe37e1b54a2338ce1790637384ce349ed1fd"), "11.2.0-linux_amd64": ("node-v11.2.0-linux-x64.tar.xz", "node-v11.2.0-linux-x64", "629a603443c275f8ecd851994b81a9c02a36343dbcbafc279cbecb9ccd9cf906"), "11.2.0-windows_amd64": ("node-v11.2.0-win-x64.zip", "node-v11.2.0-win-x64", "3440b2880b4e3b78c9c18865df263317e7d3c3e179dad960d526004dc7e6ba9a"), "11.3.0-darwin_amd64": ("node-v11.3.0-darwin-x64.tar.gz", "node-v11.3.0-darwin-x64", "54acc7bdeffae79fdd73f959712305aee1d8d487d56813b43cae96d151ec79db"), "11.3.0-linux_arm64": ("node-v11.3.0-linux-arm64.tar.xz", "node-v11.3.0-linux-arm64", "642cc3fc94a856ad6d09e76eaf869672bef925308afdad398a58f18eeaf4e4b8"), "11.3.0-linux_amd64": ("node-v11.3.0-linux-x64.tar.xz", "node-v11.3.0-linux-x64", "d37fb7fae8a185409bccf106e91d8ffa3450115852795512fc62e6da0b5e3dbb"), "11.3.0-windows_amd64": ("node-v11.3.0-win-x64.zip", "node-v11.3.0-win-x64", "b801e908ec36a07f06df388845e22e0b7f3cede7a4030896712c8ee28cdb3f05"), "11.4.0-darwin_amd64": ("node-v11.4.0-darwin-x64.tar.gz", "node-v11.4.0-darwin-x64", "05a515146d5bc397625f442a6ecbbc7f0d071a2a7efbf1e2b2ed46d728bc7b30"), "11.4.0-linux_arm64": ("node-v11.4.0-linux-arm64.tar.xz", "node-v11.4.0-linux-arm64", "c32e752e74794a4254ae4caa892b7beb3be60dba6851e8e5d637febfb659ee3a"), "11.4.0-linux_amd64": ("node-v11.4.0-linux-x64.tar.xz", "node-v11.4.0-linux-x64", "24d9be161e7fb28e761801639cb452ff223269ed53d967e5745b5c6391eb3fbd"), "11.4.0-windows_amd64": ("node-v11.4.0-win-x64.zip", "node-v11.4.0-win-x64", "30b84ab0101c8916694e6cd6c0ccb5182e4555da5e06deb080e906ef5b3893df"), "11.5.0-darwin_amd64": ("node-v11.5.0-darwin-x64.tar.gz", "node-v11.5.0-darwin-x64", "741abd58ac67b4bf8d2ef991a7487ea17e421b2248688b93be0d2f34886c6aa2"), "11.5.0-linux_arm64": ("node-v11.5.0-linux-arm64.tar.xz", "node-v11.5.0-linux-arm64", "3f1436c1de70b2e34f7a63a5af7e6b106a8ebe9289b3f7d045ac4a4856570164"), "11.5.0-linux_amd64": ("node-v11.5.0-linux-x64.tar.xz", "node-v11.5.0-linux-x64", "ada54407b505b7e6f516c753f0e49220917dd11efa5ee892d3252bdd65d4a54c"), "11.5.0-windows_amd64": ("node-v11.5.0-win-x64.zip", "node-v11.5.0-win-x64", "3692939b1bbd7ee8b0a967429eef6b1d45078c2f4fc289aae261ca5bde5a0607"), "11.6.0-darwin_amd64": ("node-v11.6.0-darwin-x64.tar.gz", "node-v11.6.0-darwin-x64", "c880063b112c48130dba8f7b058de61959ae46fddcfa363715571b22c1cbeb26"), "11.6.0-linux_arm64": ("node-v11.6.0-linux-arm64.tar.xz", "node-v11.6.0-linux-arm64", "956016db41f4f96f8e005d36c738d7c833442d09a970462552eb214027e0268a"), "11.6.0-linux_amd64": ("node-v11.6.0-linux-x64.tar.xz", "node-v11.6.0-linux-x64", "2251a6c5b332e7ea69bbefba11950cb6c27ba50fa700468711f729da6a6f5324"), "11.6.0-windows_amd64": ("node-v11.6.0-win-x64.zip", "node-v11.6.0-win-x64", "d230828c1cc9863c9768106ffee0320ba42049b594bd2689e430b872e8f0b2dd"), "11.7.0-darwin_amd64": ("node-v11.7.0-darwin-x64.tar.gz", "node-v11.7.0-darwin-x64", "873b47e6fc97aef2f73b0e8dde641967b2a84a3b63d1697b9d8813e14fb3b01c"), "11.7.0-linux_arm64": ("node-v11.7.0-linux-arm64.tar.xz", "node-v11.7.0-linux-arm64", "82b9726c6b367a43530f868f61b1b2a05c942d3decdf9d2e18b4a9bdf353c223"), "11.7.0-linux_amd64": ("node-v11.7.0-linux-x64.tar.xz", "node-v11.7.0-linux-x64", "b2a0a7dde17fe0da5f86ce5fea3da2861d652a5e702e2177ee62813ff86451c0"), "11.7.0-windows_amd64": ("node-v11.7.0-win-x64.zip", "node-v11.7.0-win-x64", "00834d16532f24583bf56d2baab03904b0220154cc712344be95e4d05c6234dd"), "11.8.0-darwin_amd64": ("node-v11.8.0-darwin-x64.tar.gz", "node-v11.8.0-darwin-x64", "fbb26b38f408c2f2324a5821062c16103f54de16d24f9f24c4e270a3a41f4832"), "11.8.0-linux_arm64": ("node-v11.8.0-linux-arm64.tar.xz", "node-v11.8.0-linux-arm64", "42b190c686cb8bafbdbf418a6c20c6785a23ba0f1a1a85af44595057a3d5e25e"), "11.8.0-linux_amd64": ("node-v11.8.0-linux-x64.tar.xz", "node-v11.8.0-linux-x64", "85ca19c495d5cac6acf6ee4a3c8dfb4489fb67fefc184c61eb4513eb5ef99a88"), "11.8.0-windows_amd64": ("node-v11.8.0-win-x64.zip", "node-v11.8.0-win-x64", "cd4db1b9e7ac29ed81d433f2de85582902670a121961aa3f350533d5b2fd44c6"), "11.9.0-darwin_amd64": ("node-v11.9.0-darwin-x64.tar.gz", "node-v11.9.0-darwin-x64", "1df3dd99d174bb8cb61cc8e2aa419a4998c7ada9454123c34991ce30632f1ef8"), "11.9.0-linux_arm64": ("node-v11.9.0-linux-arm64.tar.xz", "node-v11.9.0-linux-arm64", "f39baa8d212e9676bfa7f1601f94d789c6dc6b35caf440df6ec815d238978457"), "11.9.0-linux_amd64": ("node-v11.9.0-linux-x64.tar.xz", "node-v11.9.0-linux-x64", "9bc461fb7f5fd3344301abfda834160d5397a4e289f9749ab03ba0b7e9a4c853"), "11.9.0-windows_amd64": ("node-v11.9.0-win-x64.zip", "node-v11.9.0-win-x64", "c62c01436f632858fea0194d4168b483e1aa485c3fc72247add4899a103c2677"), "11.10.0-darwin_amd64": ("node-v11.10.0-darwin-x64.tar.gz", "node-v11.10.0-darwin-x64", "1956528c6f3934a97508e36a4855c154f40f1923ccd61e296d5a85679103e3a1"), "11.10.0-linux_arm64": ("node-v11.10.0-linux-arm64.tar.xz", "node-v11.10.0-linux-arm64", "60ed6caa90d8188a55f0dbc63f4aef263fb4863e036d32989b820a2e40582c66"), "11.10.0-linux_amd64": ("node-v11.10.0-linux-x64.tar.xz", "node-v11.10.0-linux-x64", "fe4c617aaf88b5228bce0341d1c77bbae2622d69eaa17a15b7d4bcc60c4777c5"), "11.10.0-windows_amd64": ("node-v11.10.0-win-x64.zip", "node-v11.10.0-win-x64", "c39e711aebe678455fa74edf6d8f6184d6d93e20f160197799040a0c17005dba"), "11.10.1-darwin_amd64": ("node-v11.10.1-darwin-x64.tar.gz", "node-v11.10.1-darwin-x64", "dea52b86f6875efae26fbb6d0269d9769da7ca69408b74b6ab724d4b64004b07"), "11.10.1-linux_arm64": ("node-v11.10.1-linux-arm64.tar.xz", "node-v11.10.1-linux-arm64", "b116e57906ed73c970d64e7518b08c6de236575c5cd8bf09f4c1bd668524a014"), "11.10.1-linux_amd64": ("node-v11.10.1-linux-x64.tar.xz", "node-v11.10.1-linux-x64", "414216a7e47dbfb77141dce7a4452901ae2cdb4cd0deef3ab3ab49e0b2111f82"), "11.10.1-windows_amd64": ("node-v11.10.1-win-x64.zip", "node-v11.10.1-win-x64", "80cf14abacbc6b636bc192f4eee49421f082f21cdaa9c1ea5995c38f8c1375e5"), "11.11.0-darwin_amd64": ("node-v11.11.0-darwin-x64.tar.gz", "node-v11.11.0-darwin-x64", "6b7c8d93096bf065de0d0a42e8f027c424172c82df6f015d3149a5dbfa03c1cc"), "11.11.0-linux_arm64": ("node-v11.11.0-linux-arm64.tar.xz", "node-v11.11.0-linux-arm64", "febb698e74264ec0ecc738c86347e6bfb5d27e33ed492a031626df988a5fb4f3"), "11.11.0-linux_amd64": ("node-v11.11.0-linux-x64.tar.xz", "node-v11.11.0-linux-x64", "ee09c7712e741f84948f76a72b651bf088e516c3f38569b9e6f30c38c026c262"), "11.11.0-windows_amd64": ("node-v11.11.0-win-x64.zip", "node-v11.11.0-win-x64", "154a5b7ca7033382743c4752fa465a5d9902f4abed4263a38ea3f41ffa113910"), "11.12.0-darwin_amd64": ("node-v11.12.0-darwin-x64.tar.gz", "node-v11.12.0-darwin-x64", "93d68c1af41d02b262b3383d69b46eb326707ec010b321ad5655b91c4956e783"), "11.12.0-linux_arm64": ("node-v11.12.0-linux-arm64.tar.xz", "node-v11.12.0-linux-arm64", "9e89838e290c9bb478351bd403707d0b741ec56021c379c9f6da515a4cd1064a"), "11.12.0-linux_amd64": ("node-v11.12.0-linux-x64.tar.xz", "node-v11.12.0-linux-x64", "1c6bb93a24eda832708c1c10ec20316e1e4f30b3cfca9c5ee5d446762414b116"), "11.12.0-windows_amd64": ("node-v11.12.0-win-x64.zip", "node-v11.12.0-win-x64", "68e5bca1d6dd6b3de20870e7c593f9a890c48d2c9c83e15034baad6f7c0da426"), "11.13.0-darwin_amd64": ("node-v11.13.0-darwin-x64.tar.gz", "node-v11.13.0-darwin-x64", "c1a8f94b4778dad2d9f513cfdf9091810dc733a2daf4fa7e03d49ad133415b5d"), "11.13.0-linux_arm64": ("node-v11.13.0-linux-arm64.tar.xz", "node-v11.13.0-linux-arm64", "0edb29004fdbb5808331e765b4adde8b025a13d6619f49fec60a14582aba9ed7"), "11.13.0-linux_amd64": ("node-v11.13.0-linux-x64.tar.xz", "node-v11.13.0-linux-x64", "c2ae3caced5f181df282a6974ab3f5e232b5decb821aa8ea8fe758b0e0528223"), "11.13.0-windows_amd64": ("node-v11.13.0-win-x64.zip", "node-v11.13.0-win-x64", "f3dafd1f19841244f8f12952f9919c0a2857f6920b11f2a89554b061cd5a4525"), "11.14.0-darwin_amd64": ("node-v11.14.0-darwin-x64.tar.gz", "node-v11.14.0-darwin-x64", "37b8db4f6700a4b5aa3b6d4283538753953f6293aff99866aa9a81038848a4d9"), "11.14.0-linux_arm64": ("node-v11.14.0-linux-arm64.tar.xz", "node-v11.14.0-linux-arm64", "3d463f3b48e1060027f8a552657de6f3ee4724d718d546aa4ea5c301ee4ed083"), "11.14.0-linux_amd64": ("node-v11.14.0-linux-x64.tar.xz", "node-v11.14.0-linux-x64", "89e2cb0effa9bf075ee8bb6d92a6a50f7ccfdad03dd687f52ecdfab91230f9a1"), "11.14.0-windows_amd64": ("node-v11.14.0-win-x64.zip", "node-v11.14.0-win-x64", "58a5d3316c04335ff3da2ce66b89f3cce86b1d1ca878d1d6d68478160c66dc12"), "11.15.0-darwin_amd64": ("node-v11.15.0-darwin-x64.tar.gz", "node-v11.15.0-darwin-x64", "e953b657b1049e1de509a3fd0700cfeecd175f75a0d141d71393aa0d71fa29a9"), "11.15.0-linux_arm64": ("node-v11.15.0-linux-arm64.tar.xz", "node-v11.15.0-linux-arm64", "e458aa4c69da9ca2ae566c8eb56dc8b36d573b415bfd8eebca4ff2229fc4983d"), "11.15.0-linux_amd64": ("node-v11.15.0-linux-x64.tar.xz", "node-v11.15.0-linux-x64", "17424aef198fa322b93c79217ce7e8cdd264fed40383abbbd3e63c305ce1d7d8"), "11.15.0-windows_amd64": ("node-v11.15.0-win-x64.zip", "node-v11.15.0-win-x64", "f3cef50acf566724a5ec5df7697fb527d7339cafdae6c7c406a39358aee6cdf8"), "12.0.0-darwin_amd64": ("node-v12.0.0-darwin-x64.tar.gz", "node-v12.0.0-darwin-x64", "92c81a284e909424b50dd01e175260b75bbbdb487fdfe1885229817187ea76bc"), "12.0.0-linux_arm64": ("node-v12.0.0-linux-arm64.tar.xz", "node-v12.0.0-linux-arm64", "2ac36aa51f76654a8914d41a32bd5c3d3213cba14eea84abd9919d022b5694b4"), "12.0.0-linux_amd64": ("node-v12.0.0-linux-x64.tar.xz", "node-v12.0.0-linux-x64", "7a5609167265954cfb912e4dc8f36e5469335b6be1bb11d60d8427f92c03f5f9"), "12.0.0-windows_amd64": ("node-v12.0.0-win-x64.zip", "node-v12.0.0-win-x64", "96ab5f9f61d75daf3fb1072930b6e9249f15b77bc3b3dca516ae8439dc1500fb"), "12.1.0-darwin_amd64": ("node-v12.1.0-darwin-x64.tar.gz", "node-v12.1.0-darwin-x64", "57c592b13940aa44611aec08e7b425f35565a2c95c51736f433cb36eb65105b7"), "12.1.0-linux_arm64": ("node-v12.1.0-linux-arm64.tar.xz", "node-v12.1.0-linux-arm64", "67805a7976bef30d0e12211f18a99c6de405931e493fd32f451512473661ee10"), "12.1.0-linux_amd64": ("node-v12.1.0-linux-x64.tar.xz", "node-v12.1.0-linux-x64", "331c43176a20e705c6f4fdb61c69fee44dd3c2c93a20410be2c13b4f8515ef7b"), "12.1.0-windows_amd64": ("node-v12.1.0-win-x64.zip", "node-v12.1.0-win-x64", "6dc3ef4a6b4ce527f187270a1b0c5560771126df487ab9ddc4c3cd3b37d57eb6"), "12.2.0-darwin_amd64": ("node-v12.2.0-darwin-x64.tar.gz", "node-v12.2.0-darwin-x64", "c72ae8a2b989138c6e6e9b393812502df8c28546a016cf24e7a82dd27e3838af"), "12.2.0-linux_arm64": ("node-v12.2.0-linux-arm64.tar.xz", "node-v12.2.0-linux-arm64", "42e4a5c6ad0b402e281daf46a27a269249bdb8b4e31ff8869701aaddac2cc8c4"), "12.2.0-linux_amd64": ("node-v12.2.0-linux-x64.tar.xz", "node-v12.2.0-linux-x64", "89059969861606e2a435ff2619c4df6f41c040120e507d9c4f03374353357307"), "12.2.0-windows_amd64": ("node-v12.2.0-win-x64.zip", "node-v12.2.0-win-x64", "c1e7fb3c1c15d8f2ab5c1db9c9662097f9c682164b3f7397955ccce946442c97"), "12.3.0-darwin_amd64": ("node-v12.3.0-darwin-x64.tar.gz", "node-v12.3.0-darwin-x64", "4a9faa038fb4e6e930a0fecd9818a4820b4ca91d1c45a1c1279fe49cdbd28160"), "12.3.0-linux_arm64": ("node-v12.3.0-linux-arm64.tar.xz", "node-v12.3.0-linux-arm64", "3d6e7046b938ff1f2535bdcc892a82abf44d875d1e96779cc3ea9a074ccfa200"), "12.3.0-linux_amd64": ("node-v12.3.0-linux-x64.tar.xz", "node-v12.3.0-linux-x64", "2ce2c7a4d7fe3c560415e8dcbc5905a66a8bf28e2a2b2cff7e7a4eeb5753015d"), "12.3.0-windows_amd64": ("node-v12.3.0-win-x64.zip", "node-v12.3.0-win-x64", "b36c9f9809c90ce704465f066861314d6e33176a5d45da14c1519c3e4f35063e"), "12.3.1-darwin_amd64": ("node-v12.3.1-darwin-x64.tar.gz", "node-v12.3.1-darwin-x64", "b9c979f63a356090d8ff88ed141fd856ad853165c73633794a9d3a060334378e"), "12.3.1-linux_arm64": ("node-v12.3.1-linux-arm64.tar.xz", "node-v12.3.1-linux-arm64", "88df7f2e0c4a58661bb79b637daa417929efc6c4d6a77bba42a5127c5c383257"), "12.3.1-linux_amd64": ("node-v12.3.1-linux-x64.tar.xz", "node-v12.3.1-linux-x64", "46f52868c0643fe0d167ce24c3c873880c8e1494276c89c07114fb099da4f75a"), "12.3.1-windows_amd64": ("node-v12.3.1-win-x64.zip", "node-v12.3.1-win-x64", "aac3c4543f846c7ebf63e1498dec7955119dffffe65722bd8c6d2124ed4ecbd7"), "12.4.0-darwin_amd64": ("node-v12.4.0-darwin-x64.tar.gz", "node-v12.4.0-darwin-x64", "aaff97d59cda775165ef966ae74e70f55f3267e86d735ed3740ae9bf1d40531e"), "12.4.0-linux_arm64": ("node-v12.4.0-linux-arm64.tar.xz", "node-v12.4.0-linux-arm64", "bb2e7eabebdceb52424516dabce94cb37f55419e6ed19493916843a323c423cd"), "12.4.0-linux_amd64": ("node-v12.4.0-linux-x64.tar.xz", "node-v12.4.0-linux-x64", "9aec6a2a50c1791704a6069cbda6da62781361e44814d024e8bbaaf0deb41c5e"), "12.4.0-windows_amd64": ("node-v12.4.0-win-x64.zip", "node-v12.4.0-win-x64", "ec8623e2528a35d3219200308e7ed41e24d4f7cd96530a4e6ac2513e44f7fad1"), "12.5.0-darwin_amd64": ("node-v12.5.0-darwin-x64.tar.gz", "node-v12.5.0-darwin-x64", "a9ba9f584f015f1705063c10dd8d84d43f5b09dc7ecf4ee3968ab1ff1fe5d2b5"), "12.5.0-linux_arm64": ("node-v12.5.0-linux-arm64.tar.xz", "node-v12.5.0-linux-arm64", "d43b71a97f5484d13b655a8a0c1b1c0fc7e83b3719063cc362fe557d6e26bd69"), "12.5.0-linux_amd64": ("node-v12.5.0-linux-x64.tar.xz", "node-v12.5.0-linux-x64", "37c0c539aae69370f3c014cc4947748ce45ac5fa560f9b085724f22029834b27"), "12.5.0-windows_amd64": ("node-v12.5.0-win-x64.zip", "node-v12.5.0-win-x64", "f1b426fcd39ffdfec5d8ba60c6842cc11e9f49269cd49bc34c4fcee0517ddf66"), "12.6.0-darwin_amd64": ("node-v12.6.0-darwin-x64.tar.gz", "node-v12.6.0-darwin-x64", "004b7992a2621eb35a47c94d258510ca5744b5a8072364f235dc7e3d4bff7457"), "12.6.0-linux_arm64": ("node-v12.6.0-linux-arm64.tar.xz", "node-v12.6.0-linux-arm64", "b7a6580f0c5406b990b3c9f0d91297b103e38e2752b8b745c4d15310a9dd79d1"), "12.6.0-linux_amd64": ("node-v12.6.0-linux-x64.tar.xz", "node-v12.6.0-linux-x64", "1ac14567e2be5562df209900e28430bd11575d985a85e8a6df2743428570de33"), "12.6.0-windows_amd64": ("node-v12.6.0-win-x64.zip", "node-v12.6.0-win-x64", "0c5ac670c5bb0ea0d389bb7269cb84104702826f791a1d057eae02cdb9eed717"), "12.7.0-darwin_amd64": ("node-v12.7.0-darwin-x64.tar.gz", "node-v12.7.0-darwin-x64", "1a76bea7f7ed8c5c921852269ddd1300c9baba2f1e3f0377200a22c22cdea177"), "12.7.0-linux_arm64": ("node-v12.7.0-linux-arm64.tar.xz", "node-v12.7.0-linux-arm64", "abc4500eff8437503d475726b8ac2ed3463d2982bd66925a782f91b7d96e31de"), "12.7.0-linux_amd64": ("node-v12.7.0-linux-x64.tar.xz", "node-v12.7.0-linux-x64", "95867fdcfd4f821d84b3dd9fab5803fb29e093e911f2ab3c7111bcaf8bd5b9da"), "12.7.0-windows_amd64": ("node-v12.7.0-win-x64.zip", "node-v12.7.0-win-x64", "68802316ca4eb4d72ec5f9ff837752a6ec8cd73537ad7c346f30899ee523f4b7"), "12.8.0-darwin_amd64": ("node-v12.8.0-darwin-x64.tar.gz", "node-v12.8.0-darwin-x64", "5229571a1736befd6426dc0a6907be416e9f5c24695e3ef275ed2ba70f496499"), "12.8.0-linux_arm64": ("node-v12.8.0-linux-arm64.tar.xz", "node-v12.8.0-linux-arm64", "9f22aff38a8622b05821129f69dbe90695e01166f55c8d2a39b6c6a5aef8c6a8"), "12.8.0-linux_amd64": ("node-v12.8.0-linux-x64.tar.xz", "node-v12.8.0-linux-x64", "b6a9ab2e6e872375e0e27eda0698820a64495b31b1beab36cc54f9876b3a2052"), "12.8.0-windows_amd64": ("node-v12.8.0-win-x64.zip", "node-v12.8.0-win-x64", "b295aedebde069c4148534a9dfb2394ceba28cf367ddd8204a27d69c095a9e00"), "12.8.1-darwin_amd64": ("node-v12.8.1-darwin-x64.tar.gz", "node-v12.8.1-darwin-x64", "caccf8b409af342e35672cc766430587664f88d01dab622a5de44c8be1336e44"), "12.8.1-linux_arm64": ("node-v12.8.1-linux-arm64.tar.xz", "node-v12.8.1-linux-arm64", "3707240c402aae0b5879ce1ba17b32ebd224d47f5147639c6881a1b71ce65383"), "12.8.1-linux_amd64": ("node-v12.8.1-linux-x64.tar.xz", "node-v12.8.1-linux-x64", "1c7cf61cb8fa98a76d92445823d6dd1649e985899e16900b39eacdd8cd4094f3"), "12.8.1-windows_amd64": ("node-v12.8.1-win-x64.zip", "node-v12.8.1-win-x64", "c81ecaa03dc882dde36087c854e4831c13d3eb237f262f9ce74ccc6f156684da"), "12.9.0-darwin_amd64": ("node-v12.9.0-darwin-x64.tar.gz", "node-v12.9.0-darwin-x64", "24c1f0c93e485961446814662db942f1b309d843fb4ecbe50466d9857a51b343"), "12.9.0-linux_arm64": ("node-v12.9.0-linux-arm64.tar.xz", "node-v12.9.0-linux-arm64", "f7f6f102d097d64eba26f84f2760597f9831886ef7d0db3cba88459847f2743d"), "12.9.0-linux_amd64": ("node-v12.9.0-linux-x64.tar.xz", "node-v12.9.0-linux-x64", "7110bdd16e397870142ff0e8d92d4a4502d43ec047d970c843a9a4e5f9e79283"), "12.9.0-windows_amd64": ("node-v12.9.0-win-x64.zip", "node-v12.9.0-win-x64", "b5f05deb31ac04b9c3a487542daf151e01c05017403a56ba443da623f36b153b"), "12.9.1-darwin_amd64": ("node-v12.9.1-darwin-x64.tar.gz", "node-v12.9.1-darwin-x64", "9aaf29d30056e2233fd15dfac56eec12e8342d91bb6c13d54fb5e599383dddb9"), "12.9.1-linux_arm64": ("node-v12.9.1-linux-arm64.tar.xz", "node-v12.9.1-linux-arm64", "b6d986faf3a77b6c353c344645c93f2a0e0436c43865e6c215a24301a076a11f"), "12.9.1-linux_amd64": ("node-v12.9.1-linux-x64.tar.xz", "node-v12.9.1-linux-x64", "680a1263c9f5f91adadcada549f0a9c29f1b26d09658d2b501c334c3f63719e5"), "12.9.1-windows_amd64": ("node-v12.9.1-win-x64.zip", "node-v12.9.1-win-x64", "6a4e54bda091bd02dbd8ff1b9f6671e036297da012a53891e3834d4bf4bed297"), "12.10.0-darwin_amd64": ("node-v12.10.0-darwin-x64.tar.gz", "node-v12.10.0-darwin-x64", "4c16d1f6454f5dc3977ad00cea123792b8d4e1d6d1bf42bbc82a4202039a5971"), "12.10.0-linux_arm64": ("node-v12.10.0-linux-arm64.tar.xz", "node-v12.10.0-linux-arm64", "fa1afb9e8cfd964867351b6dac6cd918784ff309291612251c4745aeb0b10e02"), "12.10.0-linux_amd64": ("node-v12.10.0-linux-x64.tar.xz", "node-v12.10.0-linux-x64", "e8d2e6b62dd8183dc59a139a9ca3edc7c419a0d3d92e90fea9cb0ad52489843a"), "12.10.0-windows_amd64": ("node-v12.10.0-win-x64.zip", "node-v12.10.0-win-x64", "de341476711c71f82d06fabcc9874c1ff9e865fd7274334d64a67b1e31a53fd0"), "12.11.0-darwin_amd64": ("node-v12.11.0-darwin-x64.tar.gz", "node-v12.11.0-darwin-x64", "a0fd5c1c9e67099f52b73c732aa52a878c6ff67f50ff0e94c2c5628a87455130"), "12.11.0-linux_arm64": ("node-v12.11.0-linux-arm64.tar.xz", "node-v12.11.0-linux-arm64", "d1126439ff6d079b682a7cd6308cb226afd247e5cb0f7cc60cfb0e609a096622"), "12.11.0-linux_amd64": ("node-v12.11.0-linux-x64.tar.xz", "node-v12.11.0-linux-x64", "c0dc88110ac3ee095e3d09077545435b72d4cd52e35c43cd3fa666cff7446d46"), "12.11.0-windows_amd64": ("node-v12.11.0-win-x64.zip", "node-v12.11.0-win-x64", "457157358bd029196d47865dee66f8c263a3a4a5a8cdd1c0a8cf43ac45e9eda3"), "12.11.1-darwin_amd64": ("node-v12.11.1-darwin-x64.tar.gz", "node-v12.11.1-darwin-x64", "7dd24ee6d81668e65ce1b77b4bb4cdaf517d8f80bb19740d286606028506970b"), "12.11.1-linux_arm64": ("node-v12.11.1-linux-arm64.tar.xz", "node-v12.11.1-linux-arm64", "12777294258da80410fd7d5cbed46ead5d3cabacf376ee10ddb9e1a335b114e7"), "12.11.1-linux_amd64": ("node-v12.11.1-linux-x64.tar.xz", "node-v12.11.1-linux-x64", "00f7a0b59ff38c1c74d81732df925aa5ac5788b58412437327421f796878793d"), "12.11.1-windows_amd64": ("node-v12.11.1-win-x64.zip", "node-v12.11.1-win-x64", "0bab4473cd2ba03511b8859ddf2202bb012d5c541f9d57b555a5bbbf101fcb35"), "12.12.0-darwin_amd64": ("node-v12.12.0-darwin-x64.tar.gz", "node-v12.12.0-darwin-x64", "14a98237e8859bc22695719dbc2e9db5529a33ada0c6c377df4dc27b5622ffbb"), "12.12.0-linux_arm64": ("node-v12.12.0-linux-arm64.tar.xz", "node-v12.12.0-linux-arm64", "ad536aba218df64d8e901b28985f4c5f72f634bf903c449b0c84929f6940853c"), "12.12.0-linux_amd64": ("node-v12.12.0-linux-x64.tar.xz", "node-v12.12.0-linux-x64", "e3a38dfaf1233a3c43c2528869af52e74575781984369a5b705c89d84dfa3ac2"), "12.12.0-windows_amd64": ("node-v12.12.0-win-x64.zip", "node-v12.12.0-win-x64", "930e7bcd2ae5bcb1d4163c2adf09a392ed0e9a824b069d19daeb4f9f3430a195"), "12.13.0-darwin_amd64": ("node-v12.13.0-darwin-x64.tar.gz", "node-v12.13.0-darwin-x64", "49a7374670a111b033ce16611b20fd1aafd3296bbc662b184fe8fb26a29c22cc"), "12.13.0-linux_arm64": ("node-v12.13.0-linux-arm64.tar.xz", "node-v12.13.0-linux-arm64", "d65b3ce27639f15ae22941e3ff98a1c900aa9049fcc15518038615b0676037d5"), "12.13.0-linux_amd64": ("node-v12.13.0-linux-x64.tar.xz", "node-v12.13.0-linux-x64", "7a57ef2cb3036d7eacd50ae7ba07245a28336a93652641c065f747adb2a356d9"), "12.13.0-windows_amd64": ("node-v12.13.0-win-x64.zip", "node-v12.13.0-win-x64", "6f920cebeecb4957b4ef0def6d9b04c49d4582864f8d1a207ce8d0665865781a"), "12.13.1-darwin_amd64": ("node-v12.13.1-darwin-x64.tar.gz", "node-v12.13.1-darwin-x64", "12d14c7fbd98876a163a2b7e0aeb13657dc3e967e993efaf2dcacbe475a285e8"), "12.13.1-linux_arm64": ("node-v12.13.1-linux-arm64.tar.xz", "node-v12.13.1-linux-arm64", "3aef0178a8ab74c8e5c133e23d1896e53ed5c273415d165a0e72e005f5467cba"), "12.13.1-linux_amd64": ("node-v12.13.1-linux-x64.tar.xz", "node-v12.13.1-linux-x64", "aca06db37589966829b1ef0f163a5859b156a1d8e51b415bf47590f667c30a25"), "12.13.1-windows_amd64": ("node-v12.13.1-win-x64.zip", "node-v12.13.1-win-x64", "db33fb758ba49b96d073311ef9e9134b51bf96246ffd938909b2e02c65a6e890"), "12.14.0-darwin_amd64": ("node-v12.14.0-darwin-x64.tar.gz", "node-v12.14.0-darwin-x64", "5f3170b346b29e6902c0ca7e0993e3d1b4b650615348aa866de17ad965377048"), "12.14.0-linux_arm64": ("node-v12.14.0-linux-arm64.tar.xz", "node-v12.14.0-linux-arm64", "733b4f71ccdf114038bbe0f20574a1e8f4f60b53d39caf445f518745596eadda"), "12.14.0-linux_amd64": ("node-v12.14.0-linux-x64.tar.xz", "node-v12.14.0-linux-x64", "82ae74ee0a204de7ebf7767eaa8e382518d9b49668dcbb5bd7fd003154445d1f"), "12.14.0-windows_amd64": ("node-v12.14.0-win-x64.zip", "node-v12.14.0-win-x64", "526f4b01ffb270bdd8213b58b38843fa3c88f03c89b1898c641bc0e32607913e"), "12.14.1-darwin_amd64": ("node-v12.14.1-darwin-x64.tar.gz", "node-v12.14.1-darwin-x64", "0be10a28737527a1e5e3784d3ad844d742fe8b0718acd701fd48f718fd3af78f"), "12.14.1-linux_arm64": ("node-v12.14.1-linux-arm64.tar.xz", "node-v12.14.1-linux-arm64", "6cd28a5e6340f596aec8dbfd6720f444f011e6b9018622290a60dbd17f9baff6"), "12.14.1-linux_amd64": ("node-v12.14.1-linux-x64.tar.xz", "node-v12.14.1-linux-x64", "07cfcaa0aa9d0fcb6e99725408d9e0b07be03b844701588e3ab5dbc395b98e1b"), "12.14.1-windows_amd64": ("node-v12.14.1-win-x64.zip", "node-v12.14.1-win-x64", "1f96ccce3ba045ecea3f458e189500adb90b8bc1a34de5d82fc10a5bf66ce7e3"), "12.15.0-darwin_amd64": ("node-v12.15.0-darwin-x64.tar.gz", "node-v12.15.0-darwin-x64", "b6449cec39ac15b37abe4e59ef0eae50dcdfbf060c5276a01cc590f2a3372b7d"), "12.15.0-linux_arm64": ("node-v12.15.0-linux-arm64.tar.xz", "node-v12.15.0-linux-arm64", "c582cb65a0ec7f648618d3d33b4f87c374a3f930518b57eca1693828c965d6e5"), "12.15.0-linux_amd64": ("node-v12.15.0-linux-x64.tar.xz", "node-v12.15.0-linux-x64", "63df953deb091c1500e1044bef01d1953117970e757e74e90d915e1a4a0d1c9c"), "12.15.0-windows_amd64": ("node-v12.15.0-win-x64.zip", "node-v12.15.0-win-x64", "48b29cab597962f12b0aac081522e6192bc8642c582cd0fc1bf51557273888da"), "12.16.0-darwin_amd64": ("node-v12.16.0-darwin-x64.tar.gz", "node-v12.16.0-darwin-x64", "af3b9bbfdd9ae1b46390e7deeb77a2c1d8dbc6fb4171bbb0cfe8686fc1ecef1d"), "12.16.0-linux_arm64": ("node-v12.16.0-linux-arm64.tar.xz", "node-v12.16.0-linux-arm64", "f2d97187bd8d3175bf6266193107a030bfb827003d57ba6dd21de16aa622548d"), "12.16.0-linux_amd64": ("node-v12.16.0-linux-x64.tar.xz", "node-v12.16.0-linux-x64", "e8c38659540766db9d85bd7325ba8cce8ded56204f84507f73fdb41a26d9bd73"), "12.16.0-windows_amd64": ("node-v12.16.0-win-x64.zip", "node-v12.16.0-win-x64", "9a590dd064b491fbd40b366ae4a119fe6cef516a25fb4d78d7c2a64b37574da8"), "12.16.1-darwin_amd64": ("node-v12.16.1-darwin-x64.tar.gz", "node-v12.16.1-darwin-x64", "34895bce210ca4b3cf19cd480e6563588880dd7f5d798f3782e3650580d35920"), "12.16.1-linux_arm64": ("node-v12.16.1-linux-arm64.tar.xz", "node-v12.16.1-linux-arm64", "396c43ba507b8ec33c70cdc6f73b4a7c725bddb3f74a85a8b8ed77b436856fed"), "12.16.1-linux_amd64": ("node-v12.16.1-linux-x64.tar.xz", "node-v12.16.1-linux-x64", "b826753f14df9771609ffb8e7d2cc4cb395247cb704cf0cea0f04132d9cf3505"), "12.16.1-windows_amd64": ("node-v12.16.1-win-x64.zip", "node-v12.16.1-win-x64", "b93b73572c5e495154a9823d494de5729c77d1c83b041171154c4b5f3f76b590"), "12.16.2-darwin_amd64": ("node-v12.16.2-darwin-x64.tar.gz", "node-v12.16.2-darwin-x64", "483954e311a5ff649ddf32b473f635a58890790d284b5788bdd8d7ff850c6db2"), "12.16.2-linux_arm64": ("node-v12.16.2-linux-arm64.tar.xz", "node-v12.16.2-linux-arm64", "c88005467f6dcdb621d454b35ec39bb42e165c6a2e1cee74cabcdc01af307e81"), "12.16.2-linux_amd64": ("node-v12.16.2-linux-x64.tar.xz", "node-v12.16.2-linux-x64", "f94a6eb06e80ef2794ebf51a2baed0b89ed307d3196ab5579f16c0fa7cc62901"), "12.16.2-windows_amd64": ("node-v12.16.2-win-x64.zip", "node-v12.16.2-win-x64", "f34303a49384aee2e5daab5f248c5a719e850a9ebb19e7098fe2bfffb26efe03"), "12.16.3-darwin_amd64": ("node-v12.16.3-darwin-x64.tar.gz", "node-v12.16.3-darwin-x64", "0718812b3ab8e77e8d1354f4d10428ae99d78f721bdcceee527c4b592ea7fed0"), "12.16.3-linux_arm64": ("node-v12.16.3-linux-arm64.tar.xz", "node-v12.16.3-linux-arm64", "8311f513a7d1911200502dd3e00142cef56d600c851d5870f68d939802205b73"), "12.16.3-linux_amd64": ("node-v12.16.3-linux-x64.tar.xz", "node-v12.16.3-linux-x64", "1956e196e3c3c8ef5f0c45db76d7c1245af4ccdda2b7ab30a57ce91d6e165caa"), "12.16.3-windows_amd64": ("node-v12.16.3-win-x64.zip", "node-v12.16.3-win-x64", "d0bb0e0b1f1a948529ddd543e2cfe0bfe209eb843defc70217b3d2f84cbf3b78"), "12.17.0-darwin_amd64": ("node-v12.17.0-darwin-x64.tar.gz", "node-v12.17.0-darwin-x64", "8c3b9459462b8adaa10549f4da6a5ff5cdfaf7140a8a8020a87cc96d79022cc0"), "12.17.0-linux_arm64": ("node-v12.17.0-linux-arm64.tar.xz", "node-v12.17.0-linux-arm64", "54a0dbb203ff1700341d258cefa304bd31044bf0226e9e59a0de1128418cb5aa"), "12.17.0-linux_amd64": ("node-v12.17.0-linux-x64.tar.xz", "node-v12.17.0-linux-x64", "988653492a4f422fb112421c5c9d1c140146b665b480c2b24c66fffdd0b88a88"), "12.17.0-windows_amd64": ("node-v12.17.0-win-x64.zip", "node-v12.17.0-win-x64", "f3a64dc6ad48577f1f81521aa144c028beb7e353d0fcd05d7b420a72a84f50fc"), "12.18.0-darwin_amd64": ("node-v12.18.0-darwin-x64.tar.gz", "node-v12.18.0-darwin-x64", "11fe50e670315d2d3c46317d23f7a019f46a3d08b534fbadee9a1bc3d4f81852"), "12.18.0-linux_arm64": ("node-v12.18.0-linux-arm64.tar.xz", "node-v12.18.0-linux-arm64", "51b301102984ff73a74894396b774d00259bb3bb8c1de7c82674713acec7a214"), "12.18.0-linux_amd64": ("node-v12.18.0-linux-x64.tar.xz", "node-v12.18.0-linux-x64", "2febc2506c298048bfddf896056be6191c1f08716876d960a4990bd63a7fe05a"), "12.18.0-windows_amd64": ("node-v12.18.0-win-x64.zip", "node-v12.18.0-win-x64", "ca73a989eba5e863971cb600e5520cb4c5edf9c600fe8f76d9e4771ad03b5d08"), "12.18.1-darwin_amd64": ("node-v12.18.1-darwin-x64.tar.gz", "node-v12.18.1-darwin-x64", "80e1d644fe78838da47cd16de234b612c20e06ffe14447125db9622e381ed1ba"), "12.18.1-linux_arm64": ("node-v12.18.1-linux-arm64.tar.xz", "node-v12.18.1-linux-arm64", "b6683e6e887c6c44a3fe9ff419e80d36eaafed39eb2c2d1b04ee54b440a03217"), "12.18.1-linux_amd64": ("node-v12.18.1-linux-x64.tar.xz", "node-v12.18.1-linux-x64", "863f816967e297c9eb221ad3cf32521f7ac46fffc66750e60f159ed63809affa"), "12.18.1-windows_amd64": ("node-v12.18.1-win-x64.zip", "node-v12.18.1-win-x64", "93039ebfc7c5bfad168b015f77667757925070fff3ae84c3eb73348b3123a82a"), "12.18.2-darwin_amd64": ("node-v12.18.2-darwin-x64.tar.gz", "node-v12.18.2-darwin-x64", "6e6e7311943e4f3880db5038b8b8034a30469342fe436c8aaacf2997dfa305a6"), "12.18.2-linux_arm64": ("node-v12.18.2-linux-arm64.tar.xz", "node-v12.18.2-linux-arm64", "d7d3a05f36de9eb079b7b25e0fc1aaa0c960afdf36fb24b498f7303365eb945c"), "12.18.2-linux_amd64": ("node-v12.18.2-linux-x64.tar.xz", "node-v12.18.2-linux-x64", "b8dc634798ee783482c2ae1755bd7dff09d83fa7bb037cdc370b601d0a5e5cbb"), "12.18.2-windows_amd64": ("node-v12.18.2-win-x64.zip", "node-v12.18.2-win-x64", "91fdd5b5df16873c63541bc844c9eb66870d366b2076d114f9ab7528b5e2f9a3"), "12.18.3-darwin_amd64": ("node-v12.18.3-darwin-x64.tar.gz", "node-v12.18.3-darwin-x64", "af376caf114bdd5d7e566dbf7590e9077ffc01f9b2692eb2651f31d7219a30bb"), "12.18.3-linux_arm64": ("node-v12.18.3-linux-arm64.tar.xz", "node-v12.18.3-linux-arm64", "d330aab40029afc34f8b5d1abc2e67be233df4b31331cf08d538be2a666737bb"), "12.18.3-linux_amd64": ("node-v12.18.3-linux-x64.tar.xz", "node-v12.18.3-linux-x64", "b79e02e48d0a1ee4cd4ae138de97fda5413542f2a4f441a7d0e189697b8da563"), "12.18.3-windows_amd64": ("node-v12.18.3-win-x64.zip", "node-v12.18.3-win-x64", "1fcd30c09f0ac9fbecf45161519eff2cf621c199eef4663b1db41b3f2fef4041"), "13.0.0-darwin_amd64": ("node-v13.0.0-darwin-x64.tar.gz", "node-v13.0.0-darwin-x64", "612556a8c7e6b4cd08f6134b8afe5a05bf84c0121225fa9c542be1c98af04a35"), "13.0.0-linux_arm64": ("node-v13.0.0-linux-arm64.tar.xz", "node-v13.0.0-linux-arm64", "6ed882e17123861b5b81683de2b2c86be02c5916ef0beda04fd176329888fd12"), "13.0.0-linux_amd64": ("node-v13.0.0-linux-x64.tar.xz", "node-v13.0.0-linux-x64", "799d890f00a3a2a7415b813b286d32d38573df6525bc8ef80f40077cdd210d39"), "13.0.0-windows_amd64": ("node-v13.0.0-win-x64.zip", "node-v13.0.0-win-x64", "8ffcefde5e080d70790a9a2e1aab0724cc88b5526d5128b53fc59bf94f6ad5de"), "13.0.1-darwin_amd64": ("node-v13.0.1-darwin-x64.tar.gz", "node-v13.0.1-darwin-x64", "25621359a51ff218ecf4bb2ffc657815154230a967224f22b722840a2b9ad061"), "13.0.1-linux_arm64": ("node-v13.0.1-linux-arm64.tar.xz", "node-v13.0.1-linux-arm64", "ad6e051aede160d8be5cbab9c60a155b06a5696e8088d895e6eff3dd36f9a688"), "13.0.1-linux_amd64": ("node-v13.0.1-linux-x64.tar.xz", "node-v13.0.1-linux-x64", "d5657c19bb30b267bf2e0f2b61f6a96d8955aa30b69240f22d3fd2c65e123cf7"), "13.0.1-windows_amd64": ("node-v13.0.1-win-x64.zip", "node-v13.0.1-win-x64", "1a2552b630651e08e9027339f71a65fbe3944540f0875563ea25639a091e1f33"), "13.1.0-darwin_amd64": ("node-v13.1.0-darwin-x64.tar.gz", "node-v13.1.0-darwin-x64", "6501c1bcf2babb5b9c81dcff8b52021f726da8f6ee28df1637acade1a16c7d39"), "13.1.0-linux_arm64": ("node-v13.1.0-linux-arm64.tar.xz", "node-v13.1.0-linux-arm64", "646d597e6b0dc400429e46b703a5135c77bd71e653ea4c8254d0b60c17b6ec1d"), "13.1.0-linux_amd64": ("node-v13.1.0-linux-x64.tar.xz", "node-v13.1.0-linux-x64", "2eecb5a4b7975c3b406bee36b12c9a29e8bedf9553c88cad310b8f076db00881"), "13.1.0-windows_amd64": ("node-v13.1.0-win-x64.zip", "node-v13.1.0-win-x64", "d735e97bdeb7b74551b9d165c708a3fdea4dbb3801a65e70f6d6ae3539d48a03"), "13.2.0-darwin_amd64": ("node-v13.2.0-darwin-x64.tar.gz", "node-v13.2.0-darwin-x64", "2bcba358ef68ea21655728126c678063c60119e18e65d04f615d6b22dba8f7a5"), "13.2.0-linux_arm64": ("node-v13.2.0-linux-arm64.tar.xz", "node-v13.2.0-linux-arm64", "e6c4a5fe57585f69a20bd028275db31f43de421308e31d117f319b577210e527"), "13.2.0-linux_amd64": ("node-v13.2.0-linux-x64.tar.xz", "node-v13.2.0-linux-x64", "366df8a38b522a5899c3f48d8c9e359b3370495cf84867b2673dc10483adbdef"), "13.2.0-windows_amd64": ("node-v13.2.0-win-x64.zip", "node-v13.2.0-win-x64", "e2866a8f53c45bb544d7b00aed1e5fddbbd7071bd331b02e66a6ce7c38c6918c"), "13.3.0-darwin_amd64": ("node-v13.3.0-darwin-x64.tar.gz", "node-v13.3.0-darwin-x64", "187ea9028daa6d9abad9c1cbb4e12ba51427c3748da29eae616fa352c0f4cd49"), "13.3.0-linux_arm64": ("node-v13.3.0-linux-arm64.tar.xz", "node-v13.3.0-linux-arm64", "fb201a908bea36be828eee36a7cd898c67ad4ae6846982f393466e2b8b826c16"), "13.3.0-linux_amd64": ("node-v13.3.0-linux-x64.tar.xz", "node-v13.3.0-linux-x64", "b208393ae411bd55188e903171901765aaa8381c08155e4a7b34174737a1bc65"), "13.3.0-windows_amd64": ("node-v13.3.0-win-x64.zip", "node-v13.3.0-win-x64", "82e0f43aea81374a8028a7d3c9993245c4910ac95cd0f66ee5b29b940a6f3d93"), "13.4.0-darwin_amd64": ("node-v13.4.0-darwin-x64.tar.gz", "node-v13.4.0-darwin-x64", "4de08a89054416595228d6ff40fcf20c375d00556f2e95dfde8602cbb42c0b6e"), "13.4.0-linux_arm64": ("node-v13.4.0-linux-arm64.tar.xz", "node-v13.4.0-linux-arm64", "382d5fb2983ab55d495e42145e812b3859d2a311e426307fd373f47825d55fe9"), "13.4.0-linux_amd64": ("node-v13.4.0-linux-x64.tar.xz", "node-v13.4.0-linux-x64", "5cab49240c521efb80efd0a0bb3ba1071e5498c55ecbebd723d78648c91b1cc8"), "13.4.0-windows_amd64": ("node-v13.4.0-win-x64.zip", "node-v13.4.0-win-x64", "56de9ed20332cdf22bb9b048c3fb3977662ef2de9d2e8ac2d2a27d28e9be276f"), "13.5.0-darwin_amd64": ("node-v13.5.0-darwin-x64.tar.gz", "node-v13.5.0-darwin-x64", "3322c601dc032677e5b5f87f393d4b1d70073bcab24fe74378eff8eb49364001"), "13.5.0-linux_arm64": ("node-v13.5.0-linux-arm64.tar.xz", "node-v13.5.0-linux-arm64", "fe52f4e3a60a372138102da741e5b5d34310a74b3fc6f2000e4c254e3f0c4f51"), "13.5.0-linux_amd64": ("node-v13.5.0-linux-x64.tar.xz", "node-v13.5.0-linux-x64", "4d2b2cea13388658e95d8b2dc7ff918718155473ef6ef38928d92eb8cbbe210a"), "13.5.0-windows_amd64": ("node-v13.5.0-win-x64.zip", "node-v13.5.0-win-x64", "e286a84f2861b9f3c0290a9afbbecd09f303a39b2573af001ef8a4c1413eee7c"), "13.6.0-darwin_amd64": ("node-v13.6.0-darwin-x64.tar.gz", "node-v13.6.0-darwin-x64", "da13adb864777b322dda7af20410a9b0c63aa69de4b5574008d1e6910768bf69"), "13.6.0-linux_arm64": ("node-v13.6.0-linux-arm64.tar.xz", "node-v13.6.0-linux-arm64", "1f34ed8668207e03cb832763319a82b4c753839a3655207adc5bbe52f65e154a"), "13.6.0-linux_amd64": ("node-v13.6.0-linux-x64.tar.xz", "node-v13.6.0-linux-x64", "00f01315a867da16d1638f7a02966c608e344ac6c5b7d04d1fdae3138fa9d798"), "13.6.0-windows_amd64": ("node-v13.6.0-win-x64.zip", "node-v13.6.0-win-x64", "7fe37b34a4673a071bea52fcaf913ec422cf6fd79fd025bfb22de42ccc77f386"), "13.7.0-darwin_amd64": ("node-v13.7.0-darwin-x64.tar.gz", "node-v13.7.0-darwin-x64", "866ea9bdbd7b734c593af96b946397d9c7cb9c291aa8ea52a6a2af271b972169"), "13.7.0-linux_arm64": ("node-v13.7.0-linux-arm64.tar.xz", "node-v13.7.0-linux-arm64", "2823b199c7c4e6c547caf95139e28341444a5ffc52481a5ba704067291771579"), "13.7.0-linux_amd64": ("node-v13.7.0-linux-x64.tar.xz", "node-v13.7.0-linux-x64", "02578025b82de24f4cfb3ffeb3824990431d739d09220f2db9ef9f454f475470"), "13.7.0-windows_amd64": ("node-v13.7.0-win-x64.zip", "node-v13.7.0-win-x64", "26b41de81ead8f51de2964d7c7526533f46387ff436b61596e09d678bcd7503f"), "13.8.0-darwin_amd64": ("node-v13.8.0-darwin-x64.tar.gz", "node-v13.8.0-darwin-x64", "ae480e2b124cb55667763848b8ec0fde1bc35d5e0b76debe881034689a68eaea"), "13.8.0-linux_arm64": ("node-v13.8.0-linux-arm64.tar.xz", "node-v13.8.0-linux-arm64", "f1d4167a6911e42d836a5459c992cdaf35a03ab0700ea80831d7df5d706d1baf"), "13.8.0-linux_amd64": ("node-v13.8.0-linux-x64.tar.xz", "node-v13.8.0-linux-x64", "47a8cb675358f2ff534ad3d6709f14de0433f76d3af92cf389b8dcc78a1236ad"), "13.8.0-windows_amd64": ("node-v13.8.0-win-x64.zip", "node-v13.8.0-win-x64", "f198f3e4b120fc84b61d12e7222530c5bb9c6f864735bb41a8db1cf1b94a64c3"), "13.9.0-darwin_amd64": ("node-v13.9.0-darwin-x64.tar.gz", "node-v13.9.0-darwin-x64", "b2a5a539b9b2d1733bda301913c99d220968de801bf313b762fa932820ea797b"), "13.9.0-linux_arm64": ("node-v13.9.0-linux-arm64.tar.xz", "node-v13.9.0-linux-arm64", "c668afc06e4094b68ae758b823fc3244b34f0468fc0c2feee45278788989b8a1"), "13.9.0-linux_amd64": ("node-v13.9.0-linux-x64.tar.xz", "node-v13.9.0-linux-x64", "f1e093303468032a1ecb0e290e19b43bf7771d4efbf589560df0060149614272"), "13.9.0-windows_amd64": ("node-v13.9.0-win-x64.zip", "node-v13.9.0-win-x64", "ec0a55bb703906494e738cd3d09e3274b34f0a3fbe207b9e67502092ed017500"), "13.10.0-darwin_amd64": ("node-v13.10.0-darwin-x64.tar.gz", "node-v13.10.0-darwin-x64", "67269fb9061402e446bb61776be2e5d0ec330b5274326df77979698d05f503da"), "13.10.0-linux_arm64": ("node-v13.10.0-linux-arm64.tar.xz", "node-v13.10.0-linux-arm64", "adb145535d2e03fe508fa7a34897a130ba903d6f718a21cd29d1760e298f715b"), "13.10.0-linux_amd64": ("node-v13.10.0-linux-x64.tar.xz", "node-v13.10.0-linux-x64", "62081af005257d3db7ebd5a64b43f1a8e4a57bafd229be3acd7ce2704607eaac"), "13.10.0-windows_amd64": ("node-v13.10.0-win-x64.zip", "node-v13.10.0-win-x64", "d428b6d3e127716191fa6df630d03a25d3186fda1ede04a9a8d5c07e526dbb9e"), "13.10.1-darwin_amd64": ("node-v13.10.1-darwin-x64.tar.gz", "node-v13.10.1-darwin-x64", "a6a66fdc79e70267fc191f10ee045793240974e1268fdea6c2d28afbc1d635e8"), "13.10.1-linux_arm64": ("node-v13.10.1-linux-arm64.tar.xz", "node-v13.10.1-linux-arm64", "f73effcef784251e53b5e3938b8316c36bd49628c3588de7976e8569e560c12c"), "13.10.1-linux_amd64": ("node-v13.10.1-linux-x64.tar.xz", "node-v13.10.1-linux-x64", "69d69165282d88f321e751f03ee5d3370db65e5ca4c587af24994b12f31d4827"), "13.10.1-windows_amd64": ("node-v13.10.1-win-x64.zip", "node-v13.10.1-win-x64", "f9d0aac273a44dbd52dd8cdb3d6c684b68b860d128af58d77a0c08f39f51f229"), "13.11.0-darwin_amd64": ("node-v13.11.0-darwin-x64.tar.gz", "node-v13.11.0-darwin-x64", "2d87989fb1e0d425667c5ca9893cb3ecfb30cd3344d543870246d65f8d9b892f"), "13.11.0-linux_arm64": ("node-v13.11.0-linux-arm64.tar.xz", "node-v13.11.0-linux-arm64", "63ce9871b9802a1f021c84f282c63e1890524a32dc97d3e7a7ab8d52b4bde19e"), "13.11.0-linux_amd64": ("node-v13.11.0-linux-x64.tar.xz", "node-v13.11.0-linux-x64", "c127cf38f9a56d97646eb1fedb93712f304950c7143705de7180a701becc0fbb"), "13.11.0-windows_amd64": ("node-v13.11.0-win-x64.zip", "node-v13.11.0-win-x64", "dc93aa5a82988f741dca6f1869c7b1aeda6f339293d13a968279a6dc9fcc8dd0"), "13.12.0-darwin_amd64": ("node-v13.12.0-darwin-x64.tar.gz", "node-v13.12.0-darwin-x64", "1fe3103610e8eb66ae71872ea1b4e868a638292a4e7ad0e41976a9fe417a09c7"), "13.12.0-linux_arm64": ("node-v13.12.0-linux-arm64.tar.xz", "node-v13.12.0-linux-arm64", "2e8c12e575fcceb2d6f46eb3c50c6bfa98e91540bddaf91ca1c0fe739619ca0b"), "13.12.0-linux_amd64": ("node-v13.12.0-linux-x64.tar.xz", "node-v13.12.0-linux-x64", "95eb1188872e243323cbc31fc80048be3fdfdda91505c62c80c599281de357ed"), "13.12.0-windows_amd64": ("node-v13.12.0-win-x64.zip", "node-v13.12.0-win-x64", "de8445794ecbcfe895f4775417d1e2cc023e2212b1f5d4ff5cc0ed6875f7c911"), "13.13.0-darwin_amd64": ("node-v13.13.0-darwin-x64.tar.gz", "node-v13.13.0-darwin-x64", "28ae2abedafb250a9bbe706650fd79d2b25273f6445adcc1d85c777359dc5390"), "13.13.0-linux_arm64": ("node-v13.13.0-linux-arm64.tar.xz", "node-v13.13.0-linux-arm64", "eded8da4633134cae0766a2f6f3c2237f8e728df77895c85607acaca13216226"), "13.13.0-linux_amd64": ("node-v13.13.0-linux-x64.tar.xz", "node-v13.13.0-linux-x64", "41d60cda7422f53156711626d670f9b5079075b1ecc6736aea99319fe36c20a6"), "13.13.0-windows_amd64": ("node-v13.13.0-win-x64.zip", "node-v13.13.0-win-x64", "79f2a39c1047666f2bbf2efe53c069a38b8f6ef18d569bf338463aea1914b89d"), "13.14.0-darwin_amd64": ("node-v13.14.0-darwin-x64.tar.gz", "node-v13.14.0-darwin-x64", "a56eb353fecd45f731d74fc77c58dde052320c1bc272de9b03151fbaf962feaf"), "13.14.0-linux_arm64": ("node-v13.14.0-linux-arm64.tar.xz", "node-v13.14.0-linux-arm64", "e4736df097846bbe8195a185cc67ada3410a1f8993949e516bbf62b62198d2a7"), "13.14.0-linux_amd64": ("node-v13.14.0-linux-x64.tar.xz", "node-v13.14.0-linux-x64", "9ab808ba3872d58e827ea60a6e43a352f59361bc8eb36fe0327a587086b466f9"), "13.14.0-windows_amd64": ("node-v13.14.0-win-x64.zip", "node-v13.14.0-win-x64", "8c6e77fac5e911a2e70b6ca34804b3b59b6a3c685ab4e3b17756397df86063fa"), "14.0.0-darwin_amd64": ("node-v14.0.0-darwin-x64.tar.gz", "node-v14.0.0-darwin-x64", "4e50cec7aeef91c6d00d08a3bab938358da182984aa549c2aeab9868e3342f55"), "14.0.0-linux_arm64": ("node-v14.0.0-linux-arm64.tar.xz", "node-v14.0.0-linux-arm64", "29c612fcdb40133171959b269878138bbfe7723d46681f70e2017ee30134e7ad"), "14.0.0-linux_amd64": ("node-v14.0.0-linux-x64.tar.xz", "node-v14.0.0-linux-x64", "a2aaaa621074e1b56bb751bda53ce726319fac617587443371c0a7742481e5b6"), "14.0.0-windows_amd64": ("node-v14.0.0-win-x64.zip", "node-v14.0.0-win-x64", "e8f73d4f2e9935df929360c09ae932ceb316784a7450b256024af5d01fe29b75"), "14.1.0-darwin_amd64": ("node-v14.1.0-darwin-x64.tar.gz", "node-v14.1.0-darwin-x64", "7f08bd365df4e7a5625ad393257f48e8cd79f77391ab87a64426b0c6448dd226"), "14.1.0-linux_arm64": ("node-v14.1.0-linux-arm64.tar.xz", "node-v14.1.0-linux-arm64", "9dd3a4867f679f40075e2a364d3b3566702139274da9fcd59a182198ff7c7b52"), "14.1.0-linux_amd64": ("node-v14.1.0-linux-x64.tar.xz", "node-v14.1.0-linux-x64", "959fab0c8ae0830f1ab987699cd2941cab97169991630a2e0c99db7c144f9e42"), "14.1.0-windows_amd64": ("node-v14.1.0-win-x64.zip", "node-v14.1.0-win-x64", "1d3890d0d2f996cce57bcb0206e49b67233623e3cdb50eee77b8acc8f006b955"), "14.2.0-darwin_amd64": ("node-v14.2.0-darwin-x64.tar.gz", "node-v14.2.0-darwin-x64", "2447241aefe71dea8ba1552549e4df2e894d1ac12203630db3af63d4ae35c016"), "14.2.0-linux_arm64": ("node-v14.2.0-linux-arm64.tar.xz", "node-v14.2.0-linux-arm64", "4587d2c52cd348094bd46ee4ee8cdfeb549462ead9b4aadc9cfc3c5fc3ba7215"), "14.2.0-linux_amd64": ("node-v14.2.0-linux-x64.tar.xz", "node-v14.2.0-linux-x64", "468cbd92271da8c0cacaa3fa432a73a332e398bade8ad7359a94aa8ab3cc3cca"), "14.2.0-windows_amd64": ("node-v14.2.0-win-x64.zip", "node-v14.2.0-win-x64", "99085f45a894e257123d7c729113cc00ed1413df432dbdce5fe53867e7c53b11"), "14.3.0-darwin_amd64": ("node-v14.3.0-darwin-x64.tar.gz", "node-v14.3.0-darwin-x64", "fd6a44303646f28b7e7577de687c2681cb565bef534e84deef44202e7919d7f3"), "14.3.0-linux_arm64": ("node-v14.3.0-linux-arm64.tar.xz", "node-v14.3.0-linux-arm64", "53bb110ea135ae3c819f535373ce1b779e86c7aa49a9b93fc5f26969a72365d2"), "14.3.0-linux_amd64": ("node-v14.3.0-linux-x64.tar.xz", "node-v14.3.0-linux-x64", "17236db7b9447080b58c2e50937982c386fe8a60e644b8d7f23e546068a8acba"), "14.3.0-windows_amd64": ("node-v14.3.0-win-x64.zip", "node-v14.3.0-win-x64", "07bebc231dd8d773ab41cdcfbcb8b48e2336fbee20deb961b4300b9ba86afa04"), "14.4.0-darwin_amd64": ("node-v14.4.0-darwin-x64.tar.gz", "node-v14.4.0-darwin-x64", "d95eaa6950d67895b5cdd0e2f913d2c44034178234f0cb7436c3397b54f64023"), "14.4.0-linux_arm64": ("node-v14.4.0-linux-arm64.tar.xz", "node-v14.4.0-linux-arm64", "9c9f84589b7bc6a05ac12a137e5097a5adb20b5c63ae9e4e912942da2c06d99d"), "14.4.0-linux_amd64": ("node-v14.4.0-linux-x64.tar.xz", "node-v14.4.0-linux-x64", "d65a9a8a547bfe67c6c08dae733a3e5a846700d5377c5f150164cc6bb5f6a039"), "14.4.0-windows_amd64": ("node-v14.4.0-win-x64.zip", "node-v14.4.0-win-x64", "a4bac45af8252f6b677a79ed19be4913f4939c4509fb08b6f14f972597550bbe"), "14.5.0-darwin_amd64": ("node-v14.5.0-darwin-x64.tar.gz", "node-v14.5.0-darwin-x64", "47dfd88abcd4d6d6f7b7516c95645f9760ba9c93d04b51a92895584c945b2953"), "14.5.0-linux_arm64": ("node-v14.5.0-linux-arm64.tar.xz", "node-v14.5.0-linux-arm64", "c5ab67fbc73ea8858b4a989b6e92d6630decfc47c4703be7bcda3c6e39adff0b"), "14.5.0-linux_amd64": ("node-v14.5.0-linux-x64.tar.xz", "node-v14.5.0-linux-x64", "8b0235c318de87ecf8eec9a39e5c5df80757dbec571addda7123276dfcb34d5b"), "14.5.0-windows_amd64": ("node-v14.5.0-win-x64.zip", "node-v14.5.0-win-x64", "ab5728c85ece98210036fc9c38984fa2410a882dd99075b3d5bece58e4cc6ea2"), "14.6.0-darwin_amd64": ("node-v14.6.0-darwin-x64.tar.gz", "node-v14.6.0-darwin-x64", "7907a18605b900ce977ff4c7e67f7507f937f85738659865d31779c3b2990756"), "14.6.0-linux_arm64": ("node-v14.6.0-linux-arm64.tar.xz", "node-v14.6.0-linux-arm64", "853f2c99f0e5fa65e6f222821e29c9d1a49f2d358a97c1de080ddf5c74e4ec70"), "14.6.0-linux_amd64": ("node-v14.6.0-linux-x64.tar.xz", "node-v14.6.0-linux-x64", "b8a39b2dac8e200e96586356c5525d20b0b43dba8bf9f7eb4e8c2d5366be2bb2"), "14.6.0-windows_amd64": ("node-v14.6.0-win-x64.zip", "node-v14.6.0-win-x64", "57ea75a7ec70cc8158e6f9774f9728fb9e3d08212b1af3e206db2de46ca304ca"), "14.7.0-darwin_amd64": ("node-v14.7.0-darwin-x64.tar.gz", "node-v14.7.0-darwin-x64", "47c94ec84706fd6851db27af54abdab569941fcbfcdc28e386d8fa7d49c6a619"), "14.7.0-linux_arm64": ("node-v14.7.0-linux-arm64.tar.xz", "node-v14.7.0-linux-arm64", "12540328aeb5baa524a4e9c3b493b5eceb54cfa630f8bce64c19e674871e2f4b"), "14.7.0-linux_amd64": ("node-v14.7.0-linux-x64.tar.xz", "node-v14.7.0-linux-x64", "48929b03deb2915b64ba67355d2deffeed3c8df798b0c5f2b821ffc7a8116a23"), "14.7.0-windows_amd64": ("node-v14.7.0-win-x64.zip", "node-v14.7.0-win-x64", "a899693c9a31089a1eda14b1e613cf8cd60361e6e574b351551d832cf864c8f8"), "14.8.0-darwin_amd64": ("node-v14.8.0-darwin-x64.tar.gz", "node-v14.8.0-darwin-x64", "b6db32f2ff37475ae68502c76fc777a604cbc589bf57158fb4eed4db9ac5f62d"), "14.8.0-linux_arm64": ("node-v14.8.0-linux-arm64.tar.xz", "node-v14.8.0-linux-arm64", "0c66a6468c36552c00d45cff0eaa924240f3d2e625be0306f33f8b0d81af4224"), "14.8.0-linux_amd64": ("node-v14.8.0-linux-x64.tar.xz", "node-v14.8.0-linux-x64", "c7761fe5d56d045d1540b1f0bc8a20d7edf03e6fd695ee5fbffc1dd9416ccc75"), "14.8.0-windows_amd64": ("node-v14.8.0-win-x64.zip", "node-v14.8.0-win-x64", "848ca582bdf8b7fdc21a38d9f3887a45bdf6381b04549fc0f918852889157c9a")} + {} @@ -260,11 +262,13 @@ are supported by the node version being used. Custom list of yarn repositories to use. Dictionary mapping Yarn versions to their corresponding (filename, strip_prefix, sha256) tuples. + +By default, if this attribute has no items, we'll use a list of all public NodeJS releases. Dictionary: String -> List of strings optional - {"1.3.2": ("yarn-v1.3.2.tar.gz", "yarn-v1.3.2", "6cfe82e530ef0837212f13e45c1565ba53f5199eec2527b85ecbcd88bf26821d"), "1.5.1": ("yarn-v1.5.1.tar.gz", "yarn-v1.5.1", "cd31657232cf48d57fdbff55f38bfa058d2fb4950450bd34af72dac796af4de1"), "1.6.0": ("yarn-v1.6.0.tar.gz", "yarn-v1.6.0", "a57b2fdb2bfeeb083d45a883bc29af94d5e83a21c25f3fc001c295938e988509"), "1.9.2": ("yarn-v1.9.2.tar.gz", "yarn-v1.9.2", "3ad69cc7f68159a562c676e21998eb21b44138cae7e8fe0749a7d620cf940204"), "1.9.4": ("yarn-v1.9.4.tar.gz", "yarn-v1.9.4", "7667eb715077b4bad8e2a832e7084e0e6f1ba54d7280dc573c8f7031a7fb093e"), "1.12.1": ("yarn-v1.12.1.tar.gz", "yarn-v1.12.1", "09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d"), "1.12.3": ("yarn-v1.12.3.tar.gz", "yarn-v1.12.3", "02cd4b589ec22c4bdbd2bc5ebbfd99c5e99b07242ad68a539cb37896b93a24f2"), "1.13.0": ("yarn-v1.13.0.tar.gz", "yarn-v1.13.0", "125d40ebf621ebb08e3f66a618bd2cc5cd77fa317a312900a1ab4360ed38bf14"), "1.19.1": ("yarn-v1.19.1.tar.gz", "yarn-v1.19.1", "34293da6266f2aae9690d59c2d764056053ff7eebc56b80b8df05010c3da9343"), "1.22.4": ("yarn-v1.22.4.tar.gz", "yarn-v1.22.4", "bc5316aa110b2f564a71a3d6e235be55b98714660870c5b6b2d2d3f12587fb58")} + {} diff --git a/docs/README.md b/docs/README.md index 77684a4f4f..6bde22ba32 100644 --- a/docs/README.md +++ b/docs/README.md @@ -13,7 +13,7 @@ $ yarn stardoc To serve the docsite locally, use ```sh -$ bazel run //docs +$ bazel run --noincompatible_strict_action_env //docs ``` # Authoring the docsite diff --git a/docs/TypeScript.html b/docs/TypeScript.html index 9afc1b0c70..c9ef1628eb 100755 --- a/docs/TypeScript.html +++ b/docs/TypeScript.html @@ -483,7 +483,7 @@

    ts_config

    Allows a tsconfig.json file to extend another file.

    Normally, you just give a single tsconfig.json file as the tsconfig attribute -of a ts_library rule. However, if your tsconfig.json uses the extends +of a ts_library or ts_project rule. However, if your tsconfig.json uses the extends feature from TypeScript, then the Bazel implementation needs to know about that extended configuration file as well, to pass them both to the TypeScript compiler.

    @@ -521,9 +521,9 @@

    ts_config

    Additional tsconfig.json files referenced via extends List of labels - required + optional - + [] @@ -1157,8 +1157,8 @@

    Issues when running non-sandboxed

    ts_project(name, tsconfig, srcs, args, deps, extends, declaration, source_map, declaration_map, - composite, incremental, emit_declaration_only, tsc, validate, declaration_dir, out_dir, - root_dir, kwargs) + composite, incremental, emit_declaration_only, ts_build_info_file, tsc, validate, + declaration_dir, out_dir, root_dir, kwargs)

    PARAMETERS

    @@ -1186,9 +1186,9 @@

    Issues when running non-sandboxed

    tsconfig - Label of the tsconfig.json file to use for the compilation. + Label of the tsconfig.json file to use for the compilation, or a target that provides TsConfigInfo. - By default, we add .json to the name attribute. + By default, we assume the tsconfig file is named by adding .json to the name attribute. None @@ -1228,7 +1228,8 @@

    Issues when running non-sandboxed

    List of labels of tsconfig file(s) referenced in extends section of tsconfig. - Must include any tsconfig files "chained" by extends clauses. + Any tsconfig files "chained" by extends clauses must either be transitive deps of the TsConfigInfo + provided to the tsconfig attribute, or must be explicitly listed here. None @@ -1293,6 +1294,16 @@

    Issues when running non-sandboxed

    False + + + ts_build_info_file + + the user-specified value of tsBuildInfoFile from the tsconfig. + Helps Bazel to predict the path where the .tsbuildinfo output is written. + + + None + tsc diff --git a/docs/TypeScript.md b/docs/TypeScript.md index 7b4296238d..821d3073fe 100755 --- a/docs/TypeScript.md +++ b/docs/TypeScript.md @@ -375,7 +375,7 @@ BUILD files from your source code. Allows a tsconfig.json file to extend another file. Normally, you just give a single tsconfig.json file as the tsconfig attribute -of a ts_library rule. However, if your tsconfig.json uses the extends +of a ts_library or ts_project rule. However, if your tsconfig.json uses the extends feature from TypeScript, then the Bazel implementation needs to know about that extended configuration file as well, to pass them both to the TypeScript compiler. @@ -414,9 +414,9 @@ ts_config(name, deps Additional tsconfig.json files referenced via extends List of labels - required + optional - + [] @@ -1057,8 +1057,8 @@ observe these problems which require workarounds:
     ts_project(name, tsconfig, srcs, args, deps, extends, declaration, source_map, declaration_map,
    -           composite, incremental, emit_declaration_only, tsc, validate, declaration_dir, out_dir,
    -           root_dir, kwargs)
    +           composite, incremental, emit_declaration_only, ts_build_info_file, tsc, validate,
    +           declaration_dir, out_dir, root_dir, kwargs)
     
    **PARAMETERS** @@ -1086,9 +1086,9 @@ ts_project(name, t tsconfig - Label of the tsconfig.json file to use for the compilation. + Label of the tsconfig.json file to use for the compilation, or a target that provides TsConfigInfo. - By default, we add .json to the name attribute. + By default, we assume the tsconfig file is named by adding .json to the name attribute. None @@ -1128,7 +1128,8 @@ ts_project(name, t List of labels of tsconfig file(s) referenced in extends section of tsconfig. - Must include any tsconfig files "chained" by extends clauses. + Any tsconfig files "chained" by extends clauses must either be transitive deps of the TsConfigInfo + provided to the tsconfig attribute, or must be explicitly listed here. None @@ -1193,6 +1194,16 @@ ts_project(name, t False + + + ts_build_info_file + + the user-specified value of tsBuildInfoFile from the tsconfig. + Helps Bazel to predict the path where the .tsbuildinfo output is written. + + + None + tsc diff --git a/internal/node/node_repositories.bzl b/internal/node/node_repositories.bzl index 3d9c0a298d..e5c2480eed 100644 --- a/internal/node/node_repositories.bzl +++ b/internal/node/node_repositories.bzl @@ -25,6 +25,21 @@ load("//internal/node:node_versions.bzl", "NODE_VERSIONS") load("//third_party/github.com/bazelbuild/bazel-skylib:lib/paths.bzl", "paths") load("//toolchains/node:node_toolchain_configure.bzl", "node_toolchain_configure") +# @unsorted-dict-items +_YARN_VERSIONS = { + "1.3.2": ("yarn-v1.3.2.tar.gz", "yarn-v1.3.2", "6cfe82e530ef0837212f13e45c1565ba53f5199eec2527b85ecbcd88bf26821d"), + "1.5.1": ("yarn-v1.5.1.tar.gz", "yarn-v1.5.1", "cd31657232cf48d57fdbff55f38bfa058d2fb4950450bd34af72dac796af4de1"), + "1.6.0": ("yarn-v1.6.0.tar.gz", "yarn-v1.6.0", "a57b2fdb2bfeeb083d45a883bc29af94d5e83a21c25f3fc001c295938e988509"), + "1.9.2": ("yarn-v1.9.2.tar.gz", "yarn-v1.9.2", "3ad69cc7f68159a562c676e21998eb21b44138cae7e8fe0749a7d620cf940204"), + "1.9.4": ("yarn-v1.9.4.tar.gz", "yarn-v1.9.4", "7667eb715077b4bad8e2a832e7084e0e6f1ba54d7280dc573c8f7031a7fb093e"), + "1.12.1": ("yarn-v1.12.1.tar.gz", "yarn-v1.12.1", "09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d"), + "1.12.3": ("yarn-v1.12.3.tar.gz", "yarn-v1.12.3", "02cd4b589ec22c4bdbd2bc5ebbfd99c5e99b07242ad68a539cb37896b93a24f2"), + "1.13.0": ("yarn-v1.13.0.tar.gz", "yarn-v1.13.0", "125d40ebf621ebb08e3f66a618bd2cc5cd77fa317a312900a1ab4360ed38bf14"), + "1.19.1": ("yarn-v1.19.1.tar.gz", "yarn-v1.19.1", "34293da6266f2aae9690d59c2d764056053ff7eebc56b80b8df05010c3da9343"), + "1.22.4": ("yarn-v1.22.4.tar.gz", "yarn-v1.22.4", "bc5316aa110b2f564a71a3d6e235be55b98714660870c5b6b2d2d3f12587fb58"), + # When adding a new version. please update /docs/install.md +} + _DOC = """To be run in user's WORKSPACE to install rules_nodejs dependencies. This rule sets up node, npm, and yarn. The versions of these tools can be specified in one of three ways @@ -98,7 +113,7 @@ node_repositories( ) ``` -Will download yarn from https://github.com/yarnpkg/yarn/releases/download/v1.2.1/yarn-v1.12.1.tar.gz` +Will download yarn from https://github.com/yarnpkg/yarn/releases/download/v1.2.1/yarn-v1.12.1.tar.gz and expect the file to have sha256sum `09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d`. ### Using a local version @@ -110,7 +125,7 @@ It also ties your build to a single platform, preventing you from cross-compilin See the [the repositories documentation](repositories.html) for how to use the resulting repositories. -## Creating dependency installation scripts for manually-managed dependencies +### Manual install You can optionally pass a `package_json` array to node_repositories. This lets you use Bazel's version of yarn or npm, yet always run the package manager yourself. This is an advanced scenario you can use in place of the `npm_install` or `yarn_install` rules, but we don't recommend it, and might remove it in the future. @@ -128,11 +143,12 @@ Note that the dependency installation scripts will run in each subpackage indica # TODO(kgreenek): Add arm64 versions for all of these. _ATTRS = { "node_repositories": attr.string_list_dict( - default = NODE_VERSIONS, doc = """Custom list of node repositories to use A dictionary mapping NodeJS versions to sets of hosts and their corresponding (filename, strip_prefix, sha256) tuples. You should list a node binary for every platform users have, likely Mac, Windows, and Linux. + +By default, if this attribute has no items, we'll use a list of all public NodeJS releases. """, ), "node_urls": attr.string_list( @@ -182,23 +198,11 @@ are supported by the node version being used.""", doc = "the local path to a pre-installed yarn tool", ), "yarn_repositories": attr.string_list_dict( - # @unsorted-dict-items - default = { - "1.3.2": ("yarn-v1.3.2.tar.gz", "yarn-v1.3.2", "6cfe82e530ef0837212f13e45c1565ba53f5199eec2527b85ecbcd88bf26821d"), - "1.5.1": ("yarn-v1.5.1.tar.gz", "yarn-v1.5.1", "cd31657232cf48d57fdbff55f38bfa058d2fb4950450bd34af72dac796af4de1"), - "1.6.0": ("yarn-v1.6.0.tar.gz", "yarn-v1.6.0", "a57b2fdb2bfeeb083d45a883bc29af94d5e83a21c25f3fc001c295938e988509"), - "1.9.2": ("yarn-v1.9.2.tar.gz", "yarn-v1.9.2", "3ad69cc7f68159a562c676e21998eb21b44138cae7e8fe0749a7d620cf940204"), - "1.9.4": ("yarn-v1.9.4.tar.gz", "yarn-v1.9.4", "7667eb715077b4bad8e2a832e7084e0e6f1ba54d7280dc573c8f7031a7fb093e"), - "1.12.1": ("yarn-v1.12.1.tar.gz", "yarn-v1.12.1", "09bea8f4ec41e9079fa03093d3b2db7ac5c5331852236d63815f8df42b3ba88d"), - "1.12.3": ("yarn-v1.12.3.tar.gz", "yarn-v1.12.3", "02cd4b589ec22c4bdbd2bc5ebbfd99c5e99b07242ad68a539cb37896b93a24f2"), - "1.13.0": ("yarn-v1.13.0.tar.gz", "yarn-v1.13.0", "125d40ebf621ebb08e3f66a618bd2cc5cd77fa317a312900a1ab4360ed38bf14"), - "1.19.1": ("yarn-v1.19.1.tar.gz", "yarn-v1.19.1", "34293da6266f2aae9690d59c2d764056053ff7eebc56b80b8df05010c3da9343"), - "1.22.4": ("yarn-v1.22.4.tar.gz", "yarn-v1.22.4", "bc5316aa110b2f564a71a3d6e235be55b98714660870c5b6b2d2d3f12587fb58"), - # When adding a new version. please update /docs/install.md - }, doc = """Custom list of yarn repositories to use. Dictionary mapping Yarn versions to their corresponding (filename, strip_prefix, sha256) tuples. + +By default, if this attribute has no items, we'll use a list of all public NodeJS releases. """, ), "yarn_urls": attr.string_list( @@ -260,6 +264,11 @@ def _download_node(repository_ctx): node_version = repository_ctx.attr.node_version node_repositories = repository_ctx.attr.node_repositories + + # We insert our default value here, not on the attribute's default, so it isn't documented. + # The size of NODE_VERSIONS constant is huge and not useful to document. + if not node_repositories.items(): + node_repositories = NODE_VERSIONS node_urls = repository_ctx.attr.node_urls # Download node & npm @@ -298,6 +307,11 @@ def _download_yarn(repository_ctx): yarn_version = repository_ctx.attr.yarn_version yarn_repositories = repository_ctx.attr.yarn_repositories + + # We insert our default value here, not on the attribute's default, so it isn't documented. + # The size of _YARN_VERSIONS constant is huge and not useful to document. + if not yarn_repositories.items(): + yarn_repositories = _YARN_VERSIONS yarn_urls = repository_ctx.attr.yarn_urls if yarn_version in yarn_repositories: diff --git a/package.json b/package.json index be8eb79766..8c572bedfa 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,7 @@ "update-nodejs-versions": "node ./scripts/update-nodejs-versions.js > internal/node/node_versions.bzl", "format": "git-clang-format", "format-all": "clang-format --glob='{internal/**/,examples/**/}*.{js,ts}' -i", - "stardoc": "bazel build //docs && cp -f dist/bin/docs/*.md ./docs && cp -f dist/bin/docs/docs-out/*.html ./docs && cp -f dist/bin/docs/docs-out/css/*.css ./docs/css", + "stardoc": "bazel build --noincompatible_strict_action_env //docs && cp -f dist/bin/docs/*.md ./docs && cp -f dist/bin/docs/docs-out/*.html ./docs && cp -f dist/bin/docs/docs-out/css/*.css ./docs/css", "version": "conventional-changelog -p angular -i CHANGELOG.md -s && node ./scripts/on-version.js && bazel build //:release && node ./scripts/on-release.js && git stage version.bzl docs/install.md packages/create/index.js README.md CHANGELOG.md e2e/*/WORKSPACE examples/*/WORKSPACE", "postinstall": "patch-package && node internal/npm_install/test/postinstall.js" }, From 928a42f389dae49295c792879e5878f71b0355fd Mon Sep 17 00:00:00 2001 From: Matt Mackay Date: Wed, 26 Aug 2020 20:43:45 -0400 Subject: [PATCH 0831/1134] docs: fix spacing and link colours on rhs sidenav --- docs/css/_sidebar.scss | 27 ++++++++++++--------------- docs/css/main.css | 2 +- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/docs/css/_sidebar.scss b/docs/css/_sidebar.scss index 1990a94774..cc863fd0be 100644 --- a/docs/css/_sidebar.scss +++ b/docs/css/_sidebar.scss @@ -138,29 +138,26 @@ $sidebar-hover-border-color: #66bb6a; padding-left: 0; list-style-type: none; - ul { - padding-left: 0; + margin-top: .3rem; + line-height: 1.7; + font-size: $font-size-base * .95; + + a { + color: #444; } - li { - margin-top: .3rem; - line-height: 1.7; - font-size: $font-size-base * .95; - a { - color: #444; - } + ul { + padding-left: 0; } } .toc-h3 { padding-left: 1em; list-style-type: none; - - li { - line-height: 1.7; - a { - color: #666; - } + line-height: 1.7; + + a { + color: #666; } } } diff --git a/docs/css/main.css b/docs/css/main.css index 9d735d4735..5398c8f6b0 100755 --- a/docs/css/main.css +++ b/docs/css/main.css @@ -1 +1 @@ -html{position:relative;min-height:100%;font-size:100%}body{padding-top:50px;color:#000;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.5}a{color:#00701a;font-weight:500}a:hover,a:focus{color:#00d632}a code{color:#00701a}h1,h2,h3,h4,h5,h6{color:#000;margin-top:2rem;margin-bottom:1rem}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{color:#000;background:transparent}h1{font-size:31.5px;font-weight:700}h2{font-size:28px}h2 code{font-size:24px}h3{font-size:21px}h3 code{font-size:20px}h4{font-size:18.9px}h4 code{font-size:18px}h5{font-size:16.1px}h6{font-size:14px}p,li{font-size:14px;line-height:1.5}pre{padding:8px 16px;margin:8px 0;font-family:"Monaco","Source Code Pro",monospace;background-color:#eee;border:0;font-size:100%;line-height:20px;color:#000;border-radius:6px;box-shadow:1px 1px 5px #aaa}code{font-family:"Monaco","Source Code Pro",monospace;font-size:13px;background-color:#eee;color:#000}.btn-lg{font-size:14px;text-transform:uppercase}@media(min-width: 768px){.container{width:100%;max-width:100%}}@media(min-width: 992px){.content{max-width:100%;width:100%}}.content{overflow:auto;padding:40px 10px}.content p{line-height:22px;margin-bottom:1rem}.btn-success{border-radius:2px;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);border:0}.well{background-color:#eee;border-color:#eee;box-shadow:none}.vpad{padding-top:0px}.page-title-bar{background-color:#76d275;padding-top:20px;padding-bottom:20px}.page-title-bar h1,.page-title-bar h2,.page-title-bar h3,.page-title-bar h4,.page-title-bar h5,.page-title-bar h6{margin:8px 0 4px;color:#fff}.gsc-control-cse *,.gsc-control-cse *::before,.gsc-control-cse *::after{-webkit-box-sizing:content-box !important;-moz-box-sizing:content-box !important;box-sizing:content-box !important}dd>code>a,dl>dt>code>a{color:#000}dl>dt{margin-top:1.5rem;margin-bottom:.5rem}.footer{background-color:#424242;color:#fff;padding:20px}.footer .text-muted{color:#e0e0e0}.footer a{color:#e0e0e0}.footer a:hover,.footer a:focus{color:#fff;text-decoration:none}.navbar-inverse{margin-bottom:0;background-color:#43a047;border-bottom:1px solid #43a047}.navbar-inverse .navbar-brand .navbar-logo{height:22px}.navbar-inverse a.navbar-brand{color:#fff}.navbar-inverse a.navbar-brand:focus,.navbar-inverse a.navbar-brand:hover{color:#444;background-color:#43a047}.navbar-inverse .navbar-nav>li>a{color:#fff}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#444;background-color:#76d275}.navbar-inverse .navbar-nav>li>a.nav-icon{font-size:18px}.navbar-inverse .navbar-nav>li.active>a{background-color:#76d275}.navbar-inverse .navbar-nav>li.active>a:focus,.navbar-inverse .navbar-nav>li.active>a:hover{background-color:#76d275}.navbar-inverse .navbar-form{border-color:#43a047}.navbar-inverse .navbar-form .input-sm{margin-top:2px}.navbar-inverse .navbar-form input[type=search]{background-color:#76d275;border-color:#43a047}.navbar-inverse .navbar-form input[type=search]::placeholder{color:#fff}.navbar-inverse .navbar-form input[type=search]:focus,.navbar-inverse .navbar-form input[type=search]:active{background-color:#fff}.navbar-inverse .navbar-toggle{border:1px solid #43a047}.navbar-inverse .navbar-toggle.active,.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#76d275}.navbar-inverse .navbar-collapse{border-color:#43a047}@media(max-width: 768px){#cse-search-box{margin-top:0;margin-bottom:0}}.sidebar{height:99.9%;border-right:1px solid #dee2e6;background-color:rgba(67,160,71,.03);padding-top:40px;padding-left:1.5rem;margin-left:-15px}.sidebar li{font-size:13.3px}.sidebar h4{padding-right:1rem}.sidebar ul.sidebar-nav{list-style-type:none;padding:0}.sidebar ul.sidebar-nav li.sidebar-nav-heading{padding:10px 0;margin:0;display:block;font-size:16px;font-weight:300}.sidebar ul.sidebar-nav li ul li a{color:#495057}.sidebar ul.sidebar-nav li a{padding:4px 1rem 4px 0;display:block;color:#222;font-weight:400}.sidebar ul.sidebar-nav li a:focus{text-decoration:none}.sidebar ul.sidebar-nav li a:active,.sidebar ul.sidebar-nav li a:hover{border-right:4px solid #66bb6a;text-decoration:none}.sidebar ul.sidebar-nav li a .caret{float:right;margin-top:8px;margin-right:0px}.sidebar ul.sidebar-nav li.active a{border-right:4px solid #66bb6a;font-weight:700}.sidebar ul.sidebar-nav ul.sidebar-nav{padding-left:10px}.sidebar select{padding:3px 4px;border:2px solid #dee2e6;border-radius:3px;width:80%}.sidebar-toggle{margin-top:50px}@media(max-width: 991px){.right-sidebar{display:none}}@media(min-width: 992px){.sidebar-toggle{display:none}.sidebar.collapse{display:block}@supports(position: sticky){.sticky-sidebar{position:sticky;top:50px;height:100vh;overflow-y:auto}}}.right-sidebar{border-left:1px solid #dee2e6;padding-top:40px;padding-bottom:1rem}.right-sidebar .gh-links{padding-left:22px;list-style-type:none}.right-sidebar .gh-links li{padding-bottom:.4rem}.right-sidebar a{font-weight:400}.right-sidebar .toc-h2{padding-left:0;list-style-type:none}.right-sidebar .toc-h2 ul{padding-left:0}.right-sidebar .toc-h2 li{margin-top:.3rem;line-height:1.7;font-size:13.3px}.right-sidebar .toc-h2 li a{color:#444}.right-sidebar .toc-h3{padding-left:1em;list-style-type:none}.right-sidebar .toc-h3 li{line-height:1.7}.right-sidebar .toc-h3 li a{color:#666}.gh-edit{padding-top:0px}.gh-edit.default-hidden{visibility:hidden}caption{padding-top:5px;padding-bottom:5px;color:#fff;text-align:left}th{text-align:left}table{background-color:#fff;width:100%;max-width:100%;margin-bottom:1.5}table>thead>tr>th,table>thead>tr>td,table>tbody>tr>th,table>tbody>tr>td,table>tfoot>tr>th,table>tfoot>tr>td{padding:5px;line-height:1.5;vertical-align:top;border-top:1px solid #43a047}table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #43a047}table>caption+thead>tr:first-child>th,table>caption+thead>tr:first-child>td,table>colgroup+thead>tr:first-child>th,table>colgroup+thead>tr:first-child>td,table>thead:first-child>tr:first-child>th,table>thead:first-child>tr:first-child>td{border-top:0}table>tbody+tbody{border-top:2px solid #43a047}pre.rule-signature{white-space:normal;word-wrap:break-word;word-break:normal}colgroup .col-param{width:25%}colgroup .col-description{width:75%}.table-params{border:1px solid #81c784}.table-params thead>tr>th{color:#fff;border:1px solid #81c784;background-color:#81c784}.table-params tbody>tr>td{background-color:#e8f5e9;border:1px solid #81c784}.table-implicit{border:1px solid silver}.table-implicit thead>tr>th{color:#fff;border:1px solid silver;background-color:silver}.table-implicit tbody>tr>td{background-color:#f0f0f0;border:1px solid silver}.toc{border-left:4px solid #c8e6c9;padding-left:18px;margin-bottom:20px}.toc h1,.toc h2{font-size:24px;color:#757575;margin-bottom:12px}.toc ul{list-style:none;padding-left:0;margin-top:0}.toc ul li{line-height:36px;font-size:16px;font-weight:400}dt{margin-top:.5em}dd{margin-left:2em}.highlight .hll{background-color:#e0e0e0}.highlight{background:#eee;color:#212121}.highlight .c{color:#9e9e9e}.highlight .err{color:#f44336}.highlight .k{color:#9c27b0}.highlight .l{color:#ff9800}.highlight .n{color:#212121}.highlight .o{color:#009688}.highlight .p{color:#212121}.highlight .cm{color:#9e9e9e}.highlight .cp{color:#9e9e9e}.highlight .c1{color:#9e9e9e}.highlight .cs{color:#9e9e9e}.highlight .gd{color:#f44336}.highlight .ge{font-style:italic}.highlight .gh{color:#212121;font-weight:bold}.highlight .gi{color:#4caf50}.highlight .gp{color:#9e9e9e;font-weight:bold}.highlight .gs{font-weight:bold}.highlight .gu{color:#009688;font-weight:bold}.highlight .kc{color:#9c27b0}.highlight .kd{color:#9c27b0}.highlight .kn{color:#009688}.highlight .kp{color:#9c27b0}.highlight .kr{color:#9c27b0}.highlight .kt{color:#ffc107}.highlight .ld{color:#4caf50}.highlight .m{color:#ff9800}.highlight .s{color:#4caf50}.highlight .na{color:#2196f3}.highlight .nb{color:#212121}.highlight .nc{color:#ffc107}.highlight .no{color:#f44336}.highlight .nd{color:#009688}.highlight .ni{color:#212121}.highlight .ne{color:#f44336}.highlight .nf{color:#2196f3}.highlight .nl{color:#212121}.highlight .nn{color:#ffc107}.highlight .nx{color:#2196f3}.highlight .py{color:#212121}.highlight .nt{color:#009688}.highlight .nv{color:#f44336}.highlight .ow{color:#009688}.highlight .w{color:#212121}.highlight .mf{color:#ff9800}.highlight .mh{color:#ff9800}.highlight .mi{color:#ff9800}.highlight .mo{color:#ff9800}.highlight .sb{color:#4caf50}.highlight .sc{color:#212121}.highlight .sd{color:#9e9e9e}.highlight .s2{color:#4caf50}.highlight .se{color:#ff9800}.highlight .sh{color:#4caf50}.highlight .si{color:#ff9800}.highlight .sx{color:#4caf50}.highlight .sr{color:#4caf50}.highlight .s1{color:#4caf50}.highlight .ss{color:#4caf50}.highlight .bp{color:#212121}.highlight .vc{color:#f44336}.highlight .vg{color:#f44336}.highlight .vi{color:#f44336}.highlight .il{color:#ff9800}/*# sourceMappingURL=main.css.map */ +html{position:relative;min-height:100%;font-size:100%}body{padding-top:50px;color:#000;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.5}a{color:#00701a;font-weight:500}a:hover,a:focus{color:#00d632}a code{color:#00701a}h1,h2,h3,h4,h5,h6{color:#000;margin-top:2rem;margin-bottom:1rem}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{color:#000;background:transparent}h1{font-size:31.5px;font-weight:700}h2{font-size:28px}h2 code{font-size:24px}h3{font-size:21px}h3 code{font-size:20px}h4{font-size:18.9px}h4 code{font-size:18px}h5{font-size:16.1px}h6{font-size:14px}p,li{font-size:14px;line-height:1.5}pre{padding:8px 16px;margin:8px 0;font-family:"Monaco","Source Code Pro",monospace;background-color:#eee;border:0;font-size:100%;line-height:20px;color:#000;border-radius:6px;box-shadow:1px 1px 5px #aaa}code{font-family:"Monaco","Source Code Pro",monospace;font-size:13px;background-color:#eee;color:#000}.btn-lg{font-size:14px;text-transform:uppercase}@media(min-width: 768px){.container{width:100%;max-width:100%}}@media(min-width: 992px){.content{max-width:100%;width:100%}}.content{overflow:auto;padding:40px 10px}.content p{line-height:22px;margin-bottom:1rem}.btn-success{border-radius:2px;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);border:0}.well{background-color:#eee;border-color:#eee;box-shadow:none}.vpad{padding-top:0px}.page-title-bar{background-color:#76d275;padding-top:20px;padding-bottom:20px}.page-title-bar h1,.page-title-bar h2,.page-title-bar h3,.page-title-bar h4,.page-title-bar h5,.page-title-bar h6{margin:8px 0 4px;color:#fff}.gsc-control-cse *,.gsc-control-cse *::before,.gsc-control-cse *::after{-webkit-box-sizing:content-box !important;-moz-box-sizing:content-box !important;box-sizing:content-box !important}dd>code>a,dl>dt>code>a{color:#000}dl>dt{margin-top:1.5rem;margin-bottom:.5rem}.footer{background-color:#424242;color:#fff;padding:20px}.footer .text-muted{color:#e0e0e0}.footer a{color:#e0e0e0}.footer a:hover,.footer a:focus{color:#fff;text-decoration:none}.navbar-inverse{margin-bottom:0;background-color:#43a047;border-bottom:1px solid #43a047}.navbar-inverse .navbar-brand .navbar-logo{height:22px}.navbar-inverse a.navbar-brand{color:#fff}.navbar-inverse a.navbar-brand:focus,.navbar-inverse a.navbar-brand:hover{color:#444;background-color:#43a047}.navbar-inverse .navbar-nav>li>a{color:#fff}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#444;background-color:#76d275}.navbar-inverse .navbar-nav>li>a.nav-icon{font-size:18px}.navbar-inverse .navbar-nav>li.active>a{background-color:#76d275}.navbar-inverse .navbar-nav>li.active>a:focus,.navbar-inverse .navbar-nav>li.active>a:hover{background-color:#76d275}.navbar-inverse .navbar-form{border-color:#43a047}.navbar-inverse .navbar-form .input-sm{margin-top:2px}.navbar-inverse .navbar-form input[type=search]{background-color:#76d275;border-color:#43a047}.navbar-inverse .navbar-form input[type=search]::placeholder{color:#fff}.navbar-inverse .navbar-form input[type=search]:focus,.navbar-inverse .navbar-form input[type=search]:active{background-color:#fff}.navbar-inverse .navbar-toggle{border:1px solid #43a047}.navbar-inverse .navbar-toggle.active,.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#76d275}.navbar-inverse .navbar-collapse{border-color:#43a047}@media(max-width: 768px){#cse-search-box{margin-top:0;margin-bottom:0}}.sidebar{height:99.9%;border-right:1px solid #dee2e6;background-color:rgba(67,160,71,.03);padding-top:40px;padding-left:1.5rem;margin-left:-15px}.sidebar li{font-size:13.3px}.sidebar h4{padding-right:1rem}.sidebar ul.sidebar-nav{list-style-type:none;padding:0}.sidebar ul.sidebar-nav li.sidebar-nav-heading{padding:10px 0;margin:0;display:block;font-size:16px;font-weight:300}.sidebar ul.sidebar-nav li ul li a{color:#495057}.sidebar ul.sidebar-nav li a{padding:4px 1rem 4px 0;display:block;color:#222;font-weight:400}.sidebar ul.sidebar-nav li a:focus{text-decoration:none}.sidebar ul.sidebar-nav li a:active,.sidebar ul.sidebar-nav li a:hover{border-right:4px solid #66bb6a;text-decoration:none}.sidebar ul.sidebar-nav li a .caret{float:right;margin-top:8px;margin-right:0px}.sidebar ul.sidebar-nav li.active a{border-right:4px solid #66bb6a;font-weight:700}.sidebar ul.sidebar-nav ul.sidebar-nav{padding-left:10px}.sidebar select{padding:3px 4px;border:2px solid #dee2e6;border-radius:3px;width:80%}.sidebar-toggle{margin-top:50px}@media(max-width: 991px){.right-sidebar{display:none}}@media(min-width: 992px){.sidebar-toggle{display:none}.sidebar.collapse{display:block}@supports(position: sticky){.sticky-sidebar{position:sticky;top:50px;height:100vh;overflow-y:auto}}}.right-sidebar{border-left:1px solid #dee2e6;padding-top:40px;padding-bottom:1rem}.right-sidebar .gh-links{padding-left:22px;list-style-type:none}.right-sidebar .gh-links li{padding-bottom:.4rem}.right-sidebar a{font-weight:400}.right-sidebar .toc-h2{padding-left:0;list-style-type:none;margin-top:.3rem;line-height:1.7;font-size:13.3px}.right-sidebar .toc-h2 a{color:#444}.right-sidebar .toc-h2 ul{padding-left:0}.right-sidebar .toc-h3{padding-left:1em;list-style-type:none;line-height:1.7}.right-sidebar .toc-h3 a{color:#666}.gh-edit{padding-top:0px}.gh-edit.default-hidden{visibility:hidden}caption{padding-top:5px;padding-bottom:5px;color:#fff;text-align:left}th{text-align:left}table{background-color:#fff;width:100%;max-width:100%;margin-bottom:1.5}table>thead>tr>th,table>thead>tr>td,table>tbody>tr>th,table>tbody>tr>td,table>tfoot>tr>th,table>tfoot>tr>td{padding:5px;line-height:1.5;vertical-align:top;border-top:1px solid #43a047}table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #43a047}table>caption+thead>tr:first-child>th,table>caption+thead>tr:first-child>td,table>colgroup+thead>tr:first-child>th,table>colgroup+thead>tr:first-child>td,table>thead:first-child>tr:first-child>th,table>thead:first-child>tr:first-child>td{border-top:0}table>tbody+tbody{border-top:2px solid #43a047}pre.rule-signature{white-space:normal;word-wrap:break-word;word-break:normal}colgroup .col-param{width:25%}colgroup .col-description{width:75%}.table-params{border:1px solid #81c784}.table-params thead>tr>th{color:#fff;border:1px solid #81c784;background-color:#81c784}.table-params tbody>tr>td{background-color:#e8f5e9;border:1px solid #81c784}.table-implicit{border:1px solid silver}.table-implicit thead>tr>th{color:#fff;border:1px solid silver;background-color:silver}.table-implicit tbody>tr>td{background-color:#f0f0f0;border:1px solid silver}.toc{border-left:4px solid #c8e6c9;padding-left:18px;margin-bottom:20px}.toc h1,.toc h2{font-size:24px;color:#757575;margin-bottom:12px}.toc ul{list-style:none;padding-left:0;margin-top:0}.toc ul li{line-height:36px;font-size:16px;font-weight:400}dt{margin-top:.5em}dd{margin-left:2em}.highlight .hll{background-color:#e0e0e0}.highlight{background:#eee;color:#212121}.highlight .c{color:#9e9e9e}.highlight .err{color:#f44336}.highlight .k{color:#9c27b0}.highlight .l{color:#ff9800}.highlight .n{color:#212121}.highlight .o{color:#009688}.highlight .p{color:#212121}.highlight .cm{color:#9e9e9e}.highlight .cp{color:#9e9e9e}.highlight .c1{color:#9e9e9e}.highlight .cs{color:#9e9e9e}.highlight .gd{color:#f44336}.highlight .ge{font-style:italic}.highlight .gh{color:#212121;font-weight:bold}.highlight .gi{color:#4caf50}.highlight .gp{color:#9e9e9e;font-weight:bold}.highlight .gs{font-weight:bold}.highlight .gu{color:#009688;font-weight:bold}.highlight .kc{color:#9c27b0}.highlight .kd{color:#9c27b0}.highlight .kn{color:#009688}.highlight .kp{color:#9c27b0}.highlight .kr{color:#9c27b0}.highlight .kt{color:#ffc107}.highlight .ld{color:#4caf50}.highlight .m{color:#ff9800}.highlight .s{color:#4caf50}.highlight .na{color:#2196f3}.highlight .nb{color:#212121}.highlight .nc{color:#ffc107}.highlight .no{color:#f44336}.highlight .nd{color:#009688}.highlight .ni{color:#212121}.highlight .ne{color:#f44336}.highlight .nf{color:#2196f3}.highlight .nl{color:#212121}.highlight .nn{color:#ffc107}.highlight .nx{color:#2196f3}.highlight .py{color:#212121}.highlight .nt{color:#009688}.highlight .nv{color:#f44336}.highlight .ow{color:#009688}.highlight .w{color:#212121}.highlight .mf{color:#ff9800}.highlight .mh{color:#ff9800}.highlight .mi{color:#ff9800}.highlight .mo{color:#ff9800}.highlight .sb{color:#4caf50}.highlight .sc{color:#212121}.highlight .sd{color:#9e9e9e}.highlight .s2{color:#4caf50}.highlight .se{color:#ff9800}.highlight .sh{color:#4caf50}.highlight .si{color:#ff9800}.highlight .sx{color:#4caf50}.highlight .sr{color:#4caf50}.highlight .s1{color:#4caf50}.highlight .ss{color:#4caf50}.highlight .bp{color:#212121}.highlight .vc{color:#f44336}.highlight .vg{color:#f44336}.highlight .vi{color:#f44336}.highlight .il{color:#ff9800}/*# sourceMappingURL=main.css.map */ From b9cf08fff6e13286b25a59a160be67a2a661627a Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 27 Aug 2020 07:56:42 -0700 Subject: [PATCH 0832/1134] Fix circleci status badges to pin to stable branch CircleCI docs claim that they should use the default branch by default, but this icon is green while stable is red, so I think it's still reporting on master. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 96b0974b23..b9c8328fa3 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Circle CI | Bazel CI :---: | :---: -[![CircleCI](https://circleci.com/gh/bazelbuild/rules_nodejs.svg?style=svg)](https://circleci.com/gh/bazelbuild/rules_nodejs) | [![Build status](https://badge.buildkite.com/af1a592b39b11923ef0f523cbb223dd3dbd61629f8bc813c07.svg?branch=master)](https://buildkite.com/bazel/nodejs-rules-nodejs-postsubmit) +[![CircleCI](https://circleci.com/gh/bazelbuild/rules_nodejs/tree/stable.svg?style=svg)](https://circleci.com/gh/bazelbuild/rules_nodejs/tree/stable) | [![Build status](https://badge.buildkite.com/af1a592b39b11923ef0f523cbb223dd3dbd61629f8bc813c07.svg?branch=master)](https://buildkite.com/bazel/nodejs-rules-nodejs-postsubmit) The nodejs rules integrate NodeJS development toolchain and runtime with Bazel. @@ -81,4 +81,4 @@ From [Jason Bedard](https://github.com/jbedard) at [Allocadia](https://www.alloc > - increased build and testing stability > - improved developer ergonomics such as initial setup, faster more consistent local builds > -> The use of rules_nodejs has provided these benefits across multiple Angular/TypeScript applications, Karma+Jasmine testing, Rollup, npm packaging, protobuf client/server communication, and a variety of Node.js based tooling. \ No newline at end of file +> The use of rules_nodejs has provided these benefits across multiple Angular/TypeScript applications, Karma+Jasmine testing, Rollup, npm packaging, protobuf client/server communication, and a variety of Node.js based tooling. From 826b3fbbc7fa8e2e04e30328124e0bafde9e30f1 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 27 Aug 2020 08:07:48 -0700 Subject: [PATCH 0833/1134] ci: all angular examples timeout=long --- examples/BUILD.bazel | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/BUILD.bazel b/examples/BUILD.bazel index 60339daacd..f68572f004 100644 --- a/examples/BUILD.bazel +++ b/examples/BUILD.bazel @@ -235,6 +235,7 @@ example_integration_test( example_integration_test( name = "examples_angular_bazel_architect", + timeout = "long", bazel_commands = [ "test ...", ], From ef9729909f88530981a7ee9457cebba032332220 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 26 Aug 2020 20:04:23 +0000 Subject: [PATCH 0834/1134] chore: update dependency bazel_toolchains to v3.4.2 --- examples/angular/WORKSPACE | 8 ++++---- examples/angular_view_engine/WORKSPACE | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/angular/WORKSPACE b/examples/angular/WORKSPACE index b81d827582..19d058f439 100644 --- a/examples/angular/WORKSPACE +++ b/examples/angular/WORKSPACE @@ -74,11 +74,11 @@ sass_repositories() http_archive( name = "bazel_toolchains", - sha256 = "7ebb200ed3ca3d1f7505659c7dfed01c4b5cb04c3a6f34140726fe22f5d35e86", - strip_prefix = "bazel-toolchains-3.4.1", + sha256 = "caf516464966470c075c33fae53c33ada5f32f1d43dbeaaea7388fe6e006d001", + strip_prefix = "bazel-toolchains-3.4.2", urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/releases/download/3.4.1/bazel-toolchains-3.4.1.tar.gz", - "https://github.com/bazelbuild/bazel-toolchains/releases/download/3.4.1/bazel-toolchains-3.4.1.tar.gz", + "https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/releases/download/3.4.2/bazel-toolchains-3.4.2.tar.gz", + "https://github.com/bazelbuild/bazel-toolchains/releases/download/3.4.2/bazel-toolchains-3.4.2.tar.gz", ], ) diff --git a/examples/angular_view_engine/WORKSPACE b/examples/angular_view_engine/WORKSPACE index b03660fa9e..d00aacda17 100644 --- a/examples/angular_view_engine/WORKSPACE +++ b/examples/angular_view_engine/WORKSPACE @@ -81,10 +81,10 @@ sass_repositories() http_archive( name = "bazel_toolchains", - sha256 = "7ebb200ed3ca3d1f7505659c7dfed01c4b5cb04c3a6f34140726fe22f5d35e86", - strip_prefix = "bazel-toolchains-3.4.1", + sha256 = "caf516464966470c075c33fae53c33ada5f32f1d43dbeaaea7388fe6e006d001", + strip_prefix = "bazel-toolchains-3.4.2", urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/releases/download/3.4.1/bazel-toolchains-3.4.1.tar.gz", - "https://github.com/bazelbuild/bazel-toolchains/releases/download/3.4.1/bazel-toolchains-3.4.1.tar.gz", + "https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/releases/download/3.4.2/bazel-toolchains-3.4.2.tar.gz", + "https://github.com/bazelbuild/bazel-toolchains/releases/download/3.4.2/bazel-toolchains-3.4.2.tar.gz", ], ) From 2d7ed6d1cd2e33819c1a798997f34b26dcb6531d Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 27 Aug 2020 13:22:12 -0700 Subject: [PATCH 0835/1134] chore: update circleci image to latest to pick up newer chrome --- .circleci/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 080f55e40b..460d9ec1be 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,9 +9,9 @@ ## IMPORTANT # If you change the `default_docker_image` version, also change the `cache_key` version -var_1: &default_docker_image circleci/node:12.18.2 -var_2: &browsers_docker_image circleci/node:12.18.2-browsers -var_3: &cache_key node-12.18.2-{{ checksum "yarn.lock" }} +var_1: &default_docker_image circleci/node:12.18.3 +var_2: &browsers_docker_image circleci/node:12.18.3-browsers +var_3: &cache_key node-12.18.3-{{ checksum "yarn.lock" }} var_4: &init_environment run: From 1ed754e26d4a0f27e9ce7ebdbe94c9178ed960b1 Mon Sep 17 00:00:00 2001 From: Matt Mackay Date: Thu, 27 Aug 2020 14:23:52 -0400 Subject: [PATCH 0836/1134] docs: add search to docsite using gcse --- docs/BUILD.bazel | 1 + docs/Built-ins.html | 12 ++- docs/Cypress.html | 12 ++- docs/Jasmine.html | 12 ++- docs/Karma.html | 12 ++- docs/Protractor.html | 12 ++- docs/Rollup.html | 12 ++- docs/Terser.html | 12 ++- docs/TypeScript.html | 12 ++- docs/_includes/footer-content.html | 2 +- docs/_includes/header.html | 6 ++ docs/_includes/sidenav.html | 2 +- docs/_layouts/search.html | 21 ++++ docs/changing-rules.html | 12 ++- docs/debugging.html | 12 ++- docs/dependencies.html | 12 ++- docs/examples.html | 12 ++- docs/index.html | 12 ++- docs/install.html | 12 ++- docs/repositories.html | 12 ++- docs/search.html | 161 +++++++++++++++++++++++++++++ docs/search.md | 5 + docs/stamping.html | 12 ++- tools/stardoc/jekyll.bzl | 2 +- 24 files changed, 357 insertions(+), 35 deletions(-) create mode 100644 docs/_layouts/search.html create mode 100755 docs/search.html create mode 100644 docs/search.md diff --git a/docs/BUILD.bazel b/docs/BUILD.bazel index e1c7430ded..9bcd931b34 100644 --- a/docs/BUILD.bazel +++ b/docs/BUILD.bazel @@ -59,6 +59,7 @@ rules_nodejs_docs( config = "_config.yml", css = "//docs/css", docs = [ + "search.md", "install.md", "repositories.md", "debugging.md", diff --git a/docs/Built-ins.html b/docs/Built-ins.html index e9c2859826..38a68226f7 100755 --- a/docs/Built-ins.html +++ b/docs/Built-ins.html @@ -53,6 +53,12 @@