From 3d39100c85d3ea126db3d6d1f04c73fe74d9ce94 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 7 Feb 2019 19:02:07 +0100 Subject: [PATCH] feat(bazel): add dts bundler as action to ng_module (#28588) This enabled dts flattening in the final distrubutable package. Notes: - For the time being this is an opt-in feature via the `ng_module` attribute `bundle_dts`, however in the near future this will be turned on by default. - This only supports the legacy compiler `ngc`, as `ngtsc` emits namespaced imports `import * as __` from local modules which is not supported for the time being by API Extractor. See: https://github.com/Microsoft/web-build-tools/issues/1029 Ref: TOOL-611 PR Close #28588 --- package.json | 1 + packages/bazel/package.json | 1 + packages/bazel/src/api-extractor/BUILD.bazel | 27 ++++ packages/bazel/src/api-extractor/index.ts | 115 +++++++++++++ packages/bazel/src/external.bzl | 1 + packages/bazel/src/ng_module.bzl | 69 +++++++- packages/bazel/src/ng_package/ng_package.bzl | 34 ++-- packages/bazel/src/ng_package/packager.ts | 76 +++++++-- packages/bazel/yarn.lock | 162 ++++++++++++++++++- yarn.lock | 144 +++++++++++++++-- 10 files changed, 593 insertions(+), 37 deletions(-) create mode 100644 packages/bazel/src/api-extractor/BUILD.bazel create mode 100644 packages/bazel/src/api-extractor/index.ts diff --git a/package.json b/package.json index 52aaf9d504..ef06a7f80a 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "@angular-devkit/schematics": "^7.3.0-rc.0", "@bazel/karma": "0.23.2", "@bazel/typescript": "0.23.2", + "@microsoft/api-extractor": "^7.0.11", "@schematics/angular": "^7.0.4", "@types/angular": "^1.6.47", "@types/base64-js": "1.2.5", diff --git a/packages/bazel/package.json b/packages/bazel/package.json index 52d133f937..446f5331e4 100644 --- a/packages/bazel/package.json +++ b/packages/bazel/package.json @@ -16,6 +16,7 @@ "@angular-devkit/core": "^7.0.4", "@angular-devkit/schematics": "^7.3.0-rc.0", "@bazel/typescript": "^0.23.2", + "@microsoft/api-extractor": "^7.0.11", "@schematics/angular": "^7.0.4", "@types/node": "6.0.84", "semver": "^5.6.0", diff --git a/packages/bazel/src/api-extractor/BUILD.bazel b/packages/bazel/src/api-extractor/BUILD.bazel new file mode 100644 index 0000000000..b0a9bf207d --- /dev/null +++ b/packages/bazel/src/api-extractor/BUILD.bazel @@ -0,0 +1,27 @@ +package(default_visibility = ["//packages:__subpackages__"]) + +load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary") +load("//tools:defaults.bzl", "ts_library") + +ts_library( + name = "lib", + srcs = [ + "index.ts", + ], + deps = [ + "@ngdeps//@bazel/typescript", + "@ngdeps//@microsoft/api-extractor", + "@ngdeps//@types/node", + ], +) + +nodejs_binary( + name = "api_extractor", + data = [ + ":lib", + "@ngdeps//@bazel/typescript", + "@ngdeps//@microsoft/api-extractor", + ], + entry_point = "angular/packages/bazel/src/api-extractor/index.js", + visibility = ["//visibility:public"], +) diff --git a/packages/bazel/src/api-extractor/index.ts b/packages/bazel/src/api-extractor/index.ts new file mode 100644 index 0000000000..c895891c96 --- /dev/null +++ b/packages/bazel/src/api-extractor/index.ts @@ -0,0 +1,115 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +/// +/// + +import {format, parseTsconfig} from '@bazel/typescript'; +import {Extractor, ExtractorValidationRulePolicy, IExtractorConfig, IExtractorOptions} from '@microsoft/api-extractor'; +import * as fs from 'fs'; +import * as path from 'path'; + +const DEBUG = false; + +export function runMain( + tsConfig: string, entryPoint: string, dtsBundleOut?: string, apiReviewFolder?: string, + acceptApiUpdates = false): 1|0 { + const [parsedConfig, errors] = parseTsconfig(tsConfig); + if (errors && errors.length) { + console.error(format('', errors)); + + return 1; + } + + const pkgJson = path.resolve(path.dirname(entryPoint), 'package.json'); + if (!fs.existsSync(pkgJson)) { + fs.writeFileSync(pkgJson, JSON.stringify({ + 'name': 'GENERATED-BY-BAZEL', + 'version': '0.0.0', + 'description': 'This is a dummy package.json as API Extractor always requires one.', + })); + } + + // API extractor doesn't always support the version of TypeScript used in the repo + // example: at the moment it is not compatable with 3.2 + // to use the internal TypeScript we shall not create a program but rather pass a parsed tsConfig. + const parsedTsConfig = parsedConfig !.config as any; + const compilerOptions = parsedTsConfig.compilerOptions; + for (const [key, values] of Object.entries(compilerOptions.paths)) { + if (key === '*') { + continue; + } + + // we shall not pass ts files as this will need to be parsed, and for example rxjs, + // cannot be compiled with our tsconfig, as ours is more strict + // hence amend the paths to point always to the '.d.ts' files. + compilerOptions.paths[key] = values.map(path => { + const pathSuffix = /(\*|index)$/.test(path) ? '.d.ts' : '/index.d.ts'; + + return path + pathSuffix; + }); + } + + const extractorOptions: IExtractorOptions = { + localBuild: acceptApiUpdates, + customLogger: DEBUG ? undefined : { + // don't log verbose messages when not in debug mode + logVerbose: _message => {} + } + }; + + const extractorConfig: IExtractorConfig = { + compiler: { + configType: 'tsconfig', + overrideTsconfig: parsedTsConfig, + rootFolder: path.resolve(path.dirname(tsConfig)) + }, + project: { + entryPointSourceFile: path.resolve(entryPoint), + }, + apiReviewFile: { + enabled: !!apiReviewFolder, + apiReviewFolder: apiReviewFolder && path.resolve(apiReviewFolder), + }, + apiJsonFile: { + enabled: false, + }, + policies: { + namespaceSupport: 'permissive', + }, + validationRules: { + missingReleaseTags: ExtractorValidationRulePolicy.allow, + }, + dtsRollup: { + enabled: !!dtsBundleOut, + publishFolder: dtsBundleOut && path.resolve(path.dirname(dtsBundleOut)), + mainDtsRollupPath: dtsBundleOut && path.basename(dtsBundleOut), + } + }; + + const extractor = new Extractor(extractorConfig, extractorOptions); + const isSuccessful = extractor.processProject(); + + // API extractor errors are emitted by it's logger. + return isSuccessful ? 0 : 1; +} + +// Entry point +if (require.main === module) { + if (DEBUG) { + console.error(` +api-extractor: running with + cwd: ${process.cwd()} + argv: + ${process.argv.join('\n ')} + `); + } + + const [tsConfig, entryPoint, dtsBundleOut] = process.argv.slice(2); + process.exitCode = runMain(tsConfig, entryPoint, dtsBundleOut); +} diff --git a/packages/bazel/src/external.bzl b/packages/bazel/src/external.bzl index a054142fa2..af5c6bd007 100644 --- a/packages/bazel/src/external.bzl +++ b/packages/bazel/src/external.bzl @@ -30,3 +30,4 @@ ts_providers_dict_to_struct = _ts_providers_dict_to_struct DEFAULT_NG_COMPILER = "@angular//:@angular/bazel/ngc-wrapped" DEFAULT_NG_XI18N = "@npm//@angular/bazel/bin:xi18n" +FLAT_DTS_FILE_SUFFIX = ".bundle.d.ts" diff --git a/packages/bazel/src/ng_module.bzl b/packages/bazel/src/ng_module.bzl index e6289e8640..42517dbc48 100644 --- a/packages/bazel/src/ng_module.bzl +++ b/packages/bazel/src/ng_module.bzl @@ -12,6 +12,7 @@ load( "DEFAULT_NG_COMPILER", "DEFAULT_NG_XI18N", "DEPS_ASPECTS", + "FLAT_DTS_FILE_SUFFIX", "NodeModuleInfo", "collect_node_modules_aspect", "compile_ts", @@ -121,6 +122,24 @@ def _flat_module_out_file(ctx): return ctx.attr.flat_module_out_file return "%s_public_index" % ctx.label.name +def _should_produce_dts_bundle(ctx): + """Should we produce dts bundles. + + We only produce flatten dts outs when we expect the ng_module is meant to be published, + based on the value of the bundle_dts attribute. + + Args: + ctx: skylark rule execution context + + Returns: + true when we should produce bundled dts. + """ + + # At the moment we cannot use this with ngtsc compiler since it emits + # import * as ___ from local modules which is not supported + # see: https://github.com/Microsoft/web-build-tools/issues/1029 + return _is_legacy_ngc(ctx) and ctx.attr.bundle_dts + def _should_produce_flat_module_outs(ctx): """Should we produce flat module outputs. @@ -200,6 +219,14 @@ def _expected_outs(ctx): if not _is_bazel(): metadata_files += [ctx.actions.declare_file(basename + ext) for ext in metadata] + dts_bundle = None + if _should_produce_dts_bundle(ctx): + # We need to add a suffix to bundle as it might collide with the flat module dts. + # The flat module dts out contains several other exports + # https://github.com/angular/angular/blob/master/packages/compiler-cli/src/metadata/index_writer.ts#L18 + # the file name will be like 'core.bundle.d.ts' + dts_bundle = ctx.actions.declare_file(ctx.label.name + FLAT_DTS_FILE_SUFFIX) + # We do this just when producing a flat module index for a publishable ng_module if _should_produce_flat_module_outs(ctx): flat_module_out = _flat_module_out_file(ctx) @@ -225,6 +252,7 @@ def _expected_outs(ctx): declarations = declaration_files, summaries = summary_files, metadata = metadata_files, + dts_bundle = dts_bundle, bundle_index_typings = bundle_index_typings, i18n_messages = i18n_messages_files, ) @@ -302,6 +330,7 @@ def ngc_compile_action( label, inputs, outputs, + dts_bundle_out, messages_out, tsconfig_file, node_opts, @@ -317,6 +346,7 @@ def ngc_compile_action( label: the label of the ng_module being compiled inputs: passed to the ngc action's inputs outputs: passed to the ngc action's outputs + dts_bundle_out: produced flattened dts file messages_out: produced xmb files tsconfig_file: tsconfig file with settings used for the compilation node_opts: list of strings, extra nodejs options. @@ -380,6 +410,28 @@ def ngc_compile_action( mnemonic = "Angular2MessageExtractor", ) + if dts_bundle_out != None: + # combine the inputs and outputs and filter .d.ts and json files + filter_inputs = [f for f in inputs + outputs if f.path.endswith(".d.ts") or f.path.endswith(".json")] + + if _should_produce_flat_module_outs(ctx): + dts_entry_point = "%s.d.ts" % _flat_module_out_file(ctx) + else: + dts_entry_point = ctx.attr.entry_point.replace(".ts", ".d.ts") + + ctx.actions.run( + progress_message = "Bundling DTS %s" % str(ctx.label), + mnemonic = "APIExtractor", + executable = ctx.executable._api_extractor, + inputs = filter_inputs, + outputs = [dts_bundle_out], + arguments = [ + tsconfig_file.path, + "/".join([ctx.bin_dir.path, ctx.label.package, dts_entry_point]), + dts_bundle_out.path, + ], + ) + if not locale and not ctx.attr.no_i18n: return struct( label = label, @@ -400,7 +452,7 @@ def _filter_ts_inputs(all_inputs): if f.path.endswith(".js") or f.path.endswith(".ts") or f.path.endswith(".json") ] -def _compile_action(ctx, inputs, outputs, messages_out, tsconfig_file, node_opts): +def _compile_action(ctx, inputs, outputs, dts_bundle_out, messages_out, tsconfig_file, node_opts): # Give the Angular compiler all the user-listed assets file_inputs = list(ctx.files.assets) @@ -427,16 +479,16 @@ def _compile_action(ctx, inputs, outputs, messages_out, tsconfig_file, node_opts ], ) - return ngc_compile_action(ctx, ctx.label, action_inputs, outputs, messages_out, tsconfig_file, node_opts) + return ngc_compile_action(ctx, ctx.label, action_inputs, outputs, dts_bundle_out, messages_out, tsconfig_file, node_opts) def _prodmode_compile_action(ctx, inputs, outputs, tsconfig_file, node_opts): outs = _expected_outs(ctx) - return _compile_action(ctx, inputs, outputs + outs.closure_js, outs.i18n_messages, tsconfig_file, node_opts) + return _compile_action(ctx, inputs, outputs + outs.closure_js, None, outs.i18n_messages, tsconfig_file, node_opts) def _devmode_compile_action(ctx, inputs, outputs, tsconfig_file, node_opts): outs = _expected_outs(ctx) compile_action_outputs = outputs + outs.devmode_js + outs.declarations + outs.summaries + outs.metadata - _compile_action(ctx, inputs, compile_action_outputs, None, tsconfig_file, node_opts) + _compile_action(ctx, inputs, compile_action_outputs, outs.dts_bundle, None, tsconfig_file, node_opts) def _ts_expected_outs(ctx, label, srcs_files = []): # rules_typescript expects a function with two or more arguments, but our @@ -497,6 +549,9 @@ def ng_module_impl(ctx, ts_compile_actions): flat_module_out_file = _flat_module_out_file(ctx), ) + if outs.dts_bundle != None: + providers["dts_bundle"] = outs.dts_bundle + return providers def _ng_module_impl(ctx): @@ -551,6 +606,11 @@ NG_MODULE_ATTRIBUTES = { executable = True, cfg = "host", ), + "_api_extractor": attr.label( + default = Label("//packages/bazel/src/api-extractor:api_extractor"), + executable = True, + cfg = "host", + ), "_supports_workers": attr.bool(default = True), } @@ -630,6 +690,7 @@ NG_MODULE_RULE_ATTRS = dict(dict(COMMON_ATTRIBUTES, **NG_MODULE_ATTRIBUTES), **{ # See the flatModuleOutFile documentation in # https://github.com/angular/angular/blob/master/packages/compiler-cli/src/transformers/api.ts "flat_module_out_file": attr.string(), + "bundle_dts": attr.bool(default = False), }) ng_module = rule( diff --git a/packages/bazel/src/ng_package/ng_package.bzl b/packages/bazel/src/ng_package/ng_package.bzl index 7ec11d1f7e..c1b4c64492 100644 --- a/packages/bazel/src/ng_package/ng_package.bzl +++ b/packages/bazel/src/ng_package/ng_package.bzl @@ -29,6 +29,7 @@ load( "NPM_PACKAGE_OUTPUTS", "create_package", ) +load("//packages/bazel/src:external.bzl", "FLAT_DTS_FILE_SUFFIX") load("//packages/bazel/src:esm5.bzl", "esm5_outputs_aspect", "esm5_root_dir", "flatten_esm5") load("//packages/bazel/src/ng_package:collect-type-definitions.bzl", "collect_type_definitions") @@ -188,15 +189,6 @@ def _ng_package_impl(ctx): esm_2015_files = _filter_out_generated_files(collect_es6_sources(ctx), "js") esm5_sources = _filter_out_generated_files(flatten_esm5(ctx), "js") - # Filter out all TypeScript definitions generated by NGC as well as definition files - # that do not belong to the current package. We only want to package types that belong - # to the current package. - type_definitions = _filter_out_generated_files( - collect_type_definitions(ctx), - "d.ts", - ctx.label.package, - ) - # These accumulators match the directory names where the files live in the # Angular package format. fesm2015 = [] @@ -204,6 +196,8 @@ def _ng_package_impl(ctx): esm2015 = [] esm5 = [] bundles = [] + bundled_type_definitions = [] + type_definitions = [] # For Angular Package Format v6, we put all the individual .js files in the # esm5/ and esm2015/ folders. @@ -235,6 +229,22 @@ def _ng_package_impl(ctx): # fallback to a reasonable default flat_module_out_file = "index.js" + if hasattr(dep, "dts_bundle"): + bundled_type_definitions.append(dep.dts_bundle) + elif len(type_definitions) == 0: + # Filter out all TypeScript definitions generated by NGC as well as definition files + # that do not belong to the current package. We only want to package types that belong + # to the current package. + type_definitions = _filter_out_generated_files( + collect_type_definitions(ctx), + "d.ts", + ctx.label.package, + ).to_list() + + if len(type_definitions) > 0 and len(bundled_type_definitions) > 0: + # bundle_dts needs to be enabled/disabled for all ng module packages. + fail("Expected all or none of the 'ng_module' dependencies to have 'bundle_dts' enabled.") + es2015_entry_point = "/".join([p for p in [ ctx.bin_dir.path, ctx.label.package, @@ -304,7 +314,8 @@ def _ng_package_impl(ctx): ctx.files.srcs + ctx.files.data + esm5_sources.to_list() + - type_definitions.to_list() + + type_definitions + + bundled_type_definitions + [f.js for f in fesm2015 + fesm5 + esm2015 + esm5 + bundles] + [f.map for f in fesm2015 + fesm5 + esm2015 + esm5 + bundles if f.map] ) @@ -355,6 +366,9 @@ def _ng_package_impl(ctx): # placeholder packager_args.add("") + packager_args.add_joined([d.path for d in bundled_type_definitions], join_with = ",", omit_if_empty = False) + packager_args.add(FLAT_DTS_FILE_SUFFIX) + ctx.actions.run( progress_message = "Angular Packaging: building npm package %s" % str(ctx.label), mnemonic = "AngularPackage", diff --git a/packages/bazel/src/ng_package/packager.ts b/packages/bazel/src/ng_package/packager.ts index 817a4ae92d..deb6b432ce 100644 --- a/packages/bazel/src/ng_package/packager.ts +++ b/packages/bazel/src/ng_package/packager.ts @@ -45,7 +45,7 @@ function main(args: string[]): number { // flat module metadata, for example // {"@angular/core": { // "index": "bazel-bin/packages/core/core.js", - // "typing": "bazel-bin/packages/core/core.d.ts", + // "typings": "bazel-bin/packages/core/core.d.ts", // "metadata": "bazel-bin/packages/core/core.metadata.json" // }, // ... @@ -81,6 +81,12 @@ function main(args: string[]): number { // Path to the package's LICENSE. licenseFile, + + // List of all dts bundles generated by the API extractor. + dtsBundleArg, + + // The dts bundle file suffix example: '.bundle.d.ts' + dtsBundleFileSuffix, ] = params; const fesm2015 = fesm2015Arg.split(',').filter(s => !!s); @@ -92,6 +98,7 @@ function main(args: string[]): number { const srcs = srcsArg.split(',').filter(s => !!s); const dataFiles: string[] = dataArg.split(',').filter(s => !!s); const modulesManifest = JSON.parse(modulesManifestArg); + const dtsBundles: string[] = dtsBundleArg.split(',').filter(s => !!s); if (readmeMd) { copyFile(readmeMd, out); @@ -155,12 +162,7 @@ function main(args: string[]): number { // Copy all type definitions into the package. This is necessary so that developers can use // the package with type definitions. - typeDefinitions.forEach((f: string) => { - const content = fs.readFileSync(f, 'utf-8') - // Strip the named AMD module for compatibility with non-bazel users - .replace(/^\/\/\/ [\r\n]+/gm, ''); - writeFileFromInputPath(f, content); - }); + typeDefinitions.forEach(f => writeFileFromInputPath(f, readTypingsAndStripAmdModule(f))); // Copy all `data` files into the package. These are files that aren't built by the ng_package // rule, but instead are just straight copied into the package, e.g. global CSS assets. @@ -176,7 +178,30 @@ function main(args: string[]): number { moduleFiles['esm5_index'] = path.join(binDir, 'esm5', relative); moduleFiles['esm2015_index'] = path.join(binDir, 'esm2015', relative); - copyFileFromInputPath(moduleFiles['metadata']); + const metadataFile = moduleFiles['metadata']; + const typingsOutFile = moduleFiles['typings']; + + // We only support all modules within a package to be dts bundled + // ie: if @angular/common/http has flat dts, so should @angular/common + if (dtsBundles.length) { + const metadataContent = rewireMetadata(metadataFile, typingsOutFile); + writeFileFromInputPath(metadataFile, metadataContent); + } else { + copyFileFromInputPath(metadataFile); + } + }); + + const licenseBanner = licenseFile ? fs.readFileSync(licenseFile, 'utf-8') : ''; + + dtsBundles.forEach(bundleFile => { + const cleanDistPath = bundleFile.replace(dtsBundleFileSuffix, '.d.ts'); + // API extractor will not dedupe license comments from various files + // this will remove all the license comments and append the license banner. + const content = licenseBanner + '\n' + + readTypingsAndStripAmdModule(bundleFile) + .replace(/(\/\*\*\s+\*\s\@license(((?!\*\/).|\s)*)\*\/)/gm, ''); + + writeFileFromInputPath(cleanDistPath, content); }); // Root package name (e.g. '@angular/common'), captures as we iterate through sources below. @@ -210,8 +235,6 @@ function main(args: string[]): number { writeFileFromInputPath(src, content); } - const licenseBanner = licenseFile ? fs.readFileSync(licenseFile, 'utf-8') : ''; - // Generate extra files for secondary entry-points. Object.keys(modulesManifest).forEach(entryPointPackageName => { const entryPointName = entryPointPackageName.substr(rootPackageName.length + 1); @@ -368,6 +391,39 @@ export * from '${srcDirRelative(inputPath, typingsFile.replace(/\.d\.tsx?$/, '') * forward slash separators. */ function normalizeSeparators(path: string): string { return path.replace(/\\/g, '/'); } + + /** + * Rewires metadata to point to the flattened dts file. + * + * @param metadataPath the metadata file path + * @param typingsPath the typings bundle entrypoint + */ + function rewireMetadata(metadataPath: string, typingsPath: string): string { + const metadata = fs.readFileSync(metadataPath, 'utf-8'); + + let typingsRelativePath = + normalizeSeparators(path.relative(path.dirname(metadataPath), typingsPath)); + if (!typingsRelativePath.startsWith('..')) { + typingsRelativePath = `./${typingsRelativePath}`; + } + + typingsRelativePath = typingsRelativePath.replace('.d.ts', ''); + + // the regexp here catches all relative paths such as: + // ./src/core/foo.d.ts and ../src/core/foo.d.ts + return metadata.replace(/\.?\.\/[\w\.\-_\/]+/g, typingsRelativePath); + } + + /** + * Strip the named AMD module for compatibility with non-bazel users from typings content + * @param filePath dts file path + */ + function readTypingsAndStripAmdModule(filePath: string): string { + return fs + .readFileSync(filePath, 'utf-8') + // Strip the named AMD module for compatibility with non-bazel users + .replace(/^\/\/\/ [\r\n]+/gm, ''); + } } if (require.main === module) { diff --git a/packages/bazel/yarn.lock b/packages/bazel/yarn.lock index d66c360e0e..5ff955c516 100644 --- a/packages/bazel/yarn.lock +++ b/packages/bazel/yarn.lock @@ -70,6 +70,51 @@ source-map-support "0.5.9" tsutils "2.27.2" +"@microsoft/api-extractor@^7.0.11": + version "7.0.14" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.0.14.tgz#cc137b203cb5ad1bcca1e9bdf32d2593f867437b" + integrity sha512-ZKieNJBQLJx+5c4DrpTbRw8wuiAvffZesZs3HFBlUz1DSr23A2JrD+obqe07iRCXymSYSDp4Nh5wN9JydnR/Rw== + dependencies: + "@microsoft/node-core-library" "3.9.0" + "@microsoft/ts-command-line" "4.2.3" + "@microsoft/tsdoc" "0.12.5" + "@types/node" "8.5.8" + "@types/z-schema" "3.16.31" + colors "~1.2.1" + lodash "~4.17.5" + resolve "1.8.1" + typescript "~3.1.6" + z-schema "~3.18.3" + +"@microsoft/node-core-library@3.9.0": + version "3.9.0" + resolved "https://registry.yarnpkg.com/@microsoft/node-core-library/-/node-core-library-3.9.0.tgz#a999c15c45707bfd5e2329518e00cb2c8d33b55c" + integrity sha512-zmP6zNddcIrRXbg8NX9oHX2iCBLU9hZF/+7GeUi3hLbp13xMDHfdT4KepoT+8ZMOMZzRF1lcqiTiVy24VYvCEg== + dependencies: + "@types/fs-extra" "5.0.4" + "@types/jju" "~1.4.0" + "@types/node" "8.5.8" + "@types/z-schema" "3.16.31" + colors "~1.2.1" + fs-extra "~7.0.1" + jju "~1.4.0" + z-schema "~3.18.3" + +"@microsoft/ts-command-line@4.2.3": + version "4.2.3" + resolved "https://registry.yarnpkg.com/@microsoft/ts-command-line/-/ts-command-line-4.2.3.tgz#20d6a1684148b9fc0df25ee7335c3bb227d47d4f" + integrity sha512-SIs4q7RcG7efBbh5Ffrf6V4jVLxWihD4NDRY3+gPiOG8CYawBzE22tTEloZ1yj/FBvBZQkQ0GYwXoPhn6ElYXA== + dependencies: + "@types/argparse" "1.0.33" + "@types/node" "8.5.8" + argparse "~1.0.9" + colors "~1.2.1" + +"@microsoft/tsdoc@0.12.5": + version "0.12.5" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.12.5.tgz#c448a38902ccb5601c1b2ef3b1a105012ef7712c" + integrity sha512-xEAyvLXo4Cter/b0EMCWUZTgXOfLOPJ/Xr52WdjVclPx9eDmNTGFtZl8Pn/nqSnZsQBNcHL0eHk/YyRyyXXpiQ== + "@schematics/angular@^7.0.4": version "7.1.2" resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-7.1.2.tgz#b3eefbc81d12b0b53816896f6172eb613885826c" @@ -79,11 +124,43 @@ "@angular-devkit/schematics" "7.1.2" typescript "3.1.6" +"@types/argparse@1.0.33": + version "1.0.33" + resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.33.tgz#2728669427cdd74a99e53c9f457ca2866a37c52d" + integrity sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ== + +"@types/fs-extra@5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-5.0.4.tgz#b971134d162cc0497d221adde3dbb67502225599" + integrity sha512-DsknoBvD8s+RFfSGjmERJ7ZOP1HI0UZRA3FSI+Zakhrc/Gy26YQsLI+m5V5DHxroHRJqCDLKJp7Hixn8zyaF7g== + dependencies: + "@types/node" "*" + +"@types/jju@~1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@types/jju/-/jju-1.4.0.tgz#ee074af79540c0e187426f46f12acbe8f6c31232" + integrity sha512-s6l49zLzFiXYHaTXbA+FNcDRo8ufZgC2/T5/jH+Wfr+ZV2tYbrBpEpN9oPkXXfug+y7pTZFkdeyQ0L/88Z34JA== + +"@types/node@*": + version "10.12.21" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.21.tgz#7e8a0c34cf29f4e17a36e9bd0ea72d45ba03908e" + integrity sha512-CBgLNk4o3XMnqMc0rhb6lc77IwShMEglz05deDcn2lQxyXEZivfwgYJu7SMha9V5XcrP6qZuevTHV/QrN2vjKQ== + "@types/node@6.0.84": version "6.0.84" resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.84.tgz#193ffe5a9f42864d425ffd9739d95b753c6a1eab" integrity sha512-1SvEazClhUBRNroJM3oB3xf3u2r6xGmHDGbdigqNPHvNKLl8/BtATgO9eC04ZLuovpSh0B20BF1QJxdi+qmTlg== +"@types/node@8.5.8": + version "8.5.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.5.8.tgz#92509422653f10e9c0ac18d87e0610b39f9821c7" + integrity sha512-8KmlRxwbKZfjUHFIt3q8TF5S2B+/E5BaAoo/3mgc5h6FJzqxXkCK/VMetO+IRDtwtU6HUvovHMBn+XRj7SV9Qg== + +"@types/z-schema@3.16.31": + version "3.16.31" + resolved "https://registry.yarnpkg.com/@types/z-schema/-/z-schema-3.16.31.tgz#2eb1d00a5e4ec3fa58c76afde12e182b66dc5c1c" + integrity sha1-LrHQCl5Ow/pYx2r94S4YK2bcXBw= + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -140,6 +217,13 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +argparse@~1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -319,11 +403,21 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" +colors@~1.2.1: + version "1.2.5" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc" + integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg== + colour@~0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= +commander@^2.7.1: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== + component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" @@ -477,6 +571,15 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" +fs-extra@~7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -536,7 +639,7 @@ glob@^7.0.0, glob@^7.0.5: once "^1.3.0" path-is-absolute "^1.0.0" -graceful-fs@^4.1.11: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== @@ -761,11 +864,23 @@ jasmine-core@2.8.0: resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= +jju@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" + integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo= + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + 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" @@ -802,6 +917,21 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= +lodash.get@^4.0.0: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + +lodash.isequal@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + +lodash@~4.17.5: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + long@~3: version "3.2.0" resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" @@ -1157,7 +1287,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6: +resolve@1.8.1, resolve@^1.1.6: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== @@ -1325,6 +1455,11 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -1435,7 +1570,7 @@ tsutils@2.27.2: dependencies: tslib "^1.8.1" -typescript@3.1.6: +typescript@3.1.6, typescript@~3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== @@ -1450,6 +1585,11 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^0.4.3" +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -1485,6 +1625,11 @@ util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +validator@^8.0.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-8.2.0.tgz#3c1237290e37092355344fef78c231249dab77b9" + integrity sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA== + wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -1532,3 +1677,14 @@ yargs@^3.10.0: string-width "^1.0.1" window-size "^0.1.4" y18n "^3.2.0" + +z-schema@~3.18.3: + version "3.18.4" + resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-3.18.4.tgz#ea8132b279533ee60be2485a02f7e3e42541a9a2" + integrity sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw== + dependencies: + lodash.get "^4.0.0" + lodash.isequal "^4.0.0" + validator "^8.0.0" + optionalDependencies: + commander "^2.7.1" diff --git a/yarn.lock b/yarn.lock index d8292bee0e..528d2f6387 100644 --- a/yarn.lock +++ b/yarn.lock @@ -248,6 +248,51 @@ through2 "^2.0.0" xdg-basedir "^3.0.0" +"@microsoft/api-extractor@^7.0.11": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.0.15.tgz#58a0fe18b72e648e4b38f5666e5db8a6c14977bf" + integrity sha512-C9HqdZ8LzkYno0BsllyvezsBfDeyNLntkF3fAIF90wPG322NUkAIOGvU127aVjcfPVNmt2a/oOkOy8k9N2bQwQ== + dependencies: + "@microsoft/node-core-library" "3.10.0" + "@microsoft/ts-command-line" "4.2.3" + "@microsoft/tsdoc" "0.12.5" + "@types/node" "8.5.8" + "@types/z-schema" "3.16.31" + colors "~1.2.1" + lodash "~4.17.5" + resolve "1.8.1" + typescript "~3.1.6" + z-schema "~3.18.3" + +"@microsoft/node-core-library@3.10.0": + version "3.10.0" + resolved "https://registry.yarnpkg.com/@microsoft/node-core-library/-/node-core-library-3.10.0.tgz#70e089534d8e20f6a0f9c7a4a12a6aeafd6a1ddb" + integrity sha512-1SbU+XNYAabhV9noGXHtsUVPc5ELV+oEuJQtZQoCncbOd6WAMeTgB1xFwh96hmdEXyKQyML/pnByiKocmh/nbQ== + dependencies: + "@types/fs-extra" "5.0.4" + "@types/jju" "~1.4.0" + "@types/node" "8.5.8" + "@types/z-schema" "3.16.31" + colors "~1.2.1" + fs-extra "~7.0.1" + jju "~1.4.0" + z-schema "~3.18.3" + +"@microsoft/ts-command-line@4.2.3": + version "4.2.3" + resolved "https://registry.yarnpkg.com/@microsoft/ts-command-line/-/ts-command-line-4.2.3.tgz#20d6a1684148b9fc0df25ee7335c3bb227d47d4f" + integrity sha512-SIs4q7RcG7efBbh5Ffrf6V4jVLxWihD4NDRY3+gPiOG8CYawBzE22tTEloZ1yj/FBvBZQkQ0GYwXoPhn6ElYXA== + dependencies: + "@types/argparse" "1.0.33" + "@types/node" "8.5.8" + argparse "~1.0.9" + colors "~1.2.1" + +"@microsoft/tsdoc@0.12.5": + version "0.12.5" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.12.5.tgz#c448a38902ccb5601c1b2ef3b1a105012ef7712c" + integrity sha512-xEAyvLXo4Cter/b0EMCWUZTgXOfLOPJ/Xr52WdjVclPx9eDmNTGFtZl8Pn/nqSnZsQBNcHL0eHk/YyRyyXXpiQ== + "@schematics/angular@7.3.0-rc.0": version "7.3.0-rc.0" resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-7.3.0-rc.0.tgz#7519aa692dcaed63b9caa7d824846511905b1bfc" @@ -290,6 +335,11 @@ resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.6.48.tgz#e8f77bf41d00d3293421cbaaed2bafb4d5f399f9" integrity sha512-zF0WlsWOjTkZjWq93ESfvq/4s3E9P8EnbIjOFzlDbhepL2iOBk9SJf98eqnV2fvjstwrPF+uYZvcAggL7Xw1FA== +"@types/argparse@1.0.33": + version "1.0.33" + resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.33.tgz#2728669427cdd74a99e53c9f457ca2866a37c52d" + integrity sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ== + "@types/base64-js@1.2.5": version "1.2.5" resolved "https://registry.yarnpkg.com/@types/base64-js/-/base64-js-1.2.5.tgz#582b2476169a6cba460a214d476c744441d873d5" @@ -329,6 +379,13 @@ dependencies: "@types/node" "*" +"@types/fs-extra@5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-5.0.4.tgz#b971134d162cc0497d221adde3dbb67502225599" + integrity sha512-DsknoBvD8s+RFfSGjmERJ7ZOP1HI0UZRA3FSI+Zakhrc/Gy26YQsLI+m5V5DHxroHRJqCDLKJp7Hixn8zyaF7g== + dependencies: + "@types/node" "*" + "@types/glob@*": version "5.0.35" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-5.0.35.tgz#1ae151c802cece940443b5ac246925c85189f32a" @@ -360,6 +417,11 @@ dependencies: "@types/jasmine" "*" +"@types/jju@~1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@types/jju/-/jju-1.4.0.tgz#ee074af79540c0e187426f46f12acbe8f6c31232" + integrity sha512-s6l49zLzFiXYHaTXbA+FNcDRo8ufZgC2/T5/jH+Wfr+ZV2tYbrBpEpN9oPkXXfug+y7pTZFkdeyQ0L/88Z34JA== + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -382,6 +444,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.5.2.tgz#f19f05314d5421fe37e74153254201a7bf00a707" integrity sha512-m9zXmifkZsMHZBOyxZWilMwmTlpC8x5Ty360JKTiXvlXZfBWYpsg9ZZvP/Ye+iZUh+Q+MxDLjItVTWIsfwz+8Q== +"@types/node@8.5.8": + version "8.5.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.5.8.tgz#92509422653f10e9c0ac18d87e0610b39f9821c7" + integrity sha512-8KmlRxwbKZfjUHFIt3q8TF5S2B+/E5BaAoo/3mgc5h6FJzqxXkCK/VMetO+IRDtwtU6HUvovHMBn+XRj7SV9Qg== + "@types/node@^10.9.4": version "10.9.4" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.9.4.tgz#0f4cb2dc7c1de6096055357f70179043c33e9897" @@ -427,6 +494,11 @@ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-11.1.1.tgz#2e724257167fd6b615dbe4e54301e65fe597433f" integrity sha512-Awgju4dqD8kHXX3jc/B/LaryJC7MsyNfnbN62lIbFzTi0GewH64zrkh4bxo/YTgVEK6r9V3GNecxMhXTJw0+jA== +"@types/z-schema@3.16.31": + version "3.16.31" + resolved "https://registry.yarnpkg.com/@types/z-schema/-/z-schema-3.16.31.tgz#2eb1d00a5e4ec3fa58c76afde12e182b66dc5c1c" + integrity sha1-LrHQCl5Ow/pYx2r94S4YK2bcXBw= + "@webcomponents/custom-elements@^1.0.4": version "1.1.2" resolved "https://registry.yarnpkg.com/@webcomponents/custom-elements/-/custom-elements-1.1.2.tgz#041e4c20df35245f4d160b50d044b8cff192962c" @@ -818,6 +890,13 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +argparse@~1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + arr-diff@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" @@ -1982,6 +2061,11 @@ colors@^1.1.0, colors@^1.1.2: resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.0.tgz#5f20c9fef6945cb1134260aab33bfbdc8295e04e" integrity sha512-EDpX3a7wHMWFA7PUHWPHNWqOxIIRSJetuwl0AS5Oi/5FMV8kWm69RTlgm00GKjBO1xFHMtBbL49yRtMMdticBw== +colors@~1.2.1: + version "1.2.5" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc" + integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg== + colour@~0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" @@ -2025,7 +2109,7 @@ commander@^2.5.0, commander@^2.9.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50" integrity sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew== -commander@^2.8.1: +commander@^2.7.1, commander@^2.8.1: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== @@ -3964,6 +4048,15 @@ fs-extra@~2.1.2: graceful-fs "^4.1.2" jsonfile "^2.1.0" +fs-extra@~7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -5612,7 +5705,7 @@ jetpack-validation@0.0.7: resolve "^0.7.1" semver "^5.3.0" -jju@^1.1.0: +jju@^1.1.0, jju@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo= @@ -6228,6 +6321,11 @@ lodash.escape@^3.0.0: dependencies: lodash._root "^3.0.0" +lodash.get@^4.0.0: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + lodash.includes@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" @@ -6253,6 +6351,11 @@ lodash.isboolean@^3.0.3: resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= +lodash.isequal@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + lodash.isinteger@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" @@ -6388,7 +6491,7 @@ lodash@^4.0.0, lodash@^4.14.0, lodash@^4.16.6, lodash@^4.2.1, lodash@^4.5.0, lod resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg== -lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: +lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@~4.17.5: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== @@ -8672,18 +8775,18 @@ resolve@0.2.3: resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.2.3.tgz#f1eb7fb76436f91d87fd19c5f973fe7d506f6571" integrity sha1-8et/t2Q2+R2H/RnF+XP+fVBvZXE= -resolve@^0.7.1: - version "0.7.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.7.4.tgz#395a9ef9e873fbfe12bd14408bd91bb936003d69" - integrity sha1-OVqe+ehz+/4SvRRAi9kbuTYAPWk= - -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2: +resolve@1.8.1, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== dependencies: path-parse "^1.0.5" +resolve@^0.7.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.7.4.tgz#395a9ef9e873fbfe12bd14408bd91bb936003d69" + integrity sha1-OVqe+ehz+/4SvRRAi9kbuTYAPWk= + resolve@^1.8.1: version "1.9.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.9.0.tgz#a14c6fdfa8f92a7df1d996cb7105fa744658ea06" @@ -9491,6 +9594,11 @@ split@^1.0.0: dependencies: through "2" +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + sshpk@^1.7.0: version "1.14.2" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" @@ -10231,7 +10339,7 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@3.1.6: +typescript@3.1.6, typescript@~3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== @@ -10591,6 +10699,11 @@ validate-npm-package-name@^3.0.0: dependencies: builtins "^1.0.3" +validator@^8.0.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-8.2.0.tgz#3c1237290e37092355344fef78c231249dab77b9" + integrity sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA== + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -11097,6 +11210,17 @@ yeast@0.1.2: resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= +z-schema@~3.18.3: + version "3.18.4" + resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-3.18.4.tgz#ea8132b279533ee60be2485a02f7e3e42541a9a2" + integrity sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw== + dependencies: + lodash.get "^4.0.0" + lodash.isequal "^4.0.0" + validator "^8.0.0" + optionalDependencies: + commander "^2.7.1" + zip-dir@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/zip-dir/-/zip-dir-1.0.2.tgz#253f907aead62a21acd8721d8b88032b2411c051"