diff --git a/.release-it.json b/.release-it.json index b6c8846bb1..7b101b1796 100644 --- a/.release-it.json +++ b/.release-it.json @@ -2,7 +2,7 @@ "hooks": { "before:init": [], "after:bump": [ - "echo add build/ folder", + "echo Adding build/ folder...", "git add -f build/", "git commit -m 'Add build/ for release version ${version}.'" ], @@ -11,16 +11,15 @@ "after:github:release": [], "after:release": [ "echo Successfully released ${name} ver. ${version} to ${repo.repository}.", - "echo remove build/ folder", + "echo Removing build/ folder...", "git rm -r build/", "git commit -m 'Remove build/ after the release.'", "git push" ] }, "git": { - "changelog": false, "commitMessage": "release VexFlow ${version}", - "requireUpstream": false + "requireCleanWorkingDir": false }, "github": { "release": true diff --git a/Gruntfile.js b/Gruntfile.js index 59e537723b..6b47e1b18d 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -21,7 +21,7 @@ grunt build:types grunt watch:fast - the fastest way to iterate while working on VexFlow. grunt watch -grunt watch:production +grunt watch:prod grunt watch:debug grunt get:releases:versionX:versionY:... @@ -36,7 +36,7 @@ Optional environment variables: VEX_DEBUG_CIRCULAR_DEPENDENCIES if true, we display a list of circular dependencies in the code. VEX_DEVTOOL - specify webpack's devtool config (e.g., 'source-map' to create source maps). + specify webpack's devtool config (the default is 'source-map'). https://webpack.js.org/configuration/devtool/ VEX_GENERATE_OPTIONS options for controlling the ./tools/generate_images.js script. @@ -54,7 +54,7 @@ console.log('GRUNTFILE START'); const path = require('path'); const fs = require('fs'); -const { spawnSync } = require('child_process'); +const { spawnSync, execSync } = require('child_process'); const { EventEmitter } = require('events'); const webpack = require('webpack'); const TerserPlugin = require('terser-webpack-plugin'); @@ -261,20 +261,6 @@ module.exports = (grunt) => { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), webpack: webpackConfigs(), - concurrent: { - options: { - logConcurrentOutput: true, - indent: true, - }, - // grunt concurrent:all - all: ['webpack:prodAndDebug', 'build:esm'], - // grunt concurrent:production - production: ['webpack:prod', 'build:esm'], - // grunt concurrent:debug - debug: ['webpack:debug', 'build:esm'], - // grunt concurrent:types - types: ['build:types', 'typedoc'], - }, // grunt eslint eslint: { target: ['./src', './tests'], @@ -350,7 +336,6 @@ module.exports = (grunt) => { }, }); - grunt.loadNpmTasks('grunt-concurrent'); grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-contrib-qunit'); @@ -365,17 +350,19 @@ module.exports = (grunt) => { grunt.registerTask('default', 'Build all VexFlow targets.', [ 'clean:build', 'eslint', - 'concurrent:all', - 'concurrent:types', + 'webpack:prodAndDebug', + 'build:esm', + 'build:types', + 'typedoc', ]); // grunt test // Run command line qunit tests. grunt.registerTask('test', 'Run command line unit tests.', [ - // 'clean:build', 'eslint', - 'concurrent:all', + 'webpack:prodAndDebug', + 'build:esm', 'qunit', ]); @@ -416,7 +403,7 @@ module.exports = (grunt) => { interrupt: false, debounceDelay: 600, }, - tasks: ['clean:build', 'eslint', 'concurrent:all'], + tasks: ['clean:build', 'eslint', 'webpack:prodAndDebug', 'build:esm'], }, }); @@ -425,17 +412,24 @@ module.exports = (grunt) => { grunt.config.set('eslint.target', [filePath]); }); - // grunt watch:production - // Watch for changes and build production CJS files & esm/*. - grunt.registerTask('watch:production', '', () => { - grunt.config.set('watch.scripts.tasks', ['clean:build', 'eslint', 'concurrent:production']); + // grunt watch:prod + // Watch for changes and build production CJS files. + grunt.registerTask('watch:prod', '', () => { + grunt.config.set('watch.scripts.tasks', ['clean:build', 'eslint', 'webpack:prod']); grunt.task.run('watch'); }); // grunt watch:debug - // Watch for changes and build debug CJS files & esm/*. + // Watch for changes and build debug CJS files. grunt.registerTask('watch:debug', '', () => { - grunt.config.set('watch.scripts.tasks', ['clean:build', 'eslint', 'concurrent:debug']); + grunt.config.set('watch.scripts.tasks', ['clean:build', 'eslint', 'webpack:debug']); + grunt.task.run('watch'); + }); + + // grunt watch:esm + // Watch for changes and build esm/*. + grunt.registerTask('watch:esm', '', () => { + grunt.config.set('watch.scripts.tasks', ['clean:build', 'eslint', 'build:esm']); grunt.task.run('watch'); }); @@ -447,13 +441,6 @@ module.exports = (grunt) => { grunt.task.run(['clean:build', 'webpack:debugWatch']); }); - // grunt watch:esm - // Watch for changes and build esm/*. - grunt.registerTask('watch:esm', '', () => { - grunt.config.set('watch.scripts.tasks', ['clean:build', 'eslint', 'build:esm']); - grunt.task.run('watch'); - }); - // grunt test:browser:cjs // Open the default browser to the flow.html test page. grunt.registerTask( @@ -462,7 +449,7 @@ module.exports = (grunt) => { () => { // If the CJS build doesn't exist, build it. if (!fs.existsSync(BUILD_CJS_DIR)) { - grunt.task.run('concurrent:all'); + grunt.task.run('webpack:prodAndDebug'); // TODO: RONYEH Just debug? grunt.log.write('Build the CJS files.'); } else { grunt.log.write('CJS files already exist. Skipping the build step.'); @@ -496,9 +483,9 @@ module.exports = (grunt) => { // After developing new features or fixing a bug, you can compare the current // working tree against the reference with: grunt test:reference grunt.registerTask('reference', 'Build to reference/.', [ - // 'clean', - 'concurrent:all', + 'webpack:prodAndDebug', + 'build:esm', 'copy:reference', ]); @@ -568,42 +555,50 @@ module.exports = (grunt) => { // grunt release // Release to npm and GitHub. grunt.registerTask('release', '', () => { + verifyGitWorkingDirectory(); runCommand('npx', 'release-it'); }); // grunt release:alpha grunt.registerTask('release:alpha', '', () => { + verifyGitWorkingDirectory(); runCommand('npx', 'release-it', '--preRelease=alpha'); }); // grunt release:beta grunt.registerTask('release:beta', '', () => { + verifyGitWorkingDirectory(); runCommand('npx', 'release-it', '--preRelease=beta'); }); // grunt release:rc grunt.registerTask('release:rc', '', () => { + verifyGitWorkingDirectory(); runCommand('npx', 'release-it', '--preRelease=rc'); }); // grunt release:dry-run // Walk through the release process without actually doing anything. grunt.registerTask('release:dry-run', '', () => { + verifyGitWorkingDirectory(); runCommand('npx', 'release-it', '--dry-run'); }); // grunt release:dry-run:alpha grunt.registerTask('release:dry-run:alpha', '', () => { + verifyGitWorkingDirectory(); runCommand('npx', 'release-it', '--dry-run', '--preRelease=alpha'); }); // grunt release:dry-run:beta grunt.registerTask('release:dry-run:beta', '', () => { + verifyGitWorkingDirectory(); runCommand('npx', 'release-it', '--dry-run', '--preRelease=beta'); }); // grunt release:dry-run:rc grunt.registerTask('release:dry-run:rc', '', () => { + verifyGitWorkingDirectory(); runCommand('npx', 'release-it', '--dry-run', '--preRelease=rc'); }); @@ -611,7 +606,90 @@ module.exports = (grunt) => { grunt.registerTask('build-test-release', '', () => { grunt.task.run('default'); grunt.task.run('qunit'); - // TODO: commit the version file as part of the release-it script. - grunt.task.run('release:dry-run'); + verifyGitWorkingDirectory(); + grunt.task.run('release:dry-run'); // TODO: remove dry-run! }); + + // @return true if the git working directory is clean, other than the auto-generated `src/version.ts` file. + function verifyGitWorkingDirectory() { + const output = execSync('git status -s').toString(); + console.log('The Output Was'); + const lines = output.split('\n'); + let numDirtyFiles = 0; + for (const ln in lines) { + const line = lines[ln].trim(); + if (line === '') { + continue; + } else if (line.includes('src/version.ts')) { + console.log('OK', line); + } else { + console.log('!!', line); + numDirtyFiles++; + } + } + + if (numDirtyFiles > 0) { + grunt.fail.fatal('Please commit or stash your changes before releasing to npm and GitHub.', 1); + return false; + } else { + console.log('The git working directory is clean.'); + return true; + } + } + + // grunt.registerTask('xxx', '', function () { + // const done = this.async(); + // grunt.util.spawn( + // { + // grunt: true, + // args: ['yyy'], + // opts: { stdio: 'inherit' }, + // }, + // (error, result) => { + // if (error) { + // grunt.log.error().error(result.stdout).writeln(); + // } else { + // grunt.log.ok().verbose.ok(result.stdout); + // done(true); + // } + // } + // ); + // grunt.util.spawn( + // { + // grunt: true, + // args: ['zzz'], + // opts: { stdio: 'inherit' }, + // }, + // (error, result) => { + // if (error) { + // grunt.log.error().error(result.stdout).writeln(); + // } else { + // grunt.log.ok().verbose.ok(result.stdout); + // done(true); + // } + // } + // ); + // }); + + // grunt.registerTask('yyy', '', function () { + // const done = this.async(); + // const id = setInterval(() => { + // console.log('YYY ' + Math.random()); + // }, 1000); + // setTimeout(() => { + // clearInterval(id); + // done(true); + // }, 5100); + // }); + + // grunt.registerTask('zzz', '', function () { + // const done = this.async(); + // const id = setInterval(() => { + // console.log('ZZZ ' + Math.random()); + // }, 1000); + // setTimeout(() => { + // clearInterval(id); + // done(true); + // }, 5100); + // }); }; diff --git a/package-lock.json b/package-lock.json index 4fe5588764..047a9461a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,6 @@ "grunt": "^1.4.1", "grunt-bump": "^0.8.0", "grunt-cli": "^1.4.3", - "grunt-concurrent": "^3.0.0", "grunt-contrib-clean": "^2.0.0", "grunt-contrib-concat": "^2.0.0", "grunt-contrib-copy": "^1.0.0", @@ -1223,15 +1222,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -2307,48 +2297,6 @@ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/duplexify/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/duplexify/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/duplexify/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/electron-to-chromium": { "version": "1.3.896", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.896.tgz", @@ -3881,24 +3829,6 @@ "nopt": "bin/nopt.js" } }, - "node_modules/grunt-concurrent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/grunt-concurrent/-/grunt-concurrent-3.0.0.tgz", - "integrity": "sha512-AgXtjUJESHEGeGX8neL3nmXBTHSj1QC48ABQ3ng2/vjuSBpDD8gKcVHSlXP71pFkIR8TQHf+eomOx6OSYSgfrA==", - "dev": true, - "dependencies": { - "arrify": "^2.0.1", - "async": "^3.1.0", - "indent-string": "^4.0.0", - "pad-stream": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "grunt": ">=1" - } - }, "node_modules/grunt-contrib-clean": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-2.0.0.tgz", @@ -4855,15 +4785,6 @@ "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -9235,20 +9156,6 @@ "semver": "bin/semver.js" } }, - "node_modules/pad-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pad-stream/-/pad-stream-2.0.0.tgz", - "integrity": "sha1-O+vzTNpJWXISpmny/kF9ZGp8ulY=", - "dev": true, - "dependencies": { - "pumpify": "^1.3.3", - "split2": "^2.1.1", - "through2": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -9774,27 +9681,6 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, - "node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -10829,15 +10715,6 @@ "node": ">=6" } }, - "node_modules/split2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", - "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", - "dev": true, - "dependencies": { - "through2": "^2.0.2" - } - }, "node_modules/sprintf-js": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", @@ -10854,12 +10731,6 @@ "node": ">=0.1.14" } }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, "node_modules/strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", @@ -11208,46 +11079,6 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/through2/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/through2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/tiny-glob": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", @@ -12174,15 +12005,6 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -13177,12 +12999,6 @@ "es-abstract": "^1.19.0" } }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true - }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -14003,50 +13819,6 @@ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "electron-to-chromium": { "version": "1.3.896", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.896.tgz", @@ -15301,18 +15073,6 @@ } } }, - "grunt-concurrent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/grunt-concurrent/-/grunt-concurrent-3.0.0.tgz", - "integrity": "sha512-AgXtjUJESHEGeGX8neL3nmXBTHSj1QC48ABQ3ng2/vjuSBpDD8gKcVHSlXP71pFkIR8TQHf+eomOx6OSYSgfrA==", - "dev": true, - "requires": { - "arrify": "^2.0.1", - "async": "^3.1.0", - "indent-string": "^4.0.0", - "pad-stream": "^2.0.0" - } - }, "grunt-contrib-clean": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-2.0.0.tgz", @@ -15963,12 +15723,6 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -19183,17 +18937,6 @@ } } }, - "pad-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pad-stream/-/pad-stream-2.0.0.tgz", - "integrity": "sha1-O+vzTNpJWXISpmny/kF9ZGp8ulY=", - "dev": true, - "requires": { - "pumpify": "^1.3.3", - "split2": "^2.1.1", - "through2": "^2.0.0" - } - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -19608,27 +19351,6 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -20391,15 +20113,6 @@ "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", "dev": true }, - "split2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", - "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", - "dev": true, - "requires": { - "through2": "^2.0.2" - } - }, "sprintf-js": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", @@ -20413,12 +20126,6 @@ "dev": true, "optional": true }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, "strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", @@ -20691,48 +20398,6 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "tiny-glob": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", @@ -21448,12 +21113,6 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/package.json b/package.json index 307c6f7201..53e134a4b4 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,6 @@ "grunt": "^1.4.1", "grunt-bump": "^0.8.0", "grunt-cli": "^1.4.3", - "grunt-concurrent": "^3.0.0", "grunt-contrib-clean": "^2.0.0", "grunt-contrib-concat": "^2.0.0", "grunt-contrib-copy": "^1.0.0", diff --git a/src/version.ts b/src/version.ts index df296cf7b5..dcc3ed9f54 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1,3 +1,3 @@ export const VERSION: string = '4.0.0'; -export const ID: string = '4adc3bf56cc022b6ee1d96d363abecb58c535100'; -export const DATE: string = '2022-01-10T08:46:19.408Z'; \ No newline at end of file +export const ID: string = '512772e0bcae04ae30a9a82db552e63801ed914f'; +export const DATE: string = '2022-01-10T16:15:51.553Z'; \ No newline at end of file