Remove disabled Polymer template tests

Template tests don't work after migration to Polymer 2/3 and were
disabled and can now be removed.

The Polymer template tests are now disabled on Gerrit CI starting from
stable-3.2 release.

Change-Id: Icfd0b40e7348642214640816052cc072ad29056d
This commit is contained in:
David Ostrovsky
2020-07-07 22:21:47 +02:00
committed by David Ostrovsky
parent 9bf50fffd2
commit aa735d058b
8 changed files with 7 additions and 486 deletions

View File

@@ -12,7 +12,6 @@
"eslint-plugin-import": "^2.20.1",
"eslint-plugin-jsdoc": "^19.2.0",
"eslint-plugin-prettier": "^3.1.3",
"fried-twinkie": "^0.2.2",
"polymer-cli": "^1.9.11",
"prettier": "2.0.5",
"typescript": "^3.7.4",
@@ -25,7 +24,6 @@
"safe_bazelisk": "if which bazelisk >/dev/null; then bazel_bin=bazelisk; else bazel_bin=bazel; fi && $bazel_bin",
"eslint": "npm run safe_bazelisk test polygerrit-ui/app:lint_test",
"eslintfix": "npm run safe_bazelisk run polygerrit-ui/app:lint_bin -- -- --fix $(pwd)/polygerrit-ui/app",
"test-template": "./polygerrit-ui/app/run_template_test.sh",
"polylint": "npm run safe_bazelisk test polygerrit-ui/app:polylint_test"
},
"repository": {

View File

@@ -226,47 +226,6 @@ or
npm run polylint
```
## Template Type Safety
> **Warning**: This feature is temporary disabled, because it doesn't work with Polymer 2 and Polymer 3. Some of the checks are made by polymer linter.
Polymer elements are not type checked against the element definition, making it
trivial to break the display when refactoring or moving code. We now run
additional tests to help ensure that template types are checked.
A few notes to ensure that these tests pass
- Any functions with optional parameters will need closure annotations.
- Any Polymer parameters that are nullable or can be multiple types (other than
the one explicitly delared) will need type annotations.
These tests require the `typescript` and `fried-twinkie` npm packages.
To run on all files, execute the following command:
```sh
./polygerrit-ui/app/run_template_test.sh
```
or
```sh
npm run test-template
```
To run on a specific top level directory (ex: change-list)
```sh
TEMPLATE_NO_DEFAULT=true ./polygerrit-ui/app/run_template_test.sh //polygerrit-ui/app:template_test_change-list
```
To run on a specific file (ex: gr-change-list-view), execute the following command:
```sh
TEMPLATE_NO_DEFAULT=true ./polygerrit-ui/app/run_template_test.sh //polygerrit-ui/app:template_test_<TOP_LEVEL_DIRECTORY> --test_arg=<VIEW_NAME>
```
```sh
TEMPLATE_NO_DEFAULT=true ./polygerrit-ui/app/run_template_test.sh //polygerrit-ui/app:template_test_change-list --test_arg=gr-change-list-view
```
## Contributing
Our users report bugs / feature requests related to the UI through [Monorail Issues - PolyGerrit](https://bugs.chromium.org/p/gerrit/issues/list?q=component%3APolyGerrit).

View File

@@ -176,7 +176,7 @@ module.exports = {
},
"overrides": [
{
"files": ["*.html", "test.js", "test-infra.js", "template_test.js"],
"files": ["*.html", "test.js", "test-infra.js"],
"rules": {
"jsdoc/require-file-overview": "off"
},
@@ -219,7 +219,7 @@ module.exports = {
}
},
{
"files": ["test/functional/**/*.js", "wct.conf.js", "template_test.js"],
"files": ["test/functional/**/*.js", "wct.conf.js"],
// Settings for functional tests. These scripts are node scripts.
// Turn off "no-undef" to allow any global variable
"env": {

View File

@@ -121,40 +121,3 @@ sh_test(
"manual",
],
)
DIRECTORIES = [
"admin",
"change",
"change-list",
"core",
"diff",
"edit",
"plugins",
"settings",
"shared",
"gr-app",
]
[sh_test(
name = "template_test_" + directory,
size = "enormous",
srcs = ["template_test.sh"],
args = [directory],
data = [
":pg_code",
":template_test_srcs",
],
tags = [
# Should not run sandboxed.
"local",
"template",
],
) for directory in DIRECTORIES]
filegroup(
name = "template_test_srcs",
srcs = [
"template_test_srcs/convert_for_template_tests.py",
"template_test_srcs/template_test.js",
],
)

View File

@@ -1,36 +0,0 @@
#!/bin/bash
# TODO(dmfilippov): Update template_test to support Polymer 2/Polymer 3 or delete it completely
# The following line temporary disable template tests. Existing implementation doesn't compatible
# with Polymer 2 & 3 class-based components. Polymer linter makes some checks regarding
# templates and binding, but not all.
exit 0
set -ex
node_bin=$(which node) && true
if [ -z "$node_bin" ]; then
echo "node must be on the path."
exit 1
fi
npm_bin=$(which npm) && true
if [[ -z "$npm_bin" ]]; then
echo "NPM must be on the path. (https://www.npmjs.com/)"
exit 1
fi
# Have to find where node_modules are installed and set the NODE_PATH
get_node_path() {
cd $(dirname $node_bin)
cd ../lib/node_modules
pwd
}
export NODE_PATH=$(get_node_path)
unzip -o polygerrit-ui/polygerrit_components.bower_components.zip -d polygerrit-ui/app
python $TEST_SRCDIR/gerrit/polygerrit-ui/app/template_test_srcs/convert_for_template_tests.py
# Pass a file name argument from the --test_args (example: --test_arg=gr-list-view)
${node_bin} $TEST_SRCDIR/gerrit/polygerrit-ui/app/template_test_srcs/template_test.js $1 $2

View File

@@ -1,129 +0,0 @@
import json
import os
import re
polymerRegex = r"Polymer\({"
polymerCompiledRegex = re.compile(polymerRegex)
removeSelfInvokeRegex = r"\(function\(\) {\n(.+)}\)\(\);"
fnCompiledRegex = re.compile(removeSelfInvokeRegex, re.DOTALL)
regexBehavior = r"<script>(.+)<\/script>"
behaviorCompiledRegex = re.compile(regexBehavior, re.DOTALL)
def _open(filename, mode="r"):
try:
return open(filename, mode, encoding="utf-8")
except TypeError:
return open(filename, mode)
def replaceBehaviorLikeHTML(fileIn, fileOut):
with _open(fileIn) as f:
file_str = f.read()
match = behaviorCompiledRegex.search(file_str)
if match:
with _open("polygerrit-ui/temp/behaviors/" +
fileOut.replace("html", "js"), "w+") as f:
f.write(match.group(1))
def replaceBehaviorLikeJS(fileIn, fileOut):
with _open(fileIn) as f:
file_str = f.read()
with _open("polygerrit-ui/temp/behaviors/" + fileOut, "w+") as f:
f.write(file_str)
def generateStubBehavior(behaviorName):
with _open("polygerrit-ui/temp/behaviors/" +
behaviorName + ".js", "w+") as f:
f.write("/** @polymerBehavior **/\n" + behaviorName + "= {};")
def replacePolymerElement(fileIn, fileOut, root):
with _open(fileIn) as f:
key = fileOut.split('.')[0]
# Removed self invoked function
file_str = f.read()
file_str_no_fn = fnCompiledRegex.search(file_str)
if file_str_no_fn:
package = root.replace("/", ".") + "." + fileOut
with _open("polygerrit-ui/temp/" + fileOut, "w+") as f:
mainFileContents = re.sub(
polymerCompiledRegex,
"exports = Polymer({",
file_str_no_fn.group(1)).replace("'use strict';", "")
f.write("/** \n"
"* @fileoverview \n"
"* @suppress {missingProperties} \n"
"*/ \n\n"
"goog.module('polygerrit." + package + "')\n\n" +
mainFileContents)
# Add package and javascript to files object.
elements[key]["js"] = "polygerrit-ui/temp/" + fileOut
elements[key]["package"] = package
def writeTempFile(file, root):
# This is included in an extern because it is directly on the window object
# (for now at least).
if "gr-reporting" in file:
return
key = file.split('.')[0]
if key not in elements:
# gr-app doesn't have an additional level
elements[key] = {
"directory":
'gr-app' if len(root.split("/")) < 4 else root.split("/")[3]
}
if file.endswith(".html") and not file.endswith("_test.html"):
# gr-navigation is treated like a behavior rather than a standard
# element because of the way it added to the Gerrit object.
if file.endswith("gr-navigation.html"):
replaceBehaviorLikeHTML(os.path.join(root, file), file)
else:
elements[key]["html"] = os.path.join(root, file)
if file.endswith(".js"):
replacePolymerElement(os.path.join(root, file), file, root)
if __name__ == "__main__":
# Create temp directory.
if not os.path.exists("polygerrit-ui/temp"):
os.makedirs("polygerrit-ui/temp")
# Within temp directory create behavior directory.
if not os.path.exists("polygerrit-ui/temp/behaviors"):
os.makedirs("polygerrit-ui/temp/behaviors")
elements = {}
# Go through every file in app/elements, and re-write accordingly to temp
# directory, and also added to elements object, which is used to generate a
# map of html files, package names, and javascript files.
for root, dirs, files in os.walk("polygerrit-ui/app/elements"):
for file in files:
writeTempFile(file, root)
# Special case for polymer behaviors we are using.
replaceBehaviorLikeHTML("polygerrit-ui/app/bower_components/iron-a11y-keys-behavior/iron-a11y-keys-behavior.html", "iron-a11y-keys-behavior.html")
generateStubBehavior("Polymer.IronOverlayBehavior")
generateStubBehavior("Polymer.IronFitBehavior")
# TODO figure out something to do with iron-overlay-behavior.
# it is hard-coded reformatted.
with _open("polygerrit-ui/temp/map.json", "w+") as f:
f.write(json.dumps(elements))
for root, dirs, files in os.walk("polygerrit-ui/app/behaviors"):
for file in files:
if file.endswith("behavior.html"):
replaceBehaviorLikeHTML(os.path.join(root, file), file)
elif file.endswith("behavior.js"):
replaceBehaviorLikeJS(os.path.join(root, file), file)

View File

@@ -1,87 +0,0 @@
const fs = require('fs');
const twinkie = require('fried-twinkie');
fs.readdir('./polygerrit-ui/temp/behaviors/', (err, data) => {
if (err) {
console.log('error /polygerrit-ui/temp/behaviors/ directory');
}
const behaviors = data;
const additionalSources = [];
const externMap = {};
for (const behavior of behaviors) {
if (!externMap[behavior]) {
additionalSources.push({
path: `./polygerrit-ui/temp/behaviors/${behavior}`,
src: fs.readFileSync(
`./polygerrit-ui/temp/behaviors/${behavior}`, 'utf-8'),
});
externMap[behavior] = true;
}
}
let mappings = JSON.parse(fs.readFileSync(
`./polygerrit-ui/temp/map.json`, 'utf-8'));
// The directory is passed as arg2 by the test target.
const directory = process.argv[2];
if (directory) {
const mappingSpecificDirectory = {};
for (key of Object.keys(mappings)) {
if (directory === mappings[key].directory) {
mappingSpecificDirectory[key] = mappings[key];
}
}
mappings = mappingSpecificDirectory;
}
// If a particular file was passed by the user, don't test everything.
const file = process.argv[3];
if (file) {
const mappingSpecificFile = {};
for (key of Object.keys(mappings)) {
if (key.includes(file)) {
mappingSpecificFile[key] = mappings[key];
}
}
mappings = mappingSpecificFile;
}
/**
* Types in Gerrit.
* All types should be under `./polygerrit-ui/app/types` folder and end with `js`.
*/
fs.readdir('./polygerrit-ui/app/types/', (err, typeFiles) => {
for (const typeFile of typeFiles) {
if (!typeFile.endsWith('.js')) continue;
additionalSources.push({
path: `./polygerrit-ui/app/types/${typeFile}`,
src: fs.readFileSync(
`./polygerrit-ui/app/types/${typeFile}`, 'utf-8'),
});
}
const toCheck = [];
for (key of Object.keys(mappings)) {
if (mappings[key].html && mappings[key].js) {
toCheck.push({
htmlSrcPath: mappings[key].html,
jsSrcPath: mappings[key].js,
jsModule: 'polygerrit.' + mappings[key].package,
});
}
}
twinkie.checkTemplate(toCheck, additionalSources)
.then(() => {}, joinedErrors => {
if (joinedErrors) {
process.exit(1);
}
})
.catch(e => {
console.error(e);
process.exit(1);
});
});
});

157
yarn.lock
View File

@@ -694,13 +694,6 @@
dependencies:
chalk "*"
"@types/cheerio@^0.22.2":
version "0.22.15"
resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.15.tgz#69040ffa92c309beeeeb7e92db66ac3f80700c0b"
integrity sha512-UGiiVtJK5niCqMKYmLEFz1Wl/3L5zF/u78lu8CwoUywWXRr9LDimeYuOzXVLXBMO758fcTdFtgjvqlztMH90MA==
dependencies:
"@types/node" "*"
"@types/clean-css@*":
version "4.2.1"
resolved "https://registry.yarnpkg.com/@types/clean-css/-/clean-css-4.2.1.tgz#cb0134241ec5e6ede1b5344bc829668fd9871a8d"
@@ -1282,11 +1275,6 @@ ajv@^6.5.5:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
amdefine@>=0.0.4:
version "1.0.1"
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
ansi-align@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba"
@@ -1984,11 +1972,6 @@ body-parser@1.19.0, body-parser@^1.17.2:
raw-body "2.4.0"
type-is "~1.6.17"
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=
bower-config@^1.4.0, bower-config@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/bower-config/-/bower-config-1.4.1.tgz#85fd9df367c2b8dbbd0caa4c5f2bad40cd84c2cc"
@@ -2274,18 +2257,6 @@ charenc@~0.0.1:
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=
cheerio@^1.0.0-rc.2:
version "1.0.0-rc.3"
resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6"
integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==
dependencies:
css-select "~1.2.0"
dom-serializer "~0.1.1"
entities "~1.1.1"
htmlparser2 "^3.9.1"
lodash "^4.15.0"
parse5 "^3.0.1"
chokidar@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
@@ -2745,16 +2716,6 @@ crypto-random-string@^1.0.0:
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=
css-select@~1.2.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-slam@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/css-slam/-/css-slam-2.1.2.tgz#3d35b1922cb3e0002a45c89ab189492508c493e5"
@@ -2766,7 +2727,7 @@ css-slam@^2.1.2:
parse5 "^4.0.0"
shady-css-parser "^0.1.0"
css-what@2.1, css-what@^2.1.0:
css-what@^2.1.0:
version "2.1.3"
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
@@ -3030,14 +2991,6 @@ dom-serializer@0:
domelementtype "^2.0.1"
entities "^2.0.0"
dom-serializer@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==
dependencies:
domelementtype "^1.3.0"
entities "^1.1.1"
dom-urls@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/dom-urls/-/dom-urls-1.1.0.tgz#001ddf81628cd1e706125c7176f53ccec55d918e"
@@ -3054,7 +3007,7 @@ dom5@^3.0.0:
clone "^2.1.0"
parse5 "^4.0.0"
domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1:
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==
@@ -3071,14 +3024,6 @@ domhandler@^2.3.0:
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:
version "1.7.0"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
@@ -3235,7 +3180,7 @@ engine.io@~3.4.0:
engine.io-parser "~2.2.0"
ws "^7.1.2"
entities@^1.1.1, entities@~1.1.1:
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==
@@ -3971,19 +3916,6 @@ fresh@0.5.2:
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
fried-twinkie@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/fried-twinkie/-/fried-twinkie-0.2.2.tgz#fafa52b3b7957dc78d7867b28f74b6e01bdb2aee"
integrity sha512-rb/i+7VXEToBjrYZ2jSew4bI9znWF15P52dAGuoJcxpaBibWz2PI5tRx0ZSjDM+a/gZI2Pgr2XHT6wwNVZQ7/g==
dependencies:
"@types/cheerio" "^0.22.2"
chalk "^2.1.0"
google-closure-compiler-js "^20170626.0.0"
tmp "^0.0.31"
tsickle "^0.23.4"
twinkie "0.0.11"
typescript "^2.4.1"
fs-constants@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
@@ -4275,15 +4207,6 @@ globby@^8.0.1:
pify "^3.0.0"
slash "^1.0.0"
google-closure-compiler-js@^20170626.0.0:
version "20170626.0.0"
resolved "https://registry.yarnpkg.com/google-closure-compiler-js/-/google-closure-compiler-js-20170626.0.0.tgz#5df265b277d1ec6fdea12eed131d1491cd8a8d71"
integrity sha512-LQvWXN3yS2l88TsXiHZ0aWtGR51tep/bNvS7cuUldnKkppgknTo35jThYwE+JOU9lviERZjMHhiqxz2CXzIRuw==
dependencies:
minimist "^1.2.0"
vinyl "^2.0.1"
webpack-core "^0.6.8"
got@^5.0.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35"
@@ -4550,7 +4473,7 @@ html-minifier@^3.5.10:
relateurl "0.2.x"
uglify-js "3.4.x"
htmlparser2@^3.10.1, htmlparser2@^3.9.1:
htmlparser2@^3.10.1:
version "3.10.1"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
@@ -5511,7 +5434,7 @@ lodash@^3.0.0, lodash@^3.10.1:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=
lodash@^4.0.0, lodash@^4.15.0, lodash@^4.16.6, lodash@^4.17.14, lodash@^4.17.15:
lodash@^4.0.0, lodash@^4.16.6, lodash@^4.17.14, lodash@^4.17.15:
version "4.17.15"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
@@ -6105,13 +6028,6 @@ npmlog@^4.0.2:
gauge "~2.7.3"
set-blocking "~2.0.0"
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"
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"
@@ -6446,13 +6362,6 @@ parse-passwd@^1.0.0:
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
parse5@^3.0.1:
version "3.0.3"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c"
integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==
dependencies:
"@types/node" "*"
parse5@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
@@ -7888,11 +7797,6 @@ sort-keys@^1.0.0:
dependencies:
is-plain-obj "^1.0.0"
source-list-map@~0.1.7:
version "0.1.8"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
integrity sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=
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"
@@ -7912,13 +7816,6 @@ source-map-support@0.5.9:
buffer-from "^1.0.0"
source-map "^0.6.0"
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"
integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==
dependencies:
source-map "^0.5.6"
source-map-url@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
@@ -7934,13 +7831,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, 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.4.1:
version "0.4.4"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
integrity sha1-66T12pwNyZneaAMti092FzZSA2s=
dependencies:
amdefine ">=0.0.4"
spawn-sync@^1.0.15:
version "1.0.15"
resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476"
@@ -8485,13 +8375,6 @@ tmp@^0.0.29:
dependencies:
os-tmpdir "~1.0.1"
tmp@^0.0.31:
version "0.0.31"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7"
integrity sha1-jzirlDjhcxXl29izZX6L+yd65Kc=
dependencies:
os-tmpdir "~1.0.1"
tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
@@ -8586,16 +8469,6 @@ triple-beam@^1.2.0, triple-beam@^1.3.0:
resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9"
integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==
tsickle@^0.23.4:
version "0.23.6"
resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.23.6.tgz#fcee57a5cb7f92a8c3a9e578ee0a286427dcfacd"
integrity sha1-/O5Xpct/kqjDqeV47gooZCfc+s0=
dependencies:
minimist "^1.2.0"
mkdirp "^0.5.1"
source-map "^0.5.6"
source-map-support "^0.4.2"
tslib@^1.8.1, tslib@^1.9.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
@@ -8620,13 +8493,6 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
twinkie@0.0.11:
version "0.0.11"
resolved "https://registry.yarnpkg.com/twinkie/-/twinkie-0.0.11.tgz#013c5e4b6b23ac8dec5d4eb8f9f84858bc143a74"
integrity sha1-ATxeS2sjrI3sXU64+fhIWLwUOnQ=
dependencies:
cheerio "^1.0.0-rc.2"
type-check@~0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
@@ -8657,11 +8523,6 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typescript@^2.4.1:
version "2.9.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c"
integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==
typescript@^3.7.4:
version "3.7.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae"
@@ -9090,14 +8951,6 @@ webidl-conversions@^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-core@^0.6.8:
version "0.6.9"
resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2"
integrity sha1-/FcViMhVjad76e+23r3Fo7FyvcI=
dependencies:
source-list-map "~0.1.7"
source-map "~0.4.1"
whatwg-url@^6.4.0:
version "6.5.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8"