diff --git a/.yarnrc b/.yarnrc index 86f6bcc..5bc5ffb 100644 --- a/.yarnrc +++ b/.yarnrc @@ -1,4 +1,3 @@ # Using the official mirror source registry "https://registry.yarnpkg.com" -node-sass:registry "https://registry.npm.taobao.org/" sass_binary_site "https://npm.taobao.org/mirrors/node-sass/" diff --git a/packages/preset-built-in/src/plugins/commands/build/applyHtmlWebpackPlugin.ts b/packages/preset-built-in/src/plugins/commands/build/applyHtmlWebpackPlugin.ts index 89f9a1d..cd949b2 100644 --- a/packages/preset-built-in/src/plugins/commands/build/applyHtmlWebpackPlugin.ts +++ b/packages/preset-built-in/src/plugins/commands/build/applyHtmlWebpackPlugin.ts @@ -11,7 +11,7 @@ export function fixRoutePathInWindows(path?: string) { return path.replace(/:/g, '.'); } -export default function (api: IApi) { +export default function(api: IApi) { class HtmlWebpackPlugin { apply(compiler: webpack.Compiler) { compiler.hooks.emit.tapPromise( @@ -58,6 +58,7 @@ export default function (api: IApi) { const enableWriteToDisk = api.config.devServer && api.config.devServer.writeToDisk; if ( + !api.args.component && !mfsu && (env === 'production' || enableWriteToDisk) && id === 'webpack' && diff --git a/packages/preset-built-in/src/plugins/commands/build/build.ts b/packages/preset-built-in/src/plugins/commands/build/build.ts index 1b0e001..f322023 100644 --- a/packages/preset-built-in/src/plugins/commands/build/build.ts +++ b/packages/preset-built-in/src/plugins/commands/build/build.ts @@ -11,7 +11,7 @@ import generateFiles from '../generateFiles'; const logger = new Logger('vmi:preset-build-in'); -export default function (api: IApi) { +export default function(api: IApi) { const { paths, utils: { rimraf }, @@ -20,17 +20,23 @@ export default function (api: IApi) { api.registerCommand({ name: 'build', description: 'build application for production', - fn: async function () { + fn: async function() { cleanTmpPathExceptCache({ absTmpPath: paths.absTmpPath!, }); - // generate files - await generateFiles({ api, watch: false }); + // build component not generate files + if (!api.args.component) { + // generate files + await generateFiles({ api, watch: false }); + } // build - const { bundler, bundleConfigs, bundleImplementor } = - await getBundleAndConfigs({ api }); + const { + bundler, + bundleConfigs, + bundleImplementor, + } = await getBundleAndConfigs({ api }); try { // clear output path before exec build if (process.env.CLEAR_OUTPUT !== 'none') { diff --git a/packages/preset-built-vmi/src/index.ts b/packages/preset-built-vmi/src/index.ts index 0493319..d79d56e 100644 --- a/packages/preset-built-vmi/src/index.ts +++ b/packages/preset-built-vmi/src/index.ts @@ -1,6 +1,6 @@ export { IDumiOpts } from './context'; -export default function () { +export default function() { return { plugins: [ require.resolve('./plugins/features/init'), @@ -16,7 +16,6 @@ export default function () { require.resolve('./plugins/features/webpack'), require.resolve('./plugins/features/outputPath'), require.resolve('./plugins/features/alias'), - // require.resolve('./plugins/features/component'), ], }; } diff --git a/packages/preset-built-vmi/src/plugins/features/webpack.ts b/packages/preset-built-vmi/src/plugins/features/webpack.ts index a7d25a3..9909483 100644 --- a/packages/preset-built-vmi/src/plugins/features/webpack.ts +++ b/packages/preset-built-vmi/src/plugins/features/webpack.ts @@ -14,15 +14,17 @@ export default (api: IApi) => { }, }); - api.chainWebpack(async (memo) => { - const client = require.resolve('@winfe/client/package.json'); + api.chainWebpack(async memo => { + memo.resolve.extensions.merge(['.vue']); + + // vue-loader memo.module .rule('vue') .test(/\.vue$/i) .include.add([ cwd, // client none compile, need add include - dirname(client), + dirname(require.resolve('@winfe/client/package.json')), // import module out of cwd using APP_ROOT // issue: https://github.com/umijs/umi/issues/5594 ...(process.env.APP_ROOT ? [process.cwd()] : []), diff --git a/packages/vmi/package.json b/packages/vmi/package.json index dff68ae..41fc959 100644 --- a/packages/vmi/package.json +++ b/packages/vmi/package.json @@ -37,6 +37,8 @@ "@winfe/preset-built-in": "^1.0.6", "@winfe/preset-built-vmi": "^1.0.6", "@winfe/runtime": "^1.0.6", + "minio": "^7.0.18", + "string-width": "^5.0.0", "v8-compile-cache": "2.3.0" }, "bin": { diff --git a/packages/vmi/src/cli.ts b/packages/vmi/src/cli.ts index 0d3d18f..e90dda0 100644 --- a/packages/vmi/src/cli.ts +++ b/packages/vmi/src/cli.ts @@ -72,8 +72,11 @@ if (process.title === 'node') { break; default: const name = args._[0]; + const plugins = []; if (name === 'build') { process.env.NODE_ENV = 'production'; + if (args.component) + plugins.push(require.resolve('./plugins/component')); } // Init webpack version determination and require hook for build command @@ -83,6 +86,7 @@ if (process.title === 'node') { cwd: getCwd(), pkg: getPkg(process.cwd()), configFiles: DEFAULT_CONFIG_FILES, + plugins, }).run({ name, args, diff --git a/packages/preset-built-vmi/src/plugins/features/component.ts b/packages/vmi/src/plugins/component.ts similarity index 60% rename from packages/preset-built-vmi/src/plugins/features/component.ts rename to packages/vmi/src/plugins/component.ts index dfe0531..570dffc 100644 --- a/packages/preset-built-vmi/src/plugins/features/component.ts +++ b/packages/vmi/src/plugins/component.ts @@ -1,5 +1,6 @@ import { IApi } from '@umijs/types'; import { resolve } from 'path'; +import uploadMaterialOutput from '../uploadMaterialOutput'; const externals = { vue: { @@ -9,11 +10,17 @@ const externals = { amd: 'vue', }, 'element-ui': { - root: 'element-ui', + root: 'elementUi', commonjs: 'element-ui', commonjs2: 'element-ui', amd: 'element-ui', }, + '@winfe/win-request': { + root: 'winRequest', + commonjs: 'win-request', + commonjs2: 'win-request', + amd: 'win-request', + }, }; export default (api: IApi) => { @@ -29,15 +36,14 @@ export default (api: IApi) => { }, }); - api.chainWebpack(async (memo) => { - memo.entryPoints.delete('umi'); - memo.entryPoints.delete('vmi'); + api.chainWebpack(async memo => { + memo.entryPoints.clear(); memo.entry('index').add(resolve(cwd, './index.js')); // component output need umd memo.output .publicPath('./') - .path(resolve(cwd, './lib/')) + .path(resolve(cwd, `dist/${require(`${cwd}/package.json`).version}`)) .filename('index.js') .chunkFilename('[id].js') .libraryTarget('umd'); @@ -47,7 +53,7 @@ export default (api: IApi) => { // 添加全局scss文件 const types = ['vue-modules', 'vue', 'normal-modules', 'normal']; - types.forEach((type) => { + types.forEach(type => { //匹配到所有需要导入的文件 memo.module .rule('sass') @@ -59,17 +65,22 @@ export default (api: IApi) => { }); }); - memo.module - .rule('css') - .use('extract-css-loader') - .tap((options) => { - // 修改它的选项... - options.filename = 'index.css'; - return options; - }); + memo + .plugin('extract-css') + .tap(options => + options.map(option => ({ ...option, filename: 'index.css' })), + ); - memo.plugin('CleanWebpackPlugin').use(require('clean-webpack-plugin').CleanWebpackPlugin); + memo + .plugin('CleanWebpackPlugin') + .use(require('clean-webpack-plugin').CleanWebpackPlugin); return memo; }); + + api.onBuildComplete(({ err }) => { + if (!err) { + if (api.args.upload) uploadMaterialOutput(cwd); + } + }); }; diff --git a/packages/vmi/src/plugins/fixtures/normal/.gitkeep b/packages/vmi/src/plugins/fixtures/normal/.gitkeep deleted file mode 100644 index 0967ef4..0000000 --- a/packages/vmi/src/plugins/fixtures/normal/.gitkeep +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/packages/vmi/src/uploadMaterialOutput.ts b/packages/vmi/src/uploadMaterialOutput.ts new file mode 100644 index 0000000..1ddd53a --- /dev/null +++ b/packages/vmi/src/uploadMaterialOutput.ts @@ -0,0 +1,59 @@ +import path from 'path'; +import chalk from 'chalk'; +import fs from 'fs'; +import title from './utils/printTitle'; + +const Minio = require('minio'); + +export default async (cwd: string) => { + const minioClient = new Minio.Client({ + endPoint: '172.16.6.51', + port: 9000, + useSSL: false, + accessKey: 'www.winning.com.cn', + secretKey: 'www.winning.com.cn', + }); + const pkg = require(`${cwd}/package.json`); + + const metaData = { + 'Content-Type': 'application/octet-stream', + 'X-Amz-Meta-Testing': 1234, + example: 5678, + }; + + // 递归上传dist下对应当前版本的所有打包产物到minio + const domainName = pkg.name.split('/')[1].split('-')[0]; + const filepath = `materials-umd-lib/${domainName}/${pkg.name}/${pkg.version}/`; + const fileDir = `${cwd}/dist/${pkg.version}/`; + + const classifyFiles = (filepath: string, dir: string) => { + fs.readdir(dir, (err, files) => { + files.forEach(filename => { + let filedir = path.join(dir, filename); + fs.stat(filedir, (err, stats) => { + if (!err) { + let isFile = stats.isFile(); //是文件 + if (isFile) { + upload(`${filepath}${filename}`, `${dir}${filename}`); + } else { + classifyFiles(`${filepath}${filename}/`, `${dir}${filename}/`); + } + } + }); + }); + }); + }; + // 上传方法 + const upload = (filepath: string, files: string) => { + minioClient.fPutObject('winex', filepath, files, metaData, function( + err: any, + ) { + if (err) { + console.log(chalk.red('upload fail', err)); + } + }); + }; + + classifyFiles(filepath, fileDir); + title('success', 'UPLOAD', 'Uploaded successfully '); +}; diff --git a/packages/vmi/src/utils/fixtures/normal/package.json b/packages/vmi/src/utils/fixtures/normal/package.json deleted file mode 100644 index 5fcc84a..0000000 --- a/packages/vmi/src/utils/fixtures/normal/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "normal" -} \ No newline at end of file diff --git a/packages/vmi/src/utils/printTitle.ts b/packages/vmi/src/utils/printTitle.ts new file mode 100644 index 0000000..2d856b7 --- /dev/null +++ b/packages/vmi/src/utils/printTitle.ts @@ -0,0 +1,64 @@ +import chalk from 'chalk'; + +function capitalizeFirstLetter(string: string) { + return string.charAt(0).toUpperCase() + string.slice(1); +} + +function textColor(severity: string) { + switch (severity.toLowerCase()) { + case 'success': + return 'green'; + case 'info': + return 'blue'; + case 'note': + return 'white'; + case 'warning': + return 'yellow'; + case 'error': + return 'red'; + default: + return 'red'; + } +} + +function bgColor(severity: string) { + const color = textColor(severity); + return 'bg' + capitalizeFirstLetter(color); +} + +function formatTitle(severity: string, message: string) { + return chalk[bgColor(severity)].black('', message, ''); +} + +function formatText(severity: string, message: string) { + return chalk[textColor(severity)](message); +} + +export default function title( + severity: string, + title: string, + subtitle: string, +) { + const date = new Date(); + const dateString = chalk.grey(date.toLocaleTimeString()); + const titleFormatted = formatTitle(severity, title); + const subTitleFormatted = formatText(severity, subtitle); + const message = `${titleFormatted} ${subTitleFormatted}`; + + // In test environment we don't include timestamp + if (process.env.NODE_ENV === 'test') { + console.log(message); + console.log(); + return; + } + + // // Make timestamp appear at the end of the line + // let logSpace = + // // process.stdout.columns - stringWidth(message) - stringWidth(dateString); + // if (logSpace <= 0) { + // logSpace = 10; + // } + + console.log(`${message}${dateString}`); + console.log(); +} diff --git a/yarn.lock b/yarn.lock index 56cab1b..6c42048 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3971,6 +3971,11 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-regex@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.0.tgz#ecc7f5933cbe5ac7b33e209a5ff409ab1669c6b2" + integrity sha512-tAaOSrWCHF+1Ear1Z4wnJCXA9GGox4K6Ic85a5qalES2aeEwQGr7UC93mwef49536PkCYjzkp0zIxfFvexJ6zQ== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -4211,6 +4216,11 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== +async@^3.1.0: + version "3.2.1" + resolved "https://registry.npmjs.org/async/-/async-3.2.1.tgz#d3274ec66d107a47476a4c49136aacdb00665fc8" + integrity sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -4459,6 +4469,13 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" +block-stream2@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz#ac0c5ef4298b3857796e05be8ebed72196fa054b" + integrity sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg== + dependencies: + readable-stream "^3.4.0" + block-stream@*: version "0.0.9" resolved "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -6360,6 +6377,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -6485,6 +6507,11 @@ es5-imcompatible-versions@^0.1.62: resolved "https://registry.yarnpkg.com/es5-imcompatible-versions/-/es5-imcompatible-versions-0.1.73.tgz#2d34dbb29cbc54f38902cc1150bbe301b388c014" integrity sha512-P0SgLrYl9iqlrt0h6n/iz5z5P1uuhnfHp9BA/tcLfqgVIWHNvY4Rm+jtSvnh1ADK4DJOYDwJvxlrHMRoLQMgmQ== +es6-error@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== + es6-iterator@^2.0.3, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" @@ -6913,6 +6940,11 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fast-xml-parser@^3.17.5: + version "3.19.0" + resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz#cb637ec3f3999f51406dd8ff0e6fc4d83e520d01" + integrity sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg== + fastparse@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" @@ -8616,6 +8648,11 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" @@ -9604,6 +9641,11 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= +json-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-stream/-/json-stream-1.0.0.tgz#1a3854e28d2bbeeab31cc7ddf683d2ddc5652708" + integrity sha1-GjhU4o0rvuqzHMfd9oPS3cVlJwg= + json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -10027,7 +10069,7 @@ lodash@4.17.19: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== -lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.7.0, lodash@~4.17.10: +lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.7.0, lodash@~4.17.10: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -10603,7 +10645,7 @@ mime-db@1.49.0, mime-db@^1.2.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== -mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: +mime-types@^2.1.12, mime-types@^2.1.14, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.32" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== @@ -10694,6 +10736,24 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minio@^7.0.18: + version "7.0.18" + resolved "https://registry.npmjs.org/minio/-/minio-7.0.18.tgz#a2a6dae52a4dde9e35ed47cdf2accc21df4a512d" + integrity sha512-jVRjkw8A5Spf+ETY5OXQUcQckHriuUA3u2+MAcX36btLT8EytlOVivxIseXvyFf9cNn3dy5w1F1UyjMvHU+nqg== + dependencies: + async "^3.1.0" + block-stream2 "^2.0.0" + es6-error "^4.1.1" + fast-xml-parser "^3.17.5" + json-stream "^1.0.0" + lodash "^4.17.20" + mime-types "^2.1.14" + mkdirp "^0.5.1" + querystring "0.2.0" + through2 "^3.0.1" + xml "^1.0.0" + xml2js "^0.4.15" + minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" @@ -13139,7 +13199,7 @@ readable-stream@1.1.x: isarray "0.0.1" string_decoder "~0.10.x" -"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.6.0: +"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -13762,7 +13822,7 @@ sass-loader@^7.0.1: pify "^4.0.1" semver "^6.3.0" -sax@^1.2.4, sax@~1.2.4: +sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -14421,6 +14481,15 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string-width@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.0.0.tgz#19191f152f937b96f4ec54ba0986a5656660c5a2" + integrity sha512-zwXcRmLUdiWhMPrHz6EXITuyTgcEnUqDzspTkCLhQovxywWz6NP9VHgqfVg20V/1mUg0B95AKbXxNT+ALRmqCw== + dependencies: + emoji-regex "^9.2.2" + is-fullwidth-code-point "^4.0.0" + strip-ansi "^7.0.0" + string.prototype.padend@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz#6858ca4f35c5268ebd5e8615e1327d55f59ee311" @@ -14511,6 +14580,13 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.0.tgz#1dc49b980c3a4100366617adac59327eefdefcb0" + integrity sha512-UhDTSnGF1dc0DRbUqr1aXwNoY3RgVkSWG8BrpnuFIxhP57IqbS7IRta2Gfiavds4yCxc5+fEAVVOgBZWnYkvzg== + dependencies: + ansi-regex "^6.0.0" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -14844,7 +14920,7 @@ through2@^2.0.0, through2@^2.0.1, through2@^2.0.2, through2@^2.0.3, through2@~2. readable-stream "~2.3.6" xtend "~4.0.1" -through2@^3.0.0: +through2@^3.0.0, through2@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== @@ -16117,6 +16193,24 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xml2js@^0.4.15: + version "0.4.23" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xml@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + xmlchars@^2.1.1, xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"