build(bazel): fine-grained npm deps and idiomatic install of @angular/bazel (#26607)

PR Close #26607
This commit is contained in:
Alex Eagle
2018-09-26 22:20:16 -07:00
committed by Alex Rickabaugh
parent 81e571b908
commit c251a5a4d1
130 changed files with 8928 additions and 1604 deletions

View File

@ -1,5 +1,15 @@
package(default_visibility = ["//visibility:public"])
load("@build_bazel_rules_typescript//:defs.bzl", "ts_config")
exports_files(["tsconfig.json"])
ts_config(
name = "tsconfig-test",
src = "tsconfig-test.json",
deps = ["tsconfig.json"],
)
# The toolchain container used for execution is defined in the target indicated
# by "extra_execution_platforms", "host_platform" and "platforms".
# If you are using your own toolchain container, you need to create a platform
@ -28,5 +38,4 @@ platform(
value: "SYS_ADMIN"
}
""",
visibility = ["//visibility:public"],
)

View File

@ -1,62 +0,0 @@
###############################
# Typescript / Angular / Sass #
###############################
# Make compilation fast, by keeping a few copies of the compilers
# running as daemons, and cache SourceFile AST's to reduce parse time.
build --strategy=TypeScriptCompile=worker
build --strategy=AngularTemplateCompile=worker
# 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
###############################
# Filesystem interactions #
###############################
# 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=/
# Performance: avoid stat'ing input files
build --watchfs
###############################
# Release support #
###############################
# Releases should always be stamped with version control info
build --workspace_status_command=./tools/bazel_stamp_vars.sh
###############################
# Output #
###############################
# A more useful default output mode for bazel query
# Prints eg. "ng_module rule //foo:bar" rather than just "//foo:bar"
query --output=label_kind
# By default, failing tests don't print any output, it goes to the log file
test --test_output=errors
# Show which actions are run under workers,
# and print all the actions running in parallel.
# Helps to demonstrate that bazel uses all the cores on the machine.
build --experimental_ui
test --experimental_ui
################################
# Settings for CircleCI #
################################
# Bazel flags for CircleCI are in /.circleci/bazel.rc
################################
# Temporary Settings for Ivy #
################################
# to determine if the compiler used should be Ivy or ViewEngine one can use `--define=compile=local` on
# any bazel target. This is a temporary flag until codebase is permanently switched to Ivy.
build --define=compile=legacy

View File

@ -6,9 +6,12 @@ load("//packages/bazel:index.bzl", _ng_module = "ng_module", _ng_package = "ng_p
load("//packages/bazel/src:ng_module.bzl", _internal_global_ng_module = "internal_global_ng_module")
load("//packages/bazel/src:ng_rollup_bundle.bzl", _ng_rollup_bundle = "ng_rollup_bundle")
DEFAULT_TSCONFIG_BUILD = "//packages:tsconfig-build.json"
DEFAULT_TSCONFIG_TEST = "//packages:tsconfig-test.json"
DEFAULT_NODE_MODULES = "@angular_deps//:node_modules"
_DEFAULT_TSCONFIG_BUILD = "//packages:tsconfig-build.json"
_DEFAULT_TSCONFIG_TEST = "//packages:tsconfig-test.json"
_DEFAULT_TS_TYPINGS = "@ngdeps//typescript:typescript__typings"
_INTERNAL_NG_MODULE_COMPILER = "//packages/bazel/src/ngc-wrapped"
_INTERNAL_NG_MODULE_XI18N = "//packages/bazel/src/ngc-wrapped:xi18n"
_INTERNAL_NG_PACKAGER_PACKAGER = "//packages/bazel/src/ng_package:packager"
# Packages which are versioned together on npm
ANGULAR_SCOPED_PACKAGES = ["@angular/%s" % p for p in [
@ -41,53 +44,105 @@ PKG_GROUP_REPLACEMENTS = {
]""" % ",\n ".join(["\"%s\"" % s for s in ANGULAR_SCOPED_PACKAGES]),
}
def ts_library(tsconfig = None, node_modules = DEFAULT_NODE_MODULES, testonly = False, **kwargs):
def ts_library(tsconfig = None, testonly = False, deps = [], **kwargs):
"""Default values for ts_library"""
deps = deps + ["@ngdeps//tslib"]
if testonly:
# Match the types[] in //packages:tsconfig-test.json
deps.append("@ngdeps//@types/jasmine")
deps.append("@ngdeps//@types/node")
if not tsconfig:
if testonly:
tsconfig = DEFAULT_TSCONFIG_TEST
tsconfig = _DEFAULT_TSCONFIG_TEST
else:
tsconfig = DEFAULT_TSCONFIG_BUILD
_ts_library(tsconfig = tsconfig, node_modules = node_modules, testonly = testonly, **kwargs)
tsconfig = _DEFAULT_TSCONFIG_BUILD
_ts_library(
tsconfig = tsconfig,
testonly = testonly,
deps = deps,
node_modules = _DEFAULT_TS_TYPINGS,
**kwargs
)
def ng_module(name, tsconfig = None, entry_point = None, node_modules = DEFAULT_NODE_MODULES, testonly = False, **kwargs):
def ng_module(name, tsconfig = None, entry_point = None, testonly = False, deps = [], **kwargs):
"""Default values for ng_module"""
deps = deps + ["@ngdeps//tslib"]
if testonly:
# Match the types[] in //packages:tsconfig-test.json
deps.append("@ngdeps//@types/jasmine")
deps.append("@ngdeps//@types/node")
if not tsconfig:
if testonly:
tsconfig = DEFAULT_TSCONFIG_TEST
tsconfig = _DEFAULT_TSCONFIG_TEST
else:
tsconfig = DEFAULT_TSCONFIG_BUILD
tsconfig = _DEFAULT_TSCONFIG_BUILD
if not entry_point:
entry_point = "public_api.ts"
_ng_module(name = name, flat_module_out_file = name, tsconfig = tsconfig, entry_point = entry_point, node_modules = node_modules, testonly = testonly, **kwargs)
_ng_module(
name = name,
flat_module_out_file = name,
tsconfig = tsconfig,
entry_point = entry_point,
testonly = testonly,
deps = deps,
compiler = _INTERNAL_NG_MODULE_COMPILER,
ng_xi18n = _INTERNAL_NG_MODULE_XI18N,
node_modules = _DEFAULT_TS_TYPINGS,
**kwargs
)
# ivy_ng_module behaves like ng_module, and under --define=compile=legacy it runs ngc with global
# analysis but produces Ivy outputs. Under other compile modes, it behaves as ng_module.
# TODO(alxhub): remove when ngtsc supports the same use cases.
def ivy_ng_module(name, tsconfig = None, entry_point = None, testonly = False, **kwargs):
def ivy_ng_module(name, tsconfig = None, entry_point = None, testonly = False, deps = [], **kwargs):
"""Default values for ivy_ng_module"""
deps = deps + ["@ngdeps//tslib"]
if testonly:
# Match the types[] in //packages:tsconfig-test.json
deps.append("@ngdeps//@types/jasmine")
deps.append("@ngdeps//@types/node")
if not tsconfig:
if testonly:
tsconfig = DEFAULT_TSCONFIG_TEST
tsconfig = _DEFAULT_TSCONFIG_TEST
else:
tsconfig = DEFAULT_TSCONFIG_BUILD
tsconfig = _DEFAULT_TSCONFIG_BUILD
if not entry_point:
entry_point = "public_api.ts"
_internal_global_ng_module(name = name, flat_module_out_file = name, tsconfig = tsconfig, entry_point = entry_point, testonly = testonly, **kwargs)
_internal_global_ng_module(
name = name,
flat_module_out_file = name,
tsconfig = tsconfig,
entry_point = entry_point,
testonly = testonly,
deps = deps,
compiler = _INTERNAL_NG_MODULE_COMPILER,
ng_xi18n = _INTERNAL_NG_MODULE_XI18N,
node_modules = _DEFAULT_TS_TYPINGS,
**kwargs
)
def ng_package(name, node_modules = DEFAULT_NODE_MODULES, readme_md = None, license_banner = None, **kwargs):
def ng_package(name, readme_md = None, license_banner = None, deps = [], **kwargs):
"""Default values for ng_package"""
if not readme_md:
readme_md = "//packages:README.md"
if not license_banner:
license_banner = "//packages:license-banner.txt"
deps = deps + [
"@ngdeps//tslib",
]
_ng_package(
name = name,
deps = deps,
readme_md = readme_md,
license_banner = license_banner,
replacements = PKG_GROUP_REPLACEMENTS,
node_modules = node_modules,
ng_packager = _INTERNAL_NG_PACKAGER_PACKAGER,
**kwargs
)
def npm_package(name, replacements = {}, **kwargs):
"""Default values for npm_package"""
_npm_package(
name = name,
replacements = dict(replacements, **PKG_GROUP_REPLACEMENTS),
@ -95,10 +150,11 @@ def npm_package(name, replacements = {}, **kwargs):
)
def ts_web_test_suite(bootstrap = [], deps = [], **kwargs):
"""Default values for ts_web_test_suite"""
if not bootstrap:
bootstrap = ["//:web_test_bootstrap_scripts"]
local_deps = [
"@angular_deps//:node_modules/tslib/tslib.js",
"@ngdeps//node_modules/tslib:tslib.js",
"//tools/testing:browser",
] + deps
@ -119,11 +175,40 @@ def ts_web_test_suite(bootstrap = [], deps = [], **kwargs):
**kwargs
)
def nodejs_binary(node_modules = DEFAULT_NODE_MODULES, **kwargs):
_nodejs_binary(node_modules = node_modules, **kwargs)
def nodejs_binary(**kwargs):
"""Default values for nodejs_binary"""
_nodejs_binary(
# Pass-thru --define=compile=foo as an environment variable
configuration_env_vars = ["compile"],
**kwargs
)
def jasmine_node_test(node_modules = DEFAULT_NODE_MODULES, **kwargs):
_jasmine_node_test(node_modules = node_modules, **kwargs)
def jasmine_node_test(deps = [], **kwargs):
"""Default values for jasmine_node_test"""
deps = deps + [
# Very common dependencies for tests
"@ngdeps//chokidar",
"@ngdeps//domino",
"@ngdeps//jasmine",
"@ngdeps//jasmine-core",
"@ngdeps//mock-fs",
"@ngdeps//reflect-metadata",
"@ngdeps//tslib",
"@ngdeps//xhr2",
]
_jasmine_node_test(
deps = deps,
# Pass-thru --define=compile=foo as an environment variable
configuration_env_vars = ["compile"],
**kwargs
)
def ng_rollup_bundle(node_modules = DEFAULT_NODE_MODULES, **kwargs):
_ng_rollup_bundle(node_modules = node_modules, **kwargs)
def ng_rollup_bundle(deps = [], **kwargs):
"""Default values for ng_rollup_bundle"""
deps = deps + [
"@ngdeps//tslib",
]
_ng_rollup_bundle(
deps = deps,
**kwargs
)

View File

@ -15,263 +15,14 @@ def ng_setup_workspace():
to build angular
"""
yarn_install(
name = "angular_deps",
name = "ngdeps",
package_json = "@angular//:package.json",
yarn_lock = "@angular//:yarn.lock",
data = ["@angular//:tools/yarn/check-yarn.js", "@angular//:tools/postinstall-patches.js"],
manual_build_file_contents = """package(default_visibility = ["//visibility:public"])
filegroup(
name = "node_modules",
srcs = glob(["/".join([
"node_modules",
pkg,
"**",
ext,
]) for pkg in [
"adm-zip",
"ajv",
"angular",
"angular-1.5",
"angular-1.6",
"angular-mocks",
"angular-mocks-1.5",
"angular-mocks-1.6",
"anymatch",
"arr-diff",
"arr-flatten",
"arr-union",
"array-unique",
"asn1",
"assert-plus",
"assign-symbols",
"async-each",
"asynckit",
"atob",
"aws-sign2",
"aws4",
"balanced-match",
"base",
"base64-js",
"binary-extensions",
"blocking-proxy",
"brace-expansion",
"braces",
"bytebuffer",
"cache-base",
"camelcase",
"canonical-path",
"caseless",
"chokidar",
"class-utils",
"co",
"collection-visit",
"convert-source-map",
"combined-stream",
"component-emitter",
"concat-map",
"copy-descriptor",
"core-util-is",
"debug",
"decamelize",
"decode-uri-component",
"define-property",
"delayed-stream",
"dependency-graph",
"domino",
"error-ex",
"expand-brackets",
"expand-range",
"extend",
"extend-shallow",
"extglob",
"extsprintf",
"fast-deep-equal",
"fast-json-stable-stringify",
"filename-regex",
"fill-range",
"find-up",
"for-in",
"for-own",
"forever-agent",
"form-data",
"fragment-cache",
"fs.realpath",
"fs-extra",
"get-caller-file",
"get-value",
"glob",
"glob-base",
"glob-parent",
"graceful-fs",
"hammerjs",
"har-schema",
"har-validator",
"has-value",
"has-values",
"http-signature",
"https-proxy-agent",
"inflight",
"inherits",
"is-arrayish",
"is-accessor-descriptor",
"is-binary-path",
"is-buffer",
"is-data-descriptor",
"is-descriptor",
"is-dotfile",
"is-equal-shallow",
"is-extendable",
"is-extglob",
"is-glob",
"is-number",
"is-plain-object",
"is-posix-bracket",
"is-primitive",
"is-typedarray",
"is-windows",
"isarray",
"isobject",
"isstream",
"jasmine",
"jasmine-core",
"jasminewd2",
"json-schema",
"json-schema-traverse",
"json-stable-stringify",
"json-stringify-safe",
"jsprim",
"kind-of",
"locate-path",
"long",
"lru-cache",
"magic-string",
"map-cache",
"map-visit",
"math-random",
"micromatch",
"mime-db",
"mime-types",
"minimatch",
"minimist",
"mixin-deep",
"mock-fs",
"node-uuid",
"nanomatch",
"normalize-path",
"oauth-sign",
"object.omit",
"object.pick",
"object-copy",
"object-visit",
"once",
"optimist",
"options",
"os-locale",
"os-tmpdir",
"p-limit",
"p-locate",
"p-try",
"parse-glob",
"parse-json",
"pascalcase",
"path-dirname",
"path-exists",
"path-is-absolute",
"performance-now",
"pify",
"posix-character-classes",
"preserve",
"process-nextick-args",
"protobufjs",
"protractor",
"qs",
"randomatic",
"read-pkg-up",
"readable-stream",
"readdirp",
"reflect-metadata",
"regex-cache",
"regex-not",
"remove-trailing-separator",
"repeat-element",
"repeat-string",
"request",
"require-directory",
"require-main-filename",
"ret",
"rimraf",
"safe-buffer",
"safe-regex",
"safer-buffer",
"sax",
"selenium-webdriver",
"semver",
"set-blocking",
"set-immediate-shim",
"set-value",
"shelljs",
"sigmund",
"snapdragon",
"snapdragon-node",
"snapdragon-util",
"source-map",
"source-map-resolve",
"source-map-support",
"source-map-url",
"sourcemap-codec",
"split-string",
"sshpk",
"static-extend",
"stringstream",
"strip-bom",
"tmp",
"to-object-path",
"to-regex",
"to-regex-range",
"tough-cookie",
"tsickle",
"tslib",
"tsutils",
"tunnel-agent",
"typescript",
"union-value",
"universalify",
"unset-value",
"upath",
"uri-js",
"urix",
"use",
"util-deprecate",
"uuid",
"verror",
"webdriver-js-extender",
"webdriver-manager",
"wordwrap",
"wrappy",
"xhr2",
"xml2js",
"xmlbuilder",
"y18n",
"yargs",
"yargs-parser",
"zone.js",
"@angular-devkit/core",
"@angular-devkit/schematics",
"@types",
"@webcomponents/custom-elements",
] for ext in [
"*.js",
"*.json",
"*.d.ts",
]] + [
"node_modules/protractor/**",
"node_modules/@schematics/angular/**",
]))
""",
)
yarn_install(
name = "ts-api-guardian_runtime_deps",
name = "ts-api-guardian_deps",
package_json = "@angular//tools/ts-api-guardian:package.json",
yarn_lock = "@angular//tools/ts-api-guardian:yarn.lock",
)

View File

@ -6,7 +6,7 @@ USER root
# Bazel install
# See https://bazel.build/versions/master/docs/install-ubuntu.html#using-bazel-custom-apt-repository-recommended
# Note, only the latest release is available, see https://github.com/bazelbuild/bazel/issues/4947
RUN BAZEL_VERSION="0.17.1" \
RUN BAZEL_VERSION="0.18.0" \
&& wget -q -O - https://bazel.build/bazel-release.pub.gpg | apt-key add - \
&& echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" > /etc/apt/sources.list.d/bazel.list \
&& apt-get update \

View File

@ -6,7 +6,7 @@ This docker container provides everything needed to build and test Angular appli
- npm 6.2.0
- yarn 1.9.2
- Java 8 (for Closure Compiler and Bazel)
- Bazel build tool v0.17.1 - http://bazel.build
- Bazel build tool v0.18.0 - http://bazel.build
- Google Chrome 69.0.3497.81
- Mozilla Firefox 47.0.1
- xvfb (virtual framebuffer) for headless testing

14
tools/npm/package.json Normal file
View File

@ -0,0 +1,14 @@
{
"description": "minimal @npm repo required to build @rxjs from source and so that @npm//@angular/bazel is a valid target",
"dependencies": {
"@angular/bazel": "6.1.9",
"@angular/compiler": "6.1.9",
"@angular/compiler-cli": "6.1.9",
"@bazel/karma": "0.20.3",
"@bazel/typescript": "0.20.3",
"typescript": "~3.1.1"
},
"scripts": {
"//": "TODO(gregmagolan): figure out how to keep @bazel/karma & @bazel/typescript dependencies here up to date with the root package.json; NOTE: versions of @angular/x don't matter here as they are only require to create the @npm//@angular/bazel target name"
}
}

3805
tools/npm/yarn.lock Normal file

File diff suppressed because it is too large Load Diff

View File

@ -14,6 +14,7 @@ ts_library(
),
deps = [
"//packages:types",
"@ngdeps//typescript",
],
)
@ -27,6 +28,7 @@ ts_library(
deps = [
":lib",
"//packages:types",
"@ngdeps//typescript",
],
)

View File

@ -10,14 +10,16 @@
# because it introduces an extra target_bin target.
load("@build_bazel_rules_nodejs//internal/node:node.bzl", "nodejs_binary", "nodejs_test")
DEFAULT_NODE_MODULES = "@angular_deps//:node_modules"
def js_expected_symbol_test(name, src, golden, node_modules = DEFAULT_NODE_MODULES, **kwargs):
def js_expected_symbol_test(name, src, golden, data = [], **kwargs):
"""This test verifies that a set of top level symbols from a javascript file match a gold file.
"""
all_data = [src, golden]
all_data += [Label("//tools/symbol-extractor:lib")]
all_data += [Label("@bazel_tools//tools/bash/runfiles")]
all_data = data + [
src,
golden,
Label("//tools/symbol-extractor:lib"),
Label("@bazel_tools//tools/bash/runfiles"),
Label("@ngdeps//typescript"),
]
entry_point = "angular/tools/symbol-extractor/cli.js"
nodejs_test(
@ -25,7 +27,6 @@ def js_expected_symbol_test(name, src, golden, node_modules = DEFAULT_NODE_MODUL
data = all_data,
entry_point = entry_point,
templated_args = ["$(location %s)" % src, "$(location %s)" % golden],
node_modules = node_modules,
**kwargs
)
@ -35,6 +36,5 @@ def js_expected_symbol_test(name, src, golden, node_modules = DEFAULT_NODE_MODUL
data = all_data,
entry_point = entry_point,
templated_args = ["$(location %s)" % src, "$(location %s)" % golden, "--accept"],
node_modules = node_modules,
**kwargs
)

View File

@ -29,5 +29,7 @@ ts_library(
name = "node_no_angular",
testonly = 1,
srcs = ["init_node_no_angular_spec.ts"],
deps = ["//packages:types"],
deps = [
"//packages:types",
],
)

View File

@ -13,9 +13,17 @@ ts_library(
name = "lib",
srcs = glob(["lib/*.ts"]),
module_name = "ts-api-guardian",
node_modules = "@ts-api-guardian_runtime_deps//:node_modules",
node_modules = "@ts-api-guardian_deps//typescript:typescript__typings",
tsconfig = "//tools:tsconfig.json",
visibility = ["//visibility:public"],
deps = [
"@ts-api-guardian_deps//@types/diff",
"@ts-api-guardian_deps//@types/minimist",
"@ts-api-guardian_deps//@types/node",
"@ts-api-guardian_deps//diff",
"@ts-api-guardian_deps//minimist",
"@ts-api-guardian_deps//typescript",
],
)
# Copy Angular's license to govern ts-api-guardian as well.
@ -47,8 +55,17 @@ ts_library(
name = "test_lib",
testonly = True,
srcs = glob(["test/*.ts"]),
tsconfig = "//tools:tsconfig.json",
deps = [":lib"],
node_modules = "@ts-api-guardian_deps//typescript:typescript__typings",
tsconfig = "//tools:tsconfig-test",
deps = [
":lib",
"@ts-api-guardian_deps//@types/chai",
"@ts-api-guardian_deps//@types/jasmine",
"@ts-api-guardian_deps//@types/node",
"@ts-api-guardian_deps//chai",
"@ts-api-guardian_deps//jasmine",
"@ts-api-guardian_deps//typescript",
],
)
jasmine_node_test(
@ -60,7 +77,8 @@ jasmine_node_test(
"test/fixtures/*.patch",
]) + [
":ts-api-guardian",
"@ts-api-guardian_deps//chalk",
],
node_modules = "@ts-api-guardian_runtime_deps//:node_modules",
node_modules = "@ts-api-guardian_deps//typescript:typescript__typings",
tags = ["local"],
)

View File

@ -42,7 +42,7 @@ def ts_api_guardian_test(name, golden, actual, data = [], strip_export_pattern =
nodejs_test(
name = name,
data = data,
node_modules = "@ts-api-guardian_runtime_deps//:node_modules",
node_modules = "@ts-api-guardian_deps//:node_modules",
entry_point = "angular/tools/ts-api-guardian/bin/ts-api-guardian",
templated_args = args + ["--verify", golden, actual],
**kwargs
@ -52,7 +52,7 @@ def ts_api_guardian_test(name, golden, actual, data = [], strip_export_pattern =
name = name + ".accept",
testonly = True,
data = data,
node_modules = "@ts-api-guardian_runtime_deps//:node_modules",
node_modules = "@ts-api-guardian_deps//:node_modules",
entry_point = "angular/tools/ts-api-guardian/bin/ts-api-guardian",
templated_args = args + ["--out", golden, actual],
**kwargs

View File

@ -19,7 +19,9 @@
"minimist": "^1.2.0"
},
"devDependencies": {
"@types/chai": "^4.1.2",
"@types/diff": "^3.5.1",
"@types/jasmine": "^2.8.8",
"@types/minimist": "^1.2.0",
"@types/node": "^10.9.2",
"chai": "^4.1.2",

View File

@ -2,35 +2,52 @@
# yarn lockfile v1
"@types/chai@^4.1.2":
version "4.1.6"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.6.tgz#1eb26c040e3a84205b1008ad55c800e5e8a94e34"
integrity sha512-CBk7KTZt3FhPsEkYioG6kuCIpWISw+YI8o+3op4+NXwTpvAPxE1ES8+PY8zfaK2L98b1z5oq03UHa4VYpeUxnw==
"@types/diff@^3.5.1":
version "3.5.1"
resolved "https://registry.yarnpkg.com/@types/diff/-/diff-3.5.1.tgz#30253f6e177564ad7da707b1ebe46d3eade71706"
integrity sha512-nkT7bd/YM6QRDQjww8PYf0kOj1MvwxQ/WaCinj2Hm1HlL+JqGTm4cDoQeROfiWX/B3SNI1nyLLhLAQpp5sE3hw==
"@types/jasmine@^2.8.8":
version "2.8.9"
resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.9.tgz#e028c891e8551fdf6de905d959581fc4fa0b5509"
integrity sha512-8dPZwjosElZOGGYw1nwTvOEMof4gjwAWNFS93nBI091BoEfd5drnHOLRMiRF/LOPuMTn5LgEdv0bTUO8QFVuHQ==
"@types/minimist@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6"
integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=
"@types/node@^10.9.2":
version "10.9.2"
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.9.2.tgz#f0ab8dced5cd6c56b26765e1c0d9e4fdcc9f2a00"
integrity sha512-pwZnkVyCGJ3LsQ0/3flQK5lCFao4esIzwUVzzk5NvL9vnkEyDhNf4fhHzUMHvyr56gNZywWTS2MR0euabMSz4A==
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"
assertion-error@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==
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"
@ -38,6 +55,7 @@ brace-expansion@^1.1.7:
chai@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c"
integrity sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=
dependencies:
assertion-error "^1.0.1"
check-error "^1.0.1"
@ -49,6 +67,7 @@ chai@^4.1.2:
chalk@^2.3.1:
version "2.3.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65"
integrity sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==
dependencies:
ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5"
@ -57,46 +76,56 @@ chalk@^2.3.1:
check-error@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=
color-convert@^1.9.0:
version "1.9.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
integrity sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==
dependencies:
color-name "^1.1.1"
color-name@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
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-eql@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==
dependencies:
type-detect "^4.0.0"
diff@^3.4.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
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=
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=
get-func-name@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=
glob@^7.0.6:
version "7.1.2"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
@ -108,10 +137,12 @@ glob@^7.0.6:
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=
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"
@ -119,14 +150,17 @@ inflight@^1.0.4:
inherits@2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
jasmine-core@~3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.1.0.tgz#a4785e135d5df65024dfc9224953df585bd2766c"
integrity sha1-pHheE11d9lAk38kiSVPfWFvSdmw=
jasmine@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.1.0.tgz#2bd59fd7ec6ec0e8acb64e09f45a68ed2ad1952a"
integrity sha1-K9Wf1+xuwOistk4J9Fpo7SrRlSo=
dependencies:
glob "^7.0.6"
jasmine-core "~3.1.0"
@ -134,41 +168,50 @@ jasmine@^3.1.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=
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=
pathval@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0"
integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA=
supports-color@^5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0"
integrity sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==
dependencies:
has-flag "^3.0.0"
type-detect@^4.0.0:
version "4.0.8"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
typescript@~3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.1.tgz#3362ba9dd1e482ebb2355b02dfe8bcd19a2c7c96"
integrity sha512-Veu0w4dTc/9wlWNf2jeRInNodKlcdLgemvPsrNpfu5Pq39sgfFjvIIgTsvUHCoLBnMhPoUA+tFxsXjU6VexVRQ==
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=

9
tools/tsconfig-test.json Normal file
View File

@ -0,0 +1,9 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"types": [
"node",
"jasmine"
]
},
}

View File

@ -18,7 +18,10 @@
"dom"
],
"target": "es5",
"skipLibCheck": true
"skipLibCheck": true,
"types": [
"node"
]
},
"exclude": [
"testing",