From 9a824acf64146903dce2ebd9d2029971d3f578bd Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Fri, 15 Nov 2019 14:17:03 -0800 Subject: [PATCH] chore: remove old rollup_bundle BREAKING CHANGE: internal/rollup_bundle rule is removed. see https://github.com/bazelbuild/rules_nodejs/wiki for migration instructions Fixes #740 --- BUILD.bazel | 32 +- defs.bzl | 2 - index.bzl | 2 - index.for_docs.bzl | 2 - internal/common/collect_es6_sources.bzl | 72 -- internal/node/node_repositories.bzl | 13 - internal/rollup/BUILD.bazel | 120 -- internal/rollup/no_explore.html | 4 - internal/rollup/package.json | 21 - internal/rollup/postinstall-patches.js | 45 - internal/rollup/rollup.config.js | 201 ---- internal/rollup/rollup.config.spec.js | 84 -- internal/rollup/rollup_bundle.bzl | 867 -------------- internal/rollup/system.config.js | 12 - internal/rollup/terser-wrapped.js | 124 -- internal/rollup/tsc-directory.js | 89 -- internal/rollup/yarn.lock | 1398 ----------------------- 17 files changed, 14 insertions(+), 3074 deletions(-) delete mode 100644 internal/common/collect_es6_sources.bzl delete mode 100644 internal/rollup/BUILD.bazel delete mode 100644 internal/rollup/no_explore.html delete mode 100644 internal/rollup/package.json delete mode 100644 internal/rollup/postinstall-patches.js delete mode 100644 internal/rollup/rollup.config.js delete mode 100644 internal/rollup/rollup.config.spec.js delete mode 100644 internal/rollup/rollup_bundle.bzl delete mode 100644 internal/rollup/system.config.js delete mode 100644 internal/rollup/terser-wrapped.js delete mode 100644 internal/rollup/tsc-directory.js delete mode 100644 internal/rollup/yarn.lock diff --git a/BUILD.bazel b/BUILD.bazel index 294e14c9d4..d222cc31a8 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -50,14 +50,12 @@ bzl_library( "//internal/linker:bzl", "//internal/npm_package:bzl", "//internal/providers:bzl", - "//internal/rollup:bzl", "//toolchains/node:bzl", ], ) # Empty node_modules filegroup used for the default # value of the node_modules attribute in nodejs_binary -# and rollup_bundle filegroup( name = "node_modules_none", srcs = [], @@ -77,10 +75,23 @@ npm_package( replace_with_version = "", replacements = COMMON_REPLACEMENTS, deps = [ + "//internal:package_contents", + "//internal/bazel_integration_test:package_contents", + "//internal/common:package_contents", + "//internal/copy_repository:package_contents", + "//internal/golden_file_test:package_contents", + "//internal/jasmine_node_test:package_contents", + "//internal/js_library:package_contents", + "//internal/linker:package_contents", + "//internal/node:package_contents", + "//internal/npm_install:package_contents", + "//internal/npm_package:package_contents", + "//internal/providers:package_contents", + "//internal/web_package:package_contents", "//third_party/github.com/bazelbuild/bazel-skylib:package_contents", "//third_party/github.com/buffer-from:package_contents", - "//third_party/github.com/inikulin/parse5:package_contents", "//third_party/github.com/gjtorikian/isBinaryFile:package_contents", + "//third_party/github.com/inikulin/parse5:package_contents", "//third_party/github.com/juanjoDiaz/removeNPMAbsolutePaths:package_contents", "//third_party/github.com/source-map:package_contents", "//third_party/github.com/source-map-support:package_contents", @@ -91,21 +102,6 @@ npm_package( "//third_party/npm/node_modules/browserify:package_contents", "//third_party/npm/node_modules/ieee754:package_contents", "//third_party/npm/node_modules/named-amd:package_contents", - "//internal:package_contents", - "//internal/bazel_integration_test:package_contents", - "//internal/golden_file_test:package_contents", - "//internal/common:package_contents", - "//internal/copy_repository:package_contents", - "//internal/jasmine_node_test:package_contents", - "//internal/js_library:package_contents", - "//internal/linker:package_contents", - # TODO(alexeagle): distribute separately as @bazel/rollup - "//internal/rollup:package_contents", - "//internal/node:package_contents", - "//internal/npm_install:package_contents", - "//internal/npm_package:package_contents", - "//internal/web_package:package_contents", - "//internal/providers:package_contents", "//toolchains/node:package_contents", ], ) diff --git a/defs.bzl b/defs.bzl index d8db0c1987..eead5ed3e6 100644 --- a/defs.bzl +++ b/defs.bzl @@ -29,7 +29,6 @@ load("//internal/node:node_repositories.bzl", _node_repositories = "node_reposit load("//internal/node:npm_package_bin.bzl", _npm_bin = "npm_package_bin") load("//internal/npm_install:npm_install.bzl", _npm_install = "npm_install", _yarn_install = "yarn_install") load("//internal/npm_package:npm_package.bzl", _npm_package = "npm_package") -load("//internal/rollup:rollup_bundle.bzl", _rollup_bundle = "rollup_bundle") load(":index.bzl", "VERSION") check_bazel_version = _check_bazel_version @@ -37,7 +36,6 @@ nodejs_binary = _nodejs_binary nodejs_test = _nodejs_test node_repositories = _node_repositories jasmine_node_test = _jasmine_node_test -rollup_bundle = _rollup_bundle npm_package = _npm_package npm_package_bin = _npm_bin # ANY RULES ADDED HERE SHOULD BE DOCUMENTED, see index.for_docs.bzl diff --git a/index.bzl b/index.bzl index 34ea19f719..823ba63444 100644 --- a/index.bzl +++ b/index.bzl @@ -29,14 +29,12 @@ load("//internal/node:node_repositories.bzl", _node_repositories = "node_reposit load("//internal/node:npm_package_bin.bzl", _npm_bin = "npm_package_bin") load("//internal/npm_install:npm_install.bzl", _npm_install = "npm_install", _yarn_install = "yarn_install") load("//internal/npm_package:npm_package.bzl", _npm_package = "npm_package") -load("//internal/rollup:rollup_bundle.bzl", _rollup_bundle = "rollup_bundle") check_bazel_version = _check_bazel_version nodejs_binary = _nodejs_binary nodejs_test = _nodejs_test node_repositories = _node_repositories jasmine_node_test = _jasmine_node_test -rollup_bundle = _rollup_bundle npm_package = _npm_package npm_package_bin = _npm_bin # ANY RULES ADDED HERE SHOULD BE DOCUMENTED, see index.for_docs.bzl diff --git a/index.for_docs.bzl b/index.for_docs.bzl index cdfdccd233..ab99d95e50 100644 --- a/index.for_docs.bzl +++ b/index.for_docs.bzl @@ -22,13 +22,11 @@ load("//internal/node:node_repositories.bzl", _node_repositories = "node_reposit load("//internal/node:npm_package_bin.bzl", _npm_bin = "npm_package_bin") load("//internal/npm_install:npm_install.bzl", _npm_install = "npm_install", _yarn_install = "yarn_install") load("//internal/npm_package:npm_package.bzl", _npm_package = "npm_package") -load("//internal/rollup:rollup_bundle.bzl", _rollup_bundle = "rollup_bundle") check_bazel_version = _check_bazel_version nodejs_binary = _nodejs_binary nodejs_test = _nodejs_test node_repositories = _node_repositories -rollup_bundle = _rollup_bundle npm_package = _npm_package npm_install = _npm_install yarn_install = _yarn_install diff --git a/internal/common/collect_es6_sources.bzl b/internal/common/collect_es6_sources.bzl deleted file mode 100644 index d8af7243db..0000000000 --- a/internal/common/collect_es6_sources.bzl +++ /dev/null @@ -1,72 +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. - -"""Used by production rules to expose a file tree of only es6 files. - -These are expected to be used by the production toolchain, such as bundlers. -The tree will be flattened, such that all the es6 files are under a single tree. -""" - -load("@build_bazel_rules_nodejs//:providers.bzl", "JSEcmaScriptModuleInfo") - -# TODO(gregmagolan): Only the legacy rollup_bundle depends on this as it still uses -# re-rooting. This can be removed along with the legacy rollup_bundle. -def collect_es6_sources(ctx): - """Returns a file tree containing only production files. - - Args: - ctx: ctx. - - Returns: - A file tree containing only production files. - """ - - non_rerooted_files = [d for d in ctx.files.deps if d.is_source] - if hasattr(ctx.attr, "srcs"): - non_rerooted_files += ctx.files.srcs - - # Some rules such as rollup_bundle specify an entry_point which should - # be collected if the file is a js file. - if hasattr(ctx.attr, "entry_point"): - non_rerooted_files += [s for s in ctx.files.entry_point if s.extension == "js"] - - for dep in ctx.attr.deps: - if JSEcmaScriptModuleInfo in dep: - non_rerooted_files += dep[JSEcmaScriptModuleInfo].sources.to_list() - - rerooted_files = [] - for file in non_rerooted_files: - path = file.short_path - if (path.startswith("../")): - path = "external/" + path[3:] - - rerooted_file = ctx.actions.declare_file( - "%s.es6/%s" % ( - ctx.label.name, - path.replace(".mjs", ".js"), - ), - ) - - # Cheap way to create an action that copies a file - # TODO(alexeagle): discuss with Bazel team how we can do something like - # runfiles to create a re-rooted tree. This has performance implications. - ctx.actions.expand_template( - output = rerooted_file, - template = file, - substitutions = {}, - ) - rerooted_files += [rerooted_file] - - #TODO(mrmeku): we should include the files and closure_js_library contents too - return depset(direct = rerooted_files) diff --git a/internal/node/node_repositories.bzl b/internal/node/node_repositories.bzl index 39d1c46933..901484e0c2 100644 --- a/internal/node/node_repositories.bzl +++ b/internal/node/node_repositories.bzl @@ -21,7 +21,6 @@ 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", "is_windows_os", "os_name") -load("//internal/npm_install:npm_install.bzl", "yarn_install") load("//third_party/github.com/bazelbuild/bazel-skylib:lib/paths.bzl", "paths") load("//toolchains/node:node_toolchain_configure.bzl", "node_toolchain_configure") @@ -703,18 +702,6 @@ def node_repositories(**kwargs): vendored_node = vendored_node, ) - _maybe( - yarn_install, - name = "build_bazel_rules_nodejs_rollup_deps", - package_json = "@build_bazel_rules_nodejs//internal/rollup:package.json", - yarn_lock = "@build_bazel_rules_nodejs//internal/rollup:yarn.lock", - data = ["@build_bazel_rules_nodejs//internal/rollup:postinstall-patches.js"], - # Do not symlink node_modules as when used in downstream repos we should not create - # node_modules folders in the @build_bazel_rules_nodejs external repository. This is - # not supported by managed_directories. - symlink_node_modules = False, - ) - def _maybe(repo_rule, name, **kwargs): if name not in native.existing_rules(): repo_rule(name = name, **kwargs) diff --git a/internal/rollup/BUILD.bazel b/internal/rollup/BUILD.bazel deleted file mode 100644 index e988c406b2..0000000000 --- a/internal/rollup/BUILD.bazel +++ /dev/null @@ -1,120 +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("@bazel_skylib//:bzl_library.bzl", "bzl_library") -load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary") - -licenses(["notice"]) # Apache 2.0 - -package(default_visibility = ["//internal:__subpackages__"]) - -exports_files([ - "no_explore.html", - "rollup.config.js", - "system.config.js", - # Exported to be consumed for generating skydoc. - "rollup_bundle.bzl", -]) - -bzl_library( - name = "bzl", - srcs = glob(["*.bzl"]), - visibility = ["//visibility:public"], -) - -nodejs_binary( - name = "rollup", - # Allow --define=ROLLUP_BUNDLE_FIXED_CHUNK_NAMES=1 to be passed as - # process.env so we can give predictable chunk names in CI - configuration_env_vars = ["ROLLUP_BUNDLE_FIXED_CHUNK_NAMES"], - entry_point = "@build_bazel_rules_nodejs_rollup_deps//:node_modules/rollup/bin/rollup", - install_source_map_support = False, - node_modules = "@build_bazel_rules_nodejs_rollup_deps//:node_modules", - visibility = ["//visibility:public"], -) - -nodejs_binary( - name = "tsc", - entry_point = "@build_bazel_rules_nodejs_rollup_deps//:node_modules/typescript/bin/tsc", - install_source_map_support = False, - node_modules = "@build_bazel_rules_nodejs_rollup_deps//:node_modules", - visibility = ["//visibility:public"], -) - -nodejs_binary( - name = "terser", - entry_point = "@build_bazel_rules_nodejs_rollup_deps//:node_modules/terser/bin/uglifyjs", - install_source_map_support = False, - node_modules = "@build_bazel_rules_nodejs_rollup_deps//:node_modules", - visibility = ["//visibility:public"], -) - -nodejs_binary( - name = "terser-wrapped", - data = [":terser-wrapped.js"], - entry_point = ":terser-wrapped.js", - install_source_map_support = False, - node_modules = "@build_bazel_rules_nodejs_rollup_deps//:node_modules", - visibility = ["//visibility:public"], -) - -nodejs_binary( - name = "tsc-directory", - data = [":tsc-directory.js"], - entry_point = ":tsc-directory.js", - install_source_map_support = False, - node_modules = "@build_bazel_rules_nodejs_rollup_deps//:node_modules", - visibility = ["//visibility:public"], -) - -nodejs_binary( - name = "source-map-explorer", - entry_point = "@build_bazel_rules_nodejs_rollup_deps//:node_modules/source-map-explorer/index.js", - install_source_map_support = False, - node_modules = "@build_bazel_rules_nodejs_rollup_deps//:node_modules", - visibility = ["//visibility:public"], -) - -# BEGIN-INTERNAL -# buildozer: disable=load-on-top -# buildozer: disable=out-of-order-load -load("@npm_bazel_jasmine//:index.from_src.bzl", "jasmine_node_test") - -jasmine_node_test( - name = "test", - srcs = glob(["*.spec.js"]), - data = glob( - ["*.js"], - exclude = ["*.spec.js"], - ), - deps = [ - "@npm//is-builtin-module", - "@npm//rollup", - "@npm//rollup-plugin-amd", - "@npm//rollup-plugin-commonjs", - "@npm//rollup-plugin-json", - "@npm//rollup-plugin-node-resolve", - "@npm//rollup-plugin-sourcemaps", - ], -) - -# END-INTERNAL -filegroup( - name = "package_contents", - srcs = glob( - ["*"], - exclude = ["*.spec.js"], - ), - visibility = ["//:__pkg__"], -) diff --git a/internal/rollup/no_explore.html b/internal/rollup/no_explore.html deleted file mode 100644 index 116f42461e..0000000000 --- a/internal/rollup/no_explore.html +++ /dev/null @@ -1,4 +0,0 @@ - - -

No source map explorer output for code-split bundles

- diff --git a/internal/rollup/package.json b/internal/rollup/package.json deleted file mode 100644 index 7eaded88ab..0000000000 --- a/internal/rollup/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "description": "runtime dependencies for rollup_bundle", - "devDependencies": { - "is-builtin-module": "2.0.0", - "minimist": "1.2.0", - "rollup": "1.3.1", - "rollup-plugin-amd": "^3.0.0", - "rollup-plugin-commonjs": "^9.2.1", - "rollup-plugin-json": "4.0.0", - "rollup-plugin-node-resolve": "~4.2.0", - "rollup-plugin-sourcemaps": "^0.4.2", - "shelljs": "0.8.3", - "source-map-explorer": "^1.7.0", - "terser": "^3.16.1", - "tmp": "0.0.33", - "typescript": "3.3.3333" - }, - "scripts": { - "postinstall": "node --preserve-symlinks --preserve-symlinks-main ./internal/rollup/postinstall-patches.js" - } -} diff --git a/internal/rollup/postinstall-patches.js b/internal/rollup/postinstall-patches.js deleted file mode 100644 index 3e0720e97e..0000000000 --- a/internal/rollup/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(path.join(__dirname, '../..')); - -// Part of work-around for Angular ngfactory issue https://github.com/angular/angular/issues/29491. -console.log( - '\n# patch: @buxlabs/amd-to-es6 to generate namespace imports instead of default imports'); -sed('-i', 'ImportDefaultSpecifier', 'ImportNamespaceSpecifier', - 'node_modules/@buxlabs/amd-to-es6/src/lib/getImportDeclaration.js'); diff --git a/internal/rollup/rollup.config.js b/internal/rollup/rollup.config.js deleted file mode 100644 index 5e4e0aa10a..0000000000 --- a/internal/rollup/rollup.config.js +++ /dev/null @@ -1,201 +0,0 @@ -// Rollup configuration -// GENERATED BY Bazel - -const nodeResolve = require('rollup-plugin-node-resolve'); -const sourcemaps = require('rollup-plugin-sourcemaps'); -const amd = require('rollup-plugin-amd'); -const commonjs = require('rollup-plugin-commonjs'); -const rollupJson = require('rollup-plugin-json'); -const isBuiltinModule = require('is-builtin-module'); -const path = require('path'); -const fs = require('fs'); - -function log_verbose(...m) { - // This is a template file so we use __filename to output the actual filename - if (!!process.env['VERBOSE_LOGS']) console.error(`[${path.basename(__filename)}]`, ...m); -} - -const workspaceName = 'TMPL_workspace_name'; -const rootDir = 'TMPL_rootDir'; -const bannerFile = TMPL_banner_file; -const stampData = TMPL_stamp_data; -const moduleMappings = TMPL_module_mappings; -const nodeModulesRoot = 'TMPL_node_modules_root'; -const isDefaultNodeModules = TMPL_is_default_node_modules; - -log_verbose(`running with - cwd: ${process.cwd()} - workspaceName: ${workspaceName} - rootDir: ${rootDir} - bannerFile: ${bannerFile} - stampData: ${stampData} - moduleMappings: ${JSON.stringify(moduleMappings)} - nodeModulesRoot: ${nodeModulesRoot} - isDefaultNodeModules: ${isDefaultNodeModules} -`); - -function fileExists(filePath) { - try { - return fs.statSync(filePath).isFile(); - } catch (e) { - return false; - } -} - -// This resolver mimics the TypeScript Path Mapping feature, which lets us resolve -// modules based on a mapping of short names to paths. -function resolveBazel(importee, importer, baseDir = process.cwd(), resolve = require.resolve, root = rootDir) { - log_verbose(`resolving '${importee}' from ${importer}`); - - function resolveInRootDir(importee) { - var candidate = path.join(baseDir, root, importee); - log_verbose(`try to resolve '${importee}' at '${candidate}'`); - try { - var result = resolve(candidate); - return result; - } catch (e) { - return undefined; - } - } - - // Since mappings are always in POSIX paths, when comparing the importee to mappings - // we should normalize the importee. - // Having it normalized is also useful to determine relative paths. - const normalizedImportee = importee.replace(/\\/g, '/'); - - // If import is fully qualified then resolve it directly - if (fileExists(importee)) { - log_verbose(`resolved fully qualified '${importee}'`); - return importee; - } - - // process.cwd() is the execroot and ends up looking something like - // `.../2c2a834fcea131eff2d962ffe20e1c87/bazel-sandbox/872535243457386053/execroot/` - // from that path to the es6 output is - // `//.es6` from there, sources - // from the user's workspace are under `` and sources from external - // workspaces are under `external//` - var resolved; - if (normalizedImportee.startsWith('./') || normalizedImportee.startsWith('../')) { - // relative import - if (importer) { - let importerRootRelative = path.dirname(importer); - const relative = path.relative(path.join(baseDir, root), importerRootRelative); - if (!relative.startsWith('.')) { - importerRootRelative = relative; - } - resolved = path.join(importerRootRelative, importee); - } else { - throw new Error('cannot resolve relative paths without an importer'); - } - if (resolved) resolved = resolveInRootDir(resolved); - } - - if (!resolved) { - // possible workspace import or external import if importee matches a module - // mapping - for (const k in moduleMappings) { - if (normalizedImportee == k || normalizedImportee.startsWith(k + '/')) { - // replace the root module name on a mappings match - // note that the module_root attribute is intended to be used for type-checking - // so it uses eg. "index.d.ts". At runtime, we have only index.js, so we strip the - // .d.ts suffix and let node require.resolve do its thing. - var v = moduleMappings[k].replace(/\.d\.ts$/, ''); - const mappedImportee = path.join(v, normalizedImportee.slice(k.length + 1)); - log_verbose(`module mapped '${importee}' to '${mappedImportee}'`); - resolved = resolveInRootDir(mappedImportee); - if (resolved) break; - } - } - } - - if (!resolved) { - // workspace import - const userWorkspacePath = path.relative(workspaceName, importee); - resolved = resolveInRootDir(userWorkspacePath.startsWith('..') ? importee : userWorkspacePath); - } - - if (resolved) { - log_verbose(`resolved to ${resolved}`); - } else { - log_verbose(`allowing rollup to resolve '${importee}' with node module resolution`); - } - - return resolved; -} - -let banner = ''; -if (bannerFile) { - banner = fs.readFileSync(bannerFile, {encoding: 'utf-8'}); - if (stampData) { - const versionTag = fs.readFileSync(stampData, {encoding: 'utf-8'}) - .split('\n') - .find(s => s.startsWith('BUILD_SCM_VERSION')); - // Don't assume BUILD_SCM_VERSION exists - if (versionTag) { - const version = versionTag.split(' ')[1].trim(); - banner = banner.replace(/0.0.0-PLACEHOLDER/, version); - } - } -} - -function notResolved(importee, importer) { - if (isBuiltinModule(importee)) { - return null; - } - throw new Error(`Could not resolve import '${importee}' from '${importer}'`); -} - -const inputs = [TMPL_inputs]; -const multipleInputs = inputs.length > 1; - -const config = { - resolveBazel, - onwarn: (warning) => { - // Always fail on warnings, assuming we don't know which are harmless. - // We can add exclusions here based on warning.code, if we discover some - // types of warning should always be ignored under bazel. - throw new Error(warning.message); - }, - plugins: [TMPL_additional_plugins].concat([ - { - name: 'resolveBazel', - resolveId: resolveBazel, - }, - nodeResolve({ - mainFields: ['browser', 'es2015', 'module', 'jsnext:main', 'main'], - jail: process.cwd(), - customResolveOptions: {moduleDirectory: nodeModulesRoot} - }), - amd({ - // Work-around for Angular ngfactory issue https://github.com/angular/angular/issues/29491. - // Filter to only convert ngfactory files since any UMD files that may be bundled will break - // with the amd plugin. - include: /\.ngfactory\.js$/i, - }), - commonjs(), { - name: 'notResolved', - resolveId: notResolved, - }, - sourcemaps(), rollupJson({preferConst: true}) - ]), - output: { - banner, - format: 'TMPL_output_format', - }, - preserveSymlinks: true, -} - -if (multipleInputs) { - config.input = inputs; -} -else { - config.input = inputs[0]; - config.output['name'] = 'TMPL_global_name'; -} - -if (process.env.ROLLUP_BUNDLE_FIXED_CHUNK_NAMES) { - config.output.chunkFileNames = '[name].js'; -} - -module.exports = config; diff --git a/internal/rollup/rollup.config.spec.js b/internal/rollup/rollup.config.spec.js deleted file mode 100644 index 3493a8314a..0000000000 --- a/internal/rollup/rollup.config.spec.js +++ /dev/null @@ -1,84 +0,0 @@ -const {sep, join} = require('path'); - -TMPL_module_mappings = { - 'foo': 'path/to/foo_lib', - 'other': 'external/other_wksp/path/to/other_lib', - '@bar/baz': 'path/to/bar/baz_lib', -}; - -const rootDir = 'bazel-bin/path/to/a.esm5'; -TMPL_additional_plugins = []; -TMPL_banner_file = ''; -TMPL_stamp_data = ''; -TMPL_inputs = ''; -TMPL_is_default_node_modules = false; - -const baseDir = '/root/base'; -const files = [ - '/root/base/bazel-bin/path/to/a.esm5/path/to/foo_lib/bar', - '/root/base/bazel-bin/path/to/a.esm5/external/other_wksp/path/to/other_lib/thing', - '/root/base/bazel-bin/path/to/a.esm5/path/to/bar/baz_lib/foo', - '/root/base/bazel-bin/path/to/a.esm5/external/some_wksp/path/to/a/public_api.js', - '/root/base/bazel-bin/path/to/a.esm5/external/some_wksp/path/to/a/index.js', -]; -const resolve = - (p) => { - p = p.replace(/\\/g, '/'); - if (files.includes(p)) return p; - if (files.includes(p + '.js')) return p + '.js'; - if (files.includes(p + '/index.js')) return p + '/index.js'; - throw new Error('resolve failed'); - } - -const rollupConfig = require('./rollup.config'); - -function doResolve(importee, importer) { - const resolved = rollupConfig.resolveBazel(importee, importer, baseDir, resolve, rootDir); - if (resolved) { - return resolved.replace(/\\/g, '/'); - } else { - fail(`did not resolve path for import ${importee} (from ${importer})`); - } -} - -describe('rollup config', () => { - it('should resolve relative imports', () => { - expect(doResolve( - `.${sep}a`, - join( - baseDir, 'bazel-bin', 'path', 'to', 'a.esm5', 'external', 'some_wksp', 'path', - 'to', 'b'))) - .toEqual(`${baseDir}/bazel-bin/path/to/a.esm5/external/some_wksp/path/to/a/index.js`); - expect(doResolve( - `..${sep}a`, - join( - baseDir, 'bazel-bin', 'path', 'to', 'a.esm5', 'external', 'some_wksp', 'path', - 'to', 'b', 'sub'))) - .toEqual(`${baseDir}/bazel-bin/path/to/a.esm5/external/some_wksp/path/to/a/index.js`); - }); - - it('should resolve relative imports from other root', () => { - expect(doResolve( - `.${sep}public_api`, - join( - baseDir, 'bazel-bin', 'path', 'to', 'a.esm5', 'external', 'some_wksp', 'path', - 'to', 'a', 'index.js'))) - .toEqual(`${baseDir}/bazel-bin/path/to/a.esm5/external/some_wksp/path/to/a/public_api.js`); - }); - - it('should find paths using module mapping', () => { - expect(doResolve(`foo${sep}bar`)) - .toEqual(`${baseDir}/bazel-bin/path/to/a.esm5/path/to/foo_lib/bar`); - expect(doResolve(`other${sep}thing`)) - .toEqual(`${baseDir}/bazel-bin/path/to/a.esm5/external/other_wksp/path/to/other_lib/thing`); - expect(doResolve(`@bar${sep}baz${sep}foo`)) - .toEqual(`${baseDir}/bazel-bin/path/to/a.esm5/path/to/bar/baz_lib/foo`); - }); - - it('should find paths in any root', () => { - expect(doResolve('path/to/foo_lib/bar')) - .toEqual(`${baseDir}/bazel-bin/path/to/a.esm5/path/to/foo_lib/bar`); - expect(doResolve('external/some_wksp/path/to/a')) - .toEqual(`${baseDir}/bazel-bin/path/to/a.esm5/external/some_wksp/path/to/a/index.js`); - }) -}); diff --git a/internal/rollup/rollup_bundle.bzl b/internal/rollup/rollup_bundle.bzl deleted file mode 100644 index 1f32b08358..0000000000 --- a/internal/rollup/rollup_bundle.bzl +++ /dev/null @@ -1,867 +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. - -"""Rollup bundling - -The versions of Rollup and terser are controlled by the Bazel toolchain. -You do not need to install them into your project. -""" - -load("@build_bazel_rules_nodejs//:providers.bzl", "NpmPackageInfo", "node_modules_aspect") -load("//internal/common:collect_es6_sources.bzl", _collect_es2015_sources = "collect_es6_sources") -load("//internal/common:module_mappings.bzl", "get_module_mappings") - -_ROLLUP_MODULE_MAPPINGS_ATTR = "rollup_module_mappings" - -# 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 - -def _rollup_module_mappings_aspect_impl(target, ctx): - mappings = get_module_mappings(target.label, ctx.rule.attr) - return struct(rollup_module_mappings = mappings) - -rollup_module_mappings_aspect = aspect( - _rollup_module_mappings_aspect_impl, - attr_aspects = ["deps"], -) - -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) - -# This function is similar but slightly different than _compute_node_modules_root -# in /internal/node/node.bzl. TODO(gregmagolan): consolidate these functions -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.attr.node_modules: - if NpmPackageInfo in ctx.attr.node_modules: - node_modules_root = "/".join(["external", ctx.attr.node_modules[NpmPackageInfo].workspace, "node_modules"]) - elif 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 NpmPackageInfo in d: - possible_root = "/".join(["external", d[NpmPackageInfo].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 - -# Expand entry_point into runfiles and strip the file extension -def _entry_point_path(ctx): - return _to_manifest_path(ctx, ctx.file.entry_point)[:-(len(ctx.file.entry_point.extension) + 1)] - -def write_rollup_config(ctx, plugins = [], root_dir = None, filename = "_%s.rollup.conf.js", output_format = "iife", additional_entry_points = []): - """Generate a rollup config file. - - This is also used by the ng_rollup_bundle and ng_package rules in @angular/bazel. - - Args: - ctx: Bazel rule execution context - plugins: extra plugins (defaults to []) - See the ng_rollup_bundle in @angular/bazel for example of usage. - root_dir: root directory for module resolution (defaults to None) - filename: output filename pattern (defaults to `_%s.rollup.conf.js`) - output_format: passed to rollup output.format option, e.g. "umd" - additional_entry_points: additional entry points for code splitting - - Returns: - The rollup config file. See https://rollupjs.org/guide/en#configuration-files - """ - config = ctx.actions.declare_file(filename % ctx.label.name) - - # build_file_path includes the BUILD.bazel file, transform here to only include the dirname - build_file_dirname = "/".join(ctx.build_file_path.split("/")[:-1]) - - entry_points = [_entry_point_path(ctx)] + additional_entry_points - - mappings = dict() - all_deps = ctx.attr.deps + ctx.attr.srcs - for dep in all_deps: - if hasattr(dep, _ROLLUP_MODULE_MAPPINGS_ATTR): - for k, v in getattr(dep, _ROLLUP_MODULE_MAPPINGS_ATTR).items(): - if k in mappings and mappings[k] != v: - fail(("duplicate module mapping at %s: %s maps to both %s and %s" % - (dep.label, k, mappings[k], v)), "deps") - mappings[k] = v - - if not root_dir: - # This must be .es6 to match collect_es6_sources.bzl - root_dir = "/".join([ctx.bin_dir.path, build_file_dirname, ctx.label.name + ".es6"]) - - node_modules_root = _compute_node_modules_root(ctx) - is_default_node_modules = False - if node_modules_root == "node_modules" and ctx.attr.node_modules.label.package == "" and ctx.attr.node_modules.label.name == "node_modules_none": - is_default_node_modules = True - - ctx.actions.expand_template( - output = config, - template = ctx.file._rollup_config_tmpl, - substitutions = { - "TMPL_additional_plugins": ",\n".join(plugins), - "TMPL_banner_file": "\"%s\"" % ctx.file.license_banner.path if ctx.file.license_banner else "undefined", - "TMPL_global_name": ctx.attr.global_name if ctx.attr.global_name else ctx.label.name, - "TMPL_inputs": ",".join(["\"%s\"" % e for e in entry_points]), - "TMPL_is_default_node_modules": "true" if is_default_node_modules else "false", - "TMPL_module_mappings": str(mappings), - "TMPL_node_modules_root": node_modules_root, - "TMPL_output_format": output_format, - "TMPL_rootDir": root_dir, - "TMPL_stamp_data": "\"%s\"" % ctx.version_file.path if ctx.version_file else "undefined", - "TMPL_target": str(ctx.label), - "TMPL_workspace_name": ctx.workspace_name, - }, - ) - - return config - -def run_rollup(ctx, sources, config, output): - """Creates an Action that can run rollup on set of sources. - - This is also used by ng_package and ng_rollup_bundle rules in @angular/bazel. - - Args: - ctx: Bazel rule execution context - sources: JS sources to rollup - config: rollup config file - output: output file - - Returns: - the sourcemap output file - """ - map_output = ctx.actions.declare_file(output.basename + ".map", sibling = output) - - _run_rollup(ctx, sources, config, output, map_output) - - return map_output - -def _filter_js_inputs(all_inputs): - # Note: make sure that "all_inputs" is not a depset. - # Iterating over a depset is deprecated! - return [ - f - for f in all_inputs - # We also need to include ".map" files as these can be read by - # the "rollup-plugin-sourcemaps" plugin. - if f.path.endswith(".js") or f.path.endswith(".json") or f.path.endswith(".map") - ] - -def _run_rollup(ctx, sources, config, output, map_output = None): - args = ctx.actions.args() - args.add_all(["--config", config.path]) - if map_output: - args.add_all(["--output.file", output.path]) - args.add_all(["--output.sourcemap", "--output.sourcemapFile", map_output.path]) - else: - args.add_all(["--output.dir", output.path]) - args.add_all(["--output.sourcemap"]) - - # We will produce errors as needed. Anything else is spammy: a well-behaved - # bazel rule prints nothing on success. - args.add("--silent") - - if ctx.attr.globals: - args.add("--external") - args.add_joined(ctx.attr.globals.keys(), join_with = ",") - args.add("--globals") - args.add_joined(["%s:%s" % g for g in ctx.attr.globals.items()], join_with = ",") - - direct_inputs = [config] - if hasattr(ctx.attr, "node_modules"): - direct_inputs += _filter_js_inputs(ctx.files.node_modules) - - # Also include files from npm fine grained deps as inputs. - # These deps are identified by the NpmPackageInfo provider. - for d in ctx.attr.deps: - if NpmPackageInfo in d: - # Note: we can't avoid calling .to_list() on sources - direct_inputs += _filter_js_inputs(d[NpmPackageInfo].sources.to_list()) - - if ctx.file.license_banner: - direct_inputs += [ctx.file.license_banner] - if ctx.version_file: - direct_inputs += [ctx.version_file] - - outputs = [output] - if map_output: - outputs += [map_output] - - ctx.actions.run( - progress_message = "Bundling JavaScript %s [rollup]" % output.short_path, - executable = ctx.executable._rollup, - inputs = depset(direct_inputs, transitive = [sources]), - outputs = outputs, - arguments = [args], - ) - -def _run_tsc(ctx, input, output): - args = ctx.actions.args() - - # No types needed since we are just downleveling. - # `--types` proceeded by another config argument means an empty types array - # for the command line parser. - # See https://github.com/Microsoft/TypeScript/issues/18581#issuecomment-330700612 - args.add("--types") - args.add("--skipLibCheck") - args.add_all(["--target", "es5"]) - args.add_all(["--lib", "es2015,dom"]) - args.add("--allowJS") - args.add("--downlevelIteration") - args.add(input.path) - args.add_all(["--outFile", output.path]) - - ctx.actions.run( - progress_message = "Downleveling JavaScript to ES5 %s [typescript]" % output.short_path, - executable = ctx.executable._tsc, - inputs = [input], - outputs = [output], - arguments = [args], - ) - -def _run_tsc_on_directory(ctx, input_dir, output_dir): - config = ctx.actions.declare_file("_%s.code-split.tsconfig.json" % ctx.label.name) - - args = ctx.actions.args() - args.add_all(["--project", config.path]) - args.add_all(["--input", input_dir.path]) - args.add_all(["--output", output_dir.path]) - - ctx.actions.run( - progress_message = "Downleveling JavaScript to ES5 %s [typescript]" % output_dir.short_path, - executable = ctx.executable._tsc_directory, - inputs = [input_dir], - outputs = [output_dir, config], - arguments = [args], - ) - -def run_uglify(**kwargs): - print("WARNING: run_uglify has been renamed to run_terser. Please update callsites") - run_terser(**kwargs) - -def run_terser(ctx, input, output, debug = False, comments = True, config_name = None, in_source_map = None): - """Runs terser on an input file. - - This is also used by https://github.com/angular/angular. - - Args: - ctx: Bazel rule execution context - input: input file - output: output file - debug: if True then output is beautified (defaults to False) - comments: if True then copyright comments are preserved in output file (defaults to True) - config_name: allows callers to control the name of the generated terser configuration, - which will be `_[config_name].terser.json` in the package where the target is declared - in_source_map: sourcemap file for the input file, passed to the "--source-map content=" - option of rollup. - - Returns: - The sourcemap file - """ - - map_output = ctx.actions.declare_file(output.basename + ".map", sibling = output) - - _run_terser(ctx, input, output, map_output, debug, comments, config_name, in_source_map) - - return map_output - -def _run_terser(ctx, input, output, map_output, debug = False, comments = True, config_name = None, in_source_map = None): - inputs = [input] - outputs = [output] - - args = ctx.actions.args() - - if map_output: - # Running terser on an individual file - if not config_name: - config_name = ctx.label.name - if debug: - config_name += ".debug" - config = ctx.actions.declare_file("_%s.terser.json" % config_name) - args.add_all(["--config-file", config.path]) - outputs += [map_output, config] - - args.add(input.path) - args.add_all(["--output", output.path]) - - # Source mapping options are comma-packed into one argv - # see https://github.com/terser-js/terser#command-line-usage - source_map_opts = ["includeSources", "base=" + ctx.bin_dir.path] - if in_source_map: - source_map_opts.append("content=" + in_source_map.path) - inputs.append(in_source_map) - - # This option doesn't work in the config file, only on the CLI - args.add_all(["--source-map", ",".join(source_map_opts)]) - - if comments: - args.add("--comments") - if debug: - args.add("--debug") - args.add("--beautify") - - ctx.actions.run( - progress_message = "Optimizing JavaScript %s [terser]" % output.short_path, - executable = ctx.executable._terser_wrapped, - inputs = inputs, - outputs = outputs, - arguments = [args], - ) - -def run_sourcemapexplorer(ctx, js, map, output): - """Runs source-map-explorer to produce an HTML visualization of the sourcemap. - - Args: - ctx: bazel rule execution context - js: Javascript bundle - map: sourcemap from the bundle back to original sources - output: file where the HTML report is written - """ - - # We must run in a shell in order to redirect stdout. - # TODO(alexeagle): file a feature request on ctx.actions.run so that stdout - # could be natively redirected to produce the output file - ctx.actions.run_shell( - inputs = [js, map], - tools = [ctx.executable._source_map_explorer], - outputs = [output], - command = "$1 --html $2 $3 > $4", - arguments = [ - ctx.executable._source_map_explorer.path, - js.path, - map.path, - output.path, - ], - ) - -def _generate_toplevel_entry(ctx, bundles_folder, output): - """Generates a native ESmodule that imports the entry point - """ - main_entry_point_basename = _entry_point_path(ctx).split("/")[-1] + ".js" - ctx.actions.write(output, """import('./%s/%s');""" % (bundles_folder, main_entry_point_basename)) - -def _generate_code_split_entry(ctx, bundles_folder, output): - """Generates a SystemJS boilerplate/entry point file. - - See doc for additional_entry_points for more information - on purpose and usage of this generated file. - - The SystemJS packages map outputted to the file is generated - from the entry_point and additional_entry_point attributes and - is targetted as a specific bundle variant specified by `folder`. - - For example, a rollup_bundle in may be configured like so: - - ``` - rollup_bundle( - name = "bundle", - additional_entry_points = [ - "src/hello-world/hello-world.module.ngfactory", - "src/todos/todos.module.ngfactory", - ], - entry_point = "src/main.prod", - deps = ["//src"], - ) - ``` - - In this case, the main_entry_point_dirname will evaluate to - `src/` and this will be stripped from the entry points for - the map. If folder is `bundle_chunks`, the generated SystemJS - boilerplate/entry point file will look like: - - ``` - (function(global) { - System.config({ - packages: { - '': {map: { - "./main.prod": "bundle_chunks/main.prod", - "./hello-world/hello-world.module.ngfactory": "bundle_chunks/hello-world.module.ngfactory", - "./todos/todos.module.ngfactory": "bundle_chunks/todos.module.ngfactory"}, - defaultExtension: 'js'}, - } - }); - System.import('main.prod').catch(function(err) { - console.error(err); - }); - })(this); - ``` - - Args: - ctx: bazel rule execution context - bundles_folder: the folder name with the bundled chunks to map to - output: the file to generate - """ - entry_point_path = _entry_point_path(ctx) - main_entry_point_basename = entry_point_path.split("/")[-1] + ".js" - main_entry_point_dirname = "/".join(entry_point_path.split("/")[:-1]) + "/" - entry_points = {} - for e in [entry_point_path] + ctx.attr.additional_entry_points: - entry_point = e[len(main_entry_point_dirname):] - entry_points["./" + entry_point] = bundles_folder + "/" + entry_point.split("/")[-1] - - ctx.actions.expand_template( - output = output, - template = ctx.file._system_config_tmpl, - substitutions = { - "TMPL_entry_points": str(entry_points), - "TMPL_main_entry_point": main_entry_point_basename, - }, - ) - -def _rollup_bundle(ctx): - if "enable_legacy_rollup_rule" not in ctx.var: - fail("""*********** - -The legacy rollup_bundle rule has been deprecated - -As announced in https://github.com/bazelbuild/rules_nodejs/releases/tag/0.38.0, -there is a new rollup_bundle Bazel rule. -Migration instructions are at -https://github.com/bazelbuild/rules_nodejs/wiki#migrating-off-internalrollup - -To continue using the old rule, add --define=enable_legacy_rollup_rule=1 to your bazel command. -************ -""") - if len(ctx.attr.entry_point.files.to_list()) != 1: - fail("labels in entry_point must contain exactly one file") - if ctx.attr.additional_entry_points and not ctx.attr.enable_code_splitting: - fail("cannot disable code splitting when there are multiple entry points") - - if ctx.attr.additional_entry_points or ctx.attr.enable_code_splitting: - # Generate code split bundles if additional entry points have been specified. - # See doc for additional_entry_points for more information. - # Note: "_chunks" is needed on the output folders since ctx.label.name + ".es2015" is already - # a folder that contains the re-rooted es2015 sources - rollup_config = write_rollup_config(ctx, output_format = "es", additional_entry_points = ctx.attr.additional_entry_points) - code_split_es2015_output_dir = ctx.actions.declare_directory(ctx.label.name + "_chunks_es2015") - _run_rollup(ctx, _collect_es2015_sources(ctx), rollup_config, code_split_es2015_output_dir) - code_split_es2015_min_output_dir = ctx.actions.declare_directory(ctx.label.name + "_chunks_min_es2015") - _run_terser(ctx, code_split_es2015_output_dir, code_split_es2015_min_output_dir, None) - code_split_es2015_min_debug_output_dir = ctx.actions.declare_directory(ctx.label.name + "_chunks_min_debug_es2015") - _run_terser(ctx, code_split_es2015_output_dir, code_split_es2015_min_debug_output_dir, None, debug = True) - - code_split_es5_output_dir = ctx.actions.declare_directory(ctx.label.name + "_chunks") - _run_tsc_on_directory(ctx, code_split_es2015_output_dir, code_split_es5_output_dir) - code_split_es5_min_output_dir = ctx.actions.declare_directory(ctx.label.name + "_chunks_min") - _run_terser(ctx, code_split_es5_output_dir, code_split_es5_min_output_dir, None) - code_split_es5_min_debug_output_dir = ctx.actions.declare_directory(ctx.label.name + "_chunks_min_debug") - _run_terser(ctx, code_split_es5_output_dir, code_split_es5_min_debug_output_dir, None, debug = True) - - # Generate the SystemJS boilerplate/entry point files - _generate_toplevel_entry(ctx, ctx.label.name + "_chunks_es2015", ctx.outputs.build_es2015) - _generate_toplevel_entry(ctx, ctx.label.name + "_chunks_min_es2015", ctx.outputs.build_es2015_min) - _generate_toplevel_entry(ctx, ctx.label.name + "_chunks_min_debug_es2015", ctx.outputs.build_es2015_min_debug) - _generate_code_split_entry(ctx, ctx.label.name + "_chunks", ctx.outputs.build_es5) - _generate_code_split_entry(ctx, ctx.label.name + "_chunks_min", ctx.outputs.build_es5_min) - _generate_code_split_entry(ctx, ctx.label.name + "_chunks_min_debug", ctx.outputs.build_es5_min_debug) - - # There is no UMD/CJS bundle when code-splitting but we still need to satisfy the output - _generate_code_split_entry(ctx, ctx.label.name + "_chunks", ctx.outputs.build_umd) - _generate_code_split_entry(ctx, ctx.label.name + "_chunks", ctx.outputs.build_umd_min) - _generate_code_split_entry(ctx, ctx.label.name + "_chunks", ctx.outputs.build_cjs) - _generate_code_split_entry(ctx, ctx.label.name + "_chunks", ctx.outputs.build_es5_umd) - _generate_code_split_entry(ctx, ctx.label.name + "_chunks", ctx.outputs.build_es5_umd_min) - - # There is no source map explorer output when code-splitting but we still need to satisfy the output - ctx.actions.expand_template( - output = ctx.outputs.explore_html, - template = ctx.file._no_explore_html, - substitutions = {}, - ) - files = [ - ctx.outputs.build_es2015, - ctx.outputs.build_es2015_min, - ctx.outputs.build_es2015_min_debug, - ctx.outputs.build_es5, - ctx.outputs.build_es5_min, - ctx.outputs.build_es5_min_debug, - code_split_es2015_output_dir, - code_split_es2015_min_output_dir, - code_split_es2015_min_debug_output_dir, - code_split_es5_output_dir, - code_split_es5_min_output_dir, - code_split_es5_min_debug_output_dir, - ] - output_group = OutputGroupInfo( - es2015 = depset([ctx.outputs.build_es2015, code_split_es2015_output_dir]), - es2015_min = depset([ctx.outputs.build_es2015_min, code_split_es2015_min_output_dir]), - es2015_min_debug = depset([ctx.outputs.build_es2015_min_debug, code_split_es2015_min_debug_output_dir]), - es5 = depset([ctx.outputs.build_es5, code_split_es5_output_dir]), - es5_min = depset([ctx.outputs.build_es5_min, code_split_es5_min_output_dir]), - es5_min_debug = depset([ctx.outputs.build_es5_min_debug, code_split_es5_min_debug_output_dir]), - ) - - else: - # Generate the bundles - rollup_config = write_rollup_config(ctx) - es2015_map = run_rollup(ctx, _collect_es2015_sources(ctx), rollup_config, ctx.outputs.build_es2015) - es2015_min_map = run_terser(ctx, ctx.outputs.build_es2015, ctx.outputs.build_es2015_min, config_name = ctx.label.name + "es2015_min", in_source_map = es2015_map) - es2015_min_debug_map = run_terser(ctx, ctx.outputs.build_es2015, ctx.outputs.build_es2015_min_debug, debug = True, config_name = ctx.label.name + "es2015_min_debug", in_source_map = es2015_map) - _run_tsc(ctx, ctx.outputs.build_es2015, ctx.outputs.build_es5) - es5_min_map = run_terser(ctx, ctx.outputs.build_es5, ctx.outputs.build_es5_min) - es5_min_debug_map = run_terser(ctx, ctx.outputs.build_es5, ctx.outputs.build_es5_min_debug, debug = True) - - cjs_rollup_config = write_rollup_config(ctx, filename = "_%s_cjs.rollup.conf.js", output_format = "cjs") - cjs_map = run_rollup(ctx, _collect_es2015_sources(ctx), cjs_rollup_config, ctx.outputs.build_cjs) - - umd_rollup_config = write_rollup_config(ctx, filename = "_%s_umd.rollup.conf.js", output_format = "umd") - umd_map = run_rollup(ctx, _collect_es2015_sources(ctx), umd_rollup_config, ctx.outputs.build_umd) - umd_min_map = run_terser(ctx, ctx.outputs.build_umd, ctx.outputs.build_umd_min, config_name = ctx.label.name + "umd_min", in_source_map = umd_map) - _run_tsc(ctx, ctx.outputs.build_umd, ctx.outputs.build_es5_umd) - es5_umd_min_map = run_terser(ctx, ctx.outputs.build_es5_umd, ctx.outputs.build_es5_umd_min, config_name = ctx.label.name + "es5umd_min") - - run_sourcemapexplorer(ctx, ctx.outputs.build_es5_min, es5_min_map, ctx.outputs.explore_html) - - files = [ctx.outputs.build_es5_min, es5_min_map] - output_group = OutputGroupInfo( - cjs = depset([ctx.outputs.build_cjs, cjs_map]), - es2015 = depset([ctx.outputs.build_es2015, es2015_map]), - es2015_min = depset([ctx.outputs.build_es2015_min, es2015_min_map]), - es2015_min_debug = depset([ctx.outputs.build_es2015_min_debug, es2015_min_debug_map]), - es5 = depset([ctx.outputs.build_es5]), - es5_min = depset([ctx.outputs.build_es5_min, es5_min_map]), - es5_min_debug = depset([ctx.outputs.build_es5_min_debug, es5_min_debug_map]), - es5_umd = depset([ctx.outputs.build_es5_umd]), - es5_umd_min = depset([ctx.outputs.build_es5_umd_min, es5_umd_min_map]), - umd = depset([ctx.outputs.build_umd, umd_map]), - umd_min = depset([ctx.outputs.build_umd_min, umd_min_map]), - ) - - return [ - DefaultInfo( - files = depset(files), - # NB: we don't include any runfiles here since they would always be built - # regardless if they are requested or not - ), - output_group, - ] - -# Expose our list of aspects so derivative rules can override the deps attribute and -# add their own additional aspects. -# If users are in a different repo and load the aspect themselves, they will create -# different Provider symbols (e.g. NpmPackageInfo) and we won't find them. -# So users must use these symbols that are load'ed in rules_nodejs. -ROLLUP_DEPS_ASPECTS = [rollup_module_mappings_aspect, node_modules_aspect] - -ROLLUP_ATTRS = { - "srcs": attr.label_list( - doc = """JavaScript source files from the workspace. - These can use ES2015 syntax and ES Modules (import/export)""", - allow_files = [".js"], - ), - "additional_entry_points": attr.string_list( - doc = """Additional entry points of the application for code splitting, passed as the input to rollup. - These should be a path relative to the workspace root. - - When additional_entry_points are specified, rollup_bundle - will split the bundle in multiple entry points and chunks. - There will be a main entry point chunk as well as entry point - chunks for each additional_entry_point. The file names - of these entry points will correspond to the file names - specified in entry_point and additional_entry_points. - There will also be one or more common chunks that are shared - between entry points named chunk-.js. The number - of common chunks is variable depending on the code being - bundled. - - Entry points and chunks will be outputted to folders: - - _chunks_es2015 // es2015 - - _chunks // es5 - - _chunks_min // es5 minified - - _chunks_min_debug // es5 minified debug - - The following files will be outputted that contain the - SystemJS boilerplate to map the entry points to their file - names and load the main entry point: - flavors: - - .es2015.js // es2015 with EcmaScript modules - - .js // es5 syntax with CJS modules - - .min.js // es5 minified - - .min_debug.js // es5 minified debug - - NOTE: additional_entry_points MUST be in the same folder or deeper than - the main entry_point for the SystemJS boilerplate/entry point to - be valid. For example, if the main entry_point is - `src/main` then all additional_entry_points must be under - `src/**` such as `src/bar` or `src/foo/bar`. Alternate - additional_entry_points configurations are valid but the - SystemJS boilerplate/entry point files will not be usable and - it is up to the user in these cases to handle the SystemJS - boilerplate manually. - - It is sufficient to load one of these SystemJS boilerplate/entry point - files as a script in your HTML to load your application""", - ), - "enable_code_splitting": attr.bool( - doc = """If True rollup will automatically determine entry points from - the source code. The rollup output format will be 'esm' and rollup will - create entry points based on ES6 import statements. See - https://rollupjs.org/guide/en#code-splitting - - Code splitting is always enabled when additional_entry_points is - non-empty. - - All automatic entry points will be named chunk-.js.""", - default = True, - ), - "entry_point": attr.label( - doc = """The starting point of the application, passed as the `--input` flag to rollup. - - 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: - - ``` - rollup_bundle( - name = "bundle", - entry_point = ":main.js", - ) - ``` - - You can specify the entry point as a typescript file so long as you also include - the ts_library target in deps: - - ``` - ts_library( - name = "main", - srcs = ["main.ts"], - ) - - rollup_bundle( - name = "bundle", - deps = [":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"], - ) - - rollup_bundle( - name = "bundle", - entry_point = ":entry_file", - ) - ``` - """, - mandatory = True, - allow_single_file = True, - ), - "global_name": attr.string( - doc = """A name given to this package when referenced as a global variable. - This name appears in the bundle module incantation at the beginning of the file, - and governs the global symbol added to the global context (e.g. `window`) as a side- - effect of loading the UMD/IIFE JS bundle. - - Rollup doc: "The variable name, representing your iife/umd bundle, by which other scripts on the same page can access it." - - This is passed to the `output.name` setting in Rollup.""", - ), - "globals": attr.string_dict( - doc = """A dict of symbols that reference external scripts. - The keys are variable names that appear in the program, - and the values are the symbol to reference at runtime in a global context (UMD bundles). - For example, a program referencing @angular/core should use ng.core - as the global reference, so Angular users should include the mapping - `"@angular/core":"ng.core"` in the globals.""", - default = {}, - ), - "license_banner": attr.label( - doc = """A .txt file passed to the `banner` config option of rollup. - The contents of the file will be copied to the top of the resulting bundles. - Note that you can replace a version placeholder in the license file, by using - the special version `0.0.0-PLACEHOLDER`. See the section on stamping in the README.""", - allow_single_file = [".txt"], - ), - "node_modules": attr.label( - doc = """Dependencies from npm that provide some modules that must be - resolved by rollup. - - 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 a rollup_bundle - target that used the `node_modules` attribute, - - ``` - rollup_bundle( - name = "bundle", - ... - node_modules = "//:node_modules", - ) - ``` - - which specifies all files within the `//:node_modules` filegroup - to be inputs to the `bundle`. Using fine grained npm dependencies, - `bundle` is defined with only the npm dependencies that are - needed: - - ``` - rollup_bundle( - name = "bundle", - ... - deps = [ - "@npm//foo", - "@npm//bar", - ... - ], - ) - ``` - - In this case, only the `foo` and `bar` npm packages and their - transitive deps are includes as inputs to the `bundle` 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", - ) - """, - default = Label("//:node_modules_none"), - ), - "deps": attr.label_list( - doc = """Other rules that produce JavaScript outputs, such as `ts_library`.""", - aspects = ROLLUP_DEPS_ASPECTS, - ), - "_no_explore_html": attr.label( - default = Label("@build_bazel_rules_nodejs//internal/rollup:no_explore.html"), - allow_single_file = True, - ), - "_rollup": attr.label( - executable = True, - cfg = "host", - default = Label("@build_bazel_rules_nodejs//internal/rollup:rollup"), - ), - "_rollup_config_tmpl": attr.label( - default = Label("@build_bazel_rules_nodejs//internal/rollup:rollup.config.js"), - allow_single_file = True, - ), - "_source_map_explorer": attr.label( - executable = True, - cfg = "host", - default = Label("@build_bazel_rules_nodejs//internal/rollup:source-map-explorer"), - ), - "_system_config_tmpl": attr.label( - default = Label("@build_bazel_rules_nodejs//internal/rollup:system.config.js"), - allow_single_file = True, - ), - "_terser_wrapped": attr.label( - executable = True, - cfg = "host", - default = Label("@build_bazel_rules_nodejs//internal/rollup:terser-wrapped"), - ), - "_tsc": attr.label( - executable = True, - cfg = "host", - default = Label("@build_bazel_rules_nodejs//internal/rollup:tsc"), - ), - "_tsc_directory": attr.label( - executable = True, - cfg = "host", - default = Label("@build_bazel_rules_nodejs//internal/rollup:tsc-directory"), - ), -} - -ROLLUP_OUTPUTS = { - "build_cjs": "%{name}.cjs.js", - "build_es2015": "%{name}.es2015.js", - "build_es2015_min": "%{name}.min.es2015.js", - "build_es2015_min_debug": "%{name}.min_debug.es2015.js", - "build_es5": "%{name}.js", - "build_es5_min": "%{name}.min.js", - "build_es5_min_debug": "%{name}.min_debug.js", - "build_es5_umd": "%{name}.es5umd.js", - "build_es5_umd_min": "%{name}.min.es5umd.js", - "build_umd": "%{name}.umd.js", - "build_umd_min": "%{name}.min.umd.js", - "explore_html": "%{name}.explore.html", -} - -rollup_bundle = rule( - implementation = _rollup_bundle, - attrs = ROLLUP_ATTRS, - doc = """Produces several bundled JavaScript files using Rollup and terser. - -Load it with -`load("@build_bazel_rules_nodejs//:index.bzl", "rollup_bundle")` - -It performs this work in several separate processes: -1. Call rollup on the original sources -2. Downlevel the resulting code to es5 syntax for older browsers -3. Minify the bundle with terser, possibly with pretty output for human debugging. - -The default output of a `rollup_bundle` rule is the non-debug-minified es5 bundle. - -However you can request one of the other outputs with a dot-suffix on the target's name. -For example, if your `rollup_bundle` is named `my_rollup_bundle`, you can use one of these labels: - -To request the ES2015 syntax (e.g. `class` keyword) without downleveling or minification, use the `:my_rollup_bundle.es2015.js` label. -To request the ES5 downleveled bundle without minification, use the `:my_rollup_bundle.js` label -To request the debug-minified es5 bundle, use the `:my_rollup_bundle.min_debug.js` label. -To request a UMD-bundle, use the `:my_rollup_bundle.umd.js` label. -To request a CommonJS bundle, use the `:my_rollup_bundle.cjs.js` label. - -You can also request an analysis from source-map-explorer by buildng the `:my_rollup_bundle.explore.html` label. -However this is currently broken for `rollup_bundle` ES5 mode because we use tsc for downleveling and -it doesn't compose the resulting sourcemaps with an input sourcemap. -See https://github.com/bazelbuild/rules_nodejs/issues/175 - -For debugging, note that the `rollup.config.js` and `terser.config.json` files can be found in the bazel-bin folder next to the resulting bundle. - -An example usage can be found in https://github.com/bazelbuild/rules_nodejs/tree/master/internal/rollup/test/rollup -""", - outputs = ROLLUP_OUTPUTS, -) diff --git a/internal/rollup/system.config.js b/internal/rollup/system.config.js deleted file mode 100644 index 0a284a630f..0000000000 --- a/internal/rollup/system.config.js +++ /dev/null @@ -1,12 +0,0 @@ -// SystemJS boilerplate/entry point TEMPLATE for code-split rollup_bundle. -// GENERATED BY Bazel -(function(global) { -System.config({ - packages: { - '': {map: TMPL_entry_points, defaultExtension: 'js'}, - } -}); -System.import('TMPL_main_entry_point').catch(function(err) { - console.error(err); -}); -})(this); diff --git a/internal/rollup/terser-wrapped.js b/internal/rollup/terser-wrapped.js deleted file mode 100644 index faed63a45c..0000000000 --- a/internal/rollup/terser-wrapped.js +++ /dev/null @@ -1,124 +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. - */ - -// A wrapper around terser-js that can handle minifying an entire -// directory. If the input is a directory then terser is run on -// each .js file in that folder and outputs to a specified output -// folder. If the input is a file then terser is just run -// one that individual file. - -const fs = require('fs'); -const path = require('path'); -const tmp = require('tmp'); -const child_process = require('child_process'); - -function log_verbose(...m) { - if (!!process.env['VERBOSE_LOGS']) console.error('[terser-wrapped.js]', ...m); -} - -// capture the inputs and output options -const argv = require('minimist')(process.argv.slice(2)); -const inputs = argv._; -const output = argv.output || argv.o; -const debug = !!process.env['debug'] || argv.debug; -const configFile = argv['config-file']; -// delete the properties extracted above as the remaining -// arguments are forwarded to terser in execFileSync below -delete argv._; -delete argv.output; -delete argv.o; -delete argv.debug; -delete argv['config-file']; - -log_verbose(`running with - cwd: ${process.cwd()} - argv: ${process.argv.slice(2).join(' ')} - inputs: ${JSON.stringify(inputs)} - output: ${output} - debug: ${debug} -`); - -if (inputs.length != 1) { - throw new Error(`Only one input file supported: ${inputs}`); -} - -const input = inputs[0]; - -function runterser(inputFile, outputFile, sourceMapFile) { - log_verbose(`minifying ${inputFile} -> ${outputFile} (sourceMap ${sourceMapFile})`); - - const terserConfig = { - 'sourceMap': {'filename': sourceMapFile}, - 'compress': { - 'pure_getters': true, - 'passes': 3, - 'global_defs': {'ngDevMode': false, 'ngI18nClosureMode': false}, - 'keep_fnames': !debug, - 'reduce_funcs': !debug, - 'reduce_vars': !debug, - 'sequences': !debug, - }, - 'mangle': !debug, - }; - - let config = configFile; - if (!config) { - config = tmp.fileSync({keep: false, postfix: '.json'}).name; - } - - fs.writeFileSync(config, JSON.stringify(terserConfig)); - - const args = [ - require.resolve('build_bazel_rules_nodejs_rollup_deps/node_modules/terser/bin/uglifyjs'), - inputFile, '--output', outputFile, '--config-file', config - ]; - - for (arg in argv) { - const prefix = arg.length == 1 ? '-' : '--'; - const value = argv[arg]; - args.push(prefix + arg); - if (value && value !== true) { - args.push(value); - } - } - - log_verbose(`running node ${args.join(' ')}`); - - const isWindows = /^win/i.test(process.platform); - child_process.execFileSync( - isWindows ? 'node.exe' : 'node', args, - {stdio: [process.stdin, process.stdout, process.stderr]}); -} - -const isDirectory = fs.lstatSync(path.join(process.cwd(), input)).isDirectory(); - -if (!isDirectory) { - runterser(input, output, output + '.map'); -} else { - if (!fs.existsSync(output)) { - fs.mkdirSync(output); - } - const dir = fs.readdirSync(input); - dir.forEach(f => { - if (f.endsWith('.js')) { - const inputFile = path.join(input, path.basename(f)); - const outputFile = path.join(output, path.basename(f)); - // TODO(gregmagolan): parallelize this into multiple processes? - runterser(inputFile, outputFile, outputFile + '.map'); - } - }); -} diff --git a/internal/rollup/tsc-directory.js b/internal/rollup/tsc-directory.js deleted file mode 100644 index a06b8c55fa..0000000000 --- a/internal/rollup/tsc-directory.js +++ /dev/null @@ -1,89 +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. - */ - -// A wrapper around tsc that handle running tsc on all files -// in a folder and also copies over all .js.map files to the -// output folder - -const fs = require('fs'); -const path = require('path'); -const child_process = require('child_process'); - -function log_verbose(...m) { - if (!!process.env['VERBOSE_LOGS']) console.error('[terser-wrapped.js]', ...m); -} - -// capture the inputs and output options -const argv = require('minimist')(process.argv.slice(2)); -const input = argv.input; -const output = argv.output; -const project = argv.project; - -log_verbose(`running with - cwd: ${process.cwd()} - input: ${input} - output: ${output} - project: ${project} -`); - -function runTsc(inputDir, outputDir, projectFile) { - log_verbose(`running tsc with ${project}`); - - const inputBasename = path.relative(path.dirname(projectFile), inputDir); - const outputBasename = path.relative(path.dirname(projectFile), outputDir); - - const tsConfig = { - 'compilerOptions': { - // no types needed since we are just downleveling - 'types': [], - 'skipLibCheck': true, - 'target': 'es5', - 'lib': ['es2015', 'dom'], - 'allowJs': true, - 'outDir': outputBasename, - }, - 'include': [`${inputBasename}/*`], - 'exclude': [] - }; - - fs.writeFileSync(projectFile, JSON.stringify(tsConfig)); - - const args = [ - require.resolve('build_bazel_rules_nodejs_rollup_deps/node_modules/typescript/lib/tsc.js'), - '--project', projectFile - ]; - - log_verbose(`running node ${args.join(' ')}`); - - const isWindows = /^win/i.test(process.platform); - child_process.execFileSync( - isWindows ? 'node.exe' : 'node', args, - {stdio: [process.stdin, process.stdout, process.stderr]}); -} - -// run tsc to generate the output .js files -runTsc(input, output, project) - -// copy all .js.map files from the input directory to the output directory -const dir = fs.readdirSync(input); -dir.forEach(f => { - if (f.endsWith('.js.map')) { - const inputFile = path.join(input, path.basename(f)); - const outputFile = path.join(output, path.basename(f)); - fs.copyFileSync(inputFile, outputFile); - } -}); diff --git a/internal/rollup/yarn.lock b/internal/rollup/yarn.lock deleted file mode 100644 index 6e35f521fd..0000000000 --- a/internal/rollup/yarn.lock +++ /dev/null @@ -1,1398 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@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== - dependencies: - "@buxlabs/ast" "^0.9.5" - "@buxlabs/utils" "^2.2.2" - array-uniq "^1.0.3" - commander "^2.13.0" - glob "^7.1.2" - 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== - -"@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@*": - version "11.13.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.13.0.tgz#b0df8d6ef9b5001b2be3a94d909ce3c29a80f9e1" - integrity sha512-rx29MMkRdVmzunmiA4lzBYJNnXsW/PhG4kMBy2ATsYaDjGGR75dCFEVVROKpNwlVdcUX3xxlghKQOeDPBJobng== - -"@types/node@^11.9.5": - version "11.9.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.9.5.tgz#011eece9d3f839a806b63973e228f85967b79ed3" - integrity sha512-vVjM0SVzgaOUpflq4GYBvCpozes8OgIIS5gVXVka+OfK3hvnkC1i93U8WiY2OtNE4XUWyyy/86Kf6e0IHTQw1Q== - -"@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" "*" - -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@^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.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" - integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== - -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: - 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-uniq@^1.0.3: - 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.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= - -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.7.2: - version "0.7.8" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.7.8.tgz#902d2e0d60d071bdcd46dc115e1809ed11c138a9" - integrity sha1-kC0uDWDQcb3NRtwRXhgJ7RHBOKk= - -atob@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.0.tgz#ab2b150e51d7b122b9efc8d7340c06b6c41076bc" - integrity sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw== - -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@^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: - 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" - -btoa@^1.1.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" - integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== - -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@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-2.0.0.tgz#60b7ef5ae6546bd7deefa74b08b62a43a232648e" - integrity sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg== - -builtin-modules@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.0.0.tgz#1e587d44b006620d90286cc7a9238bbc6129cab1" - integrity sha512-hMIeU4K2ilbXV6Uv93ZZ0Avg/M91RaKXucQ+4me2Do1txxBDyDZWCBa5bJSLqoNTRpXTLwEzIk1KmloenDDjhg== - -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" - -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" - -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" - -commander@^2.13.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - -commander@~2.17.1: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - -comparify@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/comparify/-/comparify-0.2.0.tgz#c1fd6aa1e1df222bbf10b0bbf17198397e70c66d" - integrity sha1-wf1qoeHfIiu/ELC78XGYOX5wxm0= - -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= - -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.1.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" - integrity sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU= - -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= - -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" - -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-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" - 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" - -docopt@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/docopt/-/docopt-0.6.2.tgz#b28e9e2220da5ec49f7ea5bb24a47787405eeb11" - integrity sha1-so6eIiDaXsSffqW7JKR3h0Be6xE= - -ejs@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" - integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ== - -escodegen@^1.9.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" - integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw== - 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= - -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== - dependencies: - estraverse "^4.0.0" - -estemplate@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/estemplate/-/estemplate-0.5.1.tgz#1714a9d46190738ac958bcafd49e029cda56a39e" - integrity sha1-FxSp1GGQc4rJWLyv1J4CnNpWo54= - dependencies: - esprima "^2.7.2" - estraverse "^4.1.1" - -estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= - -estree-walker@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.1.tgz#e6b1a51cf7292524e7237c312e5fe6660c1ce1aa" - integrity sha1-5rGlHPcpJSTnI3wxLl/mZgwc4ao= - -estree-walker@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" - integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig== - -estree-walker@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.0.tgz#5d865327c44a618dde5699f763891ae31f257dae" - integrity sha512-peq1RfVAVzr3PU/jL31RaOjUKLoZJpObQWJJ+LgfcxDUifyLZ1RjPQZTl0pzj2uJ45b7A7XpyppXvxdEqzo4rw== - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= - -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" - 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@^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" - 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@^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" - 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-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= - -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.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" - integrity sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM= - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - 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" - 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" - -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.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" - -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= - -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-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= - dependencies: - is-glob "^2.0.0" - -glob@^7.0.0, 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" - -glob@^7.1.2: - 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" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -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" - -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= - -interpret@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - -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-builtin-module@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-2.0.0.tgz#431104b3b4ba838ec7a17d82bb3bccd2233e8cd9" - integrity sha512-G2jLHphOywpgrL/AaJKWDXpdpGR9X4V1PCkB+EwG5Z28z8EukgdWnAUFAS2wdBtIpwHhHBIiq0NBOWEbSXN0Rg== - dependencies: - builtin-modules "^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" - 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-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" - 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@^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-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= - dependencies: - is-extglob "^1.0.0" - -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-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" - 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-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-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= - -isarray@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -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= - -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== - -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" - -magic-string@^0.25.1: - version "0.25.2" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.2.tgz#139c3a729515ec55e96e69e82a11fe890a293ad9" - integrity sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg== - dependencies: - sourcemap-codec "^1.4.4" - -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" - -micromatch@^2.3.11: - 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: - 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= - -minimist@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -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.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" - -normalize-path@^2.0.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" - -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.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" - 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" - -opn@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035" - integrity sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw== - dependencies: - is-wsl "^1.1.0" - -optionator@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - 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" - -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= - -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" - -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-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== - -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= - -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= - -prettier@^1.7.4: - version "1.16.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717" - integrity sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g== - -randomatic@^1.1.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" - integrity sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - -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" - 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.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo= - -repeat-string@^1.5.2, 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= - -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.6, resolve@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" - integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== - 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" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -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" - -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.2.1: - version "9.2.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.2.1.tgz#bb151ca8fa23600c7a03e25f9f0a45b1ee922dac" - integrity sha512-X0A/Cp/t+zbONFinBhiTZrfuUaVwRIp4xsbKq/2ohA2CDULa/7ONSJTelqxon+Vds2R2t2qJTqJQucKUC8GKkw== - dependencies: - estree-walker "^0.5.2" - magic-string "^0.25.1" - resolve "^1.10.0" - rollup-pluginutils "^2.3.3" - -rollup-plugin-json@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== - dependencies: - rollup-pluginutils "^2.5.0" - -rollup-plugin-node-resolve@~4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.2.0.tgz#f1f38392a97360195be04d3c3d791ddd9715d755" - integrity sha512-JhD9hcOFv4oPQ5zViwP3Z79WSXCvcoSDmtZ1tn2pOKry28+XpoRRzWZHp5qz1aPKtTHRLRoMMnrMxnwDhbtuUw== - dependencies: - "@types/resolve" "0.0.8" - builtin-modules "^3.0.0" - is-module "^1.0.0" - resolve "^1.10.0" - -rollup-plugin-sourcemaps@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.4.2.tgz#62125aa94087aadf7b83ef4dfaf629b473135e87" - integrity sha1-YhJaqUCHqt97g+9N+vYptHMTXoc= - dependencies: - rollup-pluginutils "^2.0.1" - source-map-resolve "^0.5.0" - -rollup-pluginutils@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz#7ec95b3573f6543a46a6461bd9a7c544525d0fc0" - integrity sha1-fslbNXP2VDpGpkYb2afFRFJdD8A= - dependencies: - estree-walker "^0.3.0" - micromatch "^2.3.11" - -rollup-pluginutils@^2.3.3: - version "2.4.1" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.4.1.tgz#de43ab54965bbf47843599a7f3adceb723de38db" - integrity sha512-wesMQ9/172IJDIW/lYWm0vW0LiKe5Ekjws481R7z9WTRtmO59cqyM/2uUlxvf6yzm/fElFmHUobeQOYz46dZJw== - dependencies: - estree-walker "^0.6.0" - micromatch "^3.1.10" - -rollup-pluginutils@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.6.0.tgz#203706edd43dfafeaebc355d7351119402fc83ad" - integrity sha512-aGQwspEF8oPKvg37u3p7h0cYNwmJR1sCBMZGZ5b9qy8HGtETknqjzcxrDRrcAnJNXN18lBH4Q9vZYth/p4n8jQ== - dependencies: - estree-walker "^0.6.0" - micromatch "^3.1.10" - -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" - -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" - -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" - -shelljs@0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097" - integrity sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -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-explorer@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/source-map-explorer/-/source-map-explorer-1.7.0.tgz#d6ff79eaf11990223c35ced78788c09d6e864968" - integrity sha512-S9Tb48Ia4ozNLvr0khOzygfoFjtzRVLD/h2I0VzwUoWz+rmuvNMzuzmbAHcK7/F6Gley3yhr1Mhoavokv5qg8A== - dependencies: - btoa "^1.1.2" - convert-source-map "^1.1.1" - docopt "^0.6.2" - ejs "^2.6.1" - glob "^7.1.2" - opn "^5.3.0" - source-map "^0.5.1" - temp "^0.9.0" - -source-map-resolve@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" - integrity sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A== - dependencies: - atob "^2.0.0" - 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.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-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.1, 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== - -sourcemap-codec@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz#c63ea927c029dd6bd9a2b7fa03b3fec02ad56e9f" - integrity sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg== - -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" - -temp@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.0.tgz#61391795a11bd9738d4c4d7f55f012cb8f55edaa" - integrity sha512-YfUhPQCJoNQE5N+FJQcdPz63O3x3sdT4Xju69Gj4iZe0lBKOtnAMi0SLj9xKhGkcGhsxThvTJ/usxtFPo438zQ== - dependencies: - rimraf "~2.6.2" - -terser@^3.16.1: - version "3.16.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-3.16.1.tgz#5b0dd4fa1ffd0b0b43c2493b2c364fd179160493" - integrity sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow== - dependencies: - commander "~2.17.1" - source-map "~0.6.1" - source-map-support "~0.5.9" - -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-ast@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-ast/-/to-ast-1.0.0.tgz#0c4a31c8c98edfde9aaf0192c794b4c8b11ee287" - integrity sha1-DEoxyMmO396arwGSx5S0yLEe4oc= - dependencies: - ast-types "^0.7.2" - esprima "^2.1.0" - -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-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" - -typescript@3.3.3333: - version "3.3.3333" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3333.tgz#171b2c5af66c59e9431199117a3bcadc66fdcfd6" - integrity sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw== - -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" - -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== - -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=